요약

  • ThousandEyes는 2021년 11월 8일과 9일에 발생한 두 건의 서로 다른 컴캐스트 장애를 보고했다. 첫 번째 장애는 11월 8일 태평양 시간 기준 밤 9시 44분경 시작해 밤 10시 48분경 종료되었다. 두 번째 장애는 11월 9일 새벽 5시 5분경 시작해 6시 15분경 종료되었다.[1]

  • 첫 번째 사건 동안 외부 테스트는 컴캐스트의 서니베일 코어를 통과하는 경로에서 패킷 손실을 보였다. 처음에는 다른 경로를 사용하던 일부 트래픽은 계속 성공하다가, 서니베일로 재라우팅된 뒤 실패했다. 이 순서는 관측된 전달 경로에 대한 증거이며, 컴캐스트 내부 토폴로지나 설정 기록의 전체가 아니다.[1]

  • 두 번째 사건은 관측된 영향 범위가 더 넓었다. ThousandEyes는 미국 중부·동부의 일부 트래픽이 종단점이 캘리포니아에서 멀리 떨어져 있음에도 일시적으로 서니베일 쪽으로 향했다고 보고했다. 일부 경로는 전체 손실과 정상 접속 사이를 오가는 양상을 보였으며, 분석은 이를 컨트롤 플레인 혼잡(churn)과 관련될 수 있는 동작으로 기술했다.[1][3]

  • 이후 ThousandEyes의 후속 검토는 이번 사건을 라우팅 테이블 한도가 부주의하게 초과된 데 기인한 것으로 돌렸다.[2] 공개 자료는 정확한 장비, 테이블, 설정된 임계치, 소프트웨어 동작, 명령, 변경 담당자, 공급사 또는 승인 절차를 밝히지 않는다. 따라서 이 한도 설명은 귀속된 주장으로 남아 있어야 하며, 컴캐스트의 완전한 포스트모텀으로 제시되어서는 안 된다.

  • 라우팅 테이블 한도는 책임성 통제이다. 운영자는 테이블 점유율, 증가율, 예비 여유분, 알림 임계치, 실패 동작, 복구를 측정할 수 있기 때문이다. 이런 측정이 컴캐스트 내부에 존재했는지, 또는 효과적이었는지는 고정된 출처가 공개하지 않는다.

  • 재라우팅이 항상 독립적인 경로를 만들지는 않았다. 장애가 난 서니베일 코어로 우회된 관측 트래픽도 함께 실패했다. 따라서 연속성은 또 하나의 경로 계산이 존재하느냐가 아니라 장애 영역의 분리에 달려 있다.[1]

  • AS7922에 대한 ARIN의 RDAP 기록은 네트워크 자원 귀속 맥락을 제공한다.[9] 이는 컴캐스트 라우터에 설치된 실시간 경로, 내부 루트 리플렉터 상태, 토폴로지, 테이블 사용률, 특정 패킷의 전달 결과를 알려주지 않는다.

  • IETF 문서들은 BGP 동작, 수렴, 경로 반영, 점진적 변경, 장애 감지를 설명한다.[10]-[20] 이 문서들은 통제 어휘와 이후 또는 일반적인 설계 맥락을 제공한다. 그러나 2021년 11월 컴캐스트가 어떤 메커니즘을 배치했는지 증명하지 못하며, 소급적 과원 판정도 아니다.

  • FCC의 장애 보고 규칙은 기준을 충족하는 통신 장애에 대한 책임성 기록을 확립한다.[7][8] 이 글에서 사용된 공개 자료는 이번 사건에 대한 컴캐스트의 기밀 제출서를 공개하지 않는다. 보고 의무는 공개 기술 포스트모텀으로 다뤄질 수 없다.

  • 증거는 측정 가능한 운영 결론을 지지하며, 비난을 지지하지 않는다. 컴캐스트는 내부 라우팅 용량, 토폴로지, 알림, 변경 절차, 이용자 소통, 복구를 통제했다. 외부 관측자는 자신의 측정 방법을 통제했다. 규제자는 보고 요건을 통제했다. 이용 가능한 기록은 고의, 과실, 법적 책임, 개인의 책임을 입증하지 않는다.

책임성의 질문

2021년 11월의 사건들이 중요한 이유는 인터넷이 추상적인 구름으로서 실패하지 않았기 때문이다. 특정 트래픽 경로가 전달을 멈췄고, 일부 대체 계산이 같은 문제의 코어로 트래픽을 보냈으며, 네트워크 상태가 바뀐 뒤 서비스가 돌아왔다. 이는 관측 가능한 운영 순서다. 이는 대형 사업자가 장애를 겪어도 되느냐를 묻는 것보다 더 좁고 유용한 책임성 질문을 만든다.

그 질문은 라우팅 테이블 용량과 장애 영역 동작을 지배한 통제가 사건 이전에 검증 가능했는지 여부다. 사업자는 장비나 프로세스가 지원하는 경로 수를 알 수 있다. 현재 점유율, 상태 증가율, 수렴을 위해 확보한 용량, 경고 및 한도에서의 동작, 중복 컨트롤 요소가 같은 상한을 공유하는지 여부를 알 수 있다. 한 노드나 지역의 실패가 트래픽을 진정으로 독립적인 경로로 보내는지 검증할 수 있다. 알림이 언제 발생했고, 누가 대응했으며, 무엇이 바뀌었고, 전달이 어떻게 회복했는지 보여주는 증거를 보존할 수 있다.

공개 증거는 이런 질문들에 대한 컴캐스트의 답을 보여주지 않는다. ThousandEyes는 자체 관측 지점에서의 외부 관측을 제공했고 이후 사건을 라우팅 테이블 한도로 돌렸다.[1][2] 컴캐스트의 설정 아카이브, 내부 텔레메트리, 승인 기록, 전체 인시던트 검토를 공개하지 않았다. 컴캐스트의 아키텍처 페이지는 크고 분산된 네트워크를 기술하지만, 이 두 사건의 포스트모텀으로 작성된 것은 아니다.[5][6] 따라서 책임성 분석은 관측 가능한 것과 운영자의 증거 경계 안에 남아 있는 것을 구분해야 한다.

