不错的QoS总结.docx
《不错的QoS总结.docx》由会员分享,可在线阅读,更多相关《不错的QoS总结.docx(11页珍藏版)》请在冰豆网上搜索。
不错的QoS总结
一、QoS理论知识(基础)
QoS:
QualityofService
网络质量:
带宽、延迟、抖动、丢包率等
IP网络:
没有部署QoS时,FIFO,平等对待
随着网络的融合,在IP网络中存在很多种类型的数据(数据、语音、视频)
IP网络中部署QoS的几种方式:
1)BestEffort:
尽力服务(IP网络的特点,或者说根本没有部署QoS)
2)IntegratedService:
集成服务
RSVP(资源预留协议)
利用某种信令(例如RSVP)来预先申请网络资源,从而满足该应用的服务质量。
该QoS模型能最好地实现端到端(end-to-end)的服务质量
在IP网络中,集成服务是为每个数据流来保证的
缺点:
应用程序需要支持RSVP,网络设备需要记录资源申请的信息(是有状态的结构)
在大型网络中不能很方便地部署
3)DiffServ:
差别服务
对不同类型的报文进行差别对待,提供不同的服务质量。
优点:
是逐跳处理的
每一跳设备首先对报文进行分类,接着为不同类别的数据提供不同的质量
部署时可以逐步部署
应用程序无需进行更改
缺点:
无法实现与集成服务相当的端到端服务质量。
QoS的相关技术:
1)分类(Classification)
可以利用L2头信息,L3信息,L4头信息,L7信息来对报文进行分类,以便后续进行差别对待
分类是DiffServ的基础,如果没有正确的分类,就无法很好地实现DiffServ。
2)标记(Marking)
标记的目的是使得后续的设备能够更简单地进行分类。
通常是把标记打在L2头或L3头上。
L2头:
以Ethernet为例,没有空闲字段可以做标记之用。
802.1Q中,带802.1Q标签的Ethernet帧。
802.1Q的4字节中包含:
2字节的协议标识
3比特:
UserPriority(在802.1p中定义,成为CoS-ClassofService)
1比特:
CFI(在令牌环网中使用,Ethernet中该比特为0)
12比特:
VLAN_ID(表示VLANID号)
L3头:
IP头,利用ToS字段(8比特)来作为标记
3)拥塞管理机制(CongestionManagement)
即队列机制
FIFO(FirstInFirstOut,先进先出)
PQ(PriorityQueue,优先级队列)
RR(RoundRobin,轮询)
WRR(WeightedRoundRobin,加权轮询)
WFQ(WeightedFairQueue,加权公平队列)
CBWFQ(Class-BasedWFQ,基于类的加权公平队列)
LLQ(LowLatencyQueue,低延迟队列)
4)拥塞避免机制(CongestionAvoidance)
即丢包技术
Tail-Drop(尾丢包)
RED(随机早期检测)
WRED(加权随机早期检测)
5)管制(Policing)
即限速
可以将某种类别的流量进行限速,使之不超过规定的速率。
管制:
对于超出部分进行丢包或者重标记(通常是降低优先级),因此管制通常会增加丢包率。
6)整形(Shaping)
可以将某种类别的流量进行整形,使之不超过规定的速率。
整形:
对于超出部分进行缓冲,等空闲再发送,因此整形通常会增加延迟。
7)广域网链路效率机制(WANLinkEfficiency)
a)压缩
b)链路分片或交织(LFI)
二、标记
DSCP:
定义的PHB(每一跳行为)
i)为了与IPP的兼容,定义了CS0~CS7,前3个比特与IPP对应,后3个比特固定为000
ii)AF(确保转发)
AF11,AF12,AF13
AF21,AF22,AF23
AF31,AF32,AF33
AF41,AF42,AF43
在AF的PHB定义中,建议在转发报文时,AF4x>AF3x>AF2x>AF1x
对于同一个类别,AF41,AF42,AF43的报文,建议在需要丢包时,AF43的丢包概率最大,二AF41的丢包概率最小
注:
DSCP的6个比特,在AF中,其中前3个比特对应AF的类别,接下来的2个比特对应丢包概率,二最后1个比特固定为0
AF21,010010,对应的十进制18
AFxy,实际上对应的十进制值为8x+2y
iii)EF(ExpeditedForward,快速转发)
注:
设置标记为EF的报文,将来建议的处理方式是保障带宽,保证低延迟。
EF对应的二进制为101110,十进制为46
补充:
精确匹配:
MAC地址表(二层交换机转发数据)、邻接表(下一跳地址《---》接口和二层地址)
最长匹配:
IP路由表
首次匹配:
ACL、IP前缀列表、Route-map、Policy-map
语音的编码:
ITU-T
G.711一路语音,语音载荷占用带宽为64Kbps
Voice载荷
RTP头(12字节)
UDP头(8字节)
IP头(20字节)
L2头(根据不同的2层封装协议而不同)
G.723一路语音,语音载荷占用带宽为8Kbps
G.729一路语音,语音载荷占用带宽为8Kbps
视频编码:
H.263
H.264
三、拥塞管理和拥塞避免机制
1、队列技术
1)路由器的队列体系结构
2)具体的队列技术
a)FIFO
只有一个队,也就是说所有的报文是按照达到的先后顺序依次排入该队中。
思科设备:
高速接口默认是使用FIFO
低速接口默认是WFQ
硬件队列:
一定是FIFO
b)PQ(PriorityQueue,优先级队列)
总共有4个队(high、medium、normal、low),到达的报文可以根据配置排入4个队之一。
PQ的调度机制:
只要高优先级的队中有报文,一定先将其排列到硬件队列中。
只有当高优先级的队没有报文时,才会轮到下一个级别进行调度。
优点:
实现优先级
缺点:
可能饿死低优先级的队列
配置实例:
priority-list1protocoliphigh
interfacef0/0
priority-group1
上述的配置采用legacyCLI(传统QoS命令行配置),而不是MQC(模块化QoS命令行)
c)CQ(CustomQueue)
实际上就是实现了RR和WRR
CQ最多可以配置17个队(0~16),其中0保留给系统使用,用户数据通常放入1~16中。
配置实例:
queue-list1protocolip1
queue-list1queue1byte-count4000表示轮到队1时,可以发送4000字节的报文
intf0/0
custom-queue-list1
注意:
一个接口只能应用1个队列技术
d)RR(RoundRobin)
不同的报文可以排到不同的队中。
RR的调度机制:
多个队轮流调度,即第一个队发送一些报文,接着轮着第二个队,依次类推。
轮到某个队调度时,发送多少报文,可以通过权重来控制,体现不同队的优先级。
e)WRR(WeightedRoundRobin)
不同的报文可以排到不同的队中。
WRR的调度机制:
多个对轮流调度,即第一个队发送一些报文,接着轮着第二个队,依次类推。
轮到某个队调度时,发送多少报文,可以通过权重来控制,体现不同队的优先级。
f)WFQ
WFQ的目的是希望每个流都有机会得到转发,并且根据每个流的IP优先级来设置权重,权重越大,将来占用的带宽越多。
WFQ自动将数据进行分类,用户无法控制
WFQ会根据数据的流信息来进行分类,会将不同流排到不同的队列中。
WFQ采用某种hash(哈希)函数:
(源IP地址、目的IP地址、ToS字段、协议号、源/目的端口号等等)
WFQ的队列数量是可控制的,为了实现不同流都能得到传输的机会,必须让不同流排到不同队中,
因此通常需要配置WFQ的队列数量使之大于实际网络中流的数量。
假设某个网络中存在以下几个流:
flow1:
IPP=3
flow2:
IPP=3
flow3:
IPP=0
flow4:
IPP=5
flow1的权重(3+1)/((3+1)+(3+1)+(0+1)+(5+1))
由于WFQ无法让用户自行对流量进行分类,并且每个流能够占用多少带宽也是无法设置的。
因此WFQ通常用于class-default中
配置:
ints0/0
fair-queue
或
fair-queue6451216
其中64为CDT(即每个队的长度,默认为64),512为WFQ中队的数量
hold-queue2000out
指该接口下所有队的报文数量不能超过2000
在WFQ中,什么时候会丢包?
1)当该报文所属的队已经排满了
2)当该接口的所有队的报文累加起来已经达到2000,此时也会丢包
配置时一般要将队的数量大于实际网络中流的数量,16为WFQ保留给RSVP的保留队列数量(默认为0)
g)CBWFQ
CBWFQ允许用户自行定义分类,并未某种分类设定带宽值(即该类的最小带宽保证)
CBWFQ的队列数量等于类的数量,CBWFQ能为不同类保留带宽,并且允许class-default使用WFQ
缺点:
CBWFQ对于像语音这样的实时数据,无法保证低延迟。
h)LLQ(LowLatencyQueue)
CBWFQ+PQ
在CBWFQ的基础上,将PQ整合进来。
将语音排入PQ,优先转发;而其他数据放入CBWFQ队列中来调度。
注意:
由于PQ的抢占特性,可能饿死低优先级数据;
因此在LLQ中引入PQ时,做了适当的管制,即在网络拥塞时,PQ所占用的带宽不能超过设定的带宽值。
2、丢包技术
1)Tail-Drop(尾丢包)
2)WRED(加权随机早期检测WeightedRandomEarlyDetect)
注意:
WRED必须与某种队列技术配合使用(目前能够配合的包括WFQ和CBWFQ)
实例1:
class-maptest01
matchaccess-group100
class-maptest02
matchaccess-group101
policy-maptest
classtest01
bandwidth256
random-detect默认是基于IPP的
classtest02
bandwidth128
random-detectdscp-based开启WRED,基于DSCP
random-detectdscpaf11304020
接口上也可以直接配置random-detect
在VOIP中是不能使用WRED的
交换机中的拥塞管理(队列技术)和拥塞避免(丢包技术)
交换机中的队列技术已WRR(WeightedRoundRobin,加权轮询)为主
配置命令:
intf0/1
wrr-queuebandwidth1015250
设置4个队轮询的带宽比例(如果配置了priority-queueout,最后一个参数为PQ,因此不参加轮询)
wrr-queuecos-map101
wrr-queuecos-map223
wrr-queuecos-map3456
wrr-queuecos-map45
设置将不同CoS值的报文放入4个队之一
priority-queueout
设置队4为优先级队列
注意:
在Catalyst3550中,只能将队4配置为优先级队列
管制和整形
比如物理层速率为256kbps,现在希望限速64kbps
假设Tc=125ms
通过64kbps×125ms来计算每个Tc内能发送的比特数量
8000比特
31.25ms
在每个Tc内,其中31.25ms是以满速率(物理层速率)来发送数据,而接下来的93.75ms则静默。
Tc:
时间间隔
Bc:
承诺突发尺寸,指在每个Tc间隔内能够发送的比特数量
CIR:
承诺信息速率,即整形的速率。
Be:
额外的突发尺寸
正常情况下,一个Tc周期内能发送Bc比特的数据
但是如果在前一段时间所发送的数据没有达到整形的带宽(相当于发送了较少的速率),那么在接下来的一个或多个Tc间隔内发送Bc+Be的数据
BECN(后向拥塞指示)
FECN(前向拥塞指示)
R1---PVC---帧中继网络——PVC---R2
假设R1通过该PVC向R2发送数据,此时在帧中继网络中发生拥塞,它可以发送带BECN比特的帧中继报文给R1
或者发送带FECN比特的帧中继报文给R2
帧中继流量整形的自适应:
当收到BECN时,开始进行流量整形;75%×CIR
再收到BECN时,继续流量整形,并将整形速率逐步下降,直到整形速率减为mincir(该值通常为CIR×50%)
当一段时间内没有收到BECN,则整形速率逐步增加,直到恢复为CIR
示例:
shapepeak64000
实际整形的速率:
64(1+(BC+BE))=128kbps
BC=8000bitBE=8000bit
实例1:
policy-mapSHAPE
classclass-default
shapeaveragepercent50125ms
ints0/0
bandwidth128
service-policyoutputSHAPE(针对s0/0接口出流量进行整形(速率为64kbps,TC为125ms,Bc为64kbps×125ms)
实例2:
policy-mapSHAPE
classclass-default
shapepeak64000
实例3:
(结合自适应整形流量)用于帧中继
policy-mapSHAPE
classclass-default
shapeaverage64000
shapeadaptive32000
ints0/0
encapsulationframe-relay
service-policyoutputSHAPE
该接口出流量整形为64kbps,若帧中继网络持续拥塞,则整形速率会持续减少,知道32kbps(MinCir)
传统的FRTS配置
map-classframe-relayFR1
frame-relaycir64000
ints0/0
encapsulationframe-relay
frameinterface-dlci101
frame-relaytraffic-shaping
frame-relayclassFR1
基于MQC的FRTS配置
policy-mapMQC_FRTS
classclass-default
shapeaverage64000
map-classframe-relayFR2
service-policyMQC_FRTS
ints0/0
encapsulationframe-relay
frameinterface-dlci101
frame-relaytraffic-shaping注意这条命令要删除
frame-relayclassFR2
基于MQC的FRTS配置只能基于class-default,不能基于其他的class
假设CIR为64kbps,PIR为128kbps
如果使用双速率,三颜色的模型
一个报文到达,离上一个报文的时间为100ms,
此时将向Bc桶放入64kbps×100ms/8=800字节,将向Be桶放入128kbps×100ms/8=1600字节