QoS专题-第3期-QoS实现之报文简单分类与标记

QoS实现之报文简单分类与标记

上一期专题我们讲到,MQC中的流分类可以实现报文的分类,流行为可以对报文进行重标记,从而实现对流量的精细化差分服务。而优先级映射则可以根据802.1p优先级、DSCP优先级和本地优先级对报文进行分类,是另一种报文分类和标记的方法。本期专题我们将对其进行详细介绍。

1      为什么要有优先级映射?

优先级映射用来实现报文携带的QoS优先级与设备本地优先级(即设备内部区分报文的服务等级)之间的转换,然后设备根据本地优先级提供有差别的QoS服务。

携带QoS优先级的报文到达设备后,外部优先级(如802.1p、DSCP)被映射成设备的本地优先级,这样设备才能够识别出该如何处理报文。报文离开设备时,本地优先级又被映射成外部优先级,从而保证报文到达下一台设备时,设备能够继续根据报文中的优先级字段提供差分服务。也就是说,通过优先级映射对报文分类是基础,是有区别地实施服务的前提。

用户可以根据网络规划在不同网络中使用不同的QoS优先级字段,例如在二层网络中使用802.1p优先级,三层网络中使用DSCP优先级,MPLS网络中使用EXP优先级。

本期专题主要介绍二层和三层网络中的优先级映射。

2      QoS优先级字段

既然有优先级映射,那我们就有必要先来了解一下报文里的哪些字段可以用来标识优先级。

2.1      VLAN帧头中的802.1p优先级

根据IEEE 802.1Q定义,VLAN帧头中的PRI字段(即802.1p优先级),或称为CoS(Class of Service)字段,标识了服务质量需求。VLAN帧中的PRI字段位置如图1所示。

20161229140955144001.png

图1 VLAN帧中的802.1p优先级

在802.1Q头部中包含3比特长的PRI字段。PRI字段定义了8种业务优先级CoS,按照优先级从高到低顺序取值为7、6、5、4、3、2、1和0。

2.2      IP报文头中的IP Precedence字段和DSCP字段

RFC 791中将IP报文头中的ToS域的最高3位称为Precedence字段,标识8个IP优先级,从高到低顺序取值为7、6、5、4、3、2、1和0。

RFC 791定义的ToS域中,除了Precedence字段外,ToS域中还包括D、T、R三个比特,分别表示延迟要求、吞吐量和可靠性。

RFC 1349重新定义了ToS域,增加了C比特,表示传输开销。

RFC 2474又重新定义了ToS域,将0位~5位改名为DSCP字段,6位和7位是保留位(用于流控制)。

IP Precedence字段和DSCP字段在报文中的位置如图2所示。

20161229140956448002.png

图2 IP Precedence和DSCP字段

3      DiffServ域模型的优先级映射

3.1      原理介绍

在DiffServ域模型下,优先级映射利用DS域来管理和记录QoS优先级与服务等级、颜色之间的映射关系,其过程如下:

1.      在报文进入设备时,报文携带的QoS优先级被映射到设备内部服务等级和颜色。

2.      设备根据报文的服务等级及颜色实现拥塞避免。

3.      在报文离开设备时,内部服务等级和颜色被映射为QoS优先级。设备根据内部服务等级与QoS优先级之间的映射关系确定报文进入的队列,从而针对队列进行流量整形、拥塞避免、队列调度等处理。设备可以修改报文发送出去时所携带的QoS优先级,以便其他设备根据报文携带的优先级提供相应的QoS服务。

将QoS优先级映射到服务等级、颜色是对入方向的报文进行,而将服务等级、颜色映射为QoS优先级则是对出方向的报文进行,如图3所示。

20161229140957365003.png

图3 QoS优先级映射

这里提到了服务等级和颜色的概念,下面我们分别来介绍一下。

3.1.1        服务等级

服务等级,也叫本地优先级,是指报文在设备内部的服务质量,它决定了报文在设备内部所属的队列类型。服务等级以PHB(Per Hop Behavior)表示。

每一个DS节点上对报文的处理称为PHB。PHB描述了DS节点对报文采用的外部可见的转发行为。PHB可以用优先级来定义,也可以用一些可见的服务特征如报文延迟、抖动或丢包率来定义。PHB只定义了一些外部可见的转发行为,没有指定特定的实现方式。

