4/11/2018

Max # of MLAGs supported on Arista switch

One the biggest limitations of # MLAG support on an Arista switch, is the port-id. If you see the following the error message when configuring MLAG port-channels, it means you hit the ceiling. 
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

A refresh post of 2 old blog posts, 1 and 2

No comments:

Post a Comment