Mar 25 23:44:55 Arista.EOS Ebra: %SYS-1-PORT_ID_ERROR: Unable to allocate a port ID for interface
Well, this kind of failure is quite rare especially if your devices are only fixed 1RU or 2RU systems or the # of mlag port-channels is below 100. But if your system is a heavily loaded modular system like 7508 or 7512 with all LCs plugged, it may hit you surprisingly.
What is the port-id, why important?
- The port-id is used in LACP and STP. In STP, the port-id field is 16-bit, after 4-bit for priority, only 12 bit left for port-id, which is 4096.
- 2 MLAG peers are considered as 1 virtual switch, which means MLAG agent also needs to assign a port-id for corresponding peer-port and track their status. So now the space is cut half to 2048.
- All physical ports need port-id, including ethernet and port-channel.
- Considering a 7508N chassis with 8 x 7500R-36CQ-LC LC, how many port-id consumed?
- By default, 1 QSFP port reserve 4 port-ids, no matter the speed or up/down status - "transceiver qsfp default-mode 4x10G"
- 1 36CQ-LC = 4 x 36 = 144 port-ids
- 8 36CQ-LC = 144 x 8 = 1152
- After all, we still have 2048 - 1152 = 896 port-ids available for port-channels.
- And still need some for L3 uplink, peer link and management interfaces, say 32.
- Now the max # is 896 - 32 = 864
What happens if you have a 7512N with 12 x 36CQ LC?
- 12 36CQ-LC = 144 x 12 = 1728 port-id
- Max# of MLAG port-channel = 2048 - 1728 - 32 = 285
- Opps! Surprising, right? A chassis with more slots and more LCs supports much fewer MLAGs.
- So the best system for scale MLAG is 7508 chassis with 8 x 36CQ LC.
How to check port-id usage?
Arista.EOS#bash echo "ls -l /ar/Sysdb/interface/eth/portid" | python -m Acons Sysdb | more
Connecting to local unix socket @00002 ...
Connected to process 2244
.....
default collection portId has:
Ethernet10/1/1 !!! local ethernet ports
Ethernet10/1/2
.....
Management1/1 !!! local management interfaces
Management1/2
PeerEthernet10/1/1 !!! remote ethernet ports
PeerEthernet10/1/2
....
PeerPort-Channel1001 !!! remote port-channels
PeerPort-Channel1002
....
Port-Channel1001 !!! local port-channels
Port-Channel1002
Arista.EOS#bash echo "ls -l /ar/Sysdb/interface/eth/portid" | python -m Acons Sysdb | egrep "Eth|Man|Peer|Port" | wc -l
4049
No comments:
Post a Comment