요약

  • RFC 1745, RFC 4271, RFC 8241, RFC 8242에 기인하는 Susan Hares의 기록과 현재 IDR 운영 책임은 일관된 운영 관심을 추적합니다. 라우팅 결정은 입력, 정책 경계, 상태 변경, 충돌 규칙, 철회 조건이 명시적으로 만들어질 때에만 관리 가능해집니다.
  • 그 기록은 요구사항과 공통 동작을 정의할 뿐 보장된 결과를 정의하지 않습니다. IETF 합의, 공동 저자, 구현자, 벤더, 네트워크 운영자가 명세, 소프트웨어, 구성, 배포, 관측, 복구에 대해 각기 다른 권한을 유지하며, 어떤 개인도 BGP나 운영 중인 네트워크가 만드는 결과를 통제하지 않습니다.

분산 시스템을 개인화하지 않고 귀속하기

Susan Hares의 IETF 기록을 읽는 유용한 방식은 전형적인 전기가 아닙니다. 고정된 공개 기록은 더 좁고 더 방어 가능한 명제를 확립합니다. IETF 프로필은 Susan Hares(그곳에서는 Sue Hares로도 등재)를 Inter-Domain Routing Working Group의 의장으로 식별하고, 상당한 수의 라우팅 RFC와 연관시킵니다. 이 분석의 기술적 골격은 네 개 문서가 제공합니다. 1994년 BGP–OSPF 상호작용 명세, 2006년 BGP-4 명세, 그리고 라우팅 시스템에 대한 프로그래밍 가능 인터페이스의 보안과 임시 상태를 다루는 2017년 요구사항 문서 두 건입니다.

귀속이 중요한 이유는 표준 작업이 식별 가능한 사람들에 의해 수행되고, 운영상 선택은 어디에서도 나오지 않기 때문입니다. 그러나 귀속은 소유가 아닙니다. RFC 4271은 Yakov Rekhter, Tony Li, Susan Hares를 편집자로 올립니다. RFC 1745는 Kannan Varadhan, Susan Hares, Yakov Rekhter를 저자로 올립니다. RFC 8241은 Hares, Daniel Migault, Joel Halpern의 저작이며, RFC 8242는 Jeff Haas와 Hares의 저작입니다. 이 문서들은 또한 워킹그룹 논의, 검토자, 이전 프로토콜 작업, 다수의 이름이 밝혀진 참여자의 기여를 인정합니다. 현재 IDR 차터는 Hares를 Keyur Patel, Jeffrey Haas와 함께 의장으로 나열합니다. 이 사실들은 참여와 운영 책임(stewardship)을 확립하지만, 단독 설계라는 이야기를 배제합니다.

이 경계는 BGP에서 특히 중요합니다. 명세는 공통 어휘, 외부에서 보이는 동작, 요구되는 오류 처리를 정의할 수 있습니다. 워킹그룹은 검토와 합의를 통해 그 요구사항을 다듬을 수 있습니다. 구현자는 이를 소프트웨어로 번역하고, 벤더는 소프트웨어를 패키징하며, 운영자는 정책을 선택하고 어디에서 실행할지 결정합니다. 관측되는 도달 가능성은 다수의 독립적으로 통제되는 시스템의 상호작용에 달려 있습니다. 표준 기록은 Hares가 어디에서 선택을 명시적으로 만드는 데 기여했는지 보여줄 수 있지만, 그녀가 모든 경로를 골랐거나 모든 워킹그룹 결과를 이끌었거나 측정된 운영 결과를 초래했다는 것은 보여줄 수 없습니다.

그 한도 내에서 기록은 일관된 운영 논지를 갖습니다. RFC 4271은 수신 정보, 로컬 선택, 발신 광고를 분리합니다. RFC 1745는 외부 라우팅 시스템과 내부 라우팅 시스템이 서로의 정보를 번역할 때 무엇이 잘못될 수 있는지 검토합니다. RFC 8241은 누가 라우팅 상태를 읽거나 변경할 수 있는지, 어떤 종류의 채널을 통해서인지를 제한합니다. RFC 8242는 임시 상태가 무엇을 의미하는지, 작성자들이 어떻게 경합하는지, 무엇이 자동으로 롤백되지 않는지를 정의합니다. 현재 IDR 차터는 BGP의 지속적 유지보수를 범위가 정해진 다자 프로세스 안에 둡니다. 이 문서들 전반에서 제어는 한 사람이 가진 직함이 아니라 결정의 사슬로 보입니다.

RFC 4271: 정책은 경계가 정해진 프로토콜에서 시작한다

RFC 4271은 BGP를 자율 시스템(Autonomous System) 간 라우팅 프로토콜로 묘사하며, 그 1차 기능은 네트워크 도달 가능성 정보를 교환하는 것입니다. 그 정보는 통과한 자율 시스템의 수열을 포함하여, BGP 스피커가 AS 연결성의 뷰를 구성하고 그 수준에서 루프를 가지치기하며 일부 정책을 강제할 수 있게 합니다. “일부”라는 단어가 무게를 갖습니다. 명세는 BGP의 라우팅 정보가 목적지 기반 포워딩을 지원하므로 그 패러다임과 호환되는 정책만 지원할 수 있다고 말합니다. BGP를 보편적 정책 언어로 제시하지 않습니다.

