R&D/클라우드

[Cloud Talk 4] bonding, trunking, aggregation

sunshout 2012. 2. 15. 08:38

본딩이란 단일 네트워크 인터페이스의 한계를 극복하고 고대역폭 또는 high availability 를 제공하기 위한 방안입니다. Ucloud high tier나 VDI에서 cnode의 service 및 storage 네트워크는 10G NIC 2개를 하나의 네트워크 인터페이스로 보이게 하는 본딩모드를 사용하고 있죠. Bonding, trunking, aggregation 등 다양한 이름으로 불리기도 합니다.

리눅스 네트워크에서는 주로 본딩이라고 말하고, 라우팅,스위칭 장비에서는 trunking, aggregation이란 용어가 좀더 친근한 듯 합니다.

 우리가 자주 말하는 본딩 모드는 크게 7가지 있습니다.

Balance-rr 또는 0 ==> Transmit packet에 대해서 sequential order로 round robin

Active-backup 또는 1 ==> 본딩된 nic 중에서 오직 하나만 사용

Balance-xor 또는 2 ==> Transmit hash policy에 의해서 전송

Broadcast 또는 3         ==> 모든 nic에 동일한 패킷을 transmit

802.3ad 또는 4         ==> LACP

Balance-tlb 또는 5 ==> Adaptive transmit load balancing

                                      Outgoing이 현재 트래픽 load에 따라 분배

Balance-alb 또는 6 ==> Adaptive load balancing = balanced-tlb + receive load balancing

 

여기서 중요하게 캐치해야 할 것은 802.3ad와 balance-alb를 제외하고는 outgoing 트래픽에 대한 로드밸랜싱이라는 거죠 즉 링크의 고대역폭을 양방향으로 얻고 싶다면 802.3ad가 진정한 대안입니다.

참조: http://www.kernel.org/doc/Documentation/networking/bonding.txt