본문 바로가기

Software

Link Aggregation (Linux)

728x90


Link Aggregation mode 구분


mode0 : Load-Balancing (Round-robin) / balanced-rr
  ○ 발생된 패킷을 균등하게 각 링크별로 번갈아 보내는 방식으로 각 네트워크 인터페이스의 대역폭을 모두 사용 할 수 있다
  ○ 로드 밸런싱(load-balancing)과 시스템은 서비스 중단이 없음(fault-tolerance)을 보장하는 특징이 있다

mode1 : Active-backup / active-backup
  ○ 단지 하나의 네트워크 인터페이스만 활성화 되어 있으며 만약 활성화된 인터페이스의 링크 다운이 될경우 백업의 링크가 활성화되어 역할을 수행하는 방식
  ○ 서비스 중단이 없음(fault-tolerance)을 보장하는 특징이 있다

mode2 : Load-Balancing (XOR algorithm) / balance-xor
  ○ mode0 과 유사한 모드이다
  ○ 모든 네트워크 인터페이스의 링크가 활성화되며 데이터를 보내는 것은 Destination MAC주소와 Source MAC주소를 XOR 한다.
  ○ 로드 밸런싱(load-balancing)과 시스템은 서비스 중단이 없음(fault-tolerance)을 보장하는 특징이 있다

mode3 : Broadcast (Link Duplication) / broadcast
  ○ 묶여진 네트워크 인터페이스가 모두 활성화되며 발생된 모든 트래픽을 broadcast로 내보낸다

mode4 : LACP (802.3ad Link-Aggregation control Protocol) / 802.3ad
  ○ LACP를 이용하여 통신하기 때문에 스위치 역시 이 기능을 지원해야 사용가능한 모드
  ○ 받는 쪽 보내는 쪽 모두 LACP 기능이 활성화 되어 있어야 한다.

mode5 : Load-Balancing (Adaptive Transmit Load-Balancing) / balance-tlb
  ○ 어떠한 특별한 스위치도 필요 없다
  ○ 나가는 트래픽의 각 로드를 각각의 슬레이브로 로드를 주며 들어오는 드래픽은 현재 슬레이브로 받는다
  ○ 만약 슬레이브가 링크 다운될 경우 또 다른 슬레이브가 MAC 주소를 넘겨받아 처리한다

mode6 : Load-Balancing (Adaptive Load-Balancing) / balance-alb
  ○ balance-tlb 모드에 더하여 수신시(IPv4) 로드 벨런싱을 한다
  ○ 어떠한 특별한 스위치도 필요 없다
  ○ 수신 로드 벨런싱은 ARP negotiation을 통해 동작한다

영어 원문
balance-rr or 0
   ○ Round-robin policy transmits packets in sequential order from the first available slave through the last. This mode provides load balancing and fault tolerance.

active-backup or 1
   ○ Active-backup policy only one slave in the bond is active. A different slave becomes active if, and only if, the active slave fails. The bond's MAC address is externally visible on only one port to avoid confusing the switch.

balance-xor or 2
   ○ XOR policy transmit based on the selected transmit hash policy. The default policy is a simple [source MAC address XOR'd with destination MAC address] modulo slave count This mode provides load balancing and fault tolerance.

broadcast or 3
   ○ Broadcast policy transmits everything on all slave interfaces. This mode provides fault tolerance.

802.3ad or 4
   ○ IEEE 802.3ad Dynamic link aggregation. Creates aggregation groups that share the same speed and duplex settings. Utilises all slaves in the active aggregator according to the 802.3ad specification. Additional Switch configuration and support required.

balance-tlb or 5
   ○ Adaptive transmit load balancing channel bonding that does not require any special switch support. The outgoing traffic is distributed according to the current load on each slave. Incoming traffic is received by current slave. If the receiving slave fails another slave takes over the MAC address of the failed receiving slave.

balance-alb or 6
   ○ Adaptive load balancing includes balance-tlb plus receive load balancing (rlb) for IPv4 traffic, and does not require any special switch support. The receive load balancing is achieved by ARP negotiation. The bonding driver intercepts the ARP replies sent by local system on their way out and overwrites the source hardware address with the unique hardware address of one of the slaves in the bond such that different peers use different hardware addresses for the server.



리눅스 상에서 사용 예제

 1. 모듈 적재
   #>modprobe bonding mode=x  (x 는 mode 넘버)

   예시) #>modprobe bonding mode=6
 2. bonding 구축 커맨드
   #>ifconfig bond0 up
   #>ifenslav bond0 eth0 eth1

     ※ 만약 eth0 eth1이 up되어 있지 않은 상황이면 #>ifconfig eth0 up 사용

     ※ ifenslav 소스 : linux-3.x.x/Documentation/networking/ifenslave.c
     ※ gcc -o ifenslave ifenslave.c
 3. 나머지 dhcp/static, route 설정 진행
 4. bonding 구성 확인
   #>cat /proc/net/bonding/bond0

 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)  
   
 Bonding Mode: adaptive load balancing  
 Primary Slave: None  
 Currently Active Slave: eth0  
 MII Status: up  
 MII Polling Interval (ms): 100  
 Up Delay (ms): 0  
 Down Delay (ms): 0  
   
 Slave Interface: eth0  
 MII Status: up  
 Speed: 1000 Mbps  
 Duplex: full  
 Link Failure Count: 0  
 Permanent HW addr: 50:e5:49:d4:7f:c1  
 Slave queue ID: 0  
   
 Slave Interface: eth1  
 MII Status: up  
 Speed: 1000 Mbps  
 Duplex: full  
 Link Failure Count: 0  
 Permanent HW addr: 50:e5:49:d4:7f:be  
 Slave queue ID: 0  


  5. network interface 확인

    #>ifconfig

 bond0   Link encap:Ethernet HWaddr 50:E5:49:D4:7F:C1  
      inet addr:192.168.1.86 Bcast:192.168.3.255 Mask:255.255.252.0  
      UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1  
      RX packets:40774233 errors:0 dropped:0 overruns:0 frame:0  
      TX packets:14911586 errors:0 dropped:0 overruns:0 carrier:0  
      collisions:0 txqueuelen:0  
      RX bytes:60992302901 (56.8 GiB) TX bytes:986466757 (940.7 MiB)  
   
 eth0   Link encap:Ethernet HWaddr 50:E5:49:D4:7F:C1  
      UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1  
      RX packets:15851068 errors:0 dropped:0 overruns:0 frame:0  
      TX packets:7689837 errors:0 dropped:0 overruns:0 carrier:0  
      collisions:0 txqueuelen:1000  
      RX bytes:23587445853 (21.9 GiB) TX bytes:508050588 (484.5 MiB)  
      Interrupt:20 Memory:feb00000-feb20000  
   
 eth1   Link encap:Ethernet HWaddr 50:E5:49:D4:7F:BE  
      UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1  
      RX packets:24923159 errors:0 dropped:0 overruns:0 frame:0  
      TX packets:7221749 errors:0 dropped:0 overruns:0 carrier:0  
      collisions:0 txqueuelen:1000  
      RX bytes:37404846422 (34.8 GiB) TX bytes:478416169 (456.2 MiB)  
      Interrupt:16 Memory:fea00000-fea20000  

  6. bonding에 관련된 정보

     #>cat /sys/class/net/bond0/bonding/xxxx  이 sysfs 경로를 통하여 정보를 확인 가능

      * slaves : 해당 bond0 의 SLAVE 인터페이스 구성원

      * mode : 설정된 Link Aggregation mode 정보


728x90