이 경계가 프로토콜을 정직하게 유지합니다. BGP는 도달 가능한 목적지를 경로 속성과 짝짓지만, 경로는 중앙 통제자가 내린 명령이 아닙니다. 피어로부터 받거나 피어를 위해 준비된 정보로, 로컬 정책 아래에서 해석됩니다. 프로토콜은 교환을 위한 공유 구조를 제공하면서 중요한 결정은 각 참여 시스템에 남겨둡니다. 자율 시스템의 정의조차 하나의 기술적 행정 아래에서 일관된 외부 그림을 강조하며, 균일한 내부 기계를 강조하지 않습니다. 하나의 AS는 여러 내부 프로토콜과 메트릭을 사용하면서도 다른 이들에게 일관된 도달 가능성을 제시할 수 있습니다.

명세는 그 원칙을 세 부분의 개념적 분리로 전환합니다. Adj-RIBs-In은 피어로부터 학습한 미처리 라우팅 정보를 담습니다. Loc-RIB은 로컬 스피커가 자신의 정책을 적용한 후 선택된 경로를 담습니다. Adj-RIBs-Out은 특정 피어에게 광고하기 위해 선택된 경로를 조직합니다. 이 분리는 개념적으로 강력하고 운영상은 소박합니다. RFC 4271은 구현이 세 개의 물리적 사본을 유지할 필요가 없다고 명시합니다. 한 구현은 별도 저장소를 쓸 수 있고, 다른 구현은 참조를 갖는 공유 구조를 쓸 수 있습니다. 호환을 유지해야 하는 것은 외부에서 보이는 동작입니다.

개념적 책임과 구현 자유 사이의 이 구분이 Hares의 귀속된 표준 작업의 핵심입니다. 운영자와 구현자에게 결과가 어디에서 왔는지 묻는 공통 방식을 줍니다. 경로가 수신되었는가? 적격했는가? 로컬 정책이 그것을 선호했는가? 다음 홉이 해석 가능했는가? 로컬 사용을 위해 설치되었는가? 이 피어에 대한 발신 세트에 들어가도록 허용되었는가? 이 어휘는 특정 네트워크에 대한 그 질문에 답하지 않지만, 질문을 분리 가능하게 만듭니다.

RFC 4271은 또한 BGP 정보 기반과 포워딩 상태를 구성하는 데 쓰이는 라우팅 테이블을 구분합니다. 라우팅 테이블은 연결됨, 정적, 내부 프로토콜, BGP 경로를 축적할 수 있습니다. 선택된 BGP 경로가 다른 출처를 통해 학습한 경로를 밀어내는지는 문서의 처방 밖에 있는 로컬 정책 결정입니다. 이것은 표준 권한에 대한 결정적 한계입니다. RFC는 선택을 구조화하지만 운영자를 위해 선택을 하지 않습니다.

경로 변경도 마찬가지입니다. 스피커는 프리픽스를 명시적으로 철회하거나, 동일한 도달 가능성 정보에 변경된 속성으로 대체를 광고하거나, 피어링 연결을 닫을 수 있으며, 그 경우 해당 연결에서 교환된 경로가 암묵적으로 제거됩니다. 이것들은 명시적인 상태 변경 메커니즘입니다. 프로토콜 경계에서 제거와 대체를 관측 가능하게 만들지만, 주변의 모든 시스템이 특정 시간 안에 수렴하거나 동일한 대안을 선택할 것을 보장하지 않습니다. 표준은 변경의 문법을 공급할 뿐, 보편적 결과를 공급하지 않습니다.

BGP 결정 프로세스의 세 단계

RFC 4271의 결정 프로세스는 라우팅 정책을 운영 수열로 표현한 가장 명확한 예입니다. Adj-RIBs-In에 저장된 경로를 받아, 로컬 정책 정보 기반의 정책을 적용하고, 로컬 사용을 위한 경로를 선택하며, 광고를 위한 경로를 준비합니다. 이 묘사는 개념적입니다. 소프트웨어는 요구된 기능과 동일한 보이는 동작을 제공하는 한 내부 조직을 그대로 재현할 필요가 없습니다.

1단계는 각 실현 가능 경로에 선호도를 계산합니다. 내부 피어로부터 학습한 경로에 대해 스피커는 LOCAL_PREF를 사용하거나 구성된 정책에서 선호도를 계산할 수 있습니다. 외부 피어로부터 학습한 경로에 대해서는 사전 구성된 정책에서 선호도를 계산하고 그 경로를 부적격으로 선언할 수 있습니다. 적격하다면 그 선호도가 내부 재광고에 사용되는 LOCAL_PREF가 됩니다. 정확한 정책과 계산은 로컬 사안입니다.

명세는 중요한 제약을 더합니다. 한 경로에 대한 선호 함수는 다른 경로의 존재, 부재 또는 경로 속성을 입력으로 사용해서는 안 됩니다. 선호는 먼저 개별적으로 부여되고, 비교가 그 뒤를 따릅니다. 이 분리는 숨은 상호의존을 제한합니다. 운영자 재량을 제거하지 않지만, 재량을 경쟁적 선택 이전의 위치에 둡니다. 예상 밖의 동작을 검토하는 운영자는 경로를 채점한 정책과 나중에 그것을 대안들과 비교한 프로세스를 구별할 수 있습니다.

2단계는 각 목적지에 대해 최적의 적격 경로를 선택하고 Loc-RIB에 설치합니다. 선호는 필요하지만 충분하지 않습니다. NEXT_HOP을 해석할 수 없는 경로는 제외되어야 하고, 설치될 경우 해석 불가능해지는 경로도 그렇습니다. 상호 재귀적 해석은 따라서 포워딩의 사용 가능한 기초가 아닙니다. 다음 홉 도달 가능성이나 그 다음 홉까지의 내부 비용이 바뀌면 선택은 다시 실행되어야 합니다. 해석 불가능한 경로는 Loc-RIB과 라우팅 테이블에서 제거되지만, 다음 홉이 나중에 해석 가능해질 경우에 대비해 Adj-RIBs-In에는 남아 있어야 합니다.

