IEEE 802.1P

简介

IEEE 802.1P 是[IEEE 802.1Q](https://baike.baidu.com/item/IEEE 802.1Q)(VLAN 标签技术)标准的扩展协议,两者共同运作,使第二层网上交换器能够提供流量优先级和动态多播 过滤服务。

[IEEE 802.1Q](https://baike.baidu.com/item/IEEE 802.1Q) 标准定义了以太网 MAC 数据帧添加的标签。VLAN 标签有两部分:VLAN ID(12位)和 PCP(Priority Code Point)(3 比特)。IEEE 802.1Q VLAN 标准中没有定义和使用 PCP,而 802.1P 中则定义了 PCP。

PCP 定义了从 0 至 7 的优先值,可以为第二层服务质量(QoS)或服务类(CoS)区分流量。此外,IEEE 802.1P 标准也提供了多播 流量过滤功能,以确保该流量不超出第二层交换网上范围。

优先级

可用的服务档次有八个,透过加到 IEEE802.1Q 数据帧表头 3 比特的 PCP 字段表达,IEEE 作了大量建议。

P性价比 优先级 缩写 流量类型
1 0(最低) BK 后台(Background)
0 1(默认) BE 尽力而为(Best Effort)
2 2 EE 极大努力(Excellent effort)
3 3 CA 关键应用程序
4 4 VI 视频,< 100 ms延迟和抖动
5 5 VO 音频,< 10 ms延迟和抖动
6 6 IC 网间控制
7 7(最高) NC 网络控制

它是位于二层带标签的以太网帧的CoS字段,和VLAN ID在一起使用,在字节中的位置如下:

P2 P1 P0 CU V11 V10 V9 V8 V7 V6 V5 V4 V3 V2 V2 V1 V0

其中:

IEEE802.1p优先级 :3bit(P2-P0)

   未用(CU):1bit

​ VLAN ID :12bit(V11-V0)

IEEE802.1p优先级值有8个(0-7),0优先级最低,7优先级最高。报文分为三种情况:带优先级和VLAN ID的标签报文,其优先级值是自身带的值;只带优先级的标签报文,此时VLAN ID为0,其优先级值是自身带的值;未带标签的报文,一般默认的优先级值为0,也可以进行更改指定新的优先级。

Spirent TestCenter

华为 OLT

进入配置模式

MA5800-X17>enable 
MA5800-X17#config 
MA5800-X17(config)#

查看所有模板信息

MA5800-X17(config)#display dba-profile all 
{ <cr>|detail<K>||<K> }: 

  Command:
          display dba-profile all
  ----------------------------------------------------------------------------
  Profile-ID   type   Bandwidth      Fix        Assure        Max        Bind
                     compensation    (kbps)     (kbps)        (kbps)     times
  ----------------------------------------------------------------------------
           0      3           No          0       8192         20480         4
           1      1           No       5120          0             0       130
           2      2           No          0       5120             0         1
           3      1           No     102400          0             0         1
           4      2           No          0     102400             0         4
           5      3           No          0      81920        102400         4
           6      4           No          0          0        204800         1
           7      5           No      40960      40960        102400         1
           8      4           No          0          0       1024000         7
           9      4           No          0          0        899968         4
          10      4           No          0          0       1000000        91
          11      4           No          0          0       1249984         0
          12      4           No          0          0        102400        17
          13      4           No          0          0       1000000        11
          14      1           No      10240          0             0         0
          15      4           No          0          0        512000         2
          16      4           No          0          0         49984         5
          17      1           No    1000000          0             0         1
          18      4           No          0          0       1024000        15
          19      4           No          0          0        204800         7
          20      3           No          0      59968         80000         2
          21      1           No     274944          0             0         1
          22      4           No          0          0         36864        21
          23      1           No        576          0             0         2
          24      1           No      40000          0             0         0
          25      2           No          0       9984             0         1
          26      4           No          0          0         99968         2
          27      1           No     899968          0             0         1
          28      4           No          0          0       2400000         0
          29      1           No      29952          0             0         0
          30      4           No          0          0      10000000         0
          31      4           No          0          0           512         1
          32      4           No          0          0         49984         0
          33      1           No    1200000          0             0         0
          36      3           No          0       8192       1024000         1
          37      4           No          0          0       2499968         0
          38      1           No       1024          0             0         1
         100      4           No          0          0       2299968         1
         101      1           No      10048          0             0         1
         102      2           No          0      99968             0         1
         103      3           No          0      80000         99968         1
         104      4           No          0          0        200000         3
         105      5           No      40000      40000         99968         2
         106      4           No          0          0       1000000         3
         107      4           No          0          0          9984         1
         108      4           No          0          0         35968         0
         150      4           No          0          0       1000000         1
         199      4           No          0          0        102400         2
         200      1           No       4992          0             0         8
         201      4           No          0          0          1024         1
         202      4           No          0          0          2048         1
         203      3           No          0      11264        102400         4
         204      4           No          0          0        992000         4
         205      4           No          0          0          5120         1
         210      4           No          0          0         10240         0
         222      4           No          0          0       1000000         4
         333      4           No          0          0       1024000        24
         410      4           No          0          0       1000000         2
         509      5           No        960       4992         99968         3
         510      4           No          0          0       1200000        16
         513      4           No          0          0       1024000         1
         514      4           No          0          0       2239488         1
         515      4           No          0          0       8957952         1
  ----------------------------------------------------------------------------

查看流分类信息

方法一:

MA5800-X17(config)#display classification profile-id 150 
{ <cr>||<K> }: 

  Command:
          display classification profile-id 150
  -----------------------------------------------------------------------------
  profile-id  : 150
  profile-name: ont-classification_150
  -----------------------------------------------------------------------------
  Precedence of the rule     : 1 // 规则优先级
  Mapped queue index         : 2 // 队列
  Ethernet priority to mark  : 5 // 以太网优先级标记
  -----------------------------------------------------------------------------
  Condition Field      Validation Match
  Index     Type       Operator   Value
  -----------------------------------------------------------------------------
  1         IP TYPE    ==         0x6   // 协议为 TCP                                     
  2         SPORT      ==         0x1001   // 源端口,还可以配置目的端口 DPORT                                  
  -----------------------------------------------------------------------------
  
  
  Precedence of the rule     : 2 // 规则优先级
  Mapped queue index         : 3
  Ethernet priority to mark  : 4
  -----------------------------------------------------------------------------
  Condition Field      Validation Match
  Index     Type       Operator   Value
  -----------------------------------------------------------------------------
  1         NEXT-HD    ==         0x11                                       
  -----------------------------------------------------------------------------
  Binding times: 1                   
  -----------------------------------------------------------------------------

方法二:

MA5800-X17(config-classification-150)#display classification-profile 
{ <cr>||<K> }: 

  Command:
          display classification-profile
  -----------------------------------------------------------------------------
  profile-id  : 150
  profile-name: ont-classification_150
  -----------------------------------------------------------------------------
  Precedence of the rule     : 1
  Mapped queue index         : 2
  Ethernet priority to mark  : 5
  -----------------------------------------------------------------------------
  Condition Field      Validation Match
  Index     Type       Operator   Value
  -----------------------------------------------------------------------------
  1         IP TYPE    ==         0x6                                        
  2         SPORT      ==         0x1001                                     
  -----------------------------------------------------------------------------
  Precedence of the rule     : 2
  Mapped queue index         : 3
  Ethernet priority to mark  : 4
  -----------------------------------------------------------------------------
  Condition Field      Validation Match
  Index     Type       Operator   Value
  -----------------------------------------------------------------------------
  1         NEXT-HD    ==         0x11                                       
  -----------------------------------------------------------------------------
  Binding times: 1                   
  -----------------------------------------------------------------------------

***

rule add precedence 1 queue-mapped 2 ethernet-priority-mark 5 condition-num 1 

DSCP 优先级

RFC 791 中 OS 位的 IP Precedence 划分成了 8 个优先级,应用于流分类,数值越大表示优先级越高。

P性价比 优先级 缩写 流量类型
1 0(最低) BK 后台(Background)
0 1(默认) BE 尽力而为(Best Effort)
2 2 EE 极大努力(Excellent effort)
3 3 CA 关键应用程序
4 4 VI 视频,< 100 ms延迟和抖动
5 5 VO 音频,< 10 ms延迟和抖动
6 6 IC 网间控制
7 7(最高) NC 网络控制

但是在网络中实际部署的时候这 8 个优先级是远远不够的,于是在 RFC 2474 中又对 TOS 进行了重新定义。把前 6 位定义成 DSCP,后两位保留。

before:

P2  P1  P0  CU  V11  V10  V9  V8 V7  V6  V5  V4  V3  V2  V2  V1  V0

after:

P5  P4  P3  P2  P1  P0  CU  CU  V11  V10  V9  V8 V7  V6  V5  V4  V3  V2  V2  V1  V0
|        DSCP          |  CU  |

DSCP: differentiated services codepoin

CU: currently unused

但是由于 DSCP 和 IP Precedence 是共存的,于是存在了一些兼容性的问题,DSCP 的可读性比较差,比如 DSCP 43 我们并不知道对应着 IP Precedence 的什么取值,于是就把 DSCP 进行了进一步的分类。DSCP 总共分成了 4 类。

  • 类选择器Class Selector (CS)aaa 000
  • 加速转发Expedited Forwarding (EF) 101 110
  • 确保转发Assured Forwarding (AF) aaa bb0
  • 默认Default (BE) 000 000

1,默认的DSCP为000 000 2,CS的DSCP后三位为0,也就是说CS仍然沿用了IP PRECEDENCE只不过CS定义的DSCP=IP PRECEDENCE8,比如CS6=68=48,CS7=7*8=56

3,EF含义为加速转发,也可以看作为IP PRECEDENCE为5,是一个比较高的优先级,取值为101110(46),但是RFC并没有定义为什么EF的取值为46。

4,AF分为两部分,a部分和b部分,a部分为3 bit仍然可以和IP PRECEDENCE对应,b部分为2 bit表示丢弃性,可以表示3个丢弃优先级,可以应用于RED或者WRED。目前a部分由于有三个bit最大取值为8,但是目前只用到了1~4。为了迅速 的和10进制转换,可以用如下方法,先把10进制数值除8得到的整数就是AF值,余数换算成二进制看前两位就是丢弃优先级,比如34/8=4余数为2,2 换算成二进制为010,那么换算以后可以知道34代表AF4丢弃优先级为middle的数据报。

如果把CS EF AF和BE做一个排列可以发现一个有趣的现象,如下表。这个表也就是我们在现实当中应用最多的队列。根据IP PRECEDENCE的优先级,CS7 最高依次排列 BE 最低。一般情况下这些队列的用途看这个表的 Usage 字段

对应的服务 IPv4优先级/EXP/802.1P DSCP(二进制) DSCP[dec][Hex] TOS(十六进制) 应用 丢包率 BE 0 0 0      0 Internet AF1 Green 1 001 010 10[0x0a] 40[0x28] Leased Line L AF1 Green 1 001 100 12[0x0c] 48[0x30] Leased Line M AF1 Green 1 001 110 14[0x0e] 56[0x38] Leased Line H AF2 Green 2 010 010 18[0x12] 72[0x48] IPTV VOD L AF2 Green 2 010 100 20[0x14] 80[0x50] IPTV VOD M AF2 Green 2 010 110 22[0x16] 88[0x58] IPTV VOD H AF3 Green 3 011 010 26[0x1a] 104[0x68] IPTV Broadcast L AF3 Green 3 011 100 28[0x1c] 112[0x70] IPTV Broadcast M AF3 Green 3 011 110 30[0x1e] 120[0x78] IPTV Broadcast H AF4 Green 4 100 010 34[0x22] 136[0x88] NGN/3G Singaling L AF4 Green 4 100 100 36[0x24] 144[0x90] NGN/3G Singaling M AF4 Green 4 100 110 38[0x26] 152[0x98] NGN/3G Singaling H EF 5 101 110 46[0x2E] 184[0xB8] NGN/3G voice CS6(INC) 6 110 000 48[0x30] 192[0xC0] Protocol CS7(NC) 7 111 000 56[0x38] 224[0xE0] Protocol

1,CS6 和 CS7 默认用于协议报文,比如说 OSPF 报文,BGP 报文等应该优先保障,因为如果这些报文无法接收的话会引起协议中断。而且是大多数厂商硬件队列里最高优先级的报文。

7,最不重要的业务是 INTERNET 业务,可以放在 BE 模型来传输。

**而在硬件队列里是如何保证协议报文(CS6 和 CS7 中的数据)优先传输呢?**在制作路由器的时候一般都是把 CS6 和 CS7 中的数据做 PQ 也就是绝对优先处理,无论下面是否有数据也是要优先来传递这两个队列中的数据。而其他 EF 到 AF1 的队列中是用 WFQ 来做的,保证所有队列都可以得到带宽来传输。

DBA

DBA (Dynamic Bandwidth Assignment) 模板定义了 ONU 的上行接入带宽

优先级介绍

优先级用于标识报文传输的优先程度,可以分为两类:报文携带优先级和设备调度优先级。

报文携带优先级包括:802.1P优先级、DSCP优先级、IP优先级、EXP优先级等。这些优先级都是根据公认的标准和协议生成,体现了报文自身的优先等级。

设备调度优先级是指报文在设备内转发时所使用的优先级,只对当前设备自身有效。设备调度优先级包括以下几种:

l 本地优先级(LP):设备为报文分配的一种具有本地意义的优先级,每个本地优先级对应一个队列,本地优先级值越大的报文,进入的队列优先级越高,从而能够获得优先的调度。

l 丢弃优先级(DP):在进行报文丢弃时参考的参数,丢弃优先级值越大的报文越被优先丢弃。

l 用户优先级(UP):设备对于进入的流量,会自动获取报文的优先级,这种报文优先级称为用户优先级。

优先级映射表

设备提供了多张优先级映射表,分别对应相应的优先级映射关系。

通常情况下,可以通过查找缺省优先级映射表来为报文分配相应的优先级。如果缺省优先级映射表无法满足用户需求,可以根据实际情况对映射表进行修改。

802.1P、IP Precedence、DSCP

在 IP 网络中,IPv4 报文中有三种承载 QoS 优先级标签的方式,分别为基于二层的 CoS 字段(IEEE802.1P)的优先级、基于 IP 层的 IP 层的 IP 优先级字段 ToS 优先级和基于 IP 层的 DSCP(Differentiated Services Codepoint)字段优先级。

IEEE802.1P 优先级

它是位于二层带标签的以太网帧的 CoS 字段,和 VLAN ID 在一起使用,在字节中的位值如下:

P2 P1 P0 CU V11 V10 V9 V8 V7 V6 V5 V4 V3 v2 V2 V1

IEEE802.1p优先级值有8个(0-7),0优先级最低,7优先级最高。报文分为三种情况:带优先级和VLAN ID的标签报文,其优先级值是自身带的值;只带优先级的标签报文,此时VLAN ID为0,其优先级值是自身带的值;未带标签的报文,一般默认的优先级值为0,也可以进行更改指定新的优先级。

IP 优先级

它由 IP 分组报头中的服务类型(ToS)字节中的 3 bit 组成,其在字节中的位值如下:

P2 P1 P0 T3 T2 T1 T0 CU

IP优先级值有8个(0-7),0优先级最低,7优先级最高。在默认情况下,IP优先级6和7用于网络控制通讯使用,不推荐用户使用。ToS字段的服务类型未能在现有的IP网络中普及使用。

IP优先级可用于流分类,将服务分为8类,分别对应优先级0-7,如下:

111-Network Control 网络控制

110 -Internetwork Control 网间控制

101 -Critic 关键

100 - FlashOverride 疾速

011 -Flash 闪速

010 -Immediate快速

001 -Priority 优先

000 -Routine 普通

优先级6和7一般保留给网络控制数据使用,比如路由。

优先级5推荐给语音数据使用。

优先级4由视频会议和视频流使用。

优先级3给语音控制数据使用。

优先级1和2给数据业务使用。

优先级0为缺省标记值。

在标记数据时,既可以使用数值,也可以使用名称(英文名称)。 

DSCP 优先级

在RFC 2474中又对TOS进行了重新的定义。将服务类型的3bit用于优先级(T3 T2 T1)。

实测

通过 cat gcnat_l2_entry_list 查看硬件加速的报文内容

root@ONT1GE:/proc/gcnat # cat gcnat_l2_entry_list 
GCNAT entries: 2
udp (hw:00000) IN:(20.20.20.20:01024)->(20.20.20.10:01024) pri=0 vid=554 (inner: 0000h) gem=0 cnt=28
OUT: pri=4 vid=554 (inner: 0000h) rxdev=eth0 txdev=pon0 gem=0 tcont=0 que=3
udp (hw:00000) IN:(20.20.20.10:01024)->(20.20.20.20:01024) pri=0 vid=554 (inner: 0000h) gem=0 cnt=27
OUT: pri=0 vid=554 (inner: 0000h) rxdev=pon0 txdev=eth0 gem=0 tcont=0 que=0

TestCenter设置12口(下联口),发udp 包,priority=0, vlan_id=554 –> GC1601 –> OLT –> TestCenter 9口

参考

802.1P和IP Precedence及DSCP优先级的分类和对应

QOS-1 ClassAndMarking标记和分类

华为的MA5680T基本查询命令

华为MA5800-X17规格,MA5800-X17参数

扯扯ToS和DSCP的关系