lldptool(8)
π lldptool(8) β ETS-{CFG|REC} π
okay so bestie, this is the lowkey iconic manual for lldptool on Linux β specifically the whole ETS-{CFG|REC} situation where you show and manipulate ETS TLV configuration. no cap, it's a whole vibe. β¨
πΈ SYNOPSIS πΈ
lldptool -t -i ethx -V ETS-CFG <-c CONFIG_ARG ...>
CONFIG_ARG := { enableTx | willing | tsa | up2tc | numtcs | tcbw }
lldptool -T -i ethx -V ETS-CFG CONFIG_ARG=value ...
CONFIG_ARG :=
enableTx = {yes|no} |
willing = {yes|no} |
tsa = tc:{ets|strict|vendor},... |
up2tc = priority:tc,... |
tcbw = bw1,bw2,...
lldptool -t -i ethx -V ETS-REC <-c CONFIG_ARG ...>
lldptool -T -i ethx -V ETS-REC CONFIG_ARG=value ...
CONFIG_ARG :=
enableTx = {yes|no} |
tsa = tc:{ets|strict|vendor},... |
up2tc = priority:tc,... |
tcbw = bw1,bw2,...
like, there are four whole invocation patterns and they're all serving different energy. -t is for showing, -T is for setting, and it's giving main character energy for both ETS-CFG and ETS-REC π
π¦ DESCRIPTION π¦
so the Enhanced Transmission Selection (ETS) feature has, like, two TLVs β a recommendation TLV and a configuration TLV β and they're configured with ETS-REC and ETS-CFG respectively. that's it, that's the whole concept, periodt. β¨
π ARGUMENTS π
these are the little config knobs you can pass in, bestie. memorize them, they're iconic:
enableTxβ turns on the ETS TLV so it actually gets transmitted. slay, we love a packet that goes out. π₯willingβ sets the ETS-CFG willing bit. yes ma'am, we are willing. πtsaβ Transmission selection algorithm! it sets a comma separated list of traffic classes to the corresponding selection algorithm. valid algorithms include"ets","strict"and"vendor". so you got options πup2tcβ a comma separated list mapping user priorities to traffic classes. it's literally a whole little priority-to-class matchmaking service. πtcbwβ a comma separated list of bandwidths for each traffic class, where the first value is assigned to traffic class 0 and the second to traffic class 1 and so on. any bandwidths you don't define are presumed to be0. ngl, don't leave them hanging. πnumtcsβ displays the number of ETS supported traffic classes. it just tells you how many you've got. iconic information. π
π§ Theory of Operations π§
okay so this is the part where I need you to pay attention, bestie, because it's the lore:
IEEE 802.1Qaz is enabled by default on hardware that supports this mode β indicated by support for the DCBNL interface, kernel config option CONFIG_DCB. the ETS-CFG TLV is advertised by default with the attributes indicated by querying the hardware for its current configuration. a valid configuration is to map all priorities to a single traffic class and use the link strict selection algorithm. this is equivalent to being in a non-DCB enabled mode. yes, that's the "idle" vibe. π
now for the legacy support tea: to support legacy DCBX (CIN or CEE), the ETS-CFG and ETS-REC TLVs are disabled if a legacy DCBX TLV is received and no valid IEEE DCBX TLVs are received. the hardware DCBX mode will also be set to the legacy mode and IEEE mode is disabled. this allows switches to be configured and end nodes will then be configured accordingly without any configuration required on the end node. so the switch does the work, the end node just vibes. π«Ά see lldpad(8) for more information about the operation of the DCBX selection mechanism.
mapping applications and protocols to traffic classes is required for ETS to be useful β like, otherwise what are we even doing here? π user space programs can encode the priority of an application with the SO_PRIORITY option. the net_prio cgroup can be used to assign application traffic to specific priorities. see the kernel documentation and cgdcbxd(8) for net_prio cgroup information. go read it, it's good for you. π
π₯ EXAMPLE & USAGE π₯
here's where it gets fun, bestie. real commands, real slay. β¨
Configure willing bit for interface eth2
lldptool -T -i eth2 -V ETS-CFG willing=yes
we are so willing rn. π
Configure traffic classes for ETS and strict priority on eth2
lldptool -T -i eth2 -V ETS-CFG
tsa=0:ets,1:ets,2:ets,3:ets,4:strict,5:strict
ets ets ets ets strict strict. a little mix, a little match. ate. π
Configure 1:1 mapping from priority to traffic classes on eth2
lldptool -T -i eth2 -V ETS-CFG
up2tc=0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7
perfectly matched, 1:1, no notes. π
Display local configured ETS-CFG parameters for tcbw
lldptool -t -i eth2 -V ETS-CFG -c tcbw
just a lil peek at the bandwidths. π
Display last transmitted ETS-CFG TLV
lldptool -t -i eth2 -V ETS-CFG
showing you what went out last. nostalgic. πΈ
Configure ETS-CFG and ETS-REC for default DCB on eth2
lldptool -T -i eth2 -V ETS-CFG
tsa=0:ets,1:ets,2:ets,3:ets,4:ets,5:ets,6:ets,7:ets
up2tc=0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7
tcbw=12,12,12,12,13,13,13,13
lldptool -T -i eth2 -V ETS-REC
tsa=0:ets,1:ets,2:ets,3:ets,4:ets,5:ets,6:ets,7:ets
up2tc=0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7
tcbw=12,12,12,12,13,13,13,13
the full default DCB glow-up. both CFG and REC, matching bandwidths 12,12,12,12,13,13,13,13. it's giving coordinated. π
β SOURCE β
- IEEE 802.1Qaz (http://www.ieee802.org/1/pages/dcbridges.html)
the source material, go off. π₯
π NOTES π
support for tc-mqprio was added in 2.6.38 β so on older kernels other mechanisms may need to be used to map applications to traffic classes. ngl, if you're on ancient kernels, you gotta improvise. π
π SEE ALSO π
lldptool(8), lldptool-app(8), lldpad(8), tc-mqprio(8)
the whole friend group, fr fr. π«Ά
π AUTHOR π
John Fastabend
the icon who wrote this. we stan. π
so yeah, that's the whole manual bestie β brought to you by open-lldp, dated February 2010. a little vintage, a lot iconic. go configure your ETS TLVs and slay. π β¨π¦
π¦ where this page comes from
- alpine 3.22: open-lldp-doc 1.1-r2 Β· GPL-2.0-only
- alpine 3.23: open-lldp-doc 1.1-r3 Β· GPL-2.0-only
- alpine 3.24: open-lldp-doc 1.1-r3 Β· GPL-2.0-only
- centos-stream 10: lldpad 1.1.1-4.gitf1dd9eb.el10 Β· GPL-2.0-only
- centos-stream 9: lldpad 1.1.1-5.gitf1dd9eb.el9 Β· GPL-2.0-only
- centos-stream 9: lldpad 1.1.1-5.gitf1dd9eb.el9 Β· GPL-2.0-only
- fedora 43: lldpad 1.1.0-14.git85e5583.fc43 Β· GPL-2.0-only
- fedora 43: lldpad 1.1.0-14.git85e5583.fc43 Β· GPL-2.0-only
- fedora 44: lldpad 1.1.0-16.git85e5583.fc44 Β· GPL-2.0-only
- fedora 44: lldpad 1.1.0-16.git85e5583.fc44 Β· GPL-2.0-only
- opensuse-leap 16.0: open-lldp 1.1+110.f16f944-160000.1.1 Β· GPL-2.0-only
- opensuse-leap 16.0: open-lldp 1.1+110.f16f944-160000.1.1 Β· GPL-2.0-only
- opensuse-leap 16.0: open-lldp 1.1+110.f16f944-160000.1.1 Β· GPL-2.0-only
- opensuse-leap 16.0: open-lldp 1.1+110.f16f944-160000.1.1 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms