요약
- Les Ginsberg의 것으로 기록된 RFC 6823, 7370, 7987, 8706, 8918, 9681 관련 작업은 여섯 가지 운영 제어를 연결합니다: 재시작된 인접을 현재 토폴로지에 조건부로 유지하기, 애플리케이션 광고가 낡은 상태로 남지 않도록 하기, 정확한 코드포인트 기록을 유지하기, 손상된 수명 상태가 일으키는 피해를 제한하기, 일반 메시지에서 무효한 필드와 특수하게 제약된 퍼지(purge) 콘텐츠를 구분하기, 그리고 수신자가 선언한 용량 안에서만 플러딩을 가속하기.
- 이 RFC들은 협력적 IETF 산출물이며, 한 저자가 IS-IS, IETF 합의, 구현, 배포, 수렴 또는 보안 결과를 통제한다는 증거가 아닙니다. 그 실용적 가치는 상태 전이, 레지스트리, 장애 처리, 송신자-수신자 책임을 구현과 운영자가 검증할 수 있을 만큼 명확하게 드러낸 데 있습니다.
인물에 귀속된 기술 기록과 단단한 경계
Les Ginsberg의 IETF Datatracker 프로필은 동일한 인물 기록에 상당한 분량의 공개된 라우팅 작업을 연결합니다. 여기서 검토하는 여섯 개 RFC는 10년 이상에 걸쳐 IS-IS 운영의 서로 다른 부분을 다룹니다: 재시작 중인 라우터가 이웃과 소통하는 방식, 애플리케이션이 링크 상태 시스템에 정보를 넣는 방식, 프로토콜의 타입 레지스트리가 유효한 사용을 기술하는 방식, 구현이 손상된 수명 필드에 대응하는 방식, 특정 메시지에서 무효한 필드를 처리하는 방식, 그리고 수신자를 능가하지 않으면서 링크 상태 정보를 더 빠르게 플러딩하는 방식.
이 기록은 초점을 맞춘 분석은 지지하지만 전형적인 전기까지 지지하지는 않습니다. 공식 출처는 저작과 기술 참여를 확립합니다. 그것은 사적 동기, 개인적 이력, 상업적 결과, 또는 사건에 대한 책임을 확립하지 않습니다. 또한 Ginsberg를 IS-IS 동작의 단독 저자로 만들지도 않습니다. RFC 7370은 그를 저자로 기재하지만, 여기서 다루는 다른 RFC들은 복수의 저자를 둡니다. 모든 문서는 워킹 그룹, 검토자, 구현자, 벤더, 운영자가 관여하는 IETF 절차 안에 있습니다. 그 결과인 프로토콜 동작은 바이라인이 아니라 실행 중인 코드와 현재 네트워크 상태가 만들어냅니다.
이 구분이 주제의 핵심입니다. 링크 상태 라우팅은 공유 기록에 의존하지만, 공유 기록이 현실을 지배하지는 않습니다. LSP는 도달 가능성을 기술하거나, 애플리케이션 정보를 담거나, 플러딩 매개변수를 광고할 수 있습니다. IANA 레지스트리는 어떤 타입 값이 할당되었고 어디에 나타날 수 있는지 문서화할 수 있습니다. 재시작 신호는 인접을 보존해 달라고 요청할 수 있습니다. 그러나 그 어떤 기록도 고장난 링크를 사용 가능하게 만들거나, 구현이 잘못된 입력을 안전하게 파싱하도록 강제하거나, 수신자가 더 빠른 스트림을 위한 충분한 용량을 갖고 있음을 증명할 수 없습니다.
RFC 시퀀스는 대신 기록의 한계가 명시적일 때 그것이 운영적으로 유용해지는 방식을 보여줍니다. 재시작 신호에는 토폴로지가 변할 때의 출구가 있습니다. 범용 애플리케이션 정보에는 낡은 복사본을 막기 위한 소유권과 철회 규칙이 있습니다. 레지스트리 항목은 타입이 허용되는 메시지를 구분합니다. 최소 수명 규칙은 플러딩을 증폭할 수 있는 손상 사례를 제한합니다. 무효 필드는 보안 결과가 다르기 때문에 일반 메시지와 퍼지에서 다르게 처리됩니다. 빠른 플러딩은 속도에 대한 추상적 요구가 아니라 수신자 피드백과 보수적 속도 선택에 묶여 있습니다.
이것은 한 설계자가 꾸준히 프로토콜을 개선해 나가는 서사가 아닙니다. 그것은 상태 규율에 관한 협력적 결정에 대한 출처가 명시된 기록입니다. Ginsberg의 귀속은 그 기록을 검토하는 데 필요한 인물 수준의 연결을 제공합니다. 증거 상한도 똑같이 중요합니다: RFC들은 프로토콜 동작과 설계 제약을 정의하지만, 어떤 특정 네트워크에서의 보편적 배포나 측정된 결과를 증명하지는 않습니다.
RFC 8706: 토폴로지가 가만히 있었다고 가장하지 않는 재시작 연속성
2020년 2월에 발행된 RFC 8706은 IS-IS의 재시작 신호를 규정하며 RFC 5306을 대체합니다. 이 문서는 여러 관련 상황을 다룹니다. 라우터는 포워딩 플레인 상태를 유지한 채 재시작할 수 있습니다. 라우터는 보존된 상태 없이 시작할 수도 있습니다. 이웃들은 인접을 다시 수립하고 LSP 데이터베이스를 동기화해야 합니다. 이 사양은 또한 오래된 인접 상태가 무관한 토폴로지 변화를 넘어 살아남지 못하게 하면서 시작 시 일시적 혼란을 줄이는 것을 목표로 합니다.
핵심 운영 구분은 연속성과 은폐 사이의 구분입니다. 재시작 중인 라우터는 제어 플레인 상태가 재구축되는 동안 이웃에게 인접을 유지해 달라고 요청할 수 있지만, 그 요청이 이전 토폴로지를 영구적 사실로 만들지는 않습니다. 다른 토폴로지 증거가 요구하면 이웃은 여전히 인접을 내릴 수 있습니다. 따라서 이 메커니즘은 관계를 조건부로 보존하는 동안 정상적인 데이터베이스 동기화가 진행됩니다.
Restart Signaling TLV는 관련 상태에 대한 플래그를 담습니다. 재시작 요청은 송신자가 재시작 중임을 이웃에 알립니다. 재시작 확인(acknowledgment)은 재시작 중인 시스템이 필요로 하는 정보, 즉 남은 유지 시간과 적용 가능한 경우 이웃의 시스템 식별자를 제공합니다. 억제 광고(suppression-advertisement) 플래그는 시작 중인 라우터가 준비될 때까지 인접을 광고하지 말 것을 요청하는 시작 동작을 지원합니다. 이들은 서로 다른 의미를 지닌 프로토콜 기록이며, 단일한 "모두 유지" 스위치가 아닙니다.
SA 비트는 시작 메커니즘이 무엇을 얼마나 숨기는지 명시해야 하는 이유를 보여줍니다. 시작 중인 라우터는 이웃에게 인접 광고를 억제해 달라고 요청할 수 있습니다. 그 비트가 지워진 IIH가 도착하기 전까지 이웃은 자신의 LSP에 인접을 광고하지 않습니다. 이것은 부분적으로만 동기화된 라우터가 로컬 hello 교환이 시작되었다는 이유만으로 완전히 사용 가능해 보이는 일을 막습니다. 시작이 충분히 진행되면 요청을 지우고 정상적인 광고를 재개할 수 있습니다.
데이터베이스 동기화는 설계의 다른 절반입니다. 인접을 보존하는 것은 재시작 중인 라우터가 자신의 LSP 데이터베이스 관점이 최신인지를 판단할 수 있을 때만 유용합니다. RFC 8706은 동기화를 위한 동작과 이웃과 교환되는 정보에 기반한 최적화를 정의합니다. 동기화를 완료할 수 없는 라우터는 조용히 복구를 주장하는 대신 그 실패를 드러내야 합니다. 프로토콜은 정의된 상태와 타이머로 절차가 완료되었는지를 판단합니다.
설계는 양쪽에 책임을 배분합니다. 재시작 중인 시스템은 자신의 상태를 신호하고, 받은 확인을 사용해 일관된 관점을 재구축해야 합니다. 이웃은 요청을 고립된 것이 아니라 현재 토폴로지의 맥락에서 해석해야 합니다. 다른 변화가 보존된 인접을 위험하게 만들면 이웃은 그것을 내릴 수 있는 권한을 유지합니다. 이 조건 덕분에 재시작 연속성은 더 넓은 링크 상태 시스템에 종속됩니다.
이것이 중요한 이유는 링크 상태 프로토콜이 분산 데이터베이스로부터 경로를 도출하기 때문입니다. 한 인접이 유지되는 동안 나머지 토폴로지가 변하면 오래된 포워딩 관점이 다른 라우터들이 계산하는 것과 불일치할 수 있습니다. 그 변화를 무시하는 연속성 메커니즘은 일시적 제어 플레인 중단을 포워딩 이상으로 확장할 수 있습니다. 대신 RFC 8706은 연속성을 주변 증거에 따라 유효성이 달라지는 유한한 예외로 다룹니다.
출처는 모든 라우터가 메커니즘의 모든 부분을 구현하는지, 모든 재시작이 트래픽을 보존하는지, 특정 운영자가 관련 동작을 켜는지 보여주지 않습니다. 수렴이나 중단 감소를 정량화하지도 않습니다. 확립되는 것은 프로토콜 계약입니다: 재시작 상태가 신호되고, 동기화가 여전히 필요하며, 인접 보존은 조건부이고, 무관한 토폴로지 변화가 요청을 무효화할 수 있습니다.
따라서 운영자에게 실용적 질문은 재시작 신호가 지원되는지 여부만이 아닙니다. 어떤 플래그가 교환되는지, 데이터베이스 동기화가 완료되는지, 타이머가 만료되는지, 토폴로지 변화가 보존된 상태를 종료시키는지, 그리고 구현이 성공한 재시작과 단순히 보이는 상태로 남아 있던 인접을 구분할 만큼 충분한 텔레메트리를 노출하는지도 알아야 합니다.
RFC 6823: 애플리케이션 정보에는 소유권, 범위, 철회가 필요하다
2012년 12월에 발행된 RFC 6823은 IS-IS에서 범용 애플리케이션 정보를 광고하는 방법을 정의합니다. 그 매력은 이해하기 쉽습니다. 링크 상태 프로토콜은 이미 라우팅 도메인 전반에 정보를 분배하므로, 애플리케이션이 별도의 전송 수단을 새로 만드는 대신 그 분배 시스템을 사용하고 싶을 수 있습니다. 위험도 똑같이 명확합니다: 소유권과 플러딩 동작이 모호하면 복사된 애플리케이션 데이터가 낡거나 충돌하거나 과도하게 수다스러워질 수 있습니다.
이 문서는 Generic Information TLV와 그것을 사용하는 애플리케이션을 위한 지침을 정의함으로써 응답합니다. 애플리케이션 식별자는 IANA 레지스트리를 통해 할당됩니다. 인코딩된 정보는 애플리케이션을 식별하고 애플리케이션별 콘텐츠를 담습니다. 그러나 범용 컨테이너가 애플리케이션에 무제한의 자유를 주지는 않습니다. 각 애플리케이션 사양은 자신의 정보가 어떻게 생성되고, 갱신되고, 범위가 지정되고, 해석되는지를 정의할 책임을 그대로 지닙니다.
낡은 상태의 회피는 일급 요건입니다. 이 RFC는 한 라우터에 연관된 정보가 다른 시스템에 의해 이중화 목적으로 광고될 수 있는 사례를 다룹니다. 그 패턴은 가용성을 높일 수 있지만 철회 문제를 만듭니다. 원래 출처가 사라지거나 상태가 바뀌면 복제본은 낡은 값을 무기한 계속 광고해서는 안 됩니다. 애플리케이션은 어느 복사본이 현재 값인지, 낡은 복사본을 언제 제거해야 하는지를 판단할 만큼 충분한 조율을 필요로 합니다.
이것은 분산 기록에 관한 일반적 교훈입니다. 복제는 정보를 얻을 수 있는 장소의 수를 늘리지만, 정보가 바뀔 때 수렴해야 하는 장소의 수도 늘립니다. 명확한 기원, 버전 또는 철회 조건이 없는 기록은 그것이 기술하려던 현실을 넘어 살아남을 수 있습니다. 링크 상태 시스템에서 그 낡은 기록은 효율적으로 분배되어 국지적 모호성을 도메인 전체의 모호성으로 만듭니다.
RFC 6823은 애플리케이션 설계자에게 갱신 동작에 대해서도 경고합니다. 빈번한 변화는 반복적인 LSP 생성과 플러딩을 유발할 수 있습니다. 애플리케이션이 라우팅 프로토콜을 제약 없는 메시지 버스로 다루면, 그 자체의 갱신 속도가 경로 계산에 필요한 프로토콜 정보와 경쟁할 수 있습니다. 따라서 이 문서는 애플리케이션 사양이 정보가 얼마나 자주 바뀌는지를 고려하고 플러딩 폭풍을 만들 수 있는 설계를 피하도록 요구합니다.
범위도 중요합니다. 정보는 특정 영역 내에서만 유용할 수 있거나 더 넓은 분배가 필요할 수 있습니다. 애플리케이션은 모든 참여자가 모든 기록을 받아야 한다고 가정하는 대신 그 범위를 정의해야 합니다. 이 결정은 의미와 비용 모두에 영향을 미칩니다. 한 행정적 또는 토폴로지적 맥락 안에서 유효한 값은 그 밖에서는 오해를 일으킬 수 있고, 불필요하게 넓은 플러딩은 도메인 전체의 처리량과 대역폭을 소모합니다.
새 애플리케이션 레지스트리는 고유성과 해석 가능성에 기여합니다. 안정된 식별자 덕분에 수신자는 뒤따르는 바이트를 어느 애플리케이션이 소유하는지, 어느 사양이 그 의미를 정하는지 알 수 있습니다. 그러나 레지스트리는 애플리케이션의 실시간 데이터를 검증하거나, 배포를 승인하거나, 구현이 사양을 존중함을 보장하지 않습니다. 독립적으로 개발된 시스템이 같은 코드에 서로 다른 의미를 붙이지 않도록 할당을 기록할 뿐입니다.
레지스트리와 실행 상태의 이 구분이 중요합니다. IANA는 고유한 애플리케이션 식별자를 유지할 수 있습니다. 애플리케이션 사양은 형식과 동작을 정의합니다. 구현은 정보를 생성하고 파싱합니다. 운영자는 그것을 켤지 선택합니다. 광고가 최신이고, 올바르게 범위가 지정되고, 변화에도 안정적인지는 실행 중인 시스템만 보여줄 수 있습니다.
Ginsberg는 Stefano Previdi, Mike Shand와 함께 이 RFC의 공동 저자 중 한 명입니다. 그 귀속은 그를 이 설계 문제에 연결하는 것을 지지합니다. 컨테이너, 그 합의, 그 배포를 그 한 사람에게 돌리는 것은 지지하지 않습니다. RFC가 확립하는 운영적 결과는 더 좁습니다: 범용 정보는 명시적인 애플리케이션 소유권과 플러딩 지침 아래 IS-IS에서 운반될 수 있고, 낡은 상태의 방지는 선택적 정리가 아니라 계약의 일부입니다.
RFC 7370: 프로토콜 레지스트리는 프로토콜을 정확하게 기술해야 한다
2014년 9월에 발행된 RFC 7370은 살아 있는 LSP 콘텐츠에서 IS-IS 타입 할당을 기술하는 기록으로 주제를 옮깁니다. 이 문서는 IANA IS-IS TLV Codepoints 레지스트리에 대한 편집 변경을 권고하고 할당 요청을 검토하는 지정 전문가(designated experts)에게 지침을 제공합니다. 명시된 목표는 프로토콜의 상태를 더 정확하게 문서화하는 것입니다.
언뜻 보면 재시작이나 플러딩 동작보다 덜 운영적으로 보일 수 있습니다. 실제로 타입 레지스트리는 상호운용성의 일부입니다. TLV 코드포인트는 특정 구조를 식별하고, 레지스트리는 그 구조가 허용되는 프로토콜 데이터 단위를 나타냅니다. 구현자, 검토자, 미래의 사양은 들어오는 필드가 인식되는지, 맥락에서 허용되는지, 아니면 다른 용도로 예약되어 있는지를 판단할 때 그 정보에 의존합니다.
부정확한 레지스트리는 두 종류의 위험을 만듭니다. 합법적인 사용을 사용 불가한 것으로 기술하여 불필요한 재발명이나 충돌하는 할당을 유도할 수 있습니다. 또는 정의 사양이 허용하지 않는 맥락에서 필드가 허용된다고 암시할 수 있습니다. 후자는 특히 제약된 의미를 가진 퍼지와 다른 메시지에서 중요합니다. 오해를 일으키는 표에 의존하는 파서나 검증기는 기저 RFC를 따르는 것과 다른 결정을 내릴 수 있습니다.
따라서 RFC 7370은 표현과 검토 절차 모두를 개선합니다. 타입과 유효한 메시지 맥락 사이의 관계가 더 명확해지도록 레지스트리의 부분들을 분리하고 레이블을 붙입니다. 또한 지정 전문가가 요청을 어떻게 평가해야 하는지, 표준화 절차를 아직 완료하지 못한 작업에 연관된 초기 할당(early allocations)을 포함하여 설명합니다.
여기서 전문가 검토는 구현에 대한 주권이 아닙니다. 검토자는 할당이 기술적으로 정당화되고, 충분히 문서화되고, 레지스트리의 목적과 호환되는지 확인합니다. IANA는 승인된 할당을 기록합니다. 그 어느 행동도 결과 확장이 모든 구현에서 올바르고, 모든 배포에서 안전하고, 모든 운영자에게 유용함을 증명하지 않습니다. 레지스트리의 권한은 더 좁고 구체적입니다: 할당을 고유하고, 추적 가능하고, 정확하게 기술된 상태로 유지하는 것입니다.
초기 할당에 대한 이 문서의 처리는 그 경계를 강화합니다. 구현과 상호운용성 테스트가 진행될 수 있도록 RFC가 발행되기 전에 코드포인트가 필요할 수 있습니다. 지정 전문가는 정의된 조건에서 그러한 할당을 승인할 수 있습니다. 레지스트리는 실행 코드의 평가를 지원하는 잠정적 사실을 기록합니다. 작업이 바뀌거나, 만료되거나, 진행되지 않으면 할당 절차에 정정 또는 해제를 위한 규칙이 있습니다. 그 기록은 실험을 지원하면서 미완성 제안을 영구적 정당성으로 바꾸지 않습니다.
이것은 장부로서의 레지스트리의 강력한 예입니다. 누가 어느 범위가 지정된 값을, 어느 사양 아래 할당받았는지를 기록합니다. 충돌을 줄이고 구현이 참조할 수 있는 이력을 보존합니다. 라우터에게 해당 TLV를 받아들이라고 명령하거나 그 임의의 사용을 승인하지는 않습니다. 실제 파싱과 운영 효과는 여전히 프로토콜 문서와 구현된 동작이 지배합니다.
RFC 7370은 또한 이후의 무효 TLV 작업과 직접 연결됩니다. 레지스트리가 TLV가 허용되는 위치를 정확히 보여주면, 구현은 알 수 없지만 확장 가능할 수 있는 필드와 잘못된 종류의 메시지에 나타나는 알려진 필드를 구분할 수 있습니다. 그 구분은 상호운용성과 보안에 영향을 미칩니다. 따라서 레지스트리의 행정적 품질이 런타임 경계의 명확성에 영향을 줍니다.
증거는 Ginsberg를 이 레지스트리 갱신과 관련 전문가 지침의 저자로 기술하는 것을 지지합니다. IANA, 이후의 전문가 결정, 벤더 동작에 대한 통제를 추론하는 것은 지지하지 않습니다. 지속되는 운영적 요점은 프로토콜에 대한 메타데이터가, 독립적으로 만들어진 시스템이 같은 숫자에 같은 의미를 붙일 때 프로토콜 신뢰성의 일부라는 것입니다.
RFC 7987: 손상된 수명 상태가 플러딩 증폭기가 되어서는 안 된다
2016년 10월에 발행된 RFC 7987은 잠재적으로 넓은 결과를 지닌 좁은 필드를 다룹니다: IS-IS Link State PDU의 Remaining Lifetime입니다. 기원자가 그 값을 설정하고, LSP가 네트워크에 머무는 동안 값은 감소합니다. 값이 0에 도달하면 LSP는 퍼지됩니다. 이것은 링크 상태 정보에 유한한 수명을 부여하고 더 이상 갱신되지 않는 기록의 제거에 도움을 줍니다.
어려움은 Remaining Lifetime 필드가 전송 중에 변경되고 체크섬 계산에서 제외된다는 점입니다. 이 RFC가 인용하는 인증 메커니즘의 암호화 해시에서도 제외됩니다. 이러한 제외는 정상적인 노화를 허용하지만, PDU의 나머지 부분을 다루는 보호 기제가 필드의 손상을 감지하지 못할 수 있음을 의미합니다.
한 방향의 손상은 LSP가 의도보다 오래 산 것처럼 보이게 할 수 있습니다. 반대 방향의 손상은 너무 일찍 만료되게 할 수 있습니다. 후자는 피해를 주는 순환을 촉발할 수 있습니다: 구현이 만료된 것으로 보이는 LSP를 퍼지하고, 기원자가 그것을 재생성하고, 손상된 낮은 값이 또다른 퍼지를 일으킵니다. 반복되는 재생성과 플러딩은 자원을 소모하고 도달 가능성을 방해할 수 있습니다. 문서는 이것을 가능한 서비스 거부 벡터로도 인식합니다.
RFC 7987은 정상 LSP 생성 및 갱신 동작을 위한 하위 호환되는 최소 값을 정의합니다. 이 메커니즘은 작거나 손상된 값이 즉각적이고 반복되는 퍼지-재생성 순환을 만들지 못하도록 충분한 남은 수명을 확보합니다. 노화를 없애거나 정당한 퍼지를 막지는 않습니다. 손상이 프로토콜 자체의 복구 동작을 통해 자기 증폭하기 어렵도록 특정 전이를 제한합니다.
이 문서는 예외를 신중하게 보존합니다. 퍼지는 정당하게 0 수명을 사용합니다. 지정 라우터(designated-router) 역할을 인수하는 시스템은 이전 지정 시스템에 연관된 의사노드(pseudonode) LSP를 퍼지해야 할 수 있습니다. 프로토콜이 정의한 다른 사례들도 여전히 제거를 요구합니다. 따라서 최소값은 모든 LSP가 살아 있어야 한다는 일괄 규칙이 아닙니다. 0이 아닌 기록이 데이터베이스에 남기로 되어 있는 일반 생성과 갱신에 적용됩니다.
이 구분은 운영적으로 중요합니다. 단순한 방어는 낮은 수명을 받아들이기를 거부함으로써 조기 제거를 피할 수 있지만, 그것은 진짜 철회가 필요한 정보도 유지할 수 있습니다. 대신 RFC는 일반 광고를 승인된 퍼지 동작과 분리하고, 손상 순환이 생기는 맥락에서 최소값을 정의합니다.
해법의 하위 호환성도 중요합니다. 플러딩 폭풍을 줄이기 위한 변경은 도움이 되기 전에 즉각적이고 도메인 전체의 업그레이드를 요구해서는 안 됩니다. 새 구현은 더 안전한 하한에 따라 값을 생성하거나 갱신할 수 있고, 오래된 시스템은 표준 IS-IS 수명 의미를 계속 처리합니다. 호환성 덕분에 보호가 혼합 환경에 점진적으로 들어올 수 있습니다.
이 문서는 Ginsberg, Paul Wells, Bruno Decraene, Tony Przygienda, Hannes Gredler가 공동으로 저술하였습니다. 그 분석은 프로토콜 취약점과 유한한 대응을 확립합니다. 그것은 그 벡터가 특정 네트워크에서 악용되었는지, 그 변경이 모든 플러딩 폭풍을 없애는지, 모든 구현이 이를 채택했는지를 확립하지 않습니다. 플러딩 불안정성에는 토폴로지 변동, 애플리케이션 동작, 큐잉, 수신자 과부하, 다른 잘못된 상태 등 많은 원인이 있을 수 있습니다.
운영자와 구현자에게 더 넓은 교훈은 일반 무결성 검사 밖에 놓여 있는 가변 메타데이터를 점검하는 것입니다. 어떤 필드는 프리픽스나 인접을 기술하지 않기 때문에 사소해 보일 수 있지만, 분산 기록이 언제 사라지는지를 통제할 수 있습니다. 그 필드의 손상이 재생성 메커니즘을 활성화하면 그 상호작용은 증폭기가 될 수 있습니다. 올바른 대응은 모든 가변 필드를 신뢰할 수 없다고 선언하는 것이 아니라, 그 실패 동작이 관찰 가능하고 복구 가능하도록 한계를 정의하는 것입니다.
RFC 8918: 무효 데이터는 맥락에 의존하며, 퍼지에는 특별한 주의가 필요하다
2020년 9월에 발행된 RFC 8918은 구현이 특정 PDU에서 허용되지 않는 TLV를 받았을 때 무엇을 해야 하는지를 다룹니다. 확장성은 구현이 아직 이해하지 못하는 정보를 관용하는 데 의존합니다. 상호운용성은 의미가 유효하지 않은 곳에 나타나는 필드를 거부하거나 제약하는 데에도 의존합니다. 과제는 그 사례들을 정확히 구분하는 것입니다.
IANA IS-IS TLV Codepoints Registry는 TLV가 특정 메시지 타입에서 허용되는지를 기록합니다. 수신자가 만날 수 있는 상황은 여러 가지입니다. TLV가 인식되고 허용될 수 있습니다. 인식되지 않지만 확장이 허용되는 맥락에 나타날 수 있습니다. 또는 알려졌든 모르든 레지스트리가 허용하지 않는다고 말하는 PDU에 나타날 수 있습니다.
LSP 퍼지 이외의 대부분의 수신 PDU에 대해 RFC 8918은 동작을 명시합니다: 허용되지 않는 TLV는 무시되고 PDU는 그 외에는 정상적으로 처리됩니다. 이것은 잘못 놓인 하나의 선택적 요소가 라우팅 메시지 전체의 손실로 번지는 것을 막습니다. 또한 구현이 같은 잘못된 입력에 대해 서로 다른 대응을 만들어 내는 것을 막습니다.
퍼지는 링크 상태 정보를 제거하기 때문에 별도의 수용 규칙이 필요합니다. ISO 10589는 퍼지를 생성하기 전에 본문을 제거할 것을 권고하지만, TLV를 포함하는 수신된 퍼지는 허용하며 그 내용은 무시합니다. RFC 5304는 암호화 인증을 위해 그 동작을 강화하여, 수신자가 인증 TLV 이외의 TLV를 포함하는 퍼지를 받아들이지 않도록 요구했습니다. RFC 6232는 Purge Originator Identification TLV를 추가했고, RFC 6233은 TLV Codepoints Registry에 Purge 열을 추가하여 구현이 그 맥락에서 허용되는 TLV를 식별할 수 있게 했습니다.
RFC 8918은 이 규칙들을 단일 정규화 절차로 묶지 않습니다. 대신 기저 동작, 인증된 퍼지 규칙, 기원자 식별, 레지스트리 사이의 호환성 경계를 문서화합니다. 인증 전용 수용은 기저 동작과 하위 호환되지 않고, 기원자 식별은 그 수용 집합을 다시 바꿉니다. 따라서 이 문서는 모든 노드가 지원하지 않을 수 있는 동작을 켤 때 구현 통제를 권고하여, 운영자가 조용히 불일치하는 퍼지 수용을 만들지 않고 도입할 수 있게 합니다.
이 구분은 정확한 레지스트리에 의존합니다. 구현은 어떤 TLV가 퍼지에서 허용되는지 알아야 합니다. RFC 7370의 레지스트리 명확성 작업과 RFC 8918의 런타임 처리는 보완적입니다. 레지스트리는 범위가 지정된 할당을 기록하고, 구현은 그 기록을 살아 있는 메시지에 적용하며, 보안 분석은 퍼지 맥락이 다른 모든 PDU처럼 다뤄질 수 없는 이유를 설명합니다.
이 문서는 또한 이전 RFC들을 갱신하고, 구현이 서로 다르게 해석할 수 있는 동작을 조율합니다. 그 명확화는 독립적인 시스템이 같은 무효 입력에 대해 공통의 답을 갖기 때문에 상호운용성을 개선합니다. 모든 파서가 버그가 없고 인증이 올바르게 설정되어 있음을 보장하지는 않습니다. 구현 동작을 시험할 수 있는 기대 경계를 제공할 뿐입니다.
Ginsberg는 Paul Wells, Tony Li, Tony Przygienda, Shraddha Hegde와 함께 여러 저자 중 한 명입니다. 저작 기록은 그를 이 결정 문제에 연결하지만, RFC는 여전히 협력적 표준 결과입니다. 그 안의 어떤 것도 특정 공격, 영향받은 고객, 벤더 결함, 배포 결과에 대한 주장을 지지하지 않습니다.
운영자에게 무효 TLV 카운터와 로그는 유용한 증거가 될 수 있습니다. 허용되지 않는 맥락에서 필드를 반복적으로 받는 시스템은 구현 결함, 낡은 확장 동작, 우발적 손상, 또는 적대적 입력을 보고 있을 수 있습니다. 프로토콜 대응은 도메인의 상호운용성을 유지해야 하지만, 이상 징후를 보이지 않게 만들어서는 안 됩니다. 처리와 관측 가능성은 다른 목적을 섬깁니다: 하나는 유한한 동작을 보존하고, 다른 하나는 원인을 조사할 수 있게 합니다.
RFC 9681: 더 빠른 플러딩은 수신자 용량에서 시작된다
2024년 11월에 발행된 RFC 9681은 IS-IS 빠른 플러딩을 검토합니다. 링크 상태 전파는 수렴 시간에 직접 기여하며, 현대 네트워크는 오래된 기본값보다 훨씬 높은 속도를 지원할 수 있습니다. 더 큰 토폴로지와 더 엄격한 수렴 목표는 변경된 LSP를 더 빨리 전달해야 할 압력을 만듭니다. 그러나 수신자를 이해하지 않고 송신자의 속도를 높이면 느린 수렴이 큐 손실, 재전송, 제어 플레인 과부하 또는 불안정한 피드백으로 바뀔 수 있습니다.
이 RFC는 빠른 플러딩을 타이머 조정이 아니라 시스템 문제로 다룹니다. 송신자 페이싱, 수신자 성능, 흐름 또는 혼잡 동작, LAN 효과, 확인 생성, 원하는 매개변수를 전달하는 프로토콜 확장을 다룹니다. 이 폭이 중요한 이유는 하나의 LSP가 여러 자원 경계를 넘기 때문입니다: 생성, 큐잉, 전송, 수신, 검증, 데이터베이스 설치, 확인, 이후의 플러딩.
한 프로토콜 확장은 수신자가 플러딩 매개변수를 광고할 수 있게 합니다. LSP Transmission Interval은 송신자가 더 정교한 흐름 제어 알고리즘을 구현하지 않더라도 안전하게 사용할 수 있는 지속 가능한 수신 속도를 표현합니다. 다른 매개변수들은 버스트 동작과 순서화된 플러딩 선호를 기술합니다. 이 값들은 수신자 용량을 명시적 프로토콜 상태로 만들어, 송신자가 모든 이웃이 같은 속도를 받아들일 수 있다고 가정하지 않게 합니다.
LAN에서는 여러 송신자가 하나의 수신자로 보낼 수 있기 때문에 문제가 더 복잡합니다. 수신자는 그들의 합산 부하를 반영해 더 보수적인 값을 광고할 수 있습니다. 서로 다른 수신자로부터 서로 다른 광고를 받는 송신자는 매개변수별로 가장 보수적인 값을 사용해야 합니다. 이것은 권한의 실용적 배분입니다: 수신자는 지속할 수 있는 것을 기술하고, 송신자는 그 선언을 더 공격적인 속도로 재해석해서는 안 됩니다.
보수적 규칙은 빠른 이웃이 느린 이웃의 속도를 정하는 것을 막습니다. 플러딩은 제약된 수신자를 통과하는 경로만큼만 안전합니다. 송신자는 여전히 최적화와 피드백을 사용할 수 있지만, 광고된 구간은 확인이 멈추거나 알고리즘이 예기치 않은 상태에 들어갈 때 최소한의 안전한 기준을 제공합니다.
수신자 동작도 진행에 영향을 미칩니다. Partial Sequence Number PDU는 LSP 집단을 확인합니다. RFC는 시간과 수신된 LSP 수 모두에 기반한 확인 생성을 다루어, 과도한 확인 부담 없이 피드백이 신속히 도착하게 합니다. 이것은 송신자가 수신자가 진행 중임을 알아야 하기 때문에 중요합니다. 유용한 피드백 없이 높은 전송 속도는 시스템이 문제를 감지하기보다 빨리 큐를 채울 수 있습니다.
순서화된 플러딩은 보편적 요구 사항이 아니라 또 하나의 도구입니다. 유용한 순서를 보존하면 일부 수렴 시나리오에서 동작을 개선할 수 있지만, 구현과 큐 관리 고려사항을 도입합니다. 사양은 빠른 플러딩을 단일 필수 알고리즘으로 축소하지 않습니다. 수신자가 한계를 설정할 수 있는 능력을 유지하면서 구현이 사용할 수 있는 정보와 동작을 정의합니다.
따라서 이 문서의 규모 다루기는 조건부입니다. 처리, 링크, 큐, 수신자가 감당할 수 있을 때 더 빠른 속도는 수렴의 전파 구성요소를 줄일 수 있습니다. 최단 경로 계산 시간, 하드웨어 프로그래밍 시간, 토폴로지 복잡성, 애플리케이션별 복구 동작을 제거하지는 않습니다. 특정 기본 속도가 모든 플랫폼에 적합함을 증명하지도 않습니다.
RFC 9681은 Bruno Decraene, Ginsberg, Tony Li, Guillaume Solignac, Marek Karasek, Gunter Van de Velde, Tony Przygienda가 저술했습니다. 최근 발행은 기록의 현재 종단점을 제공하지만, 배포 조사가 아니라 표준 문서로 남습니다. 증거는 프로토콜 확장과 설계 제약을 기술하는 것을 지지합니다. 이름이 지정된 네트워크에서 측정된 1초 미만 수렴, 보편적 구현, 고객 결과를 주장하는 것을 지지하지 않습니다.
실용적인 운영 질문은 "이 송신자가 얼마나 빠르게 전송할 수 있는가"가 아닙니다. "수신자, 큐, 프로세서, 확인 메커니즘의 전체 경로가 올바른 상태를 유지하면서 어느 속도를 지속할 수 있는가"입니다. 그 질문은 빠른 플러딩을 관찰 가능한 용량에 종속시킵니다. 속도는 정당성 주장이 아니라 통제된 매개변수가 됩니다.
하나의 시퀀스, 여섯 종류의 상태 규율
여섯 개 RFC를 함께 읽으면 IS-IS 연속성이 하나로 묶어서는 안 되는 여러 서로 다른 기록에 의존한다는 것이 드러납니다.
RFC 8706은 재시작 또는 시작 동안의 인접과 동기화 상태를 다룹니다. 재시작 신호는 예외적 조건을 기술하며, 현재 토폴로지와 데이터베이스 동기화가 그 예외가 안전하게 남는지를 결정합니다. RFC 6823은 링크 상태 시스템이 운반하는 애플리케이션이 소유한 정보를 다룹니다. 그 식별자, 범위, 갱신 속도, 철회 규칙이 복제된 콘텐츠가 최신으로 남는지를 결정합니다.
RFC 7370은 타입 할당의 행정 기록을 다룹니다. 정확한 레지스트리 메타데이터는 사양과 구현이 필드가 어디에 나타날 수 있는지에 동의하는 데 도움을 줍니다. RFC 7987은 손상이 반복적인 프로토콜 동작을 촉발할 수 있는 가변 수명 값을 다룹니다. 최소값은 정당한 만료와 퍼지 동작을 없애지 않으면서 증폭을 제한합니다.
RFC 8918은 맥락적 유효성을 다룹니다. 알 수 없는 확장과 허용되지 않는 필드는 같은 것이 아니며, 퍼지는 그것을 버리는 것이 낡은 상태를 보존할 수 있기 때문에 일반 메시지와 똑같이 다뤄질 수 없습니다. RFC 9681은 용량 상태를 다룹니다. 수신자의 지속 가능한 속도는 더 빠른 플러딩이 수렴을 개선할 수 있을 때에도 송신자를 제약합니다.
기록들의 소유자도 다릅니다. IANA는 할당을 유지합니다. RFC는 의미를 정의합니다. 구현은 데이터를 파싱하고, 저장하고, 전송합니다. 라우터는 현재 LSP를 생성합니다. 수신자는 용량을 광고합니다. 운영자는 정책을 결정하고 결과를 관찰합니다. 어떤 단일 기록이나 주체도 다른 모든 것을 대신할 수 없습니다.
이 분배가 유용한 이유는 점검 가능한 실패 지점을 만들기 때문입니다. 재시작은 동기화에 실패할 수 있습니다. 애플리케이션은 낡은 정보를 남길 수 있습니다. 레지스트리는 허용 맥락을 잘못 기술할 수 있습니다. 수명 필드는 손상될 수 있습니다. 파서는 허용되지 않는 TLV를 잘못 처리할 수 있습니다. 송신자는 수신자 용량을 초과할 수 있습니다. 각 실패에는 일반적인 회복탄력성 요구보다 더 정밀한 해법이 있습니다.
이것은 또한 옹호가 증거를 대체하는 것을 막습니다. 메커니즘을 우아하다고 부르는 것이 트래픽이 보존되었음을 증명하지는 않습니다. 정보를 범용이라고 부르는 것이 제한 없이 플러딩해도 안전하다는 뜻이 아닙니다. 코드포인트가 할당되었다고 부르는 것이 그 실시간 사용을 검증하지는 않습니다. 변경이 하위 호환된다고 부르는 것이 모든 혼합 배포가 올바르게 동작함을 증명하지는 않습니다. 플러딩이 빠르다고 부르는 것이 수렴이 개선되었음을 증명하지는 않습니다. 사양이 가치 있는 이유는 무엇이 점검될 수 있는지를 정의하기 때문이며, 그 레이블이 결과를 결정하기 때문이 아닙니다.
운영자 시사점: 기능만이 아니라 전이를 검증하라
첫 번째 운영자 시사점은 전이를 모니터링하는 것입니다. 재시작 지원은 재시작 요청부터 동기화, 인접 처리, 타이머 완료, 정상 동작 복귀까지 관찰된 시퀀스만큼 중요하지 않습니다. "재시작 가능"만 보여주는 대시보드는 실패한 데이터베이스 동기화나 토폴로지 변화로 무효화된 보존된 인접을 놓칠 수 있습니다.
두 번째 시사점은 낡은 상태 통제를 애플리케이션 설계의 일부로 다루는 것입니다. 범용 링크 상태 정보의 어떤 사용이든 기원자, 복제 동작, 범위, 갱신 주기, 철회 경로를 식별해야 합니다. 운영자는 정보를 생산하는 애플리케이션이나 라우터가 실패한 후 광고가 어떻게 사라지는지 알아야 합니다. 그 답이 없으면 이중화는 거짓 기록의 지속이 될 수 있습니다.
세 번째 시사점은 레지스트리 변경을 추적 가능하게 만드는 것입니다. 구현과 내부 도구는 현재 할당을 소비하고 정의 사양으로의 연결을 보존해야 합니다. 출처 없이 사적 표에 복사된 코드포인트는 그것에 의미를 부여한 맥락을 넘어 살아남을 수 있습니다. TLV가 수용되거나 거부될 때 그 결정은 현재 레지스트리와 RFC 규칙의 관점에서 설명 가능해야 합니다.
네 번째 시사점은 일반 무결성 검사에서 제외된 필드를 주시하는 것입니다. Remaining Lifetime은 LSP가 네트워크를 통과하면서 변경되므로, 변경 불가능한 콘텐츠와 똑같이 보호될 수 없습니다. 그렇다고 그 실패가 무해하지는 않습니다. 구현은 비정상 퍼지, 재생성 속도, 수명 불연속, 관련 플러딩 동작을 노출해야 하며, 유한한 프로토콜 대응이 운영적 가시성과 짝을 이루도록 해야 합니다.
다섯 번째 시사점은 관용적 파싱과 조용한 수용을 구분하는 것입니다. 퍼지가 아닌 PDU에서 허용되지 않는 TLV는 무시되어야 하며 PDU 자체가 거부되어서는 안 됩니다. 퍼지 수용은 켜진 인증 및 기원자 규칙과 레지스트리의 Purge 열을 함께 따릅니다. 두 맥락 모두에서 카운터와 로그는 여전히 중요합니다. 상호운용 가능한 프로토콜 대응이 입력이 기대를 어겼다는 증거를 지워서는 안 되기 때문입니다.
여섯 번째 시사점은 수렴 튜닝이 수신자에서 시작된다는 것입니다. 더 빠른 송신자 타이머는 수신자 큐, 처리, 확인 동작, LAN 팬인, 보수적으로 광고된 매개변수를 기준으로 평가해야 합니다. 테스트에는 최선 경로만이 아니라 확인 손실과 혼합된 수신자 능력도 포함되어야 합니다. 높은 속도는 분산 시스템이 관찰 가능하고 안정적으로 유지될 때만 유용합니다.
여러 질문은 인용된 RFC 기록의 범위 밖에 있습니다. 그것들은 현재 벤더 지원, 기본값, 배포 보급률, 측정된 결과를 확립하지 않습니다. 특정 운영자가 재시작 신호나 빠른 플러딩을 어떻게 설정하는지 보여주지 않습니다. 수명 손상이나 무효 TLV가 얼마나 자주 나타나는지 정량화하지 않습니다. 그 질문에는 현재 구현 문서, 실험실 테스트, 텔레메트리, 네트워크별 증거가 필요합니다.
출처가 지지하는 결론은 더 좁고 더 강력합니다. Ginsberg에게 귀속된 IETF 작업은 IS-IS 상태를 명시적이고, 범위가 지정되고, 유한하고, 복구 가능하게 만들려는 반복되는 노력에 참여합니다. 그 기여는 네트워크가 계속 가용할 것이라는 약속이 아닙니다. 그것은 구현과 운영자가 언제 연속성이 여전히 정당화되는지, 그리고 언제 현재 증거가 다른 행동을 요구하는지 판단할 수 있게 하는 프로토콜 경계들의 집합입니다.
출처
Les Ginsberg의 IETF Datatracker 프로필
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기