이 동작은 선언된 정책을 실행 중인 상태와 연결합니다. 정책상 바람직해도 현재 도달 가능성에서 사용 불가능한 경로가 있을 수 있습니다. 반대로 사용 가능한 다음 홉이 스스로 정책을 결정하지는 않습니다. 경로는 선호와 해석 가능성 조건을 모두 통과해야 합니다. 명세는 또한 AS 내부의 BGP 스피커가 포워딩 루프를 만드는 상충하는 선택을 하지 않아야 한다고 경고합니다. 일관성은 여기서 추상적 미덕이 아니라 분산된 정보를 로컬 포워딩으로 안전하게 전환하기 위한 조건입니다.

여러 경로가 동등한 선호를 가질 때 RFC 4271은 순서가 정해진 동률 결정 절차를 정의합니다. 경로 길이, 오리진, MULTI_EXIT_DISC의 적격 비교, 외부 학습 대 내부 학습, 다음 홉까지의 내부 비용, BGP 식별자, 피어 주소를 사용해 후보를 점진적으로 좁힙니다. 순서가 중요한 이유는 이후 기준이 이전 기준이 동률을 남길 때만 적용되기 때문입니다. 문서는 내부적으로 다른 알고리즘을 허용하되 묘사된 결과를 산출해야 한다고 요구합니다. 이것 역시 경계가 정해진 구현 자유의 한 형태입니다. 필요하면 메커니즘을 최적화하되 결정 의미론은 보존하십시오.

속성 자체가 서로 다른 정책 범위를 표현합니다. LOCAL_PREF는 내부 피어 사이의 선호도를 전달하며 보통 외부 피어에게는 보내지 않습니다. MULTI_EXIT_DISC는 동일한 인접 AS에 대한 여러 연결 사이에서 사용되는 선택적 비전이적 신호로, 다른 요인이 같을 때 낮은 값이 선호됩니다. NEXT_HOP은 포워딩을 위해 해석할 라우터 주소를 지명합니다. AS_PATH는 라우팅 정보가 통과한 자율 시스템들을 기록합니다. 이 속성 어느 것도 전역 명령이 아닙니다. 각각은 정의된 범위를 가지며, 로컬 구성은 그것이 해석되거나 변환되는 방식에 영향을 줄 수 있습니다.

3단계는 Loc-RIB이 변경된 후 시작됩니다. 구성된 정책에 따라 로컬 선택을 Adj-RIBs-Out으로 처리합니다. 선택된 경로는 특정 피어에 대한 광고에서 제외될 수 있습니다. 정책이 이전에 광고되었던 경로를 새로 제외한다면, 그 경로는 그 피어에게서 철회되어야 합니다. 목적지와 다음 홉이 라우팅 테이블을 통해 적절히 포워딩될 수 없는 한 경로를 발신 세트에 넣을 수 없습니다. 이것은 RFC가 묘사하는 범위 내에서 광고를 현재 포워딩 능력에 묶습니다.

세 번째 단계는 집계와 정보 축소도 허용합니다. 그 메커니즘은 교환되는 라우팅 정보의 양을 줄일 수 있지만 RFC 4271은 트레이드오프를 지적합니다. 정보를 접으면 동일한 정책이 목적지나 경로의 동치류 전반에 적용되므로 정책 제어의 세밀도가 줄어들 수 있습니다. 따라서 효율은 공짜가 아닙니다. 집계 결정은 하류 시스템이 무엇을 구별할 수 있는지를 바꾸며, 집계의 속성은 필수 경로 정보와 루프 회피 성질을 보존하도록 설계된 규칙을 따라야 합니다.

종합하면, 이 단계들은 정책을 파이프라인으로 검사 가능하게 만듭니다. 수신은 수용이 아닙니다. 수용은 선호가 아닙니다. 선호는 해석 가능성이 아닙니다. 로컬 선택은 발신 승인이 아닙니다. 광고는 모든 곳에서의 포워딩 증명이 아닙니다. 이 사슬이 RFC 4271의 편집자 중 한 사람으로서 Hares의 역할에 대한 본 기사의 핵심 운영 독해입니다. 문서는 단계와 경계를 명시적으로 만들면서 실제 정책 값, 소프트웨어 설계, 네트워크 결과는 그것들의 적절한 소유자에게 남깁니다.

세션 상태와 개념적 정밀성의 한계

RFC 4271의 유한 상태 기계는 두 번째 종류의 명시성을 더합니다. 이벤트, 타이머, 연결 상태, 액션을 통해 피어 운영을 정의합니다. 표준은 구성된 각 피어링에 대해 별도의 상태 기계를 요구하며 Idle, Connect, Active, OpenSent, OpenConfirm, Established를 포함한 상태들 사이의 진행을 묘사합니다. UPDATE 메시지는 Established에서만 유효합니다. 세션 속성은 상태, 연결 재시도, 홀드 타임, keepalive 동작을 추적하고, 선택적 속성은 지연된 열기나 피어 진동 댐핑 같은 기능을 지원합니다.