이 구분은 분석을 포기할 이유가 아니라 책임의 올바른 단위를 정의한다. 컴캐스트는 한도에 도달하고 복구가 실행된 내부 시스템을 통제했다. ThousandEyes는 자신의 측정과 해석을 통제했으며, 컴캐스트의 라우터는 통제하지 않았다. ARIN은 AS7922 등록 기록의 정확성과 가용성을 통제했으며, 서니베일 코어에 설치된 경로는 통제하지 않았다.[9] FCC는 보고 요건과 접근 규칙을 통제했으며, 실시간 전달 결정은 통제하지 않았다.[7][8]

그 결과 나오는 명제는 실용적이다. 용량, 토폴로지, 복구가 실행 중인 시스템에서 입증될 수 있을 때만 연속성 주장은 신뢰할 수 있다. 설계도는 여러 노드를 보여줄 수 있다. 라우팅 프로토콜은 여러 경로를 계산할 수 있다. 레지스트리는 자율 시스템을 정확히 식별할 수 있다. 그러나 그 중 어떤 사실 하나만으로는, 한도 도달 시 트래픽이 공통의 장애 영역을 피할 것이라고 증명하지 못한다.

두 사건의 포렌식 타임라인

연표는 외부 측정에 기반하며, 그렇게 표시된 상태로 남아 있어야 한다. 경로 모니터링 플랫폼은 선택된 관측 지점에서 선택된 테스트만 본다. 패킷 손실, 경로 변화, 반복 패턴을 보여줄 수 있다. 모든 내부 명령, 모든 테이블의 모든 경로, 모든 고객 세션은 볼 수 없다. 다음 타임라인은 관측을 기록하되 이를 상상의 내부 로그로 바꾸지 않는다.

시각증거적 사건
11월 8일 태평양 시간 밤 9시 44분 이전공개 자료는 발화 변경, 테이블 증가 사건, 장비 알림, 내부 유지보수 조치를 식별하지 않는다. 이후 분석에서 사용된 외부 경로는 관측된 손실 이전에 정상 동작하고 있었다.
밤 9시 44분경ThousandEyes는 첫 번째 장애의 시작을 이 시각경으로 잡았다. 서니베일 코어를 통과하는 트래픽의 테스트가 손실을 보이기 시작했다.[1]
밤 9시 44분~9시 46분경서니베일 외부의 일부 인접 경로는 계속 동작했다. 이 관측은 장애가 처음부터 측정된 모든 경로에 균일하지 않았음을 보여준다는 점에서 중요하다.[1]
밤 9시 46분경부터일부 트래픽이 서니베일로 재라우팅된 뒤 동일한 전체 패킷 손실을 겪었다. 외부 기록은 경로 변화 뒤에 실패가 뒤따랐음을 보여주지만, 각 변화를 일으킨 내부 결정이나 경로는 보여주지 않는다.[1]
밤 10시 48분경첫 번째 관측 장애가 종료되었다. 이전에 우회된 경로는 기존 경로로 돌아갔고, 일부 서니베일 통과 트래픽은 다른 서니베일 노드 집합을 사용했다. 공개 기록은 교정 명령이나 정확한 수렴 순서를 식별하지 않는다.[1]
두 사건 사이자료는 공유 조건이 지속되었는지, 변경이 시도되었는지, 두 번째 사건이 같은 직접 방아쇠를 공유했는지 공개하지 않는다. 두 인시던트는 유사한 동작을 보였지만, 유사성이 하나의 끊기지 않는 내부 원인의 증명은 아니다.
11월 9일 새벽 5시 5분경두 번째 장애가 시작되었다. ThousandEyes는 서니베일을 통과하는 일부 경로에서 전체 손실을 관측했다.[1]
두 번째 사건 동안미국 다른 지역의 일부 트래픽이 서니베일 쪽으로 우회되어 실패했다. 시카고에서 시카고로 가는 트래픽은 이 예상 밖의 지리적 경로를 보여주는 예로 쓰였다.[1]
두 번째 사건 동안일부 측정 경로는 손실과 정상 접속을 번갈아 보였다. ThousandEyes는 이 변화하는 동작에 대한 가능한 설명으로 컨트롤 플레인 혼잡을 논의했다.[1]
새벽 6시 15분경두 번째 관측 장애가 종료되었고 영향받은 경로가 다시 목적지에 도달했다. 공개 자료는 복구가 롤백, 용량 변경, 프로세스 재시작, 경로 철회 또는 다른 조치의 결과였는지 공개하지 않는다.[1]
이후 검토ThousandEyes의 연간 검토는 이 사건을 라우팅 테이블 한도의 부주의한 초과로 돌렸다.[2] 이후의 설명은 고정된 메커니즘을 제공하지만, 완전한 내부 근본원인 트리는 아니다.

이 타임라인은 세 가지 결론을 지지한다. 첫째, 두 사건은 시간적으로 분리되어 있으며 내부 증거 없이 하나의 연속 장애로 뭉쳐서는 안 된다. 둘째, 서니베일 코어는 관측된 실패의 중심이었다. 셋째, 대체 계산이 같은 장애 코어로 트래픽을 보내면 재라우팅은 영향받는 집합을 오히려 늘릴 수 있다.

이 타임라인은 모든 컴캐스트 가입자가 오프라인이었다거나, 모든 경로가 서니베일을 통과했다거나, 한도가 모든 라우터에 같은 방식으로 영향을 미쳤다는 주장을 지지하지 않는다. 하드 테이블 상한이 경로를 거부했는지, 철회했는지, 플러시했는지, 반복 재계산했는지도 밝히지 않는다. 문제의 테이블이 BGP 라우팅 정보 베이스였는지, 포워딩 테이블이었는지, 플랫폼 고유 구조였는지, 다른 컨트롤 플레인 자원이었는지도 확립하지 않는다. 이 구분들은 여전히 본질적 미지수다.

외부 경로 증거가 확립할 수 있는 것

