QoS服务质量

QoS 服务质量

  • 差异化的服务
  • 网络带宽小于实际应用
  • 先进先出的顺序

QoS的作用

  1. 尽力而为的服务模型,当网络产生拥塞时,无法保证优先传递重要数据
  2. 网络数据的多元化,

QoS 模型

  1. 尽力而为服务模型

    在尽力而为服务模型中,所有网络设备全部都是尽自己最大努力传输数据,所有数据尽管传,不需要得到许可,有多少传多少,任何数据都不能得到保证,延迟也无法预计,所以尽力而为服务模型,其实并没有实施任何QOS,默认的网络都工作在这种模型下。

  2. 综合服务模型:能够为特定的流量保证带宽。
    先申请网络带宽,无法最大化利用网络带宽,同时,设备需要维护RSVP协议【资源预留协议】

    在实施了综合服务模型QOS的网络中,应用程序在发送数据之前,必须先向网络申请带宽。
    但是如果某些程序在连接之前没有向网络申请带宽,那么它的流量只能得到尽力而为的服务
    在综合服务模型中,重要的数据可以通过申请带宽而得到保证,但是在传送之前必须申请,也需要耗费额外一些时间。
    在申请带宽时,所用到的协议为Resource Reservation Protocol (RSVP)
    在现有的网络中,综合服务模型的QOS通常并不被采用。

  3. 区分服务模型
    先对网络流量进行分类,标记不同优先级,当网络拥塞时,网络设备根据优先级来决定转发的先后顺序

    在实施了区分服务模型QOS的网络中,网络将根据不同数据提供不同服务,因此,所有数据都被分成不同的类别,或者设置为不同的优先级,在网络发生拥塞时,网络总是先保证传输高优先级的数据,从而放弃传输低优先级的数据,但是在网络没有拥塞时,所有数据全部照常传输。

    现在的网络中,实施QOS时通常采用区分服务模型

QoS的部署方式

  1. 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头部压缩
    
  2. 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
  1. Auto-QoS:在设备,预先配置好了profile,只需要调用即可
AutoQoS VoIP支持在LAN和WAN环境部署
AutoQoS Enterprise支持在WAN接口部署
路由器可以部署企业应用QoS策略处理语音,视频和数据流量 
交换机可以通过单条命令部署QoS策略

VoIP
Enterprise

DSCP 区分服务代码点

​ 当需要使用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

QoS Mechanisms

(1) Classification 分类: 将数据分为不同的类别。

  • 分类是识别和分离不同类别的流量。
  • 流量可以通过各种方式进行分类,包括DSCP
  • Modular QoS CLI 允许通过执行策略进行分类。

(2) Marking 标记: 将数据设置为不同的优先级

  • 标记, 也被称为着色(coloring)
  • 根据不同类别的流量给每个数据包标记,使得分类的流量在网络中传输时,能够被快速识别。

(3) Congestion Management 拥塞管理: 每个接口有一个队列机制,当网络拥塞发生时,规定数据以什么样的先后顺序传输。

每个物理接口,有1个硬件队列和N个软件队列
当网络产生拥塞时,决定如何从软件队列调度数据包到硬件队列

  • 拥塞管理是根据每个数据包上的标记,以确定在哪个队列放置数据包。
  • 拥塞管理一般采用先进的队列技术,如WFQ和LLQ,以确保对时间敏感型的流量能够被优先传送,例如语音流量被首先发送。

(4) Congestion Avoidance 拥塞避免: 当网络(队列)发送拥塞时,如何丢弃数据包,避免网络产生拥塞。

  • 当预先定义的队列达到所限制的阀值,拥塞避免可能随机丢弃数据包
  • 在“更早的时候”开始丢包,拥塞避免有助于防止网络中的下游瓶颈。

(5) Policing and Shaping 管制和整形: 当用户超过额定带宽,超过的带宽不能被传输,采用其它方式来处理。
管制-丢弃超出的带宽;整形-缓存超出的带宽

  • Policing 当达到预定义的限制时,丢弃数据包
  • Shaping 当达到一个预定义的限制时,缓存超出的带宽。

(6)Link Efficiency 链路效率: 通过头部压缩或链路分段,提高带宽效率

  • 报头压缩可以显着降低语音传输相关的开销
  • 在一个IP数据流中,数据报头中很多信息是保持不变,这就为报头压缩提供基础。发送方只需在开始时,传送一个完整的报头,随后不变的部分可以不传。

Classification 分类

MQC

  1. MQC是模块化QOS配置命令集,由匹配流量、设置流量、调用策略三个部分组成;
  2. 使用ACL配合class-map来匹配流量;
  3. 使用policy-map调用class-map来设置流量;
  4. MQC可以在接口下、子接口、控制模版下调用;
  5. 数据包的优先级可以用TOS、DSCP、IP优先级三种方式来定义,他们之间可以互相转换;
  6. 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 :基于网络层的应用识别。

  • 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 可以用于分类的的应用程序

  • 静态分配的TCP和UDP端口号
  • 非UDP和非TCP IP协议
  • 连接建立过程中协商动态分配的TCP和UDP端口号(需要状态检测)
  • 子端口分类:HTTP分类 (URLs MIME or host names …)
  • MIME:多用途互联网邮件扩展类型,设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开,多用于指定一些客户端自定义的文件名,以及一些媒体文件。
  • 分类基于深度包检测和多个应用程序特定的属性(RTP payload classification)

配置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).

QoS服务质量_第1张图片

Marking 标记