여기서도 RFC는 이 구조들을 개념적이라고 부릅니다. 동일한 기능과 보이는 동작을 제공한다면 구현은 내부적으로 이를 재현할 필요가 없습니다. 그 단서는 표준 다이어그램을 실행 중인 소프트웨어와 혼동하는 일을 피하게 합니다. 문서가 공급하는 것은 자원이 언제 초기화되고, 연결이 언제 시도되고, 메시지가 언제 수용되고, 세션이 언제 더 안전한 상태로 돌아가는지에 대한 공통 설명입니다.

운영 가치는 명시적 전이에 있습니다. 연결은 단순히 “올라온” 상태나 “내려간” 상태가 아니라, 행정 이벤트, 전송 이벤트, 프로토콜 메시지, 타이머에 반응하며 단계들을 지나갑니다. 경로 업데이트는 바이트가 도착할 때마다 유효하지 않습니다. 확립된 프로토콜 관계에 묶입니다. 이것은 세션 상태를 제어 경계의 일부로 만듭니다. 그러나 RFC는 초기화 세부와 그에 연관된 자원 처리가 구현의 정책 부분에 달려 있다고도 말합니다. 표준은 외부적으로 중요한 동작을 정의하되 모든 내부 선택에 대한 권위를 주장하지 않습니다.

RFC 1745: 외부 라우팅과 내부 라우팅 사이의 번역

RFC 1745는 BGP 경로들 사이의 선택보다 더 어려운 경계를 다룹니다. 자율 시스템 내부에서 외부 라우팅 프로토콜과 OSPF 사이의 상호작용입니다. Kannan Varadhan, Susan Hares, Yakov Rekhter가 공동 저술한 이 문서는 외부에서 BGP-4나 IDRP를, 내부에서 OSPF를 실행하는 자율 시스템 경계 라우터(ASBR)에 대한 기준을 명세합니다. 그 주제는 단순한 데이터 변환이 아닙니다. 서로 다른 속성, 메트릭, 결정 규칙을 쓰는 두 라우팅 시스템 사이에서 의미를 보존하는 일입니다.

명세는 조심스러운 기본값에서 시작합니다. OSPF 정보를 BGP로 내보낼 때 관리자는 주소-마스크 쌍의 세밀도와 OSPF 외부 경로 태그 및 그 하위 필드로 필터링할 수 있어야 합니다. 기본값은 OSPF 경로를 전혀 내보내지 않는 것입니다. 하나의 설정은 내부 및 영역 간 정보의 광범위한 내보내기를 허용할 수 있지만, OSPF 외부 경로는 명시적으로 구성되지 않는 한 내보내서는 안 됩니다. BGP 정보를 OSPF로 들여올 때 기본값 역시 아무것도 들여오지 않는 것이며, 관리자는 원하는 목적지를 선택해야 합니다. 다만 구현은 명시적인 import-all 옵션을 제공할 수 있습니다.

이 기본값들은 운영 판단을 드러냅니다. 프로토콜 경계는 fail-closed해야 합니다. 자동 재배포라는 대안은 한 범위를 위한 정보를 다른 범위에서 광고되는 도달 가능성으로 바꿔놓을 수 있습니다. RFC 1745는 선택적 구성이 모든 실패를 막는다고 말하지 않습니다. 더 안전한 시작점과 구현이 노출해야 하는 제어를 정의합니다.

문서는 또한 내보내기 프로세스가 실제 도달 가능성을 추적할 것을 요구합니다. ASBR은 적어도 한 구성원이 OSPF를 통해 도달 가능해지면 목적지 집합을 한번 광고할 수 있지만, 아무것도 도달하지 않으면 중단해야 합니다. 비연속 마스크를 내보내서는 안 됩니다. 관리자는 내보낸 경로에 MULTI_EXIT_DISC를 설정할 수 있어야 하며, 생략이 기본값입니다. 구현은 또한 내부 도달 가능성을 학습한 시점과 외부에 광고하는 시점 사이에 구성 가능한 지연을 제공해야 하며, 기본값은 0입니다. 이것들은 타이밍, 세밀도, 도달 가능성의 증거에 관한 선택이지 측정된 수렴에 대한 주장이 아닙니다.

반대 방향의 들여오기는 의미론적 불일치를 제시합니다. OSPF는 낮은 비용을 선호하고, BGP LOCAL_PREF는 높은 값을 선호합니다. 수치 범위도 다릅니다. 따라서 RFC 1745는 LOCAL_PREF로 OSPF 비용을 만드는 일이 극도의 주의를 요한다고 경고합니다. 더하여, 문서가 묘사하듯 ASBR들이 외부·내부 정보를 상호 연관시킬 때 OSPF 비용이 선택된 경계 경로를 결정하는 동안 LOCAL_PREF는 그 특정 선택을 더 이상 통제하지 않습니다. 한 시스템에서 선호를 표현하는 값은 방향, 범위, 선택이 일어나는 지점을 고려하지 않은 채 다른 시스템에 맹목적으로 복사될 수 없습니다.

명세는 기본 도달 가능성을 비슷하게 조심스럽게 다룹니다. ASBR은 명시적으로 구성되지 않는 한 기본 목적지를 OSPF에 주입해서는 안 됩니다. 선택된 목적지-경로 튜플에 기반한 조건부 방법을 제시하되, 조건·비용·유형을 고르는 책임은 운영자에게 남습니다. 기본 경로는 많은 가능성을 하나의 명령으로 압축합니다. 그 생성을 명시적으로 만드는 것이 우연한 권한을 제한합니다.

메타데이터, 등비용 경로, 문서화된 루프