외부 측정은 전달 결과를 기술할 때 가장 강하다. 테스트는 알려진 관측 지점에서 알려진 목적지로 트래픽을 보내고, 홉과 손실을 기록하고, 인시던트 전·중·후의 경로를 비교한다. 많은 테스트가 동일한 영향받은 인터페이스나 위치를 공유할 때, 증거는 공통의 관측 가능한 실패 지점을 특정할 수 있다. ThousandEyes는 이 방법을 플랫폼 전반의 측정을 집계하여 트래픽·라우팅 장애를 탐지하는 방식으로 설명한다.[4]

컴캐스트의 첫 번째 사건에서 서니베일 외부의 성공 경로와 서니베일 통과의 실패 경로 사이 비교는 의미 있는 경계를 만든다. 이는 관측된 실패가 경로 배치를 따랐음을 시사한다. 이후 일부 인접 트래픽이 서니베일로 우회되어 실패했을 때, 이 순서는 대체 경로가 영향 영역을 벗어나지 못했음을 보여주었다.[1]

두 번째 사건은 지리적 이상 현상을 더했다. 종단점이 미국 중부나 동부에 있는 일부 트래픽이 서니베일을 통과하는 것으로 관측되었다. 경로는 장애 상황에서 운영적으로 바람직하지 않으면서도 기술적으로 유효할 수 있다. BGP와 내부 라우팅 시스템은 설정된 정책과 이용 가능한 상태에 따라 경로를 선택하며, 로컬 트래픽이 지리적으로 로컬에 머물러야 한다는 이용자의 직관적 기대를 이해하지 못한다.[10] 따라서 책임성 통제는 직관이 아니라 검증 가능한 정책·토폴로지 요구사항이다.

외부 경로 증에는 한계가 있다. 보이는 홉이 캡슐화, 내부 레이블, 경로 반영, 등비용 멀티패스에 대한 모든 질문에 답하지는 않는다. 응답하지 않는 인터페이스는 해석을 어렵게 만들 수 있다. 한 관측 지점이 본 경로가 보편적 경로는 아니다. 명명된 홉에서 또는 그 이후의 패킷 손실이 항상 응답한 인터페이스가 원인임을 증명하지는 않는다. ThousandEyes의 결론은 모든 라우터에 대한 특권적 접근이 아니라 측정 제공자의 관측으로 읽어야 한다.

이 한계들은 교차 확인과 보존을 중요하게 만든다. 운영자는 자체 경로 상태, 인터페이스 카운터, 테이블 점유율, 변경 기록을 독립 경로 데이터와 함께 보존할 수 있다. 그러면 이후 검토는 외부 경로 전환이 알려진 내부 사건과 대응하는지 시험할 수 있다. 이 결합된 증거 없이 외부인은 실패 영역은 특정할 수 있어도 전체 통제 순서를 재구성할 수 없다.

라우팅 테이블 용량은 연속성 통제다

라우팅 시스템은 여러 종류의 상태를 저장한다. BGP 스피커는 업데이트를 수신하고, 정책을 적용하고, 경로를 선택하고, 허용된 결과를 광고한다.[10] 구현은 수신 경로, 수용 경로, 선택 경로, 포워딩 항목을 별도 구조로 유지할 수 있다. 루트 리플렉터는 내부 BGP 세션의 완전 메시 필요성을 줄이면서도, 동시에 라우팅 정보 분배 경로의 일부가 될 수 있다.[12] 하드웨어와 소프트웨어는 메모리, 포워딩 항목, 프로세스 자원, 지원 경로 수에 한도를 둔다.

따라서 "라우팅 테이블 한도"라는 표현은 정밀성을 필요로 한다. 설정된 최대치는 의도적인 가드레일일 수 있다. 플랫폼 용량은 하드 엔지니어링 경계일 수 있다. 명목상 경로 수에 도달하기 전에 프로세스가 메모리를 소진할 수 있다. 세션의 최대 프리픽스 기능은 세션을 종료하거나 운영자에게 경고할 수 있다. 포워딩 테이블의 용량은 컨트롤 플레인 테이블과 다를 수 있다. 고정된 공개 증거는 컴캐스트 네트워크에서 어떤 조건이 발생했는지 말하지 않는다.

그 불확실성이 용량을 감사 불가능하게 만들지는 않는다. 운영자는 각 관련 테이블의 식별자, 지원 및 설정된 한도, 정상 점유율, 최대 점유율, 수렴을 위해 확보한 여유분, 예상 증가율을 기록할 수 있다. 실패 지점 아래에 경고 임계치를 정의하고 알림 전달 경로를 시험할 수 있다. 통제된 경로 상태 증가를 시뮬레이션하고, 장비가 초과분만 거부하는지, 기존 포워딩을 보호하는지, 프로세스를 재시작하는지, 경로를 철회하는지, 혼잡을 전파하는지 확인할 수 있다.

여유분은 평균적인 날이 아니라 실패 시나리오에 대해 정의되어야 한다. 수렴 중 라우터는 이전 경로와 새 경로를 일시적으로 함께 유지할 수 있다. 유지보수는 대체 경로를 나타나게 할 수 있다. 정책 오류는 수용된 상태를 늘릴 수 있다. 루트 리플렉터 변경은 어떤 경로가 보이는지를 바꿀 수 있다. 따라서 올바른 마진은 일시적 상태와 운영자가 행동하는 데 필요한 시간을 포함한다.

유용한 용량 기록은 최소 여섯 가지 측정을 담아야 한다:

  1. 각 라우팅·포워딩 구조의 현재 점유율;
  2. 하드 플랫폼 한도와 그 아래 설정된 한도;
  3. 테스트된 수렴 동안 관측된 최고 일시 점유율;
  4. 경고 임계치와 검증된 알림 전달 시간;
  5. 경고 및 하드 한도에서의 문서화된 동작; 그리고
  6. 트래픽이 복귀하기 전 필요한 증거를 포함한 복구 절차.

11월의 인시던트가 이 기록을 중대하게 만드는 이유는 관측된 실패가 이미 서니베일을 사용하던 트래픽에 국한되지 않았기 때문이다. 일부 트래픽이 코어로 우회되어 그곳에서 실패했다.[1] 한 노드나 클러스터의 테이블 한도가 수렴 중 추가 경로를 끌어당길 수 있다면, 그 한도는 폭발력 반경(blast radius) 통제가 된다. 용량 테스트는 한 장비가 생존하는지뿐 아니라 나머지 네트워크가 그 부분 실패에 어떻게 반응하는지도 물어야 한다.

