본딩이란 여러장의 이더넷 카드를 묶어 하나의 ip를 부여하고 redundant link, fault tolerance 또는 load balancing을 구현하기 위한 방법. 예를 들어 100Mbps 네트워크 카드를 두 개 묶어서 200Mbps의 대역폭으로 구성할 수 있다. 또한 네트워크 카드가 두 개이기 때문에 물리적인 경로 또한 두 개가 생긴다.

즉, 네트워크 이중화라고 할 수 있다.

- Bonding 구현하기

Ⅰ. 네트워크 환경 구성 파일 설정

# cd /etc/sysconfig/network-scripts/

# vi ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BROADCAST=192.168.0.255
IPADDR=192.168.0.10
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
USERCTL=no <= root가 아닌 일반계정이 해당 인터페이스를 비활성화 가능 여부
# vi /etc/sysconfig/network-scripts/ifcfg-eth0

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

# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=bpan
GATEWAYDEV=bond0 ==> 추가
GATEWAY=192.168.0.1 ==> 추가

#/etc/rc.d/init.d/network restart ==> 네트워크 서비스 재 시작

Ⅱ. 모듈 구성

- bond 모듈 추가하기

# vi /etc/modprobe.conf ==> 내용 추가

alias bond0 bonding

options bond0 miimon=100 mode=1
bonding options

miimon
얼마나 자주 MII link를 감시할 것인가를 0.001초 단위로 설정한다. MII는 NIC가 살아있는지를
확인하는 데 사용된다.

mode
0 : Balance-round robin
첫 번째 가능한 슬레이브부터 마지막까지 순차적으로 전송한다. 로드밸런싱과 Fault Tolerance를 제공한다.
1 : Active-backup
bond에서 하나의 슬레이브만 활성화된다. 다른 슬레이브는 활성화된 슬레이브가 장애일 경우에만 활성화 된다.
2 : Balance-XOR
(출발지 MAC 주소와 도착지 MAC 주소의 XOR)에 기초하여 전송한다. 이것은 도착지 MAC 주소에 대해서 동일한 슬레이브를 선택하게 된다.
3 : Broadcast
모든 슬레이브 인터페이스에 전송한다.
4 : 802.3ad (link aggregation) - switch에 aggregation 그룹생성이 필요하다.
5 : transmit load 밸런스로써 보내는 패킷만 밸런스 한다.
6 : receive와 transmit패킷을 밸런스 한다.

# modprobe bonding ==> 모듈 올리기
# lsmod | grep bonding ==> 모듈 확인
bonding 68840 0
- 네트워크 설정 확인하기

#ifconfig
bond0
Link encap:Ethernet HWaddr 00:08:02:28:FC:EC
inet addr:200.200.201.10 Bcast:200.200.201.255 Mask:255.255.255.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:16722 errors:0 dropped:0 overruns:0 frame:0
TX packets:8125 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8539251 (8.1 Mb) TX bytes:774392 (756.2 Kb)

eth0
Link encap:Ethernet HWaddr 00:08:02:28:FC:EC
inet addr:200.200.201.10 Bcast:200.200.201.255 Mask:255.255.255.0
UP BROADCAST RUNNING NOARP SLAVE MULTICAST MTU:1500 Metric:1
RX packets:2688 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:381527 (372.5 Kb) TX bytes:0 (0.0 b)
Interrupt:5 Memory:f7ef0000-f7f00000

eth1

Link encap:Ethernet HWaddr 00:08:02:28:FC:EC
inet addr:200.200.201.10 Bcast:200.200.201.255 Mask:255.255.255.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:14034 errors:0 dropped:0 overruns:0 frame:0
TX packets:8125 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8157724 (7.7 Mb) TX bytes:774392 (756.2 Kb)
Interrupt:3 Memory:f7ee0000-f7ef0000

- bond0 동작 확인하기

# cat /proc/net/bonding/bond0