最初,RFC定义了四种标准的PHB:

l  CS(Class Selector,选择类器)

l  EF(Expedited Forwarding,加速转发)

l  AF(Assured Forwarding,确保转发)

l  BE(Best-Effort,尽力而为),为缺省的PHB

在RFC 2474中,CS又被划分为两个等级,即CS6和CS7。

在RFC 2597中,AF又被划分为四个等级,即为AF1~AF4。每个等级又有3个丢弃优先级,其表达形式为:AF1x~AF4x(x代表丢弃优先级,按照从低到高的丢弃优先级,取值为1~3)。

至此,PHB共有8个细分级别,按优先级从高到低依次为CS7、CS6、EF、AF4、AF3、AF2、AF1、BE。RFC定义的与之对应的DSCP优先级如表1所示。

表1 RFC定义的PHB及与之对应的DSCP优先级

PHB

DSCP优先级

CS7

56

CS6

48

EF

46

AF4

34,36,38(对应AF41,AF42,AF43)

AF3

26,28,30(对应AF31,AF32,AF33)

AF2

18,20,22(对应AF21,AF22,AF23)

AF1

10,12,14(对应AF11,AF12,AF13)

BE

0

CS7和CS6,默认用于协议报文,如企业内部各个交换机之间的STP报文、LLDP报文、LACP报文等。如果这些报文无法接收会引起协议中断。

EF用于承载VoIP语音的流量,或者企业内部视频会议的数据流,因为语音业务的报文要求低延迟、低抖动、低丢包率,其重要程度仅次于协议报文。

AF4用来承载语音的信令流量,即VoIP业务的协议报文。

AF3可以用作远端设备的Telnet、FTP等服务。这些业务对带宽要求适当,但是对网络时延、抖动都非常敏感,同时要求完全可靠的传输,不能出现丢包。

AF2可以用来承载企业内部IPTV的直播流量,可以保证在线视频业务的流畅性。直播业务的实时性强,需要有连续性和大吞吐量的保证,但是允许小规模的丢包。

AF1用作企业内部普通数据流业务,例如E-Mail。普通数据对实时性和抖动等因素要求都不高,只要保证不丢包的传达即可。

BE用于尽力而为的服务,用作不紧急、不重要、不需要负责的业务,如HTTP网页浏览业务。

3.1.2        颜色

颜色是指报文在设备内部的丢弃优先级,用于决定当一个队列发生拥塞时报文的丢弃顺序,对本地优先级与队列的映射关系没有影响。颜色有3种取值,IEEE定义的优先级从低到高依次为Green、Yellow、Red。

丢弃优先级的高低实际取决于对应参数的配置。例如,配置Green最大只能使用50%缓存,Red最大可以使用100%缓存,则Green的丢弃优先级比Red高。所以并不是标记为Red的报文一定比标记为Green的报文丢弃优先级就高。

3.2      优先级映射关系

DiffServ域模型下,优先级映射的核心内容是配置优先级与PHB行为/颜色之间的映射关系。设备上有一个default域,它定义了缺省情况下报文的优先级和PHB行为/颜色之间的映射关系。default域可以修改,但不能删除。除了default域外,用户也可以根据需要创建新的DiffServ域,并指定报文的优先级和PHB行为/颜色之间的映射关系。

下面我们就来介绍default域中不同报文优先级与PHB行为/颜色之间的映射关系。

3.2.1        802.1p优先级的映射关系

在DiffServ域模型中,接口入方向上VLAN报文的802.1p优先级和PHB行为/颜色之间的缺省映射关系如表2所示。

表2 DiffServ域接口入方向802.1p优先级到PHB行为/颜色的缺省映射关系

802.1p优先级

PHB行为

颜色

0

BE

Green

1

AF1

Green

2

AF2

Green

3

AF3

Green

4

AF4

Green

5

EF

Green

6

CS6

Green

7

CS7

Green

在DiffServ域模型中,接口出方向上VLAN报文的PHB行为/颜色到802.1p优先级之间的缺省映射关系如表3所示。

表3 DiffServ域接口出方向PHB行为/颜色到802.1p优先级之间的缺省映射关系

PHB行为

颜色

802.1p优先级

