• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 关于我们

08-ACL和QoS配置指导

目录

04-数据缓冲区配置

本章节下载 04-数据缓冲区配置  (308.42 KB)

04-数据缓冲区配置


1 数据缓冲区

1.1  数据缓冲区简介

在短时间内,网络中可能存在突发流量导致拥塞,而设备接口处理能力有限,突发流量可能引起接口丢包。因此,高速转发设备使用数据缓冲区来缓存报文,从而减少接口因拥塞而丢包的可能性。如果网络中存在较大的突发流量时,数据缓存区的资源被耗尽后则无法继续缓存报文,报文仍可能被丢弃。合理分配数据缓冲区的资源可以使得高优先级队列或接口上的业务数据尽可能被缓存,减少拥塞影响。

缓冲区的大小和处理能力完全取决于硬件转发芯片和接口,一般而言转发芯片上所有接口共用芯片的数据缓冲区资源,接口上的队列则共用该接口的数据缓冲区资源。

1.1.1  数据缓冲区分类

·     接收缓冲区:用来缓存接收的数据。当设备的CPU繁忙时,端口不能立即将收到的报文交给CPU处理,会将数据暂时存储到接收缓冲区。

·     发送缓冲区:用来缓存发送的数据。当网络拥塞时,端口不能立即发送数据,为防止数据丢失,会将数据暂时存储到发送缓冲区。

·     Headroom缓冲区:设备优先使用接收缓冲区和发送缓冲区,当这两种数据缓冲区用尽后,设备将使用Headroom数据缓冲区提供额外的报文缓存能力。Headroom缓冲区主要为PFC功能(Priority-based Flow Control,基于优先级的流量控制)服务。从本端PFC触发发送PFC PAUSE帧到对端暂停发送报文之间还存在一段时间,在这段时间内本端设备使用Headroom数据缓冲区来缓存报文。关于PFC的详细介绍,请参见“智能无损网络配置指导”中的“PFC”。

图1-1 数据缓冲区划分示意图

1.1.2  cell资源

发送数据缓冲区和接收数据缓冲区在缓存数据时,都会同时用到cell资源,cell资源用来存储数据包的内容,端口会根据报文的实际大小占用相应大小的cell资源。比如一个cell资源是208字节,当发送的报文是128字节时,端口会给它分配一个cell资源,当发送的报文是300字节时,端口会给它分配两个cell资源。

1.1.3  固定区域和共享区域

cell资源又分为共享区域和固定区域。

·     固定区域是按队列划分的,每个队列又按端口均分,如图1-2所示。如果设备CPU繁忙或网络发生拥塞,设备在接收或发送报文时,会根据一定的策略将报文分发到相应的队列。如果该端口的该队列缓冲区满,则放到共享区域中的相应队列;如果共享区域中该队列满,则将报文丢弃。在固定缓冲区中,系统会根据用户的配置给队列预留指定大小的空间,即便该队列没有报文存储需求,其他队列也不能抢占。给队列预留的空间均分给每个端口的,即使某端口的某队列没有报文存储需求,其他端口也不能抢占。

·     共享缓冲区只按队列划分,不再按端口均分,如图1-2所示。系统会根据用户配置以及实际需要收发报文的数量决定每个队列实际可占用的缓冲区的大小。如果某个队列没有报文存储需求,则其他队列会抢占该队列的配额。对于某个队列的缓冲区,所有端口接收或发送的报文采用抢占的方式,先到先得,如果资源耗尽,则后到达的报文将被丢弃。

图1-2 固定区域和共享区域划分示意图

1.2  数据缓冲区配置限制和指导

用户可以使用以下两种方式配置数据缓冲区: 配置Burst功能自动分配缓冲区 手工配置数据缓冲区 需要注意的是,以上两种数据缓冲区的配置方式不能同时使用,如果已经使用某一种方式进行了配置,则必须先取消该方式的配置之后,才能使用另外一种方式进行配置。否则,配置失败。 数据缓冲区的配置比较复杂,而且对设备的转发功能有重要的影响,建议用户不要轻易修改数据缓冲区的缺省参数。在需要较大的缓存空间时,建议使用Burst功能来自动分配缓冲区。

