流量监管和流量整形

流量监管和流量整形概述

流量监管和流量整形通过监督进入网络的流量速率,用来限制流量及其资源的使用,保证更好的为用户提供服务。

如果报文的发送速率大于接收速率,或者下游设备的接口速率小于上游设备的接口速率,就会引起网络拥塞。如果不限制用户发送的业务流量,大量用户不断突发的业务数据会使网络更加拥挤。为了使有限的网络资源能够更好地发挥效用,更好地为更多的用户服务,必须对用户的业务流量加以限制。

流量监管和流量整形就是一种通过对流量规格的监督,来限制流量及其资源使用的流控策略。

流量监管:

流量监管TP(Traffic Policing)就是对流量进行控制,通过监督进入网络的流量速率,对超出部分的流量进行“惩罚”,使进入的流量被限制在一个合理的范围之内,从而保护网络资源和用户的利益。

流量整形:

流量整形TS(Traffic Shaping)是一种主动调整流量输出速率的措施。当下游设备的入接口速率小于上游设备的出接口速率或发生突发流量时,下游设备入接口处可能出现流量拥塞的情况,此时用户可以通过在上游设备的接口出方向配置流量整形,将上游不规整的流量进行削峰填谷,输出一条比较平整的流量,从而解决下游设备的拥塞问题。

流量整形与流量监管的主要区别在于,流量整形对原本要被丢弃的报文进行缓存,当令牌桶有足够的令牌时,再均匀的向外发送这些被缓存的报文。流量整形与流量监管的另一区别是,整形可能会增加延迟,而监管几乎不引入额外的延迟。

