I've configured Channel-bonding (on RHEL/CentOS) with with balance-alb (mode=6) option:
BONDING_OPTS="mode=balance-alb miimon=100 updelay=200 downdelay=200"
which is working fine and according to the /proc/net/bonding/bond0
, the active-slave is eth1
.
[root@baba ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008)
Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:19:00:00:00:fb
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:06:11:11:11:3b
(I've replaced the middle bits of the MAC by 00 and 11 intentionally)
Now, according to the ifconfig
, the MAC address allocation for eth0 and eth1 are different (from the above output) - they are switched.
[root@baba ~]# ifconfig | sed -n '/^[a-z]*[0-9]/p'
bond0 Link encap:Ethernet HWaddr 00:19:00:00:00:FB
eth0 Link encap:Ethernet HWaddr 00:06:11:11:11:3B
eth1 Link encap:Ethernet HWaddr 00:19:00:00:00:FB
Does any one know why I'm seeing this or how does it work? Thanks in advance. Cheers!!
1) eth0 joins the bond, and the bond takes eth0's MAC address.
2) eth1 joins the bond.
3) For some reason, eth1 becomes the active slave, and the following behaviour is seen:
Source: https://www.kernel.org/doc/Documentation/networking/bonding.txt
The MAC address changing seems to be working as-expected.