BE

Green、Yellow、Red

0

AF1

Green、Yellow、Red

1

AF2

Green、Yellow、Red

2

AF3

Green、Yellow、Red

3

AF4

Green、Yellow、Red

4

EF

Green、Yellow、Red

5

CS6

Green、Yellow、Red

6

CS7

Green、Yellow、Red

7

从表2和表3可以看出,缺省情况下:

l  VLAN报文在DiffServ域接口入方向上,802.1优先级(从低到高)与PHB行为(从BE到CS7)是一一对应的,且报文颜色全部是Green。

l  VLAN报文在DiffServ域接口出方向上,PHB行为(从BE到CS7)与802.1优先级(从低到高)是一一对应的,不管报文的颜色是Green、Yellow还是Red。

也许你已经发现,在入方向上,缺省情况下不管VLAN报文的802.1p优先级是多少,颜色始终都是Green,为什么在出方向上,会出现不同颜色的报文呢?这里我们先卖个关子,稍后再作解释。

3.2.2        DSCP优先级的映射关系

在DiffServ域模型中,接口入方向上IP报文的DSCP优先级和PHB行为/颜色之间的缺省映射关系如表4所示。

表4 DiffServ域接口入方向DSCP优先级到PHB行为/颜色的缺省映射关系

DSCP优先级

PHB行为

颜色

DSCP优先级

PHB行为

颜色

8

AF1

Green

28

AF3

Yellow

10

AF1

Green

30

AF3

Red

12

AF1

Yellow

32

AF4

Green

14

AF1

Red

34

AF4

Green

16

AF2

Green

36

AF4

Yellow

18

AF2

Green

38

AF4

Red

20

AF2

Yellow

40

EF

Green

22

AF2

Red

48

CS6

Green

24

AF3

Green

56

CS7

Green

26

AF3

Green

0~63之间的其它优先级

BE

Green

在DiffServ域模型中,接口出方向上IP报文的PHB行为/颜色到DSCP优先级之间的缺省映射关系如表5所示。

表5 DiffServ域接口出方向PHB行为/颜色到DSCP优先级之间的缺省映射关系

PHB行为

颜色

DSCP优先级

BE

Green、Yellow、Red

0

AF1

Green

10

AF1

Yellow

12

AF1

Red

14

AF2

Green

18

AF2

Yellow

20

AF2

Red

22

AF3

Green

26

AF3

Yellow

28

AF3

Red

30

AF4

Green

34

AF4

Yellow

36

AF4

Red

38

EF

Green、Yellow、Red

46

CS6

Green、Yellow、Red

48

CS7

Green、Yellow、Red

56

3.3      本地优先级

前面我们提到一个疑问:在入方向上,缺省情况下不管VLAN报文的802.1p优先级是多少,颜色始终都是Green,为什么在出方向上,会出现不同颜色的报文呢?有两种可能的原因:

l  在配置入方向优先级映射时,用户可以根据需要通过命令8021p-inbound 8021p-value phb service-class [ green | yellow | red ]指定报文的颜色。如果不指定,则默认报文为Green。

l  报文经过入方向优先级映射进入设备之后,在经过出方向映射离开设备之前,还有一个设备本地的处理过程。在这个过程中,设备用本地优先级来标识报文。用户可以根据需要通过命令remark local-precedence { local-precedence-namelocal-precedence-value } [green | yellow | red ]对报文在设备内部进行重新分类,也就是重标记报文的本地优先级,并且可以指定报文的颜色。因此,在出方向上,会出现不同颜色的报文。

在设备内部,报文的本地优先级与端口队列也是一一对应的,如表6所示。

表6 本地优先级与各队列之间的对应关系表(框式交换机的部分单板、盒式交换机)

本地优先级

队列索引

BE

0

AF1

1

AF2

2

AF3

3

AF4

4

EF

5

CS6

6

CS7

7

对于框式交换机的一些单板(具体型号请参看产品文档),报文的本地优先级与端口队列的对应关系如表7所示。

表7本地优先级与各队列之间的对应关系表(框式交换机的部分单板)

本地优先级

队列索引

BE(非已知单播报文)

0

AF1(非已知单播报文)

1

AF2(非已知单播报文)

1

AF3(非已知单播报文)

1

