QoS
- 一、哪些问题会影响网络的数据传输
- 二、QoS服务模型
- 三、IntServ
- 3.1 资源预留的过程分为5步
- 3.2 资源预留方式可分为两类:
- 四、DiffServ
- 五、分类和标识的方法
- 5.1、二层标记方法
- 5.2、三层标记方法
- 5.2.1 传统的IPP方式
- 六、拥塞管理(队列技术)
- 6.1拥塞管理:
- 6.1.1 FIFO(First In First Out Queue)队列:
- 6.1.2 PQ队列:
- 6.1.3 WRR( Weight Round Robin)队列:
- 6.1.4 DRR(Deficit Round Robin)队列: Deficit 赤字; 亏损; 亏空; 不足额
- 6.1.5 WFQ(Weight Fair Queuing)队列
- 6.1.6 CBQ(Class-based Queueing)队列
- 七、拥塞避免(丢包技术)
- 7.1 拥塞避免(Congestion Avoidance):
- 7.1.1 传统的尾部丢包策略
- 7.1.2 RED丢弃策略
- 7.1.3 WRED丢弃策略
- 八、流量监管和流量整形
- 8.1 流量的监管
- 8.1.1 单速双桶三色
- 8.1.2 双速双桶三色
- 8.2 流量整形(Traffic shaping)
一、哪些问题会影响网络的数据传输
1、有限的带宽
2、延迟
3、抖动
4、丢包
解决可用带宽的方法:
1、升级带宽,增加链路带宽
2、让优先级高的流量先过
3、压缩二层的帧
4、压缩IP包的头部
延迟的分类:
1、处理延迟–网络设备将数据帧从入接口取出,将其放到接收队列,再放到出接口输出队列所需的时间
2、排队延迟–数据包在接口的输出队列中等待的时间
3、串行化延迟–将封装在数据帧中比特放到物理介质上的时间
4、传播延迟–通过物理介质传输数据帧中的比特所需的时间
注意:只有排队延迟可以通过使用QOS来进行控制
二、QoS服务模型
1、尽力而为的服务–没有应用QOS,网络的默认行为
2、集成服务–所有的中间系统和资源都显式的为流提供预定的服务,这种服务需要预留网络资源,确保网络能够满足通信流的特定服务要求。
3、区分服务–将根据服务要求将通信流分类,然后将它们加入到效率不同的队列中,使一些通信流优先于其他类别的通信流得到处理。
三、IntServ
集成服务是通过使用RSVP(Resource Reservation Protocol资源预留协议)实现的,在两个端点中间网络设备上都要启用RSVP。
工作原理–数据流在发送之前,起始节点会向网络请求特定类型的服务,并将其流量配置文件告诉网络中的每个中间节点,请求网络提供一种能够满足其带宽和延迟要求的服务。在从网络得到确认后,应用才开始发送数据。
3.1 资源预留的过程分为5步
1、数据发送方发送rsvp path控制消息,这种消息描述了将要被发送的数据的信息。
2、每个rsvp路由器收到path消息后,保存上一跳的IP地址,并继续向下发送。
3、接收站接收到rsvp path消息后,使用rsvp resv消息向上一跳路由器请求rsvp资源预留。rsvp resv消息从接收方到发送方所经过的路径与rsvp path消息到来时完全相同。
4、rsvp路由器确定是否可以满足这些rsvp请求,如果不能,则拒绝。如果可以,则预留出资源,并继续向上一跳发送出rsvp请求。
5、发送方收到rsvp请求,说明预留已经就绪,可以开始发送数据了。
路由器对数据包的处理过程:
1、准入控制
2、分类
3、策略
4、排队
5、调度
3.2 资源预留方式可分为两类:
1、独占式–适合于多个数据源同时发送的应用程序,针对每个发送方预留资源,且发送方是很清楚的。
2、共享式–适合于多个数据源不太可能同时发送的应用程序。
又可分为两种:
①共享显式(shard explicit SE)–为多个明确的源预留资源
②通配符过滤器(wildcard filter WF)–为所有源预留资源
四、DiffServ
区分服务–能够提供满足不同QOS需求的多种服务等级。不需要显示的通知网络设备。
路由器对数据包的处理是逐跳行为
缺点:没有绝对的服务保证,机制复杂。
语音进程的端口号:16384-32767之间的偶数 奇数的是控制端口,偶数的是数据端口
·确定数据流的优先顺序。对延迟敏感的流量赋予高的优先级。
如果WAN链路不发生拥塞,没有必要划分数据流的优先顺序。
如果WAN链路经常发生拥塞,划分数据流的优先顺序可能解决不了问题,更合适的解决方案是增加带宽。
·制定排队策略:
1.为所有用户提供合适的服务级别
2.节省昂贵的WAN费用
·RTP(Real-Time Protocol):实时传输协议
RTP传输多媒体应用的数据流,包括IP语音和视频(对延迟比较敏感的)
·MQC–模块化的QOS命令行
华为Qos实现方式,分为三种:
-
接口配置
如LR(路由器出、交换机入和出)、Qos gts/car、Qos queue(交换机)、Traffic-limit(交换机)
注: -
Queue Profile
老式的配置方式,路由器支持
交换机不支持,使用接口的Qos queue实现相同的功能 -
流策略MQC/CBQ :模块化的配置方式,推荐
MQC基于模块化的QoS配置 CBQ基于分类的QoS配置
流分类:根据报文的某些特性进行分类
Traffic classifier ABC operator [AND | OR] AND表示if-match中的必须全部匹配,OR表示if-match中的任意匹配 一个或多个或全部都可以。单个if-match中的多个条件永远都是OR关系
流行为:对分类的报文所做的QoS动作,比如报文过滤、重标记、流量监管、流量整形和流量队列等
流策略:将流分类和流行为绑定后形成的完整的策略应用于接口、全局和VLAN等
注:MQC的配置可以被FR CLASS调用 为我们配置QOS提供了一个统一的格式标准
五、分类和标识的方法
-
分类是以特定的优先级或预定的参数来区分帧或数据包
-
标记就是对区分出来的数据包打上相应的优先级
5.1、二层标记方法
COS–二层的服务类别
7 保留
6 保留
5 语音流量
4 视频会议
3 呼叫信令
2 高优先级数据
1 中优先级数据
0 尽力而为的传输
5.2、三层标记方法
- 有两个RFC,一个是RFC1349,只标识了前3个BIT;一个是RFC2474,使用了前6个BIT作为标识
5.2.1 传统的IPP方式
IP Precedence取前面的3个bits;后面四位也有定义,但是从未使用
D比特表示延迟要求(Delay 0表示正常延迟;1表示低延迟)
T比特表示吞吐量(Throughput 0表示正常吞吐量;1表示高吞吐量)
R比特表示可靠性(Reliability 0表示正常可靠性;1表示高可靠性)
C比特表示开销 (Cost 0表示正常开销,1表示高开销)
IP优先级–共8个分类,从0-7,0级最低,7级最高。八个级别也赋予了名称,如下所示:
0 routine
1 priority
2 immediate
3 flash
4 flash-overide
5 critical
6 internet
7 network
IPP 6(DSCP 48)已经给系统的报文使用。一般情况下,IPP 5(DSCP 40)给语音使用,IPP 4给视频来用,IPP 3给信令来用。
5.2.2 新的DSCP方式
DSCP–区分服务代码点
使用ToS字段的前6个bit,共64个不同的优先级
PHB(Per Hop Behaviors)–逐跳行为,PHB是DS节点作用于数据流的行为(forwarding和queuing method)。
网络管理员可以配置DSCP到PHB的映射关系。如果DS节点接收到一个报文,检查其DSCP,发现未定义到PHB的映射,则DS节点将采用默认的PHB(即Best Effort,DSCP=000 000)进行转发处理。每个DS节点必须该支持缺省的PHB。
EF推荐行为:
1、保证最小的延迟
2、保证带宽(带宽不足的情况下仍保持转发)
3、限制带宽(发生拥塞时,不允许超过限制的带宽,超过的流量被丢弃)
六、拥塞管理(队列技术)
6.1拥塞管理:
- 1、当接口发生拥塞时,利用拥塞管理解决资源竞争问题
- 2、拥塞管理利用队列调度策略来决定数据包处理的先后顺序
- 3、常用的队列有FIFO、RR、WRR/DRR、PQ、CQ和WFQ、CBQ等
6.1.1 FIFO(First In First Out Queue)队列:
- 按照报文到达时间的先后决定分组的转发次序,先进的先出,后进的后出,不需要进行流分类和队列调度, FIFO 关心的只是队列的长度,
队列的长度对延迟和丢包率的影响。
用户的业务流在某个路由器能够获得的资源取决于分组的到达时机及当时的负载情况。所有报文的处理方式相同,简单、高效、没有附加开销。
Best-Effort 报文传送方式采用的就是 FIFO 的排队策略。 - 如果路由器的每个端口只有一个基于 FIFO 的输入或输出队列,那么恶性的应用可能会占用所有的网络资源, 严重影响关键业务数据的传送。
所以还需要配置一些其它的队列调度机制与 FIFO 配合对流量进行调度和拥塞控制。
6.1.2 PQ队列:
- PQ 调度, 针对于关键业务类型应用设计, PQ调度算法维护一个优先级递减的队列系列并且只有当更高优先级的所有队列为空时才服务低优先级的队列。这样,将关键业务的分组放入较高优先级的队列,将非关键业务(如 E-Mail) 的分组放入较低优先级的队列, 可以保证关键业务的分组被优先传送,非关键业务的分组在处理关键业务数据的空闲间隙被传送。
- Queue 7 比 Queue 6 具有更高的优先权, Queue 6 比 Queue 5 具有更高的优先权,依次类推。只要链路能够传输分组, Queue 7 尽可能快地被服务。只有当 Queue 7 为空, 调度器才考虑 Queue 6。当 Queue 6 有分组等待传输且 Queue7 为空时, Queue 6 以链路速率接受类似地服务。当 Queue 7 和 Queue 6 为空时,Queue 5 以链路速率接收服务,以此类推。
- PQ 调度算法对低时延业务非常有用。假定数据流 X 在每一个节点都被映射到最高优先级队列,那么当数据流 X的分组到达时,则分组将得到优先服务。然而 PQ 调度机制会使低优先级队列中的报文由于得不到服务而“饿死”。例如,如果映射到 Queue 7的数据流在一段时间内以 100%的输出链路速率到达,调度器将从不为 Queue 6 及以下的队列服务。
6.1.3 WRR( Weight Round Robin)队列:
- WRR( Weight Round Robin)加权循环调度在 RR( Round Robin)调度的基础上演变而来,在队列之间进行轮流调度,根据每个队列的权重来调度各队列中的报文流。实际上, RR 调度相当于权值为 1 的 WRR 调度。
- 统计上看, 各队列中的报文流被调度的次数与该队列的权值成正比,权值越大被调度的次数相对越多。由于 WRR调度的以报文为单位,因此每个队列没有固定的带宽,同等调度机会下大尺寸报文获得的实际带宽要大于小尺寸报文获得的带宽。
- Deficit表示队列带宽的赤字,初始值为0。每次调度前,系统按权重为各队列分配带宽,计算Deficit值。如果队列的Deficit大于0,则参与此轮调度,发送一个报文,并根据所发送的报文的长度计算Deficit值,作为下一轮调度的依据。如果队列的Deficit下于0,则不参与此轮调度,当前的Deficit值作为下一轮调度的依据。
6.1.4 DRR(Deficit Round Robin)队列: Deficit 赤字; 亏损; 亏空; 不足额
-
DRR( Deficit Round Robin)调度同样也是 RR 的扩展,相对于 WRR 来言,解决了WRR
只关心报文,同等调度机会下大尺寸报文获得的实际带宽要大于小尺寸报文获得的带宽的问题, 通过调度过程中考虑了包长的因素,从而达到调度的速率公平性。 -
Deficit表示队列带宽的赤字,初始值为0。每次调度前,系统按权重为各队列分配带宽,计算Deficit值。如果队列的Deficit大于0,则参与此轮调度,发送一个报文,并根据所发送的报文的长度计算Deficit值,作为下一轮调度的依据。如果队列的Deficit下于0,则不参与此轮调度,当前的Deficit值作为下一轮调度的依据。
-
但 DRR 调度仍然没有解决 WRR 调度中低延时需求业务得不到及时调度的问题。
6.1.5 WFQ(Weight Fair Queuing)队列
公平队列FQ(Fair Queuing)的目的是尽可能公平地分享网络资源,使所有流的延迟和抖动达到最优:
不同的队列获得公平的调度机会,从总体上均衡各个流的延迟。
短报文和长报文获得公平的调度:如果不同队列间同时存在多个长报文和短报文等待发送,让短报文优先获得调度,从而在总体上减少各个流的报文间的抖动。
与FQ相比,WFQ(Weighted Fair Queue)在计算报文调度次序时增加了优先权方面的考虑。从统计上,WFQ使高优先权的报文获得优先调度的机会多于低优先权的报文。
WFQ调度在报文入队列之前,先对流量进行分类,有两种分类方式:
按流的“会话”信息分类:
-
根据报文的协议类型、源和目的TCP或UDP端口号、源和目的IP地址、ToS域中的优先级位等自动进行流分类,并且尽可能多地提供队列,以将每个流均匀地放入不同队列中,从而在总体上均衡各个流的延迟。在出队的时候,WFQ按流的优先级(precedence)来分配每个流应占有带宽。优先级的数值越小,所得的带宽越少。优先级的数值越大,所得的带宽越多。这种方式只有CBQ的default-class支持。
-
每当报文进入接口时,将上述6个因素取出来HASH,若和前面的HASH一样,则放入同一个队列。队列是否优先,取决于TOS字段的值和报文的大小。TOS值越大,报文越小,则权重越高,会优先进入到高优先级队列调度。
按优先级分类:
- 通过优先级映射把流量标记为本地优先级,每个本地优先级对应一个队列号。每个接口预分配8个队列,报文根据队列号进入队列。默认情况,队列的WFQ权重相同,流量平均分配接口带宽。用户可以通过配置修改权重,高优先权和低优先权按权重比例分配带宽。
WFQ 特点:无需用户干预,队列有多少不好说
1、基于流的队列
2、队列是动态队列
3、队列是流队列:业务流存在,队列就存在
WFQ调度特点:
1、报文size偏小
2、报文的IP precedence偏大
符合上述两个条件,优先调度。
6.1.6 CBQ(Class-based Queueing)队列
-
基于类的加权公平队列是对WFQ功能的扩展,为用户提供了定义类的支持。CBQ首先根据IP优先级或者DSCP优先级、输入接口、IP报文的五元组等规则来对报文进行分类,然后让不同类别的报文进入不同的队列。对于不匹配任何类别的报文,送入系统定义的缺省类。
CBQ提供三类队列:
EF队列:满足低时延业务
AF队列:满足需要带宽保证的关键数据业务
BE队列:满足不需要严格QoS保证的尽力发送业务EF队列
EF队列是具有高优先级的队列,一个或多个类的报文可以被设定进入EF队列,不同类别的报文可设定占用不同的带宽。
在调度出队的时候,若EF队列中有报文,会优先得到调度,以保证其获得低时延。当接口发生拥塞时,EF队列的报文会优先发送,但为了防止低优先级队列(AF、BE队列)得不到调度,EF队列以设置的带宽限速。当接口不拥塞时,EF队列可以占用AF、BE的空闲带宽。这样,属于EF队列的报文既可以获得空闲的带宽,又不会占用超出规定的带宽,保护了其他报文的应得带宽。
除了提供普通的EF队列,还支持一种特殊的EF队列—LLQ队列。两种队列都采用绝对优先调度,但是LLQ队列使用流量监管实现,不论接口是否拥塞,流量都不会超过设置的带宽,LLQ队列不缓存报文,可以将报文被发送的时延降低为最低限度。这为对时延敏感的应用(如VoIP业务)提供了良好的服务质量保证。AF队列
每个AF队列分别对应一类报文,用户可以设定每类报文占用的带宽。在系统调度报文出队的时候,按用户为各类报文设定的带宽将报文出队发送,可以实现各个类的队列的公平调度。当接口有剩余带宽时,AF队列按照权重分享剩余带宽。同时,在接口拥塞的时候,仍然能保证各类报文得到用户设定的最小带宽。
对于AF队列,当队列的长度达到队列的最大长度时,缺省采用尾丢弃的策略,但用户还可以选择用WRED丢弃策略。BE队列
当报文不匹配用户设定的所有类别时,报文被送入系统定义的缺省类。虽然允许为缺省类配置AF队列,并配置带宽,但是更多的情况是为缺省类配置BE队列。BE队列使用WFQ调度,使所有进入缺省类的报文进行基于流的队列调度。
对于BE队列,当队列的长度达到队列的最大长度时,缺省采用尾丢弃的策略,但用户还可以选择用WRED丢弃策略。
队列优缺点比较:
FIFO:队列数 1个
优点:
不需要配置,易于使用。
处理简单,延迟小。
缺点:
所有的报文,无论紧急与否,语音还是数据,均进入一个“先进先出”的队列,发送报文所占用的带宽、延迟时间、丢失的概率均由报文到达队列的先后顺序决定。
对不配合的数据源(如UDP报文发送)无约束力,不配合的数据源会造成配合的数据源(如TCP报文发送)带宽受损失。
对时间敏感的实时应用(如VoIP)的延迟得不到保证。
PQ :队列数 4个(老版本) 新版本 8个
优点:
可对不同业务的数据提供绝对的优先,对时间敏感的实时应用(如VoIP)的延迟可以得到保证。对优先业务的报文的带宽占用可以绝对优先。
缺点:
需配置,处理速度慢。
如果不对高优先级的报文的带宽加限制,会造成低优先级的报文得不到带宽。
RR :队列数 8个
优点:
可对不同业务的报文按带宽比例分配带宽。
当没有某些类别的报文时,能自动增加现存类别的报文可占的带宽。
缺点:
需配置,处理速度慢。
RR/WRR/DRR调度无法使低延时需求业务得到及时调度。
CBQ : 队列数 可配置
优点:
可对不同业务的数据提供绝对的优先,对时间敏感的实时应用(如VoIP)的延迟可以得到保证。对优先业务的报文的带宽占用可以绝对优先。
可对不同业务的报文按带宽比例分配带宽。
当没有某些类别的报文时,能自动增加现存类别的报文可占的带宽。
缺点:
需要详细的规划、后期观测经验总结(在一些复杂流量场合流量的大小是可变的),根据观察结果调整流量的带宽比例等,配置复杂。
交换机上的推荐部署方式:
PQ+WRR
PQ+DRR
PQ+WFQ
CBQ
交换机上只支持8个队列,可以将2个队列划为PQ,其它划分为WRR或DRR
路由器上的推荐部署方式:
PQ+WFQ
CBQ
路由器上IP可以支持64个队列,MPLS支持8个队列。
IP流量可以根据不同需求划分比较细致的流分类和流队列调度,灵活多变。
还有一些队列技术,可以了解一下:
如CQ、LLQ等
注:AR2220目前仅支持PQ、WFQ或PQ+WFQ
七、拥塞避免(丢包技术)
7.1 拥塞避免(Congestion Avoidance):
-
在拥塞发生或有加剧的趋势时主动丢弃报文,避免TCP的全局同步现象
-
包括尾丢弃、RED、WRED
拥塞避免主要用于RR和WFQ中,PQ是尽量避免丢包的。拥塞避免必须先有队列,才能涉及到拥塞避免。
7.1.1 传统的尾部丢包策略
传统的丢包策略采用尾部丢弃(Tail-Drop)的方法。当队列的长度达到最大值后,所有新入队列的报文(缓存在队列尾部)都将被丢弃。
这种丢弃策略会引发TCP全局同步现象,导致TCP连接始终无法建立。所谓TCP全局同步现象如图,三种颜色表示三条TCP连接,当同时丢弃多个TCP连接的报文时,将造成多个TCP连接同时进入拥塞避免和慢启动状态而导致流量降低,之后又会在某个时间同时出现流量高峰,如此反复,使网络流量忽大忽小。
特点:
- 1、不加区分的丢包
- 2、引起全局同步化:多个TCP session同时发包,一旦发现有丢包,源端将速率慢慢调至原来的一半(窗口调小)。队列空闲后,多个TCP
session又开始将速率调高, 一旦丢包,又将速率降下来,周而复始。 - 3、TCP队列利用率不高,导致TCP"饥饿":TCP速率都降低后,UDP报文依然源源充斥队列,导致TCP报文数量无法进入队列。
- 4、高延迟和高抖动
7.1.2 RED丢弃策略
为避免TCP全局同步现象,出现了RED(Random Early Detection)技术。RED通过随机地丢弃数据报文,让多个TCP连接不同时降低发送速度,从而避免了TCP的全局同步现象。使TCP速率及网络流量都趋于稳定。
7.1.3 WRED丢弃策略
流队列支持基于DSCP或IP优先级进行WRED丢弃。每一种优先级都可以独立设置报文的丢包的高门限、低门限及丢包率,报文到达低门限时,开始丢包,到达高门限时丢弃所有的报文,随着门限的增高,丢包率不断增加,最高丢包率不超过设置的丢包率,直至到达高门限,报文全部丢弃,这样按照一定的丢弃概率主动丢弃队列中的报文,从而一定的程度上避免拥塞问题。
八、流量监管和流量整形
8.1 流量的监管
- 流量监管 TP( Traffic Policing)就是对流量进行控制,通过监督进入网络的流量速率,对超出部分的流量进行“惩罚”,
使进入的流量被限制在一个合理的范围之内 ,从而保护网络资源和运营商的利益。
- Meter:通过令牌桶机制对网络流量进行度量,向 Maker 输出度量结果。
- Maker:根据 Meter 的度量结果对报文进行染色, 报文会被染成 green、 yellow、 red三种颜色。
- Action:根据 Maker 对报文的染色结果,对报文进行一些动作,动作包括:
- forward:对测量结果为“符合”的报文继续转发。
- remark+forward:修改报文内部优先级后再转发。
- drop:对测量结果为“不符合”的报文进行丢弃。
- 默认情况下, green、 yellow 进行转发, red 报文丢弃。
令牌桶术语:
1、Tc,C桶中的令牌数量
2、Te,E桶中的令牌数量
3、CIR:承诺信息速率,表示向C桶投放令牌的速率,即C桶允许传输或转发报文的平均速率。
4、CBS:承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量。
5、EBS:超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量。
8.1.1 单速双桶三色
- 单速双桶采用RFC2697的单速三色标记器srTCM(A Single Rate Three Color Marker)算法对流量进行测评,根据评估结果为报文打颜色标记,即绿色、黄色和红色。
如图1所示,为方便描述将两个令牌桶称为C桶和E桶,用Tc和Te表示桶中的令牌数量。单速双桶有3个参数:
CIR:承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率;
CBS:承诺突发尺寸,表示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;
若Te<B,报文被标记为红色,且Tc和Te都不减少。
8.1.2 双速双桶三色
- 双速双桶采用RFC2698的双速三色标记器trTCM(A Two Rate Three Color Marker)算法对流量进行测评,根据评估结果为报文打颜色标记,即绿色、黄色和红色。
如图2所示,为方便描述将两个令牌桶称为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≤Tc,报文被标记为绿色,且Tp和Tc都减少B。
8.2 流量整形(Traffic shaping)
-
流量整形是一种主动调整流量输出速率的措施,其作用是限制流量与突发,使这类报文以比较均匀的速率向外发送。流量整形通常使用缓冲区和令牌桶来完成。当报文的发送速率过快时,首先在缓冲区缓冲,在令牌桶的控制下,再均匀地发送这些缓冲的报文。
-
当下游设备接口速率小于上游设备接口速率时,在下游设备接口处可能出现流量拥塞的情况,此时用户可以通过在上游设备接口的出方向配置流量整形,将上游不规整的流量削峰填谷,输出一条比较平整的流量,从而解决下游设备拥塞问题。
处理过程
流量整形是一种用于接口、子接口或队列的流量控制技术。可以对从接口上经过的所有报文或某类报文进行速率限制。
具体处理流程如下:
- 当报文到来的时候,首先对报文进行分类,使报文进入不同的端口队列。
- 若报文进入的端口队列没有配置队列整形功能, 则直接发送该端口队列的报文;否则,进入下一步处理。
- 按用户设定的队列整形速率( CIR)向令牌桶中放置令牌:
如果令牌桶中有足够的令牌可以用来发送报文,则报文直接被发送,在报文被发送的同时,令牌做相应的减少。
如果令牌桶中没有足够的令牌,则将报文放入缓存队列,如果报文放入缓存队列时,缓存队列已满,则丢弃报文。 - 缓存队列中有报文的时候, 系统按一定的周期从缓存队列中取出报文进行发送,每次发送都会与令牌桶中的令牌数作比较, 直到令牌桶中的令牌数减少到缓存队列中的报文不能再发送或缓存队列中的报文全部发送完毕为止。
端口队列整形后, 如果该端口同时配置了端口整形, 则系统还要按照端口整形速率对报文流进行速率控制。其处理流程与端口队列整形相似,但不需要步骤1和步骤2。