소개
이 문서에서는 포트 채널 로드 밸런싱의 양극화가 발생할 수 있는 시나리오를 설명하고 이를 방지하는 방법을 제안합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경
분극화는 해시 알고리즘이 네트워크의 특정 경로를 선택하고 중복된 경로를 사용하지 않는 문제입니다.
토폴로지
설정
N7K1 및 N7K2는 VPC에서 연결되고 Po100, Po200, Po300 및 Po301은 VPC 포트 채널에 있습니다.
N7K1 및 N7K2는 순수한 L2 스위치의 역할을 하며, 이러한 스위치에서는 라우팅이 발생하지 않습니다.
모든 스위치에서 동일한 포트 채널 로드 밸런싱 알고리즘을 실행하고 있습니다.
N7K1 및 N7K2에서 나가는 트래픽에서 편광 문제가 나타납니다. 소스에서 대상으로의 트래픽이 동일한 VLAN(라우팅 없음)에 있는지 또는 N7K3 또는 N7K4에서 발생하는 라우팅과 함께 서로 다른 VLAN에 있는지 여부에 상관없이 말입니다.
트래픽 흐름
소스는 여러 스트림을 대상으로 전송합니다(여러 소스 및 대상 IP 주소가 있고, L4 포트 정보도 패킷마다 다릅니다). 이상적인 상황에서 트래픽이 포트 채널 멤버 인터페이스 간에 고르게 분산되도록 하기 위해 적절한 트래픽 조합을 사용합니다.
소스의 트래픽은 N7k3/N7k4에 상주한 다음 N7K1/N7K2를 통해 목적지로 이동합니다.
각 N7K1 및 N7K2에 있는 Po100 및 Po200의 멤버 링크 중 하나의 링크는 트래픽의 거의 99%를 내보내고 다른 링크는 유휴 상태로 유지됩니다. 즉, 각 스위치 N7K1 및 N7K2에서 4/2 및 4/3 중 하나의 링크는 99%의 유니캐스트 트래픽을 전달하고 다른 링크는 1% 미만의 유니캐스트 트래픽을 전달합니다. 마찬가지로, 9/2와 9/3 중 하나의 링크는 99% 트래픽을 전달하며 다른 링크는 1% 미만을 전달합니다. 트러블슈팅 섹션의 출력에는 N7K1의 Po100 및 Po200 멤버 인터페이스의 트래픽이 표시됩니다. N7K2에서도 유사한 출력을 볼 수 있습니다.
사용된 포트 채널 로드 밸런싱 알고리즘의 유형과 상관없이, N7K1/N7K2 쌍 및 N7K3/N7K4 쌍에서 동일한 포트 채널 로드 밸런싱 알고리즘을 사용하는 한 이 문제를 확인할 수 있습니다. 포트 채널 로드 밸런싱 알고리즘을 확인하는 명령은 다음과 같습니다.
N7K1# show port-channel load-balance
Warning: Per Packet Load balance configuration has higher precedence
System config:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Port Channel Load-Balancing Configuration for all modules:
Module 1:
Non-IP: src-dst mac
IP: src-dst ip rotate 0
Module 2:
Non-IP: src-dst mac
IP: src-dst ip rotate 0
Module 3:
Non-IP: src-dst mac
IP: src-dst ip rotate 0
Module 4:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Module 7:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Module 8:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
Module 9:
Non-IP: src-dst mac
IP: src-dst ip-l4port-vlan rotate 0
문제 해결
포트 채널에서 고르지 않은 로드 밸런싱이 나타나는 것은 양극화 때문일 수 있습니다.
트래픽이 N7K3 및 N7K4 스위치에 도달하면 N7K4의 Po301 및 N7K3의 Po300을 통해 N7K1/N7K2 스위치로 전달됩니다. 여기서 로드 밸런싱 알고리즘이 시작되고 일부 플로우는 N7K1로 전달되고 다른 플로우는 N7K2로 전달됩니다.
초기에 모든 트래픽은 eth1/1의 스위치 N7K3/N7K4로 유입되며 src-dst IP 주소 및 l4 포트 정보에 따라 특정 흐름은 링크에서 N7K1으로, 다른 흐름은 링크에서 N7K2로 해시됩니다. 해싱은 스위치에서 계산된 rbh 값을 기준으로 진행됩니다. 간소화를 위해 사용된 로드 밸런싱 알고리즘에 따라 스위치에서 수신 트래픽을 두 흐름(흐름 X 및 흐름 Y)으로 분리한다고 가정합니다. 플로우 X는 하나의 포트 채널 멤버 링크에서 전송되고 플로우 Y는 다른 포트 채널 멤버 링크에서 전송됩니다.
이제 트래픽이 N7K1/N7K2 쌍에 도착하면 두 가지 가능성이 있습니다. (X와 Y를 서로 바꿀 수 있다고 생각하십시오.)
사례 1:
N7K3에서 X를 N7K1로 전송하고 Y를 N7K2로 전송
N7K4에서 Y를 N7K1로 전송하고 X를 N7K2로 전송
사례 2:
N7K3에서 X를 N7K1로 전송하고 Y를 N7K2로 전송
N7K4에서 X를 N7K1로 전송하고 Y를 N7K2로 전송
Case 1의 경우 N7K1 및 N7K2는 두 가지 유형의 흐름(흐름 X 및 흐름 Y)을 모두 수신하고, N7K3/N7K4에서 사용하는 것과 동일한 포트 채널 로드 밸런싱 알고리즘을 사용한 후에도 다른 링크에서 Po100 및 Po200에서 나가는 흐름으로 인해 편차가 나타나지 않습니다. 따라서 포트 채널 멤버 인터페이스 간의 트래픽 분배가 향상됩니다.
Case 2의 경우 N7K1은 흐름 X만 수신하고 N7K2는 흐름 Y만 수신하며 이러한 스위치에 사용된 포트 채널 로드 밸런싱 알고리즘이 N7K3/N7K4 쌍에 사용된 것과 동일한 경우 분극을 생성할 수 있습니다. N7K1 및 N7K2는 동일한 포트 채널 로드 밸런싱 알고리즘을 사용하므로, N7K1은 Po100/Po200의 한 멤버 링크에서만 흐름 X를 전송하고 다른 멤버 링크에서는 트래픽을 전달하지 않습니다. 마찬가지로 N7K2는 Po100/Po200의 멤버 링크 하나에서만 흐름 Y를 전송하고 다른 멤버 링크는 트래픽을 전달하지 않습니다.
스위치 N7K1 및 N7K2가 수신하는 트래픽은 이미 다음으로 분류되었으므로, 하나의 포트 채널 멤버 링크만 스위치 N7K1/N7K2에서 모든 수신 트래픽을 전송하는 데 사용되며 다른 멤버 링크에서는 아무것도 전송되지 않습니다. 수신 트래픽 속도가 단일 포트 채널 링크의 대역폭을 초과하는 경우 다른 포트 채널 멤버 링크에서 이 트래픽을 전달하지 않으므로 추가 트래픽을 삭제할 수 있습니다.
두 개 이상의 링크가 포트 채널에 사용되는 경우에도 유사한 문제가 발생할 수 있습니다. 예를 들어 포트 채널에서 4개의 링크가 사용되는 경우 해싱 발생에 따라 편파가 발생하지 않거나 4개의 포트 채널 멤버 링크 중 2개만 모든 수신 트래픽을 전달하는 부분 편파가 나타납니다. 다른 두 링크는
양극화는 설계로 인해 발생하므로 양극화가 발생하지 않도록 설계의 분석이 중요합니다. N7k1에서 Po100 및 Po200에서 발생하는 분극을 나타내는 출력이 다음에 표시됩니다(유사한 출력은 N7K2에서도 볼 수 있음).
N7K1# show port-channel summary | i 200
200 Po200(SU) Eth LACP Eth9/2(P) Eth9/3(P)
N7K1# show port-channel traffic interface port-channel 200
NOTE: Clear the port-channel member counters to get accurate statistics
ChanId Port Rx-Ucst Tx-Ucst Rx-Mcst Tx-Mcst Rx-Bcst Tx-Bcst
------ --------- ------- ------- ------- ------- ------- -------
200 Eth9/2 0.0% 99.99% 44.44% 4.00% 0.0% 100.00%
200 Eth9/3 0.0% 0.00% 55.55% 96.00% 0.0% 0.0%
N7K1# show port-channel summary | i 100
100 Po100(SU) Eth LACP Eth4/2(P) Eth4/3(P)
N7K1# show port-channel traffic interface port-channel 100
NOTE: Clear the port-channel member counters to get accurate statistics
ChanId Port Rx-Ucst Tx-Ucst Rx-Mcst Tx-Mcst Rx-Bcst Tx-Bcst
------ --------- ------- ------- ------- ------- ------- -------
100 Eth4/2 0.0% 99.99% 40.55% 7.00% 0.0% 100.00%
100 Eth4/3 0.0% 0.00% 54.44% 93.00% 0.0% 0.0%
해결 방법
편광이 일어나지 않는 것을 보장하기 위해 사용되는 몇 가지 해결 방법이 이 섹션에 기술되어 있다.
- 적절한 설계: 양극화의 주요 원인은 부적절한 설계이므로 토폴로지에 양극화가 발생할 여지가 없도록 네트워크 설계를 변경하는 것이 가장 좋습니다.
만약 설계를 변경할 수 없다면, 우리는 다음을 할 수 있다.
- 각 스위치 레벨에서 서로 다른 포트 채널 로드 밸런싱 알고리즘을 사용합니다(N7K1/N7k2 쌍에 하나의 알고리즘, N7K3/N7k4 쌍에 서로 다른 알고리즘). 로드 밸런싱 알고리즘이 변경되면 N7k1/N7k2 스위치는 이제 N7k3/N7k4 스위치에서 사용하는 정보 이외의 다른 정보를 기반으로 수신 트래픽을 해시합니다. 따라서 발신 트래픽은 모든 포트 채널 멤버 링크를 사용합니다. (선택할 알고리즘에 대한 결정은 스위치에서 수신하는 트래픽의 유형에 따라 달라집니다.)
- 동일한 로드 밸런싱 알고리즘을 사용하려면 각 스위치 레벨에서 서로 다른 회전 값을 사용합니다. 이
rotate 명령은 사용자가 구성한 바이트로 해시 입력을 상쇄하여 해싱 알고리즘의 임의성을 도입하고 편파를 방지하는 데 도움이 됩니다. (N7k1/N7k2 쌍에는 하나의 회전 값을 사용하고 N7k3/N7k4 쌍에는 다른 회전 값을 사용합니다.)