AF4(非已知单播报文)

2

EF(非已知单播报文)

2

CS6(非已知单播报文)

6

CS7(非已知单播报文)

6

BE(已知单播报文)

0

AF1(已知单播报文)

1

AF2(已知单播报文)

2

AF3(已知单播报文)

3

AF4(已知单播报文)

4

EF(已知单播报文)

5

CS6(已知单播报文)

6

CS7(已知单播报文)

7

说明:

l  VLAN报文和IP报文都可以进行本地优先级重标记。

l  重标记报文的本地优先级,仅会影响当前设备对报文的QoS处理。

l  重标记报文本地优先级的同时,报文的调度队列也会被修改。

l  重标记报文本地优先级仅对设备入方向的报文生效。

4      qos map-table模型下的优先级映射

4.1      原理介绍

在qos map-table模型下,优先级映射实现从IP优先级到802.1p、IP优先级的映射,以及从DSCP到802.1p、丢弃优先级、DSCP优先级的映射,其过程如下:

1.      在报文进入设备时,在端口信任报文携带的DSCP或者IP优先级的情况下,DSCP或者IP根据map-table被映射为802.1p优先级。

2.      设备根据802.1p与本地优先级之间默认的映射关系确定报文进入的队列,从而针对队列进行流量整形、拥塞避免、队列调度等处理。

3.      在报文离开设备时,设备修改报文发送出去时所携带的优先级,以便其他设备根据报文的优先级提供相应的QoS服务。

说明:仅部分盒式交换机不支持DiffServ域模型下的优先级映射,只支持qos map-table模型下的优先级映射。

qos map-table模型下,优先级映射配置的核心内容是配置DSCP优先级/IP优先级与其他优先级之间的映射关系。设备上定义了缺省的qos map-table映射关系表,下面我们就来介绍一下这些缺省映射关系表。

4.2      DSCP优先级与其他优先级的映射

qos map-table模型下,DSCP优先级可以映射成802.1p优先级、丢弃优先级(DP)或DSCP优先级。

DSCP到802.1p、DP优先级的缺省映射关系如表8所示。

表8 DSCP到802.1p、DP优先级的缺省映射关系表

Input DSCP优先级

Output 802.1p优先级

Output DP优先级

0~7

0

0

8~15

1

0

16~23

2

0

24~31

3

0

32~39

4

0

40~47

5

0

48~55

6

0

56~63

7

0

缺省情况下,DSCP到DSCP的优先级映射关系是一一对应的。

4.3      IP优先级与其他优先级的映射

qos map-table模型下,IP优先级可以映射成802.1p优先级或IP优先级。IP优先级到802.1p、IP优先级的缺省映射关系如表9所示。

表9 IP到802.1p、IP优先级的缺省映射关系表

Input IP优先级

Output 802.1p优先级

Output IP优先级

0

0

0

1

1

1

2

2

2

3

3

3

4

4

4

5

5

5

6

6

6

7

7

7

4.4      802.1p优先级到本地优先级的映射

从直观上来看,qos map-table模型下,设备是将进入设备的报文中携带的DSCP优先级、IP优先级,映射成了离开设备时报文携带的另一种优先级。

而实际上,在设备内部,也有一个本地处理的过程。所有进入设备的报文,其外部优先级字段都是先被映射为802.1p优先级,再根据802.1p优先级映射为本地优先级;设备根据本地优先级进行队列调度的QoS处理。

缺省情况下,802.1p优先级到本地优先级的映射关系如表10所示。

表10 802.1p优先级到本地优先级的映射关系

802.1p优先级

本地优先级

0

BE

1

AF1

2

AF2

3

AF3

4

AF4

5

EF

6

CS6

7

CS7

说明:设备采用缺省的802.1p优先级到本地优先级的映射关系,且该映射关系不可修改。

5      优先级映射配置举例

前面我们详细介绍了优先级映射的原理及设备上的缺省映射关系。下面我们结合具体的示例,来看一下两种模型下优先级映射的配置。

5.1      DiffServ域模型下的配置举例

用户需求

如图4所示,SwitchA通过接口GE0/0/3与SwitchB互连,SwitchB与路由器互连。部门1和部门2可经由SwitchA、SwitchB和路由器访问网络。部门1和部门2分别属于VLAN 100和VLAN 200。

