深度分析数据中心之DCBX(Data Center Bridging Exchange)技术

一、技术背景:

在前面的《深度分析数据中心之ETS(Enhanced Transmission Selection)技术》和《深度分析数据中心之PFC(Priority-based Flow Control)技术》两文中已经有详细的说明新的数据中心产生的背景在这里就不多介绍。简单的一句话介绍:就是将SAN网络,IP网络和高性能的Infiniband网络建设统一融合的数据中心以太网(Data Center Ethernet,DCE),能够大幅减少线缆和能耗,大大降低运维成本,是数据中心网络的发展趋势。数据中心以太网也称为融合增强型以太网(Converged Enhanced Ethernet,CEE)。要实现最弱的网络融合就需要对原有的以太网技术进行强化,这样IEEE定义了一系列标准,规范DCE/CEE对于传统以太网增强,主要包括:
(1)802.1Qbb Priority Flow Control(PFC):传统的以太网是整条链路进行流控的。802.1Qbb是基于优先级的流控标准。在一条物理链路上,分成了8个虚拟通道,每一个通道分配一个优先级。这样在一条链路上可以承载多种业务类型,包括FCoE和非FCoE的业务。当发生拥塞时,接收端可以在特定的优先级虚拟通道上发送XOFF和XON帧,抑制或者继续特定的业务,保证高优先级或者时延敏感的业务的传输。
(2)802.1Qaz Enhanced Transmision Selection(ETS):保证不同服务级别上的多种流量类型的质量。在DCE/CEE上的业务中,IPC是时延敏感的业务,SAN业务是对丢包敏感的业务,而IP业务是可以允许一定的丢包和时延。链路上的业务可以分为若干个优先级组(Priority Group,PG),并且定义每个PG的带宽属性。重要的业务,比如存储网络数据被赋予高优先级,保证带宽。低优先级业务只能在高优先级业务带宽不占用的情况下,才能使用分配带宽之外的额外带宽。
(3)Data Center Bridging eXchange Protocol(DCBX):这是IEEE Link Layer Discovery Protocol(LLDP)的扩展,可以在链路建立的时候交换两端设备的能力参数,比如是否支持PFC,以及802.1Qaz Priority Group。
(4)802.1Qau Quantized Congestion Notification(QCN):定义拥塞通告机制,当发现网络中存在拥塞时,通告数据发送源降低发送速率,从根本上解决网络拥塞;
本文将对Data Center Bridging eXchange Protocol(DCBX)协议进行分析,DCBX是由802.1Qaz定义的,有人可能会问上面不是说802.1Qaz定义了ETS?没错,802.1Qaz定义了两部分协议一个是ETS,另一个就是DCBX.
什么是DCBX?
数据中心桥接交换协议(DCBX)主要供IEEE数据中心桥接发现对等的配置,并在符合DCB要求的桥接之间交换配置信息,同时DCBX能够检测出桥接之间错误的配置信息或用于引导对端进行配置等。这个协议的主要功能是数据中心交换机引导服务器端的CNA卡(融合网络接口卡)配置DCB相应参数,这些参数包括ETS,PFC,APP(FCoE的cos值)。
DCBX利用了LLDP(Link Layer Discovery Protocol,链路层发现协议)来进行设备发现和能力交换。LLDP是单向协议,即它只与邻接的对端交换配置和管理信息。DCBX交换的配置信息封装在LLDP的Organizationally Specific TLVs(组织定义TLV)中,TLV中的OUI字段采用的是IEEE 802.1组织定义的OUI,即0x0080c2。
DCBX主要用于端到端的配置交换,从下图可以看出,在设备之间完成自协商之后,即开始数据中心桥接参数的交换。

二、技术原理:

1.DCBX参数交换机制

DCBX参数交换机制分为两个类型:非对称型和对称型
(1)非对称型:指链路两端的配置信息允许不相同。
(2)对称型:指链路两端的参数信息配置成相同的值。

<1>非对称型参数交换:

非对称型参数交换,DCBX将交换的信息分成了两类TLV:
(1)Configuration TLV:通过在DCBX TLV中指定willing位,来标记是否期望接收邻居指定参数的配置。
(2)Recommendation TLV:通告邻居指定参数的配置信息。
初始情况下,采用本地管理配置参数做为运行参数。如果本机配置成通过邻居通告的配置信息来引导本地配置并且接收到邻居的配置信息,则迁移到RxRecommend状态,该状态下采邻居配置参数来引导本地运行参数。

<2>对称型参数交换:

称型参数交换,目的是为了使链路两端的配置一致。只使用了一种TLV类型:
(1)Configuration TLV:该TLV用于通告本地运行的配置参数信息。
如果本地端口设置了willing标志位(表示根据邻居的配置信息来引导本地配置),而收到邻居设备发送的Configuration TLV中不携带willing标志位,表明本端是被动接收方,则根据邻居的配置信息来引导本地配置,以使链路两端的配置一致。
如果链路两端都设置了willing标志位(表示都需要通过对方来引导本地配置),则比较设备的MAC地址,MAC地址小的设备的配置信息将用于引导本地配置。
DCBX定义了Symmetric state machine用于描述对称型参数的状态转变,状态图如下图所示:
在状态图中,定义了两个变量Operparam和RemoteParam,用于表示本地运行的配置参数和邻居运行的配置参数。状态机中根据TLV携带的willing标志位,来决定是否采用本地的管理配置信息或邻居的配置信息来引导本地参数配置。

2.DCBX TLVs:

