LACP 로드 밸런싱

  • LACP로 설정된 채널 그룹의 이중화된 링크를 통해 트래픽을 로드 밸런싱하는 과정에서 순차적으로 전송되는 프레임이 목적지에서는 도착 순서가 뒤바뀌는 현상이 발생할 수 있음
  • 로드 밸런싱은 프레임의 전송 시점에 적용되는 기술로, 양방향으로 동작 X
  • 장비간의 로드 밸런싱 방식의 차이에 따라 패킷을 수신하는 장비에서 재배열과 부하 쏠림 현상(링크의 부하 비율이 균등하지 않고 한쪽으로 몰리는 현상)이 발생할 수 있음
  • 어그리게이션을 통한 로드 밸런싱은 관리자의 서비스에 따른 로드 밸런싱 파라미터 설정에 상당히 의존적임
  • 두 개의 링크를 하나의 채널로 설정하고 이를 로드 밸런싱하는 경우 뒤바뀌는 현상 예시
    1. 큰 크기의 프레임은 첫 번째 링크로 전송
    2. 두 번째 상대적으로 적은 크기의 프레임은 두 번째 링크로 전송
    3. 도착지에서의 순서는 두번째 프레임이 첫번째 전송한 프레임보다 먼저 도달함
    4. 전송 받은 서버는 첫번째 프레임과 두번째 프레임의 순서를 재배열을 수행
  • 802.3ad 표준에는 어떤 링크를 사용할 것인가에 대한 결정에 대한 언급은 없지만 링크에 가중치를 부여하는 방식을 설명
    1. 어그리게이션된 링크에서 재배열을 방지하면서 적절하게 트래픽 부하를 분산할 수 있는 로드 밸런싱 방안을 고려
    2. IEEE 표준에 어그리게이션된 물리적 링크 간 완벽한 로드 밸런싱에 관한 사항이지만 로드 밸런싱 비율이 보장돼 있지 않기 때문에 장비 제조사별로 각기 다른 로드 밸런싱 알고리즘을 적용
    3. 목적지 MAC 주소 기반의 로드 밸런싱 수행의 경우 특정 목적지로 전송되는 프레임은 어그리게이션된 다수의 링크 중 하나의 링크만 사용해 전송
    4. 트래픽이 폭주해 링크가 포화 상태에 이르면 링크 대역폭에 수용되지 못한 오버플로우(Overflow)된 프레임은 다른 링크로 전환되지 않고 폐기됨 → 프레임 손실 발생
  • 로드 밸런싱을 위해 사용되는 파라미터를 목적지 MAC 주소 외에 다른 방식으로 변경해야 함
    1. 분배기가 다중 링크에 프레임을 전송할 때 전송할 물리적 링크를 결정해야하는 과정에서 수행
    2. 분배기가 로드 밸런싱을 위해 사용하는 기본적인 알고리즘은 목적지 MAC 주소를 변수로 하는 해시(Hash) 알고리즘
    3. 재배열 문제와 로드 밸런싱을 위해 가장 많이 사용하는 방법이 L2 계층의 주소인 MAC 주소를 사용하는 방법
    4. 정교한 로드 밸런싱을 하기 위해 시스코의 경우 L3 계층의 파라미터(IP주소), L4 계층의 파라미터(Port 번호)를 로드 밸런싱 알고리즘 연산의 변수로 사용


본딩 모드 알고리즘

  • 라운드 로빈(mode 0; Round-Robin)은 기계적으로 NIC을 돌려쓰기 때문에 트래픽간 편차가 클 경우 부하 분산이 어려움
  • mode 2(balance-xor) 혹은 mode 4(LACP)를 추천
  • mode 2는 송신만 부하분산이 되고 XOR 스타일상 부하가 한쪽으로 몰릴 가능성이 있어서 성능으로만 보면 mode 4(LACP)를 선택하시는게 좋음 → 단, mode 4(LACP)는 연결될 스위치가 802.3ad 설정이 되어있어야 함

1. mode 0 : Round-Robin

  • 전송 가능한 슬레이브 처음부터 끝까지 순차적으로 전송
  • mode 0 (Round-Robin)모드는 부하분산과 failover를 제공
  • active-active → 슬레이브 수의 배수대로 대역폭을 확장 가능
  • 스위치에서 지원한다면 hashing 없이 load balancing 가능

