피어링은 몇 주째 올라와 있고 프리픽스 수치도 맞아 보이는데, 한 고객의 트래픽은 여전히 먼 길로 돌아가거나 아예 도착하지 않는다. 같은 지표로 서로 다른 두 가지를 판정하고 있다. BGP 세션은 두 피어가 TCP 연결로 메시지를 주고받을 수 있음을 알려줄 뿐, 오버레이가 그 특정 고객을 위한 레이블 패킷을 실어 나를 수 있는지는 말해 주지 않는다.

이 간극은 MPLS over DMVPN 설계에서 가장 잘 보인다. 허브 경로와 직접 스포크 경로가 피어링과 무관한 이유로 다르게 동작할 수 있기 때문이다.

세션이 실제로 증명하는 것

BGP는 TCP 위에서 동작하므로, 다른 어떤 일이 일어나기 전에 각 피어는 상대 끝점 주소로 가는 경로가 필요하다. 그 끝점으로 루프백을 고르면 포워딩 보장이 아니라 도달 가능성 요건을 만든 셈이다. 그 뒤 세션은 고객 트래픽이 결코 쓰지 않을 인터페이스를 통해 계속 올라와 있을 수 있다.

결론을 내리기 전에 양쪽 끝에서 네 가지 사실을 기록하라. 세션의 출발지 주소, 목적지 주소, 그것이 속한 라우팅 컨텍스트, 그리고 커널이나 라우터가 그 쌍에 대해 고를 인터페이스다. 이 사실들은 제어 평면을 설명한다. 고객 패킷은 그 위에 VRF, 레이블 스택, 오버레이 매핑을 더한다.

네 가지 메커니즘이지 하나가 아니다

MPLS over DMVPN에 관한 Cisco 문서는 구성 요소를 분명히 나눈다. MP-BGP는 공급자 에지 장비 사이에서 고객 오버레이 레이블을 분배한다. MPLS는 그 레이블로 패킷의 포워딩 컨텍스트를 선택한다. NHRP는 오버레이 주소를 동적 터널이 필요로 하는 전송 끝점에 매핑한다. IPsec은 해당되는 곳에서 피어 경로를 보호한다.

네 가지 중 하나가 맞으면서 다른 하나가 틀릴 수 있고, 트래픽을 나르는 것은 그 조합이다. 경로 교환이 끝나도 한 VRF의 레이블 바인딩이 없을 수 있고, NHRP 매핑이 낡은 전송 주소를 가리킬 수 있으며, 터널은 있지만 내부 패킷을 허용하는 정책이 없을 수 있다. 어느 조건도 세션을 떨어뜨리지 않는다.

허브 경로와 지름길을 비교하라, 한 번에 변수 하나씩

출발지 호스트, 목적지 호스트, VRF를 고정한 뒤 같은 흐름을 두 번 따라가라. 허브 경로에서는 다음 홉, 원격 고객 컨텍스트를 식별하는 서비스 레이블, 사용 중인 오버레이-투-전송 매핑을 적는다. 의도한 직접 경로에서도 같은 세 가지를 적는다. 두 목록의 차이가 곧 결함이며, 또는 결함이 없음의 증거다.

비교하는 동안 흐름을 일정하게 유지하라. 관측 사이에 출발지 호스트, VRF, 목적지를 바꾸면 서로 무관한 두 이야기가 만들어지고, 이것이 이 연습이 어긋나는 가장 흔한 방식이다.

루프백 시험은 별도의 칸에 두라

라우터 루프백에서 보낸 ping은 유용한 시험이며 호스트 흐름과는 다른 경우를 시험한다. 출발지 주소는 라우터의 것이고, 라우팅 컨텍스트는 VRF가 아니라 전역일 수 있으며, 응답 경로는 고객 프리픽스가 택할 경로와 다를 수 있다. 그래서 루프백이 응답한다는 것과 이 애플리케이션이 지름길로 동작한다는 것은 별개의 결과이고, 고객을 설명하는 것은 후자뿐이다.

둘 다 시험하고 노트에 따로 표시하라. 둘이 어긋날 때 설계가 어디서 갈라지는지에 대해 구체적인 것을 배운 것이며, 그것은 초록색 체크 하나가 알려 줄 수 있는 것보다 훨씬 많다.

버전 주장과 결함 주장에는 각자의 증거가 필요하다

현장 보고서는 때때로 호스트 마스크나 BGP 출발지 주소를 바꾸라고 권하는데, 그런 보고서는 그것이 쓰인 결함과 영향을 받은 릴리스와 함께 읽을 때만 의미가 있다. 한 릴리스의 우회책은 아키텍처가 어떤 /32 프리픽스도 지원하지 않는다는 주장이 아니다.

자신의 DMVPN 단계, 플랫폼, 릴리스에 맞는 문서를 쓰고, 한 장이 FlexVPN을 포함한 여러 구성을 다룰 수 있음을 기억하라. 한 구성의 예가 다른 구성으로 조용히 옮겨 가지 않는다. 정말로 필요한 제어 평면 설계에 맞춰 세션 끝점을 고르고, 그다음 고객 포워딩 경로를 따로 검증하라. 모든 루프백 마스크를 다시 쓰는 것은 어느 작업이 실패했는지 밝히는 일을 대신하지 못한다.

관련 글