Dell Unity: LACP 트렁크 또는 본드 로드 밸런싱 알고리듬을 변경하는 방법(Dell 수정 가능)
Summary: LACP(Link Aggregation Control Protocol) 트래픽은 LACP 트렁크 또는 본드를 통해 Unity SP에 쓸 때 밸런싱되지만 응답이 읽기 요청에 전송될 때는 고르게 밸런싱되지 않습니다.
Symptoms
특정 네트워킹 조건 및 환경에서는 기본 알고리듬이 기본적으로 단일 인터페이스를 사용하도록 설정될 수 있습니다.
예제:
소스 MAC 주소가 동일한 경우(라우터를 사용할 때) MAC은 항상 동일하며 전송에 사용되는 포트는 항상 동일합니다.
또한 특수한 상황에서는 다른 MAC도 동일한 값을 생성할 수 있습니다.
예를 들어 MAC이 항상 짝수(0,2,4,6,8,A,C 또는 E)로 끝나고 LACP 트렁크 또는 본드에 두 개의 포트가 있는 경우 해시를 계산하면 매번 동일한 포트를 통해 트래픽이 전달됩니다.
LACP 트렁크 또는 본드는 트래픽이 균형 잡히지 않고 모든 인터페이스가 균등하게 사용되는 대신 단일 인터페이스를 사용하는 것으로 표시됩니다.
운영 네트워크(네트워크 스위치 SysAdmins)에서 또는 Unisphere의 SYSTEM > Performance 아래 그래픽 네트워크 디스플레이에서 이를 확인할 수 있습니다.
netstat -i' 서비스 셸의 출력.
Cause
Unity의 LACP는 layer2를 기본 "xmit_hash_policy"로 사용합니다.
Layer2+3을 "xmit_hash_policy"로 사용하는 것은 특히 대부분의 대상에 도달하기 위해 layer3 게이트웨이 디바이스가 필요한 환경에서 layer2만 사용하는 것보다 더 균형 잡힌 트래픽 분산을 제공하기 위한 것입니다.
참조: https://www.kernel.org/doc/Documentation/networking/bonding.txt
Layer2는 하드웨어 MAC 주소 및 패킷 유형 ID 필드의 XOR을 사용하여 해시를 생성합니다.
공식은 다음과 같습니다.
hash = source MAC XOR destination MAC XOR packet type ID slave number = hash modulo slave count.
Layer2+3 은 layer2 및 layer3 프로토콜 정보의 조합을 사용하여 해시를 생성합니다.
해시는 하드웨어 MAC 주소의 XOR과 IP 주소의 조합을 사용하여 생성됩니다.
공식은 다음과 같습니다.
hash = source MAC XOR destination MAC XOR packet type ID hash = hash XOR source IP XOR destination IP hash = hash XOR (hash RSHIFT 16) hash = hash XOR (hash RSHIFT 8) And then hash is reduced modulo slave count.
Layer2와 Layer2+3은 모두 802.3ad를 준수합니다.
Resolution
Unity OE 코드 4.3 이상의 경우:
를 변경합니다. xmit_hash_policy 로 바꿉니다. svc_network_bond 명령.
Dell Unity™ 제품군 버전 4.3: 서비스 명령 기술 노트 - 74
페이지사용법:
svc_network_bond [-h|--help] -d <device> {-s -o <option> -v <value>} {-g [-o <option>]}
구문은 아래 예제와 유사합니다.
service@(none) spb:~> svc_network_bond -s -d bond23 -o xmit_hash_policy -v 2
에 허용되는 값 xmit_hash_policy 다음과 같습니다.
0 또는 layer2 기본 설정
이 매개변수는 하드웨어 MAC 주소의 XOR을 사용하여 해시를 생성합니다.
1 또는 layer3+4 상위 계층 프로토콜 정보(사용 가능한 경우)를 사용하여 해시를 생성합니다.
이렇게 하면 특정 네트워크 피어에 대한 트래픽이 여러 슬레이브에 걸쳐 있을 수 있지만 단일 연결이 여러 슬레이브에 걸쳐 있지는 않습니다.
2 또는 layer2+3 layer2 및 layer3 프로토콜 정보의 조합을 사용하여 해시를 생성합니다. 모드 2 또는 Layer2+3 알고리즘은 802.3ad를 준수합니다.
Unity OE 코드 4.2.3.9670635 이전 버전의 경우:
Dell 고객 서비스에 문의하고 이 KBA 번호를 언급하십시오.
Unity OE 코드 5.3.x 이상의
경우변경하기 위해 서비스 셸이 필요하지 않으며 재부팅할 필요도 없습니다.
다음은 실습 xmit_hash_policy에서 Unity 어레이를 설정하는 예입니다.
이 Unity 어레이는 bond22라고 하는 LACP 트렁크로 구성됩니다.
서비스 계정을 사용하여 SSH를 통해 Unity 어레이에 로그인합니다.
먼저 xmit_hash_policy가 무엇으로 설정되어 있는지 확인하십시오.
# svc_network_bond --get --device bond22 -o xmit_hash_policy INFO: Selected device: bond22 INFO: Option to show: xmit_hash_policy INFO: Execution code: 0 xmit_hash_policy=0 #
그런 다음 xmit_hash_policy를 2로 설정합니다
# svc_network_bond --set --device bond22 -o xmit_hash_policy -v 2 INFO: Selected device: bond22 INFO: Option to modify: xmit_hash_policy INFO: Requested value: 2 WARNING: Do you want to proceed? [yes/no]: yes <<<<<< sometimes y works and sometimes it fails on the first attempts. Retry then. INFO: Execution code: 0 INFO: Option 'xmit_hash_policy' has been successfully changed. #
# svc_network_bond --get --device bond22 -o xmit_hash_policy INFO: Selected device: bond22 INFO: Option to show: xmit_hash_policy INFO: Execution code: 0 xmit_hash_policy=2 #
Additional Information
netstat 및 arp 서비스 셸을 활성화해야 합니다.
예제 'netstat -i' 출력 - 본드의 멤버를 표시하며 트래픽이 해시되고 있는지 확인하는 데 사용할 수 있습니다.
이 예에서 'bond20'(LACP 본드)은 인터페이스 'eth20' 및 'eth21'로 구성됩니다.
Unity의 아웃바운드 트래픽을 나타내는 TX-OK 열의 차이에 유의하십시오.
21:12:03 service@(none) spb:~> netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg bond20 9000 0 101724658 0 11 0 126087418 0 0 0 BMmRU cmin0 9000 0 14341258 0 0 0 11301712 0 0 0 BMRU eth2 1500 0 0 0 0 0 0 0 0 0 BMU eth3 1500 0 0 0 0 0 0 0 0 0 BMU eth10 1500 0 0 0 0 0 0 0 0 0 BMU eth11 1500 0 0 0 0 0 0 0 0 0 BMU eth12 1500 0 0 0 0 0 0 0 0 0 BMU eth13 1500 0 0 0 0 0 0 0 0 0 BMU eth20 9000 0 52249885 0 1 0 38317 0 0 0 BMsRU eth21 9000 0 49474773 0 10 0 126049101 0 0 0 BMsRU eth22 1500 0 0 0 0 0 0 0 0 0 BMU eth23 1500 0 0 0 0 0 0 0 0 0 BMU eth_int 9000 0 14341055 0 0 0 11301598 0 0 0 BMRU eve_br0 1500 0 16 0 0 0 3656 0 0 0 BMRU lo 65536 0 963282566 0 0 0 963282566 0 0 0 LRU mgmt 1500 0 1405994 0 64 0 360538 0 0 0 BMRU mgmt_vdev 1500 0 356150 0 64 0 326216 0 0 0 BMRU srm 1500 0 135650 0 64 0 5 0 0 0 BMRU vetheve1 1500 0 16 0 0 0 3647 0 0 0 BMRU
각 IP 주소의 MAC 주소(HWaddress)를 표시하는 서비스 셸의 'arp' 출력 예
LACP가 여러 물리적 포트 간에 트래픽을 정확하게 로드 밸런싱하려면 이러한 조건이 달라야 합니다.
사용 중인 인터페이스를 기준으로 필터링해야 하는 인터페이스가 몇 가지 있습니다.
이전(예전) 메시지로 이동과
'ip addr' 찾으려면 "Iface"가 조사하려는 IP 주소에 할당됩니다.
19:23:33 service@(none) spa:~> arp Address HWtype HWaddress Flags Mask Iface 10.98.25.61 ether 00:25:b5:02:01:fc C bond20 10.98.25.60 ether 00:25:b5:02:00:1c C bond20 10.98.25.70 ether 00:25:b5:02:00:dc C bond20 10.98.25.63 ether 00:25:b5:02:01:8c C bond20 10.98.25.65 ether 00:25:b5:02:01:6c C bond20 10.98.25.62 ether 00:25:b5:02:01:dc C bond20 10.98.25.64 ether 00:25:b5:02:01:9c C bond20 10.98.25.67 ether 00:25:b5:02:01:0c C bond20 10.98.25.66 ether 00:25:b5:02:01:7c C bond20 10.98.25.59 ether 00:25:b5:02:00:0c C bond20 peer ether 8e:92:80:4d:2d:02 C eth_int 10.98.25.69 ether 00:25:b5:02:00:fc C bond20 10.98.25.1 ether 00:08:e3:ff:fd:90 C bond20 10.98.25.68 ether 00:25:b5:02:01:1c C bond20