네트워크 체널 본딩(또는 eql, sch_teql)

무혼인형의 이미지

안녕하십니까.

서로 다른 두개(또는 여러개)의 ISP를 사용하는 회선들을 가상 장치로 묶어서 부하를 분산하려고 합니다.(adv-routing문서와 http://doc.kldp.org/wiki.php/DocbookSgml/Traffic_LoadBalancing-KLDP 에는 포트, 서브넷 별 분산 등 각각의 장치로 분산하는 방법이 나옵니다)

궁국적인 목적은 목표서버에 VPN(SSL, GRE 또는 ipsec)을 연결해서 file을 빨리 올리기 위해서 넓은 대역폭이 필요해서 입니다.

문서를 이것 저것 찾아 봤는데.. 제가 원하는 상황까지 만들기가 힘들어서 이렇게 질문을 드립니다.

0. 상황
- eth0 : 192.168.0.1 - LAN
- eth1 : 211.212.12.222 - cable modem
- eth2 : 211.230.60.2 - 512k 전용선

1. eql 모듈을 사용해서 테스트 해 봤습니다.
"tunelinux.pe.kr의 리눅스와 윈도우즈의 공존:기업환경을위한 리눅스 블렉박스 만들기" 문서의 3.5 박스기사 부분을 참고했습니다. 그리고 대부분의 문서들이 ppp* 를 합치는데 쓰이는 걸로 봐서 혹시 ppp 에서만 쓰이는 걸까요? 아무튼 핑을 걸어 둔 다음에 랜 카드 불빛을 보면 양쪽으로 한번씩 번갈아가면서 나가기는 하는데 iptraf 같은 네트워크 모니터링 툴로 보면 icmp echo-request가 안보이네요 :( 물론 응답도 없고요 [실패]

2. bonding 모듈을 사용해서 테스트

# modprobe bonding
# alias bond0=bonding
# ifenslave bond0 eth1 eth2
Something broke getting the master's IP address: Cannot assign requested address.
Something broke getting the master's destination address: Cannot assign requested address.
Something broke getting the master's broadcast address: Cannot assign requested address.

......

SIOCSIFSLAVE: Invalid argument 
에러가 무수히 나지만 일단 여기까지만 했습니다. 문서를 좀 더 찾다보니 리눅스-사랑 넷에 http://linux-sarang.net/board/?p=read&table=qa&no=194883&page=&o[at]=s&o[sc]=t&o[ss]=bonding&o[st]=a 글이 있어서 따라해 봤는데 결과는 역시 [실패] 였습니다.

3. sch_teql 모듈 사용해서 테스트
http://www.geocrawler.com/archives/3/3559/2001/8/100/6471886 문서를 참고 했습니다.

# turns on/sets the teql0 device
ip link set dev teql0 up
ip addr add dev teql0 11.22.33.33/28
부분에서 부터 틀어지기 시작 했는데.. 아이피 대역을 마음대로 할당해도 되는 걸까요?
1 - 위의 문서처럼 (마음대로 할당해서, 사설아이피 포함)
2 - 전용선에서 쓸 수 있는 아이피를 새로 끌어다.. 예를 들자면 211.230.60.3
3 - 마스터에 해당되는 아이피 211.230.60.2
모두 안되네요.. [실패]

실제로 성공하신 분들의 성공담 이나 제 실패한 원인을 지적 해 주시면 감사하겠습니다.
8)

무한포옹의 이미지

그렇게 안될 겁니다.

저도 bonding 의 실제적인 경험은 없습니다.

그러나..

bonding 을 사용하는 목적은 같은 브로드캐스트 넷웍 상에서 (즉 스위치나 다이렉트로 DB서버등에 연결) 대역폭을 확보하기 위한 걸로 알고 있습니다.(아마)

저렇게는 사용할 수 없죠(아마)

-------------------------------
== warning 대부분 틀린 얘기입니다 warning ===

무혼인형의 이미지

무한포옹 wrote:
bonding 을 사용하는 목적은 같은 브로드캐스트 넷웍 상에서 (즉 스위치나 다이렉트로 DB서버등에 연결) 대역폭을 확보하기 위한 걸로 알고 있습니다.(아마)
네 저도 그렇게 알고 있었는데 eql이나 teql등을 이용해서 WAN으로 할 수 있다고 하더군요. :o
albamc의 이미지

패킷이 세션이나 발신지별이 아닌 무작위로 섞여서 나가기 때문에

맞지 않는것 같습니다.

^^*

layer7의 이미지

시스코 라우터의 Load sharing per packet 기능을

구현하려고 하시는건가요 ?

mycluster의 이미지

하시고자 하는 일은 bonding으로는 되지 않습니다.

bonding은 복수개의 NIC에 하나의 아이피를 주고 가각 master-slave방식으로 패킷을 번갈아서 한번씩 보내는 것입니다. 따라서 님처럼 두개의 아이피로 각각 분산할 경우에는 bonding을 사용할 수 없읍니다.

teql을 사용하는 것이 타당할 것 같읍니다. eql은 원래 복수개의 모뎀라인을 엮어서 대역폭을 늘이고자 하는 시도로 개발된 것이고, 여기에 teql이라고 해서 tcp-ip에도 적용할 수 있도록 한것입니다. 따라서 두개의 회선으로 각각 패킷을 보내고자 할때는 teql을 사용하면 될 거 같네요.

물론 제가 테스트해본 내부네트웍상에서 100Mbps x 2(2000년에 해서 기억이 가물가물)에서는 teql은 별로 썩 만족스럽지 못했읍니다. 물론 이때는 클러스터에서 테스트하기 위한 것이라서 bonding이 적합한 경우였지요.

teql을 자세히 읽어보고 설정해보십시오. 저는 하도 오래전에 해본거라 어케 설정했었던지를 문서를 봐야할 것 같읍니다.

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

bosong2의 이미지

별로 속도 나오지는 않네요.
커널은 2.4.18-3으로 했구요.

P4 1.7G, 512M, 200G IDE, 3Com905b 2개, 3Com 3300XM Switch
이런 상황에서 구성 이더넷 채널 본딩을 했는데 이건 라운드로빈(무조건 번갈아 보내기)방식으로 트래픽 분산처리 하므로 출발지와 목적지가 동일한 IP여야 합니다.
다른 네트웍 환경을 각각 랜카드에 물려서 한다는건 말이 안되는 거구요.
한쪽으로만 트래픽이 나가게 되고 한쪽은 막혔을때 알아서 트래픽이 한쪽으로 몰려가지 않고 막힌쪽 패킷은 버려집니다. ㅡㅡ; 엄청난 문제점이죠.

게다가 장치 2개이상을 묶어서 한개의 IP를 설정하는 것이기 때문에 더욱 안되죠.

내부 네트웍 부하 분산용으론 좋습니다.
트래픽 발생이 많아서 동시접속이 많은 경우. 최적이죠.(파일서버, DB 서버)
실제로 PC 한대가 접속하면 Switch에서 100M속도로 링크되면 랜카드 하나당 50%씩 나눠서 분산해서 나가는걸 확인했습니다.
문제는 본딩을 안했을때는 80Mbps정도 링크되는데 본딩했을땐 20Mbps정도밖에 안나오더군요. 이유는 아직 해결 못했습니다. 물론 여러대 붙이면 효율이 높아지지만.. 일단 한대의 트래픽 Max값이 영 느려서..
좀더 연구 해야겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.