Network Bonding

  Netwerk

Het netwerk word steeds belangrijker en op diverse OS’en worden netwerk kaarten dubbel uitgevoerd om uitval te voorkomen. op Linux word dit bonding (of soms network trunking). wat zijn de mogelijkheden. je hebt een aantal modes. je kan meerdere netwerk kaarten tegelijk op zelfde ip actief hebben en zo dus meer capaciteit krijgen maar je kan ook via een failover methode werken. op dit moment zijn er 7 verschillende modes allemaal met voor en nadelen.

modes:
mode=0 (Balance Round Robin)
mode=1 (Active backup)
mode=2 (Balance XOR)
mode=3 (Broadcast)
mode=4 (802.3ad)
mode=5 (Balance TLB)
mode=6 (Balance ALB)

Let op met de verschillende modes, als je een aparte netwerk group hebt overleg dan met die club, een aantal modes vereisen namelijk ook aanpassingen op de switches/configuratie.

uitleg bonding modes (engels)

in dit document word op dit momet alleen mode 1(Active backup) beschreven.

Inhoud

mode 1, RedHat Enterprise

het volgende beschrijft de configuratie voor RHEL systemen. ik heb dit getest op versie 4.x en 5.x, allereerste moeten we er voor zorgen dat we de bonding module kunnen gebruiken. hier voor plaatsen we 2 extra regels in /etc/modprobe.conf.

alias bond0 bonding
options bond0 miimon=500 mode=1

het options gedeelte kom je op veel sites ook tegen in /etc/sysconfig/network-scripts/ifcfg-bond0 maar ik heb gemerkt dat je op RHEL5 een warning krijgt. De configuratie lijkt dan wel te werken. bij RHEL4 krijg je de zelfde warning maar ook een fout melding hier werkt de configuratie niet.

# vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
ONBOOT=yes
USERCTL=no
IPADDR=10.233.14.10
NETMASK=255.255.254.0
NETWORK=10.233.14.0
BROADCAST=10.233.15.255

# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
ETHTOOL_OPTS="speed 1000 duplex full autoneg on"
HWADDR=00:23:7D:3C:7B:6E

# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
ETHTOOL_OPTS="speed 1000 duplex full autoneg on"
HWADDR=00:23:7D:3C:7B:6F

Als je alles goed hebt geconfigureerd hoef je alleen het netwerk te restarten, de bond module zal automatische geladen worden.

'”`UNIQ–google-00000001-QINU`”‘

mode 5, Debian/Ubuntu

Hier onder de config zoals je die kan instellen voor een Debian/Ubuntu als eerste hebben de de bonding kernel module nodig. installeer deze op het systeem.

$ sudo apt-get install ifenslave-2.6

Om de kernel module actief te maken tijdens het booten voegen we hem toe aan /etc/modules file,

$ echo "bonding" >> /etc/modules

om hem direct voor deze sessie actief te maken.

$ sudo modprobe bonding

Vervolgens passen we de netwerk config aan.

$ vi /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
bond-master bond0
bond-primary eth0

# ik heb 2 dual port netwerk kaarten in dit systeem.
auto eth2
iface eth2 inet manual
bond-master bond0

# The primary network interface
auto bond0
iface bond0 inet static
  address 10.66.41.10
  network 10.66.41.0
  netmask 255.255.255.0
  gateway 10.66.41.1 
  dns-search jouwdomein.local 
  dns-nameservers 192.168.53.100 192.168.53.69
  bond-mode balance-tlb
  bond-miimon 100
  bond-slaves none

hier na rebooten of het netwerk herstarten.

'”`UNIQ–google-00000003-QINU`”‘

Werking controleren

de werking controleren gaat bij redhat/debian/ubuntu op de zelfde manier. output hier onder is gemaakt op een Redhat machine. kan iets afwijken van een Debian/Ubuntu machine.

Laat de netwerk configuratie zien.

het bond MAC adres komt van de eerste slave interface.

# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:23:7D:3C:7B:6E
          inet addr:10.233.14.10  Bcast:10.233.15.255  Mask:255.255.254.0
          inet6 addr: fe80::223:7dff:fe3c:7b6e/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:13461 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13784 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1769730 (1.6 MiB)  TX bytes:3113545 (2.9 MiB)

eth0      Link encap:Ethernet  HWaddr 00:23:7D:3C:7B:6E
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:13443 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13784 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1768578 (1.6 MiB)  TX bytes:3113545 (2.9 MiB)
          Interrupt:74

eth1      Link encap:Ethernet  HWaddr 00:23:7D:3C:7B:6E
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:18 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1152 (1.1 KiB)  TX bytes:0 (0.0 b)
          Interrupt:106

Om de status van de bond interface te bekijken.

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)

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

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:23:7d:3c:7b:6e

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:23:7d:3c:7b:6f

Verder zal je informatie vinden in de messages log, hier komen ook meldingen in als er problemen zijn enkelen voorbeelden, netwerk kabel is uit 1 van de interfaces

#  tail -f /var/log/messages
kernel: bonding: bond0: link status definitely down for interface eth1, disabling it

Netwerk kabel is weer terug gestoken.

# tail -f /var/log/messages
kernel: bonding: bond0: link status definitely up for interface eth1.

'”`UNIQ–google-00000004-QINU`”‘

Extra info

Als je aanpassingen wil maken aan de werking van je bonding interface, bv je wil mode=0 gebruiken (2 interface tegelijk actief. of andere aanpassingen. houd er dan rekening mee dat de optie alleen bij het inlezen van de module worden gezet. maak je een aanpassing stop het netwerk, remove de module. pas /etc/modprobe.conf aan. en start het netwerk opnieuwe. controleer de werking met bovenstaande commando’s

stop het netwerk

/etc/init.d/network stop 

remove de module

rmmod bonding

pas je configuratie aan.

alias bond0 bonding
options bond0 miimon=500 mode=1

start het netwerk

/etc/init.d/network start