자료의 어떤 출처도 컴캐스트가 이런 측정을 갖지 않았음을 확립하지 않는다. 증거는 초과된 한도가 이후 인용되었고 외부 관측 경로가 실패했음을 보여줄 뿐이다. 책임성 결론은 관련 측정이 검토 가능해야 한다는 것이며, 그 부재가 입증되었다는 것이 아니다.

재라우팅이 독립적 복원력이 아니었던 이유

네트워크는 트래픽이 다른 경로를 택할 수 있기 때문에 복원력이 있다고 흔히 설명된다. 이 진술은 가장 중요한 질문을 생략한다: 무엇으로부터 독립인가? 두 경로는 서로 다른 인터페이스를 사용하면서도 같은 루트 리플렉터, 소프트웨어 버전, 테이블 상한, 전력 도메인, 메트로 코어, 유지보수 절차, 설정 출처를 공유할 수 있다. 따라서 새로운 경로 계산은 동일한 근본 실패를 그대로 보존할 수 있다.

컴캐스트의 첫 번째 사건은 구체적 예를 제공한다. 서니베일 밖의 일부 트래픽은 처음에 계속 성공했다. 서니베일로 우회된 뒤에는 그것도 실패했다.[1] 프로토콜은 경로를 찾았지만 그 경로는 장애 영역으로 들어갔다. 이용자의 관점에서 두 번째 계산의 존재는 연속성을 만들지 못했다.

장애 영역 분석은 여러 계층에서 수행되어야 한다. 물리적 다양성은 링크, 사이트, 전력 시스템이 분리되어 있는지 묻는다. 컨트롤 플레인 다양성은 경로 분배와 결정 프로세스가 독립적으로 실패할 수 있는지 묻는다. 용량 다양성은 대체 노드가 독립적이고 충분한 테이블 여유를 갖는지 묻는다. 운영 다양성은 하나의 변경, 자동화 시스템 또는 승인이 모든 가칭의 대안에 영향을 미칠 수 있는지 묻는다. 관측성 다양성은 생산 컨트롤 플레인이 장애가 났을 때 모니터링이 여전히 가능한지 묻는다.

Clos 방식의 코어는 여러 경로와 수평 확장을 제공할 수 있다. ThousandEyes는 사건을 해석하면서 컴캐스트의 스파인-리프 설계 사용을 논의했다.[1] 이 아키텍처 맥락은 노드 수준과 패브릭 수준 동작이 왜 중요한지 설명한다. 그러나 영향받은 코어의 정확한 생산 토폴로지를 공개하지도, 모든 경로가 하나의 컨트롤 의존성을 공유했다고 증명하지도 않는다.

올바른 검증은 적대적이면서도 경계가 있는 것이다. 운영자는 노드를 제거하고, 루트 리플렉터를 고립시키고, 테이블을 제한하고, 업데이트를 지연시키고 트래픽이 어디로 이동하는지 관찰할 수 있다. 테스트는 대체 경로가 원래의 물리·논리 실패 영역을 피하고, 충분한 용량을 가지며, 예상 밖의 지리적 우회를 만들지 않음을 확인해야 한다. 결과는 네트워크 내부와 외부 모두의 포워딩 플레인 측정으로 포착되어야 한다.

복원력은 대체 경로가 테스트된 장애 하에서 트래픽을 운반할 때 입증된다. 토폴로지 도표에 여러 선이 있을 때 입증되는 것이 아니다.

수렴, 경로 반영, 변하는 경로

BGP는 인터넷 전체 또는 대규모 내부 네트워크를 즉시 갱신하지 않는다. 라우터는 다른 시각에 변경을 수신하고, 로컬 정책을 적용하고, 새 결과를 광고한다. RFC 4277은 수렴 동작과 라우팅 변경 이후 발생할 수 있는 지연이나 일시적 상태를 조사한다.[11] 루트 리플렉터는 클라이언트가 완전한 내부 메시 없이 경로를 교환하게 하여 자율 시스템 내부의 전파 구조를 바꾼다.[12]

ThousandEyes는 두 번째 사건 동안 일부 컴캐스트 경로가 전체 손실과 정상 접속을 번갈아 보였다고 관측했고, 이를 설명할 가능한 이유로 컨트롤 플레인 혼잡을 지목했다.[1] 공개 증거는 그 정확한 업데이트를 보여주지 않는다. 그럼에도 수렴 동작이 왜 용량 검토에 속하는지를 확립한다. 한도 근처의 시스템은 이전·새 경로가 공존하거나 세션이 재설정되어 상태를 다시 채울 때 다르게 반응할 수 있다.

그레이스풀 리스타트와 그레이스풀 셧다운 메커니즘은 특정 전환 문제를 다룬다. RFC 4724는 일부 BGP 재시작 동안 포워딩 상태를 유지하는 것을 설명한다.[13] RFC 6198은 BGP 세션을 의도적으로 종료할 때 트래픽 손실을 줄이기 위한 요구사항을 정하고, RFC 8326은 그레이스풀 셧다운 메커니즘을 규정한다.[15][19] 이 문서들은 컴캐스트의 인시던트에서 그 메커니즘이 관련 있었는지, 이용 가능했는지, 배치되었는지를 증명하지 않는다.

다만 이들은 "프로토콜이 수렴했다"가 완전한 운영 표준이 아님을 보여준다. 수렴 사건은 패킷 손실, 일시적 루프, 오래된 상태, 의도된 지역성을 위반하는 경로 변화를 포함할 수 있다. 테스트된 네트워크는 각 실패 유형에 대해 수용 가능한 수렴 시간과 손실을 정의해야 한다. 링크가 아니라 컨트롤 플레인 자원이 한도에 도달했을 때 무슨 일이 일어나는지도 정의해야 한다.

