Enllaç de canals Ethernet també conegut com NIC Teaming en sistemes Linux


La vinculació de canals Ethernet permet dues o més targetes d'interfícies de xarxa (NIC) a una única targeta NIC virtual que pot augmentar l'ample de banda i proporcionar redundància de les targetes NIC. Aquesta és una bona manera d'aconseguir enllaços redundants, tolerància a errors o xarxes d'equilibri de càrrega al sistema de producció. Si una NIC física està caiguda o desconnectada, mourà automàticament els recursos a una altra targeta NIC. La vinculació canal/NIC funcionarà amb l'ajuda del controlador d'enllaç al nucli. Utilitzarem dues NIC per demostrar el mateix.

Hi ha gairebé sis tipus de tipus de bons de canal disponibles. Aquí, revisarem només dos tipus d'enllaços de canal que són populars i s'utilitzen àmpliament.

  1. 0: equilibri de càrrega (Round-Robin): el trànsit es transmet en ordre seqüencial o de manera round-robin des de les dues NIC. Aquest mode proporciona equilibri de càrrega i tolerància a errors.
  2. 1: Còpia de seguretat activa: només una NIC esclau està activa en un moment determinat. Una altra targeta d'interfície només estarà activa si falla la NIC esclau activa.

Creació d'enllaços de canals Ethernet

Tenim dues targetes Ethernet de xarxa, és a dir, eth1 i eth2, on es crearà bond0 amb finalitats d'enllaç. Necessites privilegis de superusuari per executar les ordres següents.

Esmenteu el paràmetre MASTER bond0 i la interfície eth1 com a SLAVE al fitxer de configuració, tal com es mostra a continuació.

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

Aquí també, especifiqueu el paràmetre MASTER bond0 i la interfície eth2 com a 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

Creeu bond0 i configureu la interfície d'enllaç de canal al directori /etc/sysconfig/network-scripts/ anomenat ifcfg-bond0.

El següent és un fitxer de configuració d'enllaç de canal de mostra.

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

Nota: A la configuració anterior hem escollit el mode Opcions d'enllaç = 0, és a dir, Round-Robin i miimon = 100 (Intervals de sondeig 100 ms).

Vegem les interfícies creades amb l'ordre ifconfig que mostra que bond0 s'executa com a MASTER, ambdues interfícies eth1 i eth2 s'executen com a ESCLAVS.

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

Reinicieu el servei de xarxa i les interfícies haurien d'estar bé.

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

Comprovació de l'estat de la fiança.

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

La sortida següent mostra que el mode d'enllaç és l'equilibri de càrrega (RR) i apareixen eth1 i 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

En aquest escenari, les interfícies esclaus segueixen sent les mateixes. només hi haurà un canvi a la interfície d'enllaç ifcfg-bond0 en lloc de 0, serà 1, que es mostra a continuació.

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

Reinicieu el servei de xarxa i comproveu l'estat de l'enllaç.

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

Comprovació de l'estat de l'enllaç amb comanda.

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

El mode d'enllaç mostra tolerància a errors (còpia de seguretat activa) i la interfície d'esclau està activada.

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

Nota: cap avall i amunt manualment les interfícies esclaus per comprovar el funcionament de la connexió de canals. Si us plau, vegeu l'ordre com a continuació.

# ifconfig eth1 down
# ifconfig eth1 up

Això és!