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 Answer 1


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:

If the receiving slave fails, another slave
takes over the MAC address of the failed
receiving slave.

Source: https://www.kernel.org/doc/Documentation/networking/bonding.txt

The MAC address changing seems to be working as-expected.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.