监管和整形的区别:

  1. 应用方式:

    监管可以同时应用在接口的出入方向。

    整形值能用在接口的出方向。

  2. 监管可以实现报文的重标记。

    整形不支持报文的重标记。

  3. 监管针对超出的流量采用直接丢弃的方式。

    整形针对超出的流量不直接丢弃,而是放入缓存(shaping queue(默认使用WFQ队列机制))中并等待后续发送,如果缓存占满后执行Tail-Drop,丢弃方式可以更改为wred.

  4. 监管比较适合用于对延时要求较高的业务,例如:语音。但是会带来数据的重传。

    整形比较适合用于对可靠性要求较高的业务,但是不适合对延时要求较高的业务,因为缓存的数据会造成延时的增大。

  5. 流量监管:Car(Committed Access Rate)约定访问速度、CB policing、Line rate

    流量整形:GenericTraffic Shaping(通用流量整形,简称GTS、FRTS、DTS、CB Shapping、物理接口总速率限制,简称LR

令牌桶技术

令牌桶可以看作是一个存放一定数量令牌的容器。系统按设定的速度向桶中放置令牌,当桶中令牌满时,多出的令牌溢出,桶中令牌不再增加。

在使用令牌桶对流量进行评估时,是以令牌桶中的令牌数量是否足够满足报文的转发为依据的。如果桶中存在足够的令牌可以用来转发报文,称流量遵守或符合约定值,否则称为流量超标或不符合约定值。

关于令牌桶处理报文的方式,RFC中定义了两种标记算法:

  • 单速率三色标记(single rate three color marker,srTCM,或称为单速双桶算法)算法,主要关注报文尺寸的突发。
  • 双速率三色标记(two rate three color marker,trTCM,或称为双速双桶算法)算法,主要关注报文速率的突发。

两种算法的评估结果都是为报文打上红、黄、绿三种颜色的标记,所以称为“三色标记”。QoS会根据报文的颜色做相应的处理,两种算法都可以工作于色盲模式和色敏模式下。以下以色盲模式为例对标记算法进行详细介绍。

单速双桶:

单速双桶采用RFC2697的单速三色标记器srTCM(A Single Rate Three Color Marker)算法对流量进行测评,根据评估结果为报文打颜色标记,即绿色、黄色和红色。

单色双桶

图:单速双桶示意图

如上图所示:为方便描述将两个令牌桶称为C桶和E桶,用Tc和Te表示桶中的令牌数量。单速双桶有3个参数:

  • CIR(Committed Information Rate):承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率;
  • CBS(Committed Burst Size):承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量;
  • EBS(Excess Burst Size):超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量。

系统按照CIR速率向桶中投放令牌:

  • 若Tc<CBS,Tc增加;
  • 若Tc=CBS,Te<EBS,Te增加;
  • 若Tc=CBS,Te=EBS,则都不增加。

对于到达的报文,用B表示报文的大小:

  • 若B≤Tc,报文被标记为绿色,且Tc减少B;
  • 若Tc<B≤Te,报文被标记为黄色,且Te减少B;
  • 若Tc<B并且Te<B,报文被标记为红色,且Tc和Te都不减少。

双速双桶:

双速双桶采用RFC2698的双速三色标记器trTCM(A Two Rate Three Color Marker)算法对流量进行测评,根据评估结果为报文打颜色标记,即绿色、黄色和红色。

双宿双桶示意图

图:双速双桶示意图

如上图所示,为方便描述将两个令牌桶称为P桶和C桶,用Tp和Tc表示桶中的令牌数量。双速双桶有4个参数:

  • PIR(Peak information rate):峰值信息速率,表示向P桶中投放令牌的速率,即P桶允许传输或转发报文的峰值速率,PIR大于CIR;
  • CIR:承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率;
  • PBS(Peak Burst Size):峰值突发尺寸,表示P桶的容量,即P桶瞬间能够通过的峰值突发流量;
  • CBS:承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量。

系统按照PIR速率向P桶中投放令牌,按照CIR速率向C桶中投放令牌:

  • 当Tp<PBS时,P桶中令牌数增加,否则不增加。
  • 当Tc<CBS时,C桶中令牌数增加,否则不增加。

对于到达的报文,用B表示报文的大小:

  • 若Tp<B,报文被标记为红色;
  • 若Tc<B≤Tp,报文被标记为黄色,且Tp减少B;
  • 若B≤Tp并且B≤Tc,报文被标记为绿色,且Tp和Tc都减少B。

色敏模式:

色敏模式下,如果到达的报文本身已经被标记为红、黄、或者绿等颜色,令牌桶对流量的评估会参考报文已标记颜色,即报文本身已携带颜色会影响令牌桶的评估结果,评估机制简单的来说遵循以下原则:

  • 如果报文已被标记为绿色,则令牌桶的评估机制与色盲模式保持一致。
  • 如果报文已被标记为黄色,则令牌桶根据报文长度和令牌数的大小,为符合流量规定的报文标记为黄色,为不符合的报文标记为红色。
  • 如果报文已被标记为红色,则令牌桶直接将到达报文标记为红色。

流量监管

流量监管就是对流量进行控制,通过监督进入网络的流量速率,对超出部分的流量进行“惩罚”,使进入的流量被限制在一个合理的范围之内,从而保护网络资源和企业网用户的利益。

流量监管的原理:

流量监管原理

图:流量监管组件图

流量监管由三部分组成:

  • Meter:通过令牌桶机制对网络流量进行度量,向Marker输出度量结果。

  • Marker:根据Meter的度量结果对报文进行染色,报文会被染成green、yellow、red三种颜色。

  • Action:根据Marker对报文的染色结果,对报文进行一些动作,动作包括:

    • pass:对测量结果为“符合”的报文继续转发。
    • remark + pass:修改报文内部优先级后再转发。
    • discard:对测量结果为“不符合”的报文进行丢弃。

    默认情况下,green报文、yellow报文进行转发,red报文丢弃。

经过流量监管,如果某流量速率超过标准,设备可以选择降低报文优先级再进行转发或者直接丢弃。默认情况下,此类报文被丢弃。

流量整形

流量整形是一种主动调整流量输出速率的措施,其作用是限制流量与突发,使这类报文以比较均匀的速率向外发送。流量整形通常使用缓冲区和令牌桶来完成,当报文的发送速度过快时,首先在缓冲区进行缓存,在令牌桶的控制下,再均匀地发送这些被缓冲的报文。

当下游设备的接口速率小于上游设备的接口速率或发生突发流量,在下游设备接口处可能出现流量拥塞的情况,此时用户可以通过在上游设备的接口出方向配置流量整形,将上游不规整的流量进行削峰填谷,输出一条比较平整的流量,从而解决下游设备的拥塞问题。

处理流程:

流量整形是一种应用于接口、子接口或队列的流量控制技术,可以对从接口上经过的所有报文或某类报文进行速率限制。

下面以接口或子接口下采用单速单桶技术的基于流的队列整形为例介绍流量整形的处理流程,其处理流程如下图所示:

单速单通

图:流量整形处理流程

具体处理流程如下:

  1. 当报文到来的时候,首先对报文进行分类,使报文进入不同的队列。
  2. 若报文进入的队列没有配置队列整形功能,则直接发送该队列的报文;否则,进入下一步处理。
  3. 按用户设定的队列整形速率向令牌桶中放置令牌:
    • 如果令牌桶中有足够的令牌可以用来发送报文,则报文直接被发送,在报文被发送的同时,令牌做相应的减少。
    • 如果令牌桶中没有足够的令牌,则将报文放入缓存队列,如果报文放入缓存队列时,缓存队列已满,则丢弃报文。
  4. 缓存队列中有报文的时候,系统按一定的周期从缓存队列中取出报文进行发送,每次发送都会与令牌桶中的令牌数作比较,直到令牌桶中的令牌数减少到缓存队列中的报文不能再发送或缓存队列中的报文全部发送完毕为止。

队列整形后,如果该接口和子接口同时配置了接口整形,则系统还要逐级按照子接口整形速率、接口整形速率对报文流进行速率控制。其处理流程与队列整形相似,但不需要步骤1和步骤2.

自适应流量整形:

流量整形主要是为了解决下游设备的接口速率小于上游设备的接口速率,从而导致下游设备接口入方向丢包的问题。但有些场景下,下游设备的接口速率是不确定的,上游设备无法确定应该把整形参数设置为多少。此时可以配置自适应模板来实现自适应流量整形,通过在上游设备和下游设备间开启NQA检测,根据NQA检测到的下游设备丢包率动态调整整形参数。

自适应模板规定了:

  • NQA测试例:通过此测试例检测下游设备接口入方向丢包率,根据检测结果调整整形参数。
  • 整形速率范围:上游设备接口出方向的整形速率上下限,整形速率在此范围内动态调整。
  • 整形速率调整步长:动态调整整形速率时,每次调整的速率大小。
  • 丢包率范围:下游设备接口入方向允许的丢包率范围。当丢包率在此范围之内时,不调整整形速率;当丢包率过大,减小上游设备整形速率;当丢包率过小,且上游设备发生拥塞,增大上游设备整形速率。
  • 整形速率增大的时间间隔:当丢包率在阈值附近频繁变化时,就需要频繁调整整形速率,用户可以通过设置此参数,限制增大整形速率的时间间隔,避免频繁更新。

系统根据NQA检测结果中的丢包率等调整整形速率:

触发条件(必须同时满足所有条件) 动作
NQA检测到丢包率大于自适应模板配置的丢包率上限 减小整形速率
NQA检测到丢包率小于自适应模板配置的丢包率下限。 上游发送端接口拥塞。 距离上次增大整形速率的时间间隔超过自适应模板配置的速率增大时间间隔 增大整形速率
NQA检测到丢包率小于自适应模板配置的丢包率下限上游发送端接口不拥塞 保持当前整形速率
丢包率在自适应模板配置的丢包率范围内 保持当前整形速率
检测失败 自适应模板配置的整形速率上限

流量整形与流量监管配置

##常用命令行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
bandwidth
//配置基于MQC实现流量监管的承诺信息速率占接口带宽的百分比基值。
car
//在流行为中创建流量监管动作。
/*
cir:承诺信息速率,即保证能够通过的平均速率。
pct:指定承诺信息速率占接口带宽的百分比。
pir:峰值信息速率,即能够通过的最大速率。
share:指定对流做共享CAR,使绑定了同一流行为的流分
类中的所有的规则共享CAR参数。
cbs:指定承诺突发尺寸,即瞬间能够通过的承诺突发流量。
pbs:指定峰值突发尺寸,即瞬间能够通过的峰值突发流量。
mode:HQoS的父策略行为,指定流量监管采取的颜色模
式,如果不是HQoS的父策略行为,指定该参数无效。
color-blind:指定色盲模式。这种模式下,子策略行为
对报文的着色不影响本次流量监管的动作。
color-aware:指定色敏模式。这种模式下,本次流量监
管动作考虑子策略行为对报文的着色。
*/
display qos adaptation-profile
//查看已配置的自适应模板信息。
gts
//流行为中创建流量整形动作。
gts adaptation-profile
//在流行为中绑定自适应模板。
port-schedule high
//配置接口的优先级为高。
qos adaptation-profile
//创建自适应模板,并进入自适应模板视图。
qos car
//配置流量监管。
qos gts
//对接口配置流量整形。
qos gts adaptation-profile
//在接口下应用自适应模板。
qos lr
//配置物理接口发送报文的速率占接口带宽的百分比。
qos overhead layer { link | physics }
//配置在流量监管或流量整形时报文长度的计算方式。
/*
layer:指定流量监管或流量整形计算报文长度时是否包括
报文的物理层或链路层补偿信息。
link:指定流量监管或流量整形计算报文长度时仅包括报
文的链路层补偿信息。
physics:指定流量监管或流量整形计算报文长度时包括
报文的物理层和链路层的补偿信息。此为缺省配置。
*/
queue gts
//配置各队列的流量整形。
qos-profile
//创建QoS模板并进入QoS模板视图,
rate-adjust increase interval
//配置自适应模板中整形速率增大的时间间隔。
//缺省情况下,整形速率增大的时间间隔为30秒。
rate-adjust loss
//配置自适应模板的丢包率范围。
//缺省情况下,丢包率范围为10%~20%
rate-adjust step
//配置自适应模板的整形速率调整步长。
//缺省情况下,整形速率调整步长为64kbit/s。
rate-range
//配置自适应模板的整形速率范围。
track nqa
//为自适应模板绑定NQA测试例。

流量监管和流量整形配置示例:

实验拓扑如下:

配置拓扑

图:流量监管和流量整形配置实验拓扑

实验要求:

如上图:VLAN10属于数据业务,VLAN20为语音业务,VLAN30为视频业务。在AR1上配置流量监管和流量整形,完成对不同的业务有不同的要求。

配置文件:

AR1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<AR1>dis cur
#
sysname AR1
#
vlan batch 10 20 30
#
acl number 2000
rule 5 permit source 192.168.0.0 0.0.255.255
//用来匹配内网网段,做easy IP。
#
qos queue-profile qp
//基于队列的流量整形
queue 2 gts cir 2000 cbs 50000
queue 5 gts cir 4000 cbs 10000
queue 6 gts cir 256 cbs 6400
schedule wfq 0 to 5 pq 6 to 7
#
//流分类,匹配vlan-id
traffic classifier video operator or
if-match vlan-id 30
traffic classifier date operator or
if-match vlan-id 10
traffic classifier voice operator or
if-match vlan-id 20
#
//流行为,对于流量监管,配置合理的速率。
//对于流量整形,对于匹配到的流标记规定的802.1q优先级
traffic behavior video
car cir 4000 cbs 752000 pbs 1252000 green pass yellow pass red discard
statistic enable
//使能接口的流量统计功能。
remark 8021p 5
//标记优先级为5
traffic behavior date
car cir 2000 cbs 376000 pbs 626000 green pass yellow pass red discard
statistic enable
remark 8021p 2
traffic behavior voice
car cir 256 cbs 48128 pbs 80128 green pass yellow pass red discard
statistic enable
remark 8021p 6
#
//流策略,绑定对应的流分类与流行为
traffic policy video
classifier video behavior video
traffic policy date
classifier date behavior date
traffic policy voice
classifier voice behavior voice
#
interface GigabitEthernet0/0/0
ip address 12.1.1.1 255.255.255.0
qos queue-profile qp
//在接口应用队列模板
qos gts cir 8000 cbs 200000
//将端口速率限制在8000kbit/s.
nat outbound 2000
//做nat,easy ip
#
interface GigabitEthernet0/0/1
trust 8021p
//接口信任802.1q优先级
qos car inbound cir 10000 cbs 1880000 pbs
3130000 green pass yellow pass red discard
//配置入口的速率限制在10000kbit/s.
#
interface GigabitEthernet0/0/1.10
dot1q termination vid 10
//配置子接口Dot1q终结的单层VLAN ID。
ip address 192.168.10.254 255.255.255.0
traffic-policy date inbound
//应用流策略
arp broadcast enable
//使能终结子接口的ARP广播功能。
#
interface GigabitEthernet0/0/1.20
dot1q termination vid 20
ip address 192.168.20.254 255.255.255.0
traffic-policy voice inbound
arp broadcast enable
#
interface GigabitEthernet0/0/1.30
dot1q termination vid 30
ip address 192.168.30.254 255.255.255.0
traffic-policy video inbound
arp broadcast enable
#
ip route-static 0.0.0.0 0.0.0.0 12.1.1.2
//出外网的默认路由
#
return

AR2:

1
2
3
4
5
6
7
8
[AR2]dis current-configuration 
#
sysname AR2
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
#
return

SW:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<SW>dis current-configuration 
#
sysname SW
#
vlan batch 10 20 30
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
#
interface GigabitEthernet0/0/2
port link-type access
port default vlan 10
#
interface GigabitEthernet0/0/3
port link-type access
port default vlan 20
#
interface GigabitEthernet0/0/4
port link-type access
port default vlan 30
#
return

配置结果:


流策略应用记录

图:流策略应用记录

流策略状态

图:流策略状态

队列模板

图:队列模板情况

接口队列应用状况

图:接口应用队列模板情况统计


参考资料:华为HedEx文档


坚持原创技术分享,您的支持将鼓励我继续创作!