前面有讲到DCBX利用了LLDP协议交换链路两端的配置信息,而LLDP是将信息以TLV的形式封装在LLDPDU中发送的。DCBX目前定义了4个新增TLV用于传输DCBX相关参数(如ETS、PFC等)。

<1>ETS Configuration TLV
其中:
(1)TLV type:如上图所示,TLV type的值固定为127。
(2)TLV information string length:如上图所示,值固定为25。
(3)802.1 OUI:DCBX属于IEEE 802.1组织发布的,所以OUI为00-80-c2,代表IEEE 802.1组织。
(4)802.1 subtype:还未给出具体编号,在正式的版本中会提供。
(5)Willing:willing标志位,值为TRUE时表示期望接收邻居的配置参数来引导本地配置。
(6)CBS:表示设备是否支持CBS(令牌整型)算法。
(7)Max TCs:表示支持传输类的最大数量。
(8)Priority Assignment Table:提供cos值到传输类的映射表。
(9)TC Bandwidth Table:提供每个传输类的带宽分配百分比。
(10)TSA Assignment Table:提供每个传输类当前使用的传输选择算法。
<2>ETS Recommendation TLV

该TLV主要是通告邻居推荐的ETS配置信息,用于引导邻居的ETS配置。ETS Recommendation TLV的具体内容如下所示:

<3>Priority-based Flow Control Configuration TLV

基于优先级的流量控制采用对称的参数交换。该TLV用于PFC的配置,TLV的内容如下所示:
其中:
(1)TLV type:如上图所示,TLV type的值固定为127。
(2)TLV information string length:如上图所示,值固定为6。
(3)802.1 OUI:如上图所示,OUI为00-80-c2。
(4)802.1 subtype:还未给出具体编号,在正式的版本中会提供。
(5)Willing:willing标志位,值为TRUE时表示期望接收邻居的配置参数来引导本地配置。
(6)MBC:MACsec Bypass Capability位。
(7)PFC cap:PFC能力标志位,用于表示8个传输类中同时有多少个传输类支持PFC。
(8)PFC Enable:占用1个字节,其中每一位代表一个优先级队列(0~7),如果某个优先级队列使能了PFC,则该位置为1,否则置为0。

<4>Application Priority Configuration TLV

该TLV主要用于通告邻居本地设备的应用优先级配置,采用的是对称的参数交换类型。TLV的具体内容如下
其中:
(1)TLV type:如上图所示,TLV type的值固定为127。
(2)TLV information string length:依赖于应用优先级的个数,值为5加上3字节的倍数。
(3)802.1 OUI:如上图所示,OUI为00-80-c2。
(4)802.1 subtype:还未给出具体编号,在正式的版本中会提供。
(5)Application Priority Table:应用优先级表,具体内容如下图所示。
DCBX技术就分享到这里,如果有什么疑问或是不同观点可以给我留言。

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

发表评论

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

目前评论:11   其中:访客  8   博主  3

    • avatar 匿名 2

      “LLDP是单向协议,即它只与邻接的对端交换配置和管理信息。”
      这句话怎么理解,如果一个设备和交换机相连,那么这个设备是和交换机交换配置信息吗?
      楼主能够留了联系方式,有些问题找你请教一下~
      我的邮箱licong0601@sina.com

        • 激劉勇靖 激劉勇靖 Admin

          @匿名 交换机会导引这个设备配置相应的信息。

            • avatar 匿名 2

              @激劉勇靖 如果一台交换机和多台主机相连,交换机也是分别对每台主机交换信息吗?
              个人的理解认为:一台主机向交换机多播发送LLDP包让每个主机都收到配置信息,然后DCBX之间通信的我时候再点对点配置信息,不知道这样理解是不是有错?
              请大侠指点!

              • avatar 匿名 5

                @激劉勇靖 楼主,请教一个问题。
                两个CNA卡之间如何实现配置信息的交换。我认为有两种可能:
                1、CNA通过自己内部的MIB来改变配置信息
                2、交换机对CNA卡进行配置。

            • avatar 匿名 2

              Priority-based Flow Control Configuration TLV
              是对称交换配置信息,如果willing bit都为1的时候比较MAC地址进行配置。
              如果willing bit都为0的时候呢?怎么配置?
              请大侠指点!

                • 激劉勇靖 激劉勇靖 Admin

                  @匿名 看你用什么交换机了,在接口模式下查看一下有没有dcbx willing enable 这个命令就是打开。

                    • avatar 匿名 2

                      @激劉勇靖 交换机和连在交换机上的主机怎么配置。只交换机累配置主机吗?
                      交换机的每个接口都有MAC地址码?

                  • avatar 匿名 5

                    dcbx能够实现端到端的属性配置。这里的断到端怎么理解。
                    是指,交换机和CNA卡之间进行交换吗?
                    还是指,CNA卡和CNA卡之间进行交换?

                      • avatar 匿名 2

                        @匿名 不好意思描述错了。
                        dcbx能够实现端到端的属性配置。这里的断到端怎么理解。
                        是指,交换机和CNA卡之间进行配置吗?
                        还是指,CNA卡和CNA卡之间进行配置?

                          • 激劉勇靖 激劉勇靖 Admin

                            @匿名 交换机和CNA卡之间,引导是交换机去引导CNA,而CNA只是被动的角色。

                        • avatar 匿名 5

                          楼主您好,
                          1.DCBX参数交换机制
                          DCBX参数交换机制分为两个类型:非对称型和对称型
                          (1)非对称型:指链路两端的配置信息允许不相同。
                          (2)对称型:指链路两端的参数信息配置成相同的值。
                          这里如何配置DCBX为对称型或非对称型?