1.3  数据缓冲区配置任务简介

数据缓冲区配置任务如下:

·     配置Burst功能自动分配缓冲区

·     手工分配数据缓冲区

·     配置队列可用的数据缓冲区大小

¡     配置队列最多可使用的固定区域的大小

¡     配置队列最多可使用的共享区域的大小

·     (可选)配置数据缓冲区监控功能

·     (可选)配置数据缓冲区告警功能

¡     配置端口级接收或发送缓冲区超门限告警功能

¡     配置队列级接收或发送缓冲区超门限告警功能

¡     配置端口级Headroom缓冲区超门限告警功能

¡     配置队列级Headroom缓冲区超门限告警功能

¡     开启数据缓冲区丢包告警功能

1.4  配置Burst功能自动分配缓冲区

1. 功能简介

在下列情况下,Burst功能可以提供更好的报文缓存功能和流量转发性能:

·     广播或者组播报文流量密集,瞬间突发大流量的网络环境中。

·     报文从高速链路进入设备,由低速链路转发出去。

·     报文从相同速率的多个端口同时进入设备,由一个相同速率的端口转发出去。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     开启Burst功能。

burst-mode enable

缺省情况下,未开启Burst功能。

1.5  手工分配数据缓冲区

1. 功能简介

设备上整个数据缓冲区的大小是固定的,用户可以手工配置共享区域的大小,其余部分将自动成为固定区域。

缺省情况下,所有队列均分共享区域/固定区域。用户可以手工调整指定队列最多可使用的共享区域/固定区域的大小,其它未配置的队列最多可使用的共享区域/固定区域的大小仍遵循缺省值。

2. 配置步骤

(1)     ‍进入系统视图。

system-view

(2)     配置数据缓冲区分配规则。请至少选择其中一项进行配置。

¡     配置队列最多可使用的共享区域的大小。

buffer egress [ slot slot-number ] cell queue queue-id shared ratio ratio

缺省情况下,未配置每个队列最多可使用的共享区域大小。

各队列最多可使用的共享区域的大小将根据buffer queue shared配置,以及实际需要收发报文的数量决定。

¡     配置队列最多可使用的固定区域的大小。

buffer egress [ slot slot-number ] cell queue queue-id guaranteed ratio ratio

缺省情况下,未配置队列最多可使用的固定区域的大小。

所有队列所配置的固定区域大小之和,不应超过可配置的总固定区域大小,否则配置失败。

(3)     应用数据缓冲区分配规则。

buffer apply

执行本命令后,所配置的数据缓冲区分配规则才会生效。如果需要修改数据缓冲区分配规则,需要先取消应用,再修改分配规则并重新应用。

1.6  配置队列可用的数据缓冲区大小

1.6.1  配置队列最多可使用的固定区域的大小

1. 功能简介

数据缓冲区中的固定区域是按队列划分的,每个队列又按端口均分。在报文存储时,即便某队列没有报文存储需求,其他队列也不能抢占。通过本功能可以调整接口下指定队列最多可使用固定区域的比例。其它未配置的队列则均分剩余的固定区域。

2. 配置限制和指导

接口下所有队列所配置的可使用的固定区域大小之和,不应超过可配置的总固定区域大小,否则配置失败。

对于配置队列最多可使用的固定区域的大小,接口下的配置的优先级高于系统下的配置,即如果针对某队列在接口视图及系统视图下均做了配置,则接口视图下的配置生效。

3. 配置步骤

(1)     ‍进入系统视图。

system-view

(2)     进入接口视图。

interface interface-type interface-number

(3)     配置队列最多可使用的固定区域的大小。