경로 반영은 논리적 중복이 여전히 분배 상태를 공유할 수 있기 때문에 구체적 증거를 요구한다. 운영자는 어떤 클라이언트가 각 리플렉터에 의존하는지, 대체 리플렉터가 독립 용량을 갖는지, 한 리플렉터가 상태를 잃을 때 경로가 어떻게 선택되는지, 한도 알림이 전파를 어떻게 바꾸는지 알아야 한다. 이 글은 루트 리플렉터가 컴캐스트의 인시던트를 일으켰다고 주장하지 않는다. 라우팅 테이블 한도 포스트모텀이 검토해야 할 의존성 유형을 식별할 뿐이다.

감지는 자신이 보고하는 실패를 견뎌야 한다

빠른 감지는 알림이 운영자에게 도달하고 영향받은 통제 표면을 식별할 때만 유용하다. 양방향 포워딩 감지(BFD)는 일부 포워딩 경로 실패의 신속한 감지를 제공할 수 있다.[14] 그 자체로 라우팅 테이블 한도를 진단하지는 않는다. 장비 텔레메트리는 테이블 점유율과 프로세스 건강을 보고할 수 있다. 경로 수집기와 외부 경로 테스트는 접속성 변화를 드러낼 수 있다. 고객 보고는 서비스 증상을 보여준다. 각 출처는 사건의 서로 다른 부분을 본다.

책임성 있는 모니터링 설계는 이 계층들을 연결한다. 테이블 경고는 장비, 구조, 현재 값, 설정 한도, 추세를 식별해야 한다. 라우팅 알림은 무엇이 바뀌었는지 보여주어야 한다. 경로 알림은 어느 목적지와 지역이 접속성을 잃었는지 보여주어야 한다. 고객 영향 시스템은 증거가 지지하는 것보다 더 많은 사용자를 주장하지 않으면서 네트워크 사건을 영향받은 서비스와 연결해야 한다.

모니터링에는 독립적인 전달 경로도 필요하다. 알림, 대시보드, 인증, 인시던트 채팅이 같은 장애 네트워크에 의존하면 운영자는 복구에 필요한 도구를 잃을 수 있다. 공개 컴캐스트 자료는 그것이 실제로 일어났는지 말하지 않는다. 이는 사건에 대한 주장이 아니라 실패 유형에서 도출되는 측정 가능한 연속성 요구사항으로 남는다.

외부 측정은 별도의 현실 검증을 기여한다. ThousandEyes는 컴캐스트가 상세 설명을 공개하기 전에 성공 경로와 실패 경로를 비교할 수 있었다.[1][4] 운영자는 유사한 외부 증거를 사용해 내부 "녹색" 상태가 성공적인 포워딩과 대응하는지 시험할 수 있다. 최종 복구 게이트는 내부 안정성과 여러 지역의 외부 접속성을 모두 요구해야 한다.

이 게이트는 흔한 종료 오류, 즉 통제 프로세스가 재시작했지만 포워딩이 여전히 불안정한 상태에서 복구를 선언하는 오류를 막는다. 컴캐스트 타임라인에서 관측 가능한 종료 상태는 영향받은 경로가 다시 목적지에 도달했다는 것이었다.[1] 공개 기록은 컴캐스트의 내부 복구 선언 기준을 공개하지 않으므로 비교는 불가능하다. 그럼에도 이 인시던트는 포워딩 증거가 기준에 속해야 하는 이유를 보여준다.

레지스트리 증거와 실행 중인 현실

ARIN의 RDAP 서비스는 AS7922를 등록된 자율 시스템 자원으로 기록한다.[9] 이런 기록은 중요하다. 운영자와 조사자가 번호 자원과 연관된 조직을 식별하고, 연락처를 유지하고, 한 네트워크를 다른 네트워크와 구분하는 데 도움을 준다. 정확성, 고유성, 최신 기록은 조율을 지지한다.

이 기록은 BGP를 운영하지 않는다. 컴캐스트 라우터의 완전한 경로 테이블을 저장하지 않고, 경로를 선택하지 않고, 테이블 임계치를 강제하지 않고, 시카고 트래픽을 캘리포니아로부터 멀리 보내지 않는다. 그런 결과는 실행 중인 소프트웨어, 설치된 상태, 토폴로지, 운영자 정책에서 나온다.

이 구분은 두 오류를 피하게 한다. 첫째는 레지스트리 귀속을 모든 내부 조치의 증명으로 다루는 것이다. 경로에서 AS7922를 보는 것은 네트워크 맥락을 식별할 수 있지만, 실패 뒤의 직원, 설정 또는 법적 책임을 식별할 수 없다. 둘째는 레지스트리 증거가 포워딩을 강제할 수 없다는 이유로 그것을 무시하는 것이다. 최신 기록은 경로 통제 시스템은 아니더라도 귀속과 인시던트 조율에 여전히 유용하다.

네트워크 책임성은 기록 계층과 현실 계층을 연결하는 데 달려 있다. 자원 식별자, 장비 인벤토리, 라우팅 정책, 테이블 텔레메트리, 변경 기록, 알림, 외부 경로 관측은 동일한 운영 사건을 가리켜야 한다. 그 연결이 보존될 때 검토는 하나의 데이터베이스가 네트워크 전체를 지배했다고 가정하지 않고 각 결정을 누가 통제했는지 물을 수 있다.

보고 책임성과 기밀 증거

FCC의 Part 4 규칙과 관련 지침은 기준을 충족하는 통신 장애에 대한 보고 및 기록 보존 요건을 확립한다.[7][8] 이 규칙들은 지리적 범위, 지속 시간, 사용자, 공공안전 영향이 감독에 중요할 수 있음을 인정한다. 또한 일반적으로 공개되지 않는 장애 정보를 보호한다.

이 글은 2021년 11월 사건들에 대한 컴캐스트의 기밀 NORS 제출서를 갖고 있지 않다. 따라서 컴캐스트가 근본 원인으로 무엇을 보고했는지, 규제 정의 하에서 몇 명의 사용자가 계수되었는지, 기준이 충족되었는지, FCC에 어떤 시정 조치가 제출되었는지는 말할 수 없다.