Class-based marking

  • 是与MQC提供一个额外的工具,它允许静态分类标记的数据包。
  • 它可以用来标记入站或出站数据包。
  • 它可以结合任何其它出方向的QoS 特性。
  • 它可以结合任何其它进方向基于类的管制
  • 先在接口上配置CEF,才能保证基于类的数据包标记的功能都可以使用。

数据包可以打上以下标志之一:

  • IP precedence
class-map test
  match ip precedence <0-7> 

class-map  match-any test  匹配优先级为0或者为1的流量
 match ip precedence 0
 match ip precedence 1
  • IP DSCP
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的关系
  • QoS group
•	路由器内部使用标签,不会在网络种传递,而其它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
  • MPLS experimental bits
policy-map x class qosgroup  set mpls experimental topmost 5class-map test match mpls experimental topmost 5   匹配EXP的顶层标签 
  • IEEE 802.1Q or ISL CoS/priority bits
class-map test match cos <0-7>
  • Frame Relay DE bit
class-map test match fr-de
  • ATM CLP bit

配置

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

Congestion Management 拥塞管理

  • 硬件队列:每一个物理接口只有一个硬件队列
  • 软件队列

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

Congestion Avoidance 拥塞避免

当路由器接口输出队列已满时,接口发生拥塞:后续传入的数据包将被尾丢弃。被丢弃的数据包可能会导致重要应用程序的性能下降。尾丢弃有显著的缺点会出现很多问题- TCP同步- TCP饥饿- 无差别下降

RED(Random Early Detection)随机早期检测

  • 如果可以防止队列拥塞,则可以避免尾丢弃。
  • RED 就是在队列满之前,进行随机丢弃数据包的机制
  • RED 当平均队列长度增加时,丢弃率也随着增加
  • RED result:

放慢TCP的会话,发送数据包的速率接近出口带宽速率

减小平均队列(比最大队列大小要少得多)

通过随机丢弃,能够避免大量TCP会话同步

RED三种模式

无丢弃:如果平均值小于最小队列阈值,则到达的数据包排队。

随机丢弃:如果平均值介于该类型流量的最小队列阈值和接口的最大阈值之间,则根据该类型流量的数据包丢弃概率,数据包被丢弃或排队。

完全丢弃(尾部丢弃):如果平均队列大小大于最大阈值,则丢弃数据包。

WRED(Weighted Random Early Detection)基于权重随机早期检测

WRED可以使用多个不同的红色配置文件。

每个配置文件由以下内容标识:

  • 最小阈值
  • 最大阈值
  • 最大跌落概率

WRED外形选择基于:

  • IP优先级(8个配置文件)
  • DSCP(64个配置文件)

WRED比更重要的数据包更积极地丢弃不重要的数据包。

WRED可以在接口、VC或类级别应用。

CBWFQ配置

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							

Policing and Shaping 管制和整形

Policing

要限制访问资源的高速接入

限制访问某些应用程序或业务类的流量速率

第2层或第3层超过的流量做标记

应用于输入方向和输出方向

丢弃超出限制的数据包

被丢弃的TCP数据包将导致重传

支持数据包标记和重标记

减少对缓冲区的使用 (整形要求有额外的整形队列系统)

令牌桶

当网络设备衡量流量是否超过额定带宽时,需要查看令牌桶,而令牌桶中会放置一定数量的令牌,一个令牌允许接口发送或接收1bit数据(有时是1 Byte数据),当接口通过1bit数据后,同时也要从桶中移除一个令牌。当桶里没有令牌的时候,任何流量都被视为超过额定带宽,只有当桶中有令牌时,数据才可以通过接口

如果有足够的令牌可用(conform action):
从桶中取出令牌相当于分组大小。
该分组被发送

如果没有足够的令牌可用 (exceed action):
丢弃 (或标记) 数据包

单速率单桶

QoS服务质量_第2张图片

流量出现两种结果。符合CIR和超出CIR

Bc(Burst size)令牌桶的大小
Tc (Time interval)加令牌的时间,多久加一次令牌
CIR 每秒钟往桶里令牌的速率,这个速率也就决定了用户流量
CIR = Bc / Tc

单速率双桶

QoS服务质量_第3张图片

Be: 超出的突发数量(多余的数量)

Tc: 在Bc令牌桶的令牌

Te: 在Be令牌桶的令牌

返回值是conform or exceed or violate

双速率双桶

QoS服务质量_第4张图片

Tc: Token in CIR bucket

Tp: Token in PIR bucket PIR>CIR, Be>Bc

根据两个不同的速率实施流量监管:

  • Committed Information Rate 承诺信息速率
  • Peak Information Rate 峰值信息速率

管制配置

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,正常流量传输,超出流量丢弃/

Shaping

  • 预防和管理在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,超出的流量缓存/

Link Efficiency 链路效率

链路有效机制往往部署在低速的广域网链路,以增加吞吐量,降低时延和抖动

  • 报头压缩减少了数据包报头的大小。
  • 有效载荷大小不被改变。
  • Example: (基于类的)的TCP和(基于类的)RTP头压缩
  • 报头压缩增加延迟并降低串行化的延迟

TCP报头压缩和基于类的TCP报头压缩:

  • 压缩IP和TCP报头
  • 用来降低TCP报文段的开销
  • 对传输小型有效载荷和许多TCP会话连接非常有效(例如,远程登录)

RTP报头压缩和基于类的RTP头压缩:

  • 压缩的IP,UDP和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>

你可能感兴趣的:(#,路由交换,网络,网络协议,cisco)