buffer egress cell queue queue-id guaranteed ratio ratio

缺省情况下,未配置队列最多可使用的固定区域的大小。

1.6.2  配置队列最多可使用的共享区域的大小

1. 功能简介

数据缓冲区中的共享区域是按队列划分。在报文存储时,如果某队列没有报文存储需求,其他队列也可以抢占该队列的存储资源。通过本功能可以调整接口下指定队列最多可使用共享区域的大小,其它未配置的队列最多可使用的共享区域的大小仍遵循缺省值。最终,各队列最多可使用的共享区域的大小将由芯片根据buffer shared配置,以及实际需要收发报文的数量决定。

2. 配置限制和指导

对于配置队列最多可使用的共享区域的大小,接口下的配置的优先级高于系统下的配置,即如果针对某队列在接口视图及系统视图下均做了配置,则接口视图下的配置生效。

3. 配置步骤

(1)     ‍进入系统视图。

system-view

(2)     进入接口视图。

interface interface-type interface-number

(3)     配置队列最多可使用的共享区域的大小。

buffer egress cell queue queue-id shared ratio ratio

缺省情况下,未配置每个队列最多可使用的共享区域大小。

1.7  配置数据缓冲区监控功能

1. 功能简介

用户可以设置接口使用数据缓冲区的门限值,设备通过该值来判断接口当前是否处于超量使用缓冲区的状态。当接口上某一队列中需要处理的报文增多,造成该接口对数据缓冲区的使用比例超过设定的门限值时,系统会为该队列增加一次超量使用缓冲区的计数,以此监控数据缓冲区的使用情况。

2. 配置步骤

(1)     ‍进入系统视图。

system-view

(2)     配置接口的数据缓冲区使用门限值。

buffer usage threshold slot slot-number ratio ratio

缺省情况下,接口的数据缓冲区使用门限值为100。

1.8  配置数据缓冲区告警功能

1.8.1  功能简介

数据缓冲区告警功能需要配合iMC等网管软件使用,数据缓冲区告警包括超门限告警和丢包告警。设备数据缓冲区产生告警后,会周期性的将告警信息上送iMC等网管软件,网管软件会生成相应的告警提示,方便查看设备数据缓冲区的使用情况。

数据缓冲区告警门限的配置粒度分为:

·     端口级告警门限,即不区分队列,整个接口配置接收或发送数据缓冲区告警门限。

·     队列级告警门限,即接口下的每个队列配置接收或发送数据缓冲区告警门限。

1.8.2  配置端口级接收或发送缓冲区超门限告警功能

1. 配置限制和指导

对于端口级接收缓冲区超门限告警功能,开启接收数据缓冲区超门限告警功能后,需要同时开启以太网接口的流量控制功能才会上送告警信息。有关以太网接口流量控制功能的详细介绍,请参见“接口管理配置指导”中的“以太网接口”。

2. 配置步骤

(1)     进入系统视图。

system-view

(2)     配置端口级接收或发送缓冲区告警门限值。请至少选择其中一项进行配置。

¡     配置全局所有接口的接收或发送数据缓冲区使用门限值。

buffer { egress | ingress } usage threshold slot slot-number null-queue ratio ratio

全局所有接口的接收或发送数据缓冲区使用门限值均为100%。

¡     请依次执行以下命令配置接口接收或发送数据缓冲区使用门限值。

interface interface-type interface-number

port buffer { egress | ingress } usage threshold null-queue ratio ratio

缺省情况下,接口使用全局所有接口接收或发送数据缓冲区使用门限值。

同时配置全局所有接口缓冲区使用门限值和接口缓冲区使用门限值时,接口下配置的门限值优先生效。

(3)     开启接收或发送数据缓冲区超门限告警功能。

buffer threshold alarm { egress | ingress } enable

缺省情况下,接收或发送数据缓冲区超门限告警功能处于关闭状态。

