QOS概述
- 在传统的IP网络中,所有的报文都被无区别的等同对待,每个转发设备对所有的报文均采用先入先出的策略进行处理,它尽最大的努力(Best-Effort)将报文送到目的地,但对报文传送的可靠性、传送延迟等性能不提供任何保证。
什么是QOS

- 为了支持具有不同服务需求的语音、视频以及数据等业务,要求网络能够区分出不同的通信,进而提供相应的服务。
- 例如VoIP等实时业务就对报文的传输延迟提出了较高要求,如果报文传送延时太长,用户将不能接受(相对而言,E-Mail和FTP业务对时间延迟并不敏感)。
- 为了支持具有不同服务需求的语音、视频以及数据等业务,要求网络能够区分出不同的通信,进而为之提供相应的服务。
- 传统IP网络的尽力服务不可能识别和区分出网络中的各种通信类别,而具备通信类别的区分能力正是为不同的通信提供不同服务的前提,所以说传统网络的尽力服务模式已不能满足应用的需要。——QoS的提出。
QoS服务模型
- 通常QoS提供以下三种服务模型:
- Best-Effort service(尽力而为服务模型)
- Integrated service(综合服务模型,简称IntServ)
- Differentiated service(区分服务模型,简称DiffServ)
区分服务模型
- 将网络中的流量分成多个类,然后为每个类定义相应的处理行为,使其拥有不同的优先转发、丢包率、时延等。

- DiffServ是一个多服务模型,它也可以满足不同的QoS需求。该模型目前IP网络广泛使用。
- 应用程序在发出报文前,不需要通知网络为其预留资源。对DiffServ服务模型,网络不需要为每个流维护状态,它根据每个报文的差分服务类(各报文头中的差分服务标记字段,如IP头的DS Field),来提供特定的服务。
- 其实就是将网络中的流量分成多个类,不同的类采用不同的处理。也就是说,先对流量分类,然后把类别标记在报文头中,通过报文携带到网络上,网络各节点只需要简单地识别报文中的这些标记,进行相应的处理。
- 小例子:就好比你去坐火车,火车票就是用来标记你所要享受的服务,是软卧、硬卧、硬座还是无座。火车票你随身携带,上车时你根据火车票进入对应的车厢,享受相应的服务:进入卧铺车厢的,可以舒服的躺着,进入硬座车厢,表示要坐着或站着咯。车票就相当于报文头中的“标记”。
- 除了流分类和标记,差分服务比较优秀的地方还有强大的队列技术。当网络拥塞,也就是进来的报文太多,设备处理不过来,就让报文排队。
QoS常用技术 (DiffServ模型)

QoS数据处理流程 (DiffServ模型)

- QoS技术提供了下述功能:
- 流量分类和标记:依据一定的匹配规则识别出对象,是有区别地实施服务的前提,通常作用在接口入方向。
- 令牌桶:使用令牌桶对流量进行评估,是否满足报文转发的条件。
- 流量监管:对进入设备的特定流量的规格进行监管,通常作用在接口入方向。当流量超出规格时,可以采取限制或惩罚措施,以保护运营商的商业利益和网络资源不受损害。
- 拥塞避免:过度的拥塞会对网络资源造成损害,拥塞避免监督网络资源的使用情况,当发现拥塞有加剧的趋势时采取主动丢弃报文的策略,通过调整流量来解除网络的过载,通常作用在接口出方向。
- 拥塞管理:是必须采取的解决资源竞争的措施,将报文放入队列中缓存,并采取某种调度算法安排报文的转发次序,通常作用在接口出方向。
- 流量整形:一种主动调整流的输出速率的流控措施,是为了使流量适配下游设备可供给的网络资源,避免不必要的报文丢弃和拥塞,通常作用在接口出方向。
QoS流分类和流标记
QoS数据处理流程

