DiffServ四要素

对于QoS区分服务模型(DiffServ),我们可以从以下四个要素展开理解:

  1. 流分类和标记(classification & marking)
  • 基于QoS优先级流分类
  • QoS优先级映射
  • 基于报文五元组流分类
  • MQC
  1. 限速之流量监管和整形(shaping & policing)
  2. 拥塞避免(congestion avoidance)
  3. 拥塞管理之队列(Congestion management)

报文标记QoS优先级的字段

报文中用于标记QoS优先级的字段有五类:

  1. 802.1q帧的Cos字段
  • 对于VLAN帧(2层),可以根据VLAN帧头中的CoS(code of service)字段(802.1p优先级)进行流分类。
  • VLAN帧头中的PRI字段(即802.1p优先级)标识了服务质量需求,VLAN帧中的PRI字段位置如下图所示。

    在VLAN帧头中包含3比特长的PRI字段。PRI字段表示8个传输优先级,按照优先级从高到低顺序取值为7~0。
  1. MPLS的EXP字段
  • 对于MPLS报文(2.5层),则一般是根据MPLS报文中的EXP域进行流分类。
  • EXP域有3位,表示8个传输优先级,按照优先级从高到低顺序取值为7~0,通常作为MPLS报文的CoS域,与IP网络的ToS或DSCP域等效。
  1. IP Precedence优先级
  • 对于IPv4数据包(三层),可以IPv4头部中TOS(type of service)字段进行流分类,如下图所示:

IPv4头部中TOS字段中前三位,可以表示8个传输优先级,按照优先级从高到低顺序取值为7~0。

QOS分类标识_IP

  1. DSCP(Differential Services Code Point) 区分服务代码点
  • 对于IPv4报文(三层),基于IPv4包首部中的ToS域的前6位(即DSCP域)来标记报文;
  • 使用DSCP域可将报文最多分成64类,如下图所示:
  • 比特0~2表示Precedence字段。
  • D比特表示延迟要求(Delay,0代表正常延迟,1代表低延迟)。
  • T比特表示吞吐量(Throughput,0代表正常吞吐量,1代表高吞吐量)。
  • R比特表示可靠性(Reliability,0代表正常可靠性,1代表高可靠性)。
  • C比特表示传输开销(Monetary Cost,0代表正常传输开销,1代表低传输开销)。
  • 比特6和7保留。
  1. IPv6的TC字段
  • 在IPv6报文头部中(三层),有两个字段与QoS有关,分别为流量类别TC(Traffic Class)和流标签FL(Flow Label)字段。
  • 流量类别字段有8位,和IPv4的服务类型(ToS)字段功能相同,用于对报文的业务类别进行标识;
  • 流标签字段有20位,用于标识属于同一业务流的包。
  • 流标签和源、目的地址一起惟一标识了一个业务流。同一个流中的所有包具有相同的流标签,以便对有同样QoS要求的流进行快速、相同的处理。

区分服务的PHB(Per-Hop Behavior)逐跳行为

  • 在每一个DS节点(区分服务域中的节点)上对分组的处理称为每跳行为PHB(Per-Hop Behavior)。
  • PHB描述了DS节点对具有相同DSCP的分组采用的外部可见的转发行为。
  • 协议定义了四种标准的PHB:

(1)类选择码CS(Class Selector),

  • DSCP六个比特位格式是XXX000
  • XXX最大值为8,一共有八种变化
  • CS定义的DSCP=IP Precedence×8,比如CS6=6×8=48,CS7=7×8=56。
  • CS代表的服务等级与在网络中使用的IP Precedence意义相同。

(2)加速转发EF(Expedited Forwarding),

  • DSCP六个比特位格式是101110,十进制值为46

(3)确保转发AF(Assured Forwarding),

  • DSCP六个比特位格式是XXXYY0
  • XXX最大值是8,但是目前只用到4,也就是001~100(四种变化)
  • YY最大值是3,从01~11(三种变化)
  • XXX和YY组合在一起,一共12中格式(AF11-AF13,AF21-AF23,AF31-AF33,AF41-AF43)
  • YY同时表示三种不同的丢弃概率,值越大,丢弃概率越高(01低、10中、11高)

(4)尽力而为BE(Best-Effort)。

  • DSCP六个比特位值为全0(000000)

流分类方法

流分类是对进入DiffServ域的数据帧或者数据包进行分类,以便在网络中得到相应的合适处理。

基于报文中QoS优先级字段进行分类

