랜 카드 두 개 쓰기
글쓴이: purewell / 작성시간: 화, 2003/02/18 - 10:01오전
일단 리눅스 박스에 랜카드가 두개 달려 있습니다.
처음에는 한 장만 잡아서 썼는데...
이런 것이 있더군요...
Quote:
랜카드 첫번째장은 input만,
두번째장은 output만 하게해서 선로 부하량을 줄일 수 있다
이거 이런 기술(?)의 정확한 용어는 뭐라고 하며,
어떻게 구현해야 하나요????
Forums:
Channel Bonding
EtherChannel, Channel Bonding, Link Aggregation, Trunking 등등
여러가지 용어가 쓰입니다.
용어에 따라 그 구현방법이 조금씩 다르기도하고, 사용되는 플랫폼에도 차이가 있긴 하지만, 궁극적인 목적은 동일합니다.
Channel Bonding
레드헷에서 채널 본딩(Channel Bonding)하는 방법입니다.
일단 커널이 bonding을 지원하도록 컴파일 되어 있어야 됩니다.
레드헷 7.x 이후의 기본 커널은 모듈로 지원하도록 컴파일 되어 있습니다
먼저 모듈을 로드하도록 /etc/conf.modules 에 아래 라인을 등록합니다
alias bond0 bonding
다음에 랜카드 설정을 해야 합니다.
/etc/sysconfig/network-scripts 에 ifcfg-bond0 파일을 아래 내용으로 추가합니다
DEVICE=bond0
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
IPADDR=xxx.yyy.zzz.nnn
NETMASK=255.255.255.xxx
NETWORK=xxx.yyy.zzz.nnn
BROADCAST=xxx.yyy.zzz.nnn
랜카드 2장이 있을 경우에.. eth0, eth1 이라면
ifcfg-eth0 및 ifcfg-eth1 의 내용은 다음과 같습니다.
ifcfg-eth0
------------------------
DEVICE=eth0
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ifcfg-eth1
------------------------
DEVICE=eth1
USERCTL=no
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
이제 리부팅 합니다.
리부팅 후 ifconfig 하면
bond0 Link encap:Ethernet HWaddr 00:C0:9F:1B:50:78
inet addr:xxx.yyy.zzz.nnn Bcast:xxx.yyy.zzz.kkk Mask:255.255.255.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:127044928 errors:0 dropped:0 overruns:0 frame:0
TX packets:200054132 errors:0 dropped:0 overruns:88 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 Kb) TX bytes:0 (0.0 Kb)
eth0 Link encap:Ethernet HWaddr 00:C0:9F:1B:50:78
inet addr:xxx.yyy.zzz.nnn Bcast:xxx.yyy.zzz.kkk Mask:255.255.255.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:42727937 errors:0 dropped:0 overruns:0 frame:0
TX packets:66684711 errors:0 dropped:0 overruns:29 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 Kb) TX bytes:0 (0.0 Kb)
Interrupt:20 Base address:0x3000
eth1 Link encap:Ethernet HWaddr 00:C0:9F:1B:50:78
inet addr:xxx.yyy.zzz.nnn Bcast:xxx.yyy.zzz.kkk Mask:255.255.255.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:42122186 errors:0 dropped:0 overruns:0 frame:0
TX packets:66684711 errors:0 dropped:0 overruns:31 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 Kb) TX bytes:0 (0.0 Kb)
Interrupt:21 Base address:0x5000
위와 같은 내용이 나옵니다.
ping 또는 네트웍을 사용하는 커맨드를 사용한 후.
다시 ifconfig 로
각각의 트래픽이 동일하게 변화하는 지를 확인해서 bonding 이 제대로 되는 지 알수 있습니다.
그럼..
????????????? 다들....
저도 같은 고민으로 현재 검색하고 찾아보고 있습니다.
제가 현재 답변드리는 방법이외에 더 좋은 방법이 있다면
제 멜인 escalixx@gmail.com 으로 보내주셨으면 좋겠네요.
두개의 랜카드에서 한쪽은 Input만 한쪽은 Output만 사용??
위의 답변을 참고로 Channel Bonding을 시현해 봤습니다.
하지만 다른 각각의 기능만을 사용 할 수 없더군요...
그러다 option으로 broadcast 기능의 mode를 바꿔 사용해보니.
되더라구요 하지만 이건 반쪽짜리 였습니다. 왜냐하면 입력이되고
옵션에 맞추어 양쪽다 날라가는 구조였던거죠... Bonding은 분배하여
인식하고 사용되도록 고안된것 같더라구요. 계속 찾아보니까요.
그래서 다른 방법을 찾다... 가장 근접한 3가지 방법을 찾았습니다.
1. 소스로 구현하여 SO_BINDTODEVICE 옵션 사용 방법
2. iptable 로 구현
3. bridge 로 구현
입니다. 이 세가지가 가장 근접한듯...
다른 의견있으면 답글 달아주세요.
저도 아직도 최적화 방법을 찾고 있습니다.
참고
http://kldp.org/node/28780
참고하세요.
댓글 달기