流量监管和流量整形概述
流量监管和流量整形通过监督进入网络的流量速率,用来限制流量及其资源的使用,保证更好的为用户提供服务。
如果报文的发送速率大于接收速率,或者下游设备的接口速率小于上游设备的接口速率,就会引起网络拥塞。如果不限制用户发送的业务流量,大量用户不断突发的业务数据会使网络更加拥挤。为了使有限的网络资源能够更好地发挥效用,更好地为更多的用户服务,必须对用户的业务流量加以限制。
流量监管和流量整形就是一种通过对流量规格的监督,来限制流量及其资源使用的流控策略。
流量监管:
流量监管TP(Traffic Policing)就是对流量进行控制,通过监督进入网络的流量速率,对超出部分的流量进行“惩罚”,使进入的流量被限制在一个合理的范围之内,从而保护网络资源和用户的利益。
流量整形:
流量整形TS(Traffic Shaping)是一种主动调整流量输出速率的措施。当下游设备的入接口速率小于上游设备的出接口速率或发生突发流量时,下游设备入接口处可能出现流量拥塞的情况,此时用户可以通过在上游设备的接口出方向配置流量整形,将上游不规整的流量进行削峰填谷,输出一条比较平整的流量,从而解决下游设备的拥塞问题。
流量整形与流量监管的主要区别在于,流量整形对原本要被丢弃的报文进行缓存,当令牌桶有足够的令牌时,再均匀的向外发送这些被缓存的报文。流量整形与流量监管的另一区别是,整形可能会增加延迟,而监管几乎不引入额外的延迟。
监管和整形的区别:
应用方式:
监管可以同时应用在接口的出入方向。
整形值能用在接口的出方向。
监管可以实现报文的重标记。
整形不支持报文的重标记。
监管针对超出的流量采用直接丢弃的方式。
整形针对超出的流量不直接丢弃,而是放入缓存(shaping queue(默认使用WFQ队列机制))中并等待后续发送,如果缓存占满后执行Tail-Drop,丢弃方式可以更改为wred.
监管比较适合用于对延时要求较高的业务,例如:语音。但是会带来数据的重传。
整形比较适合用于对可靠性要求较高的业务,但是不适合对延时要求较高的业务,因为缓存的数据会造成延时的增大。
流量监管: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.
自适应流量整形:
流量整形主要是为了解决下游设备的接口速率小于上游设备的接口速率,从而导致下游设备接口入方向丢包的问题。但有些场景下,下游设备的接口速率是不确定的,上游设备无法确定应该把整形参数设置为多少。此时可以配置自适应模板来实现自适应流量整形,通过在上游设备和下游设备间开启NQA检测,根据NQA检测到的下游设备丢包率动态调整整形参数。
自适应模板规定了:
- NQA测试例:通过此测试例检测下游设备接口入方向丢包率,根据检测结果调整整形参数。
- 整形速率范围:上游设备接口出方向的整形速率上下限,整形速率在此范围内动态调整。
- 整形速率调整步长:动态调整整形速率时,每次调整的速率大小。
- 丢包率范围:下游设备接口入方向允许的丢包率范围。当丢包率在此范围之内时,不调整整形速率;当丢包率过大,减小上游设备整形速率;当丢包率过小,且上游设备发生拥塞,增大上游设备整形速率。
- 整形速率增大的时间间隔:当丢包率在阈值附近频繁变化时,就需要频繁调整整形速率,用户可以通过设置此参数,限制增大整形速率的时间间隔,避免频繁更新。
系统根据NQA检测结果中的丢包率等调整整形速率:
触发条件(必须同时满足所有条件) | 动作 |
---|---|
NQA检测到丢包率大于自适应模板配置的丢包率上限 | 减小整形速率 |
NQA检测到丢包率小于自适应模板配置的丢包率下限。 上游发送端接口拥塞。 距离上次增大整形速率的时间间隔超过自适应模板配置的速率增大时间间隔 | 增大整形速率 |
NQA检测到丢包率小于自适应模板配置的丢包率下限上游发送端接口不拥塞 | 保持当前整形速率 |
丢包率在自适应模板配置的丢包率范围内 | 保持当前整形速率 |
检测失败 | 自适应模板配置的整形速率上限 |
流量整形与流量监管配置
##常用命令行:
1 | bandwidth |
流量监管和流量整形配置示例:
实验拓扑如下:
实验要求:
如上图:VLAN10属于数据业务,VLAN20为语音业务,VLAN30为视频业务。在AR1上配置流量监管和流量整形,完成对不同的业务有不同的要求。
配置文件:
AR1:
1 | <AR1>dis cur |
AR2:
1 | [AR2]dis current-configuration |
SW:
1 | <SW>dis current-configuration |
配置结果:
图:流策略应用记录
图:流策略状态
图:队列模板情况
图:接口应用队列模板情况统计
参考资料:华为HedEx文档