可以根据报文所携带的QoS优先级位(COS、EXP、IP precedence、DSCP、TC),识别出不同优先级特征的流量,实现外部优先级和内部优先级之间的映射。

  1. QoS优先级映射
  • 在报文进入设备时,将报文携带的QoS优先级统一映射到设备内部的服务等级Service Class(也叫做调度优先级PHB)和丢弃优先级(也叫颜色Color),
  • 在设备内部,根据报文的服务等级进行拥塞管理,根据报文的颜色进行拥塞避免;
  • 在报文离开设备时,需要将内部的服务等级和颜色映射为QoS优先级,以便后续网络设备能够根据QoS优先级提供相应的服务质量。
  • 将QoS优先级映射到服务等级和颜色是在报文上行方向进行,而服务等级和颜色映射为QoS优先级则是在下行方向进行。
  1. 服务等级(Service Class)
  • Service Class是指报文在设备内部的服务等级,支持8种取值,优先级从高到低依次为CS7、CS6、EF、AF4、AF3、AF2、AF1、BE。
  • Service Class决定了报文在设备内部所属的队列类型。
  • 而服务等级的高低取决于具体的队列调度算法配置:
    (1)如果8种类型的队列都配置为PQ(优先级队列)调度,则CS7>CS6>EF>AF4>AF3>AF2>AF1>BE;
    (2)如果BE配置为PQ调度,其余7种类型的队列配置为WFQ(加权公平队列)调度,则BE的优先级比其余7个都高;
    (3)如果8种类型的队列都配置成WFQ调度,则相互之间无优先级高低之分。
  1. 丢弃优先级(Color)
  • Color是指报文在设备内部的丢弃优先级,用于实现同一个队列内部,当队列发生拥塞时报文丢弃顺序。
  • Color支持3种取值,IEEE定义的优先级从低到高依次为Green、Yellow、Red(优先级越高,丢弃可能性越大)。
  • 丢弃优先级的高低具体取决于对应参数的配置,例如:配置Green最大只能使用70%缓存,Red最大可以使用100%缓存,则Green的丢弃优先级比Red高。
  1. 端口信任模式(port trust mode)
  • 当报文在DiffServ域边界被分类之后,网络的中间节点可以根据分类结果对不同类别的流量给予差别服务。
  • 如果下游接口选择使用上游节点的分类结果,则表示该节点信任上游节点的分类结果,即信任(trust)从连接上游节点的端口接收的报文所携带的QoS标记。
  • 当设备在实现QoS优先级映射时,可以选择信任端口的上行报文携带的优先级标记(包括DSCP、IP Precedence、802.1p、MPLS Exp),这种模式称为端口信任模式。
  1. 优先级映射表
  • 报文进入设备时,设备根据优先级映射表实现QoS优先级映射。
  • 在DiffServ模型中,不同DS域允许有不同的PHB映射关系,以实现不同的服务提供策略,因此设备需要允许管理员定义DS域并针对不同的DS域设定不同的优先级关系。
  • 设备除了允许管理员自定义DS域,同时系统预定义了如下两个域:
    (1)Default域:描述了缺省情况下IP报文、VLAN报文、MPLS报文的外部优先级和服务等级、颜色之间的映射关系。
    (2)5p3d域:描述了VLAN报文802.1p优先级和设备内部服务等级、颜色之间的映射关系,应用于仅支持5种服务等级(Service Class)和3种丢弃优先级的802.1ad局域网。

基于报文中五元组字段进行分类

问题背景
  • 实际网络中,报文中标记QoS优先级字段可能不会被用户标记,基于报文中标记QoS优先级对流进行分类,难以实现
  • 简单基于报文的QoS优先级字段无法对应用层的流量进行分类(比如web流量、Telnet流量,都是应用层的流量,只是端口号不同)
解决方法

可以基于报文中的五元组(源IP地址、源端口号、协议号码、目的IP地址、目的端口号)对流进行分类。

  1. 二层(链路层)流分类,以下匹配项可以任意组合:
  • VLAN外层Tag的802.1p优先级(QinQ)
  • VLAN内层Tag的802.1p优先级
  • 源MAC地址
  • 目的MAC地址
  • 二层封装的协议字段
  1. MPLS流分类,以下匹配项可以任意组合:
  • EXP优先级字段
  • Label标签字段
  • TTL跳数字段
  1. IPv4流分类,以下匹配项可以任意组合:
  • DSCP优先级字段
  • IP优先级
  • 源IPv4地址
  • 目的IPv4地址
  • IPv4报文的分片
  • TCP/UDP源端口
  • TCP/UDP目的端口
  • 协议号
  • TCP同步标志
  1. IPv6流分类,以下匹配项可以任意组合:
  • IPv6报文的DSCP优先级
  • 协议号
  • 源IPv6地址
  • 目的IPv6地址
  • TCP/UDP源端口
  • TCP/UDP目的端口
  1. ACL复杂流分类,以下匹配项可以任意组合:
  • DSCP优先级
  • IPv4/IPv6优先级
  • 源IPv4/IPv6地址
  • 目的IPv4/IPv6地址
  • IPv4报文的分片
  • TCP/UDP源端口
  • TCP/UDP目的端口
  • 协议号
  • TCP同步标志
MQC(模块化QoS命令行)
  • 基于报文的五元组对流进行分类之后,一般将这些分类的流与可实施的流动作关联,形成流策略,并且将策略应用在接口上,这种模式被称为模块化QoS命令行配置(MQC)。
  • MQC可以分为三步:
  1. 定义流量类型,对流进行分类,用if-match语句设定流分类的匹配规则。
  2. 为不同类别流量制定策略(流分类+流动作)。
  3. 将策略应用在接口下。