04-数据缓冲区配置
本章节下载: 04-数据缓冲区配置 (261.82 KB)
目 录
数据缓冲区用来临时存储报文,以免报文丢失。如图1-1所示,数据缓冲区分为接收缓冲区、发送缓冲区和Headroom缓冲区:
· 接收缓冲区:用来缓存接收的数据。当设备的CPU繁忙时,端口不能立即将收到的报文交给CPU处理,会将数据暂时存储到接收缓冲区。
· 发送缓冲区:用来缓存发送的数据。当网络拥塞时,端口不能立即发送数据,为防止数据丢失,会将数据暂时存储到发送缓冲区。
· Headroom缓冲区:设备优先使用接收缓冲区和发送缓冲区,当这两种数据缓冲区用尽后,设备将使用Headroom数据缓冲区提供额外的报文缓存能力。
发送数据缓冲区和接收数据缓冲区在缓存数据时,都会同时用到两类资源:
· cell资源:用来存储数据包的内容,端口会根据报文的实际大小占用相应大小的cell资源。比如一个cell资源是208字节,当发送的报文是128字节时,端口会给它分配一个cell资源,当发送的报文是300字节时,端口会给它分配两个cell资源。
· packet资源:用来存储报文的指针,指针指明报文在cell资源中的存放位置。设备每发送/接收一个数据包,无论该数据包的长度是多少,均占用1个packet资源。目前设备不支持packet资源。
当端口接收/发送报文时,既使用相当于报文长度的cell资源,同时也使用相当于报文数量的packet资源。
cell资源和packet资源又分别分为共享区域和固定区域。
· 固定区域是按队列划分的,每个队列又按端口均分,如图1-2所示。如果设备CPU繁忙或网络发生拥塞,设备在接收或发送报文时,会根据一定的策略将报文分发到相应的队列。如果该端口的该队列缓冲区满,则放到共享区域中的相应队列;如果共享区域中该队列满,则将报文丢弃。在固定缓冲区中,系统会根据用户的配置给队列预留指定大小的空间,即便该队列没有报文存储需求,其他队列也不能抢占。给队列预留的空间均分给每个端口的,即使某端口的某队列没有报文存储需求,其他端口也不能抢占。
· 共享缓冲区只按队列划分,不再按端口均分,如图1-2所示。系统会根据用户配置以及实际需要收发报文的数量决定每个队列实际可占用的缓冲区的大小。如果某个队列没有报文存储需求,则其他队列会抢占该队列的配额。对于某个队列的缓冲区,所有端口接收或发送的报文采用抢占的方式,先到先得,如果资源耗尽,则后到达的报文将被丢弃。
数据缓冲区的配置对设备的转发功能有重要的影响,建议用户不要轻易配置数据缓冲区。仅在需要较大的缓存空间时使用。
在下列情况下,Burst功能可以提供更好的报文缓存功能和流量转发性能:
· 广播或者组播报文流量密集,瞬间突发大流量的网络环境中。
· 报文从高速链路进入设备,由低速链路转发出去。
· 报文从相同速率的多个端口同时进入设备,由一个相同速率的端口转发出去。
配置数据缓冲区自动分配功能前,确保单板所有端口的队列调度模式为SP队列调度模式。
配置了数据缓冲区自动分配功能的单板上的接口仅支持应用加权轮训队列,且无法修改为其他队列形式。若要修改为其他的队列形式,需先取消对该单板配置的数据缓冲区自动分配功能。
表1-1 配置Burst功能自动分配缓冲区
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启Burst功能 |
(独立运行模式) burst-mode enable slot slot-number (IRF模式) burst-mode enable chassis chassis-number slot slot-number |
缺省情况下,数据缓冲区自动分配功能处于关闭状态 |
数据缓冲区告警功能需要配合iMC等网管软件使用,数据缓冲区告警包括超门限告警和丢包告警。设备数据缓冲区产生告警后,会周期性的将告警信息上送iMC等网管软件,网管软件会生成相应的告警提示,方便查看设备数据缓冲区的使用情况。
数据缓冲区告警门限的配置粒度为队列级告警门限,即接口下的每个队列配置接收或发送数据缓冲区告警门限。
· 仅以下单板支持配置数据缓冲区告警功能:
¡ FD/FC系列接口板
¡ FE系列接口板
¡ LSUM2TGS48SG3接口板
¡ 下列SH系列接口板:LSUM1CGS8SH3、LSUM1TGS48SH3
· 当开启数据缓冲区超门限告警功能后,设备Headroom缓冲区、队列接收或发送数据缓冲区的使用率大于等于配置的使用门限值时,设备会生成超门限告警信息。
· 端口入方向上未配置流量控制或基于优先级的流量控制,不会出现Headroom缓冲区超门限告警。有关“流量控制”和“基于优先级流量控制”的详细介绍,请参见“接口管理”中的“以太网接口配置”。
· 配置burst-mode enable、flow-control或priority-flow-control命令之前若配置了数据缓冲区告警门限值,则缓冲区告警门限值需要重新配置。关于flow-control和priority-flow-control命令的详细介绍,请参见“接口管理命令参考”中的“以太网接口”。
表1-2 配置接收或发送缓冲区超门限告警功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置队列接收或发送缓冲区告警门限值(请至少选择其中一项进行配置) |
配置全局队列接收或发送数据缓冲区使用门限值: (独立运行模式) buffer { egress | ingress } usage threshold slot slot-number queue queue-id ratio ratio (IRF模式) buffer { egress | ingress } usage threshold chassis chassis-number slot slot-number queue queue-id ratio ratio |
缺省情况下,全局所有接口下每个队列的接收或发送数据缓冲区使用门限值均为100% |
配置接口队列接收或发送数据缓冲区使用门限值,请依次执行以下命令: interface interface-type interface-number buffer { egress | ingress } usage threshold queue queue-id ratio ratio |
缺省情况下,接口使用全局队列接收或发送数据缓冲区使用门限值。这时,无论全局门限值是缺省值还是非缺省值,在接口视图下执行display this [ all ]都不会看到接口当前使用的队列接收或发送数据缓冲区使用门限值。此时,无论在接口视图下使用本命令配置门限值为缺省值还是非缺省值,再执行display this [ all ]都可以看到接口当前使用的队列接收或发送数据缓冲区使用门限值 |
|
开启接收或发送数据缓冲区超门限告警功能 |
buffer threshold alarm { egress | ingress } enable |
缺省情况下,接收或发送数据缓冲区超门限告警功能处于关闭状态 |
(可选)配置接收或发送数据缓冲区超门限告警发送周期 |
buffer threshold alarm { egress | ingress } interval interval |
缺省情况下,接收或发送数据缓冲区超门限告警发送周期为5秒 |
表1-3 配置Headroom缓冲区超门限告警功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置Headroom缓冲区的门限值(请至少选择其中一项进行配置) |
配置全局Headroom缓冲区的使用门限值: (独立运行模式) buffer usage threshold headroom slot slot-number ratio ratio (IRF模式) buffer usage threshold headroom chassis chassis-number slot slot-number ratio ratio |
缺省情况下,全局所有接口下每个队列的Headroom缓冲区使用门限值均为100% |
配置接口Headroom缓冲区的使用门限值,请依次执行以下命令: interface interface-type interface-number buffer usage threshold headroom queue queue-id ratio ratio |
缺省情况下,接口使用全局Headroom缓冲区使用门限值。这时,无论全局门限值是缺省值还是非缺省值,在接口视图下执行display this [ all ]都不会看到接口当前使用的Headroom缓冲区使用门限值。此时,无论在接口视图下使用本命令配置门限值为缺省值还是非缺省值,再执行display this [ all ]都可以看到接口当前使用的Headroom缓冲区使用门限值 |
|
开启Headroom缓冲区超门限告警功能 |
buffer threshold alarm headroom enable |
缺省情况下,Headroom缓冲区超门限告警功能处于关闭状态 |
(可选)配置Headroom缓冲区超门限告警发送周期 |
buffer threshold alarm headroom interval interval |
缺省情况下,Headroom缓冲区超门限告警发送周期为5秒 |
开启本功能后,设备将周期性的将数据缓冲区的丢包信息上送网管服务器。
本功能对Headroom缓冲区不起作用。
表1-4 开启数据缓冲区丢包告警功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启数据缓冲区丢包告警功能 |
buffer packet-drop alarm enable |
缺省情况下,数据缓冲区丢包告警功能处于关闭状态 |
(可选)配置数据缓冲区丢包告警发送周期 |
buffer packet-drop alarm interval interval |
缺省情况下,数据缓冲区丢包告警发送周期为5秒 |
在完成上述配置后,在任意视图下执行display命令可以查看数据缓冲区的使用情况。
操作 |
命令 |
显示数据缓冲区的使用率 |
(独立运行模式) display buffer usage [ slot slot-number ] (IRF模式) display buffer usage [ chassis chassis-number slot slot-number ] |
TCB(Transient Capture Buffer,瞬时抓包缓存)是一种MMU(Memory Management Unit,缓存管理单元)监控队列丢包的技术。开启TCB功能后,系统将持续监控队列。当队列发生丢包时,系统将收集丢包时间、丢包原因、被丢弃报文的原始数据等信息,可通过gRPC方式上报网管,方便网络管理员及时知晓设备上发生的丢包事件。
MMU是设备转发芯片中管理数据缓冲区的核心,负责对各接口下接收缓冲区和发送缓冲区进行合理分配,并对其中的队列进行灵活调度,使设备更好的应对各种突发流量。
图2-1 MMU功能示意图
TCB功能的状态机如下:
(1) TCB功能被开启,进入待触发状态;
(2) 当队列长度大于start-threshold-value门限时,由待触发状态进入预触发状态;此时使用pre-sample-rate对队列进行采样抓包;
(3) 当队列发生丢包时,由预触发状态进入触发状态;此时使用post-sample-rate对队列进行采样抓包;
(4) 当队列长度小于stop-threshold-value门限时停止抓包,由触发状态进入待触发状态;
(5) 在待触发状态下,当队列长度再次大于start-threshold-value门限时,重复步骤(2);
(6) 如果抓包数量达到frozen-number或抓包时间达到timer-value,由触发状态进入冻结状态;
(7) 对丢包原因及丢弃报文特征等信息进行分析,并将分析结果发送给gRPC模块,由gRPC上报网管;
(8) 由冻结状态进入待触发状态。
图2-2 TCB状态机
上报信息主要有:
· 接口和队列信息;
· 丢包原因;
· 丢弃报文特征(源/目的IP地址,源/目的端口号,协议号等),或直接上报被丢弃报文的原始数据。
在系统视图下开启并配置全局TCB功能对相应slot上所有支持TCB功能的接口生效,在接口视图下开启并配置TCB功能仅对当前接口生效。两种配置方式互斥,如果当前已经使用一种方式开启了TCB功能,需要在该方式下关闭TCB功能后,才能使用另一种方式配置。
TCB的gRPC采样路径为tcb/tcbpacketinfoevent和tcb/tcbrawpacketinfoevent。有关gRPC的详细介绍,请参见“Telemetry配置指导”中的“gRPC”。
仅SH系列接口板支持配置TCB。
TCB的本地分析模式和引用ACL过滤模式不支持对隧道封装的TCP/UDP报文进行解析识别。
接口入方向上,TCB功能仅对同一接口组的流量生效。通过Probe视图下的debug port mapping命令可查看单板接口分组情况,显示信息中Unit字段取值相同为同一接口组。
表2-1 开启并配置全局TCB
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启并配置TCB功能 |
(独立运行模式) buffer transient-capture global [ slot slot-number [ cpu cpu-number ] ] { egress | ingress } enable [ no-local-analysis ] [ acl { ipv4-acl-number | name ipv4-acl-name } ] [ start-threshold start-threshold-value stop-threshold stop-threshold-value ] [ frozen-number frozen-number frozen-timer timer-value ] [ pre-sample-rate pre-sample-rate post-sample-rate post-sample-rate ] [ poll-frequency frequency-value ] (IRF模式) buffer transient-capture global [ chassis chassis-number slot slot-number [ cpu cpu-number ] ] { egress | ingress } enable [ no-local-analysis ] [ acl { ipv4-acl-number | name ipv4-acl-name } ] [ start-threshold start-threshold-value stop-threshold stop-threshold-value ] [ frozen-number frozen-number frozen-timer timer-value ] [ pre-sample-rate pre-sample-rate post-sample-rate post-sample-rate ] [ poll-frequency frequency-value ] |
缺省情况下,TCB功能处于关闭状态 |
表2-2 开启并配置接口TCB
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
开启并配置TCB功能 |
buffer transient-capture { egress [ queue queue-id ] | ingress } enable [ no-local-analysis ] [ acl { ipv4-acl-number | name ipv4-acl-name } ] [ start-threshold start-threshold-value stop-threshold stop-threshold-value ] [ frozen-number frozen-number frozen-timer timer-value ] [ pre-sample-rate pre-sample-rate post-sample-rate post-sample-rate ] [ poll-frequency frequency-value ] |
缺省情况下,TCB功能处于关闭状态 |
Device作为gRPC客户端与采集器相连。采集器为gRPC服务器。
在Device上开启并配置TCB与gRPC功能,监控队列丢包,并将收集到的数据通过gRPC推送给Collector。
(1) 配置Device与Collector的IP地址,并确保它们之间路由可达,配置步骤略。
(2) 开启并配置TCB。
# 创建编号为3001的IPv4高级ACL,并为其创建如下规则:匹配源IP地址为192.168.5.2的报文。
<Device> system-view
[Device] acl advanced 3001
[Device-acl-ipv4-adv-3001] rule permit ip source 192.168.5.2 0
[Device-acl-ipv4-adv-3001] quit
# 对接口Ten-GigabitEthernet1/0/1出方向队列1中匹配ACL 3001的报文开启TCB功能,不对抓包数据进行本地分析,进入预触发状态的队列长度门限值为10000字节,退出预触发状态的队列长度门限值为5000字节,抓包数量为1000,抓包时间为500微秒,预触发状态时的采样率为10,触发状态时的采样率为10,数据上报频次为600次/分钟。
[Device] interface Ten-GigabitEthernet 1/0/1
[Device-Ten-GigabitEthernet1/0/1] buffer transient-capture egress queue 1 enable no-local-analysis acl 3001 start-threshold 10000 stop-threshold 5000 frozen-number 1000 frozen-timer 500 pre-sample-rate 10 post-sample-rate 10 poll-frequency 600
[Device-Ten-GigabitEthernet1/0/1] quit
(3) 开启并配置gRPC。
# 开启gRPC功能。
[Device] grpc enable
# 创建传感器组test,并添加采样路径tcb/tcbpacketinfoevent和tcb/tcbrawpacketinfoevent。
[Device] telemetry
[Device-telemetry] sensor-group test
[Device-telemetry-sensor-group-test] sensor path tcb/tcbpacketinfoevent
[Device-telemetry-sensor-group-test] sensor path tcb/tcbrawpacketinfoevent
[Device-telemetry-sensor-group-test] quit
# 创建目标组collector1,并配置IP地址为192.168.2.1、端口号为50050的采集器。
[Device-telemetry] destination-group collector1
[Device-telemetry-destination-group-collector1] ipv4-address 192.168.2.1 port 50050
[Device-telemetry-destination-group-collector1] quit
# 创建订阅A,配置关联传感器组为test,关联目标组为collector1。
[Device-telemetry] subscription A
[Device-telemetry-subscription-A] sensor-group test
[Device-telemetry-subscription-A] destination-group collector1
[Device-telemetry-subscription-A] quit
[Device-telemetry] quit
当设备上开启TCB功能的队列发生丢包时,采集器将收到设备推送的数据信息。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!