Ethernet Channel Bonding aka NIC Teaming op Linux Systemer


Ethernet Channel Bonding erméiglecht zwee oder méi Network Interfaces Card (NIC) op eng eenzeg virtuell NIC Kaart déi d'Bandbreedung erhéijen kann a Redundanz vun NIC Kaarten ubitt. Dëst ass e super Wee fir redundante Linken, Feelertoleranz oder Belaaschtungsnetzwierker am Produktiounssystem z'erreechen. Wann ee kierperlecht NIC erof ass oder ausgeschloss ass, wäert et automatesch Ressourcen op aner NIC Kaart réckelen. Channel/NIC Bindung wäert mat der Hëllef vum Bindung Chauffer am Kernel schaffen. Mir benotzen zwee NIC fir datselwecht ze demonstréieren.

Et gi bal sechs Zorte vu Channel Bond Zorte sinn sinn. Hei wäerte mir nëmmen zwou Zorte vu Channel Bond iwwerpréiwen déi populär a wäit benotzt ginn.

  1. 0: Load Balancing (Round-Robin): Den Traffic gëtt a sequentiell Uerdnung oder Ronn-Robin-Moud vu béide NIC iwwerdroen. Dëse Modus bitt Laaschtbalancéierung a Feelertoleranz.
  2. 1: Aktiv-Backup: Nëmmen ee Sklave NIC ass aktiv zu all Zäitpunkt. Aner Interface Card wäert aktiv ginn nëmmen wann den aktive Sklave NIC feelt.

Schafen Ethernet Channel Bonding

Mir hunn zwou Netzwierk Ethernet Kaarten dh eth1 an eth2 wou bond0 fir Bindungszwecker erstallt gëtt. Braucht Superuser privilegiéiert fir ënnert Kommandoen auszeféieren.

Ernimmen Parameter MASTER bond0 an eth1 Interface als SLAVE an Configuratiounsdatei wéi ënnendrënner gewisen.

# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
USERCTL=no
MASTER=bond0
SLAVE=yes

Hei och, uginn Parameter MASTER bond0 an eth2 Interface als SLAVE.

# vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE="eth2"
TYPE="Ethernet"
ONBOOT="yes"
USERCTL=no
#NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes

Erstellt bond0 a konfiguréiert Channel Bonding Interface am /etc/sysconfig/network-scripts/ Verzeichnis mam Numm ifcfg-bond0.

Déi folgend ass eng Probe Kanalbindungskonfiguratiounsdatei.

# vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=0 miimon=100"

Notiz: An der uewe genannter Konfiguratioun hu mir Bonding Options Modus = 0 gewielt dh Round-Robin a miimon = 100 (Polling Intervalle 100 ms).

Loosst eis Schnëttplazen gesinn erstallt mam ifconfig Kommando deen bond0 weist wéi de MASTER béid Interfaces eth1 an eth2 lafen als SLAVES.

# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
          inet addr:192.168.246.130  Bcast:192.168.246.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe57:618e/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:17374 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16060 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1231555 (1.1 MiB)  TX bytes:1622391 (1.5 MiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:16989 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8072 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1196931 (1.1 MiB)  TX bytes:819042 (799.8 KiB)
          Interrupt:19 Base address:0x2000

eth2      Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:385 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7989 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:34624 (33.8 KiB)  TX bytes:803583 (784.7 KiB)
          Interrupt:19 Base address:0x2080

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:480 (480.0 b)  TX bytes:480 (480.0 b)

Restart Network Service an Interfaces sollen OK sinn.

# service network restart
Shutting down interface bond0:                             [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface bond0:                               [  OK  ]

Iwwerpréift de Status vun der Obligatioun.

# watch -n .1 cat /proc/net/bonding/bond0

Ënnert Ausgang weist datt de Bonding Mode Load Balancing (RR) ass an eth1 & eth2 weisen op.

Every 0.1s: cat /proc/net/bonding/bond0                         Thu Sep 12 14:08:47 2013 

Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:57:61:8e
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:57:61:98
Slave queue ID: 0

An dësem Szenario bleiwen Sklave Interfaces déiselwecht. nëmmen eng Ännerung wäert do sinn an der Bond-Interface ifcfg-bond0 amplaz '0' et wäert '1' sinn, wat ugewise gëtt wéi ënner.

# vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=1 miimon=100"

Restart Reseau Service a kontrolléieren de Status vun Bindung.

# service network restart
Shutting down interface bond0:                             [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface bond0:                               [  OK  ]

Iwwerpréift de Status vun der Obligatioun mat Kommando.

# watch -n .1 cat /proc/net/bonding/bond0

Bonding Mode weist Feelertoleranz (aktive Backup) a Sklave Interface ass erop.

Every 0.1s: cat /proc/n...  Thu Sep 12 14:40:37 2013

Ethernet Channel Bonding Driver: v3.6.0 (September 2
6, 2009)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:0c:29:57:61:8e
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:0c:29:57:61:98
Slave queue ID: 0

Notiz: Manuell erof an erop op d'Sklave Interfaces fir d'Aarbecht vum Channel Bonding ze kontrolléieren. Kuckt w.e.g. de Kommando wéi hei ënnen.

# ifconfig eth1 down
# ifconfig eth1 up

Dat ass et!