Bonding

These scenarios cover some aspects related to link-aggregation, which is the technique of combining multiple network connections in parallel in order to increase throughput, to provide redundancy or both. On OSDx, this can be achieved by using bonding interfaces.

../../../../_images/topology1.svg

Test Round-Robin Mode

Description

A bonding interface is configured in DUT0 using the round-robin mode. This mode can be used to achieve load-balancing.

Scenario

Step 1: Set the following configuration in DUT0:

set interfaces bonding bond0 address 192.168.100.10/24
set interfaces bonding bond0 miimon 100
set interfaces bonding bond0 mode round-robin
set interfaces ethernet eth0 bond-group bond0
set interfaces ethernet eth1 bond-group bond0
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 2: Set the following configuration in DUT1:

set interfaces ethernet eth0 address 192.168.100.20/24
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 3: Run command interfaces bonding show at DUT0 and check if output matches the following regular expressions:

bond0\s+192.168.100\.10\/24\s+up\s+up
Show output
------------------------------------------------------------------
Name            IP Address           Admin  Oper  Vrf  Description
------------------------------------------------------------------
bond0  192.168.100.10/24             up     up
       fe80::dcad:beff:feef:6c11/64

Step 4: Run command interfaces bonding bond0 show ports at DUT0 and check if output contains the following tokens:

Bonding Mode: load balancing (round-robin)
Show output
Ethernet Channel Bonding Driver: v6.1.90

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: de:ad:be:ef:6c:11
Slave queue ID: 0

Slave Interface: eth0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: de:ad:be:ef:6c:10
Slave queue ID: 0

Step 5: Ping IP address 192.168.100.20 from DUT0:

admin@DUT0$ ping 192.168.100.20 count 2 size 56 timeout 1
Show output
PING 192.168.100.20 (192.168.100.20) 56(84) bytes of data.
64 bytes from 192.168.100.20: icmp_seq=1 ttl=64 time=0.326 ms
64 bytes from 192.168.100.20: icmp_seq=2 ttl=64 time=0.335 ms

--- 192.168.100.20 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1004ms
rtt min/avg/max/mdev = 0.326/0.330/0.335/0.004 ms

Step 6: Run command interfaces ethernet clear at DUT0.

Step 7: Initiate a bandwidth test from DUT0 to DUT1

admin@DUT1$ monitor test performance server port 5001
admin@DUT0$ monitor test performance client 192.168.100.20 duration 5 port 5001 parallel 1
Expect this output in DUT0:
Connecting to host 192.168.100.20, port 5001
[  5] local 192.168.100.10 port 40724 connected to 192.168.100.20 port 5001
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   416 MBytes  3.49 Gbits/sec  1497   1.16 MBytes
[  5]   1.00-2.00   sec   374 MBytes  3.14 Gbits/sec  213   1.20 MBytes
[  5]   2.00-3.00   sec   461 MBytes  3.87 Gbits/sec  471   1.21 MBytes
[  5]   3.00-4.00   sec   488 MBytes  4.09 Gbits/sec   68   1.21 MBytes
[  5]   4.00-5.00   sec   499 MBytes  4.18 Gbits/sec  173   1.23 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-5.00   sec  2.19 GBytes  3.75 Gbits/sec  2422             sender
[  5]   0.00-5.00   sec  2.18 GBytes  3.74 Gbits/sec                  receiver

iperf Done.

Step 8: Run command interfaces ethernet show counters at DUT0 and check if output matches the following regular expressions:

eth0\s+up\s+\d+\s+\d+\s+0\s+\d{2,}
eth1\s+up\s+\d+\s+\d+\s+0\s+\d{2,}
Show output
------------------------------------------------------------------------------
Name  Oper  Rx Packets  Rx Bytes  Rx Errors  Tx Packets   Tx Bytes   Tx Errors
------------------------------------------------------------------------------
eth0  up         84125   7016381          0      812158  1227980406          0
eth1  up         80300   6672247          0      811653  1227114724          0

Test Active-Backup Mode

Description

A bonding interface is configured in DUT0 using the active-backup mode. This mode can be used to achieve a higher degree of fault-tolerance.

Scenario

Step 1: Set the following configuration in DUT0:

set interfaces bonding bond0 address 192.168.100.10/24
set interfaces bonding bond0 miimon 100
set interfaces bonding bond0 mode active-backup
set interfaces ethernet eth0 bond-group bond0
set interfaces ethernet eth1 bond-group bond0
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 2: Set the following configuration in DUT1:

set interfaces ethernet eth0 address 192.168.100.20/24
set system login user admin authentication encrypted-password '$6$GSjsCj8gHLv$/VcqU6FLi6CT2Oxn0MJQ2C2tqnRDrYKNF8HIYWJp68nvXvPdFccDsT04.WtigUONbKYrgKg8d6rEs8PjljMkH0'

Step 3: Run command interfaces bonding show at DUT0 and check if output matches the following regular expressions:

bond0\s+192.168.100\.10\/24\s+up\s+up
Show output
------------------------------------------------------------------
Name            IP Address           Admin  Oper  Vrf  Description
------------------------------------------------------------------
bond0  192.168.100.10/24             up     up
       fe80::dcad:beff:feef:6c11/64

Step 4: Run command interfaces bonding bond0 show ports at DUT0 and check if output contains the following tokens:

Bonding Mode: fault-tolerance (active-backup)
Show output
Ethernet Channel Bonding Driver: v6.1.90

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: de:ad:be:ef:6c:11
Slave queue ID: 0

Slave Interface: eth0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: de:ad:be:ef:6c:10
Slave queue ID: 0

Step 5: Ping IP address 192.168.100.20 from DUT0:

admin@DUT0$ ping 192.168.100.20 count 2 size 56 timeout 1
Show output
PING 192.168.100.20 (192.168.100.20) 56(84) bytes of data.
64 bytes from 192.168.100.20: icmp_seq=1 ttl=64 time=0.767 ms
64 bytes from 192.168.100.20: icmp_seq=2 ttl=64 time=0.285 ms

--- 192.168.100.20 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1006ms
rtt min/avg/max/mdev = 0.285/0.526/0.767/0.241 ms

Step 6: Initiate a bandwidth test from DUT0 to DUT1

admin@DUT1$ monitor test performance server port 5001
admin@DUT0$ monitor test performance client 192.168.100.20 duration 5 port 5001 parallel 1
Expect this output in DUT0:
Connecting to host 192.168.100.20, port 5001
[  5] local 192.168.100.10 port 56208 connected to 192.168.100.20 port 5001
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   497 MBytes  4.17 Gbits/sec    0   1.89 MBytes
[  5]   1.00-2.00   sec   504 MBytes  4.23 Gbits/sec    0   2.30 MBytes
[  5]   2.00-3.00   sec   528 MBytes  4.42 Gbits/sec    0   2.53 MBytes
[  5]   3.00-4.00   sec   542 MBytes  4.55 Gbits/sec    0   2.53 MBytes
[  5]   4.00-5.00   sec   509 MBytes  4.27 Gbits/sec    0   2.53 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-5.00   sec  2.52 GBytes  4.33 Gbits/sec    0             sender
[  5]   0.00-5.00   sec  2.51 GBytes  4.31 Gbits/sec                  receiver

iperf Done.

Step 7: Run command interfaces bonding bond0 show ports at DUT0 and check if output contains the following tokens:

Currently Active Slave: eth0
Show output
Ethernet Channel Bonding Driver: v6.1.90

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth1
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: de:ad:be:ef:6c:11
Slave queue ID: 0

Slave Interface: eth0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: de:ad:be:ef:6c:10
Slave queue ID: 0

Step 8: Initiate a bandwidth test from DUT0 to DUT1

admin@DUT1$ monitor test performance server port 5001
admin@DUT0$ monitor test performance client 192.168.100.20 duration 5 port 5001 parallel 1
Expect this output in DUT0:
Connecting to host 192.168.100.20, port 5001
[  5] local 192.168.100.10 port 56226 connected to 192.168.100.20 port 5001
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   522 MBytes  4.38 Gbits/sec    0   1.73 MBytes
[  5]   1.00-2.00   sec   452 MBytes  3.80 Gbits/sec    1   1.81 MBytes
[  5]   2.00-3.00   sec   608 MBytes  5.10 Gbits/sec    0   1.90 MBytes
[  5]   3.00-4.00   sec   628 MBytes  5.26 Gbits/sec    0   1.90 MBytes
[  5]   4.00-5.00   sec   539 MBytes  4.52 Gbits/sec    0   2.54 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-5.00   sec  2.68 GBytes  4.61 Gbits/sec    1             sender
[  5]   0.00-5.00   sec  2.68 GBytes  4.60 Gbits/sec                  receiver

iperf Done.

Step 9: Run command interfaces bonding bond0 show ports at DUT0 and check if output contains the following tokens:

Currently Active Slave: eth1
Show output
Ethernet Channel Bonding Driver: v6.1.90

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: de:ad:be:ef:6c:11
Slave queue ID: 0

Slave Interface: eth0
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: de:ad:be:ef:6c:10
Slave queue ID: 0