深度解析DCBX报文各段字段的含义

前面在《深度分析数据中心之DCBX(Data Center Bridging Exchange)技术》一文中,详细分析了DCBX技术背景和技术原理,但是没有结合实际报文来分析dcbx报文各个字段的具体含义,所以有很多学习这块技术的同学就问我如何分析LLDP报文。由于目前的使用的DCBX版本2是由CISCO,QLOGIC,BROCADE,INTEL,EMULEX这几大产商之间私有协定的,标准的dcbx还有没有正式面世,所以走在数据中心技术的最前沿的他们,就一直没用现在的版本DCBX版本2,这就使用wireshark也就没有更新针对DCBX相关字段的解析,所以分析DCBX报文就相当困难。今天就把我自己整理的结合实际报文针对dcbx每个字段进行分析,如下图,在前面《深度分析数据中心之DCBX(Data Center Bridging Exchange)技术》一文中有说到DCBX实际就是在LLDP报文中添加了相关的TLV。
图1
结合spirent testcenter测试工具构造DCBX版本2的报文和实际报文做对比进行分析:
首先是DCBX版本2的头部分:
见上图1实际dcbx TLV的Fe转换成10进制就是127这个字节对应是的dcbx的type可以见图2测试构造的DCBX报文,37转换成10进制为55,这个字段表示长度,接着就是dcbx oui:001b21。
图2
如图2Dcbx control tlv type和length 两个字节对应上面图1实际报文02 0a,而第一个字节高七位为type ,其余是length:那么第一个字节:0000 001|0 高7位取出换成10进制为1,所以type是1,和dcbx版本2一致。
图3
其次,是DCBX 子TLV:ETS TLV参数:
图4
图1实际报文对应字段:
见图1报文中04 11对应ets type和lenth, 04: 0000 010|0 取高7位转10进制为2,dcbx版本2定义ets 子tlv刚好是2 ,11是十进制为17 和上面len 对应。
C0:1100 0000的高三们对应enable,willing,error所以这三个bit位为enable置1说明开启dcbx协商,willing置1说明本端愿意接受对端同步,error位为0说明没有错误。其他字段保留。
图5
ets 的cos与队列映射关系,和队列权重的配置,见图1实际报文内容:
01 23 45 67 05 05 05 32 05 0a 0a 0a 00
图5中PGID是指ETS的cos,每个字节的高4位和低4位分别表示一个cos值映射的对应,如:01,高4位0000,表示0队列,那么按图8可知PGID 0(COS 0)映射到0队列。低4位0001,表示1队列,那么按图8可知PGID 1(COS 1)映射到1队列。上面的前面4个字节表示cos映射到相应队列,5到12个字节表示0-7队列的权重,按上面的信息转换成10进制:05 05 05 50 05 10 10 10 就是图8上所示测试仪构造的报文内容。最后一个字节00表示使用几个队列,但是这个字节各个产商定义不一样,所以可以不用太关注。
接着:是DCBX 子TLV:PFC TLV分析:
图6
PFC的TLV头部定义和ETS一样,可以参考上面ETS TLV头部说明。
见图1实际报文内容如下:
06 06 00 e0 00
06 06 为pfc的type和lenth字节:06 :0000 011|0 取高7 位为type,转十进制为3,标准规定pfc是3. 长度为6,同上所示。E0是en wi er和reser字段:111|0 0000 第一次发出的报文这个应该是c0,可能是由于协商失败导致发送的报文er字段置1所以这个字段变e0.
图7
见图1实际报文内容如下:
18 07
18 转为2进制: 0001 1000 刚好应用如上图10,pe3和pe4置1,这里的PE就是表示开启pfc的cos,所以这里就表示cos3 和cos4都开启pfc功能。07表示pfc使用的队列情况。这个值同ETS的队列一样定义不同可以不用关注 。
最后一个子TLV:APP TLV 表示应用优先级,简单的说就是FCOE使用哪个cos值。
图8
APP头部对应图1实际报文内容:
08 0a 00 00 c0 00
08:0000 100|0 取高7 位转10进制为4,标准定义app为4,符合标准定义。其他TLV头部定义和ETS一样,可以参考上面ETS TLV头部说明。
APP内容部分对应图1实际报文内容:
89 06 00 1b 21 80 ,结合下图9测试仪构造报文内容显示,8906为FCOE 的etype, 00 1b 21为OUI。最重要的字段为80,转换为二进制:1000 0000 从高到低刚好对应cos:7-0,也就是说这个构造的报文FCOE的cos为7。当然标准定义的FCOE的cos为3,这里只是用测试仪构造的报文,来帮助大家解析。
图9
希望本文的分享对你的学习有所帮助。

weinxin
DC Farm小程序二维码
扫一扫添加博客小程序
Jim

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:4   其中:访客  2   博主  2

    • avatar 匿名 5

      FE转成二进制应该是254吧?

        • 激劉勇靖 激劉勇靖 Admin

          @匿名 你理解错了,文章的中意思是FE取高七位 再转成10进制是127。

            • avatar 匿名 5

              @激劉勇靖 这里的ETS,PFC的sub-type在协议中规定的是9、10、11、12,不知是不是楼主看的协议与我看的有所不同。我看的是802.1 Qaz

                • 激劉勇靖 激劉勇靖 Admin

                  @匿名 这个版本是还没有成式成为标准的版本,还是草案阶段的版本。