요약

  • RFC 9494는 오래된 BGP 경로를 일반적인 Graceful Restart 구간 이상으로 유지할 수 있지만, 협상된 주소 패밀리에 한하며 유한한 Long-Lived Stale Time 범위 안에서만 가능합니다. 해당 경로에LLGR_STALE표시를 붙여 최하위 선호로 만들고 전파를 제한합니다.
  • Enke Chen은 RFC 4724와 RFC 9494 양쪽의 공동 저자입니다. 후자의 표준은 오래된 경로가 여전히 동작한다고 보증하지 않습니다:NO_LLGR, 로컬 타이머 제한, End-of-RIB 동기화, 문서화된 포워딩 위험 때문에 계속 사용은 조건부이며 언제든 철회될 수 있습니다.

세션은 끊겼지만 경로는 아직 남아 있다

BGP 세션이 실패하는 순간, 평소에는 함께 도착하는 두 가지 사실이 분리됩니다. 제어 관계는 사라졌습니다. 실패 전에 학습된 포워딩 상태는 여전히 패킷을 전달할 수 있습니다. 즉시 철회는 첫 번째 사실을 결정적인 것으로 취급합니다. 무기한 유지는 두 번째 사실이 절대 변하지 않는다고 가정합니다. Long-Lived Graceful Restart는 이 둘 사이의 불편한 구간을 다룹니다.

이 구간이 중요한 이유는 BGP가 더 이상 전통적인 인터넷 도달 가능성만 전송하지 않기 때문입니다. 터널링된 네트워크에서는 별도의 포워딩 시스템이 패킷을 계속 스위칭하는 동안 제어 프로세스가 재시작할 수 있습니다. BGP는 또한 VPN 발견, 시그널링, 트래픽 정책에 쓰이는 정보를 배포하는데, 여기서는 세션 상실이 모든 설치된 객체가 같은 순간에 무용지물이 됨을 의미하지 않습니다. 모든 상태를 즉시 제거하면 수리 가능한 제어 실패를 더 넓은 서비스 중단으로 확대할 수 있습니다.

반대의 실수는 오히려 고요해 보이기 때문에 더 위험합니다. 출처가 말을 멈춘 뒤에 유지되는 경로는 오래된 증거입니다. 살아남은 포워딩을 가리킬 수도 있고, 블랙홀을 가리킬 수도 있으며, 서로 다른 라우터에 상충하는 선택을 보존할 수도 있습니다. 따라서 엔지니어링 질문은 오래된 상태가 좋은가 나쁜가가 아니라, 그 나이를 드러내고 권한을 낮추며 결국 만료되도록 강제하는 방법입니다.

짧은 유예 기간에서 두 번째 상태로

2007년에 발표된RFC 4724는 BGP에 Graceful Restart 기능과 End-of-RIB 마커를 도입했습니다. 저자는 Srihari Sangli, Enke Chen, Ramachandra Fernando, John Scudder, Yakov Rekhter입니다. 재시작하는 스피커는 세션과 라우팅 정보가 재구축되는 동안 포워딩 상태를 보존할 수 있고, 수신 스피커는 그 피어의 경로를 유지하며 오래된 것으로 표시할 수 있습니다.

일반 메커니즘은 의도적으로 유한합니다. Restart Time은 12비트를 차지해 인코딩 상한이 4,095초입니다. RFC 4724는 기본값을 BGP OPEN에 공고된 HOLDTIME을 초과하지 않도록 제안합니다. 공고된 구간 안에 세션이 돌아오지 않으면 유지된 경로는 제거됩니다. 수신 측이 피어의 포워딩이 더 이상 유효하지 않다고 판단하면 더 일찍 제거할 수 있습니다. 이후RFC 8538은 세션 실패 이후에도 우아한 절차를 따를 수 있는 상황을 확장하고 명시적인 Hard Reset 신호를 추가했습니다.

일반적인 graceful restart는 그 짧은 복구 창 동안 경로 선호도를 그대로 둡니다. 이 선택은 변동을 억제하지만, 제어 출처가 일시적으로 부재한 정보를 네트워크가 계속 선호하게 만들 수도 있습니다. 이 타협은 구간이 짧고 포워딩 상태 주장이 여전히 그럴듯한 동안에만 견딜 수 있습니다.

2023년 11월에 발표된RFC 9494는 별개의 Long-Lived Graceful Restart 상태를 만듭니다. 명시된 저자는 James Uttaro, Enke Chen, Bruno Decraene, John G. Scudder입니다. 이는 IETF의 집단적 작업이며, Chen의 역할은 기본 메커니즘과 그 장기 연속 확장 양쪽에 대한 문서화된 기여지, 단독 발명의 주장이 아닙니다.

오래된 증거에 대한 임대

