Directory:Article Purgatory/Linux channel bonding
<adsense> google_ad_client = 'pub-1200304577225263'; google_ad_width = 468; google_ad_height = 60; google_ad_format = '468x60_as'; google_ad_type = 'text_image';//2006-12-28: MWB Directory space google_ad_channel = '2388332058'; google_color_border = '6699CC'; google_color_bg = '003366'; google_color_link = 'FFFFFF'; google_color_text = 'AECCEB'; google_color_url = 'AECCEB'; </adsense>
Linux channel bonding is the channel bonding implementation for Linux.
It's provided by the bonding module, which is part of the standard Linux kernel.
It allows for network high availability and load balancing, for both outgoing and incoming traffic.
Comparison of modes in Linux channel bonding
<adsense> google_ad_client = 'pub-1200304577225263'; google_ad_width = 468; google_ad_height = 60; google_ad_format = '468x60_as'; google_ad_type = 'text_image';//2006-12-28: MWB Directory space google_ad_channel = '2388332058'; google_color_border = '6699CC'; google_color_bg = '003366'; google_color_link = 'FFFFFF'; google_color_text = 'AECCEB'; google_color_url = 'AECCEB'; </adsense>
Several modes of operation exists in Linux channel bonding. No mode provide a perfect solution and one needs to balance between the possible benefits of each modes before deciding which one to use. The following table is expected to give a clear view of the benefits of each modes.
balance-rr | active-backup | balance-xor | broadcast | 802.3ad | balance-tlb | balance-alb | |
High availability | |||||||
Provide high availability (on a single switch, which is a Single Point Of Failure) | Y | Y | Y | Y | Y | Y | Y |
Provide high availability (between several non-interconnected switches) | Y | Y | Y | Y | Y | Y | Y |
Provide high availability (between several interconnected switches) | N[1] | Y | N[1] | Y[2] | N | Y | Y |
Outgoing load balancing | |||||||
Provide outgoing load balancing (on a single switch, which is a Single Point Of Failure) | Y | N | Y | N | Y | Y | Y |
Provide outgoing load balancing (between several non-interconnected switches) | Y | N | Y | N | Y | Y | Y |
Provide outgoing load balancing (between several interconnected switches) | N[1] | N | N[1] | N | N | Y | Y |
Provide outgoing load balancing distribution for a single peer host (subject to misordering delivery) | Y | - | Y[3] | - | Y[3] | N | N |
Provide outgoing load balancing distribution for a single TCP connection (subject to connection misordering delivery) | Y | - | N | - | N | N | N |
Well suited for "gatewayed" configuration | Y | - | Y[4] | - | Y[4] | N | N |
Well suited for "local" configuration | Y | - | Y | - | Y | Y | Y |
Incoming load balancing | |||||||
Provide incoming load balancing (on a single switch, which is a Single Point Of Failure) | Y | N | Y | Y | Y | Y | Y |
Provide incoming load balancing (between several non-interconnected switches) | Y | N | Y | Y | Y | Y | Y |
Provide incoming load balancing (between several interconnected switches) | N | N | N | N | N | Y | Y |
Provide incoming load balancing distribution for a single peer host (subject to misordering delivery) | Y | N | Y | Y | N | N | N |
Provide incoming load balancing distribution for a single TCP connection (subject to connection misordering delivery) | N | N | N | N | N | N | N |
Miscelaneous | |||||||
Use per port source MAC when sending (=> not totaly transparent for peer hosts) | N | N | N | N | N | Y | Y |
Use per port source MAC when answering ARP requests (=> not totally transparent for peer hosts) | N | N | N | N | N | N | Y |
Require Etherchannel for load balancing (switch feature and setup) | Y | -[5] | Y | - | N[5] | N[5] | N |
Require 802.3ad for load balancing (switch feature and possibly setup) | N | - | N | - | Y | N | N |
Allow miimon monitoring | Y | Y | Y | Y | Y | Y | Y |
Allow ARP monitoring | Y | Y | Y | Y | N | N | N |
- ^ a b c d Might work, but cause the switches to possibly change their "MAC to port" tables on every packet sent by the host.
- ^ For very special use. See section HA Mode Selection for Multiple Switch Topology.
- ^ a b With xmit_hash_policy = layer3+4. (layer3+4 is not fully 802.3ad compliant).
- ^ a b With xmit_hash_policy = layer2+3 or layer3+4. (layer3+4 is not fully 802.3ad compliant).
- ^ a b c Don't use Etherchannel in this mode. Packets received on inactive ports will be silently discarded.