동일 비용 다중 경로가 호스트 경로에는 무의미하다는 주장은 사실처럼 들릴 만큼 자주 반복됩니다. /32 는 목적지 주소를 선택할 뿐이며, 그 선택이 패킷을 하나의 물리 링크로 제한하지는 않습니다. 목적지가 원격 VXLAN 터널 종단점이면 여러 다음 홉이 서로 다른 오버레이 흐름을 나를 수 있고, 그렇게 하는지는 포워딩 해시가 무엇을 볼 수 있는지에 달려 있습니다. 나머지는 바깥 헤더 위의 산술이며 프리픽스의 속성이 아닙니다.

경로는 도달 가능성을, 해시는 분배를 결정합니다.

속설: /32 는 하나의 경로를 뜻한다

OSPF 가 VTEP 루프백으로의 동일 비용 도달 가능성을 알려도, 포워딩 테이블은 같은 프리픽스에 대해 다음 홉 그룹을 설치합니다. 프로토콜은 후보를 제공하고, 플랫폼은 그중 무엇이 사용 가능한지, 패킷이 어떻게 배정되는지를 결정합니다. 어떤 라우팅 프로토콜도 캡슐화된 프레임마다 새 해시를 계산하지 않습니다. 이 분리가 바로 같은 경로를 가진 두 라우터가 트래픽을 다르게 분배할 수 있는 이유입니다.

라우트 표시만 보지 말고 설치된 포워딩 항목을 보십시오. 하드웨어나 정책 제한 때문에 컨트롤 플레인이 여전히 광고하는 후보가 빠질 수 있습니다.

엔트로피는 어디에서 와야 하는가

두 VTEP 사이에서 바깥 소스와 목적지 주소는 고정되어 있고, 일반적인 배포에서 UDP 목적지 포트는 4789 입니다. 그 값만 읽는 해시는 일정한 입력을 보고 일정한 경로를 돌려줍니다. 바깥 헤더의 무언가가 달라져야 하며, 그것을 가능하게 하는 장치가 VTEP 입니다.

RFC 7348 은 캡슐화된 프레임 내부 필드에서 UDP 소스 포트를 도출할 것을 제안합니다. 그러면 내부 대화가 다를 때 바깥 튜플도 달라지므로, 평범한 전송 해시가 다룰 거리가 생깁니다.

포워딩 하드웨어가 패킷 더 깊이를 볼 수 있다면, 그 해시 구현이 어떤 내부 필드를 지원하는지 확인하십시오. 그 깊이를 모든 언더레이 장치의 요구 사항으로 삼아서는 안 됩니다. 소스 포트 변화만으로도 이미 유용한 차이가 드러납니다.

실제로 얻는 해시를 확인하십시오

가정하지 말고 측정하십시오. 캡슐화된 트래픽 표본을 잡아 바깥 소스 포트를 보고, 그 결과를 포워딩 항목과 링크별 카운터와 비교하십시오.

show ip route 10.255.0.5/32
show ip cef 10.255.0.5 internal
ip route show 10.255.0.5
tcpdump -ni eth0 -c 200 'udp port 4789' -vv

하나의 소스 포트가 여러 다른 내부 대화에 나타난다면 VTEP 가 그 필드를 바꾸지 않는 것이며, 언더레이를 어떻게 조정해도 부하가 퍼지지 않습니다. 반대로 서로 다른 포트가 많은데 다음 홉이 하나만 쓰인다면 포워딩 그룹 쪽을 가리킵니다.

표본 전후로 카운터를 기록하고, 업링크를 공유하는 무관한 트래픽도 적어 두십시오. 그렇지 않으면 수치가 해시가 마땅히 받을 것보다 나쁘게 보입니다.

균등한 분배가 뜻하지 않는 것

흐름별 해시는 입력과 사용 가능한 경로 집합이 변하지 않는 한 하나의 대화를 하나의 경로에 유지하도록 설계되었습니다. 그래서 큰 TCP 전송 하나가 모든 업링크를 묶지는 않으며, 링크를 추가해도 그 흐름이 빨라지지 않습니다. 이는 정상 동작이며 결함이 아닙니다.

여러 흐름이 우연히 같은 다음 홉에서 충돌할 수도 있습니다. 짧은 표본은 크게 치우쳐 보일 수 있지만 해시는 설정된 대로 동작하는 중입니다. 또한 링크 장애나 경로 집합 변화는 기존 흐름을 전송 도중에 옮길 수 있습니다.

승인된 계획 아래 대표적인 주소 쌍, 전송 방식, 속도로 시험하고, 링크 집계 구성원 선택과 라우팅된 다중 경로 선택은 분리해 두십시오. 두 단계의 해싱이 각자의 패턴을 만들기 때문입니다. 다음 홉 그룹이 채워져 있고 바깥 엔트로피가 보인다는 점이 결과를 설명합니다. 프리픽스 길이가 아닙니다.

관련 글