RFC 1745는 OSPF 태그를 사용해 경로가 프로토콜 경계를 넘을 때 ASBR이 BGP 오리진과 경로 정보를 재구성할 수 있을 만큼의 맥락을 담습니다. 태그는 자동 생성되었는지, 경로 정보가 완전한지, 축약된 경로 길이 등급, 자율 시스템 값을 표시할 수 있습니다. 수동 구성 태그도 가능하지만, 문서는 그런 태그에서 목적지 집합의 어떤 특성도 추론되어서는 안 된다고 경고합니다. 자동 생성 조합 중 일부는 재구성된 속성으로 내보내기를 허용하고, 다른 것들은 경로 정보가 잘렸거나 경로가 이미 BGP에서 왔기 때문에 그 경로가 절대 BGP로 다시 내보내지지 않아야 함을 요구합니다.

이것은 넓은 운영 의미에서의 보안 메타데이터입니다. 암호학적 증명이 아니라 수신 프로세스가 무엇을 안전하게 할 수 있는지 제약하는 정보입니다. 그 가치는 정확한 설정과 올바른 해석에 달려 있습니다. RFC 1745는 정확한 태그를 최소 구현의 일부로 만들고, 잘린 경로 사례는 재수출되어서는 안 된다고 말합니다. 따라서 태그는 장식적 주석이 아니라 출처와 재광고에 관한 경계 결정을 실어 나릅니다.

같은 관심이 OSPF 포워딩 주소와 BGP NEXT_HOP의 관계에도 나타납니다. BGP 목적지를 OSPF로 들여올 때 ASBR은 BGP 다음 홉 값을 OSPF의 포워딩 주소 필드에 넣어야 합니다. 내부 목적지를 내보낼 때는 조건이 허락한다면 다른 도달 가능한 라우터를 BGP 다음 홉으로 지명할 수 있으며, 이는 번역 ASBR을 통한 불필요한 추가 홉을 피합니다. 이 규칙은 제어 정보를 의도된 포워딩 경로에 맞추지만, 토폴로지와 도달 가능성에 조건부로 남습니다.

문서의 부록은 가장 날카로운 실패 사례를 제공합니다. 두 자율 시스템이 각각 일관되게 OSPF를 실행하고 각 경계 라우터가 자신의 로컬 규칙을 따르더라도, 그 경계를 가로지르는 등비용 경로가 안정적인 포워딩 루프를 만들 수 있습니다. 문제는 한 프로토콜이 명백히 무효한 정보를 내보내는 것이 아닙니다. 각 시스템의 로컬로 일관된 그림이 다중 경로 맥락의 일부를 생략하여 결합된 결과가 루프를 이루는 것입니다.

RFC 1745의 대응은 관련 경계 라우터들이 광고 전에 등비용 출구를 통해 이용 가능한 경로들을 하나의 집합으로 병합할 것을 요구하는 것입니다. 이것은 선택을 제약하여 한 도메인이 상충하는 다중 경로 조합을 유지하는 것을 멈추게 합니다. 부록은 어떤 도메인이 다중 경로를 잃는지는 비결정적이라고 말합니다. 그 세부가 중요합니다. 요구는 안전하지 않은 구조를 겨냥하되 모든 하류 선택을 지시하는 척하지 않습니다.

따라서 이 초기 문서는 독특한 운영 교훈을 남깁니다. 올바른 구성요소들이 정보가 제어 도메인을 가로지를 때 잘못된 포워딩 결과로 결합될 수 있습니다. 필터, 태그, 식별자, 포워딩 주소, 경로 집계는 그 경계를 가로질러 제약을 보존하는 방법입니다. 그것들은 모든 구현이 규칙을 채택했거나 모든 네트워크가 실패를 피했다는 증거가 아닙니다. 표준은 실패 모드와 요구되는 대응을 식별합니다. 특정 시스템에서 무슨 일이 있었는지는 오직 실행 중인 동작만이 확립할 수 있습니다.

RFC 8241: 프로그래밍 가능한 제어에는 권한 경계가 필요하다

2017년경 Hares의 귀속된 작업이 다루는 문제는 라우팅 프로토콜 사이의 교환에서 라우팅 시스템 상태에 대한 프로그래밍 접근으로 옮겨갔습니다. RFC 8241은 Susan Hares, Daniel Migault, Joel Halpern이 저술한 것으로, Interface to the Routing System(I2RS)에 대한 보안 관련 요구사항을 제시합니다. I2RS는 클라이언트가 라우팅 시스템에 연관된 에이전트를 통해 정보와 상태를 읽고 쓰도록 허용합니다. 그 능력은 직접적인 제어 표면을 만들므로, 문서는 메시지가 통상적으로 유효한지뿐 아니라 누가 보냈는지, 그 신원이 무엇을 할 수 있는지, 메시지가 어떻게 보호되는지, 경쟁하는 작성자들이 어떻게 해결되는지를 묻습니다.

RFC 8241은 각 기능을 새로 발명하기보다 보안 전송 기능에 의존합니다. 기밀성, 데이터 무결성, 상호 피어 인증, 리플레이 방지를 보호된 통신에 요구되는 기능으로 식별하고, 키 관리는 전송에 적합한 것으로 합니다. 또한 기존의 인증·인가·계정화(AAA) 메커니즘이 그들 자신이 보호된 전송을 사용할 때, 신원과 역할 정보를 그 메커니즘으로 배포하는 것을 허용합니다. 재사용은 설계 결정입니다. 기존 관리·전송 능력으로 상위 인터페이스를 만들고, 그들이 결여한 라우팅 고유의 맥락을 더하십시오.

