传统的IP网络无区别对待所有报文,网络设备处理报文采用的策略是先进先出FIFO,它依据报文到达时间的先后顺序分配转发所需要的资源。所有报文共享网络和设备的带宽等资源。
所以这样就会导致网络发生拥塞时,一些关键业务的通信质量就得不到保障,进而影响客户体验。
流量类型 | 带宽 | 时延 | 抖动 | 丢包率 |
---|---|---|---|---|
语音 | 低 | 高 | 高 | 低 |
视频 | 高 | 高 | 高 | 低 |
FTP | 中,高 | 低 | 低 | 高 |
电子邮件、http网页浏览 | 低 | 低 | 低 | 中、高 |
单位时间内能传输的数据量
一个报文从网络的一端传送到另一端所需要的时间
单个网络设备的时延包括:
由于每个报文的端到端时延不一样,就会导致这些报文不能等间隔到达目的端。这种现象就叫做抖动。
抖动的大小跟时延的大小直接相关,时延小则抖动的范围也小。
在网络传输过程中丢失报文占传输报文的百分比。
丢包可用于衡量网络的可靠性
IntServ是一种最为复杂的服务模型,它需要用到RSVP ( Resource Reservation Protocol )协议。该服务模型在发送报文前需要向网络申请特定的服务。这个请求是通过信令( signal )来完成的,应用程序首先通知网络它自己的流量参数和所需的特定服务质量的请求,包括带宽、时延等。应用程序-般在收到网络的确认信息后。即认为网络已经为这个应用程序的报文发送预留了资源,然后立即发送报文。
IntServ模型要求端到端网络的所有节点都支持RSVP协议,且每个节点都需要周期性地同相邻节点交换状态信息,这样就会加大协议报文导致的开销。更关键的是,所有网络节点都需要为每个数据流保存状态信息,而当前在Internet骨干网上有着成千上万条数据流,因此IntSer模型在Internet骨干网上无法得到广泛应用。
MQC将具有某类共同特征的报文划分为一类,并为同一类报文提供相同的服务,也可以对不同类的报文提供不同的服务。
流分类(traffic classifier)、流行为(traffic behavior)、流策略(traffic policy)
流分类用来定义一组流量匹配规则,用于对报文进行分类
配置流分类:
流分类规则可以分为二层规则、三层规则、基本ACL6规则、高级ACL6规则和自定义ACL规则。
类别 | 分类规则 |
---|---|
二层规则 | 目的MAC地址 源MAC地址 VLAN报文外层Tag的VLAN ID VLAN报文外层Tag的802.1p优先级 VLAN报文内层Tag的VLAN IDVLAN 报文内层Tag的802.1p优先级 基于二层封装的协议字段:目前支持的二层封装协议包括ARP、IP、MPLS、RARP等。 ACL 4000~4999匹配的字段:基于二层ACL进行分类。 丢弃报文:匹配被丢弃的报文,可以对该类报文进行流量统计或镜像等动作,从而分析该类报文。 所有报文:当需要对所有的数据报文作统一的处理时,可以基于所有数据报文进行分类。入接口出接口 |
三层规则 | IP报文的DSCP优先级 IP报文的IP优先级IP协议类型(IPv4协议或IPv6协议) TCP报文的TCP-Flag标志 ACL 2000~3999匹配的字段 VXLAN内层报文的VNI ID |
基本ACL6规则 | ACL6 2000~2999匹配的字段 |
高级ACL6规则 | ACL6 3000~3999匹配的字段 |
自定义ACL规则 | ACL 5000~5999匹配的字段(自定义ACL) |
流分类中各规则之间的关系分为:or或and,缺省情况下的关系为or。
以流分类c1为例。流分类c1包括如下规则:
若流分类c1各规则之间的关系为or:只要报文的VLAN ID为10,或报文的入接口为GE0/0/1,或报文匹配ACL 3000,或报文匹配ACL 3001,报文就属于流分类c1。
若流分类c1各规则之间的关系为and:只有报文的VLAN ID为10,入接口为GE0/0/1,且报文匹配ACL 3000或ACL 3001时,报文才属于流分类c1。
1.执行命令system-view,进入系统视图。
2.执行命令traffic classifier classifier-name [ operator { and | or } ],创建一个流分类并进入流分类视图,或进入已存在的流分类视图。
流行为用来定义针对某类报文所做的动作。需要确定如下两点:
MQC流行为动作有:
如果在一个流行为中定义了多个动作且这些动作互不冲突,那么这些动作都能配置成功且同时生效。如果在一个流行为中定义的多个动作产生冲突,将出现以下情况之一:
执行命令traffic behavior behavior-name,创建一个流行为并进入流行为视图,或进入已存在的流行为视图。
流策略用来将指定的流分类和流行为绑定,对分类后的报文执行对应流行为中定义的动作。
配置流策略和应用流策略时,需要确定如下四点:
执行命令traffic policy policy-name,创建一个流策略并进入流策略视图
执行命令classifier classifier-name behavior behavior-name[precedence precedence-value]
当数据流到达设备时首先会根据数据的大小从令牌桶中取出与数据大小相当的令牌数量来传输数据。也就是说要使数据被传输必须保证令牌桶里有足够多的令牌,如果令牌数量不够,则数据会被丢弃或缓存。这就可以限制报文的流量只能小于等于令牌生成的速度达到限制流量的目的。
单速率令牌桶参数
CBS越大,表示允许的突发量越大
双桶结构由两个桶实现,为方便将两个令牌桶称为C桶和E桶。C桶容量为CBS , E桶容量为EBS ,总容量是CBS+EBS。如果不允许有突发流量, EBS则设置成0。
当EBS≠0时,称为单速双桶。当EBS=0 , E桶的令牌数始终为0 ,相当于只使用了一个令牌桶C桶,这种情况也称为单速单桶。单速单桶中,报文只标记为绿、红两色。
单速率标记算法中,初始状态时两桶是满的。先往C桶中添加令牌,等C桶满了,再往E桶中添加令牌( E桶的令牌用做以后临时超过CIR的突发流量) , 当两桶都被填满时,新产生的令牌将会被丢弃。
双速率三色标记算法业界都使用两个令牌桶,但它关注的是速率的突发,所以不像单速率三色标记算法那样把第一个桶中未使用的令牌放到第二个桶中 ,而是使用两个独立的令牌桶,存在两个令牌填充速率。为方便将两个令牌桶称为C桶和P桶, C桶容量为CBS ,令牌填充速率为CIR , P桶容量为PBS ,令牌填充速率为PIR。
“双速率”指算法中两个令牌桶中的令牌填充速率不同
初始状态时两桶是满的。往C桶和P桶分别以CIR和PIR的速率填充令牌。因这两个令牌桶是相互独立的,当其中一个桶被填满时,这个桶新产生的令牌将会被丢弃,另一个桶继续填令牌。
如果报文已被标记为绿色且报文长度超过P桶中的令牌数Tp ,则报文被标记为红色,且Tp和Tc不变。
如果报文已被标记为绿色且报文长度不超过P桶中的令牌数T p但超过C桶中的令牌数Tc ,则报文被标记为黄色,且Tp=Tp-B, Tc不变。
如果报文已被标记为绿色且报文长度不超过C桶中的令牌数Tc ,则报文被标记为绿色,且Tp=Tp-B, Tc=Tc-B。
如果报文已被标记为黄色,则只比较P桶,如果报文长度超过P桶中的令牌数Tp,则报文被标记为红色,且Tp和Tc不变。
如果报文已被标记为黄色,且报文长度不超过P桶的令牌数,则报文被标记为黄色,且Tp=Tp-B, Tc不变。
如果报文已被标记为红色,直接将报文标记为红色, Tc和Tp不变。
流量监管由三部分组成:
经过流量监管,如果某流量速率超过标准,超出标准部分的报文其测量结果为“不符合”,此时设备可以选择降低报文优先级再进行转发或者直接丢弃。缺省情况下,green、yellow进行转发,red报文丢弃。
接口限速可以限制一个接口上发送或者接收报文的总速率。
接口限速也是采用令牌桶进行流量控制。如果在设备的某个接口配置了接口限速,所有经由该接口发送的报文首先要经过接口限速的令牌桶进行处理。如果令牌桶中有足够的令牌,则报文可以发送;否则,报文将被丢弃或者被缓存。这样,就可以对通过该接口的报文流量进行控制。
接口限速支持出/入两个方向
Congestion Avoidance是指通过监视网络资源的使用,在拥塞发生或有加剧的趋势时主动丢弃报文。
两种丢包方式
传统的尾部丢包策略
传统的丢包策略采用尾部丢弃(Tail-Drop)的方法。当队列的长度达到最大值后,所有新入队列的报文(缓存在队列尾部)都将被丢弃。
这种丢弃策略会引发TCP全局同步现象,导致TCP连接始终无法建立。所谓TCP全局同步现象如图,三种颜色表示三条TCP连接,当同时丢弃多个TCP连接的报文时,将造成多个TCP连接同时进入拥塞避免和慢启动状态而导致流量降低,之后又会在某个时间同时出现流量高峰,如此反复,使网络流量忽大忽小。
WRED
为避免TCP全局同步现象,出现了RED(Random Early Detection)技术。RED通过随机地丢弃数据报文,让多个TCP连接不同时降低发送速度,从而避免了TCP的全局同步现象。使TCP速率及网络流量都趋于稳定。
HQoS(Hierarchical Quality of Service)采用多级队列调度的方式为多用户多业务提供精细化的QoS服务。
HQoS以DiffServ解决方案为基础,报文根据映射后的内部优先级进入对应的流队列,从而实现对业务的区分。每个用户都有8个流队列,分别对应8个业务优先级(BE、AF1、AF2、AF3、AF4、EF 、CS6、CS7),8个流队列可以配置PQ(优先级队列)或WFQ(加权公平队列)调度;每个流队列支持WRED(加权随机早期检测)以及流量整形,保证高优先级的业务能够得到优先调度和更高的带宽。
用户队列主要用来区分不同的用户。
这里的用户通常是指一个VLAN(虚拟局域网)、VPN(虚拟私人网络)等,用户的划分主要通过ACL进行。每个用户有一个用户队列,它由8个流队列聚合而来。用户队列可以配置流量整形,限制每个用户的总带宽。
端口队列与流队列类似,8个端口队列对应8种业务类型。8个队列可以配置PQ或WDRR队列调度;每个队列支持配置WRED以及流量整形。
目标端口即设备的物理接口,数据最终通过目标端口转发出去,设备支持在完成上面的流队列、用户队列HQoS调度以及端口队列调度后还可以为每个目标端口配置流量整形。
管理控制信息∶如网管、设备间通信协议等,对网络的正常运行至关重要,应按照最高优先级保证 ;
语音流∶ 要求低时延、低抖动、低丢包率的EF业务级别;
视频会议、可视电话等实时视频流∶要求低时延、低抖动、低丢包率的EF业务级别;
办公业务∶对网络时延抖动要求较低,一般作为AF、BE业务处理;
考虑到网管系统可能发生病毒感染,而网管流量是最高优先级,采用PQ方式调度,为避免对语音、视频业务的冲击,必须对从网管服务器进入网络的流量进行监管。
企业办公业务,为了防止个别办公业务占用过多带宽,或由于感染病毒而发起的DDoS流量攻击,而造成其它业务服务质量下降,应该根据SLA对每个接入的流量进行流量监管(CAR),为了充分利用网络带宽和提高客户满意度,超过约定速率的流量不直接丢弃,而是降低为最低优先级,进行尽力而为的转发。
1.在RTA上将流量分为3类:AF11、AF21、EF
2.在RTB上将AF21流量重新标记为AF22
实验拓扑
RA上配置
#
sysname RTA
#做acl匹配
acl number 2001
rule 5 permit source 0.0.0.1 255.255.255.0
acl number 2002
rule 5 permit source 0.0.0.0 255.255.255.0
acl number 2003
rule 5 permit source 0.0.0.0 255.255.255.0
#流分类
traffic classifier ef operator and
if-match acl 2003
traffic classifier af21 operator and
if-match acl 2002
traffic classifier af11 operator and
if-match acl 2001
#流行为
traffic behavior be_ef
remark dscp ef
traffic behavior be_af21
remark dscp af21
traffic behavior be_af11
remark dscp af11
#流策略
traffic policy mark
classifier af11 behavior be_af11
classifier af21 behavior be_af21
classifier ef behavior be_ef
#接口调用流策略
interface GigabitEthernet0/0/0
ip address 12.1.1.1 255.255.255.0
traffic-policy mark outbound
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.0
#
interface LoopBack1
ip address 2.2.2.2 255.255.255.0
#
interface LoopBack2
ip address 3.3.3.3 255.255.255.0
#
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 0.0.0.0 255.255.255.255
#
配置MQC实现流量监管实例
操作步骤
1.创建VLAN并配置各接口
在Switch上创建VLAN 100、110、120。
<HUAWEI> system-view
[HUAWEI] sysname Switch
[Switch] vlan batch 100 110 120
将接口GE0/0/1、GE0/0/2的接入类型分别配置为trunk,并分别将接口GE0/0/1和
GE0/0/2加入VLAN 100、VLAN 110、VLAN 120。
[Switch] interface gigabitethernet 0/0/1
[Switch-GigabitEthernet0/0/1] port link-type trunk
[Switch-GigabitEthernet0/0/1] port trunk allow-pass vlan 100 110 120
[Switch-GigabitEthernet0/0/1] quit
[Switch] interface gigabitethernet 0/0/2
[Switch-GigabitEthernet0/0/2] port link-type trunk
[Switch-GigabitEthernet0/0/2] port trunk allow-pass vlan 100 110 120
[Switch-GigabitEthernet0/0/2] quit
2.配置流分类
在Switch上创建流分类c1~c3,对不同业务流按照其VLAN ID进行分类。
[Switch] traffic classifier c1 operator and
[Switch-classifier-c1] if-match vlan-id 120
[Switch-classifier-c1] quit
[Switch] traffic classifier c2 operator and
[Switch-classifier-c2] if-match vlan-id 110
[Switch-classifier-c2] quit
[Switch] traffic classifier c3 operator and
[Switch-classifier-c3] if-match vlan-id 100
[Switch-classifier-c3] quit
3.配置流量监管行为
#在Switch上创建流行为b1~b3,对不同业务流进行流量监管以及重标记优先级。
[Switch] traffic behavior b1
[Switch-behavior-b1] car cir 2000 pir 10000 green pass
[Switch-behavior-b1] remark dscp 46
[Switch-behavior-b1] statistic enable
[Switch-behavior-b1] quit
[Switch] traffic behavior b2
[Switch-behavior-b2] car cir 4000 pir 10000 green pass
[Switch-behavior-b2] remark dscp 30
[Switch-behavior-b2] statistic enable
[Switch-behavior-b2] quit
[Switch] traffic behavior b3
[Switch-behavior-b3] car cir 4000 pir 10000 green pass
[Switch-behavior-b3] remark dscp 14
[Switch-behavior-b3] statistic enable
[Switch-behavior-b3] quit
4.配置流量监管策略并应用到接口上
在Switch上创建流策略p1,将流分类和对应的流行为进行绑定并将流策略应用到接口GE0/0/1入方向上,对报文进行流量监管和重标记。
[Switch] traffic policy p1
[Switch-trafficpolicy-p1] classifier c1 behavior b1
[Switch-trafficpolicy-p1] classifier c2 behavior b2
[Switch-trafficpolicy-p1] classifier c3 behavior b3
[Switch-trafficpolicy-p1] quit
[Switch] interface gigabitethernet 0/0/1
[Switch-GigabitEthernet0/0/1] traffic-policy p1 inbound
[Switch-GigabitEthernet0/0/1] quit
采用如下的思路配置HQoS:1.创建VLAN,并配置各接口,使用户能够通过Switch访问网络。
2.在Switch上配置创建并配置DiffServ域,将802.1p优先级映射为PHB行为并为报文着色,并在Switch入接口上绑定DiffServ域。
3.在Switch上配置流队列WRED模板和流队列模板及相关参数,以实现为不同的业务提供不同的调度优先级,丢弃参数及流量整形参数。
4.在Switch上配置ACL规则,通过VLAN区分来自不同用户的数据流量。
5.在Switch上配置用户队列及流量整形参数,通过引用流队列WRED模板和流队列模板实现HQoS。
模拟器不支持HQos