报文分类与标记
报文分类与标记
- 在上一节我们讲解了QoS的服务模型,现在要对QoS实现流量的分类以及标记进行讲解,并且对配置也要进行相应介绍
报文分类的必要性
报文分类的依据都有哪些呢?先前我们学过利用ACL可以匹配五元组来进行分类,那QoS都支持哪些分类方式呢?
五元组:源IP地址,源端口,目的IP地址,目的端口,和传输层协议这五个量组成的一个集合。
例如:192.168.1.1 10000 TCP 121.14.88.76 80 就构成了一个五元组。其意义是,一个IP地址为192.168.1.1的终端通过端口10000,利用TCP协议,和IP地址为121.14.88.76,端口为80的终端进行连接。
五元组能够区分不同会话,并且对应的会话是唯一的。
报文分类的依据
TAG 字段由4个字节组成,前两个字节为TPID(TAG Protocol Identifier),其值固定为0x8100,表示是dot1q标准的TAG。后两个字节为TCI(TAG Control Information),它又分为三个部分,图示如下:
1)user_priority:用户优先级,占3个比特,可以表示8种不同的优先级,不同优先级的报文可以得到不同级别的服务;
2)CFI:规范格式指示符(Canonical Format Indicator),占一个比特,它通常设置为0,表示报文中的MAC地址格式为规范格式(遵循IEEE 802标准,即字节中的比特位顺序与标准一致),如果该位设置为1,则根据网络类型的不同具有不同的意义,具体可以参考dot1q标准文档。
3)VID:即VLAN的标志符,占12个比特,表示一个无符号整数,范围从0~4095,其中0表示报文没有指定的VID(priority tagged),4095按规定是保留的,不能使用,交换机收到这样的报文不会进行转发,因此可用的VID范围为1~4094,这其中VID 1又规定为默认VLAN,在用户没有配置的情况下,设备的出厂配置是所有端口属于VLAN 1,端口的默认VID也是VLAN 1。
4)由于在二层上传输的时候,我们的PRI值可能性也是0-7,如果碰到DSCP的话,实际上要用到一个数值叫做COS值,这个数值实际上在交换机上有一张表格,和DSCP值形成了映射,因此我们能够在交换机上查询到COS->DSCP 以及DSCP-》COS的map
- 在之前讲解MPLS的时候,我们提到了MPLS里面的EXP字段和IP里面的ipp代表的意思是一致的。也是三个比特
主要这里会对IP报头里面的ToS字段里面的参数进行一个详细的讲解
·使用报文自身含有的QoS优先级的字段来是一种粗略的分类方式,并且匹配规则比较简单,因此这种方式叫做简单流分类
VLAN 802.1p字段/ MPLS EXP字段
·根据IEEE 802.1Q定义,VLAN TAG中的PRI字段用于标识QoS服务等级。
·对于MPLS报文,通常将标签信息中的EXP域作为MPLS报文的CoS域,与IP网络的ToS域等效,用来区分数据流量的服务等级。
IPv4报文的IP-Precedence字段
- 根据RFC791定义,IP报文头部里面的ToS中,高三位为ip-precedence位,当然其实有多个RFC文档都定义了IP报文头部里面的ToS,例如RFC1349对IP头部里面的ToS的高三位定义和RFC791是一样的。
- RFC:是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件,也就是类似于互联网备忘录的存在,基弧所有的互联网标准都收录在RFC文件之中。
- ToS中间3位是属于D/T/R,D bit代表延迟(Delay),T bit代表吞吐量(Throughput),R bit代表可靠性(Reliability)。
- 如果有三个比特位,我们总共有8种可能,因此只能分为8类流量,对于互联网来说肯定是不足够的,因此为了解决这个问题,新的标准就产生了
IPv4报文的DSCP字段 (1)
-
在RFC2474中,IPv4报文头的ToS字段进行了重新定义,也就是我们现在使用的DS字段。
-
使用这种形式,将原先3个比特扩大为6个比特,因此总共有2^6种可能性,也就是64种,现在我们使用的都是DSCP
-
其实我们可以在设备上,看
到IP优先级不同组合以及名字。
演示: -
能够看到如果使用IPP的标准的话,那么显示出来是8种可能性,为0-7,也就是下列的分配,每个流量都有指定的数字标示
-
可以直接写数字,或者使用名字,实际上是一样的效果
|| || || || || || || || || || || || ||
DSCP -
这个有64种可能性,是0-63。里面是有组合的,只不过现在不同的组合,我给它不同的命名而已。
-
DSCP默认情况下,值为全0
DSCP详解
- 默认DSCP为0
·IPv4报文头部里的ToS字段以及IPv6里面有个traffic class的字段统称为DS域
·DSCP有前六个比特用来做PHB行为(这里的PHB行为不是次末跳弹出的意思,叫做per-hop behaviors)每一跳行为,做QoS我们需要对每一跳都去做才能有效果,因此叫做每一跳行为,对于PHB行为就体现在数据的转发方式,队列调度方式以及是否有预留带宽,这类行为,因此理论上来说,DSCP值不同,我们需要有不同的PHB行为。
·
·DSCP有0-63,这64种可能性,但是实际上对于数值本身来说,是没有任何动作的,动作需要我们认为规定,但是在刚刚去看了以后,大家发现使用了部分帮助以后,它会有推荐的标准,例如DSCP值可能是代表EF,EF应该给语音流,但是如果不按照常规出牌,我EF给BT的流量,那么要执行干掉的操作,肯定也是没有任何问题的,因此动作是人为的,本身这个数值是没有任何意义的,只是一个标识。
·DSCP为了兼容老的设备,因为老的设备还是支持IPP的高三位的分配,因此大家能够看到刚才实验中出现的这类数值
发现前三位会变化,但是后三位不变,这种情况下,我们可以通过DSCP去兼容IPP
IPv4报文的DSCP字段 (2)
·EF定义DSCP为101110,为固定值。EF常用于承载语音的流量,因为语音要求低延迟,低抖动,低丢包率,是仅次于协议报文的最重要的报文。
总结:
①QoS进行数据流分类
②流分类以后进行打标(着色)
③对相应标记的流量执行策略。
④拥塞管理(采用不同的队列调度方法)
⑤拥塞避免
报文分类配置需求
·流分类实际上就是按照一定规则识别符合某类特征的报文,特征不同的报文享受到的服务不同。按照分类规则来说,我们可以把流量分类分为简单流分类以及复杂流分类
·简单流分类:↓
·复杂流分类↓
复杂流分类一般情况上使用在DS边界节点上,在非DS域有数据过来时,我们通过五元组进行相应的打标,然后在DS域内,可以使用统一的简单流分类,可以使用ipp、dscp、cos、exp进行分类就可以了。