我们用一张图来引入QoS,这张图显示出QoS的大致框架及逻辑。
QoS目前常用于差分服务模型中,那么QoS到底有几个模型呢?
① 尽力而为模型——简单粗暴,不区别对待,谁先来就帮谁转发。
② 综合服务模型——利用RSVP协议(资源预留协议)预留出例如一个10M的带宽给客户的特殊流量单独使用。优点是特殊流量得到区分对待,缺点是客户不用时,10M带宽也无法给其他流量使用,浪费带宽。
③ 差分服务模型——-也就是我们将重点讲到的。
那差分服务模型如何做到既兼顾区分对待,又不浪费带宽呢?首先从数据、语音、视频流量进入接口,我们会对其进行一个分类和标记!分类怎么分?标记怎么做?标记在哪里?交换机或者路由器是怎么识别这份流量是数据、语音or视频?
报文分类和标记
分类有两种:一为简单流分类:利用我们在VLAN,MPLS,IP报文里面标记的字段进行分类, 称简单流分类;二为复杂流分类:通过五元组:源IP,目的IP,源端口,目的端口,传输层协议来唯一区分一条流。
分类完当然是标记啦,标记可以标记在三个地方:
1. VLAN tag中的PRI字段(这里要把VLAN的格式+长度记住)
2. MPLS中的EXP字段
3. IP报文中的TOS字段
IP Precedence 一共3bit,所以可以定义的优先级为0-7;后续不够用又开发了D、T、R位,名为DSCP,所以可以定义的优先级为0-63,用前3位称IPP;用前五位称DSCP。
现在语音、数据、视频流量通过IP优先级或者DSCP优先级、输入接口、IP报文的五元组等规则来对报文进行分类好、标记好了,在进交换机or路由器前,我们可以对其做一个流量管理,这部分我们先不讲,后面会详细讲到哈。然后就要进入交换机or路由器的内部,内部有一个虚拟出来的队列,高优先级的则会进入高队列,低优先级则进入低队列。那么是哪个协议定义了我们标记的优先级7就比优先级0更优呢?是PHB(Per Hop Behavior)协议,一句话概括这个协议的作用:定义服务等级,也就是7>6>5>4>3>2>1>0
接下来看一张表,让我们具体了解PHB协议。
PHB协议定义了CS、EF、AF、BE队列。我们这样理解,A:DSCP一共有0-63个优先级,B:IPP、MPLS、VLAN有0-7个优先级。我们来做一个划分,把DSCP称A,IPP、MPLS、VLAN称B,那么:
大家仔细观察一下这个表格可以看出 A-B-CS之间的关系,PHB把这些优先级都纳入到了CS的范围,那么EF、AF、BE是什么呢?
BE是CS0中DSCP为0时一个特殊称呼(如果标记成0,进入BE队列,尽力转发)
EF 则是CS4中DSCP为46时的一个特殊称呼(如果标记成46,进入EF队列,加速转发。)
AF1则是CS1中DSCP为10、12、14时的特殊称呼(如果标记成10、12、14(对应AF11,AF12,AF13)则进入AF1队列,确保转发。)
AF2则是CS1中DSCP为18、20、22时的特殊称呼(如果标记成18、20、22(对应AF21、AF22、AF23)则进入AF2队列,确保转发。)
AF3则是CS1中DSCP为26、28、30时的特殊称呼(如果标记成26、28、30(对应AF31、AF32、AF33)则进入AF3队列,确保转发。)
AF4则是CS1中DSCP为34、36、38时的特殊称呼(如果标记成34、36、38(对应AF41、AF42、AF43)则进入AF4队列,确保转发。)
PS:CS7、CS6默认用于协议报文。如STP等报文 EF>AF4 3 2 1>BE
这里注意一个点:在AF1中AF13的丢弃等级>AF12>AF11。为什么呢?我们来补回前面DSCP的一个知识点。
AF11标记成10写成8bit的二进制则是001010 00
AF12则是标记成12写成8bit的二进制则是00110000
AF13则是标记成14写成8bit的二进制则是00111000
TOS字段前3bit为IPP,然后是D、T、R位。这三位置1越多代表丢弃概率越高(D、T、R三个比特,分别表示延迟要求、吞吐量和可靠性。)故AF11比AF12、AF13重要,而AF21比AF11重要。
针对报文头部中的信息进行分类:
- 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不做改变
简单流分类配置:
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处理,此时可以配置映射表,将一种类型的标记映射成另一种类型的标记,当设备收到
数据包时,会根据标记查看映射表在响应的网络类型中打入对应的标记。
公网上的路由器我相信90%以上都是支持DSCP的,但是你设置了ip header也没有用。因为:
1. 运营商的边界路由器会对你的数据包进行重新tagging,你设置了DSCP也会被重写为0
2. 如果是普通的Internet线路的话,不会提供QoS功能的,都是FIFO(First In First Out)
你花钱了,运营商信任你的配置,保持原样,这样一旦你的流量进入运营商网络,对EF流量进入低延迟(LLQ)队列,运营商从接入网、汇聚网、核心网路由器都有低延迟队列在静静等待着EF流量的到来,提供VIP服务。
如果你没有花钱,即使你的多媒体流量被设置为EF,进入运营商会被鄙视,被改写为BE (Best Effort),被贬为普通流量,乖乖排队。
如果你花钱了,但是你只买了2Mbps EF流量,可是你却发送3Mbps EF流量,对不起,其中1M的流量将被贬为BE流量。
DSCP为Cisco开发并标准化,将3 bit 的TOS (Type Of Service),扩展到6 bit 成为DSCP ,其对应关系为
IP Precedence 5 : EF
IP Precedence 4: AF4
IP Precedence 3: AF3
IP Precedence 2: AF2
IP Precedence 1: AF1
IP Precedence 0: BE