来自部门1和2的报文802.1p优先级均为0,但是部门1的服务等级高,需要得到更好的QoS保证。通过定义DiffServ域,将来自部门1的数据报文优先级映射为4,将来自部门2的数据报文优先级映射为2,以提供差分服务。

20161229140958970004.png

图4 优先级映射组网图(DiffServ域模型)

配置思路

采用如下的思路配置优先级映射:

1.      创建VLAN,并配置各接口,部门1和部门2都能够通过Switch访问网络。

2.      创建DiffServ域,将802.1p优先级映射为PHB行为和颜色。

3.      在SwitchA入接口GE0/0/1和GE0/0/2上绑定DiffServ域。

配置过程

SwitchA上的关键配置:

# 在SwitchA上创建DiffServ域domain1、domain2,并配置将部门1和部门2的802.1p优先级映射到本地优先级。

[SwitchA] diffserv domain domain1

[SwitchA-dsdomain-domain1] 8021p-inbound 0 phb af4 green

[SwitchA-dsdomain-domain1] quit

[SwitchA] diffserv domain domain2

[SwitchA-dsdomain-domain2] 8021p-inbound 0 phb af2 green

[SwitchA-dsdomain-domain2] quit

# 将DiffServ域domain1和domain2分别绑定到接口GE0/0/1、GE0/0/2。

[SwitchA] interface gigabitethernet 0/0/1

[SwitchA-GigabitEthernet0/0/1] trust upstream domain1

[SwitchA-GigabitEthernet0/0/1] quit

[SwitchA] interface gigabitethernet 0/0/2

[SwitchA-GigabitEthernet0/0/2] trust upstream domain2

[SwitchA-GigabitEthernet0/0/2] quit

配置完成后,可以通过命令display diffserv domain [ all | name ds-domain-name ]查看配置。

配置验证

使用测试仪,分别模拟部门1和部门2向SwitchA的接口GE0/0/1和GE0/0/2发送报文。发送的报文分别属于VLAN 100和VLAN 200,携带的802.1p优先级为0。

接口GE0/0/1上接收到的报文如下图所示:

20161229140959973005.png

接口GE0/0/2接口上接收到的报文如下图所示:

20161229141000211006.png

报文到达接口,设备对报文进行优先级映射,然后通过接口GE0/0/3向SwitchB转发。在SwitchB上对接收到的报文进行抓包,可以看到:

l  VLAN 100的报文其802.1p优先级被映射为4

20161229141000897007.png

l  VLAN200的报文其802.1p优先级被映射为2

20161229141001581008.png

后续用户可以根据报文的802.1p优先级,配置其他QoS功能,实现差分服务。

现在,我们以SwitchA上接口GE0/0/1接收到的报文为例,再重新回顾一下设备对报文进行优先级映射的整个过程:

1.      接口GE0/0/1接收到来自VLAN 100、802.1p优先级为0的报文。根据8021p-inbound 0 phb af4 green命令,将其PHB映射成AF4。

2.      由于没有修改本地优先级与各队列之间的对应关系,SwitchA使用缺省的映射关系,因此报文进入队列4。

3.      SwitchA通过接口GE0/0/3的队列4将报文向SwitchB转发,可以在SwitchA上通过执行命令display qos queue statistics加以验证。这里只给出SwitchA上接口GE0/0/3队列4的显示信息,display回显中的其他队列的显示信息省略。

[SwitchA] display qos queue statistics interface GigabitEthernet 0/0/3

————————————————————

Queue ID          : 4

CIR(kbps)         : 0

PIR(kbps)         : 1,000,000

Used Length(byte) : 0

Passed Packets    : 123,706,860

Passed Rate(pps)  : 412,356

Passed Bytes      : 12,865,511,178

Passed Rate(bps)  : 343,080,272

Dropped Packets   : 0

Dropped Rate(pps) : 0

Dropped Bytes     : 0

Dropped Rate(bps) : 0

————————————————————

可以看出,SwitchA的接口GE0/0/3通过队列4向SwitchB发送的报文数量,与SwitchA的接口GE0/0/1接收到的测试仪发送的报文数量基本一致。

20161229141002547009.png

