QoS,即Quality of Service,服务质量的意思。将大体介绍QoS的基本职能、分类和服务模型等方面。
QoS基本职能
QoS是如何实现差分服务,从而保障重要服务的服务质量的呢,主要是通过以下集中手段:
分类和标识
所谓分类,就是为不同的网路流量分开,分类的依据可以是源目MAC、源目IP等等,华为和思科对QoS在分类上的实现比较灵活,可以依据报文的多种特征进行分类。分类是实现QoS的基础,正是首先将报文分类,才可以对报文做进一步的处理。而标识,就是在分类之后QoS要做的事情。在将网络流量实现分类后,如何使得上游的路由器可以识别下游网络设备对网络流量的分类呢?就是要对网络流量打上一个标记。IP头部中的TOS字段可以实现报文标识的功能,除了该字段之外,在本文第二章还介绍了其他的分类方式。
拥塞管理
所谓拥塞管理,就是指当网络设备收到了大量的数据包而一时无法发送时所采取的策略。不管是路由器还是交换机,都在其内部维持着一个硬件队列和多个软件队列。硬件队列一般使用FIFO(先进先出)的策略,但是软件队列的策略却是我们可以管控的,我们可以通过合理的设置软件调度策略,以实现当发生网络拥塞时的数据包转发流程,以实现高优先级、低时延保障的数据包优先发送出去。
拥塞避免
所谓拥塞避免,就是指当网络设备发生了拥塞,并且情况可能进一步加剧时,所采取的主动丢包的策略。对于网络通信设备而言,如果收到了过多的数据包,超出了其处理能力,则将会发生丢包,这是无法避免的。而QoS可以保证核心业务和高保障级别的数据包的带宽,从而丢弃那些低优先级的数据包。
流量监管和流量整形
流量监管和流量整形是QoS对超出网络的数据包做出的响应。所谓流量监管,就是当数据包超出设置的带宽阈值后,超出的部分直接丢弃;所谓流量整形,就是当数据包超过设置的带宽阈值后,超出的部分存入一个存储队列,等到其流量下降后,再进行发送。因此,流量监管起到的作用就是消减流量高峰,而流量整形就是在消减流量高峰的同时补流量峰谷。
链路效率
所谓链路效率,是指QoS在数据链路层为保证服务质量进行的处理。主要包括压缩和LFI。通过链路效率,可以在链路层层面上实现QoS。
QoS分类
根据QoS实现的方式,可以将QoS简单的做出以下分类:
二层QoS
所谓二层QoS,就是在数据链路层上打标识。要在数据链路层上打标识,普通的Ethernet Ⅱ型数据帧是无能为力的,必须要借助802.1Q协议中的802.1P字段。
IP层QoS
所谓三层QoS,就是在网络层上打标识。在IPv4头部中,存在一个8bit的TOS字段,该字段就可以用来实现给数据包打标识。RFC 1349定义了IP Preference的打标识方式,RFC2474定义了DSCP的实现方式,DSCP对IP Preference兼容,二者均是对TOS字段进行了处理。
MPLS2.5层QoS
所谓2.5层QoS,就是在数据链路层和网络层的中间——MPLS数据包头部上打标识。在运行MPLS的域内,也可以使用MPLS头部的EXP位(实验位)来打标识。
IPv6 QoS
在IPv6协议栈中,其IPv6头部自己就含有traffic class字段,该字段在设计上也是用来实现QoS的,因此也可以在该字段上打标识。
QoS服务模型
QoS的实现有以下三种模型:
尽力而为模型
所谓尽力而为,即Best Effort,就是在网络设备中不运行任何QoS,所有的数据包尽量保证传输,但是当网络发生拥塞时,网络设备就会丢弃自己能力之外的数据包,因此该模型可以看做是没有运行QoS的场景。
集成服务模型
所谓集成服务,即Integrated Service,就是基于RSVP协议实现的QoS。运行该模型,所有的网络流量都要提前申请带宽等服务。该模型的一个很大问题在于该模型本身是基于软件实现的,因此本身没有QoS的保证。在这里就不过多介绍了。
差分服务模型
所谓差分误区,即Differentiatial Service,就是目前广泛使用的基于队列实现QoS,不同的网络流量打上不同的标识,然后再QoS域中的设备对不同标识的网络流量进行不同的处理。在后续的文章中我将着重介绍这种服务模型。