요약
- RFC 3478은 LDP 재시작 중에도 MPLS 포워딩 항목과 라벨-FEC 바인딩이 오래된(stale) 상태로 남아 있고 제어 평면의 의미가 재구성되는 것을 허용했다.
- 재접속, 생존성, 복구 및 보유 타이머와 라벨 조기 재사용 금지 덕분에 이러한 연속성은 복구의 증거가 아니라 기한이 정해진 대출로 만들어졌다.
우아한 재시작(graceful restart)은 낙관적인 표현이다. 시스템이 멈추고 자신을 정비한 뒤 아무 후유증 없이 돌아오는 모습을 암시한다. RFC 3478은 훨씬 더 조건부한 거래를 기술했다. 제어 평면의 LDP 구성 요소가 잊고 그 이동의 의미를 다시 세우는 동안에도 포워딩 평면은 패킷을 계속 전달할 수 있었다.
이 문서는 의도적으로 최소한의 가정을 했다. MPLS 포워딩 상태를 보존할 수 있는 LSR이 모든 LDP 상태까지 보존해야 하는 것은 아니었다. 남는 것은 수신 라벨에서 송신 라벨과 다음 홉으로의 매핑, 수신 지점에서는 FEC에서 송신 라벨과 다음 홉으로의 매핑 이상일 수 없었다. 그것으로 확립된 LSP를 즉시 흔들지는 않을 수 있었다. 그러나 제어 평면이 온전하다고 말할 만큼은 아니었다.
이 구분이 중요한 이유는 오래된 포워딩과 새로운 지식이 공존할 수 있기 때문이다. 재시작 후 LSR은 보존된 항목을 오래된 것으로 표시했다. 새로 수신한 Label Mapping이 송신 라벨과 피어로부터 학습한 다음 홉을 맞추면 항목을 확인할 수 있었다. 라우터가 중간 전송, 최종 이전 홉(penultimate hop) 또는 이그레스 중 어디인지에 따라 결합에는 라벨 pop과 경우에 따라 FEC 자체까지 고려해야 했다. 상태는 재구성된 프로토콜이 요구되는 일치를 제공했을 때에만 오래된 상태를 벗어났다.
RFC 3478은 재시작하는 LSR이 동일한 FEC에 대해 두 개의 로컬 바인딩을 임시로 유지할 수 있는 대안 절차도 제시했다. 하나는 재시작 전부터 남아 있던 것이고 하나는 이후 새로 만들어진 것이다. 둘은 같은 송신 라벨과 다음 홉을 공유했으며, 남겨진 바인딩은 재시작이 끝나면 사라졌다. 따라서 연속성이 곧 모든 순간의 단일한 제어 평면 진실을 뜻하지는 않았다.
이 거래를 지배하는 것은 시간이었다. LDP Initialization 메시지의 FT Session TLV는 FT Reconnect Timeout과 Recovery Time을 담았다. 첫째는 발신자가 통신 실패와 연관된 자신의 오래된 포워딩을 얼마나 유지하기를 원하는지 피어에게 알렸다. 둘째는 재시작하는 LSR이 실제로 보존한 포워딩 상태를 얼마나 유지할 의사가 있는지 피어에게 알렸다.
0은 정확한 의미를 지녔다. FT Reconnect Timeout을 0으로 광고하는 발신자는 자신의 포워딩 상태를 보존하지 않겠다는 것이지만, 이웃을 돕는 헬퍼 역할은 여전히 할 수 있었다. Recovery Time을 0으로 광고하는 재시작 피어는 보존된 MPLS 포워딩 상태가 이용 불가하다고 말한 것이다. 그 경우 남겨진 오래된 바인딩은 유예 기간으로 다뤄지는 것이 아니라 제거되어야 했다.
로컬 정책은 광고된 약속을 줄였다. 재접속 전 헬퍼는 피어의 FT Reconnect Timeout과 자신의 Neighbor Liveness Timer 중 짧은 쪽만큼 오래된 바인딩을 유지했다. 0이 아닌 Recovery Time과의 재접속에 성공한 후에는 그 Recovery Time과 로컬 Maximum Recovery Time 중 짧은 쪽으로 유지가 한정되었다. 재시작하는 라우터에는 자체 MPLS Forwarding State Holding 타이머가 있었고, 만료 시점에 여전히 오래된 상태인 항목은 삭제되어야 했다.
이들은 중복된 시계가 아니었다. 서로 다른 권한을 표현했다. 피어는 자신이 필요한 시간을 제안했다. 로컬 운영자는 그 제안을 얼마나 받아들일지 한정했다. 재시작하는 장비는 자신의 보존 항목을 한정했다. 실제 신뢰 창은 그 교집합이었지, 패킷 안의 가장 큰 숫자가 아니었다.
규격은 Recovery Time의 절반 이내에 라벨 매핑을 교환할 것을 권고했다. 그러나 재수립된 TCP 세션 자체가 모든 매핑이 도착했다는 증거는 아니었고, RFC 3478에는 명시적 완료 표시자가 없었다. RFC 5919가 나중에 라벨 광고 완료 시점을 알리기 위한 목적의 일부로 End-of-LIB Notification을 도입했다. 이후의 도구가 그 증거 공백을 밝혀주는 것이지만, 2003년 문서에 존재했던 필드로 거슬러 읽어서는 안 된다.
라벨 재사용은 타이머 주변의 안전 벽이었다. 다운스트림 LSR이 라벨을 해제하고 같은 숫자 값에 새 의미를 부여하는 동안 업스트림 이웃이 여전히 옛 의미로 포워딩한다면, 패킷이 의도치 않은 목적지에 도달할 수 있었다. 따라서 RFC 3478은 해제된 라벨을 우아한 재시작 이웃 방향으로 최소 FT Reconnect Timeout과 Recovery Time의 합만큼 재사용하지 말 것을 요구했다. 이 격리 기간이 보호한 것은 숫자가 아니라 의미였다.
보안 절은 타이밍이 얼마나 공격적으로 다뤄질 수 있는지 보여주었다. 사칭자나 가로채는 이가 Recovery Time을 0으로 강제하면 피어가 라벨을 해제하도록 만들 수 있었다. 반대 방향의 실패도 똑같이 위험했다. 한쪽은 세션이 실패했다고 판단해 플랫폼 전역 라벨을 재사용하는 동안 다른 쪽은 여전히 옛 연관 관계로 전송할 수 있었다. 인증이 중요했지만, 운영 증거는 여전히 각 측이 무엇을 믿고 언제 그렇게 믿었는지를 보여야 했다.
따라서 트래픽 연속성은 유용하되 좁은 영수증이다. 재시작 중 통과하는 패킷은 일부 포워딩 항목이 살아남아 해당 패킷에 대해 계속 사용 가능했음을 보여줄 수 있다. 그러나 모든 FEC가 갱신되었는지, 새 LDP 세션이 기존 LIB를 재구성했는지, BGP나 RSVP-TE가 함께 라벨을 할당한 곳에서 프로토콜 소유권이 보존되었는지, 최종 타이머가 만료된 뒤에도 라벨이 안전하게 유지될지는 증명하지 않는다.
Lu Heng의 현실 계층 규율이 감사 순서를 제공한다. 기존 및 신규 LDP 세션 식별자, TCP 실패와 재접속, FT Session TLV, 모든 로컬 타이머 설정부터 시작하라. 포워딩 항목과 LIB 항목을 별도로 목록화하라. 각 항목이 언제 오래된 상태가 되었는지, 어떤 Mapping과 피어 주소가 갱신했는지, 라벨이 바뀌었는지, 언제 삭제되었는지, 숫자 라벨이 격리된 상태로 남았는지 기록하라.
그다음에야 패킷 관측을 결합하라. 무손실 그래프는 재구성 로그가 아니다. 녹색 세션은 End-of-LIB가 아니다. 0이 아닌 Recovery Time은 보존된 상태에 대한 주장이지 그 상태의 측정이 아니다. 필요한 제어 증거가 갱신해 주기 전까지, 여전히 동작하는 오래된 항목은 여전히 오래된 상태다.
RFC 3478이 인터넷 역사에서 자리 잡는 이유는 연속성을 절제된 의심 위에 세웠기 때문이다. 데이터 평면이 제어 평면의 서사보다 오래 살아남는 것을 허용했지만, 일시적으로만 그랬다. 오래된 라벨들은 빚으로 시간을 벌며 계속 포워딩했고, 이 프로토콜의 진정한 성과는 그 대출을 누가 연장하고, 누가 단축하고, 옛 의미가 언제 사라져야 하는지를 정의한 데 있다.
출처
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





