LACP(802.3ad) 구성시 Hash 정책 고려
Bond (Mode 4 / 802.3ad) 부하분산 해시 정책 (xmit_hash_policy)
리눅스 본딩(Bonding Mode 4)에서 LACP 묶음 채널로 트래픽을 보낼 때 어떤 인터페이스로 패킷을 내보낼지 결정하는 알고리즘입니다.
layer2 (기본값)
기준: 출발지/목적지 MAC 주소
특징: 동일한 라우터(Gateway)를 거쳐 나가는 대외 트래픽은 목적지 MAC이 라우터 MAC으로 동일해지므로 특정 물리 포트 1개로만 트래픽이 몰리는 단점이 있습니다.
layer2+3
기준: 출발지/목적지 MAC 주소 + IP 주소
특징: L3 네트워크(서로 다른 서브넷) 간 통신 시 트래픽 분산 효율이 향상됩니다.
layer3+4
기준: 출발지/목적지 IP 주소 + TCP/UDP 포트 번호
특징: 동일한 두 서버 간 통신이라도 세션(포트)별로 트래픽을 여러 포트에 균등하게 분산할 수 있어 성능상 가장 효율적입니다. (단, 물리 스위치에서도 해당 알고리즘 지원 여부 확인 필요)
결론
당연히 스위치장비에서 지원한다면 layer3+4로 구성하는게 트래픽 분산에 매우 좋다.
layer2나 layer2+3만 설정 한다면 동일 네트워크 또는 P2P(1:1) 통신에는 전혀 분산이 되지 않으므로 효과가 없다.
설정 확인방법
서버쪽 설정은 리눅스에서 쉽게 확인 가능하다.
root@idpp-pve02:~# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v7.0.14-12-pve Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer3+4 (1) <<<- 이부분에 해시 정책을 확인한다. MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Peer Notification Delay (ms): 0 ...
하지만 이것은 서버쪽 설정이고 스위치에서 지원하는지 여부는 확인이 불가능하다.
실제 대역폭 테스트를 해보면 알 수 있다.
iperf3로 병렬 테스트를 해보면 된다.
받는쪽
$ iperf3 -s
보내는쪽
$ iperf3 -c <받는쪽 서버IP> -P 8 root@idpp-pve02:~# iperf3 -c 192.168.0.33 -P 8 Connecting to host 192.168.0.33, port 5201 [ 5] local 192.168.0.52 port 57324 connected to 192.168.0.33 port 5201 [ 7] local 192.168.0.52 port 57332 connected to 192.168.0.33 port 5201 [ 9] local 192.168.0.52 port 57342 connected to 192.168.0.33 port 5201 [ 11] local 192.168.0.52 port 57344 connected to 192.168.0.33 port 5201 [ 13] local 192.168.0.52 port 57360 connected to 192.168.0.33 port 5201 [ 15] local 192.168.0.52 port 57370 connected to 192.168.0.33 port 5201 [ 17] local 192.168.0.52 port 57378 connected to 192.168.0.33 port 5201 [ 19] local 192.168.0.52 port 57394 connected to 192.168.0.33 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 16.0 MBytes 134 Mbits/sec 45 222 KBytes [ 7] 0.00-1.00 sec 15.6 MBytes 131 Mbits/sec 46 218 KBytes [ 9] 0.00-1.00 sec 15.6 MBytes 131 Mbits/sec 46 222 KBytes [ 11] 0.00-1.00 sec 15.0 MBytes 126 Mbits/sec 45 197 KBytes [ 13] 0.00-1.00 sec 15.4 MBytes 129 Mbits/sec 46 229 KBytes [ 15] 0.00-1.00 sec 15.0 MBytes 126 Mbits/sec 45 208 KBytes [ 17] 0.00-1.00 sec 14.6 MBytes 123 Mbits/sec 45 175 KBytes [ 19] 0.00-1.00 sec 14.8 MBytes 124 Mbits/sec 90 146 KBytes [SUM] 0.00-1.00 sec 122 MBytes 1.02 Gbits/sec 408 - - - - - - - - - - - - - - - - - - - - - - - - - ... - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 142 MBytes 119 Mbits/sec 315 sender [ 5] 0.00-10.04 sec 140 MBytes 117 Mbits/sec receiver [ 7] 0.00-10.00 sec 141 MBytes 118 Mbits/sec 299 sender [ 7] 0.00-10.04 sec 140 MBytes 117 Mbits/sec receiver [ 9] 0.00-10.00 sec 141 MBytes 119 Mbits/sec 454 sender [ 9] 0.00-10.04 sec 140 MBytes 117 Mbits/sec receiver [ 11] 0.00-10.00 sec 141 MBytes 119 Mbits/sec 581 sender [ 11] 0.00-10.04 sec 140 MBytes 117 Mbits/sec receiver [ 13] 0.00-10.00 sec 143 MBytes 120 Mbits/sec 242 sender [ 13] 0.00-10.04 sec 140 MBytes 117 Mbits/sec receiver [ 15] 0.00-10.00 sec 141 MBytes 118 Mbits/sec 333 sender [ 15] 0.00-10.04 sec 140 MBytes 117 Mbits/sec receiver [ 17] 0.00-10.00 sec 141 MBytes 118 Mbits/sec 383 sender [ 17] 0.00-10.04 sec 140 MBytes 117 Mbits/sec receiver [ 19] 0.00-10.00 sec 141 MBytes 118 Mbits/sec 352 sender [ 19] 0.00-10.04 sec 140 MBytes 117 Mbits/sec receiver [SUM] 0.00-10.00 sec 1.11 GBytes 949 Mbits/sec 2959 sender [SUM] 0.00-10.04 sec 1.09 GBytes 936 Mbits/sec receiver iperf Done.
이렇게 체크했을때 대역폭이 확장되어 나와야 한다.