Testing out Link Aggregation


I picked up a TP-Link managed switch last week as something of a compromise between affordability and features - as it turns out though, it does just about everything I could ask for, just without the extra expense from buying something that has HP or Cisco written on the side.

I grabbed the TL-SG3216, a fanless L2 managed switch with 16x1Gigabit ports as it ticked all the boxes:
  • Silent (fanless)
  • Managed
  • Link Aggregation/802.3ad (LACP)
  • 802.1Q (VLAN)
  • STP

As a bonus, the CLI interface (via console cable or ssh) is very similar to Cisco's IOS, so I don't have to learn an entirely new syntax to configure it.

Before I replace my existing switch, I spent a bit of time testing out its features. First up, I setup a spare Raspberry Pi with a second ethernet interface (via a USB dongle) to test out link aggregation.



First up, the configuration on the Pi (Raspbian):

Install ifenslave to allow for the creation of bonded network interfaces

# apt-get install ifenslave


Remove lines for eth0, eth1 from `/etc/networking/interfaces` and replace with a bond0 entry that adds the two interfaces as slaves:
 

auto bond0
iface bond0 inet static
    address  192.168.1.10
    netmask  255.255.255.0
    gateway  192.168.1.123
    # jumbo frame support
    mtu 9000
    # bond settings
    bond_miimon  100
    bond_mode 4
    bond-downdelay 200
    bond-updelay 200
    slaves eth0 eth1


Note on bond modes:

  • mode 0 (load balancing [rr])
  • mode 4 (802.3ad)

Bring up the interface:

# ifup bond0
 

Check its status:

# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
    Aggregator ID: 1
    Number of ports: 1
    Actor Key: 4
    Partner Key: 1
    Partner Mac Address: 00:00:00:00:00:00

Slave Interface: eth0
MII Status: up
Speed: 10 Mbps
Duplex: half
Link Failure Count: 0
Permanent HW addr: b8:27:eb:95:0e:4d
Aggregator ID: 1
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 100 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: 20:c9:d0:2c:93:9a
Aggregator ID: 2
Slave queue ID: 0



One strange thing from the above output is that it listed eth0 as running at 10Meg and half-duplex. However, checking both the switch and eth0 via ifconfig and dmesg shows the interface running at 100Meg/full - so I'm not sure why this discrepancy exists.


Examining each interface in turn shows the two physical adapters up and running in slave mode while the created bond0 interface is running as a master. Once bonded, all interfaces share a hardware address (that of the first interface):

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr b8:27:eb:95:0e:4d
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:5466 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4048 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7513825 (7.1 MiB)  TX bytes:358909 (350.4 KiB)

# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr b8:27:eb:95:0e:4d
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:68 errors:0 dropped:42 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7256 (7.0 KiB)  TX bytes:1408 (1.3 KiB)

# ifconfig bond0
bond0     Link encap:Ethernet  HWaddr b8:27:eb:95:0e:4d
          inet addr:10.33.2.51  Bcast:10.33.7.255  Mask:255.255.248.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:320 errors:0 dropped:42 overruns:0 frame:0
          TX packets:129 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:30587 (29.8 KiB)  TX bytes:19586 (19.1 KiB)




Configuration on a TP-Link TL-SG3216 switch is as follows:


Add two ports to an etherchannel group and set the mode of the channel group to `active`:

 
switch01(config)#interface range gigabitEthernet 1/0/1-2

switch01(config-if-range)#channel-group 1 mode active

 

Show the etherchannel and LACP info to check the configuration is active:
 
switch01#show etherchannel
                Channel-group listing:
                ----------------------

Group: 1
----------
Group state = L2
Ports: 2  MaxPorts = 16
Protocol:   LACP


switch01#show lacp 1 int
Flags:  S - Device is requesting Slow LACPDUs
        F - Device is requesting Fast LACPDUs
        A - Device is in active mode       P - Device is in passive mode

Channel group 1
                            LACP port     Admin     Oper    Port        Port
Port      Flags   State     Priority      Key       Key     Number      State
Gi1/0/1   SA      Up        32768         0x1       0x783   0x1         0x7d
Gi1/0/2   SA      Up        32768         0x1       0x783   0x2         0x3d

Comments

Popular posts from this blog

Change the ComputerName value in Unattend.xml using PowerShell

Adding 802.1Q Trunking to Debian GNU/Linux