신원은 양쪽 모두에서 요구됩니다. 클라이언트와 에이전트는 각각 신원과 적어도 하나의 고유 식별자를 가져야 하고, 프로토콜은 상호 식별을 위해 그 식별자를 사용해야 합니다. 클라이언트 요청을 받는 에이전트는 클라이언트 신원이 유효한지 확인해야 합니다. 보호된 메시지를 받는 클라이언트도 에이전트 식별자를 확인해야 합니다. 결정적으로 RFC 8241은 검증을 전송 세션의 존재가 아니라 메시지 처리 위치에 둡니다. 채널은 여러 세션에 걸치거나 닫혔다 다시 열릴 수 있습니다. 인가는 액션에 연관된 신원을 따라야 합니다.

문서는 그다음 신원을 역할과 분리합니다. 유효한 클라이언트가 자동으로 모든 항목을 읽거나 쓸 수 있는 것은 아닙니다. 범위는 읽기, 쓰기, 이벤트에 대한 신원과 연관된 역할에 달려 있습니다. 역할 기반 제어는 권한을 그룹 전반에서 관리 가능하게 만드는 것이고, 클라이언트와 에이전트 사이에 여러 전송 연결이 존재할 때에도 계속 작동해야 합니다. 이것이 경계가 정해진 권한입니다. 인증은 누가 있는지를 말하고, 인가는 그 당사자가 무엇을 할 수 있는지를 말합니다.

다중 헤드 제어는 또 하나의 경계를 더합니다. 여러 클라이언트가 하나의 에이전트에 연결할 수 있습니다. 배포는 쓰기 범위를 조율하여 경합을 피해야 하지만, 아키텍처는 조율이 실패할 때 결정론적 응답도 필요로 합니다. 각 클라이언트 식별자는 하나의 우선순위와 연관됩니다. 클라이언트들이 동일한 쓰기 가능 값에 경합할 때 더 높은 우선순위 클라이언트가 허가를 받고 다른 쪽은 오류를 받습니다. 우선순위는 올바름의 증명이 아니며, 한 클라이언트를 보편적 통제자로 만들지 않습니다. 정의된 범위 안에서의 충돌 해결 규칙입니다.

RFC 8241은 또한 클라이언트를 통해 작동하는 애플리케이션을 위한 불투명한 보조 식별자를 도입합니다. 하나의 클라이언트가 여러 애플리케이션을 서비스할 수 있으므로, 보조 값은 어떤 애플리케이션이 액션을 개시했는지 추적에 도움을 줄 수 있습니다. 클라이언트가 이를 주장하는 것은 신뢰되며, 추적 가능성은 완전한 보안 감사 추적과 명시적으로 구분됩니다. 이것은 가치 있는 한계입니다. 귀속 메타데이터는 조사를 지원할 수 있지만, 액션이 인가되었고 올바르며 성공했다는 자체 검증 증거가 아닙니다.

문서는 좁게 제약된 비보호 채널을 허용하되, 명시적으로 비기밀로 표시된 정보에 한해서만, 그리고 읽기나 알림 범위에 한해서만입니다. 쓰기나 이벤트 스트림 구성에는 사용할 수 없습니다. 보호된 전송은 에이전트와 쓰기·이벤트 구성을 하는 클라이언트에게 구현 필수이며, 그 액션에 대해서는 사용 필수입니다. 비보호 경로는 사람을 식별하는 정보를 담아서는 안 됩니다. 운영자는 여전히 비기밀로 표시된 데이터에 대해 보호된 전송을 선택할 수 있습니다.

이 비대칭은 의도적입니다. 공개 텔레메트리를 읽는 것은 라우팅 상태를 변경하는 것과 같은 권한을 부여받지 않습니다. 그 경우에도 무결성은 관심사로 남습니다. 보호 없이 수신한 데이터가 의심스러워지면 클라이언트는 그 채널을 끊어야 합니다. 쓰기에 대해 표준은 기밀성, 무결성, 실용적 리플레이 방지, 적합한 키 제어, 추적 가능성을 요구합니다. 요구사항은 프로그래밍 가능성 주위의 최소 보안 경계를 정의하지만, 어떤 특정 구현이나 배포를 안전하다고 인증하지는 않습니다.

RFC 8242: 임시 상태, 충돌, 자동 롤백의 부재

Jef Haas와 Susan Hares가 저술한 RFC 8242는 “휘발성(ephemeral)”이라는 매력적인 라벨을 명시적 상태 의미론으로 전환합니다. 임시 상태는 라우팅 장치나 인터페이스를 다루는 소프트웨어의 재부팅을 살아남지 않는 상태입니다. 복원되어야 한다면 복원은 클라이언트에서 에이전트로 재생되는 액션을 통해서만 이루어져야 합니다. 문서는 임시 라우팅 상태가 기저 관리 프로토콜이 실행 구성을 유지할 수 있으므로 영속화에 복사되어서는 안 된다는 점을 강조합니다.

이 규칙은 깔끔한 복구 경계를 확립합니다. 재시작 후 장치는 인가 맥락이 더 이상 존재하지 않을 수 있는 제어 상태를 조용히 부활시키지 않습니다. 클라이언트가 재생할지 결정해야 합니다. 이것은 운영 의무를 만듭니다. 임시 상태에 의존하는 컨트롤러는 원하는 액션의 목록과 손실 후 그것들을 조율하는 방법이 필요합니다. RFC 8242는 의미론을 진술하지만 어떤 제품이나 운영자가 그 조율을 구현했다고 주장하지 않습니다.