이 경계가 중요한 이유는 제출서와 공개 포스트모텀이 서로 다른 독자를 위해 존재하기 때문이다. 규제자는 공개되어서는 안 되는 민감한 인프라 상세를 받을 수 있다. 고객과 의존하는 운영자는 여전히 실패의 성격을 이해하고 연속성을 평가하기에 충분한 공개 정보를 필요로 한다. 책임성은 공격 준비 가능한 토폴로지의 공개를 요구하지 않는다. 실패 유형, 범위, 복구, 측정 가능한 예방에 대한 신뢰할 수 있는 공개 설명을 요구한다.

유용한 공개 기록은 라우팅 상태 한도가 초과되었음을 밝히고, 적절한 수준에서 영향받은 통제 영역을 기술하고, 관측 및 복구 시간창을 제시하고, 우회된 트래픽이 왜 같은 영역에 진입했는지 설명하고, 이후 변경된 통제를 나열할 수 있다. 개별 엔지니어의 이름이나 민감한 라우터 설정을 공개하지 않고도 그렇게 할 수 있다.

고정된 공개 자료에 그런 상세가 없다는 것은 결론을 제한한다. 이는 컴캐스트가 기밀 보고를 하지 않았거나 시정하지 않았음을 증명하지 않는다. 외부인이 기술적 재구성을 위해 주로 외부 측정에 의존해야 함을 보여줄 뿐이다.

통제 소유자와 증거 의무

책임성은 헤드라인과의 근접성이 아니라 실제적 통제를 따라야 한다.

컴캐스트는 내부 라우팅 용량을 통제했다.운영자는 플랫폼을 인벤토리화하고, 한도를 설정하거나 수용하고, 점유율을 모니터링하고, 여유분을 확보하고, 실패 동작을 테스트할 수 있었다. 증거에는 장비·소프트웨어 인벤토리, 테이블 텔레메트리, 한도 설정, 알림, 용량 테스트 결과가 포함될 수 있다.

컴캐스트는 토폴로지와 경로 분배를 통제했다.코어 장애 영역, 루트 리플렉터 관계, 경로 선호, 지리적 제약을 설계할 수 있었다. 증거에는 승인된 토폴로지, 라우팅 정책, 의존성 지도, 고장 주입 결과가 포함될 수 있다. 공개 자료는 이런 자료를 공개하지 않는다.

컴캐스트는 변경과 복구를 통제했다.변경을 승인하고, 단계적으로 배포하고, 전후 상태를 보존하고, 롤백을 실행하고, 포워딩을 검증할 수 있었다. 증거에는 티켓, 승인, diff, 명령 로그, 인시던트 결정, 외부 복구 테스트가 포함될 수 있다.

공급사는 자사 제품 범위 내의 제품 동작을 통제했다.라우터나 소프트웨어 공급사는 용량, 알림, 실패 모드를 정의할 수 있다. 고정된 출처는 공급사나 제품을 식별하지 않으므로, 이 글은 공급사별 의무나 결함을 귀속할 수 없다.

외부 관측자는 측정 품질을 통제했다.ThousandEyes는 자신의 관측 지점, 테스트, 경로 해석, 공개 분석을 통제했다.[1]-[4] 그 증거는 패턴을 보여줄 수 있지만 한계를 공개하고 내부 데이터와의 비교에 열려 있어야 한다.

고객은 자신의 연속성 선택만을 통제했다.기업은 여러 접속 사업자, 경로, 애플리케이션 지역을 사용할 수 있다. 이 옵션들은 의존성을 줄일 수 있지만, 컴캐스트의 내부 라우팅 상태에 대한 책임을 고객에게 전가하지 않는다. 일부 가정용 또는 공공 서비스 사용자에게는 실질적 대체재가 없을 수 있다.

ARIN은 자체 기록에 대해 레지스트리 정확성과 가용성을 통제했다.컴캐스트의 내부 경로는 통제하지 않았다.[9]

FCC는 보고 규칙과 보호된 감독 기록을 통제했다.경로를 서니베일로 보낸 라우팅 결정은 통제하지 않았다.[7][8]

이 분배는 모든 행위자가 실패했다는 주장이 아니다. 특정 통제를 평가하는 데 필요한 증거를 누가 만들 수 있었는지의 지도다.

측정 가능한 시정

가장 강한 시정 프로그램은 인시던트의 미지수를 반복 가능한 테스트로 바꾼다.

1. 모든 관련 한도를 정의하라.각 라우팅·포워딩 구조에 대해 플랫폼 최대치, 설정 최대치, 현재 점유율, 예상 증가율, 비상 예비분을 기록하라. 플랫폼이 드러내는 곳에서는 수신, 수용, 선택, 설치 상태를 분리하라. 더 작은 내부 구조가 먼저 실패할 수 있다면 단일 헤드라인 경로 수는 불충분하다.

2. 다단계 알림을 설정하라.경고 임계치는 하드 한도 전에 조사할 시간을 충분히 남겨야 한다. 알림에는 영향받은 구조, 현재 값, 변화율, 관련 이웃 또는 프로세스, 안전한 대응이 포함되어야 한다. 알림 전달은 독립적인 관리 경로로 테스트되어야 한다.

3. 일시적 여유분을 테스트하라.용량 모델에는 정상 증가에 더해 유지보수, 경로 재수렴, 세션 복원, 정책 롤백 중에 만들어지는 추가 상태가 포함되어야 한다. 테스트는 최종 안정 테이블뿐 아니라 최고점도 측정해야 한다.

4. 실패 동작을 검증하라.통제된 환경에서 설정된 한도에 접근하거나 초과하고 시스템이 무엇을 하는지 기록하라. 새 경로를 거부하는가, 세션을 재설정하는가, 기존 경로를 철회하는가, 프로세스를 재시작하는가, 포워딩을 보존하는가, 혼잡을 만드는가? 검증된 실패 모드 없는 문서화된 한도는 불완전하다.

5. 공유 통제 의존성을 매핑하라.중복 노드에 대해 공통 루트 리플렉터, 설정 시스템, 소프트웨어 버전, 테이블 상한, 전력 도메인, 관리 경로를 점검하라. 동일한 제한 자원을 공유하는 페일오버 대상은 독립적이지 않다.

