QOS相关协议规范

1    前言

1.1       关于此文档

此文档是本人这段时间内学习QOS相关知识,总结并且整理出来的文档。供大家参考。

本文档描述QOS相关知识,各章节说明如下:

1前言,即此章节;

2 QOS简介,介绍QOS基本知识、QOS提出的意义,以及QOS的三种不同的服务模型;

3:介绍QOS相关的技术,linux下的TC流量

参考资料

网络资源。

2      QoS简介

2.1     QoS提出背景

在传统的TCP/IP网络的路由器中,所有的IP数据包的传输都是采用FIFO(先进先出),尽最大努力传输的处理机制。在早期网络数据量和关键业务数据不多的时候,并没有体现出非常大的缺点,路由器简单的把数据报丢弃来处理拥塞。但是随着计算机网络的发展, 数据量的急剧增长,以及多媒体,VOIP数据等对延时要求高的应用的增加。路由器简单丢弃数据包的处理方法已经不再适合当前的网络。单纯的增加网络带宽也不能从根本上解决问题。所以网络的开发者们提出了服务质量的概念。概括的说:就是针对各种不同需求,提供不同服务质量的网络服务功能。提供QoS能力将是对未来IP网络的基本要求。

2.2    QoS  

QoS(服务质量):网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。当网络过载或拥塞时,QoS能保证重要业务不受延迟或丢弃,同时保证网络的高效运行。

2.3    为什么需要QoS?

ü  应用对延时、丢包、抖动等参数非常敏感;

ü  在网络中总有一些诸如传输时延、处理延时、CRC错误之类不可调整的因素存在;

ü  在网络中还存在如缓冲延时、丢包率等和链路有关的因素存在;

ü  在绝大多数的网络中都存在一定程度的拥塞;

ü  不能总用增加带宽的方式来解决问题;

ü  在这种情况下最好的解决方案就是应用一个“可保证”的策略。

2.4    几种主要的流量管理技术

ü  DBA 算法策略:DBA 主要用于控制ONU 的上行带宽。

ü  流分类:依据一定的匹配规则识别出对象。

ü  流量控制:通过Policing、shaping 等机制进行流量管制。

ü  优先级与队列的映射:根据数据包的优先级进入不同优先级的出口发送阵列。

ü  队列调度:队列调度定义ONU 中输出队列发送时调度的策略。

ü  拥塞管理:将报文放入队列中缓存,并采取某种调度算法安排报文的转发次序,通常作用在接口出方向。

3      QoS相关名词解释

3.1    TOS 与DSCP 的前世今生

3.1.1  TOS

RFC 791是IETF即Internet工程任务组(Internet Engineering Task Force)于1981年9月制定的一个关于IP协议的一个正式文件。IETF一个专门制定互联网各种协议标准的组织。这个RFC 791里面就对IP协议的运行机制,报文格式做了详细的说明和规范,其中就包括了Type Of Service字段,简称TOS字段。

如下所示,TOS字段一共8个Bit(Bit就是一个二进制位),即8位。IETF规定了低位的0,1,2三位就用于IP Precedence即IP优先级,中间的3,4,5用于Type Of Service,IETF规定这个字段用中间的三位,即3,4,5位用来表示这个IP报文期望得到的一种高质量的传输服务,也就是说中间这三位表明了这个IP包的服务类型(Type Of Service)。它用了三个参数来实现高质量服务:低延迟、高吞吐量、高可靠性。可以看到Bit 3第三位为0时代表正常延迟,为1为低延迟;第四位为0代表正常吞吐量,为1为高吞吐量;第五位为0代表正常可靠性,为1代表高可靠性。最后的Bit 6,7位保留不使用(为了将来使用而保留):

 

          0    1  2   3   4   5  6   7

          +-----+-----+-----+-----+-----+-----+-----+-----+

         |           |   |    |  |   |   |

 | PRECEDENCE |  D | T  |  R |  0|  0 |

 

     Bits 0-2:  Precedence.

 

     Bit    3:  0 = Normal Delay,      1 = Low Delay.

 

     Bits   4:  0 = Normal Throughput, 1 = High Throughput.

 

      Bits  5:  0 = Normal Relibility, 1 =High Relibility.

 

     Bit  6-7:  Reserved for Future Use.

 

         111 - Network Control

 

         110 - Internetwork Control

 

         101 - CRITIC/ECP

 

         100 - Flash Override

 

         011 - Flash

 

         010 - Immediate

 

         001 - Priority

 

         000 – Routine

 

