尽力而为服务模型
在尽力而为服务模型中,所有网络设备全部都是尽自己最大努力传输数据,所有数据尽管传,不需要得到许可,有多少传多少,任何数据都不能得到保证,延迟也无法预计,所以尽力而为服务模型,其实并没有实施任何QOS,默认的网络都工作在这种模型下。
综合服务模型:能够为特定的流量保证带宽。
先申请网络带宽,无法最大化利用网络带宽,同时,设备需要维护RSVP协议【资源预留协议】
在实施了综合服务模型QOS的网络中,应用程序在发送数据之前,必须先向网络申请带宽。
但是如果某些程序在连接之前没有向网络申请带宽,那么它的流量只能得到尽力而为的服务
在综合服务模型中,重要的数据可以通过申请带宽而得到保证,但是在传送之前必须申请,也需要耗费额外一些时间。
在申请带宽时,所用到的协议为Resource Reservation Protocol (RSVP)
在现有的网络中,综合服务模型的QOS通常并不被采用。
区分服务模型
先对网络流量进行分类,标记不同优先级,当网络拥塞时,网络设备根据优先级来决定转发的先后顺序
在实施了区分服务模型QOS的网络中,网络将根据不同数据提供不同服务,因此,所有数据都被分成不同的类别,或者设置为不同的优先级,在网络发生拥塞时,网络总是先保证传输高优先级的数据,从而放弃传输低优先级的数据,但是在网络没有拥塞时,所有数据全部照常传输。
现在的网络中,实施QOS时通常采用区分服务模型
CLI:早期传统网络去部署
interface Multilink1
ip address 10.1.61.1 255.255.255.0
ip tcp header-compression iphc-format TCP头部压缩
load-interval 30
custom-queue-list 1
ppp multilink
ppp multilink fragment-delay 10
ppp multilink interleave
multilink-group 1
ip rtp header-compression iphc-format RTP头部压缩
MQC:(重点)模块化QoS
MQC可以配置对特定的数据采取特定的动作
步骤为三步:
定义流量
设置策略
应用策略
定义流量—class-map 192.168.100.0/24 192.168.200.0/24
设置策略---policy-map
应用策略---service-policy
class-map VoIP-RTP
match access-group 100
class-map VoIP-Control
match access-group 101
!
policy-map QoS-Policy
class VoIP-RTP
priority 100
class VoIP-Control
bandwidth 8
class class-default
fair-queue
!
interface serial 0/0
service-policy output QoS-Policy
!
access-list 100 permit ip any any precedence 5
access-list 101 permit tcp any host 10.1.10.20 range 2000 2002
AutoQoS VoIP支持在LAN和WAN环境部署
AutoQoS Enterprise支持在WAN接口部署
路由器可以部署企业应用QoS策略处理语音,视频和数据流量
交换机可以通过单条命令部署QoS策略
VoIP
Enterprise
当需要使用MQC的方式去部署QoS时,对流量分类之后,需要为不同的数据包打上不同的优先级,当路由器收到带有优先级的数据包,可以根据这些优先级来决定数据转发的优先顺序。
如何在数据包的包头去标记这个优先级,使用DSCP进行标记
当路由器收到带有优先级的数据包,根据数据包不同的优先级,执行不同的策略,这种行为叫做PHB(每一跳行为)
ToS:type of service总共是8bit,用于标识IP包头数据包的优先级【网络层】
CoS:class of service总共是8bit,用于标识数据帧头的优先级【数据链路层】
ToS字段,用2种方式来标记
1) IPP:使用高3bit,剩余5bit都为0
可以表示8种(2^3),0~7来表示
IPP0 IPP1 IPP2 IPP3….IPP7,值越大 优先级就越大,优先被转发
2) DSCP:使用高6bit,剩余2bit都为0,高6bit中,最后一个bit始终为0
2.1)default PHB:6个bit全0 1个类别
2.2)EF:101110 1 个类别【Expedited Forwarding 加速转发】
− 确保最小的时延(Voice、实时流量)
− 保证带宽(保证该类别流量带宽,可优先转发)
− 管制带宽(该类别流量不能超过保证带宽,超过的流量将被丢弃)
2.3)AF:12个类别【Assured Forwarding保证转发 】
− 保证带宽
− 当网络没有发生拥塞时,允许占用额外的带宽
− 四个标准类(af1, af2, af3, and af4)
AF1:001010、001100、001110 AF11 AF12 AF13
AF2:010010、001100、001110
AF3:011010、001100、001110
AF4:100010、001100、001110
2.4)CS (Class-Selector),兼容IPP,也使用高3bit,其余为0 8个类别
0~7,CS0、CS1、CS2…CS7 值越大 优先级就越大,优先被转发
ToS=IPP*32=DSCP*4
(1) Classification 分类: 将数据分为不同的类别。
(2) Marking 标记: 将数据设置为不同的优先级
(3) Congestion Management 拥塞管理: 每个接口有一个队列机制,当网络拥塞发生时,规定数据以什么样的先后顺序传输。
每个物理接口,有1个硬件队列和N个软件队列
当网络产生拥塞时,决定如何从软件队列调度数据包到硬件队列
(4) Congestion Avoidance 拥塞避免: 当网络(队列)发送拥塞时,如何丢弃数据包,避免网络产生拥塞。
(5) Policing and Shaping 管制和整形: 当用户超过额定带宽,超过的带宽不能被传输,采用其它方式来处理。
管制-丢弃超出的带宽;整形-缓存超出的带宽
(6)Link Efficiency 链路效率: 通过头部压缩或链路分段,提高带宽效率
TOS=DSCP*8=IP*64;
配置MQC
//匹配流量
access-list 100 permit ip host 1.1.1.1 host 4.4.4.4 precedence immediate
/匹配从1.1.1.1发往4.4.4.4且优先级为2的数据/
access-list 101 permit ip host 2.2.2.2 host 5.5.5.5 precedence flash-override
/匹配从2.2.2.2发往5.5.5.5且优先级为4的数据/
class-map match-all pre4 /创建类图pre4/
match access-group 100 /调用ACL 100/
class-map match-all pre2
match access-group 101
//设置流量
policy-map MQC /创建策略映射图MQC/
class pre2 /调用类图pre2/
set ip precedence 6 /设置IP优先级为6/
class pre4
set ip precedence 5
//调用策略
interface FastEthernet0/0
service-policy input MQC /调用策略映射图MQC/
interface FastEthernet1/0
service-policy input MQC
NBAR :基于网络层的应用识别。
NBAR 解决了如何分类client/server 和 web-based applications的问题。
NBAR 执行以下功能:
识别应用和协议 (Layer 4 to Layer 7)
协议发现
提供流量统计
通过 NBAR对流量进行归类,能够对这些类执行random early detection, class-based queuing, and policing QOS 的PHP行为
新的应用程序很容易支持加载PDLM(数据包描述语言模块).
NBAR 可以用于分类的的应用程序
配置NBAR
router(config-if)#ip nbar protocol-discovery
配置NBAR以发现特定接口上NBAR已知的所有协议的通信量
要求在协议发现之前启用CEF
可以在启用或不启用服务策略的情况下应用
router(config-cmap)#match protocol protocol
根据指定的协议配置类映射的匹配条件。
静态协议是根据已知的目标端口号识别的。
通过检查会话来识别动态协议(英国电信电驴)
match not命令可用于指定不用作匹配条件的QoS策略值。在这种情况下,该QoS策略的所有其他值将成为成功匹配标准。
router(config)#ip nbar port-map protocol [tcp | udp] new-port [new-port ...]
配置NBAR以使用已知端口以外的端口号搜索协议或协议名称。
最多可以指定16个附加端口号。
router(config)#ip nbar pdlm pdlm-file
指定数据包描述语言模块文件的位置,以扩展路由器的NBAR功能。
文件名采用URL格式(例如,flash://citrix.pdlm).
Class-based marking
数据包可以打上以下标志之一:
class-map test
match ip precedence <0-7>
class-map match-any test 匹配优先级为0或者为1的流量
match ip precedence 0
match ip precedence 1
class-map test 3
match dscp 1 /--匹配IPv4 和IPv6 dscp值为1--/
match ip dscp 1 /--匹配IPv4 的dscp值为1--/
class-map Mission-Critical
match ip dscp af31 af32 af33 cs3 /--CS3兼容IPP3--/ or的关系
• 路由器内部使用标签,不会在网络种传递,而其它DSCP IPP都能够往下传递。• 流量进入,打上Qos Group标记,
• 匹配该标记的流量,做策略。这样可以保证Qos Group标记不会传递下去。access-list 100 permit icmp host 1.1.1.1 host 2.2.2.2class-map qosgroup match access-group 100policy-map qosgroup class qosgroup set qos-group 123interface FastEthernet0/0 service-policy input qosgroup将1.1.1.1 ping 2.2.2.2的流量设置为qos-group 123class-map 100k match qos-group 123policy-map 100k class 100k bandwidth 100interface FastEthernet0/0 service-policy output 100kR1#show policy-map interface f0/0
policy-map x class qosgroup set mpls experimental topmost 5class-map test match mpls experimental topmost 5 匹配EXP的顶层标签
class-map test match cos <0-7>
class-map test match fr-de
配置
class-map Well-known-services match access-group 100!class-map Unknown-services match not class-map Well-known-services!policy-map set-DSCP class Well-known-services set DSCP AF21 class Unknown-services set DSCP 0!access-list 100 permit tcp any any lt 1024access-list 100 permit tcp any lt 1024 any!Interface ethernet 0/0 service-policy input set-DSCP
1) FIFO 先进先出,只有一个队列,所有数据包都是平等,硬件队列始终使用FIFO的队列技术
缺点:当网络产生拥塞时,不能保证关键业务数据被优先发送。
2) PQ 优先级队列
多个队列,有优先级,解决FIFO的问题,当网络产生拥塞时,可以优先调度高优先级的数据。
缺点:如果高优先级队列一直存在数据包,可能导致低优先级的队列出现饿死的现象。
PQ队列用于传输对时延比较敏感的流量。Voice
通告管制,进行限速,200K
3) RR 轮询队列
有多个队列,但是没有优先级,可以解决PQ队列的问题,可以保证每个队列都能够被调度。
缺点:太公平了,调度的时候无法保证调度更多的关键业务的流量
4) WRR 基于权重轮询队列
多个队列,也有优先级概念,调度的时候,每个队列调度的数据包个数不同。可以保证重要数据每次调度时,比普通流量调度的更多。
调度时,可以基于字节数或者数据包的个数来进行掉地
缺点:调度不精确
5) DRR 赤字轮询队列 ,缓解调度不精确的问题,不能根本上去解决
6) WFQ 加权公平队列
共享带宽,系统自动分配队列,根据不同的数据流,通过hash函数,将不同的数据流放入到不同的队列。根据队列的优先级,分配带宽
两种丢弃模式
0~CDT:不丢弃
CDT~HQO选择性丢弃:如果到达的数据包具备最大的FT值,则丢弃,否则不丢弃
大于HQO,始终要丢弃:如果到达的数据包具备最大的FT值,则丢弃。
如果到达的数据包不具备最大的FT值,丢弃队列中FT值最大的数据包
注:数据包越大,FT值就越大。
优先级高的数据包,长度越长,导致它的FT值更大
优先级低的数据包,长度较短,导致他的FT值更小
则容易造成高优先级的数据包被优先丢弃
解决方法:
通过虚拟包长,丢弃低优先级的流量
虚拟包长=实际包长/(优先级+1)
分母是1~8
有可能会出现除不尽
使用32384 最小公倍数来解决
默认情况下,如果接口带宽小于2.048M,运行WFQ
Queueing strategy: weighted fair
如果大于2.048M,运行FIFO
Queueing strategy: fifo
HQO默认是1000
Output queue: 0/1000/64/0 (size/max total/threshold/drops)
Router(config-if)#fair-queue 100 512 修改CDT值为100,修改动态队列个数为512Router(config-if)#hold-queue 2000 out 修改HQO值为2000 Router(config)#int f0/0Router(config-if)#fair-queue 定义该接口队列使用WFQ
当路由器接口输出队列已满时,接口发生拥塞:后续传入的数据包将被尾丢弃。被丢弃的数据包可能会导致重要应用程序的性能下降。尾丢弃有显著的缺点会出现很多问题- TCP同步- TCP饥饿- 无差别下降
放慢TCP的会话,发送数据包的速率接近出口带宽速率
减小平均队列(比最大队列大小要少得多)
通过随机丢弃,能够避免大量TCP会话同步
无丢弃:如果平均值小于最小队列阈值,则到达的数据包排队。
随机丢弃:如果平均值介于该类型流量的最小队列阈值和接口的最大阈值之间,则根据该类型流量的数据包丢弃概率,数据包被丢弃或排队。
完全丢弃(尾部丢弃):如果平均队列大小大于最大阈值,则丢弃数据包。
WRED可以使用多个不同的红色配置文件。
每个配置文件由以下内容标识:
WRED外形选择基于:
WRED比更重要的数据包更积极地丢弃不重要的数据包。
WRED可以在接口、VC或类级别应用。
access-list 100 permit ip host 1.1.1.1 host 4.4.4.4access-list 101 permit ip host 2.2.2.2 host 5.5.5.5class-map match-all R1-R4 match access-group 100class-map match-all R2-R5 match access-group 101policy-map MQC class R1-R4 priority 100 /设置为优先队列,保证带宽100K/ police 100000 /做流量管制,CIR为100K/ class R2-R5 bandwidth 100 /设置带宽保证100K/ class class-default shape average 80000 1000 1000 /做流量整形,CIR为80K/ interface FastEthernet0/0service-policy output CBWFQ
要限制访问资源的高速接入
限制访问某些应用程序或业务类的流量速率
第2层或第3层超过的流量做标记
应用于输入方向和输出方向
丢弃超出限制的数据包
被丢弃的TCP数据包将导致重传
支持数据包标记和重标记
减少对缓冲区的使用 (整形要求有额外的整形队列系统)
当网络设备衡量流量是否超过额定带宽时,需要查看令牌桶,而令牌桶中会放置一定数量的令牌,一个令牌允许接口发送或接收1bit数据(有时是1 Byte数据),当接口通过1bit数据后,同时也要从桶中移除一个令牌。当桶里没有令牌的时候,任何流量都被视为超过额定带宽,只有当桶中有令牌时,数据才可以通过接口
如果有足够的令牌可用(conform action):
从桶中取出令牌相当于分组大小。
该分组被发送
如果没有足够的令牌可用 (exceed action):
丢弃 (或标记) 数据包
流量出现两种结果。符合CIR和超出CIR
Bc(Burst size)令牌桶的大小
Tc (Time interval)加令牌的时间,多久加一次令牌
CIR 每秒钟往桶里令牌的速率,这个速率也就决定了用户流量
CIR = Bc / Tc
Be: 超出的突发数量(多余的数量)
Tc: 在Bc令牌桶的令牌
Te: 在Be令牌桶的令牌
返回值是conform or exceed or violate
Tc: Token in CIR bucket
Tp: Token in PIR bucket PIR>CIR, Be>Bc
根据两个不同的速率实施流量监管:
access-list 100 permit ip host 1.1.1.1 host 4.4.4.4 class-map match-all R1-R4 /创建类图/ match access-group 100policy-map R1-R4 /创建策略图/ class R1-R4 /调用类图/ police cir 8000 bc 1000 be 1000 conform-action transmit exceed-action drop /流量管制,速率为8000 bit,BC为1000,Be为1000,正常流量传输,超出流量丢弃/
预防和管理在ATM和在帧中继网络中,非对称带宽的流量路径。
在帧中继或ATM网络中,规范发送流量速率。
只应用于输出方向
超过的流量将被放到缓冲区,直到缓冲区满为止
超出的数据包放入缓冲区可以减少TCP的重传
不支持数据包标记和重标记
整形支持帧中继的拥塞指示
基于类的成形有两种成形方法:
整形到配置的平均速率(平均速率)
成形到峰值速率(峰值速率)
Average rate(平均速率)是以配置的平均速率转发数据包,当有额外令牌可用时,允许突发到Bc。这是更常用的方法。
峰值速率是指在每个Tc以高达Bc+Be的峰值速率转发数据包。但是,在网络拥塞期间,在CIR上方发送的流量可能会下降。在以下情况下建议峰值速率成形:
网络有额外的可用带宽
应用程序可以容忍偶尔的数据包丢失
access-list 101 permit ip host 2.2.2.2 host 5.5.5.5 class-map match-all R2-R5 match access-group 101 policy-map R2-R5 class R2-R5 shape average 8000 1000 1000/做流量整形,承诺速率为8000bit,BC为1000,Be为1000,超出的流量缓存/
链路有效机制往往部署在低速的广域网链路,以增加吞吐量,降低时延和抖动
TCP报头压缩和基于类的TCP报头压缩:
RTP报头压缩和基于类的RTP头压缩:
大多数Internet应用程序使用TCP作为传输协议。
IP (20 bytes) and TCP (20 bytes) use 40 bytes.
TCP报头压缩可以压缩到3~5个字节。
基于类的TCP报头压缩允许基于流量分类来压缩
基于类的TCP报头压缩是通过MQC配置。
class-map interactive match protocol telnet!policy-map cust1 class interactive bandwidth 64 compression header ip tcp!<output omitted>!int s0/0service-policy output cust1<output omitted>