在传统的IP网络中,所有的报文都被无区别的等同对待,对报文传送的可靠性、传送延迟等性能不能提供保证。
随着IP网络上新应用的不断出现,对IP网络的服务质量也提出了新的要求,例如VOIP等实时业务就对报文的传输提出了较高的要求,如果报文传输延迟太长,用户将不能接受,而相对于E-Mail和FTP业务对时间延迟并不敏感。为了支持具有不同服务需求的语音、视频以及数据等业务,要求网络能够区分出不同的通信,进而为之提供相应的服务,传统IP网络的尽力服务不可能识别和区分出网络中的各种通信类型,而具备通信类别的区分能力正是为不同的通信提供不同服务的前提,所以说传统网络的尽力服务模式已不能满足应用的需要。
Quality of Service,服务质量,QOS主要解决数据在通信中的服务质量,主要应用于VOIP业务,保证语音、视频的优先转发,保证他们的服务质量。
一. 服务质量:
服务质量包括:
① 传输的带宽
② 传输的时延和抖动
③ 数据的丢包率
1.带宽:
带宽不足解决方法:
① 升级链路:最好的解决方法,但也是最昂贵的
② 先让重要的数据通过:队列技术
③ 二层帧Payload压缩:增加了延迟,广域网低速链路,IP报头压缩:RTC/TCP头部压缩
2.时延:
时延,表示数据在传输中所产生的时间,主要包括:
① 传输时延
② 处理时延
③ 队列时延
(1)传输时延:
也称串行(hang)化时延时,在链路上从一段发送到另一端产生的延迟,无法改变。
(2)处理时延:
路由器把数据包从入接口放到出接口并处理数据包所产生的延迟,取决于路由器的性能,很难改变。
(3)队列时延:
接口上为硬件队列,先进选出,不需要做处理;当硬件队列出现拥塞时,将数据放在软件队列中,当硬件队列通畅时,在将软件队列中的数据调到硬件队列中,从软件队列中的数据调到硬件队列中产生的延迟为队列时延。
3.抖动:
由于路由器对数据包处理时间不统一,产生的延迟不一致,在出接口的数据包时延不一致,称为抖动,例如在VoIP中听到对方说话时快时慢。
4.丢包:
在UDP的传输中,没有重传机制,所以丢包相对于TCP会比较严重。
很多时候,丢包一般是因为队列满造成的,在队列满的时候,一般采用尾丢弃来进行丢包
二. QOS模型:
QOS模型主要包含三种类型:
① Best-Effort Service 好而努力模型
② Integrated Service综合服务模型
③ Differentiated Service:分化服务模型
1. Best-Effort Service:
好-努力服务,是最简单的服务模型,尽力而为的形式,网络中没有实施任何QOS的时候,为此类型。采用Fist in Fist Out(FIFO)先进先出模式。
应用程序可以在任意时候,发出任意数量的报文,而且不需要事先获得批准,也不需要通知网络。
- 优点:
a) 买不需要特殊的机制实现,通过 先进先出(FIFO)队列实现
b) 绝对公平
- 缺点:
a) 没有服务保证
b) 无服务区分
2. Integrated Service:
综合服务,在一个综合服务中,每当客户端发送报文时,需要先申请特定的服务。在申请服务成功后,所有的设备都会维护此服务带宽。
使用RSVP(资源预留)协议 ,为每一条数据流做保证(由源目IP地址、源目端口号、目标协议号五元组确定一条数据流)
- 优点:
绝对保证服务
- 缺点:
不能实现复用,维护出来的带宽既是没有特殊数据流通过,也无法给普通数据流使用,造成带宽浪费。
RSVP:
集成服务模型中心协议为RSVP,通过使用RSVP协议使得某链路端到端的为特定流量数据预留指定的带宽。并且预留的带宽不能再被其他流量数据所占用即使此特定流量数据暂时没有需要
原理:
RSVP发起端周期的发送Path消息给接收端,当接收端收到Path消息后会议Hop-by-Hop的形式发送RSVP的Reserve消息,沿途路由器一次朝着Path消息的发起端发送一致到RSVP path消息的发起端结束,一次形式通过消息中携带的信息进行沿途出方向对某特定流量的带宽预留
注1:PSVP必须要端到端部署
注2:Huawei不支持PSVP
[cisco]ip rsvp sender-host 33.1.1.1.1 11.1.1.1 tcp 23 10000 64 100----配置源11.1.1.1的目的33.1.1.1的Telnet流量预留64K
[cisco]interface f0/0
[cisco-Fast 0/0]ip rsvp bangwidth-----------绑定RSVP
注1:PSVP必须要端到端部署,所以三台路由器都要启用RSVP,R1部署Integrated Service要求后,通过RSVP协议将QOS要求通过Path信息给R2,R2收到后发送Reseve信息给R1,同理R2也会发送Path消息给R3,R3也会回复Reseve信息给R2,端到端之间建立起一条维护此条数据流的带宽
注2:Huawei不支持PSVP
3. Differentiated Service:
分化服务:基于每一跳设备,不需要申请特定的资源,也不需要维护和协商资源,具备可扩展性,当一台路由器在接收到很多不同类型的数据,使用QOS工具将数据分类,针对优先级高的优先转发。分化模型基于路由器,所以在端到端的链接时,所有的路由器都要配置相同的分化服务,不然会形成“水桶”带宽。
(1)优点:
① 不同数据区别对待,多层次化的服务成为可能
(2)缺点:
① 没有绝对的公平
② 复杂的机制
(3)工作过程:
① 对报文进行分类----------------------------分类
② 为每类报文进行标记----------------------打标
③ 为打标后的报文实施QOS策略--------应用服务策略
注:Differentiated Service模型必须要端到端部署,所有的路由器都要配置相同的QOS策略
三. 分类与标记:
1. 流量分类
流量分类及标记是部署QOS的基础,可以根据ACL、以及报文自身信息对流量进行分类;也可以基于DSCP、IP Precedence、802.1P、Mpls EXP等标记数值对流进行分类。
(1)简单流分类:
针对报文头部中的信息进行分类:
- IP报文头中的DSCP/IP-PRE值
- MPLS报文头中的EXP的EXP域值
- VLAN头报文中的802.1P值
对报文进行粗略的分类,识别出具有不同优先级或服务等级特征的流量,简单流分类的好处是直接查看前面的报头,而无需关心更高层的标识。
注:部署在DS域中的网络设备使用,对已经打标的数据流直接依据报文头部进行分类,前提为接入层设备已将原始流量进行报文头部的打标
华为设备支持配置8个DS域:
- 上行简单流分类:根据IP DSCP、MPLS EXP或802.1P将报文分为8种业务类型(CS7、CS6、EF、AF1-AF4、BE)、三种颜色(Green、Yellow、Red),从而区分不同的业务(如语音、视频、数据等)。在拥塞管理、队列调度时,不同业务进入不同的队列,得到差异化的调度。例如语音可以进入高优先级的PQ队列,保证低延时。上行若不做简单流分类,报文业务类型都为BE
- 下行简单流分类:根据内部业务类型(CS7、CS6、EF、AF1-AF4、BE)、三种颜色(Green、Yellow、Red),重新设置报文的IP DSCP、MPLS EXP或802.1P,实现了重标记的功能,重新标记IP DSCP、MPLS EXP或802.1P。下行未配置简单流分类时,IP DSCP、MPLS EXP或802.1P不做改变
简单流分类配置:
LSW2:
[Huawei]diffserv domain huawei-----------配置区分服务域
[Huawei-dsdomain-huawei]ip-dscp-inbound 63 phb ef green----将DSCP为63的数据流按照ef green策略进行转发
[Huawei-dsdomain-huawei]mpls-exp-outbound ef green map 3---将ef green3的数据流转为mpls标记为3
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]trust upstream Huawei---接口上调用
(2)复杂流分类:
是指采用复杂的规则,如综合链路层、网络层、传输层信息(例如源MAC地址、目的MAC地址、源IP地址目的IP地址、用户组号、协议类型或应用程序的TCP/UDP端口号等)对报文进行精细的分类。同城在Diff-Service域的边界路由器航对流量进行复杂流分类。
注:通常在Diff-Sverv域的边界路由器上对原始的数据流量进行复杂流分类
复杂流分类配置:
R1:
[Huawei]acl number 3000
[Huawei-acl-adv-3000]rule 5 permit udp source any destination 10.1.1.2 0 destinat ion-port eq 8090
[Huawei]traffic classifier huawei
[Huawei-classifier-huawei]if-match acl 3000
[Huawei]traffic behavior huawei
[Huawei-behavior-huawei]remark dscp ef
[Huawei]traffic policy huawei
[Huawei-trafficpolicy-huawei]classifier huawei behavior Huawei
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]traffic-policy huawei inbound
注:使用命令开启统计信息:
[Huawei-behavior-huawei]statistic enable
2. 流量标记:
每种不同类型的数据包都会预留出字节为QOS做标记:
① IPV4—DSCP
② MPLS—EXP
③ 802.1Q—User Priority
④ FR—DE
(1)IPV4—TOS:
传统IPv4数据包中,在IP报头会有1Byte用作QOS标识,主要分为两种类型:
① IP Precedence
② DSCP
① IP Precedence:
早期由RFC1349定义,在TOS字段中,只使用高3bit(5、6、7),称为IP Precedence标识,可以标识2^3=8(0-7)种类别。
② DSCP:
DiffServ Code Point,区分服务代码点,由RFC2474定义,在TOS中,使用DSCP标识优先级,为6bit,默认可以标识2^6=64(0-63)种类别。
注:华为路由器默认信任DSCP值
(2)MPLS—EXP:
标签中用EXP标识优先级 ,3bit,可以标识2^3=8(0-7)种类别,与802.1Q兼容 。
(3)802.1Q—802.1P:
8021Q使用802.1P(User Priority)标识优先级 ,3bit,可以标识2^3=8(0-7)种类别
注:华为交换机默认信任802.1P
(4)FR—DE:
帧中继网络使用DE位做QOS,如果帧中继网络出现拥塞,会将DE置位,置为1的时候会被丢弃。
表示对特定的数据流打入特定的数值,比如一个特定的数据流中DSCP打入数值标识。
(5)标记映射:
由于每种网络类型数据的标识数值不同,如果想要实现一种数据类型在另外一种网络环境的
QOS处理,此时可以配置映射表,将一种类型的标记映射成另一种类型的标记,当设备收到
数据包时,会根据标记查看映射表在响应的网络类型中打入对应的标记。
配置命令:
[Huawei-GigabitEthernet0/0/1]trust dscp override—默认不会信任外部传递过来的标签,使用此命令进行信任确认
[Huawei]qos map-table dscp-dot1p----------配置dot1q到DSCP的映射
[Huawei-maptbl-dot1p-dscp]input ef output 5---将dscp的标记5改为dot1p的5
注:
Override字段表示如果存在相同类型的映射,是否修改源映射值:
- 未配置override属性时,报文按照指定优先级映射后,报文的优先级并不修改
- 配置override属性时,报文按照指定优先级映射后,报文的802.1p值、DSCP值均被修改成映射后的值
3. PHB:
Per-Hop Behaviors,每一跳行为,数据的QOS处理在经过不同的路由器处理方式不一致,不
相同,每台路由器如何处理称为PHB。
DSCP有6位二进制位,所以可以对数据包标识64种优先级值,PHB是DS节点用于数据流
的行为,网络管理员可以配置DSCP到PHB的映射关系,如果DS节点收到一个报文,检查
其DSCP,发现未定义的PHB的映射,则DS节点将选择采用缺省PHB(000000)进行转发
处理,每个节点必须支持该缺省PHB。
(1)PHB分类:
① IP Precedence分类:
IP Precedence分类比较简单,只能表示出八种类型,数值越大越好
十进制数 |
二进制数 |
用于 |
3 |
011 |
Signaling信令 |
4 |
100 |
Video视频 |
5 |
101 |
Voice语音 |
6 |
110 |
协议报文 |
7 |
111 |
未分配 |
② DSCP分类:
在DSCP分类中,将PHB分为四种类型:
① Default PHB:默认PHB-------(BE)
② Assured Forwarding PHB:确保转发----------(AF)
③ Expedited Forwarding PHB:急速转发(语音流)-------(EF)
④ Class-Selector PHB:类选择器---------(CS)
将DSCP中的6bit分为两部分:
① 前3bit用来标识不同类型,默认可以分为8种不同类别的标识
② 后3bit用来比较丢弃值,数值越大丢弃率也越高,并且最后1bit为0
PHB分类 |
名称 |
描述 |
具体类别 |
二进制数 |
丢弃率 |
十进制数 |
BE |
默认PHB |
无差别服务,尽力转发 |
BE |
000 000 |
Low |
0 |
AF |
确保转发 |
①保证最小的延迟 ②保证带宽 ③限制带宽 |
AF1 |
001 010 |
Low |
10 |
001 100 |
Medium |
12 |
||||
001 110 |
High |
14 |
||||
AF2 |
010 010 |
Low |
18 |
|||
010 100 |
Medium |
20 |
||||
010 110 |
High |
22 |
||||
AF3 |
011 010 |
Low |
26 |
|||
011 100 |
Medium |
28 |
||||
011 110 |
High |
30 |
||||
AF4 |
100 010 |
Low |
34 |
|||
100 100 |
Medium |
36 |
||||
100 110 |
High |
38 |
||||
EF |
急速转发 |
语音流量的转发 |
EF |
101 110 |
Low |
46 |
CS |
类选择器
|
映射IPP中的1 |
CS1 |
001 000 |
=AF1 |
8 |
映射IPP中的2 |
CS2 |
010 000 |
=AF2 |
16 |
||
映射IPP中的3 |
CS3 |
011 000 |
=AF3 |
24 |
||
映射IPP中的4 |
CS4 |
100 000 |
=AF4 |
32 |
||
映射IPP中的5 |
CS5 |
101 000 |
=EF |
40 |
||
映射IPP中的6 |
CS6 |
110 000 |
协议报文使用 |
48 |
||
映射IPP中的7 |
CS7 |
111 000 |
未定义 |
56 |
(2)数据流对应PHB类型:
(3)PHB配置:
华为设备默认支持CBQ策略,称为Traffic Policy流策略
配置过程:
① 定义Traffic Classified进行流的匹配,默认为or模式,匹配任意一种即可通过,可以使用命令变为and模式必须全部匹配
② 定义Traffic behavior配置流行为,压入标记
③ 定义Traffic Policy绑定Traffic Classified和Traffic behavior,并应用于接口
①在AR1上配置复杂流分类:
将源192.168.1.2发往对端192.168.3.1UDP:3000的VOIP数据流进行DSCP分类与标记,将其标记为EF
配置:
[Huawei]acl 3000
[Huawei-acl-adv-3000]rule 5 permit udp source 192.168.1.2 0 destination
192.168.3 .2 0 destination-port eq 3000--------配置ACL进行流量匹配
[Huawei-acl-adv-3000]rule 10 permit icmp source 192.168.1.2 0
destination 192.168.3.2 0------测试使用
[Huawei]traffic classifier EF
[Huawei-classifier-EF]if-match acl 3000
[Huawei]traffic behavior EF
[Huawei-behavior-EF]remark dscp ef
[Huawei]traffic policy EF
[Huawei-trafficpolicy-EF]classifier EF behavior EF
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]traffic-policy EF inbound
②在LSW1上配置简单流分类:
在LSW1上将DSCP标记为EF的数据包映射为802.1P的5,进行快速转发
配置:
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]trust dscp--信任从G0/0/1接收过来的DSCP标签
[Huawei]qos map-table dscp-dot1p
[Huawei-maptbl-dscp-dot1p]input 46 output 5----将EF改为二层的802.1P的标记5
4. 优先级服务:
每一跳设备都有本地的服务策略,当收到一个报文,根据优先级值对齐提供对应的服务。
(1)优先级分类:
优先级分为:
① 报文优先级
② 接口优先级
② 本地优先级
① 报文优先级:
每种报文中的字段表示数据包的优先级,比如DSCP、IPP、802.1p、EXP等,路由器默认不信任报文优先级值,使用命令[Huawei-GigabitEthernet0/0/0]trust dscp信任报文优先级
② 接口优先级:
指路由器从某个接口收到报文,根据接口的优先级为此报文提供相应的服务,接口优先级默认为0,使用命令[Huawei-GigabitEthernet0/0/0]port priority 5修改接口优先级
如果需要使用接口优先级作为报文的优先级,则使用命令[Huawei-GigabitEthernet0/0/0]trust 8021p信任此优先级
③ 本地优先级:
只在本路由器中使用,本地优先级关联本地对应的服务策略,不同的优先级路由器提供不同的策略服务
本地优先级与接口优先级、报文优先级存在映射关系,使用此映射关系对报文提供差异化的质量服务
(2)优先级策略过程:
路由器从一个端口收到报文:
① 存在报文优先级,并且接口启用了相应的trust命令,则根据此报文优先级映射到本地优先级值,使用本地优先机值对应的服务质量策略提供服务
② 存在报文优先级,但是接口没有启用相应的trust命令
a) 使用接口优先级作为报文的优先级,如果接口优先级为0,则按best-effort默认处理
b) 使用接口优先级作为报文的优先级,如果接口优先级不为0,但是接口上没有启用[Huawei-GigabitEthernet0/0/0]trust 8021p,则报文依旧按照best-effort默认处理
c) 使用接口优先级作为报文的优先级,如果接口优先级不为0,并且接口上启用了[Huawei-GigabitEthernet0/0/0]trust 8021p命令,则根据此接口优先级映射到本地优先级值,使用本地优先机值对应的服务质量策略提供服务
四. 流量控制:
流量控制技术使用的工具为令牌桶,令牌桶分为:
① 单桶单速率
② 双桶单速率
③ 双桶双速率
1. 令牌桶:
(1)名词解释:
① 令牌桶:
流量监管用来做限速的容器,当路由器接收到带标记的数据时,根据标记,无需做流量监管的流量直接放行,需要做流量监管的流量会被送往令牌桶。
② 令牌:
当需要使用流量监管的流量流向令牌桶后,流量只有拿到令牌桶的令牌才能进行转发,而没有拿到令牌的流量在流量监管监管中会被丢弃,令牌桶通过使用令牌用来控制流量的监管。
③ 限流公式:
Size(令牌桶大小)=CBS(单桶模式只有CBS)+EBS(双桶模式存在CBS+EBS)
TS(时间周期)=Size(令牌桶大小)÷CIR(承诺访问速率)
例如一个桶的大小为10MB,CIR为100MB/S,时间周期T=10÷100为0.1S,表示没0.1S往桶里放10MB的令牌
- CIR:承诺信息速率,KBps/S,表示向C桶中同房令牌的速率,即C桶允许传输或转发
报文的平均速率
- TC:表示C桶中的当前剩余的令牌数量
- TE:表示E桶中的当前剩余的令牌数量
- CBS:承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量
- EBS:超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量
- TS:时间周期,表示多长时间充一次令牌,默认时间周期为S,可以使用公式重新定义
TS的间隔时间。例如定义CIR为10MB,CBS为500KB,如果一次性将10MB的令牌全部放入令牌桶,会导致令牌溢出丢掉,所以设置20次平均放入,表示时间周期由原来的1S变为50毫秒充一次,每次冲500KB。
Huawei设备最小Size桶的大小最小为1500Byte,保证一个数据帧可以通过,所以调小TS的周期,可以缓解以S为单位的突发流量
(2)令牌桶技术:
① 单桶单速双色:
单桶单速率流量监管:一个令牌桶,容量是CBS,一个填充令牌的速率是CIR。当有B字节的报文传送过来的时候,根据通的当前容量来对这个报文进行处理。
过程如下:
① 令牌桶以CIR的方式将令牌注入令牌桶。
② 在CIR单位时间内,令牌数量固定,数据包进入令牌桶:
- 如果数据包容量小于令牌桶的TC值,拿到令牌的数据颜色标记为绿色,并会被转发(conform),相应的令牌桶的TC值减去数据包的大小值。
- 如果数据包容量大于当前的TC值,数据包标记为红色,默认删除(Violate,可手工配置),TC值不减。
③ 下一个CIR单位时间到来时,会重新注入令牌,当令牌数量超出CBS桶的容量时,溢出的令牌将被丢弃。
注:CE值为当前令牌桶中剩余的令牌数量
逻辑图:
单通单速率配置:
① 接口下直接启用(AR系列不支持单桶单速率):
[Huawei]acl number 3000
[Huawei-acl-adv-3000]rule 5 permit tcp source any destination any-可不配,在car中默认匹配所有
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]qos car inbound acl 2000 cir 1000 cbs 1000000 pbs 0 green pass red discard-定义cir限速为1000KB,CBS桶的大小为1000000Byte,绿色流量通过,红色流量丢弃
② 流策略限速:
[Huawei]acl number 3000
[Huawei-acl-adv-3000]rule 5 permit tcp source any destination any
[Huawei]traffic classifier huawei
[Huawei-classifier-huawei]if-match acl 3000
[Huawei]traffic behavior huawei
[Huawei-behavior-huawei] qos car inbound acl 2000 cir 1000 cbs 1000000 pbs 0 green pass red discard
[Huawei-trafficpolicy-huawei]classifier huawei behavior huawei
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]traffic-policy huawei inbound
② 双桶单速三色:
双桶单速率流量监控:两个令牌桶,一个的容量是CBS,一个的容量是EBS,一个填充容量的速率是CIR,两个令牌桶使用同一个速率。当有B字节的报文传过来的时候,根据两个桶的当前容量对这个报文进行处理。
EBS的作用是让超出的流量用光CBS的令牌后,如果还是无法转发,会去EBS中拿令牌,双桶可以有效的转发突发的流量。
过程如下:
① 令牌桶以CIR的方式将令牌注入C令牌桶
② 在CIR单位时间内,C令牌数量固定,数据包进入令牌桶:
a) 如果数据包的大小小于令牌桶的TC值,拿到令牌的数据颜色标记为绿色,并会被转发(conform),相应的令牌桶的TC值减去数据包的大小值。
③ 下一个CIR单位时间到来时,会重新注入令牌,当令牌数量超出CBS桶的容量时,溢出的令牌将被放入EBS桶中(只会保留上一CIR单位时间内的令牌)
④ 在CIR单位时间内进入数据流量:
a) 如果数据包容量大于CBS桶中的CT值,将标记为绿色并转发(conform)
b) 如果数据包容量大于CBS桶中的CT值,此时会去比较EBS桶中的TE值,如果小于EBS的TE值,标记为黄色并转发(Exceed),EBS桶中减去相应的令牌数量
c) 如果数据包容量即大于CBD桶中的CT值,也大于EBS桶中的TE值,此时数据包标记为红色(Violate)并丢弃
注:CE值和TE值为当前令牌桶中剩余的令牌数量
逻辑图:
双桶单速率作用:
CBS优先于EBS,如果突发的流量在CRT单位时间内大于CBS中的令牌,则会使用EBS中存在令牌,转发突发流量。在转发突发流量后,此时CE值和TE值都小于两个桶的最大容量,但是充令牌只会充CBS,此时CBS是满的,但是EBS是空的,所以再一次的突发流量用光CBS后,由于EBS是空的,此时的突发流量就会被丢弃。所以双桶单速率只是有效的解决了一次单位时间内的突发流量,如果出现每时每刻都是突发流量,会被丢弃。
① 接口下直接启用(AR系列不支持单桶单速率):
[Huawei]acl number 3000
[Huawei-acl-adv-3000]rule 5 permit tcp source any destination any-可不配,在car中默认匹配所有
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]qos car inbound acl 2000 cir 1000 cbs 1000000 pbs 1000000 green pass red discard-定义cir限速为1000KB,CBS桶的大小为1000000Byte,绿色流量通过,红色流量丢弃
② 流策略限速:
[Huawei]acl number 3000
[Huawei-acl-adv-3000]rule 5 permit tcp source any destination any
[Huawei]traffic classifier huawei
[Huawei-classifier-huawei]if-match acl 3000
[Huawei]traffic behavior huawei
[Huawei-behavior-huawei] qos car inbound acl 2000 cir 1000 cbs 1000000 pbs 000000 green pass red discard
[Huawei-trafficpolicy-huawei]classifier huawei behavior huawei
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]traffic-policy huawei inbound
③ 双桶双速三色:
双桶双速率监控:两个令牌桶,一个的容量是CBS,一个的容量时PBS。这两个令牌桶分别使用两个填充令牌的速率,一个填充速率是CIR,一个填充速率是PIR,当有B字节的报文传过来的时候,根据两个桶的当前容量来对这个报文进行处理。
注:PIR一定大于CIR
过程如下:
a) PBS和CBS两桶独立,PBS以PIR速率注入令牌,溢出令牌丢弃;CBS以CIR速率注入令牌,溢出令牌丢弃
b) 数据包进入令牌桶:
- 如果数据包容量大于PBS的PE值,则直接标记为红色丢弃(Viotate)
- 如果数据包容量小于PBS的PE值,此时会比较CBS的CE值,如果小于PBS的PE值而大于CBS的CE值,数据包标记为黄色(Exceed),PBS减去相应的令牌
- 如果数据包容量小于PBS的PE值,此时会比较CBS的CE值,如果小于PBS的PE值并且小于CBS的CE值,标记为绿色进行转发(Conform),PBS和CBS减去相应的令牌
注:CE和PE表示当前CBS和PBS当前剩余的令牌数量
逻辑图:
双桶双速率作用:
某个突发流量很长一段时间不断持续的发送,为了防止此流量被丢掉,所以采用双桶双速率的方式,单位时间内都提供两倍的CIR保证连续的如法流量通过。例如CIR为10MB,而会经常有连续的突发流量为12MB,为了保证这种连续的突发流量传输,所以此时采用双桶双速率的模式(20MB)保证此连续的突发流量通过。
2. 流量监管:
Traffic-policing,限速技术,是一种在入接口或出接口应用的对进入路由器的某流量进行限制的流量管理技术。
对于ISP来说,对用户送入网络中的流量进行控制是十分必要的。对于企业网来说,对某些流量进行控制也是一个有力的控制网络状况的工具。
流量监管的典型应用就是监督进入网络的某一流量的规格把它限制在一个合理的范围之内,或者对超出的部分流量进行“惩罚”,以保护网络资源和运营商的利益。在报文满足一定的条件时,如果某个连接的报文流量过大,流量监管就可以对该报文采取不同的处理动作,例如丢弃报文。
网络管理者可以使用约定访问速度(Committed Access Rate)来对流量进行控制,流量监管技术使用的令牌桶技术为双桶单速或双桶双速,不支持单通单速。,可以应用在接口的入方向和出方向
① 接口下直接启用:
[Huawei]acl number 3000
[Huawei-acl-adv-3000]rule 5 permit tcp source any destination any-可不配,在car中默认匹配所有
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/0]qos car inbound acl 3000 cir 2000 pir 4000 cbs 1500000 pbs 1500000 green pass yellow pass red discard
② 流策略限速:
[Huawei]acl number 3000
[Huawei-acl-adv-3000]rule 5 permit tcp source any destination any
[Huawei]traffic classifier huawei
[Huawei-classifier-huawei]if-match acl 3000
[Huawei]traffic behavior huawei
[Huawei-GigabitEthernet0/0/0]qos car inbound cir 2000 pir 4000 cbs 1500000 pbs 1500000 green pass yellow pass red discard
[Huawei-trafficpolicy-huawei]classifier huawei behavior huawei
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]traffic-policy huawei inbound
3. 流量整形:
traffic shaping,流量整形的典型作用就是限制流出某一网络的某一连接的流量与突发,
使这类报文以比较均匀的速度向外发送。流量整形通常使用缓冲区或队列和令牌桶来完
成,当报文的发送速度过快时,首先在缓冲区或队列进行缓存,在令牌桶的控制下,在
均匀的发送这些缓存的报文。
(1)GTS:
流量整形使用的技术为GTS,Generic traffic shaping 通用流量整形。GTS使用的令牌桶技术
为单桶单速,只对出接口有作用。
在做了流分类的情况下,做了GTS分类的数据进入GTS队列,进入令牌桶,拿到令牌的数据将被转发。
而此时没有拿到令牌的数据,会依旧存放在GTS队列中,等待令牌桶下一次存放令牌之后,再从GTS队列中进入令牌桶拿令牌,如果此时依旧没有拿到令牌,他会再次被存放在GTS队列中,继续等待下一次令牌桶中的令牌,直至拿到令牌被转发出去。但是GTS队列的大小(CF卡)有限制的,所以不能存放连续长时间的突发流量。
注:Huawei的GTS队列为FIFO,与接口的FIFO不为同一队列,采用尾丢弃的丢弃机制,可以手工配置长度(Cisco为WFQ)
流量监管和流量整形的区别:
对于流量监管技术,超出的数据会被丢弃,相对于比较重要的突发流量,如果采用令牌桶技术可能导致重要数据的丢失,所以采用流量整形技术,将超出的流量来不及转发的数据存放起来,在端口有带宽时再转发。
(2)流量整形分类:
① FRTS:
帧中继网络整形
② GTS:
基于接口:
在接口下直接调用GTS技术,对当前接口所有的数据进行流量整形
[Huawei-GigabitEthernet0/0/0]qos gts cir 2000
基于队列:
华为设备默认支持0-7共八个队列(很老的队列技术,类似于管道),可以基于每种队列定义不同的整形技术,以及队列调度技术,丢弃技术,默认八个队列的调度技术为公平WFQ,无差异行为
[Huawei]qos queue-profile huawei---------------定义QOS模板huawei
[RouterA-qos-queue-profile-huawei] schedule pq 6 to 7 wfq 0 to 5—定义队列调度机制
[Huawei-qos-queue-profile-huawei]queue 0 to 2 gts cir 5000—队列0到2为5MB
[Huawei-qos-queue-profile-huawei]queue 0 to 2 length bytes 10000—定义队列长度
[Huawei-qos-queue-profile-huawei]queue 0 to 2 weight 99—定义权重值
基于流:
[Huawei-acl-basic-2000]rule 5 permit source 192.168.2.1 0
[Huawei]traffic classifier qos
[Huawei-classifier-qos]if-match acl 2000
[Huawei]traffic behavior qos
[Huawei-behavior-QOS]gts cir 1000 cbs 1000000 queue-length 1000 –定义gts缓存队列长度
[Huawei]traffic policy qos
[Huawei-trafficpolicy-qos]classifier qos behavior qos
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]traffic-policy qos outbound
③ Switch LR整形:
在华为设备中,交换机的出方向配置LR为流量整形,入方向为监管,所以可以使用在出方向使用LR技术在交换机上做整形。
④ 自适应流量整形:
流量整形主要是为了解决下游设备的接口速率小于上游设备的接口速率,从而导致下游设备接口入方向丢包的问题,但有些场景下,下游设备的接口速率是不确定的,上游设备无法确定应该时把流量整形参数设置多少,此时可以皮遏制自适应模板来实现自适应的流量整形,通过在上游设备和下游设备间开启NQA检测,根据NQA检测到的下游设备丢包率动态调整整形参数。
a) NQA:
Network Quality Analysis,网络质量分析,是设备上集成网络检测功能,不仅可以实现对网络运行情况的准确测试,输出统计信息,有效的节约成本。
NQA可以检测网络上运行的各种协议的性能,时运营商能够实时采集到各种网络运行指标,例如:HTTP的总时延、TCP连接时延、DNS解析时延、文件传输时延、FTP连接时延、DNS解析错误等等。
对于上述诸多类业务特性的检测,NQA时通过穿件测试例来完成的。NQA把测试两端称为客户端和目的端,并在客户端发起测试,目的端接收报文后,返回给源端相应的回应信息。根据返回的回应信息,就可以了解相应的网络状况。
b) 自适应模板:
- NQA测试例:通过此测试例检测下游设备接口入方向丢包率,根据检测结果调整整形参数
- 整形速率范围:上游设备接口出方向的整形速率上下限,整形速率在此范围内动态调整
- 整形速率调整步长:动态调整整形速率时,每次调整的速率大小
- 丢包率范围:下游设备接口入方向允许的丢包率范围,当丢包率在此范围之内时,不调整整形速率;当丢包率过大,减少上游设备整形速率;当丢包率过小,且上游设备发生拥塞,增大上游设备整形速率
- 整形速率增大的时间间隔:当丢包率在阀值附近频繁变化时,就需要频繁调整整形速率,用户可以设置此参数,限制增大整形速率的时间间隔,避免频繁更新
注:NQA检测到丢包率过大,为避免业务数据进一步丢失,立即减小整形速率,不需要满
足时间间隔的需求
c) NQA自动调整要求:
触发条件(必须同时满足) |
动作 |
连续3次检测丢包率大于自适应末班配置的丢包率上限 |
减小整形速率 |
|
增大整形速率 |
|
保持当前整形速率 |
丢包率在自适应模板配置的丢包率范围内 |
|
检测失败 |
d) NQA配置:
企业总部的业务通过Router A的接口G0/0/1连接到Internet,并通过3G网络连接到分支接口Router B,从而实现总部和分支的通信。由于分支使用3G网络接入,链路带宽不稳定,企业希望总部发送报文的速率能够随3G链路带宽变化动态调整,以减少3G网络中带宽抖动。同时,企业总部发送分支的报文中,数据,视频和语音报文的DSCP优先级分别为af11、af21和ef,企业希望语音报文能够保证优先转发,视频、数据报文能够保证带宽。
Router A:
- 配置客户端信息:
[Huawei]nqa test-instance admin test---配置NQA管理员名称和实例名称
[Huawei-nqa-admin-test]test-type jitter---测试类型为抖动
[Huawei-nqa-admin-test]destination-address ipv4 192.168.2.2—测试server
端地址
[Huawei-nqa-admin-test]destination-port 9000---测试server端口号
[Huawei-nqa-admin-test]start now------开始时间为总是
- 配置自适应模板:
[Huawei]qos adaptation-profile huawei---定制自适应模板为huawei
[Huawei-qos-adaptation-profile-huawei]rate-range low-threshold 128 high-threshold 512—配置整形速率范围下限为128,上限为512
[Huawei-qos-adaptation-profile-huawei]rate-adjust step 32-配置整形速率调整步长
[Huawei-qos-adaptation-profile-huawei]rate-adjust loss low-threshold 20 high-threshold 30—配置丢包率
[Huawei-qos-adaptation-profile-huawei]track nqa admin test—绑定nqa
- 接口下应用自适应模板:
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]tracknqa admin test—接口下调用
Router B:
[Huawei]nqa-server udpecho 192.168.2.2 9000---配置server端B的地址,采用UDP端口9000进行NQA回复
(3) 网络常用整形部署方案:
AR2为ISP,会使用限速技术限制接入方的传输带宽,通常情况下,接口物理带宽大于实际网络带宽,所以AR1会将数据包以1000MB/S的速度传给AR2,但AR2上存在限速技术,超出CIR的数据流会被丢弃,所以可以直接在AR1上启用整形,限制送出的报文带宽,超出的报文缓存起来等待发送,防止重要的报文丢弃,如果数据包中存在语音数据包,这种低延迟的数据包想要实现优先调度,所以需要对缓存中的数据实行队列调度技术
a) 使用MQC配置:
-------------------------首先配置CBQ对缓存中的流实行队列调出--------------------------------------------
[Huawei]traffic classifier af
[Huawei-classifier-af]if-match acl 2000
[Huawei]traffic behavior af
[Huawei-behavior-af]queue af bandwidth pct 30
[Huawei]traffic classifier ef
[Huawei-classifier-af]if-match acl 2001
[Huawei]traffic behavior ef
[Huawei-behavior-af]queue ef bandwidth pct 40
[Huawei]traffic policy CBQ
[Huawei-trafficpolicy-CBQ]classifier af behavior af
[Huawei-trafficpolicy-CBQ]classifier ef behavior ef
--------------------------------------对接口进行GTS限速,并嵌套CBQ队列策略-------------------------------
[Huawei]traffic classifier huawei
[Huawei-classifier-huawei]if-match any
[Huawei]traffic behavior huawei
[Huawei-behavior-huawei]gts cir 10000 cbs 400000 queue-length 2048
[Huawei-behavior-huawei]traffic-policy CBQ---超出的流量使用CBQ队列技术
[Huawei]traffic policy huawei
[Huawei-trafficpolicy-huawei]classifier huawei behavior huawei
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]traffic-policy huawei outbound
b) 使用LR直接限速并整形(只适用于交换机):
-------------------------首先配置CBQ对缓存中的流实行队列调出--------------------------------------------
[Huawei]traffic classifier af
[Huawei-classifier-af]if-match acl 2000
[Huawei]traffic behavior af
[Huawei-behavior-af]queue af bandwidth pct 30
[Huawei]traffic classifier ef
[Huawei-classifier-af]if-match acl 2001
[Huawei]traffic behavior ef
[Huawei-behavior-af]queue ef bandwidth pct 40
[Huawei]traffic policy CBQ
[Huawei-trafficpolicy-CBQ]classifier af behavior af
[Huawei-trafficpolicy-CBQ]classifier ef behavior ef
-----------------------------------对接口进行LR限速整形,并嵌套CBQ队列策略-----------------------------
[Huawei-GigabitEthernet0/0/1]qos lr cir 10000 cbs 400000—限速整形
[Huawei-GigabitEthernet0/0/1]traffic-policy huawei outbound
4. 流量限速:
Line Rate,LR限制的时接口发送报文的总速率(包括协议报文)。LR使用的令牌技术为单通单速,不允许突发流量的通过。
接口启用LR后,拿到令牌的数据流进行转发,没有拿到令牌的进入接口的软件队列(WFQ等队列)
LR配置:
① 华为路由器只能在出接口配置LR,只能做限速行为,超出流量的数据包会被drop掉
② 华为交换机既可以在出接口配置LR,也可以在入接口配置,含义不同
a) 在入接口配置,LR只能进行流量监管
b) 在出接口配置,LR则为流量整形。
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]qos lr pct 10 cbs 150000---配置占用百分比
交换机LR配置:
① 入方向配置:
[Huawei-GigabitEthernet0/0/2]qos lr inbound cir 2000—将接口限速为2000kB
出方向配置:
[Huawei-GigabitEthernet0/0/2]qos lr inbound cir 2000—接口流量整形,限速为2000kB
五. 拥塞管理:
流量从高速端口流向低速端口会在低速端口上产生拥塞,拥塞管理是指网络在发生拥塞时,如何进行管理和控制。处理的方法是使用队列调度技术。将所有要从一个接口发出的报文进入多个队列,按照各个队列的优先级进行处理。通过适当的队列调度机制,可以优先保证某种类型的报文的QOS参数,例如带宽、时延、抖动等。
当硬件队列出现拥塞时才会启用软件队列,所以判断是否需要做拥塞关系技术的时候,查看所跑的流量是否大于端口的(物理)带宽,而不是逻辑带宽(对端的ISP路由器接口限速的带宽)。
调度基于包的个数,每次调度时不根据字节,而是根据每次走多少个数据包。
调度算法:
① RR 轮询
② WRR 按权重轮询
③ DRR赤字轮训
队列技术有:
① FIFO先进先出队列
④ PQ 优先级队列
⑤ CQ 自定义队列
⑥ WFQ 加权公平队列
队列技术 |
调度的时延/抖动 |
公平性 |
FIFO |
差 |
无 |
RR |
差 |
依赖包长 |
WRR |
差 |
依赖包长 |
PQ |
高优先级队列的实验控制非常好 |
无 |
CQ |
配置字节数小的时候,带宽分配不准确 配置字节数大的时候,时延抖动比较大 |
一般 |
WFQ |
时延控制较好,抖动小 |
好 |
1. 队列算法:
(1)RR:
Round Robin,轮询,是一种简单的调度方法,采用轮询的方式,对多个队列进行调度,RR以环形的方式轮询多个队列。如果轮询的队列不为空,则从该队列取走一个报文;如果该队列为空,则直接跳过该队列,调度器并不等待。
注:RR的调度是以个数为单位的,只要一个队列中还存在剩余空间,则继续会放行此队列的数据包,但如果一个数据包的长度大于RR的值,此时会将包全部调出,并不是绝对公平
① 优点:
a) 隔离了不同的流,实现了队列之间对带宽的平等利用
b) 剩余带宽能够被其他队列平均分配
② 缺点:
a) 对于一些重要的数据或比较敏感的数据不会提供优先送出的特权
b) 轮询队列并不是绝对公平的,基于包调度,包的大小不一,所以不是完整的公平
(2)WRR:
Weighted Round Robin,按权重轮询队列,也是一种调度算法,主要针对RR不能设置权重的不足,在轮询的时候,每个队列享受的机会和该队列的权重成对比。WRR对于空的队列直接跳过,调度一周接受的时间变短,因此当某个队列的流量晓得时候,剩余带宽能够被其他队列按比例占用。(Huawei二层设备接口缺省使用的队列调度机制,按照字节调度)
权重值人为配置,定义出所有队列的权重值后,使用硬件队列带宽÷所有权重值之和,每个队列在×自身权重值,便会得出当前每次轮询每个队列应该保证的带宽值,huawei设备每次轮询时每个队列减去相应带宽的包
① WRR优点:
a) 能够按照权重来分配带宽,某个丢咧的剩余带宽能够为其他队列公平占用,低优先级的队列同样能够得到调度,不存在饥饿的问题
b) 实现简单、复杂度低
c) 适合diffserv聚合后的端口
② WRR缺点:
a) 与RR调度算法一致,在报文长度不一致的时候,依旧无法解决调度不准确的问题
b) 在调度速率低的时候报文的时延控制的不好,时延抖动无法预期
(3)DRR:
赤字轮训,用于解决RR和WRR无法解决调到不准确的问题。当第一次轮询时,如果数据包的长度不一,会使用惩罚机制,下次调度时减少调度。
2. 队列技术:
(1)FIFO:
First in First out,先进先出,默认为此队列,从接口输出的报文,按照到达的先后顺序进入接口的FIFO队列,调度器按照先进先出的原则,从队首开始,一次发送报文,所有的报文在发送过程中,没有任何区别,也不对报文传送的质量提供任何保证。
FIFO关心的就是(软件)队列长度问题,队列长度会影响到时延、抖动、丢包率等,因为队列长度是有限的,有可能被填满,这就涉及到该机制的丢弃原则,FIFO使用的时尾丢弃机制,如果定义了较长的队列长度,俺么队列不容易被填满,被丢弃的报文也就少了,但是队列长度太长会出现时延的问题,一般情况下时延的增加会导致抖动也增加;如果定义了较短的队列,时延的问题可以得到解决,但是发生尾丢弃的报文也就变多了。类似的问题其它排队方法也存在。
① 调度方式:先进先出
② 队列数目:一个队列
③ 丢弃方式:尾丢弃
注:尾丢弃机制简单的说就是如果该队列已经满了,那么后续进入的报文被丢弃,而没有什么机制来保证后续的报文可以挤掉已经在队列内的报文。
④ FIFO的优点:
- 简单
⑤ FIFO的缺点:
- 没有公平性,不同的流之间不相互隔离,当某一个流的带宽太大的时候会占用其他流的带宽,并且造成其他流的时延增加
- 当拥塞发生的时候,FIFO对一部分保温进行丢弃,TCP的连接发现丢包后,会降低传输的速度,来主动的避免拥塞,但是UDP时非连接的,不降低发送速率,导致FIFO中TCP和UDP的报文不平衡,TCP的流量太低
- 一条流的突发流量可能占用全部Buffer(缓冲区),将其他的流量全都阻断
⑥配置命令:
[SRG-GigabitEthernet0/0/0]qos fifo queue-length 200---修改FIFO队列长度
注:AR系列无法看到
Urgent queue:紧急队列,链路层的协议报文,例如PPP的协商报文和Keepalvie报文等进入这个队列
Protocol queue:协议队列,IPP优先级为6的报文将进入协议队列
FIFO:普通的报文进入此队列
后续数值(0/50/0):
Size:队列中的分组数
Length:用分组数比奥斯的最大队列的长度
Discards:由于队列已满而丢失的分组数
(2)PQ:
Priority Queuing,优先级队列,是一种按照严格优先级进行调度的队列。PQ对队列划分等级,只有高优先级的队列排空之后才会从低一级的队列调度报文,这样重要的业务比其他业务提前获得服务。
四种不同优先级的队列:分别为“High”“Medium”“normal”“Low”,以此从上往下,如果high队列中的有数据包,优先走high中的数据包,如果high队列中没有数据包,再走medium,一次往下,完全看优先级。
① 丢弃方式:
a) 尾部丢弃
② 特点:
a) 可以使用acl对报文进行分类,根据需要将报文入队列
b) 报文丢弃策略采用尾丢弃,且只有这一种机制
c) 队列长队可以设置为0,表示该队列无穷大,即进入该队列的报文不会被尾丢弃机制丢弃,除非内存耗尽
d) 每种队列内部使用FIFO逻辑
e) 当从队列调度报文时,先从高优先级的队列调度报文
③ 优点:
a) 高优先级队列的时延控制非常好
b) 实现简单,能够区分多种业务
④ 缺点:
a) 无法做到带宽的合理分配,高优先级的流量比较大的时候,导致低优先级的流量“饿死问题”
b) 高优先级的时延得到保证的代价实习生低优先级的时延
c) 如果高优先级传送TCP流量,低优先级传送UDP流量,则TCP增加传送速率,导致UDP流量无法得到足够的带宽
⑤ PQ配置:
AR1(防火墙模拟):
[SRG]acl number 3000
[SRG-acl-adv-3000]rule 5 permit udp source 192.168.1.2 0 destination 192.168.3.2 0 destination-port eq 8090
[SRG]acl number 3001
[SRG-acl-adv-3001]rule 5 permit tcp source 192.168.1.2 0 destination 192.168.3.2 0 destination-port eq 80
[SRG]qos pql 1 protocol ip acl 3001 queue top-定义qos pql策略1,协议类型为ip,基于acl 3001的流量放入top队列中(也可基于标记)
[SRG]qos pql 1 queue top queue-length 50---定义top长度为50字节
[SRG]qos pql 1 protocol ip acl 3001 queue bottom
[SRG]qos pql 1 queue bottom queue-length 50
[SRG]inter s4/0/0
[SRG-SigabitEthernet4/0/0]qos pq pql 1----出接口上调用
(3)CQ:
Custom Queuing,自定义队列,可以支持17个队列,队列0用于系统队列,队列0和其他队列之间是SP的关系,只有队列0排空之后才能为其他队列提供服务,队列0一般用于协议报文。队列1至16没有优先级关系,采用轮询的方式,每次调度的时候从队列中调度固定字节数(预先配置),在轮询下一个队列之前,将数据包发送出去,。当某个队列已经调度了规定的字节数,或者该队列已经为空,则轮询下一个队列。
① 丢弃技术:
a) 尾丢弃
② 优点:
a) 按照比例来分配带宽,当某个队列的流量小的时候,其他队列能等比的占用带宽
b) 实现简单
③ 缺点:
a) 当配置字节数小的时候,带宽分配不准确,当配置字节数大的时候,时延抖动比较大
b) 采用轮询队列,存在调度不准确的问题
④ CQ配置:
[SRG]acl number 2000
[SRG-acl-basic-2000]rule 5 permit source 192.168.1.2 0 description 192.168.4.2 0
[SRG]acl number 2001
[SRG-acl-basic-2001]rule 5 permit source 192.168.2.2 0 description 192.168.4.2 0
[SRG]acl number 2002
[SRG-acl-basic-2002]rule 5 permit source 192.168.3.2 0 description 192.168.4.2 0
[SRG]qos cql 1 protocol ip acl 2000 queue 1---配置CQ策略1协议类型为ip匹配acl2000的流量放入队列1中
[SRG]qos cql 1 protocol ip acl 2001 queue 2
[SRG]qos cql 1 protocol ip acl 2002 queue 3
[SRG]qos cql 1 default-queue 4-------将没有匹配的流量放入缺省队列中
[SRG]qos cql 1 queue 1 queue-length 250---配置队列的长度
[SRG]qos cql 1 queue 2 queue-length 200
[SRG]qos cql 1 queue 3 queue-length 150
[SRG]qos cql 1 queue 4 queue-length 100
[SRG]qos cql 1 queue 1 serving 400-----------配置每次调度的字节数
[SRG]qos cql 1 queue 2 serving 300
[SRG]qos cql 1 queue 3 serving 200
[SRG]qos cql 1 queue 4 serving 100
[SRG]inter g0/0/4
[SRG-GigabitEthernet0/0/4]qos cq cql 1-----接口下调用队列cq 1
后续数值(0/20/0):
Size:队列中的分组数
Length:用分组数比奥斯的最大队列的长度
Discards:由于队列已满而丢失的分组数
(4)FQ:
FQ,公平队列,WFQ的前身。
- FQ引入了FT(完成时间)和WFT(最坏完成时间)
- 丢弃机制为HQO(Out方向的hold-queue )和CDT(congestive discard thres hold,门限)
① FQ队列机制:
a) 名词解释:
FT:
Finished time,数据包来的时刻加上数据包的长度,路由器将所有分类流放入同一队列中,每一种流都有一个FT值,在调度的时候始终调度FT最小的。
WFT:
最坏完成时间,表示转发时间最长
b) 队列调度机制:
数据包在进入队列时,路由器会对数据包计算哈希计算,哈希相同的为同种数据流,计算每个数据包的FT值,放入队列中,FT值最小的数据包将优先达到转发
a) 0时刻出现数据包A1,长度为100,则FT为0+100=100
b) 50时刻出现数据包B1,长度为300,则FT为50+300=350
c) 60时刻出现数据包A2,长度为20,则FT值为A1的FT+A2长度=100+20=120
d) 70时刻出现数据包A3,长度为10,则FT值为A2的FT+A3长度=120+10=130
e) 80时刻出现数据包B2,长度为300,则FT值为B1的FT+B2长度=350+300=650
最终,各个数据包的FT排序为A1(100)<A2(120)<A3(130)<B1(350)<B2(650),所以出队循序为A1、A2、A3、B1、B2的顺序
注:包越小则FT值越小,此时就会得到优先的转发,从总体意义上来说包越小会越优先调出队列
② FQ分类方法:
分类标准,按数据流的不同来分不同的类,区分不同流的5源组:①源IP、②目标IP、③源端口号、④目标端口号、⑤协议
FQ将不同数据包的5源组进行hash,得到不同的hash值,hash值相同则为同一数据流,放入同一队列中进行后续的FT值计算
③ FQ丢弃机制:
a) 名词解释:
CDT:
Congestive discard threshold,缓存中容纳包的个数的下限(将要发生丢包的门限)
HQO:
Hold-queue out limit,缓存中容纳数据包个数的上限(整个软件队列buffer的大小)
b) 丢弃机制:
a) 如果缓存中的数据包个数小于CDT值时,不采取任何限制措施
b) 如果缓存中的数据包大于这个CDT值时,采取以下方法限制后续数据包:
- 数据包属于最长队列(达到了HQO个数),有最坏的FT值,那么本数据包进入队列并且丢弃原队列中有最坏完成时间的数据包
- 如果后续数据包属于最长队列(达到了HQO个数),没有有最坏的FT值,那么本数据包被drop
- 如果后续数据包不属于最长队列(未达到HQO的个数),没有最坏的FT值,则直接将这个包加入
- 如果后续数据包不属于最长队列(未达到HQO的个数),没有最坏的FT值,则被drop
a) 如果缓存中的数据包超过HQO值,又来了一个数据包,则采取以下措施:
- 如果这个数据包有最大FT则被drop
- 如果这个包没有最大的FT值,那么将此数据包加入队列并且丢弃原队列有最大FT值的数据包
(5)WFQ:
Weighted Fair Queuing,加权公平队列,报文到达接口后,首先对报文进行分类,不同的流分入不同的队列。在出队的时候,WFQ按流的权重分配每个流应占的带宽。权重数值越小,所得的带宽越少。权重数值越大,所得的带宽越多。这样就保证了相同优先级业务之间的公平,体现了不同优先级业务之间的权值。
将流量分类,进入不同的优先级不相同的队列,优先级高的提供相对比较高的带宽,优先级低的队列提供相对比较低的带宽,解决了“扼死”的问题。
相对于FQ,WFQ引入了权重,在FQ中,数据包越小,FT值就越小,那么就会被优先调度。如果来的是最大的数据包,但是大数据包的优先级高,优先级高表示用户想实现此数据的优先调度,但是由于FQ的调度机制没有体现优先级,所以在WFQ中引入权重以体现优先级。
WFQ给每个数据包指定一个权重,权重决定了队列中分组的传输循序,权重小的数据包得到优先传送,权重是根据公式得到的,FT和SN算法
① 权重体现:
WFQ在调度时首先传输权重小的分组,包的尺寸越小,其权重也就越小。所以小尺寸的包往往被优先转发。对于有优先级的包的处理,要计算其权重的时候往往、使用其虚拟包大小进行计算。
Weight=1/(IP P+1)
虚拟包大小=实际包大小/(ip优先级+1)此时计算FT值使用使用虚拟包长,所以优先级越大,FT值越小,权重就就越小,越优先得到得到转发。
为了让虚拟包场为整倍数值,以防除不尽,所以要实际包长乘以8的公倍数。
对于不同优先级的数据包,有不同的权重值:
IP P |
Weight |
0 |
32384 |
1 |
16192 |
2 |
10794 |
3 |
8096 |
4 |
6476 |
5 |
5397 |
6 |
4626 |
7 |
4048 |
32(Virtual IP P) |
128 |
1024(Virtual IP P) |
4(RSVP) |
① WFQ配置:
[SRG-acl-adv-3000]rule 5 permit udp source 192.168.1.2 0 destination 192.168.2.2 0 destination-port eq 8090
[SRG]acl number 3001
[SRG-acl-adv-3001]rule 5 permit tcp source 192.168.1.2 0 destination 192.168.2.2 0 destination-port eq 80
[SRG]acl number 3002
[SRG-acl-adv-3002]rule 5 permit tcp source 192.168.1.2 0 destination 192.168.2.2 0 destination-port eq 20
[SRG]traffic classifier VOIP
[SRG-classifier-VOIP]if-match acl 2000
[SRG]traffic classifier HTTP
[SRG-classifier-VOIP]if-match acl 2001
[SRG]traffic classifier FTP
[SRG-classifier-VOIP]if-match acl 2002
[SRG]traffic behavior VOIP
[SRG-behavior-VOIP]remark ip-precedence 5
[SRG]traffic behavior HTTP
[SRG-behavior-VOIP]remark ip-precedence 4
[SRG]traffic behavior FTP
[SRG-behavior-VOIP]remark ip-precedence 3
[SRG]qos policy huawei
[SRG-qospolicy-huawei]classifier VOIP behavior VOIP
[SRG-qospolicy-huawei]classifier HTTP behavior HTTP
[SRG-qospolicy-huawei]classifier FTP behavior FTP
[SRG]inter g0/0/0
[SRG-GigabitEthernet0/0/0]qos apply policy huawei inbound-入接口调用策略
[SRG]inter g0/0/1
[SRG-GigabitEthernet0/0/1]qos wfq------出接口激活WFQ
② FQ分类方法:
分类标准,按数据流的不同来分不同的类,区分不同流的6源组:①源IP、②目标IP、③源端口号、④目标端口号、⑤协议、⑥TOS
WFQ将不同数据包的6源组进行hash,得到不同的hash值,hash值相同则为同一数据流,放入同一队列中进行后续的FT值计算
(6)CBQ:
Huawei设备目前最常使用的为CBQ队列,CBQ基于类的队列,当借口出现拥塞时,软件队列中的流量在送往硬件队列转发时,使用带宽值(认为定义)保证每类流单位时间内从硬件队列送出接口。
CBQ提供三类队列:
① EF队列:满足低延时业务
② LLQ:一种特殊的EF队列
③ AF队列:满足需要带宽保证的关键数据业务
④ BF队列:满足不需要严格QOS保证的尽力发送业务
注1:队列的总大小不能大于硬件接口带宽
注2:此处的类别名称并不是DSCP对应的名称,需要单独定义
① EF队列:
EF队列是具有高优先级的队列,一个或多个类的报文可以被设定为进入EF队列,不同类别的报文可设定占用不同的带宽
在调度出队的时候,若EF队列中有报文,会优先得到调度,以保证其获得低时延。当接口发生拥塞时,EF队列的报文会优先发送,但为了防止低优先级队列(AF、BE队列)得不到调度,EF队列设置的带宽限速。当其他类别接口不拥塞时,EF队列可以占用AF、EE的空闲带宽。这样,属于EF队列的报文即可以获得空闲的带宽,又不会占用超出规定的带宽,保护了其他报文的应得的带宽
[Huawei-behavior-huawei]queue ef bandwidth 500 -----定义最大带宽500
② LLQ队列:
设备除了提供普通的EF队列,还支持一种特殊的EF队列---LLQ队列。两种队列都采用绝对优先调度,但与EF不同的是,LLQ带宽永远不会高于设置的最高上限,即使其他队列有空闲带宽,LLQ也不会抢用空闲带宽,适合于语音网络。LLQ队列比EF高级,所以当存在EF队列和LLQ队列时,出现拥塞时,首先丢弃LLQ队列
③ AF队列:
每个AF队列分别对应一类报文,用户可以设定每类报文占用的带宽。在系统调度报文出队的时候,按用户为各类报文设定的带宽将报文出队发送,可以实现各个类的队列的公平调度。当接口有剩余带宽时,AF队列按照权重分享剩余带宽。同时,在接口拥塞的时候,仍然能保证各类保五年得到用户设定的最小带宽。
注:对于AF队列,当队列的长度达到队列的最大长度时,缺省采用尾丢弃的策略,但用户还可以选择用WRED丢弃策略。
[Huawei-behavior-huawei]queue af 500--------定义最小带宽保证为500
④ BE队列:
当报文不匹配用户设定的所有类别是,报文被送入系统定义的缺省类,系统报文也会存在此队列中。虽然允许为缺省类配置AF队列,并配置带宽,但是更多的情况是为缺省类配置BE队列,Huawei设备中BE队列为FQ模式,此时此队列可以按照FQ的模式将报文输出
BE的带宽无法定义,,BE队列的带宽为接口总带宽减掉上述队列最大带宽剩余的值,并且huawei设备规定BE的带宽保证最小不能小于接口带宽的1%,huawei设备也无法在接口上调用BE队列
[Huawei-behavior-huawei]queue wfq queue-number 8,定义队列类为BE模式,调度技术为FQ,并且哈希的队列个数为8
CBQ配置:
配置CBQ,要求AR1到AR3的VOIP流量处于LLQ队列,保证带宽为100K,要求AR1到AR4
的Telnet流量处于AF队列,保证带宽为50K,其他流量通过WFQ进行拥塞管理。
配置ACL匹配流量:
[Huawei]acl number 3000
[Huawei-acl-adv-3000]rule 5 permit udp source 192.168.1.1 0 destination 192.168.2.2 0 destination-port eq 8090
[Huawei]acl number 3001
[Huawei-acl-adv-3001]rule 5 permit tcp source 192.168.1.1 0 destination 192.168.3.2 0 destination-port eq telnet
配置流策略对数据流进行标记:
[Huawei]traffic classifier VOIP
[Huawei-classifier-VOIP]if-match acl 3000
[Huawei]traffic classifier TELNET
[Huawei-classifier-TELNET]if-match acl 3001
[Huawei]traffic behavior VOIP
[Huawei-behavior-VOIP]remark dscp ef
[Huawei]traffic behavior TELNET
[Huawei-behavior-TELNET]remark dscp af11
[Huawei]traffic policy huawei
[Huawei-trafficpolicy-huawei]classifier VOIP behavior VOIP
[Huawei-trafficpolicy-huawei]classifier TELNET behavior TELNET
入接口调用策略对数据流进行标记:
[Huawei]inter g0/0/0
[Huawei-GigabitEthernet0/0/0]traffic-policy huawei inbound
配置流策略对标记数据包对应队列类型:
[Huawei]traffic classifier VIP
[Huawei-classifier-VIP]if-match dscp ef
[Huawei]traffic classifier TEL
[Huawei-classifier-TEL]if-match dscp af11
[Huawei]traffic behavior LLQ
[Huawei-behavior-LLQ]queue llq bandwidth 100-------定义队列为LLQ,保证带宽不超过100KB
[Huawei]traffic behavior AF
[Huawei-behavior-AF11]queue af bandwidth 50---定义队列为AF,保证带宽为50K
[Huawei]traffic behavior WFQ
[Huawei-behavior-WFQ]queue wfq-----------将缺省的放入wfq中
[Huawei-behavior-WFQ]queue wfq queue-number 64---定义哈希个数为64种
[Huawei]traffic policy CBQ
[Huawei-trafficpolicy-CBQ]classifier VIP behavior LLQ
[Huawei-trafficpolicy-CBQ]classifier TEL behavior AF
[Huawei-trafficpolicy-CBQ]classifier default-class behavior WFQ-未识别流量为WFQ
出接口下调用:
[Huawei]inter s4/0/0
[Huawei-Serial4/0/0]traffic-policy CBQ outbound
注:定义behavior时,bandwidth pct 50表示接口带宽的百分之50
3. 硬件队列:
引入硬件队列的原因:
① 更能充分的使用出接口的资源带宽
② 在调度中可以直接将硬件队列的数据包放入此接口
③ 解决如果只有软件队列存在的情况下出现的中断和软件队列附加的要调度到出接口的策略
硬件队列的特点:
① 硬件队列唯一机制为FIFO
② 硬件队列的机制没法修改
③ 硬件队列的长度可以进行修改该,乙方硬件队列过长而影响整体的OQS实施的效率
④ 如果接口实施了一些QOS机制,比如WFQ等,硬件队列长度会自动降低
4. 队列组合:
六. 拥塞避免:
拥塞避免是一种流控机制,他可以通过监视网络资源(如队列或内存缓冲区)的使用情况,
在拥塞有加剧的趋势时,主动丢弃报文,通过调整网络的流量来解决网络过载。
传统的丢包策略采用尾部丢弃(Tail-Drop)的方法,当队列的长度达到某一最大值后,所有
新到来的报文都将被丢弃。这种丢弃策略会引发TCP全局同步现象。
1. Tail-Drop缺点:
路由器出现拥塞时,默认采用尾丢弃,采用此机制最主要的问题就是TCP全局同步问题。
(1)TCP全局同步:
TCP报文中有6字节的窗口滑动,告诉对方我自己每次可以接受多少数据,窗口机制依赖于ack确认,如果达到对端的确认,说明我这边还有带宽,于是继续调大自己的窗口,加大数据的传输量,如图有三个相同的TCP数据,它们会不断的调大自己的窗口以加大自己的数据传输量,此时如果它们的窗口滑动到饱和带宽,出现了拥塞,此时这三种数据得不到确认,知道已经拥塞,于是它们同时调小窗口,直至得到ACK确认。于是出现了TCP全局同步的问题,出现了带宽一会阻塞出现丢包,一会空闲。
(2)TCP饥饿:
尾丢弃造成TCP流量之间分配带宽不均衡,一些“贪婪”的流量会占用大部分的带宽,而普通的TCP流量分配不了带宽而“饿死”。特别是网路中既有TCP又有UDP流量的时候,TCP流量因为窗口机制(尾丢弃造成滑动窗口减小)而释放带宽,UDP流量没有窗口机制,于是UDP流量会迅速占用TCP释放的带宽,最终造成UDP流量占用了所有带宽而TCP流量因没有带宽分配而“饿死”
(3)高延时、高抖动:
拥塞导致延时和抖动增加
(4)无差别丢弃:
无差别的求其,没有区分各种不同优先级的报文。
2. 拥塞避免技术:
① RED:Random Early Detection 随机早期检测
② WRED: Weighted Random Early Detection 加权随机早期检测
(1)RED:
Random Early Detection,随机早期检测,在没有出现拥塞的时候开始丢包,解决TCP同步问题,没有差别的丢弃。
RED共有三中丢弃模式,绿色报文不丢弃,黄色报文概率丢弃,红色报文全丢弃。这三种模式是以对了丢弃的上下两个阀值(low-limit和high-limit)所决定的。
- 绿色报文:当平均队列长度小于low-limit时标记为绿色,不进行丢弃
- 黄色报文:当平均长度结余low-limit和high-limit之间时,报文被标记为黄色,进行概
率丢弃。并且,队列的长队越长,丢弃的概率就越高。
- 红色报文:当平均队列的长度大于high-limit时,报文被标记为红色,并且进行全部丢
弃。(此事进行尾丢弃)
(2)WRED:
加权随机早期检测,默认设备基于优先级的,WRED将每一种应用放入一种队列里面,然后根据不同的应用对他们进行不同的丢包百分比。
拥塞避免配置:
在路由器上AR2的s4/0/0接口上有三种流量,分别为语音流(EF)、重要数据(AF11)和其他数据流,语音流要求最先发送的同时不能超过接口的30%,要保证重要数据有40%可用带宽,其他流量进入默认队列,对重要数据流使用WRED功能。在默认队列长度的情况下,当AF11队列长度超过20%时开始丢弃报文,丢弃比例为30%。当队列长度超过95%时,丢弃所有报文。
- AR1配置ACL和流策略,将语音流标记为EF、重要数据流标记为AF11,其他数据流为默认
- AR2配置队列技术分配带宽:
[Huawei]traffic classifier EF
[Huawei-classifier-EF]if-match dscp ef
[Huawei]traffic classifier AF11
[Huawei-classifier-AF11]if-match dscp af11
[Huawei]traffic behavior EF
[Huawei-behavior-EF]queue ef bandwidth pct 30----配置可用带宽百分比为30
[Huawei]traffic behavior AF11
[Huawei-behavior-AF11]queue af bandwidth pct 40
[Huawei]traffic policy CBQ
[Huawei-trafficpolicy-CBQ]classifier EF behavior EF
[Huawei-trafficpolicy-CBQ]classifier AF11 behavior AF11
[Huawei]inter s4/0/0
[Huawei-Serial4/0/0]traffic-policy CBQ outbound
- 配置WRED进行早期丢弃:
[Huawei]drop-profile AF11------------定义丢弃模板为AF11
[Huawei-drop-profile-AF11]wred dscp—基于dscp丢弃(默认基于IPP)
[Huawei-drop-profile-AF1]dscp af21 low-limit 10 high-limit 95 discard-percentage 3----定义dscp af11的数据流权重的丢弃,当接口队列长度为
0%时对Af21实行随机丢弃,最大丢弃率为30%,当队列达到90%的时全部丢弃
- 流行为下调用:
[Huawei]traffic behavior AF11
[Huawei-behavior-AF11]drop-profile AF11---流行为下调用WRED
注:WRED只能和WFQ和AF一起使用
七. 链路效率机制:
主要用于解决链路拥塞问题,主要工具有:
① IPHC IP头部压缩
② LFI 链路分片与交叉
1. IPHC:
IP Header Compression,IP报文头压缩,压缩数据包的头部,减小数据包的大小,用于在IP
网络上承载语音视频等实时多媒体业务,是在PPP链路和FR链路应用的低速链路技术。I
主要有:
① RTP报文头压缩
② TCP报文头压缩
(1)RTP报文头部压缩:
实时RTP包括数据部分和头部分,RTP的数据报文相对较小,而RTP的头部分较大。12字节的RTP头,加上20字节的IP头和8字节的UDP头,就是40字节的IP/UDP/IP/RTP头。而RTP典型的负载时20字节到160字节。为了避免不必要的带宽消耗,可以使用IPHC特性对报文头进行压缩。IPHC将IP/UDP/IP/RTP头从40字节压缩到2~4字节,对于40字节的负载,头压缩到4字节,效果是相当可观的。
(2)TCP报文头压缩:
压缩数据包TCP的头部减少数据包的大小,对于TCP数据包,IP头加上TCP头一共40字节,使用TCP压缩,可以压缩到3~5字节。
缺点:
压缩会非常影响系统处理的时间,增加了处理的时延,增加了端口抖动。
IPHC配置(AR系列不支持):
RTA:
[Huawei]inter s0/0/0
[Huawei-Sear0/0/0]ppp compression iphc
[Huawei-Sear0/0/0]ppp compression iphc rtp-connections 20—设置最大的压缩连接数
RTB:
[Huawei]inter s0/0/0
[Huawei-Sear0/0/0]ppp compression iphc
[Huawei-Sear0/0/0]ppp compression iphc rtp-connections 20—设置最大的压缩连接数
2. LFI:
Link Fragmentation and Interleaving,链路分片与交叉,将包分片,多种类型的包分片交叉的发送,降低延迟和抖动。
链路分片与交叉时在PPP链路和FR链路应用的低速链路技术。在低速串行链路上,实时交互式通信,如Telnet和VoIP,往往会由于大型分组的发送而导致阻塞延迟,例如正好在大报文被调度而等待发送时,语音报文到达,它需要等该报文被传输完毕后才能被调度。如果大报文的调度时间非常长,此时实时性数据就必须等待,增加了阻塞延迟。使用链路分片与交叉技术将大报文进行分片,应对及时过来的实时性报文先转发。
① 出现拥塞,使用CBWFQ队列机制进行队列的缓存
② 如果此时LLQ队列中没有重要的流量,调用Q1队列中的流量
③ 如果此时Q1队列中的流量数据包整体非常大,调出队列需要一定的时间,此时如果LLQ队列中出现了实时性要求比较高的数据时,会等待Q1队列中的流量全部转发出去后才能嗲用LLQ队列中的流量,增加了LLQ队列中流量的时延
④ 当启用了LFI功能后,会将Q1队列中的大数据包进行分片,一个分片一个分片的调度,如果调度几个分片后,LLQ队列中出现了实时性数据,会立刻调度LLQ队列中的数据,减小了LLQ队列中数据的时延
缺点:
包分片增加了原来的包头,整体上增大了数据包的容量,增加了网络阻塞。
(1)LFI应用:
① 在128k的串行链路上,当存在大量的大型数据包和VoIP流量时,使用LFI分片将大型数据包分片,可以减小VoIP语音包的延迟
② 在MP捆绑的串行链路上数据包默认会进行LFI分片走多条链路
(2)LFI配置:
AR1:
[Huawei]interface Virtual-Template 1---创建虚拟模板
[Huawei-Virtual-Template1]ppp mp
[Huawei]inter s4/0/0
[Huawei-Serial4/0/0]ppp mp virtual-template---放入虚拟模板1(可增多条链路)
[Huawei]inter Virtual-Template 1
[Huawei-Virtual-Template1]ip address 192.168.1.1 24
[Huawei-Virtual-Template1]ppp mp fragment enable—开启分片功能(默认开启)
[Huawei-Virtual-Template1]ppp mp lfi delay-per-frag 10—设置延时10毫秒(表示对数据包进行切片,切片的数据包在链路上传输不超过10毫秒)
[Huawei-Virtual-Template1]ppp mp min-fragment 128—最小分片为128字节
AR2:
[Huawei]interface Virtual-Template 1---创建虚拟模板
[Huawei-Virtual-Template1]ppp mp
[Huawei]inter s4/0/0
[Huawei-Serial4/0/0]ppp mp virtual-template---放入虚拟模板1(可增多条链路)
[Huawei]inter Virtual-Template 1
[Huawei-Virtual-Template1]ip address 192.168.1.2 24
[Huawei-Virtual-Template1]ppp mp fragment enable—开启分片功能(默认开启)
[Huawei-Virtual-Template1]ppp mp lfi delay-per-frag 10—设置延时10毫秒(表示对数据包进行切片,切片的数据包在链路上传输不超过10毫秒)
[Huawei-Virtual-Template1]ppp mp min-fragment 128—最小分片为128字节