제약은 방향성을 갖습니다. 영속 상태는 참조된 상태가 사라질 수 있으므로 검증을 위해 임시 상태를 참조해서는 안 됩니다. 임시 상태는 빠르게 변하는 항목을 포함한 운영 상태에 의존할 수 있고, 비휘발성 구성이나 운영 상태도 참조할 수 있습니다. 제약은 임시 상태가 쓰여질 때 검사되며, 이후 변경이 그것들을 무효로 만들면 에이전트는 클라이언트에 알려야 합니다. 설계는 유효성이 수용 후에도 부패할 수 있음을 인정합니다.

이 구분은 임시 값이 내구성 있는 구성의 보이지 않는 기초가 되는 것을 막습니다. 또한 모니터링을 제어의 일부로 만듭니다. 전제조건이 바뀔 수 있을 때 성공적인 쓰기는 책임의 끝이 아닙니다. 알림은 클라이언트에 재평가 기회를 주지만 자동 수리나 특정 결과를 보장하지 않습니다.

RFC 8242는 다중 클라이언트 우선순위 규칙을 확장합니다. 데이터 노드는 클라이언트 신원을 유지해야 하고, 쓰기 시점의 유효 우선순위를 유지할 수 있습니다. 충돌은 우선순위가 해결하더라도 오류입니다. 더 높은 우선순위 클라이언트가 다른 클라이언트가 소유한 노드를 바꾸면 원래 클라이언트는 알림을 받아야 하고 자신의 상태를 수리해야 할 수 있습니다. 동등 우선순위 작성자에 대해서는 프로토콜이 먼저 업데이트가 이기는 방식이나 진동을 막는 다른 접근 같은 결정론적 메커니즘을 제공해야 합니다.

핵심 단어는 benevolent가 아니라 결정론적입니다. 우선순위는 승자를 고르지만 이긴 값이 더 안전하다는 증명이 아닙니다. 선작성자 동작은 끝없는 뒤집기를 막지만 첫 쓰기의 의도를 검증하지 않습니다. 표준은 이 질문들을 분리하여 운영자가 충돌 기제를 정책 올바름과 혼동하지 않고 추론할 수 있게 합니다.

로컬 구성도 같은 경합에 참여합니다. RFC 8242는 로컬 구성이 클라이언트 우선순위와 비교 가능한 우선순위를 갖도록 요구하여, 구현이 로컬 변경과 임시 변경 중 어느 쪽이 우선하는지 결정할 수 있게 합니다. 이것은 흔히 숨겨진 충돌을 보이게 만듭니다. 자동화 제어와 로컬 제어는 동일한 상태에 닿을 때 독립적인 평면이 아닙니다. 유용한 구현은 어느 권한이 이기는지, 그리고 지는 쪽이 어떻게 변경을 알게 되는지를 정의해야 합니다.

문서의 롤백 처리도 똑같이 직접적입니다. I2RS 아키텍처는 다중 메시지 원자성과 롤백 메커니즘을 포함하지 않으며, 구현은 그것들을 요구해서는 안 됩니다. 여러 연산을 담은 하나의 메시지 안에서, 한 연산의 오류는 이후 연산을 멈추게 하거나 이전 연산을 되돌려서는 안 됩니다. 메시지들 사이에서는 오류 처리가 잘못된 임시 상태를 삽입해서는 안 됩니다. 이것은 복구를 무시하라는 권고가 아닙니다. 인터페이스가 약속하지 않는 트랜잭션 의미론을 가정하지 말라는 경고입니다.

운영자에게 그것은 다중 연산 변경이 부분적으로 적용될 수 있음을 의미합니다. 안전한 사용에는 개별적으로 평가 가능한 액션, 의존성에 대한 인식, 보장된 프로토콜 동작 밖의 명시적 보상 전략이 필요합니다. 컨트롤러는 실패한 이후 연산이 이전 상태를 복원했다고 추론해서는 안 됩니다. RFC 8242는 이 계층에서 롤백의 부재를 정의함으로써 롤백 동작을 명시적으로 만듭니다.

문서는 제약된 자원도 다룹니다. 구독, 추적, 원격 프로시저 호출, 기타 메커니즘은 지속 불가능한 자원을 소모할 수 있으므로, 구현은 우선순위화나 속도 제한 같은 작업 축소(work shedding)를 지원해야 합니다. 임시 제어는 따라서 신원과 우선순위뿐 아니라 장치의 작업 처리 능력으로도 제한됩니다. 스트레스 아래에서 시스템은 낮은 우선순위 활동을 버리거나 미루어야 할 수 있습니다. 다시 한번, 이것은 어떤 특정 장치가 어떻게 행동하는지에 대한 증거가 아니라 요구사항 프레임워크입니다.

현재 IDR 운영 책임: 범위가 정해진 유지보수

현재 IDR 차터는 역사적 RFC 기록을 지속적인 운영 책임과 연결합니다. 워킹그룹을 활동 중으로 식별하고 Sue Hares, Keyur Patel, Jeffrey Haas를 의장으로 지명합니다. 1차 목적은 인터넷 위의 IPv4와 IPv6에 대한 표준 인터도메인 라우팅 프로토콜로서 BGP를 개발·유지하는 것입니다. 명시된 범위에는 메시지 처리, BGP 고유의 전송, 세션 관리, 이웃 유한 상태 기계, 경로 선택, 속성, 다음 홉 해석, 능력 신호, 경로 필터링 및 제약 메커니즘, 경로 리플렉터 운영, 재시작 절차, 선정된 보안 확장이 포함됩니다.

