LACP 로드 밸런싱
- LACP로 설정된 채널 그룹의 이중화된 링크를 통해 트래픽을 로드 밸런싱하는 과정에서 순차적으로 전송되는 프레임이 목적지에서는 도착 순서가 뒤바뀌는 현상이 발생할 수 있음
- 로드 밸런싱은 프레임의 전송 시점에 적용되는 기술로, 양방향으로 동작 X
- 장비간의 로드 밸런싱 방식의 차이에 따라 패킷을 수신하는 장비에서 재배열과 부하 쏠림 현상(링크의 부하 비율이 균등하지 않고 한쪽으로 몰리는 현상)이 발생할 수 있음
- 어그리게이션을 통한 로드 밸런싱은 관리자의 서비스에 따른 로드 밸런싱 파라미터 설정에 상당히 의존적임
- 두 개의 링크를 하나의 채널로 설정하고 이를 로드 밸런싱하는 경우 뒤바뀌는 현상 예시
- 큰 크기의 프레임은 첫 번째 링크로 전송
- 두 번째 상대적으로 적은 크기의 프레임은 두 번째 링크로 전송
- 도착지에서의 순서는 두번째 프레임이 첫번째 전송한 프레임보다 먼저 도달함
- 전송 받은 서버는 첫번째 프레임과 두번째 프레임의 순서를 재배열을 수행
- 802.3ad 표준에는 어떤 링크를 사용할 것인가에 대한 결정에 대한 언급은 없지만 링크에 가중치를 부여하는 방식을 설명
- 어그리게이션된 링크에서 재배열을 방지하면서 적절하게 트래픽 부하를 분산할 수 있는 로드 밸런싱 방안을 고려
- IEEE 표준에 어그리게이션된 물리적 링크 간 완벽한 로드 밸런싱에 관한 사항이지만 로드 밸런싱 비율이 보장돼 있지 않기 때문에 장비 제조사별로 각기 다른 로드 밸런싱 알고리즘을 적용
- 목적지 MAC 주소 기반의 로드 밸런싱 수행의 경우 특정 목적지로 전송되는 프레임은 어그리게이션된 다수의 링크 중 하나의 링크만 사용해 전송
- 트래픽이 폭주해 링크가 포화 상태에 이르면 링크 대역폭에 수용되지 못한 오버플로우(Overflow)된 프레임은 다른 링크로 전환되지 않고 폐기됨 → 프레임 손실 발생
- 로드 밸런싱을 위해 사용되는 파라미터를 목적지 MAC 주소 외에 다른 방식으로 변경해야 함
- 분배기가 다중 링크에 프레임을 전송할 때 전송할 물리적 링크를 결정해야하는 과정에서 수행
- 분배기가 로드 밸런싱을 위해 사용하는 기본적인 알고리즘은 목적지 MAC 주소를 변수로 하는 해시(Hash) 알고리즘
- 재배열 문제와 로드 밸런싱을 위해 가장 많이 사용하는 방법이 L2 계층의 주소인 MAC 주소를 사용하는 방법
- 정교한 로드 밸런싱을 하기 위해 시스코의 경우 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 (스위치의 지원이 필요한 모드)
- mode 0 (balance-rr) → 트래픽은 hashing 없이 load balancing됨
- mode 4 (802.3ad) → 기본적으로 해당 모드는 스위치에서 지원 off 되어 있음 → 스위치쪽에 LACP를 활성화 해줘야함
- mode 2 (balance-xor) → 받는 쪽의 receiver에 의하여 트래픽은 hashed되고 balancing 됨
2. Generic modes (switch의 지원없이도 kernel과 driver를 통해 자체적 구동이 가능)
- mode 3 (broadcast)
- mode 5 (balance-tlb)
- 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
'Network(네트워크)' 카테고리의 다른 글
RX/TX errors 및 패킷 dropped 확인 → ifconfig 명령어, ethtool 명령어 (0) | 2022.07.18 |
---|---|
대상 서버의 포트가 열려 있는지 확인하는 3가지 방법 (0) | 2022.07.18 |
LACP(Link Aggregation Control Protocol; IEEE 802.3ad) (0) | 2022.07.17 |
unknown unicast 발생이유와 해결방안 (0) | 2022.07.15 |
Null Routing (Blackhole Routing)이란 (0) | 2022.07.15 |