요약

  • 내부 라우팅 도메인 하나가 데이터센터 백본으로 많은 프리픽스를 광고했다. 각 경로는 해당 도메인에 정식 배정된 BGP 커뮤니티를 달고 진입 route-map을 통과했다. 집계 라우터가 전체 경로를 받아 메모리를 소진했고 라우팅 데몬이 재시작했다.
  • Daria Shantalova의 설계는 프리픽스 식별, 경계별 통과 권한, 실제 운영 RIB와 의도된 상태의 지속 대조를 별도 통제로 나눈다.
  • 발표는 몇 달 동안 관측된 위반 거의 전부를 없앴다고 설명하지만, 최초 건수와 잔여 건수, 날짜별 변화는 공개하지 않았다.

배지는 진짜였다. 출입 명단은 확인하지 않았다.

Daria Shantalova가 RIPE 93에서 전한 장애의 핵심은 잘못된 경로가 가짜 표식을 달고 왔다는 게 아니다. 인접한 내부 라우팅 도메인이 데이터센터를 잇는 Express Backbone으로 많은 프리픽스를 보냈다. 각 경로에는 그 도메인에 정식으로 할당된 BGP 커뮤니티가 붙어 있었다. 진입 route-map은 값을 알아보고 광고를 허용했다.

경로는 내부 iBGP 메시를 따라 퍼졌다. 데이터센터 집계 라우터가 전체 집합을 받았고, 라우팅 데몬은 가용 메모리를 다 써서 재시작했다. 공개 자료에는 정확한 프리픽스 수, 영향받은 라우터 수, 장애 시간이 없다. 대신 검사의 빈틈은 분명하다. 필터는 커뮤니티가 발신 도메인에 속하는지 확인했지만, 각 프리픽스가 그 경계를 넘어 백본으로 들어가도 되는지는 묻지 않았다.

커뮤니티는 출발 도메인이나 전파 범위를 표시할 수 있다. 그렇다고 그 값을 단 모든 프리픽스가 모든 경계에서 자동으로 허가되는 것은 아니다. 표식의 유효성을 통행 권한 전체로 착각한 셈이다.

경로 수 제한은 허용된 경로를 골라 주지 않는다

기존 통제는 서로 다른 질문을 다룬다. maximum-prefix는 몇 개가 들어왔는지 묻는다. 프리픽스 허용 목록은 어느 경로가 특정 경계를 지날 수 있는지 정한다. 커뮤니티 필터는 태그 값이 인정되는지, 보존해야 하는지 확인한다. 셋은 함께 쓸 수 있지만 서로의 역할을 대신하지 않는다. RFC 7454는 프리픽스 필터링, 경로 수 제한, 커뮤니티 처리를 별도 운영 조치로 다룬다. RFC 4271은 BGP의 도달성 정보 교환과 경로 선택을 정의한다.

Shantalova가 제안한 첫 층은 식별이다. 각 프리픽스에 BGP ID 커뮤니티 하나를 부여해 출발 도메인과 허용된 전파 범위를 표시한다. ID가 없거나 틀리거나 여러 개이거나 서로 충돌하면 위반으로 본다. 두 번째 층인 내부 Route Registry는 프리픽스마다 예상 출발 도메인과 ID를 기록하고, 도메인 경계마다 인바운드 필터를 생성한다. 마지막 층은 운영 RIB를 계속 수집해 등록부와 대조한다. 미등록 프리픽스, 빠지거나 맞지 않는 ID, 의도와 다른 상태를 찾아 경보를 보낸다.

등록부는 의도한 상태를 적고, RIB는 라우터가 실제로 받아들인 상태를 보여준다. 배포 시점의 설정 파일 한 장으로 두 상태가 계속 일치한다고 할 수 없다.

“거의 전부”에는 분모가 빠졌다

RIPE 요약은 몇 달 안에 관측된 위반 “거의 전부”를 제거했고 자동 집행으로 재발을 막는다고 보고한다. 슬라이드에는 최초 위반 수, 정확한 잔여량, 날짜별 기록, 보호된 경계의 수가 없다. 배포 범위를 함께 적은 전후 수치가 공개되면 최초 정리와 지속적인 자동 집행의 효과를 구분할 수 있다.

운영의 교훈은 필터를 하나 더 넣고 사건을 종결하는 게 아니다. 각 통제에 한 가지 일을 맡기고, 실제 설치된 상태를 의도와 계속 대조해야 한다. 유효한 태그를 완전한 권한으로 취급하면, 장비는 확인되지 않은 허가를 아주 정확하게 실행한다.

출처: RIPE 93 세션과 요약; 공식 문자 기록; 원본 발표 자료; RFC 4271; RFC 7454.