DCBX Versions and Support on Mellanox  Ethernet Switches

Version 4

    Data Center Bridging Capability Exchange protocol (DCBX) is an extension of Link Layer Data Protocol (LLDP).

    DCBX has two main versions:

    • IEEE DCBX
    • CEE DCBX

     

    This post discusses the DCBX versions and the support in Mellanox Ethernet Switches.

     

    DCBX Versions Comparison

     

    FieldIEEE DCBXCEE DCBX
    Standard LocationClick hereClick here
    Release Date30 September 201110 Nov 2008
    Frame format

    Separate unique TLV per DCBX attribute. Configuration and recommendation is sent in different TLVs

    Single TLV that includes all DCBX attributes. The “Willing” bit determines  whether an interface can change its configuration to match connected peer.

    Symmetric/asymmetricBothSymmetric only
    TLVs supported

    ETS Configuration (9)

    ETS Recommendation (10)

    PFC Configuration (11)

    Application Priority (12)

    DCBX control (1)

    Priority group (2)

    PFC (3)

    Application (4)
    ETS ConfigurationWilling
    CBS
    Number of TC supported
    Priority assignment table
    TC BW table

    TSA per TC

    N/A
    ETS Recommendation

    Priority assignment table
    TC BW table

    TSA per TC

    N/A
    PFC Configuration

    Willing

    MAC bypass

    Number of TCs that can support PFC

    Admin

    Number of TCs that can support PFC

    PFC coding

    Priority value (PCP)

    Admin
    Application Priority

    PCP

    Selector (L2/UDP/TCP/SCTP/DCCP)

    Protocol ID

    PCP

    Selector (L2/L3)

    Protocol ID

    Enable

    Willing

    Error
    Priority groupN/A

    Number of TC supported

    PG allocation

    Priority allocation
    DCBX control TLVN/AExchange information with the peer DCBX control SM
    OUI0x0080c2 (IEEE 802.1 COMMITTEE)0x001b21 (Organizationally specific TLV)

     

     

     

    DCBX Version Auto-Negotiation

    There is no standard auto-negotiation to mutually agree on the DCBX version. By default, the DCBX library performs an automatic selection of either the IEEE DCBX or CEE (legacy) DCBX version. For a given interface, when the link comes up, DCBX will start out in IEEE DCBX mode. If a DCBX peer is detected which includes any IEEE DCBX TLVs, then the interface will remain in IEEE DCBX mode, even if the peer also includes legacy DCBX TLVs. However, if the peer only transmits legacy DCBX TLVs, then DCBX library drops down to the legacy DCBX mode. The interface will remain in legacy DCBX mode until the link goes down.

    If devices which support both IEEE DCBX and legacy DCBX follow the above process, then they should be able to inter-operate with other devices which support only IEEE DCBX or only legacy DCBX. This algorithm is used by LLDPDU.

     

    Enabling DCBX on Mellanox Switches (MLNX-OS)

    In order to enable DCBX, LLDP should be enabled.

    1. Enable LLDP :

    switch (config) # lldp

    2. Add DCBX to the list of supported TLVs (for IEEE DCBX use 'dcbx' while for CEE use 'dcbx-cee'), per required interface (e.g. interface ethernet 1/1)

    switch (config) # interface 1/1
    switch (config interface ethernet 1/1) # lldp tlv-select dcbx

    3. Application Priority can be configured on the switch (with the required ethertype and priority (for example IP packet, priority 1)

    switch (config) # dcb application-priority 0x8100 1

    4. In case PFC is enabled, it will be passed in the LLDP TLVs. As en example, To enable PFC on priority 3 on port 1/1 run:

    dcb priority-flow-control enable force

    dcb priority-flow-control priority 3 enable

    interface ethernet 1/1 dcb priority-flow-control mode on force