Linux – One of the slaves in RHEL bond doesn’t work

bondinglinuxlinux-networkingnetworkingredhat

I have a red-hat enterprise Linux 6.3 vm (VMware vsphere).

I created a bond from two interfaces and it works but only when eth0 is active. When I use ifdown eth0 or echo -eth0 > /sys/class/net/bond0/bonding/slaves I lose network connectivity to the bond.

I could see on cat /proc/net/bond0 that the two interfaces are in the bond and when eth1 is active it does not work.

If I add eth0 back again it still doesn't work because eth1 is the active one. Only if I remove and readd eth1 to the bond it works (making eth0 the active)

The bond is of course in a fault tolerance mode.

The strange part is if I remove eth1 from the bond and define it as a simple interface it works just fine!

I tried reboot (many times), and could not find any help on the web. I even tried removing the interface (from VMware side) and adding a new one but that didn't help. anyone got an idea?

Some of the commands might not be accurate because I write this from my phone using my memory but I think you know what I meant, just don't suggest that a typo or syntax error was the problem.

Thanks in advance

Best Answer

I solved it. Everything was ok on the Linux side.

The problem was on VMware side: The security settings of the port group was to reject MAC address changes, once I changed it to accept it worked.

This setting, once set to reject, does not allow the VM to use a different MAC address than the one that is given by vSphere.

When working with bond the MAC stays the same even while failing to the other NIC. So in my case the bond MAC was set to be just as eth0 and once it failed over to eth1 the MAC stayed the same as it was - which was different then the "physical" MAC of eth1 and therefore was rejected by the vswitch.