그 목록은 넓지만, 차터는 경계도 그립니다. 인접 영역의 작업은 다른 워킹그룹에 속하거나 그들과 조율되어야 합니다. 차터는 BGP를 다루는 모든 제안의 자동적 홈이 IDR은 아니라고 말합니다. 새로운 영역은 입증된 관심, 충분한 전문성, 잠재적으로 재차터링을 요구합니다. 다른 그룹의 요구사항에서 비롯된 명세는 그 그룹과의 조율 속에서 성숙해야 합니다. 워킹그룹의 1차 초점는 제한된 예외를 조건으로 일반적 사용 사례나 아키텍처 문서가 아닌 Standards Track BGP 명세입니다.

차터는 또한 실행 코드 제약을 기록합니다. YANG 모듈을 제외한 프로토콜 명세는 출판으로 진전되기 전 최소 두 개의 독립 구현을 요구하는 오랜 정책을 따릅니다. 그 정책은 광범위한 채택이나 운영 성공을 증명하지 않습니다. 명세 진전을 문장만이 아니라 독립 구현 증거와 연결합니다.

의장은 이 과정을 조직하는 데 도움을 줍니다. 의장은 그 결과를 소유하지 않습니다. 합의에는 참여자, 문서 저자, 검토자, 에어리어 리더십, 구현자, 운영자의 피드백이 관여합니다. 차터의 구조는 RFC들에서 발견되는 동일한 제어 교훈을 강화합니다. 책임은 분산되고, 범위는 명시적이며, 진전은 하나 이상의 구현으로부터의 증거에 달려 있습니다.

요구사항, 대안, 해소되지 않은 운영자 질문

네 RFC를 통틀어 되풀이되는 대안은 암묵적 제어 대 명시적 제어입니다. RFC 4271은 경로 선택을 하나의 불투명한 계산으로 다룰 수도 있었습니다. 대신 선호, 선택, 전파를 분리했습니다. RFC 1745는 BGP와 OSPF 사이의 재배포를 가정할 수도 있었습니다. 대신 기본값을 교환 없음으로 두고 필터와 메타데이터를 요구했습니다. RFC 8241은 연결된 클라이언트를 신뢰할 수 있다고 다룰 수도 있었습니다. 대신 전송, 신원, 역할, 범위, 우선순위를 분리했습니다. RFC 8242는 임시 상태와 롤백을 애매하게 둘 수도 있었습니다. 대신 비지속성, 충돌 동작, 비원자적 연산을 정의했습니다.

각 선택에는 비용이 있습니다. 분리된 단계는 구현에 일관된 외부 동작을, 운영자에게 단일한 “최적 경로” 라벨 이상의 이해를 요구합니다. fail-closed 재배포는 의도적인 구성을 요구합니다. 보호된 제어 채널은 신원과 키 관리를 요구합니다. 클라이언트 우선순위는 거버넌스를 요구합니다. 어느 클라이언트가 어느 우선순위를 받는지, 로컬 변경이 어떻게 비교되는지 누군가가 결정해야 합니다. 비지속 상태는 재생과 조율 논리를 요구합니다. 표준은 이 의무들을 식별하지만 모든 배포가 그것들을 수용하고 이행한다는 것을 보여주지는 않습니다.

그것들은 또한 오직 로컬 증거만이 답할 수 있는 질문을 남깁니다. 어느 정책이 경로를 부적격으로 만들었는가? 어떤 수신 경로가 보관되었고 어떤 것이 광고되었는가? 구현은 개념적 정보 기반을 어떻게 노출하는가? 다음 홉이 바뀌었을 때 선택이 요구대로 다시 실행되었는가? 경계에서 어느 OSPF 태그와 필터가 구성되었는가? 임시 쓰기가 올바른 신원과 역할에 묶여 있었는가? 제약이 나중에 실패했다면 클라이언트는 알림을 받았는가? 부분적인 다중 연산 변경 후 어떤 보상 액션이 일어났는가? 재시작 후 어느 상태가 의도적으로 재생되었는가?

이것들은 운영자 질문이며, 개인 표준 기여자가 원격으로 닫을 수 있는 공백이 아닙니다. 답하려면 구현 문서, 구성, 로그, 현재 라우팅 상태, 패킷 포워딩 관측, 통제된 테스트가 필요합니다. 표준 기록은 의도된 동작과 책임 경계의 증거입니다. 실행 중인 시스템은 실제 동작의 증거를 제공합니다.

따라서 Susan Hares의 귀속된 기여는 가독성(legibility)을 향한 작업으로 가장 잘 이해됩니다. 문서들은 정책 입력, 상태 전이, 권한 경계, 복구 가정을 명명하고 검사하기 쉽게 만듭니다. 그것은 결과적으로 중요하지만 개인적 제어는 아닙니다. BGP는 로컬 정책과 다수의 독립 네트워크가 만든 분산 프로토콜로 남습니다. IETF 합의는 집합적으로 남습니다. 구현은 저자와 벤더의 책임으로 남습니다. 네트워크 결과는 구성, 토폴로지, 트래픽, 실패, 운영자 액션에 따라 달라집니다.

출처

  1. Susan Hares의 IETF Datatracker 프로필
  2. RFC 4271: A Border Gateway Protocol 4 (BGP-4)
  3. RFC 1745: BGP4/IDRP for IP—OSPF Interaction
  4. RFC 8241: I2RS 보안 관련 요구사항
  5. RFC 8242: I2RS 임시 상태 요구사항
  6. IETF Inter-Domain Routing Working Group 차터 writeup