One switch generation, one silent 2.5 gigabit ceiling
- date
- 20260914 (found and documented; affects links since the fabric build)
- what happened
- Every 2.5 gigabit network adapter in Node0 plugs into the same generation of Arista switch, which does not implement the 2.5 gigabit rate at all: it negotiates 100 megabit, 1 gigabit or 10 gigabit only. Every such link therefore runs at 1 gigabit permanently, with no cable, driver or adapter fix available.
- what it cost
- A standing, invisible ceiling on 18 interfaces across 11 devices (counted 20260914). A first pass at documenting them over-applied the rule to two links that never touched one of these switches and were simply 1 gigabit hardware. The inventory's own host-side interface types, copied from the switch port rather than measured, were wrong everywhere they claimed 10 gigabit.
- what changed
- The interfaces are recorded in NetBox with a non-empty speed field specifically where a link runs slower than its port type suggests, so a non-empty speed reads as: this link does not do what its port type claims.
- the check now
- Never sum 2.5 gigabit port counts for capacity planning on these links. Read the speed field, not the port type. To find which leg of a bonded pair is the throttled one, capture LLDP frames on each member interface individually.
A whole class of network adapters in the fleet ran at a fraction of their rated speed, and nothing about it was visible from either end. The adapter reports its full capability, the switch reports its own port type, and only the actual negotiated rate, buried in the interface’s link state, tells the truth. The root cause is refreshingly simple once found. An older switch generation simply does not implement the in-between speed, so both sides fall back to the highest rate they share, which is 1 gigabit.
Finding which of several bonded links was the throttled one needed a different tool than expected. The usual way to identify a bond’s member interfaces is to read the switch’s address table and match each member’s MAC address to a port. That does not work here, because both Linux and macOS bonding make every member interface answer to the bond’s single shared MAC address. The switch then sees one address on several ports and can tell you nothing about which is which.
Link Layer Discovery Protocol solved it. LLDP frames are sent by the switch itself, out of a specific port, carrying that switch’s name and that port’s identifier. Capturing them on one physical cable at a time, filtering for the LLDP ethertype, answers the question directly: this specific wire terminates on that specific port. It is the only reliable way to ask, and it works regardless of vendor, which makes it worth keeping for any mysteriously slow link in a bonded or teamed interface anywhere.
The recording convention matters too. A speed field that is normally empty, filled in only where reality diverges from the port type, turns an invisible exception into something a capacity plan can actually read.
Source: node0 lessons v0.1, lesson 4.11. Sanitized: checklist v0.1, 20260921; names pass only; voice pass 20260921. Part of oznog.com/node0.
