本文主要是介绍HCIE-QOS流量监管-拥塞管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
QOS流量监管-拥塞管理
- QOS数据处理流程
- 流量限速技术-令牌桶技术
- 单桶单速双色标记法
- 双桶单速三色标记法(常用)
- 双桶双速三色标记法
- 流量监管
- 承诺访问速率
- 流量监管使用场景
- 配置基于接口的流量监管
- 配置MQC实现流量监管
- 流量整形
- 流量整形的实现 (1)
- 流量整形的实现 (2)
- 流量整形使用场景
- 基于接口配置流量整形
- 配置MQC实现流量整形
- 配置基于队列的流量整形
- 拥塞避免技术
- 拥塞的产生
- 拥塞的影响
- 拥塞避免技术
- 策略1:尾丢弃 (Tail Drop)
- 缺点1:TCP全局同步现象
- 缺点2:无差别丢弃
- 策略2:早期随机检测 (RED)
- 缓解TCP全局同步现象
- 策略3:加权随机先期检测 (WRED)
- WRED丢弃优先级
- 丢弃概率曲线
- 拥塞避免的应用
- 配置MQC实现拥塞避免
- 拥塞管理技术
- 拥塞管理技术
- 什么是队列
- 队列调度算法
- 先进先出 (FIFO)
- 严格优先级 (SP)
- 加权公平队列 (WFQ)
- 端口队列调度方式
- 三种队列的调度顺序
- 拥塞管理的应用
- 配置基于队列的拥塞管理
- 配置MQC实现拥塞管理
QOS数据处理流程
- 流量监管: 通过监控进入网络的某一流量的规格,限制它在一个允许的范围之内,若某个连接的报文流量过大,就丢弃报文,或重新设置该报文的优先级(比如限制HTTP报文不能占用超过50%的网络带宽),以保护网络资源和运营商的利益不受损害
- 流量整形: 通常是为了使报文速率与下游设备相匹配。当从高速链路向低速链路传输数据,或发生突发流量时,带宽会在低速链路出口处出现瓶颈,导致数据丢失严重。这种情况下,需要在进入高速链路的设备出口处进行流量整形。
流量限速技术-令牌桶技术
- 流量监管和流量整形均会用到令牌桶技术
单桶单速双色标记法
- 当报文到来后,直接与桶中的令牌数相比较,如果有足够的令牌就转发(通常用一个令牌关联一个比特的转发权限),如果没有足够的令牌则丢弃或缓存。
- 为方便用Tc和Te表示桶中的令牌数量,Tc和Te初始化等于CBS和EBS。
- 色盲模式下,对于单速单桶:
- 如果报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tc=Tc-B,
- 如果报文长度超过C桶中的令牌数Tc,报文被标记为红色,Tc值不变。
双桶单速三色标记法(常用)
- 当报文到来后,直接与桶中的令牌数相比较,如果有足够的令牌就转发(通常用一个令牌关联一个比特的转发权限),如果没有足够的令牌则丢弃或缓存。
- 为方便用Tc和Te表示桶中的令牌数量,Tc和Te初始化等于CBS和EBS。
- 色盲模式下,对于单速双桶:
- 如果报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tc=Tc-B,
- 如果报文长度超过C桶中的令牌数Tc但不超过E桶中的令牌数Te,则报文被标记为黄色,且Te=Te-B,
- 如果报文长度超过E桶中的令牌数Te,报文被标记为红色,但Tc和Te不变。
双桶双速三色标记法
- 主要用于处理峰值流量
- 双速率三色标记算法关注的是速率的突发,首先评估的是数据流的速率是否符合规定的突发要求,其规则是先比较P桶,再比较C桶。
- 为方便用Tc和Tp表示桶中的令牌数量,Tc和Tp初始化等于CBS和PBS。
- 色盲模式下,在对到达报文(假设数据包大小为B)进行评估时,遵循以下规则:
- 如果报文长度超过P桶中的令牌数Tp,则报文被标记为红色,且Tc和Tp保持不变。
- 如果报文长度不超过P桶中的令牌数Tp但超过C桶中的令牌数Tc,则报文被标记为黄色,且Tp=Tp-B。
- 如果报文长度不超过C桶中的令牌数Tc,报文被标记为绿色,且Tp=Tp-B,Tc=Tc-B。
流量监管
- 如图例子:
- 通过边缘网络设备连接广域网和局域网,局域网的带宽(100 Mbps)通常比广域网(2 Mbps或更低)高。
- 当局域网用户试图通过广域网发送大量数据时,在网络边缘就会发生拥塞。这种情况下,可以在网络边缘的入口处进行流量监管,限制大流量数据的速率。
- 流量监管的特点:
- 丢弃超额流量或将超额流量重标记为低优先级量
- 不需要额外的内存资源,不会带来延迟和抖动
- 丢包可能引发重传
- 可以重标记流
承诺访问速率
- 承诺访问速率,CAR(Committed Access Rate)利用令牌桶来衡量每个数据报文是超过还是遵守所规定的报文速率。
- 流量监管采用承诺访问速率CAR(Committed Access Rate)来对流量进行控制。CAR利用令牌桶来衡量每个数据报文是超过还是遵守所规定的报文速率。
- 可使用的令牌桶类型:三种均可以使用。
- 如果只是为了限制带宽,使用单速单桶。
- 如果在限制带宽的基础上,还要对输入流量的突发情况进行区分,做不同的标记处理,则使用单速双桶。注意:标记为yellow的动作一定要同标记为green的配置的不一样,否则限速效果与单速单桶一样。
- 如果在限制带宽的基础上,还要对输入流量的带宽情况进行区分,区分出带宽是小于CIR还是在CIR~PIR之间,则使用双速双桶。注意:标记为yellow的动作也要同标记为green的动作配置得不一样,否则限速效果与单速单桶一样。
流量监管使用场景
- 在企业网络中,存在语音、视频和数据等多种不同的业务,当大量的业务流量进入网络侧时,可能会因为带宽不足产生拥塞,需要对三种业务提供不同的保证带宽,优先保证语音业务的带宽,其次是视频业务,最后是数据业务,因此可以对不同业务进行不同的流量监督,为语音报文提供最大保证带宽,视频报文次之,数据报文保证带宽最小,从而在网络产生拥塞时,可以保证语音报文优先通过。
- 基于接口的流量监管
- 基于接口的流量监管是指对进入该接口的所有流量进行控制,而不区分具体报文的类型。(基于整个接口)
- 基于类的流量监管
- 基于类的CAR策略是指对进入该接口的满足特定条件的某一类或几类报文进行流量控制,而非所有报文。(基于流分类之后的)
配置基于接口的流量监管
- 流量监管一般在设备入方向执行,根据需要可在终端测或者出口设备入方向部署,流量监管一般可以基于接口配置,也可以基于MQC配置。
- 基于接口的流量监管配置思路如下:
- 在接口上配置流量监管的最大带宽,同时可以基于实际需求选择需要对哪些流量进行监管,也可以调整对于超出的流量实行的行为。
System-viewinterface [interface-type interface-num] //进入接口视图。qos car [ inbound | outbound ] [ acl acl-number | destination-ip-address | source-ip-address ] cir [cir-value] [ pir pir-value ] [ cbs cbs-value pbs pbs-value ] //在接口出或入方向配置对于特定流量的流量监管,其中CIR值必须配置,CIR表示流量监管的最大承诺速率,如果不配置PIR则PIR=CIR,流量无法高于承诺速率。
配置MQC实现流量监管
- 通过MQC可以更细致的实现流量监管,设备可以基于数据包的五元组,QoS值等信息控制流量,分配不同的带宽。
- 基于MQC的配置思路如下
- 配置Traffic classifier工具匹配流量
- 配置Traffic behavior工具定义流分类的规则
- 配置Traffic policy工具将Traffic classifier与Traffic behavior进行绑定
- 将Traffic policy应用到设备接口上
System-viewtraffic classifier [classifier-name] //创建流分类。if-match [acl | vlan-id | …. ] //基于流量特征匹配流量。System-viewtraffic behavior [behavior-name] //创建流行为。car cir [cir-value] [ pir pir-value ] [ cbs cbs-value pbs pbs-value ] //通过CIR设置最大的承诺速率,通过PIR设置最大突发速率。System-viewtraffic policy [policy-name] //创建流策略。classifier [classifier-name] behavior [behavior-name] //绑定流分类与流行为。System-viewinterface [interface-type interface-num] //进入接口视图。traffic-policy [policy-name] [inbound | outbound] //在接口入方向上应用流策略。//当基于接口配置流量监管后,可以通过以下命令查看配置结果:
System-viewdisplay qos car statistics interface [interface-type interface-num] [inbound | outbound] //查看接口上通过和丢弃报文的统计信息。//当基于MQC配置流量监管后,可以通过以下命令查看配置结果:
System-viewdisplay traffic classifier user-defined [ classifier-name ] //查看已配置的流分类信息。display traffic behavior [ system-defined | user-defined ] [ behavior-name ] //查看已配置的流行为信息。display traffic policy user-defined [ policy-name ] classifier [classifier-name ] //查看流策略的配置信息。display traffic-policy applied-record [ policy-name ] //查看指定流策略的应用记录。
流量整形
- GTS:Generic Traffic Shaping 通用流量整形
- 当从高速链路向低速链路传输数据,或发生突发流量时,带宽会在低速链路出口处出现瓶颈,导致数据丢失严重。这种情况下,需要在进入高速链路的设备出口处进行流量整形。
- 当报文的发送速度过快时,首先在缓冲区进行缓存,在令牌桶的控制下再均匀地发送这些被缓冲的报文。
流量整形的实现 (1)
- 步骤:在出队的时候,不需要整形的报文,直接转发;对于需要进行整形的报文,则先进行令牌桶评估:
- 如果数据包速率符合要求,标记为绿色,并转发。
- 如果数据包速率超标,则当前正在出队的数据包仍然转发出去,同时,将该数据包所在队列的状态改为不可调度,等令牌桶填充了新的令牌时再调度此队列。队列的状态改为不可调度后,该队列允许报文继续入队,但入队满了的时候会丢弃报文。因此,虽然流量整形使超额的数据能够从接口平滑地输出,但并不表示流量整形永远不会丢包。
流量整形的实现 (2)
- 步骤:在出队的时候,对所有队列的数据包总和进行令牌桶评估:
- 如果数据包总速率符合要求,标记为绿色,并转发。
- 如果数据包总速率超标(即令牌桶中的令牌不足),标记为红色,接口暂停调度,等令牌足够时再继续调度。
流量整形使用场景
- 企业网络中,总部与分支机构通过ISP网络使用专线相连。分支机构想要访问Internet必须通过总部。
- 如果所有分支机构同时访问Internet,可能导致访问Internet的Web流量产生拥塞,从而被丢弃。如图所示,为了防止Web流量的丢失,可以在企业分支机构的流量进入企业总部之前配置流量整形。
基于接口配置流量整形
- 流量整形只能在设备出方向配置,配置方式上可以分为基于接口的流量整形,基于队列的流量整形和通过MQC实现整形。
- 基于接口的流量整形颗粒度较粗,配置思路如下:
- 在接口出方向部署流量整形,配置最大带宽。
//基于接口配置流量整形命令如下:
System-viewinterface [interface-type interface-num] //进入接口视图。qos gts cir [cir-value] [ cbs cbs-value ] //在接口出方向配置流量整形,CIR表示整形最大速率,可根据实际需求配置CBS可以控制令牌桶大小,CIR必须配置。
配置MQC实现流量整形
- 配置MQC实现流量整形,可以通过流分类,为不同业务提供更细致的差分服务。
- MQC实现流量整形的配置思路如下:
- 配置Traffic classifier工具匹配流量
- 配置Traffic behavior工具定义流分类的规则
- 使用Traffic policy工具将Traffic classifier与Traffic behavior进行绑定
- 将Traffic policy应用到设备接口出方向上
System-viewtraffic classifier [classifier-name] //创建流分类。if-match [acl | vlan-id | …. ] //基于流量特征匹配流量。System-viewtraffic behavior [behavior-name] //创建流行为。gts cir [cir-value] | pct [pct-value] //配置流量整形,可以基于流量最大速率配置,也可以基于占用接口带宽百分比配置。System-viewtraffic policy [policy-name] //创建流策略。classifier [classifier-name] behavior [behavior-name] //绑定流分类与流行为。System-viewinterface [interface-type interface-num] //进入接口视图。traffic-policy [policy-name] [inbound | outbound] //在接口出方向上应用流策略。//配置基于队列的流量整形后,可通过以下命令查看配置结果
System-viewdisplay qos queue-profile [ queue-profile-name ] //查看队列模板的配置信息。//配置基于MQC的流量整形后,可以通过以下命令查看结果
System-viewdisplay traffic classifier user-defined [ classifier-name ] //查看已配置的流分类信息。display traffic behavior [ system-defined | user-defined ] [ behavior-name ] //查看已配置的流行为信息。display traffic policy user-defined [ policy-name ] classifier [classifier-name ] //查看流策略的配置信息。display traffic-policy applied-record [ policy-name ] //查看指定流策略的应用记录。
配置基于队列的流量整形
- 通过在接口下应用队列模板,可以实现针对各队列的流量整形。
- 针对不同的优先级队列设置不同的流量整形参数,可以实现对不同业务的差分服务。基本配置思路如下:
- 创建队列模板
- 配置队列整形
- 在接口下应用队列模板
//创建队列模板并配置队列整形
System-viewinterface [interface-type interface-num] //进入接口视图。qos queue-profile [queue-profile-name] //创建队列模板。queue [start-queue-index] to [end-queue-index ] gts cir [cir-value] [ cbs cbs-value ] //配置对于特定队列设置出方向流量整形,配置CIR设定特定队列所能使用的最大带宽。//在接口下应用队列模板
System-viewinterface [interface-type interface-num] //进入接口视图。qos queue-profile [queue-profile-name] //在接口下应用队列模板。
拥塞避免技术
- 拥塞避免:过度的拥塞会对网络资源造成损害,拥塞避免监督网络资源的使用情况,当发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整流量来解除网络的过载,通常作用在接口出方向。
拥塞的产生
- 拥塞是在共享网络上多个用户竞争相同的资源(带宽、缓冲区等)时发生的问题。
- 例如,由于广域网的带宽通常要比局域网的带宽小,当一个局域网的用户向另一个局域网的用户发送数据时,由于广域网的带宽小于局域网的带宽,数据将不可能按局域网发送的速度在广域网上传输。此时,处在局域网和广域网之间的路由器将发生拥塞。
- 拥塞经常发生于如图所示的情况:
- 速率不匹配:分组从高速链路进入设备,再由低速链路转发出去。
- 汇聚问题:分组从多个接口同时进入设备,由一个没有足够带宽的接口转发出去。
拥塞的影响
拥塞避免技术
策略1:尾丢弃 (Tail Drop)
缺点1:TCP全局同步现象
缺点2:无差别丢弃
策略2:早期随机检测 (RED)
缓解TCP全局同步现象
- 为避免TCP全局同步现象,出现了RED(Random Early Detection)技术。RED通过随机地丢弃数据报文,让多个TCP连接不同时降低发送速度,从而避免了TCP的全局同步现象。使TCP速率及网络流量都趋于稳定。
策略3:加权随机先期检测 (WRED)
WRED丢弃优先级
丢弃概率曲线
- 实际应用:
- WRED低门限百分比建议从50%开始取值,根据不同颜色的丢弃优先级逐级调整。一般推荐绿色报文设置的丢弃概率比较小,高、低门限值比较大;黄色报文次之;红色报文设置的丢弃概率最大,高、低门限值最小。
- 这样,在网络趋近拥塞时,红色报文由于设置的低门限值比较小,丢弃概率比较大,红色报文最先开始被丢弃;随着队列的长度逐渐增长,最后才开始丢弃绿色报文。如果队列长度达到相应颜色的最大门限,这种颜色的报文开始实行尾丢弃。
拥塞避免的应用
- 各地用户有可能向同一台服务器上传数据,因此用户与服务器之间的通信会经过广域网,由于广域网带宽小于局域网的带宽,位于广域网和局域网之间的边缘设备将可能发生拥塞,此时可以通过配置拥塞避免,主动丢弃优先级较低的报文(比如数据报文等),减少网络的拥塞,保证高优先级业务正常运行。
配置MQC实现拥塞避免
- 丢弃模板在流行为中绑定后,将流行为和对应的流分类在流策略下进行关联,并将此流策略应用到接口上,可以实现对匹配流分类规则的流量的拥塞避免,配置思路如下:
- 配置丢弃模板
- 配置Traffic classifier与Traffic behavior
- 使用Traffic policy工具将Traffic classifier与Traffic behavior进行绑定
- 将Traffic policy应用到设备接口出方向上
System-viewdrop-profile [drop-profile-name] //创建丢弃模板。wred [dscp | ip-precedence] //配置当前WRED丢弃模板基于DSCP优先级或IP优先级进行丢弃。dscp [dscp-value] low-limit [low-limit-percentage] high-limit [high-limit-percentage] discard-percentage [discard-percentage] //配置基于DSCP优先级的WRED参数。ip-precedence [ip-precedence-value] low-limit [low-limit-percentage] high-limit [high-limit-percentage] discard-percentage [discard-percentage] //(可选)配置基于IP优先级的WRED参数。System-viewtraffic classifier [classifier-name] //创建流分类。if-match [acl | vlan-id | …. ] //基于流量特征匹配流量。System-viewtraffic behavior [behavior-name] //创建流行为。drop-profile [drop-profile-name] //在流行为中绑定已创建的丢弃模板。System-viewtraffic policy [policy-name] //创建流策略。classifier [classifier-name] behavior [behavior-name] //绑定流分类与流行为。System-viewinterface [interface-type interface-num] //进入接口视图。traffic-policy [policy-name] outbound //在接口出方向上应用流策略。//检查基于队列的拥塞避免配置结果
System-viewinterface [interface-type interface-num]display this //查看接口下绑定的队列模板。qos queue-profile [queue-profile-name] display this //查看队列模板绑定的丢弃模板。display drop-profile [ drop-profile-name ] //查看丢弃模板的配置信息。//检查基于MQC的拥塞避免配置结果
System-viewdisplay traffic classifier user-defined [ classifier-name ] //查看已配置的流分类信息。display traffic behavior [ system-defined | user-defined ] [ behavior-name ] //查看已配置的流行为信息。display traffic policy user-defined [ policy-name ] classifier [classifier-name ] //查看流策略的配置信息。display traffic-policy applied-record [ policy-name ] //查看指定流策略的应用记录。
拥塞管理技术
- 拥塞管理:是必须采取的解决资源竞争的措施,将报文放入队列中缓存,并采取某种调度算法安排报文的转发次序,通常作用在接口出方向。
拥塞管理技术
什么是队列
队列调度算法
先进先出 (FIFO)
- FIFO不对报文进行分类。
- FIFO按报文到达接口的先后顺序让报文进入队列,在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队。
- 特点:
- 优点:实现机制简单且处理速度快。
- 缺点:不能有差别地对待优先级不同的报文。
严格优先级 (SP)
- SP:只有高优先级队列中的报文全部调度完毕后,低优先级队列才有调度机会。
- 如图:假设端口有3个采用SP调度算法的队列,分别为高优先(High)队列、中优先(Medium)队列、和低优先(Low)队列,它们的优先级依次降低。其中报文编号表示报文到达顺序。
- 在报文出队的时候,首先让高优先队列中的报文出队并发送,直到高优先队列中的报文发送完,然后发送中优先队列中的报文,直到发送完,接着是低优先队列。在调度低优先级队列时,如果高优先级队列又有报文到来,则会优先调度高优先级队列。这样,较高优先级队列的报文将会得到优先发送,而较低优先级的报文后发送。
加权公平队列 (WFQ)
- 加权公平队列WFQ(Weighted Fair Queuing)调度是按队列权重来分配每个流应占有出口的带宽。同时,为了使得带宽分配更加“公平”,WFQ以bit为单位进行调度,是bit-by-bit调度模型。
- 在报文出队的时候,首先让高优先队列中的报文出队并发送,直到高优先队列中的报文发送完,然后发送中优先队列中的报文,直到发送完,接着是低优先队列。在调度低优先级队列时,如果高优先级队列又有报文到来,则会优先调度高优先级队列。这样,较高优先级队列的报文将会得到优先发送,而较低优先级的报文后发送。
端口队列调度方式
- PQ队列
- PQ队列之间采用SP调度算法,当从队列调度报文时,先从高优先级的队列调度报文。这样,可对不同业务数据提供绝对的优先,对时延敏感的实施应用如VoIP的延时可以得到保证,对优先业务的报文带宽占用可以绝对优先。
- 缺点:报文饿死现象,如果不对高优先级的报文带宽加限制,会造成低优先级报文得不到带宽,可能得不到调度机会。
- 通常情况下,只时延敏感的业务入PQ队列。
- WFQ队列
- WFQ队列是按权重进行调度的,调度算法可以是WFQ调度算法,按权重进行剩余带宽的分配。
- LPQ队列
- LPQ队列是在高速链路(以太网)接口上实现的队列调度机制。低速链路(如Serial、MP-Group)上不支持LPQ队列。
- LPQ队列之间的调度方式与PQ队列一样,也采用SP调度。不同在于拥塞时PQ可以抢占WFQ的带宽,而 LPQ不可以抢占WFQ的带宽。在PQ和WFQ队列调度结束后,如果还有剩余带宽则分配给LPQ。
- 实际应用中,可以将BE流用LPQ进行调度。这样,在网络负载较重时,BE流可以完全被限制,优先满足其它业务。
- 所有的8个端口队列可以全部配置成WFQ,也可以全部配置成PQ,也可以全部配置成LPQ,也可以组合。
三种队列的调度顺序
拥塞管理的应用
配置基于队列的拥塞管理
- WAN接口支持PQ,WFQ,PQ+WFQ三种调度模式。拥塞管理的配置思路如下:
- 创建QoS队列模板
- 配置调度模式
- 在接口下应用队列模板
System-viewqos queue-profile [queue-profile-name] //创建队列模板。schedule pq [queue-index] | wfq [queue-index] //配置WAN接口下各队列的调度模式。interface [interface-type interface-num] //进入接口视图。qos queue-profile [queue-profile-name] //在接口下应用队列模板。
配置MQC实现拥塞管理
- MQC中的流分类提供了三种队列:
- 确保转发队列(AF)
- 加速转发队列(EF/LLQ)
- 尽力而为队列(BE)
- MQC方式的拥塞管理配置思路如下:
- 配置Traffic classifier与Traffic behavior
- 使用Traffic policy工具将Traffic classifier与Traffic behavior进行绑定
- 将Traffic policy应用到设备接口出方向上
System-viewtraffic classifier [classifier-name] //创建流分类。if-match [acl | vlan-id | …. ] //基于流量特征匹配流量。System-viewtraffic behavior [behavior-name] //创建流行为。queue af bandwidth [bandwidth | pct percentage] //在流行为中配置AF队列最小确保带宽。queue ef bandwidth [bandwidth | pct percentage] //在流行为中配置EF队列的最小带宽 。 queue llq bandwidth [bandwidth | pct percentage] //在流行为中配置LLQ队列的最大带宽 。queue wfq queue-number [total-queue-number] //在流行为中配置BE队列的WFQ调度参数。System-viewtraffic policy [policy-name] //创建流策略。classifier [classifier-name] behavior [behavior-name] //绑定流分类与流行为。System-viewinterface [interface-type interface-num] //进入接口视图。traffic-policy [policy-name] outbound //在接口出方向上应用流策略。//检查基于队列的拥塞管理配置结果
System-viewinterface [interface-type interface-num]display this //查看接口下绑定的队列模板。display qos queue-profile [queue-profile-name] //查看队列模板的配置信息。//检查基于流分类的拥塞管理配置结果
System-viewdisplay traffic classifier user-defined [ classifier-name ] //查看已配置的流分类信息。display traffic behavior [ system-defined | user-defined ] [ behavior-name ] //查看已配置的流行为信息。display traffic policy user-defined [ policy-name ] classifier [classifier-name ] //查看流策略的配置信息。display traffic-policy applied-record [ policy-name ] //查看指定流策略的应用记录。
这篇关于HCIE-QOS流量监管-拥塞管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!