6. 지리적 지역성을 테스트하라.특정 실패 중 어느 클래스의 트래픽이 지역 내에 머물러야 하는지 정의하라. 명시적이고 테스트된 이유 없이 로컬 경로가 먼 장애 코어로 우회되지 않음을 내부·외부 측정으로 검증하라.

7. 컨트롤 플레인과 포워딩 증거를 결합하라.경로가 컨트롤 테이블에 존재하면서도 패킷이 실패할 수 있다. 복구는 여러 관측 지점에서의 성공적 포워딩 테스트, 수용 가능한 손실, 안정 경로를 요구해야 한다. 내부 경로 상태와 외부 경로 증거는 시간 정렬되어야 한다.

8. 방아쇠, 감지, 대응, 복구를 분리하여 보존하라.발화 사건은 첫 알림 이전일 수 있다. 외부 관측자는 운영자가 원인을 특정하기 전에 증상을 감지할 수 있다. 롤백은 전역 경로가 안정되기 전에 일어날 수 있다. 포스트모텀은 각 타임스탬프와 증거 출처를 기록해야 하며, 이를 하나의 장애 지속 시간으로 압축해서는 안 된다.

9. 루트 리플렉터와 수렴 동작을 검토하라.경로 반영이 사용되는 곳에서 클라이언트 동작, 대체 리플렉터 용량, 경로 가시성, 상태 재충전을 테스트하라.[12] 계획된 각 고장에 대해 수용 가능한 수렴과 손실을 정의하라.[11] 그레이스풀 메커니즘은 테이블 소진을 해결한다고 가정하지 않고 관련 곳에서 평가할 수 있다.[13][15][19]

10. 도메인 간 정책 용어를 정밀하게 유지하라.RFC 7908은 경로 누출을 정의하고, RFC 8212와 RFC 9234는 명시적 정책과 관계 인식 통제를 다룬다.[17][18][20] 이 자료의 컴캐스트 증거는 내부 경로 변화와 테이블 한도에 관한 것이다. 운영자는 모든 예상 밖의 재라우팅을 경로 누출로 불러서는 안 되며, 잘못된 라벨은 시정 조치를 잘못된 통제로 향하게 한다.

11. 인시던트 관리 의존성 사슬을 훈련하라.모니터링 시스템, 인증 서비스, 상태 페이지, 고객 지원, 엔지니어링 소통, 변경 경로는 생산 코어가 장애가 난 상태에서도 이용 가능해야 한다. 훈련에는 주 네트워크 접속성 상실이 포함되어야 한다.

12. 경계가 있는 기술적 설명을 공개하라.공개 보고서는 민감한 토폴로지를 노출하지 않고 실패 유형, 시간창, 영향받은 통제 영역, 복구 방법, 검증된 시정 조치를 식별해야 한다. 측정된 사실, 내부 발견, 미해결 질문을 구분해야 한다.

각 조치에는 합격 조건이 필요하다. "테이블 크기를 모니터링한다"는 합격 조건이 아니다. "정의된 예비분에서 알림을 발하고, 독립 경로로 테스트된 시간 내에 알림을 전달하며, 운영자가 하드 한도 전에 충분한 여유분을 복원할 수 있음을 입증한다"는 검증 가능하다. "중복성을 제공한다"는 합격 조건이 아니다. "고립된 서니베일 코어 실패 하에서 지정된 트래픽이 고립 영역을 통과하지 않고 정의된 임계치 아래의 손실로 접속 가능하다"는 검증 가능하다.

통제에는 소유자와 검토 일자도 있어야 한다. 고객, 피어, 프리픽스, 서비스, 트래픽 엔지니어링 정책이 바뀌면 용량도 바뀔 수 있다. 한 해의 합격 결과는 무기한의 안전을 확립할 수 없다. 증거는 테스트가 언제, 어떤 소프트웨어와 토폴로지에 대해 실행되었는지, 어떤 예외가 남아 있는지 보여주어야 한다.

이 제안들은 컴캐스트가 이를 누락했다는 증명이 아니다. 외부적으로 관측된 실패와 귀속된 한도 메커니즘에 논리적으로 연결되는 측정 가능한 통제들이다.

이후의 표준은 맥락이지 판정이 아니다

출처 집합의 여러 IETF 문서는 인시던트 이후에 나오거나 그 이상을 일반화한다. RFC 8212는 외부 BGP 정책이 명시적으로 구성되지 않았을 때의 기본 거부 동작을 설명한다.[18] RFC 9234는 특정 경로 누출을 줄이기 위한 BGP 역할과 Only-to-Customer 속성을 설명한다.[20] 어느 문서도 내부 라우팅 테이블 한도의 원인을 확립하지 않으며, 컴캐스트 2021년 설정을 증명하지 않는다.

RFC 7454는 BGP 운영 및 보안 실무를 모은다.[16] RFC 6198과 RFC 8326은 그레이스풀 셧다운 요구사항과 시그널링을 다룬다.[15][19] RFC 5880은 BFD를 정의한다.[14] 이들은 정책, 계획된 변경, 감지에 대한 질문을 프레임하는 데 도움이 된다. 공개 증거가 컴캐스트가 위반했음을 증명하는 체크리스트로 제시되어서는 안 된다.

이 구분은 분석을 후견주의 편향으로부터 보호한다. 표준은 통제가 알려져 있었거나 기술적으로 가능했음을 보여줄 수 있다. 그러나 그것이 계약상 요구되었는지, 특정 플랫폼에서 지원되었는지, 영향받은 네트워크에 구성되었는지, 정확한 실패를 막을 수 있었는지를 확립하지 못한다. 그런 결론에는 추가 증거가 필요하다.

이 글은 표준을 측정 가능한 대안을 정의하는 데 사용한다. 과원 판정을 만들어내는 데 사용하지 않는다.

이 글이 혼동하지 않는 것

2021년 11월의 사건들은 컴캐스트의 2017년 Level 3 BGP 경로 누출과 관련된 장애가 아니다. 그 사건은 누출된 외부 경로와 서로 다른 관측 메커니즘을 포함했다. 컴캐스트의 2018년 광케이블 절단 장애도 아닌데, 그 경우 물리적 손상과 더 구체적인 광고가 서로 다른 복구 기록을 만들었다. 2023년 CitrixBleed와 연결된 고객 데이터 사건도 아닌데, 그것은 노출된 엣지 어플라이언스와 신원 기록에 관한 것이었다.