2. mode 1: Active-backup

  • bond에서 하나의 슬레이브만 활성화하고, 다른 슬레이브는 standby 상태로 대기
  • 활성 중인 슬레이브가 fail 된 경우 standby 슬레이브가 활성화
  • 대역폭은 활성화된 슬레이브의 대역폭을 가짐
  • Active로 설정할 포트를 primary로 직접 설정하지 않으면 failback 되지 않음

3. mode 2 : balance-xor (load balancing + failover)

  • mode 0과 비슷하지만 xor연산을 이용하여 목적지 Mac과 근원지 Mac을 이용하여 분배
  • fault tolerance 와 load balancing 을 위한 XOR으로 설정
  • 인터페이스가 slave 네트워크 카드들의 하나에 대한 Mac address 로imcoming request의 Mac address를 연결하는 방식

4. mode 3 : broadcast (failover)

  • 모든 슬레이브 인터페이스로 전송
  • failover를 제공 (mirror)
  • 하나의 슬레이브만큼 대역폭을 갖음
  • 특별한 상황에서 사용
  • 특별한 경우는 랜카드가 절대로, 절대로 죽어서는 안되고 패킷이 절대로 절대로 없어지면 안되는 서버에 사용
  • 스위치의 지원이 필요 X

5. mode 4 / LACP : 802.3ad (link aggregation)

  • switch 에 aggregation group을 생성 필요
  • switch 가 802.3ad 를 지원 필요
  • 같은 속도와 duplex 설정을 공유하는 aggregation group을 만들어야함
  • 송/수신은 active aggregator 안에서 모든 슬레이브에서 수행
  • 이론상 슬레이브 수만큼의 배수대로 대역폭을 확장 가능

6. mode 5 : balance-tlb

  • 스위치의 지원이 필요 X
  • 특별한 지원이 OS 자체적으로 구동가능한 방법으로 각 링크의 현재 로드에 따라 보내는 데이터는 분산되어 전송
  • 데이터의 수신은 현재 slave쪽으로만 가게되며 해당 slave가 fail시 다른 slave가 MAC주소를 넘겨받아 수신
  • 데이터를 보낼 때에 드라이버가 MAC address를 링크의 것으로 바꿔 보내지만 받을 때에는 그냥 남겨둠

7. mode 6: balance-alb

  • mode 4 즉 802.3ad 를 스위치가 지원하지 않는다면 이 모드인 mode 6를 사용
  • 스위치의 지원이 필요 X
  • mode 5와 같이 동작하지만 데이터 수신 시에서 load-balancing을 하는데 두개의 링크에서 ARP negotiation을 통하여 동작
  • MAC 주소 트릭을 이용하여 데이터를 보내고 받을 때에 load-balancing을 하게됨

스위치 지원이 필요한 모드와 자체 가능한 모드

1. Require switch supports modes (스위치의 지원이 필요한 모드)

  1. mode 0 (balance-rr) → 트래픽은 hashing 없이 load balancing됨
  2. mode 4 (802.3ad) → 기본적으로 해당 모드는 스위치에서 지원 off 되어 있음 → 스위치쪽에 LACP를 활성화 해줘야함
  3. mode 2 (balance-xor) → 받는 쪽의 receiver에 의하여 트래픽은 hashed되고 balancing 됨

2. Generic modes (switch의 지원없이도 kernel과 driver를 통해 자체적 구동이 가능)

  1. mode 3 (broadcast)
  2. mode 5 (balance-tlb)
  3. mode 6 (balance-alb)


부하분산은 기본적으로 해쉬값

1. xmit_hash_policy 옵션치 0 혹은 layer2

  • 데폴트값으로 MAC어드레스만 가지고 해쉬값을 생성

2. xmit_hash_policy 옵션치 1 혹은 layer3+4

  • IP와 포트값을 가지고 해쉬값을 생성
  • 주의점은 이 알고리즘의 경우 802.3ad에 대응하지 않음

3. xmit_hash_policy 옵션치 2 혹은 layer2+3

  • MAC어드레스와 IP값을 가지고 해쉬값을 생성
  • 본딩모드 4를 고르시고 xmit_hash_policy는 2를 선택하실경우 일반적으로 가장 고른 부하분산이 가능

참고 URL : https://louie0.tistory.com/124
참고 URL : https://m.blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=hymne&logNo=221042702409

+ Recent posts