[완료]현재 2개이상의 nic를 묶는 bonding방식의 한계를 알고싶습니다.
글쓴이: visualplus / 작성시간: 수, 2008/07/23 - 1:59오후
100메가 라인 두개를 하나로 묶어서 200메가로 올리려고 한다면, bonding방식을 사용해야 하는걸로 알고있는데,
이 과정에서 기술적 한계를 알고싶습니다.
음 예를들어 네트웍 구성이..
[ KT ] | <----------------------------> [ kt hub ] | | |eth1 |eth2 [ 100메가 2개 ] [ linux (bonding) ] |eth0 <----------------------------> | [ pc 1 ]
이런식으로 구성됐다고 봤을 때, bonding 가상 nic ip주소로 eth1과 eth2로 나눠 보내는게 bonding방식이라고 저는 알고있는데.
만약 kt hub쪽에서 포트로 트래픽을 100메가로 제한을 해놨다면 200메가의 대역폭을 가져갈 수 있겠지만,
KT 라우터쪽에서 ip당 100메가로 제한을 해 놔버리면 eth1과 eth2로 나눠서 보내는게 의미가 없어지지 않을까 하는게
제 생각입니다.
만약 제 생각이 맞다면 이제 bonding은 거의 쓰여지지 않을 수 있다는 생각이 드네요.
허접한 실력으로 대강 추측을 해보는것이라.. 틀리는점이 많을 것 같은데
고수분들의 조언좀 얻고자 글 올립니다.ㅠ.ㅠ
참. 그리고 하나 궁금한게 더 있었는데..
lvs ipvs 에서 tun방식으로 사용을 하면 리얼서버가 응답패킷의 출발지 ip를 로드밸런싱 서버의 ip로 보내게 되는데
kt같은경우에는 자신의 대역이 아닌 출발지가 올라오면 패킷을 잘라버리는것 같더군요.
그렇다면 이제 더이상 ipvs tunneling방식은 사용되지 못하는 기술이 아닌가 하는 의문점도 드네요.
Forums:
인용: KT
저도 잘은 모르지만, 가정용 공유기도 아니고 라우터단에서 ip별로 Qos를 걸까요?
그리고 그렇게 했다쳐도 bonding으로 2개를 묶었을 때
패킷을 동시에 2개 를 보내게 되는 걸로 알고있습니다.
예를 들면 1,2,3,4 패킷이 있다고 치면,
단일 회선일때는 1,2,3,4 순서대로 보내겠죠
2회선 bonding일 때에는 1번 패킷은 1번회선으로 2번은 2번회선으로
병렬방식으로 패킷을 보내는 것으로 알고 있습니다
즉, ISP가 port나 ip별로 qos를 했다쳐도 회선당 속도를 보장만 해준다면야
bonding을 하는데 있어서는 문제가 되지 않을 것 같습니다.
넵
음 isp업체에서 ip별로 qos를 안거나요?
혹시라도 라우터쪽에서 qos를 건다면 문제가 생길거 같아서요.
만약 ip별로 qos정책을 먹였다면
같은 대역의 ip는 결국엔 똑같은 라우터를 통해서 갈 거니까
linux와 라우터 사이에는 200메가가 나오겠지만 라우터에서 유저사이에는 100메가가 나오기 때문에
결국 유저가 느끼는 속도는 100메가가 아닐까 하는 생각이 듭니다.
예를들어 1,2,3,4의 패킷을 eth1번과 eth2번으로 나눈다고 봤을 때
eth1 로 1,3 패킷을 보내고
eth2 로 2,4 패킷을 보냈을 시 KT라우터 쪽에서 보면 동일한 IP로 온 패킷이기 때문에
ip별로 qos를 한다면 결국엔 qos에서 걸리지 않을까 하는 생각이었습니다.
저 qos에서 걸리지 않으려면 eth1로 보낸 1,3 의 패킷과 eth2로 보낸 2,4의 패킷의 출발지ip가 서로 달라야 하는데,
원래 bonding방식이 이런건가요?
이걸 어디선가 다시 합친다음에 서비스를 해야 하는건가요?
제가 잘못 이해했을 수 도 있다는 생각이 드네요..
저는 이렇게 구성을 했을 시 bonding ip (즉 eth1이나 eth2둘 중 하나의 ip)로 eth1과 eth2로 나눠보내는걸로 알고있었거든요.
그런데 KT라우터쪽에서 ip로 qos를 했을 경우에도 200메가의 대역폭을 가져가려면
애초에 eth1로 보낼때는 eth1 ip로 eth2로 보낼때는 eth2의 ip로 보내서
유저쪽에서 (혹은 다른 서버에서) 이 ip를 합칠 수 있도록 해야 할 거 같은데..
음.. 유저쪽에서 합치는것은 좀 어려울거 같고 다른 서버에서 합친다면 결국 그 서버의 대역폭이 200메가가 되야 하지
않나 싶어요.
2개의 회선을 각 다른 업체에서 받아서 라우터가 다른 ip를 설정하면 이 문제가 해결이 될 듯 한데,
웬지 isp업체에서 자신의 대역이 아닌 다른 대역은 패킷을 잘라버리는것 같다는 느낌이 들어서요.
인용:음..
그래서 저는 이렇게 구성 하고 서로 터널을 뚤어서 테스트를 한적이 있었습니다.
다른 구성방안이 떠오르지를 않더군여. ^^;
다시 합친다음 서비스하는 업체도 있습니다.
아..
아.. 그렇군요. tunnel을 뚫는 방법이 있었군요.
그러면 왼쪽에 있는 bond0에서 트래픽을 2개의 nic로 분산시킨 뒤 vpn캡슐을 씌워서
오른쪽에 이는 bond0에서 다시 합치는 것인가보군요.
그렇다면 bonding기술을 사용하려면 어디선간 다시 합쳐져야 하는것 같은데..
제가 본 문서에 보면 bonding기술을 사용한 linux에 물리는 hub를 bonding(trunking 등등..)기술이 지원되는 것을 사용하여야 하고, 셋팅도 해줘야 한다고 나와있는데..
그럼 그 hub셋팅하는것이 단순히 동일한 mac과 ip를 충돌시키지 말라는것 이외에 2개의 포트를 1개로 묶어서 나가는..
그러니까 2개의 포트로 들어온 패킷을 합치는 기능도 포함이 되어있다는 생각이 드네요.
죄송한데 혹시 이 글을 보신다면 제가 추측한게 맞는지.. 확인좀 해주시면 감사하겠습니다^^;;
그리고 정말 도움 많이됐습니다 감사합니다!
bonding은 대역폭확장
bonding은 대역폭확장 뿐만 아니라 고가용성을 위해서도 널리 쓰이기 때문에 트래픽제한이 걸린다고 해서 bonding의 효용성이 줄어들것으로는 생각되지 않는군요. 제 경우에는 개별 NIC이나 억세스단 스위치의 장애에 대비해서 bonding을 하는 경우가 더 많으니까요.
아시겠지만 bonding에도 모드가 여럿 있어서 active-backup、balance-tlb、balance-alb 모드 같은 경우는 어떤 레이어2스위치라도 별 설정없이 잘 작동합니다. 라운드로빈이나 XOR모드의 경우는 조금 애매한데 대략 트렁킹을 지원하는 스위치면 큰문제 없는 걸로 알고 있고요. 802.3ad 모드는 당연히 IEEE 802.3ad LACP를 지원하는 스위치여야 하고 스위치에서 셋팅이 필요합니다.
패킷 들어온 걸 합치는건 스위치가 할 일이 아니고 최종단에서 통신 프로토콜이 해주는 일이기에 특별히 설정을 할 필요는 없습니다. 물론 양단의 속도가 너무 차이나면 스택 오버플로우가 일어날테니 가능한 비슷하게 맞춰주긴 해야겠지요.
근데 로드밸런싱은 그자체의 오버헤드도 있기때문에... 저는 주로 고가용성을 위해서만 bonding를 쓰는 경우가 대부분입니다.
===== ===== ===== ===== =====
그럼 이만 총총...[竹]
http://elflord.egloos.com
===== ===== ===== ===== =====
그럼 이만 총총...[竹]
http://elflord.egloos.com
아...
넵 감사합니다^^
댓글 달기