(4)     (可选)配置接收或发送数据缓冲区超门限告警发送周期。

buffer threshold alarm { egress | ingress } interval interval

缺省情况下,接收或发送数据缓冲区超门限告警发送周期为5秒。

1.8.3  配置队列级接收或发送缓冲区超门限告警功能

(1)     ‍进入系统视图。

system-view

(2)     配置队列接收或发送缓冲区告警门限值。

¡     请依次执行以下命令配置接口队列接收或发送数据缓冲区使用门限值

interface interface-type interface-number

buffer { egress | ingress } usage threshold queue queue-id ratio ratio

缺省情况下,接口队列数据缓冲区使用门限值均为100%。

(3)     开启接收或发送数据缓冲区超门限告警功能。

buffer threshold alarm { egress | ingress } enable

缺省情况下,接收或发送数据缓冲区超门限告警功能处于关闭状态。

(4)     (可选)配置接收或发送数据缓冲区超门限告警发送周期。

buffer threshold alarm { egress | ingress } interval interval

缺省情况下,接收或发送数据缓冲区超门限告警发送周期为5秒。

1.8.4  配置端口级Headroom缓冲区超门限告警功能

(1)     进入系统视图。

system-view

(2)     配置Headroom缓冲区的门限值。请至少选择其中一项进行配置。

¡     配置全局Headroom缓冲区的使用门限值。

buffer usage threshold headroom slot slot-number ratio ratio

缺省情况下,全局所有接口下每个队列的Headroom缓冲区使用门限值均为100%。

¡     请依次执行以下命令配置端口级Headroom缓冲区的使用门限值。

interface interface-type interface-number

port buffer usage threshold headroom null-queue ratio ratio

缺省情况下,接口使用全局Headroom缓冲区使用门限值。

同时配置全局Headroom缓冲区使用门限值和接口Headroom缓冲区使用门限值时,接口下配置的门限值优先生效。

(3)     开启Headroom缓冲区超门限告警功能。

buffer threshold alarm headroom enable

缺省情况下,Headroom缓冲区超门限告警功能处于关闭状态。

(4)     (可选)配置Headroom缓冲区超门限告警发送周期。

buffer threshold alarm headroom interval interval

缺省情况下,Headroom缓冲区超门限告警发送周期为5秒。

1.8.5  配置队列级Headroom缓冲区超门限告警功能

(1)     ‍进入系统视图。

system-view

(2)     进入接口视图。

interface interface-type interface-number

(3)     配置接口上指定队列的Headroom缓冲区的门限值。

buffer usage threshold headroom queue queue-id ratio ratio

缺省情况下,接口上指定队列的Headroom缓冲区与全局Headroom缓冲区使用门限值相同。

(4)     开启Headroom缓冲区超门限告警功能。

buffer threshold alarm headroom enable

缺省情况下,Headroom缓冲区超门限告警功能处于关闭状态。

(5)     (可选)配置Headroom缓冲区超门限告警发送周期。

buffer threshold alarm headroom interval interval

缺省情况下,Headroom缓冲区超门限告警发送周期为5秒。

1.8.6  开启数据缓冲区丢包告警功能

1. 功能简介

开启本功能后,设备将周期性的将数据缓冲区的丢包信息上送网管服务器。

2. 配置限制和指导

本功能对Headroom缓冲区不起作用。

3. 配置步骤

(1)     ‍进入系统视图。

system-view

(2)     开启数据缓冲区丢包告警功能。

buffer packet-drop alarm enable

缺省情况下,数据缓冲区丢包告警功能处于关闭状态。

(3)     (可选)配置数据缓冲区丢包告警发送周期。

buffer packet-drop alarm interval interval

缺省情况下,数据缓冲区丢包告警发送周期为5秒。

1.9  数据缓冲区显示和维护

在完成上述配置后,在任意视图下执行display命令可以查看数据缓冲区的手工配置效果。

表1-1 设备管理显示和维护