可以看到关于IP Precedence在这里只是做出了简单的规定,用三个Bit置不同位来实现不同的优先级。而关于中间的3,4,5位TOS,还做了一些其它的说明和规定。

 

但在1992年7月,IETF又制定了RFC 1349(好像中间关于TOS字段也有过修改说明),这个标准重新规定了有关TOS字段的意义:

                0     1     2    3     4     5    6     7

            +-----+-----+-----+-----+-----+-----+-----+-----+

            |                 |                       |     |

            |   PRECEDENCE |          TOS             |MBZ |

 

         

RFC 791里用Bit 0,1,2表示IP优先级,用Bit 3,4,5实现IP报文渴望得到的服务即TOS,最后两位保留使用,而在RFC 1122中又规定了将Bit 6,7划入了TOS部分,RFC 1349将重新把Bit 7划为保留位,中间的Bit 3,4,5,6四位来表明TOS。当然Bit 0,1,2三位仍然为IP优先级位,

以下是RFC 1349中COPY下的:

 

                    1000   --  minimize delay

 

                    0100   --  maximize throughput

 

                    0010   --  maximize reliability

 

                    0001   --  minimize monetary cost

 

                    0000   --  normal service

 

如上所示,从低位到高位依次置1所代表的含义是:低延迟,高吞吐量,高可靠性,低花费(开销),正常服务。要注意的是这四个bit只能同时置1个位,不能同时置两个或多个位为1

下图是tecenter中tos的配置,可以看到不同bit的含义。

 

3.1.2  DSCP