如果SwitchA上通过命令qos local-precedence-queue-map local-precedence queue-index改变本地优先级与队列之间的对应关系,则在接口GE0/0/3上报文的队列将被改变。例如SwitchA上配置qos local-precedence-queue-map af4 7后,SwitchA会通过接口GE0/0/3的队列7将报文向SwitchB转发。

[SwitchA] display qos queue statistics interface GigabitEthernet 0/0/3

————————————————————

Queue ID          : 7

CIR(kbps)         : 0

PIR(kbps)         : 1,000,000

Used Length(byte) : 0

Passed Packets    : 124,574,406

Passed Rate(pps)  : 349,039

Passed Bytes      : 15,928,667,594

Passed Rate(bps)  : 290,400,352

Dropped Packets   : 0

Dropped Rate(pps) : 0

Dropped Bytes     : 0

Dropped Rate(bps) : 0 ————————————————————

可以看出,SwitchA的接口GE0/0/3通过队列7向SwitchB发送的报文数量,与SwitchA的接口GE0/0/1接收到的测试仪发送的报文数量基本一致。

20161229141003395010.png

5.2      qos map-table模型下的配置举例

用户需求

如图5所示,SwitchC与路由器互连,部门1和部门2可经由SwitchA和SwitchB访问网络。部门1和部门2分别属于VLAN 100和VLAN 200。

部门1需要得到更好的QoS保证,因此将来自部门1的数据报文DSCP优先级映射为45,将来自部门2的数据报文DSCP优先级映射为30。设备信任报文的DSCP优先级。当拥塞发生时,优先处理DSCP优先级高的报文。

20161229141004440011.png

图5 优先级映射组网图(qos map-table模型)

配置思路

采用如下的思路配置优先级映射:

1.      创建VLAN,并配置各接口,使企业都能够访问网络。

2.      配置优先级映射,将来自部门1的数据报文DSCP优先级映射为45,将来自部门2的数据报文DSCP优先级映射为30。

配置过程

SwitchA上的关键配置:

# 配置接口信任报文的DSCP优先级。

[SwitchA] interface gigabitethernet 0/0/1

[SwitchA-GigabitEthernet0/0/1] trust dscp

[SwitchA-GigabitEthernet0/0/1] quit

[SwitchA] interface gigabitethernet 0/0/2

[SwitchA-GigabitEthernet0/0/2] trust dscp

[SwitchA-GigabitEthernet0/0/2] quit

# 配置优先级映射。

[SwitchA] qos map-table dscp-dscp

[SwitchA-dscp-dscp] input 0 to 63 output 45

[SwitchA-dscp-dscp] quit

SwitchB上的关键配置:

# 配置接口信任报文的DSCP优先级。

[SwitchB] interface gigabitethernet 0/0/1

[SwitchB-GigabitEthernet0/0/1] trust dscp

[SwitchB-GigabitEthernet0/0/1] quit

[SwitchB] interface gigabitethernet 0/0/2

[SwitchB-GigabitEthernet0/0/2] trust dscp

[SwitchB-GigabitEthernet0/0/2] quit

# 配置优先级映射。

[SwitchB] qos map-table dscp-dscp

[SwitchB-dscp-dscp] input 0 to 63 output 30

[SwitchB-dscp-dscp] quit

配置完成后可以通过命令display qos map-table dscp-dscp查看配置的映射关系表。

配置验证

使用测试仪,分别模拟部门1和部门2向SwitchA、SwitchB的接口GE0/0/1发送报文。发送的报文分别属于VLAN 100和VLAN 200,携带的DSCP优先级为0。

在SwitchA、SwitchB的接口GE0/0/2上可以看到,报文的DSCP优先级分别被改成45和30。

验证过程与“5.1 DiffServ域模型下的配置举例”中的验证过程类似,通过抓包查看报文的DSCP优先级即可,具体过程不再赘述。

6      小结

优先级映射配置采用何种模型,取决于设备款型对模型的支持情况。

通过优先级映射对报文进行分类之后,就可以根据需要配置其他的QoS功能,如流量监管、流量整形、队列调度等,从而提供差分服务。

下一期专题,我们就将详细介绍流量监管、流量整形和接口限速。

posted @ 2018-09-21 09:35  行方思远  阅读(7064)  评论(1编辑  收藏  举报