Ethernet Channel Bonding aka NIC Teaming sa Linux Systems


Ang Ethernet Channel Bonding makapahimo sa duha o daghan pa nga Network Interfaces Card (NIC) ngadto sa usa ka virtual NIC card nga mahimong makadugang sa bandwidth ug makahatag ug redundancy sa NIC Cards. Kini usa ka maayo nga paagi aron makab-ot ang daghang mga link, pagtugot sa sayup o mga network sa pagbalanse sa load sa sistema sa produksiyon. Kung ang usa ka pisikal nga NIC nawala o natangtang sa saksakan, awtomatiko kini nga ibalhin ang mga kapanguhaan sa ubang NIC card. Ang channel/NIC bonding magtrabaho uban sa tabang sa bonding driver sa Kernel. Gigamit namon ang duha ka NIC aron ipakita ang parehas.

Adunay hapit unom ka matang sa mga tipo sa Channel Bond ang anaa. Dinhi, atong susihon ang duha lamang ka matang sa Channel Bond nga popular ug kaylap nga gigamit.

  1. 0: Pagbalanse sa load (Round-Robin): Ang trapiko gipasa sa sequential order o round-robin nga paagi gikan sa duha ka NIC. Kini nga mode naghatag og load balancing ug fault tolerance.
  2. 1: Active-Backup : Usa ra ka ulipon nga NIC ang aktibo sa bisan unsang gihatag nga punto sa panahon. Ang ubang Interface Card mahimong aktibo lamang kung ang aktibong ulipon nga NIC mapakyas.

Paghimo sa Ethernet Channel Bonding

Kami adunay duha ka Network Ethernet Cards ie eth1 ug eth2 diin ang bond0 pagabuhaton alang sa katuyoan sa pag-bonding. Kinahanglan ang superuser nga adunay pribilehiyo sa pagpatuman sa ubos nga mga sugo.

Hisguti ang parameter MASTER bond0 ug eth1 interface isip SLAVE sa config file sama sa gipakita sa ubos.

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

Dinhi usab, ipiho ang parameter nga MASTER bond0 ug eth2 nga interface isip 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

Paghimo bond0 ug i-configure ang Channel bonding interface sa “/etc/sysconfig/network-scripts/” nga direktoryo nga gitawag ug ifcfg-bond0.

Ang mosunod usa ka sample channel bonding configuration file.

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

Mubo nga sulat: Sa ibabaw nga configuration atong gipili ang Bonding Options mode=0 i.e Round-Robin ug miimon=100 (Polling interval 100 ms).

Atong tan-awon ang mga interface nga gihimo gamit ang ifconfig command nga nagpakita sa bond0 nga nagdagan isip MASTER nga parehong interface eth1 ug eth2 nga nagdagan isip 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)

I-restart ang serbisyo sa Network ug ang mga interface kinahanglan nga OK ra.

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

Pagsusi sa kahimtang sa bond.

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

Ubos nga output nagpakita nga ang Bonding Mode mao ang Load Balancing (RR) ug ang eth1 & eth2 nagpakita.

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

Niini nga senaryo, ang mga interface sa Slave nagpabilin nga pareho. usa ra ka pagbag-o ang naa sa interface sa bond ifcfg-bond0 imbes nga '0' kini mahimong '1' nga gipakita ingon sa ilawom.

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

I-restart ang serbisyo sa network ug susiha ang status sa bonding.

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

Pagsusi sa kahimtang sa bugkos nga adunay mando.

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

Ang Bonding Mode nagpakita sa fault-tolerance (active-backup) ug ang Slave Interface nahuman na.

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

Mubo nga sulat: Manwal nga ipaubos ug pataas ang Slave Interfaces aron masusi ang pagtrabaho sa Channel Bonding. Palihug tan-awa ang sugo sama sa ubos.

# ifconfig eth1 down
# ifconfig eth1 up

Mao na!