• -동두천 6.6℃
  • -강릉 19.4℃
  • 박무서울 10.0℃
  • 박무대전 11.1℃
  • 맑음대구 16.2℃
  • 맑음울산 17.7℃
  • 박무광주 10.1℃
  • 맑음부산 17.9℃
  • -고창 9.1℃
  • 연무제주 15.2℃
  • -강화 4.6℃
  • -보은 13.0℃
  • -금산 10.1℃
  • -강진군 10.6℃
  • -경주시 17.2℃
  • -거제 17.3℃
기상청 제공

리눅스에서 본딩 설정하기


# 차례
1. 본딩이란?
2. 본딩 설정 종류
3. 본딩 설정하기
3-1) redhat linux(centos포함)에서 본딩 설정하기
3-2) debian linux에서 본딩 설정하기
3-3) gentoo linux에서 본딩 설정하기



1. 본딩(bonding)이란?
여러개의 이더넷을 하나로 묶어 네트워크 대역폭을 늘리는 방법이다.
이와 비슷한 기술은 시스템에 따라 다양한 이름으로 명명된다.
HP-UX   : APA
SUN     : SunTrunking
Cisco   : EtherChannel
Windows : Teaming
Linux   : Bonding

이기술은 제한적인 인터페이스의 대역폭 향상을 목적으로 두고 있지만
개념적 특성으로 인해 클러스터링의 기본 기술로 사용 가능하다.


2. 본딩 설정 종류

mode는 해당 bonding 정책을 정의 한다.
Default는 0이다.

Mode의 정의는 다음과 같다.
   0 : Round-robin 정책
   첫 번째 가능한 슬레이브부터 마지막까지 순차적으로 전송한다.
   이 모드는 부하분산과 failover를 제공한다.
   (Active-Active, 이론상 슬레이브 수 만큼의 배수대로 대역폭을 확장가능하다.)

   1 : Active-backup 정책
   bond에서 하나의 슬레이브만 활성화된다.
   다른 슬레이브는 활성화된 슬레이브가fail된 경우에만 활성화 된다.
   (대역폭은 활성화 된 슬레이브 하나만큼의 대역폭을 갖는다.)

   2 : XOR 정책
   [(출발지 MAC 주소와 도착지 MAC 주소의 XOR) modula 슬레이브 개수] 에 기초하여 전송한다.
   이것은 각 도착지 MAC 주소에 대해서 동일한 슬레이브를 선택하게 된다.
   이 모드는 부하분산과 failover를 제공한다.

   3 : Broadcast 정책
   모든 슬레이브 인터페이스에 모든 것을 전송한다.
   이것은 failover를 제공한다.(mirror, 하나의 슬레이브만큼의 대역폭을 갖는다)


3. 본딩 설정하기
3-1) redhat linux(centos포함)에서 본딩 설정하기

# /etc/modules.conf
# ================================================================================= #

alias   bond0   bonding
alias   eth0      3c59x  ## <-- 현재 장착되어 있는 이더넷
alias   eth1      3c59x  ## <-- 새로 장착할 두번째 이더넷

bond0에서 0는 숫자 0입니다.
bonding은 커널 모듈을 의미합니다.
3c59x 는 모듈이름입니다(3Com 905B-TX 10/100M).

# ================================================================================= #


/etc/sysconfig/network-scripts/ifcfg-bond0
# ================================================================================= #

DEVICE=bond0
BOOTPROTO=none
USERCTL=no
ONBOOT=yes
NETWORK=xxx.xxx.xxx.96
NETMASK=255.255.255.0
GATEWAY=xxx.xxx.xxx.xxx
IPADDR=xxx.xxx.xxx.123

# ================================================================================= #


/etc/sysconfig/network-scripts/ifcfg-eth0
# ================================================================================= #

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

# ================================================================================= #


/etc/sysconfig/network-scripts/ifcfg-eth1
# ================================================================================= #

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

# ================================================================================= #

# bonding 모듈 삽입
insmod /lib/modules/{커널버전}/kernel/drivers/net/bonding/bonding.ko mode=0

# 설정 끝



각 네트워크 인터페이스 확인하기

  [bond0 / eth0 / eth1 모두 같아야 할 부분]

  - 이더넷 MAC Address : HWaddr 00:xx:C9:xx:E7:xx
    즉, 첫번째 이더넷(eth0)의 MAC Address 를 모두 따른다.
  - IP Address : inet addr:211.xxx.159.xxx
  - Brocast Address : Bcast:211.xxx.159.xxx
  - Net Mask :  Mask:255.255.255.xxx


  [서로 꼭 틀려야할 부분]

  - MASTER / SLAVE(********꼭 확인********)
    bond0 : ... RUNNING MASTER MULTICAST ...
    eth0/eth1 : ... RUNNING SLAVE MULTICAST ...
  - 이더넷 I/O Address(서로 다른 이더넷임을 확인)
    eth0 : Base address:0x7000
    eth1 : Base address:0x9000
  - 기타 패킷 양


# /sbin/ifconfig
bond0     Link encap:Ethernet  HWaddr 00:xx:C9:xx:E7:xx
          inet addr:211.xxx.159.xxx  Bcast:211.xxx.159.xxx  Mask:255.255.255.xxx
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1107 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0

eth0      Link encap:Ethernet  HWaddr 00:xx:C9:xx:E7:xx
          inet addr:211.xxx.159.xxx  Bcast:211.xxx.159.xxx  Mask:255.255.255.xxx
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:1721 errors:0 dropped:0 overruns:0 frame:0
          TX packets:554 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          Interrupt:9 Base address:0x7000

eth1      Link encap:Ethernet  HWaddr 00:xx:C9:xx:E7:xx
          inet addr:211.xxx.159.xxx  Bcast:211.xxx.159.xxx  Mask:255.255.255.xxx
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:1746 errors:0 dropped:0 overruns:0 frame:0
          TX packets:553 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          Interrupt:10 Base address:0x9000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0


# ls /proc/sys/net/ipv4/conf
all  bond0  default  eth0  eth1  lo

# 체크사항
게이트웨이나 네트워크 또는 외부 네트워크에 패킷을 보내고 받아본다.
네트워크 연결이 안되거나 속도가 현저하게 느리다면, 랜선이 허브와 이더넷에 올바르게
연결되어있는지 확인하거나 허브 장비에 해당 Link가 On되어 있는지 꼭 확인한다.

RX / TX 패킷 확인하기

# cat /proc/net/dev (또는 /sbin/ifconfig 의 결과에서 RX/TX 패킷 비교)
(행의 길이가 길어서 필요한 것만 옮겼음)

(단위 : 패킷 양)
Iface   RX-OK  RX-ERR  RX-DRP  RX-OVR      TX-OK  TX-ERR  TX-DRP TX-OVR
   lo    340       0       0       0        340      0       0      0
bond0      0       0       0       0       3313      0       0      0
 eth0  14711       0       0       0       1657      0       0      0
 eth1  14746       0       0       0       1656      0       0      0


3-2) debian linux에서 본딩 설정하기
3-3) gentoo linux에서 본딩 설정하기