Frequently Asked Questions
High Availability
Promiscuous Sniffing notes
+8021q VLAN support
Limitations
Resources and Links
Bond Configuration
==================
-You will need to add at least the following line to /etc/modules.conf
+You will need to add at least the following line to /etc/modprobe.conf
so the bonding driver will automatically load when the bond0 interface is
-configured. Refer to the modules.conf manual page for specific modules.conf
+configured. Refer to the modprobe.conf manual page for specific modprobe.conf
syntax details. The Module Parameters section of this document describes each
bonding driver parameter.
appropriate rc directory.
If you specifically need all network drivers loaded before the bonding driver,
-adding the following line to modules.conf will cause the network driver for
+adding the following line to modprobe.conf will cause the network driver for
eth0 and eth1 to be loaded before the bonding driver.
-probeall bond0 eth0 eth1 bonding
+install bond0 /sbin/modprobe -a eth0 eth1 && /sbin/modprobe bonding
Be careful not to reference bond0 itself at the end of the line, or modprobe
will die in an endless recursive loop.
-To have device characteristics (such as MTU size) propagate to slave devices,
-set the bond characteristics before enslaving the device. The characteristics
-are propagated during the enslave process.
-
If running SNMP agents, the bonding driver should be loaded before any network
drivers participating in a bond. This requirement is due to the the interface
index (ipAdEntIfIndex) being associated to the first interface found with a
Optional parameters for the bonding driver can be supplied as command line
arguments to the insmod command. Typically, these parameters are specified in
-the file /etc/modules.conf (see the manual page for modules.conf). The
+the file /etc/modprobe.conf (see the manual page for modprobe.conf). The
available bonding driver parameters are listed below. If a parameter is not
specified the default value is used. When initially configuring a bond, it
is recommended "tail -f /var/log/messages" be run in a separate window to
For ethernet cards not supporting MII status, the arp_interval and
arp_ip_target parameters must be specified for bonding to work
correctly. If packets have not been sent or received during the
- specified arp_interval durration, an ARP request is sent to the
+ specified arp_interval duration, an ARP request is sent to the
targets to generate send and receive traffic. If after this
interval, either the successful send and/or receive count has not
incremented, the next slave in the sequence will become the active
that will be added.
To restore your slaves' MAC addresses, you need to detach them
- from the bond (`ifenslave -d bond0 eth0'), set them down
- (`ifconfig eth0 down'), unload the drivers (`rmmod 3c59x', for
- example) and reload them to get the MAC addresses from their
- eeproms. If the driver is shared by several devices, you need
- to turn them all down. Another solution is to look for the MAC
- address at boot time (dmesg or tail /var/log/messages) and to
- reset it by hand with ifconfig :
-
- # ifconfig eth0 down
- # ifconfig eth0 hw ether 00:20:40:60:80:A0
+ from the bond (`ifenslave -d bond0 eth0'). The bonding driver will then
+ restore the MAC addresses that the slaves had before they were enslaved.
9. Which transmit polices can be used?
# modprobe bonding miimon=100
-Or, put the following lines in /etc/modules.conf:
+Or, put the following line in /etc/modprobe.conf:
- alias bond0 bonding
options bond0 miimon=100
There are currently two policies for high availability. They are dependent on
# modprobe bonding miimon=100 mode=1
-Or, put in your /etc/modules.conf :
+Or, put in your /etc/modprobe.conf :
- alias bond0 bonding
options bond0 miimon=100 mode=active-backup
Example 1: Using multiple host and multiple switches to build a "no single
In this configuration, there is an ISL - Inter Switch Link (could be a trunk),
several servers (host1, host2 ...) attached to both switches each, and one or
-more ports to the outside world (port3...). One an only one slave on each host
+more ports to the outside world (port3...). One and only one slave on each host
is active at a time, while all links are still monitored (the system can
detect a failure of active and backup links).
must add the promisc flag there; it will be propagated down to the
slave interfaces at ifenslave time; a full example might look like:
- grep bond0 /etc/modules.conf || echo alias bond0 bonding >/etc/modules.conf
ifconfig bond0 promisc up
for if in eth1 eth2 ...;do
ifconfig $if up
just ignore all the warnings it emits.
+8021q VLAN support
+==================
+
+It is possible to configure VLAN devices over a bond interface using the 8021q
+driver. However, only packets coming from the 8021q driver and passing through
+bonding will be tagged by default. Self generated packets, like bonding's
+learning packets or ARP packets generated by either ALB mode or the ARP
+monitor mechanism, are tagged internally by bonding itself. As a result,
+bonding has to "learn" what VLAN IDs are configured on top of it, and it uses
+those IDs to tag self generated packets.
+
+For simplicity reasons, and to support the use of adapters that can do VLAN
+hardware acceleration offloding, the bonding interface declares itself as
+fully hardware offloaing capable, it gets the add_vid/kill_vid notifications
+to gather the necessary information, and it propagates those actions to the
+slaves.
+In case of mixed adapter types, hardware accelerated tagged packets that should
+go through an adapter that is not offloading capable are "un-accelerated" by the
+bonding driver so the VLAN tag sits in the regular location.
+
+VLAN interfaces *must* be added on top of a bonding interface only after
+enslaving at least one slave. This is because until the first slave is added the
+bonding interface has a HW address of 00:00:00:00:00:00, which will be copied by
+the VLAN interface when it is created.
+
+Notice that a problem would occur if all slaves are released from a bond that
+still has VLAN interfaces on top of it. When later coming to add new slaves, the
+bonding interface would get a HW address from the first slave, which might not
+match that of the VLAN interfaces. It is recommended that either all VLANs are
+removed and then re-added, or to manually set the bonding interface's HW
+address so it matches the VLAN's. (Note: changing a VLAN interface's HW address
+would set the underlying device -- i.e. the bonding interface -- to promiscouos
+mode, which might not be what you want).
+
+
Limitations
===========
The main limitations are :