이 글은 또한 모든 재라우팅을 경로 누출로 동일시하지 않는다. 경로 누출은 구체적인 도메인 간 정책적 의미를 갖는다.[17] 2021년 자료는 내부 또는 사업자가 통제하는 경로가 변하고 트래픽이 장애 코어로 진입하는 것을 보여줄 뿐이다. 관련 경로 광고와 관계 증거 없이 그 동작을 경로 누출이라 부르는 것은 근거가 없다.

이 장애는 레지스트리가 실패했다는 증거가 아니다. ARIN의 AS7922 기록은 네트워크 자원을 식별하는 데 도움을 준다.[9] 정확한 기록이 경로 테이블이 한도에 도달하는 것을 막을 수 없고, 테이블 한도가 기록을 틀리게 만들지도 않는다.

마지막으로, 이 장애는 공격의 증거가 아니다. 고정된 출처는 악의적 행위, 무단 접근, 고의적 방해, 범죄적 의도를 확립하지 않는다.

본질적 불확실성

정확한 테이블과 임계치는 여전히 알려지지 않았다. 방아쇠 상태 변화, 장비, 소프트웨어, 명령, 책임 역할도 알려지지 않았다. 각 서니베일 노드의 토폴로지와 테이블 점유율도 알려지지 않았다. 고객과 서비스의 완전한 영향도 알려지지 않았다.

내부 알림 연표, 대응 결정, 복구 방법, 사건 후 시정 조치는 고정된 공개 자료에 없다. 기밀 장애 제출서의 내용은 이용 불가하다. 이곳에서 사용된 어떤 출처도 공급사 결함, 개인의 실패, 과실, 법적 책임, 정량화된 손실을 확립하지 않는다.

이 공백은 비난 주장을 제한하며, 운영 질문을 제한하지 않는다. 관측된 경로와 귀속된 한도는 여전히 완전한 검토에 어떤 증거가 필요한지 식별한다.

결론

컴캐스트의 2021년 11월 장애는 용량 경계를 네트워크 책임성 시험으로 바꾸었다. ThousandEyes는 서니베일 코어를 중심으로 한 두 인시던트를 관측했다. 이미 코어를 사용하던 트래픽은 실패했고, 성공하던 일부 트래픽은 서니베일로 우회된 뒤 실패했다. 두 번째 사건 동안 먼 지역의 경로가 같은 지역으로 보내졌고, 때로 손실과 접속성 사이를 오갔다.[1][3]

이후 ThousandEyes의 검토는 이 사건을 라우팅 테이블 한도의 부주의한 초과로 돌렸다.[2] 그 설명은 정확한 내부 방아쇠를 공개하지 않지만, 구체적인 통제 표면을 정의한다. 라우팅 테이블 점유율, 임계치, 일시적 여유분, 실패 동작, 토폴로지 의존성, 알림, 롤백, 포워딩 플레인 복구는 모두 측정할 수 있다.

이 사건은 또한 기록과 도표만으로는 충분하지 않은 이유를 보여준다. ARIN은 AS7922를 정확히 기록할 수 있다.[9] BGP는 새 경로를 계산할 수 있다.[10] 토폴로지는 여러 노드를 담을 수 있다. 그럼에도 실행 중인 상태가 한도에 도달하거나 대체 경로가 같은 장애 영역에 진입하면 연속성은 실패한다.

따라서 책임성은 운영 통제의 증거에 놓인다. 컴캐스트는 라우팅 시스템과 그 복구를 통제했다. 외부 관측자는 자신의 측정을 통제했다. 규제자는 보고 요건을 통제했다. 공급사는 제품 동작을 통제했을 수 있으나 공개 자료는 이를 식별하지 않는다. 고객은 실질적으로 이용 가능한 대안만 통제했다.

방어 가능한 결론은 하나의 표준이 이 장애를 막았을 것이라거나 운영자가 절대 실패할 수 없다는 것이 아니다. 연속성 주장은 테스트된 여유분, 독립적 실패 영역, 지속 가능한 모니터링, 경계가 있는 공개 설명, 외부 검증된 복구에 의해 뒷받침되어야 한다는 것이다. 대규모 네트워크에서 복원력은 또 다른 경로의 존재가 아니라, 주 통제 영역이 실패했을 때 그 다른 경로가 동작한다는 증명이다.

출처

  1. https://www.thousandeyes.com/blog/comcast-outage-analysis-nov-9-2021
  2. https://www.thousandeyes.com/blog/seven-outages-shook-up-2021
  3. https://www.thousandeyes.com/blog/internet-report-weekly-pulse-nov-15
  4. https://www.thousandeyes.com/blog/analyzing-internet-issues-traffic-outage-detection
  5. https://corporate.comcast.com/comcast-voices/one-of-the-most-sophisticated-networks-in-the-world-2
  6. https://corporate.comcast.com/press/releases/comcast-harnessing-cloud-and-ai-to-transform-next-generation-internet-experiences
  7. https://docs.fcc.gov/public/attachments/DA-22-1300A1.pdf
  8. https://www.ecfr.gov/current/title-47/chapter-I/subchapter-A/part-4
  9. https://rdap.arin.net/registry/autnum/7922
  10. https://www.rfc-editor.org/rfc/rfc4271
  11. https://www.rfc-editor.org/rfc/rfc4277
  12. https://www.rfc-editor.org/rfc/rfc4456
  13. https://www.rfc-editor.org/rfc/rfc4724
  14. https://www.rfc-editor.org/rfc/rfc5880
  15. https://www.rfc-editor.org/rfc/rfc6198
  16. https://www.rfc-editor.org/rfc/rfc7454
  17. https://www.rfc-editor.org/rfc/rfc7908
  18. https://www.rfc-editor.org/rfc/rfc8212
  19. https://www.rfc-editor.org/rfc/rfc8326
  20. https://www.rfc-editor.org/rfc/rfc9234