QoS
什么是Qos
QoS(Quality of Service)即服务质量。在有限的带宽资源下,QoS为各种业务分配带宽,为业务提供端到端的服务质量保证,例如,语音,视频和重要的数据应用在网络设备中可以通过QoS优先得到服务。
QoS的重要性
在IP网络的业务可以分为实时业务和非实时业务。实时业务往往占据固定带宽,对网络质量变化感知明显,对网络质量的稳定性要求高,例如语音业务。非实时业务所占带宽难以预测,经常会出现突发流量。突发流量会导致网络质量下降,会引起网络堵塞,增加转发时延,严重时还会产生丢包,导致业务质量下降深圳不可用。
解决网络堵塞的最好的办法是增加网络的带宽,但从运营,维护的成本考虑,这是不现实的,最有效的解决方案就是应用一个“有保证”的策略对网络流量进行管理
QoS一般针对网络中突发流量时需要保障重要业务质量的场景,如果业务长时间达不到服务质量要求(例如业务流量长时间超过带宽限制),需要考虑对网络扩容或使用专用设备基于上层应用去控制业务。
QoS的度量指标
影响网络质量的因素包括传输链路的带宽,报文传送时延和抖动,以及丢包率等,他们也就成为了QoS的度量指标。
带宽
带宽也成为吞吐量,是指在一个固定的时间内(1S),从网络的一段传输到另一端的最大数据位数,也可以理解为网络的两个节点之间特定数据流的平均速率。带宽的单位是bit/s。在网络中,有两个常见的与带宽有关的概念:上行速率和下行速率。上行速率是指用户向网络发送信息时的数据传输速率,下行速率是指网络向用户发送信息时的传输速率。例如,用户通过FTP上传文件到网络,影响上传文件速度的就是上行速率,而从网络下载文件,影响下载文件的速度就是下行速率。
时延
时延是指一个报文或分组从网络的发送端到接收端所需要的延迟时间,一般由传输延迟及处理延迟组成。以语音传输为例,时延是指从说话者开始说话到对方听到所说内容的时间。一般人们察觉不到小于100毫秒的延迟。当延迟在100毫秒~300毫秒之间时,说话者可以察觉到对方回复的轻微停顿,这种停顿可能会使双方都感觉到不舒服。超过300毫秒,延迟就很明显,用户开始互相等待对方的回复。当通话的一方不能及时接收到期望的回复时,说话者可能会重复所说的话,这样会与远端延迟的回复碰撞,导致重复。
抖动
如果网络发生阻塞,导致通过同一连接传输的分组延迟各不相同。抖动用来描述延迟变化的程度,也就是最大延迟的时间差。抖动对于实时性的传输的一个重要参数,特别是语音和视频等实时业务是及不容忍抖动的,抖动会造成话音或视频的断续。抖动也会影响一些网络协议的处理。有些协议是按固定的时间间隔发送交互性报文,抖动过大会导致协议震荡。所有传输系统都会有抖动,只要抖动在规定荣差之内就不会影响服务质量。利用缓存可以克服过量的抖动,但这将增加时延。
丢包率
丢包率是指在网络传输过程中丢失报文的数量占传输报文总数的百分比。少量的丢包对业务影响并不大,例如,在语音传输中,丢失一个比特或一个分组的信息,通话双方往往注意不到。在视频的传输中,丢失一个比特或一个分组可能造成在屏幕上瞬间的波形干扰,但很快恢复正常。使用TCP传送数据可以处理少量的丢包,因为TCP允许丢失的信息重发。但大量的丢包会影响传输速率。在QoS中,我们关注的是丢包的统计数据,也就是丢包率。所以正常传输时,网络丢包率应该控制在一定范围内即可。
QoS的应用场景
以企业办公为例,除了基本的网页浏览,工作邮件外,在较集中的工作时间段还需保证Telnet登录设备,异地的视频会议,实时语音通话,FTP文件的上传和下载,以及视频播放等业务的网络质量。对于不同网络质量要求的业务,可以配置不同的QoS子功能,或者不部署QoS。
网络协议和管理协议(如OSPF,Telnet)
这类业务要求低时延和丢包率,但对带宽的要求不高。因此可以通过QoS的优先级映射功能,为此类报文标记较高的服务等级,使网络设备优先转发此类报文。
实时业务(如视频会议,VoIP)
视频会议要求高带宽,低时延和低抖动。因此可以通过QoS的流量监管功能,为视频报文提供高带宽;通过QoS的优先级映射功能,适当调高视频报文的优先级。
VoIP是指通过IP网络进行实时语音通话,它要求网络做到低丢包,低时延和低抖动,否则通话双方可以明显感知质量受损。因此一方面可以调整语音报文的优先级,使其高于视频报文;另一方面通过流量监管功能,为语音报文提供最大带宽,在网络产生阻塞时,可以保证语音报文优先通过。
大数据业务(如FTP,数据库备份,文件转储)
大数据量业务是指存在长时间大量数据传输行为的网络业务,这类业务需要尽可能低的网络丢包率。因此可以为这类报文配置流量整形功能,通过数据缓冲区缓存从接口发送的报文,减少由于突发流量导致阻塞而产生的丢包现象
流媒体(如在线音频播放,视频点播)
由于这些音视频节目都是提前制作好的,观看者的终端通常可以先进行缓存再进行播放,因此降低了对网络时延,丢包和抖动的要求,如果需要降低这类业务的丢包和时延,可以通过QoS的优先级映射功能,适当提高对应报文的优先级。
普通业务(如HTML网页浏览,邮件)
这类业务对网络无特殊要求,重要性也不高。管理员可以对其保持默认设置,不需要额外部署QoS功能。
QoS的服务模型
如何在网络中通过部署来保证QoS的度量指标在一定的合理范围内,从而提高网络的服务质量呢?这就涉及到QoS模型。需要说明的是,QoS模型不是一个具体功能,而是端到端QoS设计的一个方案。例如,网络中的两个主机通信时,中间可能会跨越各种各样的设备。只有当网络中所有的设备都遵循统一的QoS服务模型时,才能实现端到端的质量保证。
下面介绍主流的三大QoS模型。其中,华为公司的交换机,路由器,防火墙,WLAN等产品均支持配置基于DiffServ服务模型的QoS业务。
Best-Effort服务模型:尽力而为
Best-Effort是最简单的QoS服务模型,用户可以在任何时候,发出任意数量的报文,而且不需要通知网路。提供Best-Effort服务时,网络尽最大的可能发送报文,但对时延,丢包率等性能不提供任何保证。Best-Effort服务模型适用于对时延,丢包率等性能要求不高的业务,是现在internet的缺省服务模型,它适用于对大多数网络应用,如FTP,E-Mail等。
IntServ服务模型:预留资源
IntServ模型是指用户在发送报文前,需要通过信令(Signaling)向网络描述自己的流量参数,申请特定的QoS服务。网路根据流量参数,预留资源以承诺满足该请求。在收到确认信息,确定网络已经为这个应用程序的报文预留了资源后,用户才开始发送报文。用户发送的报文应该控制在流量参数扫描的范围内。网络节点需要为每个流维护一个状态,并基于这个状态执行相应的QoS动作,来满足对用户的承诺。
InServ模型使用了RSVP协议作为信令,在一条已知路径的网络拓扑上预留带宽,优先级等资源,路径沿途的各网元必须为每个要求服务质量保证的数据流预留想要的资源,通过RSVP信息的预留,各网元可以判断是否有足够的资源可以使用。只有所有的网元都给RSVP提供了足够的资源,“路径”方可建立。
DiffServ服务模型:差分服务
DiffServ模型的基本原理是将网络中的流量分成多个类,每个类享受不同的处理,尤其是网络出现阻塞时,不同的类会享受不同级别的处理,从而得到不同的丢包率,时延以及时延抖动。同一类的业务在网络中会被聚合起来统一发送,保证相同的时延,抖动,丢包率等QoS指标。
DIffserv模型中,业务流的分类和汇聚工作在网络边缘由边界节点完成。边界节点可以通过多种条件(比如报文的源地址和目的地址,ToS域中的优先级,协议类型等)灵活地对报文进行分类,对不同的报文设置不同的标记字段,而其他节点只需要简单地识别报文中的这些标记,即可进行资源分配和流量控制。
与Inserv模型相比,DiffServ模型不需要信令。在DiffServ模型中,应用程序发出报文前,不需要预先向网络提出资源申请,而是通过设置报文的QoS参数信息,来告知网络节点它的QoS需求。网络不需要为每个流维护状态,而是根据每个报文流指定的QoS参数信息来提供差分服务,即对报文的服务等级划分,有差别的进行流量控制和转发,提供端到端的QoS保证。
DiffServ模型充分考虑了IP网络本身灵活性,可扩展性强的特点,将复杂的服务质量保证通过报文自身携带的信息转换为单挑行为,从而大大减少了信令的工作,是当前网络中的主流服务模型。
基于DIffsev模型的QoS组成
基于Diffserv模型的QoS业务主要分为以下几大类:
1,报文分类和标识
要实现差分服务,需要首先将数据包分为不同的类别或者设置为不同的优先级。报文分类即把数据包分为不同的类别,可以通过MQC配置中的流分类实现。报文标记即为数据包设置不同的优先级,可以通过优先级映射和重标记优先级实现。不同的报文使用不同的QoS优先级,例如VLAN报文使用802.1p,IP报文使用DSCP,MPLS报文使用EXP。
2,流量监管,流量整形和接口限速
流量监管和流量整形可以将业务流量限制在特定的贷款内,当业务流量超过额定带宽时,超过的流量将被丢弃或缓存。其中,将超过的流量丢弃的技术称为监管,将超过的流量缓存的技术称为流量整形。接口限速分为基于接口的流量监管和基于接口的流量整形。
3,拥塞管理和拥塞避免
拥塞管理在网络发生拥塞时,将报文放入队列中缓存,并采取某种调度算法安排报文的转发次序。而拥塞避免可以监督网络资源的使用情况,当发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整流量来接触网络的过载。
其中,报文分类和标记是实现差分服务的前提和基础:流量监管,流量整形,接口限速,拥塞管理和拥塞避免从不同的方面对网络流量及其分配的资源实施控制,是提供差分服务的具体体现。
对比QoS和HQoS
传统QoS技术可以满足语音,视频以及数据业务的不同服务需求,可以针对不同业务提供不同的服务。但是随着网络设备的高速发展,接入用户数量和每个用户的业务量不断增多,传统的QoS在应用中遇到了新问题:
1,传统QoS是基于端口带宽进行调度的,因此流量管理可以基于服务等级进行业务区分,却很难基于用户进行区分,因此比较合适部署在网络核心侧,但不合适部署在业务接入侧。
2,传统QoS无法做到同时对多个用户的多个业务进行流量管理和调度。
为了解决上述问题,人们需要一种皆能区分用户流量有能根据用户业务的优先级进行调度的技术,HQoS应用而生。HQoS通过多级队列进一步细化区分业务流量,对多个用户,多种业务等传输对象进行统一管理和分度调度,在现有的硬件环境下使设备具备内部资源的控制策略,既能够为高级用户提供质量保证,又能够从整体上节约网络建设成本。
MQC简介
模块化QoS命令行接口MQC,将具有某类共同特征的报文划分为一类,并为同一类报文提供相同的服务,也可以对不同类的报文提供不同的服务。随着网络中QoS业务的不断丰富,在网络规划时若要实现对不同流量(如不同业务不同用户)的差分服务,会使部署比较复杂。通过配置MQC,用户可以更加便捷的按需对网络中的流量提供不同的服务。
MQC是一种配置方法,通过配置流分类,流行为,流策略和应用流策略来完成QoS业务的配置。MQC的常见应用
配置MQC实现流量监管
背景信息:若需要对接口方向或入方向某类流量进行控制时,可以配置MQC实现流量监控。基于MQC的流量监管,可以通过流分类为不同业务提供更细致的差分服务。当匹配流分类规则的报文的接收或发送速率超过限制速率时,直接被丢弃。
1,配置流分类
[Huawei]traffic classifier classifier-name operator and|or classifier-name
创建一个流分类并进入流分类视图,或进入已存在的流分类视图。
and表示流分类中各规则之间关系为逻辑“与”,指定该逻辑关系后:
-
当流分类中有ACL规则时,报文必须匹配其中一条ACL规则以及所有非ACL规则才属于该类;
-
当流分类中没有ACL规则时,则报文必须匹配所有非ACL规则才属于该类。
- or表示流分类各规则之间是逻辑“或”,即报文只需匹配流分类中的一个或多个规则即属于该类。
- 缺省情况下,流分类中各规则之间的关系为逻辑“或”
匹配规则 |
命令 |
说明 |
---|---|---|
外层VLAN ID或基于QinQ报文内外两层Tag的VLAN ID |
if-match vlan-id start-vlan-id [ to end-vlan-id ] [ cvlan-id cvlan-id ] |
仅S5735S-H、S5736-S、S5731-H-K、S5731-H、S5731-S、S5731S-H、S5731S-S、S5732-H、S5732-H-K、S2730S-S、S5735-L1、S300、S5735-L、S5735S-L1、S5735S-L、S5735S-L-M、S500、S5735-S、S5735-S-I、S5735S-S、S6720-EI、S6720S-EI、S6720S-S、S6730-H-K、S6730-H、S6730S-H、S6730-S和S6730S-S支持cvlan-id cvlan-id。 |
QinQ报文内外层VLAN ID |
if-match cvlan-id start-vlan-id [ to end-vlan-id ] [ vlan-id vlan-id ] |
仅S5735S-H、S5736-S、S5731-H-K、S5731-H、S5731-S、S5731S-H、S5731S-S、S5732-H、S5732-H-K、S2730S-S、S5735-L1、S300、S5735-L、S5735S-L1、S5735S-L、S5735S-L-M、S500、S5735-S、S5735-S-I、S5735S-S、S6720-EI、S6720S-EI、S6720S-S、S6730-H-K、S6730-H、S6730S-H、S6730-S和S6730S-S支持此匹配规则。 |
VLAN报文802.1p优先级 |
if-match 8021p 8021p-value &<1-8> |
无论流分类中各规则间关系是“或”还是“与”,执行一次命令,如果输入多个802.1p值,报文只需匹配其中一个802.1p值就匹配该规则。 |
QinQ报文内层VLAN的802.1p优先级 |
if-match cvlan-8021p 8021p-value &<1-8> |
仅S5731-H-K、S5731-H、S5731-S、S5731S-H、S5731S-S、S5732-H、S5732-H-K、S2730S-S、S5735-L1、S300、S5735-L、S5735S-L1、S5735S-L、S5735S-L-M、S500、S5735-S、S5735-S-I、S5735S-S、S6720-EI、S6720S-EI、S6730-H-K、S6730-H、S6730S-H、S6730-S和S6730S-S支持此匹配规则。 |
丢弃报文 |
if-match discard |
仅S5731-H-K、S5731-H、S5731-S、S5731S-H、S5731S-S、S5732-H、S5732-H-K、S6720-EI、S6720S-EI、S6730-H-K、S6730-H、S6730S-H、S6730-S和S6730S-S支持此匹配规则。 包含该流分类的报文只能与流量统计和流镜像两种动作绑定。 |
QinQ报文双层Tag |
if-match double-tag |
仅S5731-H-K、S5731-H、S5731-S、S5731S-H、S5731S-S、S5732-H、S5732-H-K、S2730S-S、S5735-L1、S300、S5735-L、S5735S-L1、S5735S-L、S5735S-L-M、S5735-S、S500、S5735-S-I、S5735S-S、S6720-EI、S6720S-EI、S6730-H-K、S6730-H、S6730S-H、S6730-S和S6730S-S支持此匹配规则。 |
MPLS报文EXP优先级 |
if-match mpls-exp exp-value &<1-8> |
仅S5731-H-K、S5731-H、S5731S-H、S5732-H、S5732-H-K、S6720-EI、S6720S-EI、S6730-H-K、S6730S-H、S6730-H支持此匹配规则。 无论流分类中各规则间关系是“或”还是“与”,执行一次命令,如果输入多个MPLS EXP值,报文只需匹配其中一个MPLS EXP值就属于该类。 |
目的MAC地址 |
if-match destination-mac mac-address [ mac-address-mask ] |
- |
源MAC地址 |
if-match source-mac mac-address [ mac-address-mask ] |
- |
以太网帧头中协议类型字段 |
if-match l2-protocol { arp | ip | mpls | rarp | protocol-value } |
- |
所有报文 |
if-match any |
执行if-match any命令后,该匹配规则生效,会导致该流分类中的其他匹配规则失效。 |
IP报文的DSCP优先级 |
if-match dscp dscp-value &<1-8> |
|
IP报文的IP优先级 |
if-match ip-precedence ip-precedence-value &<1-8> |
|
报文三层协议类型 |
if-match protocol { ip | ipv6 } |
- |
TCP报文SYN Flag |
if-match tcp syn-flag { syn-flag-value | ack | fin | psh | rst | syn | urg } |
- |
入接口 |
if-match inbound-interface interface-type interface-number |
包含该流分类的流策略不能应用在出方向。 包含该流分类的流策略不能应用在接口视图。 |
出接口 |
if-match outbound-interface interface-type interface-number |
S2720-EI、S5720-LI、S5720S-LI、S5720I-SI、S5735S-H、S5736-S、S6720S-S不支持此匹配规则。 S5731-H-K、S5731-H、S5731-S、S5731S-H、S5731S-S、S5732-H、S5732-H-K、S2730S-S、S5735-L1、S300、S5735-L、S5735S-L1、S5735S-L、S5735S-L-M、S500、S5735-S、S5735S-S、S5735-S-I、S6730-H-K、S6730-H、S6730S-H、S6730-S和S6730S-S不支持将包含该流分类的流策略应用在入方向。 包含该流分类的流策略不能应用在接口视图。 |
ACL规则 |
if-match acl { acl-number | acl-name } |
|
ACL6规则 |
if-match ipv6 acl { acl-number | acl-name } |
使用ACL6作为流分类规则,请先配置相应的ACL6规则。 如果ACL6的规则指定了参数vpn-instance,那么基于该ACL6进行分类的流分类对应的流策略将不生效。 对于S2730S-S、S5735-L1、S300、S5735-L、S5735S-L1、S5735S-L、S5735S-L-M、S5735-S、S500、S5735-S-I、S5735S-S,当流策略应用在出方向,且两个流分类中分别配置匹配报文源地址的ACL6规则和匹配报文目的地址的ACL6规则:
|
流ID |
if-match flow-id flow-id |
仅S5731-H、S5731-H-K、S5731-S、S5731S-S、S5731S-H、S5732-H、S5732-H-K、S2730S-S、S5735-L1、S300、S5735-L、S5735S-L1、S5735S-L、S5735S-L-M、S5735-S、S500、S5735-S-I、S5735S-S、S6720-EI、S6720S-EI、S6730-H、S6730-H-K、S6730S-H、S6730-S和S6730S-S支持配置匹配流ID。 包含if-match flow-id匹配规则的流分类和包含remark flow-id动作的流行为应在不同的流策略中使用。 包含if-match flow-id匹配规则的流策略只能应用在接口、VLAN、VLANIF接口、全局的入方向。 |
VXLAN内层报文信息 |
if-match vxlan [ transit ] vni vni-id |
仅S5731-H-K、S5731-H、S5731-S、S5731S-H、S5731S-S、S5732-H、S5732-H-K、S6720-EI、S6720S-EI、S6730-H-K、S6730-H、S6730S-H、S6730-S和S6730S-S支持此匹配规则。 包含该流分类的流策略不能应用在出方向上。 当流分类中包含此匹配规则时,流行为只支持流量监管、报文过滤和流量统计。 |
应用名称 |
if-match application name appname |
仅S5731-H、S5731-H-K、S5731S-H、S5731-S、S5731S-S、S5732-H、S5732-H-K、S6730-H、S6730-H-K、S6730S-H、S6730-S、S6730S-S支持此匹配规则。 包含该流分类的流策略仅能应用在入方向上。 |
2,配置流行为
a,执行命令traffice behavior behavior-name 创建一个流行为并进入流行为视图,
b,根据设备选择配置:如果是S2720-EI、S5720-LI、S5720S-LI、S5720I-SI交换机,执行命令car [ aggregation ] cir cir-value [ pir pir-value ] [ cbs cbs-value pbs pbs-value ] [ share ] [ mode { color-blind | color-aware } ] [ green pass ] [ yellow { discard | pass [ remark-dscp dscp-value | remark-8021p 8021p-value ] } ] [ red { discard | pass [ remark-dscp dscp-value | remark-8021p 8021p-value ] } ],配置CAR动作。
如果流行为中配置了car命令且指定了remark-8021p 8021p-value或remark-dscp dscp-value参数,包含该流行为的流策略只能应用在入方向。
如果使用aggregation参数配置聚合CAR之后,包含该流行为的流策略只能应用在入方向上。
同一流行为中,aggregation和share不能同时配置。