DSCP,全称叫做差分服务代码点(DifferentiatedServices Code PointRFC2474定义,它重新命名了IPv4报头中TOS使用的那1字节和IPv6报头中数据类(Traffic Class)那1字节,新的名字称为DS字段(DifferentiatedServices Field)。该字段的作用没有变,仍然被QoS工具用来标记数据。不同的是IPv4使用3比特,而DSCP使用6比特,最低2比特不用。
RFC2474 定义最高3比特为级别/类别选择代码(Class Selector Codepoints,CS),其意义和IPv4报头中IP优先级的定义是相同的,CS0 ~ CS7的级别相等于IP优先级0 ~ 7。但它并没有定义第3到第5比特的具体含义以及使用规则。DSCP使用6比特,可以定义64个优先级(0-63)。
AF
保证转发(Assured Forwarding, AF)由RFC2597对CS1~CS4进行进一步定义。它使用第3和第4比特做丢弃优先级标志。01-低丢弃优先级;10-中丢弃优先级;11-高丢弃优先级。这样,在同一类数据中,又根据被丢弃的可能性划分出3档。下表列出了AF服务等级及其对应的DSCP值:
                      CS1       CS2        CS3      CS4  
Low drop         AF11    AF21    AF31      AF41
                     001010   010010   011010   100010
Medium drop    AF12    AF22    AF32      AF42
                     001100   010100   011100   100100
High drop       AF13     AF23   AF33      AF43
                      001110   010110   011110   100110
AF的定义为数据分类提供了方便,比如,运营商可以向用户提供4中服务协约(SLA):白金,金,银,铜,并为每一种服务的数据分配一定的带宽。当然,不同服务的收费标准也是不同的。
EF
无阻碍转发(Expedited Forwarding, EF)由RFC2598定义,DSCP值为46 (101110)EF服务适用于低丢包率,低延迟,低抖动及保证带宽的业务,如VOIP
其他
DSCP= 000000 尽力转发服务等级 (EF);
CS = 6 网间控制(InternetworkControl),DSCP= 48 (110000)
CS = 7 网内控制 (Intranetwork Control),DSCP= 56(111000)
在配置命令中,既可以使用十进制数值,也可以使用二进制数值,还可以使用名称。例如,28,011100, AF32 三个写法意义相同。

实际中0-63并没有完全规定。

3.2    802.1Q 与802.1P

802.1Q协议定义了基于接口的VLAN模型.802.1p规范使第2层交换具有以优先级区分信息流的能力,完成动态多波过滤。

二层数据帧里有4个字节的802.1q标签头,包含2字节的标签和2字节的控制信息,在控制信息(vlan tag的TCI区域)的前3位,就定义为802.1p优先级。它指明帧的优先级。一共有8 种优先级,主要用于当交换机阻塞时,优先发送优先级高的数据包。

3.3    IPv6QoS定义

   IPQoS的实现,需要网络中所有相关元素的全面支持,包括应用、终端和网络设备等。在基本的IP协议层面,提供一些字段的定义,用于支持QoS的实现。IPv6同样如此。

3.3.1      IPv6包头格式

   IPv6的报头格式如图1所示(图中同时显示了IPv4报头格式,以示对比)。和IPv4相比,IPv6采用更规整的结构,便于使用硬件进行高速处理。IPv6定义了一个固定长度的基本报头,其他的一些选项归类为扩展报头,其中包括每一个网络节点都必须处理的HopbyHop报头等。

   从图中可以看出,IPv6有两个字段与QoS有关,分别为流量类别(TrafficClass,TC)和流标签(FlowLabel,FL)字段。流量类 别字段有8位,和IPv4的服务类型(ToS)字段功能相同,用于对报文的业务类别进行标识;流标签字段有20位,用于标识属于同一业务流的包。流标签和 源、目的地址一起,惟一标识了一个业务流。同一个流中的所有包具有相同的流标签,以便对有同样QoS要求的流进行快速、相同的处理。

   IPv6QoS信令的定义还处于探讨阶段,具体的内容包括可用带宽、保证带宽、优先级以及与报文处理有关的一些定义字段等。

  建设IP网络,QoS是一个非常重要的方面。而IPv6在未来的2~5年内,必然会成为网络建设的主流,因此,探讨IPv6QoS有其现实的意义,对IP网络向电信级过渡以及相关产品的研发均能提供有效的线索。

   目前,IPv4QoS已经获得比较好的发展,因此在IPv6大规模部署之前,可以先借助IPv4QoS的成果,进一步研究FlowLabel机制的使用。 从目前情况看,可以通过Diff-Serv实现QoS,以后随着技术的发展和标准的成熟,可以逐渐引入其他更有效的方法。而终结目标是,伴随着ITU-T 的QoS架构和实现方法的成熟,最终解决IPv6 QoS。

4      QoS相关技术,Tc用于Linux内核的流量控制

4.1              流量控制包括以下几种方式:

4.1.1  SHAPING(限制)

当流量被限制,它的传输速率就被控制在某个值以下。限制值可以大大小于有效带宽,这样可以平滑突发数据流量,使网络更为稳定。shaping(限制)只适用于向外的流量。

4.1.2  SCHEDULING(调度)

通过调度数据包的传输,可以在带宽范围内,按照优先级分配带宽。SCHEDULING(调度)也只适于向外的流量。

4.1.3  POLICING(策略)
SHAPING用于处理向外的流量,而POLICIING(策略)用于处理接收到的数据。

4.1.4  DROPPING(丢弃)
如果流量超过某个设定的带宽,就丢弃数据包,不管是向内还是向外。

4.2    流量的处理由三种对象控制:

4.2.1  QDISC(排队规则)

QDisc(排队规则)是queueing discipline的简写,它是理解流量控制(traffic control)的基础。无论何时,内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据包加入队列。然后,内核会尽可能多地从qdisc里面取出数据包,把它们交给网络适配器驱动模块。
最简单的QDisc是pfifo它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。不过,它会保存网络接口一时无法处理的数据包。

4.2.2  CLASS(类)

某些QDisc(排队规则)可以包含一些类别,不同的类别中可以包含更深入的QDisc(排队规则),通过这些细分的QDisc还可以为进入的队列的数据包排队。通过设置各种类别数据包的离队次序,QDisc可以为设置网络数据流量的优先级。

 

 

4.2.3  FILTER(过滤器)

filter(过滤器)用于为数据包分类,决定它们按照何种QDisc进入队列。无论何时数据包进入一个划分子类的类别中,都需要进行分类。分类的方法可以有多种,使用fileter(过滤器)就是其中之一。使用filter(过滤器)分类时,内核会调用附属于这个类(class)的所有过滤器,直到返回一个判决。如果没有判决返回,就作进一步的处理,而处理方式和QDISC有关。
需要注意的是,filter(过滤器)是在QDisc内部,它们不能作为主体。

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值