span class=postbodyspan style=font-size: 24px; line-height: normal;minzkn의 Gentoo linux 에서의 IP bonding 구축 설치기록/span br / br / span style=font-size: 18px; line-height: normal;span style=font-weight: bold;IP bonding 이란?/span/span br / 간략히 설명하자면 span style=text-decoration: underline;여러장의 NIC를 마치 하나의 NIC로 묶어서 모든 트래픽을 각 NIC에 균등하게 일정한 규칙에 의해서 분산/span시키는 것을 말합니다. br / br / span style=font-size: 18px; line-height: normal;span style=font-weight: bold;Gentoo linux 에서의 IP bonding 환경 구축/span/span br / span style=font-weight: bold;1. Kernel 설정/span br / 우선 저의 Gentoo Linux 환경에서 Linux kernel 2.6.12이하버젼에서는 IP bonding 을 사용하면 시스템이 굉장히 불안해졌습니다. 이에 대해서 좀더 명확히 말씀드리고 싶지만 정신건강을 위해서 span style=text-decoration: underline;2.6.14 이상의 버젼/span에서 구축하시기를 권장합니다. br / Kernel에서 다음의 옵션이 Module 로 설정되어 있는지 확인합니다. br / /spantable align=center border=0 cellpadding=3 cellspacing=1 width=90%tbodytr tdspan class=genmedb인용:/b/span/td /tr tr td class=quoteDevice Drivers/Network device support/Bonding driver support [M]/td /tr/tbody/tablespan class=postbody br / IP bonding 에 대한 커널문서는 커널소스에서 span style=font-weight: bold;Documentation/networking/bonding.txt/span 위치에 있으니 한번쯤 읽어보시면 좋겠습니다. br / 커널을 빌드하면 bonding.ko 모듈이 생겼을겁니다. 정상적으로 Gentoo 를 설치하여 사용중이라면 특별히 /etc/modules.autoload.d/kernel-2.6 에 추가해줄필요는 없을겁니다. 하지만 만약 bonding 모듈이 자동으로 올라가지 않으면 추가해주시면 되겠습니다. br / 그리고 bonding 에 대한 정책이 여러가지가 있는데 bonding 모듈을 올릴때 이러한 옵션을 지정해줄수 있습니다. 기본정책을 사용하지 않고 별도로 정책을 사용하시려면 /etc/modules.autoload.d/kernel-2.6 에 추가하면 됩니다. 기본값은 bonding miimon=100 mode=1 인것으로 보시면 됩니다. 보다 자세한 내용은 Kernel 문서를 참조하세요. br / br / span style=font-weight: bold;2. ifenslave 설치/span br / 다음과 같이 하여 ifenslave 를 설치합니다. br / /spantable align=center border=0 cellpadding=3 cellspacing=1 width=90%tbodytr tdspan class=genmedb인용:/b/span/td /tr tr td class=quotebash# emerge ifenslave/td /tr/tbody/tablespan class=postbody br / 또는 커널소스에 보시면 Documentation/networking/ifenslave.c 소스가 있는데 이것을 직접 컴파일하여 /sbin/ifenslave 에 저장하셔도 됩니다. br / br / span style=font-weight: bold;3. Network configuration/span br / /etc/conf.d/net 에서 아래의 예제를 참조하시어 적절히 수정하시면 됩니다. br / 아래의 예제는 eth0 가 master가 되고 eth1 이 slave 가 되어 192.168.xx.xx 로 bond0 를 만들어 묶는 것입니다. 이때 eth0와 eth1은 보통 null 을 주시면 무난할겁니다. br / /spantable align=center border=0 cellpadding=3 cellspacing=1 width=90%tbodytr tdspan class=genmedb인용:/b/span/td /tr tr td class=quoteconfig_eth0=(null) br / config_eth1=(null) br / br / slaves_bond0=eth0 eth1 br / config_bond0=(192.168.xx.xx broadcast 192.168.xx.xx netmask 255.255.255.0) br / routes_bond0=(default gw 192.168.xx.1) br / br / depend_bond0() { br / need net.eth0 net.eth1 br / }/td /tr/tbody/tablespan class=postbody br / br / span style=font-size: 18px; line-height: normal;span style=font-weight: bold;IP bonding 을 사용해보고서.../span/span br / 우선 eth0 또는 eth1 어느한쪽의 LAN cable 을 뽑아도 모든 Network 은 정상적으로 연결이 유지되는것을 보였습니다. 하지만 경우에 따라서는 ping 의 경우 약간의 loss가 일시적으로 발생한 경우가 있기는 합니다. br / 그리고 여러 호스트에 연결하여 많은 트래픽을 사용할때 약간의 체감속도가 빨라졌습니다. 하지만 1:1 호스트간의 트래픽 향상은 없었습니다. 즉, 1 vs 다수의 host 연결시에 꽤 좋은 성능을 느낄수 있었습니다. br / br / 정상적으로 설치가 되었으면 ifconfig 명령으로 다음과 같이 나오는것을 확인할수 있을겁니다. bond0, eth0, eth1 의 MAC 주소가 모두 같게 나오는것도 흥미로운 부분입니다. br / /spantable align=center border=0 cellpadding=3 cellspacing=1 width=90%tbodytr tdspan class=genmedb인용:/b/span/td /tr tr td class=quotebond0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx br / inet addr:192.168.xx.xx Bcast:192.168.xx.xx Mask:255.255.255.0 br / inet6 addr: fe80::20e:cff:fe5a:c405/64 Scope:Link br / UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 br / RX packets:10428636 errors:0 dropped:0 overruns:0 frame:0 br / TX packets:8704619 errors:0 dropped:0 overruns:0 carrier:0 br / collisions:0 txqueuelen:0 br / RX bytes:1987897250 (1895.8 Mb) TX bytes:1630747353 (1555.2 Mb) br / br / eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx br / inet6 addr: fe80::20e:cff:fe5a:c405/64 Scope:Link br / UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 br / RX packets:5612670 errors:0 dropped:0 overruns:0 frame:0 br / TX packets:4352310 errors:0 dropped:0 overruns:0 carrier:0 br / collisions:0 txqueuelen:1000 br / RX bytes:1033339780 (985.4 Mb) TX bytes:2955265436 (2818.3 Mb) br / br / eth1 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx br / inet6 addr: fe80::20e:cff:fe5a:c405/64 Scope:Link br / UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 br / RX packets:4815966 errors:0 dropped:0 overruns:0 frame:0 br / TX packets:4352309 errors:0 dropped:0 overruns:0 carrier:0 br / collisions:0 txqueuelen:1000 br / RX bytes:954557470 (910.3 Mb) TX bytes:2970449213 (2832.8 Mb) br / Interrupt:10/td /tr/tbody/tablespan class=postbody br / br / br / span style=font-size: 18px; line-height: normal;span style=font-weight: bold;참고문서/span/span br / a href=http://www.gentoo-wiki.com/index.php?title=HOWTO_Setup_Bonded_ethernet_adaptersamp;redirect=no target=_blank class=postlinkhttp://www.gentoo-wiki.com/index.php?title=HOWTO_Setup_Bonded_ethernet_adaptersamp;redirect=no/a/span
크리에이티브 커먼즈 라이센스
Creative Commons License
2007/05/28 17:05 2007/05/28 17:05
받은 트랙백이 없고, 댓글 span class="cnt"하나/span가 달렸습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/132

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/132

트랙백 주소 :: http://blog.minzkn.com/trackback/132

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/132

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/132

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/132
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/132
  1. yundream 2007/05/28 17:29  댓글주소  수정/삭제  댓글쓰기

    독특하면서도 유용한 기능이군요.
    이론상으로는 패킷을 인캡슐레이션 하고나서, 각각의 이더넷에잘 던져주면 될지 싶기도하고.
    들어오는 패킷은 라운드로빈하게 들어올거라 생각되는데, 하나의 버퍼에서 처리하게 하면 될려나요.