操作

命令

显示数据缓冲区的大小

display buffer [ slot slot-number ] [ queue [ queue-id ] ]

显示数据缓冲区的使用率

display buffer usage [ slot slot-number ]

显示接口的数据缓冲区使用统计信息

display buffer usage interface [ interface-type [ interface-number ] ] [ verbose ]

 

2 TCB

2.1  TCB简介

2.1.1  概述

TCB(Transient Capture Buffer,瞬时抓包缓存)是一种MMU(Memory Management Unit,缓存管理单元)监控队列丢包的技术。开启TCB功能后,系统将持续监控队列。当队列发生丢包时,系统将收集丢包时间、丢包原因、被丢弃报文的原始数据等信息,可通过gRPC方式上报网管,方便网络管理员及时知晓设备上发生的丢包事件。

MMU是设备转发芯片中管理数据缓冲区的核心,负责对各接口下接收缓冲区和发送缓冲区进行合理分配,并对其中的队列进行灵活调度,使设备更好的应对各种突发流量。

图2-1 MMU功能示意图

 

2.1.2  运行机制

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地址,源/目的端口号,协议号等),或直接上报被丢弃报文的原始数据。

2.2  TCB配置限制和指导

在系统视图下开启并配置全局TCB功能对相应slot上所有支持TCB功能的接口生效,在接口视图下开启并配置TCB功能仅对当前接口生效。两种配置方式互斥,如果当前已经使用一种方式开启了TCB功能,需要在该方式下关闭TCB功能后,才能使用另一种方式配置。

使用接口视图下的命令开启TCB功能时,设备仅支持在一个接口下开启TCB功能。

TCB的gRPC采样路径为tcb/tcbpacketinfoevent和tcb/tcbrawpacketinfoevent。有关gRPC的详细介绍,请参见“Telemetry配置指导”中的“gRPC”。

2.3  开启并配置TCB

2.3.1  开启并配置全局TCB

(1)     进入系统视图。

system-view

(2)     开启并配置TCB功能。

buffer transient-capture global [ slot slot-number ] egress 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.3.2  开启并配置接口TCB

(1)     进入系统视图。

system-view

(2)     进入接口视图。

interface interface-type interface-number

(3)     开启并配置TCB功能。

buffer transient-capture egress [ queue queue-id ] 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.4  TCB显示和维护

在完成上述配置后,在任意视图下执行display命令可以显示配置后TCB的运行情况,通过查看显示信息验证配置的效果。

表2-1 TCB显示和维护

操作

命令

显示TCB捕获的丢包信息

display buffer transient-capture packet-drop slot slot-number { ethernet | ipv4 | ipv6 }

 

2.5  TCB配置举例

2.5.1  接口TCB配置举例

1. 组网需求

Device作为gRPC客户端与采集器相连。采集器为gRPC服务器。

在Device上开启并配置TCB与gRPC功能,监控队列丢包,并将收集到的数据通过gRPC推送给Collector。

2. 组网图

3. 配置步骤

(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

# 对接口HundredGigE1/1/1出方向队列1中匹配ACL 3001的报文开启TCB功能,不对抓包数据进行本地分析,进入预触发状态的队列长度门限值为10000字节,退出预触发状态的队列长度门限值为5000字节,抓包数量为1000,抓包时间为400微秒,预触发状态时的采样率为10,触发状态时的采样率为10,数据上报频次为600次/分钟。

[Device] interface hundredgige 1/1/1

[Device-HundredGigE1/1/1] buffer transient-capture egress queue 1 enable no-local-analysis acl 3001 start-threshold 10000 stop-threshold 5000 frozen-number 1000 frozen-timer 400 pre-sample-rate 10 post-sample-rate 10 poll-frequency 600

[Device-HundredGigE1/1/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

4. 验证配置

当设备上开启TCB功能的队列发生丢包时,采集器将收到设备推送的数据信息。

 

 

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们