Ethernet Channel Bonding aka NIC Teaming na Linux sistemih


Ethernet Channel Bonding omogoča dve ali več kartic omrežnih vmesnikov (NIC) na eno navidezno kartico NIC, kar lahko poveča pasovno širino in zagotovi odvečnost kartic NIC. To je odličen način za doseganje odvečnih povezav, odpornosti na napake ali omrežij za uravnoteženje obremenitve v proizvodnem sistemu. Če je ena fizična NIC izklopljena ali izklopljena, bo samodejno premaknila sredstva na drugo kartico NIC. Povezovanje kanalov/NIC bo delovalo s pomočjo gonilnika za povezovanje v jedru. Za dokazovanje bomo uporabili dve NIC.

Na voljo je skoraj šest vrst kanalskih obveznic. Tu bomo pregledali le dve vrsti Channel Bond, ki sta priljubljeni in se pogosto uporabljata.

  1. 0: Izravnava obremenitve (Round-Robin): Promet se prenaša v zaporednem vrstnem redu ali krožno z obeh NIC. Ta način omogoča uravnoteženje obremenitve in odpornost na napake.
  2. 1: Aktivno varnostno kopiranje: V danem trenutku je aktiven samo en podrejeni NIC. Druga vmesniška kartica bo aktivna le, če aktivna podrejena NIC ne uspe.

Ustvarjanje povezave Ethernet kanalov

Na voljo imamo dve omrežni kartici Ethernet, tj. Za izvajanje spodnjih ukazov potrebujete privilegiranega super uporabnika.

Parameter MASTER bond0 in eth1 navedite kot SLAVE v konfiguracijski datoteki, kot je prikazano spodaj.

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

Tu tudi podajte parameter MASTER bond0 in eth2 vmesnika kot 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

Ustvarite bond0 in konfigurirajte vmesnik za povezovanje kanalov v imeniku “/ etc/sysconfig/network-scripts /”, imenovanem ifcfg-bond0.

Sledi vzorec konfiguracijske datoteke za povezovanje kanalov.

# 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"

Opomba: V zgornji konfiguraciji smo izbrali način Bonding Options = 0, tj. Round-Robin in miimon = 100 (intervali glasovanja 100 ms).

Oglejmo si vmesnike, ustvarjene z uporabo ukaza ifconfig, ki prikazuje, da se bond0 izvaja kot MASTER, in sicer vmesnika "eth1" in "eth2", ki delujeta kot 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)

Znova zaženite omrežno storitev in vmesniki morajo biti v redu.

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

Preverjanje stanja obveznice.

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

Spodnji izhod kaže, da je način lepljenja uravnoteženje obremenitve (RR) in da se prikažeta eth1 in eth2.

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

V tem primeru podrejeni vmesniki ostanejo enaki. samo ena sprememba bo v vmesniku za obveznice ifcfg-bond0 namesto "0" bo "1", kar je prikazano pod.

# 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"

Znova zaženite omrežno storitev in preverite stanje povezave.

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

Preverjanje stanja obveznice z ukazom.

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

Način vezave prikazuje toleranco napak (aktivno varnostno kopiranje) in podrejeni vmesnik je vklopljen.

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

Opomba: Ročno navzdol in navzgor podrejeni vmesniki preverite delovanje povezave kanalov. Glejte spodnji ukaz.

# ifconfig eth1 down
# ifconfig eth1 up

To je to!