LLGR 기능 코드 71은 AFI, SAFI, 플래그, Long-Lived Stale Time으로 이루어진 하나 이상의 튜플을 전달합니다. 각 주소 패밀리 쌍은 서로 다른 구간을 받을 수 있습니다. 관련 실패 모드와 데이터가 너무 달라서 권장되는 LLST 기본값은 없습니다. 수신 네트워크는 로컬 상한, 하한 또는 둘 모두를 부과할 수 있고, 피어가 제시한 시간을 줄일 수도 있습니다.

이 기능은 단독으로 성립하지 않습니다. LLGR을 광고하는 스피커는 일반 Graceful Restart도 광고해야 하며, 그렇지 않으면 피어는 LLGR을 무시합니다. 두 상태는 직렬로 진행될 수 있습니다. 전통적인 GR 동안에는 오래된 경로가 선호도를 유지합니다. 그 구간이 끝나면 LLGR 구간이 시작되고 경로는 명시적으로 열등하게 만들어집니다. 전통적 단계를 원하지 않는 운영자는 Restart Time을 0으로 광고하거나 설정할 수 있습니다.

LLGR 경계에서 도우미는 협상된 각 AFI/SAFI에 타이머를 시작하고 잘 알려진 커뮤니티LLGR_STALE(값0xFFFF0006)을 붙입니다. 표시된 경로는 최하위 선호가 아닌 모든 경로보다 아래로 순위가 매겨져야 합니다. 선택 가능한 모든 경로가 최하위 선호일 때만 일반적인 동순위 결정이 다시 적용됩니다.

이는 미용적 라벨이 아닙니다. 새로운 대안은 일반 BGP 속성이 오래된 경로를 선호하더라도 장기 오래된 경로를 밀어내야 합니다. 그러나 새로운 경로가 존재하지 않으면 오래된 경로가 best로 남아 계속 포워딩할 수 있습니다. 따라서 이 메커니즘은 보증이 아니라 옵션을 산 것입니다. 더 나은 증거가 나타나거나 시계가 다하도록, 최후 수단으로 오래된 경로를 쓰는 옵션입니다.

표시는 전파도 제한합니다. 스피커는LLGR_STALE경로를 LLGR 기능을 광고하지 않은 이웃에게 광고해서는 안 되며, 내부 BGP 또는 컨페더레이션 피어에 대한 극히 제한된 선택적 절차는 예외입니다. 경로가 전파될 때 표시를 제거해서는 안 됩니다. 열화는 객체와 함께 이동해야 합니다. 그렇지 않으면 다음 수신자가 상속된 의심을 일반적인 도달 가능성으로 착각할 수 있습니다.

거부, 동기화, 만료

RFC 9494는 “이것을 유지하라”는 방법만 제공하지 않습니다. 잘 알려진 커뮤니티NO_LLGR(값0xFFFF0007)는 그 반대를 말합니다. 이 커뮤니티를 가진 경로는 LLGR 하에서 유지되어서는 안 됩니다. 송신자는 실패 의미상 장기 생존이 용납될 수 없는 정보에 이 표시를 붙일 수 있고, 수신자 정책도 로컬에서 같은 거부를 적용할 수 있습니다.

타이머는 편리한 건망증에도 저항합니다. 재수립된 TCP 세션 자체는 유지된 정보를 새로 만들거나 수명을 초기화하지 않습니다. 주소 패밀리의 동기화는 관련 End-of-RIB 마커 또는 선택 유예 경계로 완료됩니다. 그 과정이 경로를 새로 고치기 전에 LLST가 만료되면 도우미는 새로 고쳐지지 않은 상태를 제거합니다. 두 번째 재시작이 오래된 증거에 새 전생을 부여할 수는 없습니다.

기능 변화도 예외를 종료시킵니다. 돌아온 피어가 더 이상 요구되는 GR과 LLGR 기능을 광고하지 않거나, 주소 패밀리를 생략하거나, 요구되는 곳에서 유지된 포워딩 상태를 주장하지 못하면 도우미는 연관된 오래된 경로를 제거합니다. 시스템은 “세션이 돌아왔다”와 “이전 포워딩 주장이 갱신되었다”를 구별합니다.

RFC 9494의 작동 예제는 이 순서를 구체화합니다. 경로 리플렉터는 1초의 일반 Restart Time과 3,600초의 LLST를 제시합니다. 첫 1초 이후 그 경로들은LLGR_STALE을 받고 선호도를 잃습니다. 대안이 없으면 보더 라우터는 여전히 그 경로를 사용하고 LLGR 기능이 있는 외부 피어로 내보냅니다. 만료 시에는 경로를 삭제하고 철회를 보냅니다. 세션이 180초 후에 재동기화되면 새로 고친 경로에서 오래된 표시가 사라집니다. 외부 피어가 기능을 광고한 적이 없다면, 보더 라우터는 LLGR 시작 시 그 피어로부터 철회합니다.

