This section covers planning, considerations, and general configuration guidelines for enabling PFC on a network.
The steps for enabling PFC on your network include the following:
(Configuring ETS: Map Priorities to TCs/Allocate Bandwidth)
PFC can be used with or without a switch in the network.
Host prerequisites for RDMA are outside the scope of this guide, but in general, you need at a minimum:
If using software in DCB mode, you also need OpenLLDP, which includes the lldpad daemon and lldptool configuration utility.
# yum install lldpad
GitHub - intel/openlldp
DCB standards like PFC and ETS must be set to either willing or non-willing mode, which determines whether the port is willing to accept configuration settings from its link partner.
Mode |
When to Use |
|
Willing |
• |
If you want to configure DCB on their switch and let adapters accept settings from the switch ports. This is the preferred, most common setup. |
Non-willing |
• |
For back-to-back configurations. |
• |
For troubleshooting, testing, and manually tweaking the configuration. |
|
• |
If preferred, configure DCB on all hosts and set the neighboring switch ports to willing (somewhat uncommon and might not be supported by all switches). |
The 800 Series has two options for using DCB: firmware and software.
If you plan on using willing mode, software DCB is recommended but not required.
Only one type of DCB might be active at a time. Enabling firmware DCB overrides the software DCB setting.
DCB Type |
When to Use |
Willing Mode Setup |
Non-willing Mode Setup |
Firmware |
Willing Mode |
Not supported in firmware DCB. |
|
# ethtool --set-priv-flags <iface> fw-lldpagent on |
|||
Software |
Willing Mode |
Can be set up in IEEE or CEE modes. Refer to Software DCB Willing Mode for details. |
|
Software |
Non-willing Mode |
||
# ethtool --set-priv-flags <iface> fw-lldpagent off # lldptool -Ti <iface> -V PFC willing=yes # lldptool -Ti <iface> -V ETS willing=yes |
# ethtool --set-priv-flags <iface> fw-lldpagent off # lldptool -Ti <iface> -V PFC willing=no # lldptool -Ti <iface> -V ETS willing=no |
Software DCB can be configured in either IEEE or CEE mode.
#lldptool -Ti $interface -V CEE-DCBX enableTx=no
#lldptool -Ti $interface -V IEEE-DCBX mode=reset
#lldptool -Ti $interface -V ETS-CFG enableTx=yes willing=yes
#lldptool -Ti $interface -V ETS-REC enableTx=yes
Setting willing=yes for ETS-REC is not logical as it is by definition a recommendation for a willing link partner.
#lldptool -Ti $interface -V PFC enable=yes willing=yes enableTx=yes
#lldpad -k
#lldpad -s
#systemctl restart lldpad.service
#lldptool -ti $interface -V CEE-DCBX -c
Output:
enableTx=no
#lldptool -ti $interface -V IEEE-DCBX -c
Output:
mode=auto
In CEE, successful negotiation requires the link partner also to be in CEE mode.
#lldptool -T -i $interface -V CEE-DCBX enableTx=yes
#lldptool -Ti $interface -V IEEE-DCBX mode=reset
#dcbtool sc $interface pg w:0 e:0 a:0
#dcbtool sc $interface pfc w:0 e:0 a:0
#dcbtool sc $interface pg w:1 e:1 a:1
#dcbtool sc $interface pfc w:1 e:1 a:1
Once lldpad -k has been invoked and lldpad has been restarted, subsequent invocations of lldpad -k will not terminate lldpad.
#lldpad -k
#lldpad -s
#systemctl restart lldpad.service
#lldptool -ti $interface -V CEE-DCBX -c
Output:
enableTx=yes
#lldptool -ti $interface -V IEEE-DCBX -c
Output
mode=cee
For networks carrying multiple traffic types, you typically want:
This can change depending on specific applications.
Example configuration:
Traffic Stream |
Loss-less |
TC |
Priority |
Bandwidth |
RDMA Traffic |
Yes |
0 |
0 |
50% |
LAN Application #1 |
No |
1 |
2 |
25% |
LAN Application #2 |
No |
2 |
4 |
25% |
Unused |
No |
Any1 |
All Others1 |
None |
Note: 1. Unused priorities can be mapped to any TC (no traffic is being steered to specific priorities). Leaving them mapped to TC 0 is acceptable. |