- 流量分类和标记:依据一定的匹配规则识别出对象,是有区别地实施服务的前提,通常作用在接口入方向。
为什么需要流分类和流标记
- 流量分类和标记是QoS的基础,是有区别地实施服务的前提。

- 要实现差分服务,就需要对进入DiffServ域的流量按照一定的规则进行分类,然后根据不同类别的流量提供不同的服务。
- 当报文在DiffServ域边界被分类之后,在网络的中间节点,就可以根据分类,对不同类别的流量给予差别服务。下游(downstream)节点可以选择使用上游(upstream)节点的分类结果,也可以按照自己的分类标准对数据流重新进行分类。
- 需要首先将数据包分为不同的类别或者设置为不同的优先级。
- 将数据包分为不同的类别,称为流分类,流分类并不修改原来的数据包。
- 将数据包设置为不同的优先级称为标记,而标记会修改原来的数据包。其中,标记分为内部标记和外部标记:
- 内部标记
- 标记报文在设备内部处理的服务等级(service-class)与丢弃优先级,让匹配的报文能够直接进入指定服务等级的队列,而不需要根据报文头中的优先级字段来确定服务等级。
- 标记报文的丢弃优先级也叫着色(color),是指在相同service-class的时候,入同一个队列,当此队列快拥塞的时候,可以通过color再进行差分服务,体现在缓存使用上的优先顺序。
- 外部标记
- 设置/改写报文的优先级字段,用于向下一台设备传递差分服务的QoS信息。其中,改写报文的优先级字段也称为“重标记-remark”。
简单流分类

- 简单流分类是指采用简单的规则,如只根据IP报文的IP优先级或DSCP值、IPv6报文的TC值、MPLS报文的EXP域值、VLAN报文的802.1p值,对报文进行粗略的分类,以识别出具有不同优先级或服务等级特征的流量,实现外部优先级和内部优先级之间的映射。
外部优先级 - VLAN报文

外部优先级 - MPLS报文

外部优先级 - IP报文

各外部优先级间的对应关系

服务等级 (Service Class)

复杂流分类

流量分类全过程

- 需求:要求为语音、视频等即时性业务提供最优先的转发服务
- 实现:在DS边界节点,先通过复杂流分类抓取语音、视频等业务流量,映射到对应的优先级;再通过简单流分类,处理剩余流量。
配置复杂流分类

- 由于DS边界收到的流量一般未被分类,所以复杂流分类一般在DS边界设备上配置。配置思路如下:
- 使用Traffic classifier工具匹配流量
- 使用Traffic behavior工具定义流分类的规则
- 使用Traffic policy工具将Traffic classifier与Traffic behavior进行绑定
- 将Traffic policy应用到DS边界设备接口入方向上
System-view
traffic classifier [classifier-name]
if-match [acl | vlan-id | …. ]
System-view
traffic behavior [behavior-name]
remark [dscp-name | 8021p-value | EXP | … ]
System-view
traffic policy [policy-name]
classifier [classifier-name] behavior [behavior-name]
System-view
interface [interface-type interface-num]
traffic-policy [policy-name] [inbound | outbound]
System-view
display traffic classifier user-defined [ classifier-name ]
display traffic behavior [ system-defined | user-defined ] [ behavior-name ]
display traffic policy user-defined [ policy-name ] classifier [classifier-name ]
display traffic-policy applied-record [ policy-name ]
修改简单流分类 (可选)

- 简单流分类基于优先级映射表,将带有特定QoS字段数据映射为内部优先级。
- 优先级映射表根据实际需求可以进行一定修改,修改优先级映射表的思路如下:
System-view
interface [interface-type interface-num]
trust [8021p | dscp]
System-view
qos map-table [ dot1p-dot1p | dot1p-dscp | dot1p-lp | dscp-dot1p | dscp-dscp | dscp-lp ]
input [input-value1] output [output-value]
System-view
display qos map-table [ dot1p-dot1p | dot1p-dscp | dot1p-lp | dscp-dot1p | dscp-dscp | dscp-lp ]
实验