연속성은 루프가 될 수 있다

주의 섹션은 부록이 아니라 핵심입니다. 오래된 더 구체적인 프리픽스는 새로운 덜 구체적인 경로가 존재하더라도 longest-prefix 포워딩에서 여전히 이길 수 있습니다. 오래된 BGP 경로를 최하위 선호로 만드는 것은 그 조회 규칙을 바꾸지 않습니다. 결과는 커버된 목적지에 대한 지속적인 패킷 손실일 수 있습니다.

선호도 하락은 라우터 사이의 불일치도 만들 수 있습니다. RFC 9494는 한 라우터의 경로가 최하위 선호가 되어 오래된 출구를 버리는 동안 다른 라우터는 같은 출구를 계속 선호하는 내부 토폴로지를 보여줍니다. 그러면 패킷이 둘 사이를 오갑니다. 일반 GR도 유사한 결함을 노출할 수 있지만, 긴 오래된 구간은 그 결과를 훨씬 더 오래 지속시킵니다.

문서의 핵심 운영 규칙은 직접적입니다. 영향을 받은 경로가 자율 시스템 내부에서 홉별(hop-by-hop) 포워딩을 구동한다면 LLGR은 권장되지 않습니다. 터널링된 포워딩이나, 전통적인 넥스트 홉이라기보다 구성에 가깝게 쓰이는 BGP 정보는 이 위험의 일부를 줄입니다. 그러나 무분별한 활성화를 정당화하지는 않습니다. 포워딩 상태 비트는 여전히 상태가 살아남았는지를 나타내야 하고, 타이머 값은 실제 실패 도메인을 반영해야 합니다.

VPN은 덜 보이는 위험을 더합니다. 철회된 VPN 경로에서 나온 라벨이 나중에 다른 맥락에 배정될 수 있습니다. 오래된 경로가 충분히 오래 남으면, 의미가 바뀐 라벨을 달고 트래픽이 도착할 수 있습니다. RFC 9494는 VPN 주소 패밀리에 대해 이 기능을 활성화하기 전에 최소 라벨 재사용 지연을 최대 LLST보다 크게 만들 것을 권합니다. 자원 수명이 조율되지 않은 연속성은 보안 경계를 넘을 수 있습니다.

좁은 공유 규칙, 로컬 위험 결정

Lu Heng의Minimum Initial Specification, Localized Future Decision, and Voluntary Adoption은 유용한 이후 프레임을 제공합니다. 공통 계층은 정확하고 작게 유지될 수 있습니다: 기능 협상, 패밀리별 범위, 열화 표시, 거부 표시, 최하위 선호 선택, 결정적 만료. 수신 운영자는 자기 네트워크에 달린 결정을 유지합니다: 어떤 주소 패밀리가 적격인지, 원격 LLST를 얼마나 수용할지, 포워딩이 터널링되어 있는지, 라벨이 어떻게 재사용되는지, 어떤 사건이 유지를 조기 종료하는지.

이 분리는 두 가지 오류를 막습니다. 공유 프로토콜이 오래된 경로를 유지하라는 중앙 명령이 되지 않습니다. 로컬 재량이 표시를 지우거나 오래된 증거를 새 것처럼 표현할 권한이 되지 않습니다. 상호운용성은 상태를 정의하고, 포워딩 위험을 지는 당사자가 그것을 쓸지 결정합니다.

Running-Code Primacy는 증거 검사를 더 엄격하게 만듭니다. 설정된 기능과 Established 세션은 별것 증명하지 못합니다. 운영자에게 필요한 것은 협상된 AFI/SAFI 튜플, 광고 및 로컬 상한이 적용된 타이머, LLGR에 진입하고 나가는 경로 수, 선택 경로 변화, 내보내기 철회, End-of-RIB 진행, 포워딩 손실, 루프 지표, 최종 정리입니다. 이것들은 Lu Heng의 이후 원칙을 Sofia Ren이 적용한 것이며, Chen이나 RFC 저자들에게 돌려지는 입장이 아닙니다.

RFC 9494의 가장 정직한 특징은 경로의 이름입니다. 그것은 여전히 오래된 것으로 남습니다. 이 표준은 연속성으로 진실을 대체하지 않고, 오래된 증거의 임시 사용을 보이게 만들고, 종속시키고, 유한하게 만듭니다. Chen이 이 문서화 사슬에서 차지하는 자리가 의미 있는 이유는, 이 메커니즘이 운영자에게 실패한 세션을 견딜 여지를 주면서도 과거에 현재를 통치할 무한한 권리를 주지 않기 때문입니다.

출처