- 2025년 5월 20일 07:00 UTC에 전파된 손상된 BGP 메시지가 주요 구현 2종에서 예상 밖 동작을 일으켜, 다수의 인터넷 연결 BGP 세션이 리셋되고 일부 네트워크에서 라우팅 불안정이나 짧은 연결 손실이 발생함
- 문제 업데이트에는 인터넷 BGP 업데이트에서 일반적으로 기대되지 않는 BGP Prefix-SID Attribute가 붙어 있었고, 내부 데이터가 모두
0x00인 손상 상태였음 - RFC7606 기반 오류 허용을 적용한 IOS-XR/Nokia SR-OS는 이를 걸러냈지만, JunOS는 전달했고 Arista EOS는 세션을 리셋해 JunOS 기반 transit carrier에 연결된 Arista 사용자에게 영향을 줄 수 있었음
- bgp.tools 관측에서는 AS9304, AS135338, AS151326, AS138077이 반복 등장했으며, 결함 속성을 추가한 주체는 Starcloud AS135338 또는 Hutchison AS9304일 가능성이 높음
- 사고 중 bgp.tools route collector의 10초 평균 메시지율이 평시 초당 20,000~30,000개에서 150,000/s 초과로 뛰어, BGP 오류 처리 차이가 실제 인터넷 경로 안정성을 흔들 수 있음을 보여줌
2025년 5월 20일 BGP 업데이트 사고
- 2025년 5월 20일 화요일 07:00 UTC에 전파된 BGP 메시지가 인터넷 트래픽 전달에 자주 쓰이는 주요 BGP 구현 2종에서 예상 밖 동작을 유발함
- 많은 인터넷 연결 BGP 세션이 자동 종료되면서 영향이 확산됨
- 일부 네트워크에서 라우팅 불안정이 확인됨
- 최악의 경우 짧은 연결 손실이 발생했을 수 있음
문제가 된 BGP 메시지
- bgp.tools에 공급되는 세션에서 확인된 업데이트는 /16에 대한 비교적 평범한 BGP Update였지만, 문제가 되는 BGP Prefix-SID Attribute를 포함함
- 해당 속성은 두 가지 이유로 위험했음
- 인터넷 테이블 BGP 업데이트에서 보일 것으로 기대되지 않는 속성임
- 내부 데이터가 모두
0x00인 손상된 속성임
- IOS-XR/Nokia SR-OS 같은 대부분의 구현은 RFC7606 기반 “BGP error tolerance”가 설정된 경우 이를 올바르게 걸러내 문제를 일으키지 않음
- JunOS와 Arista EOS 조합에서는 다른 결과가 나타남
- JunOS는 손상된 메시지를 전달함
- Arista EOS 장비는 JunOS 장비에서 온 것으로 보이는 해당 메시지를 받으면 세션을 리셋함
- 많은 인터넷 transit carrier가 JunOS를 실행하는 Juniper 하드웨어를 쓰기 때문에, Arista EOS를 운영하면서 JunOS 기반 상위 transit carrier 라우터에 연결된 네트워크는 일정 시간 인터넷 접근이 끊겼을 가능성이 있음
- 지속 시간은 최대 약 10분으로 추정됨
결함 속성을 추가한 후보 AS
- 해당 기간의 bgp.tools 아카이브를 필터링한 결과, 여러 origin AS가 사고에 관여한 것으로 보임
- 이는 속성이 prefix를 origin한 네트워크가 아니라, 더 넓은 인터넷으로 가는 중간 carrier에서 추가됐을 가능성을 시사함
- 문제 메시지 전체에서 반복 등장한 후보는 다음 4개임
- bgp.tools는
[…] 151326 138077 […]경로에서 결함 있는 BGP 속성 없이 impacted prefix를 관측함- 따라서 결함 속성을 추가한 주체는 Starcloud AS135338 또는 Hutchison AS9304일 가능성이 높음
- 속성을 포함한 업데이트에서 관측된 일부 prefix는 다음과 같음
156.230.0.0/16138.113.116.0/24163.171.102.0/24163.171.103.0/24163.171.104.0/24
인터넷 익스체인지로 번진 경로
- 사고는 Hutchison/AS9304가 많은 인터넷 익스체인지에 연결돼 있었기 때문에 더 커짐
- 문제 메시지는 IX route server로 보내졌고, 이 route server들은 보통 bird를 실행함
- Bird는 BGP SID를 지원하지 않아 메시지를 필터링하지 못했고, 여러 multi-terabit 인터넷 익스체인지로 그대로 배포함
- 그 결과 혼란은 인터넷 transit 세션을 넘어 더 넓은 범위로 확산됨
BGP Prefix-SID의 성격
- BGP Prefix-SID Attribute는 일반적으로 내부 BGP 세션에서만 보여야 함
- RFC8669에서 정의된 목적은 단일 네트워크 안에서 목적지까지 트래픽이 어떤 경로를 택할지 정하는 데 도움을 주는 것임
- 이 속성이 글로벌 라우팅 테이블로 새어 나온 이유는 외부 BGP 세션이 내부 세션처럼 설정됐기 때문일 수 있음
영향을 받은 네트워크와 관측 지표
- 정확히 누가 영향을 받았는지 단정하기는 어렵지만, 최초 문제 BGP 메시지 직후 네트워크 규모 대비 churn이 매우 컸던 곳을 기준으로 약 100개 네트워크가 문제를 겪은 것으로 집계됨
- 높은 신뢰도로 든 예시는 다음과 같음
- 평상시 bgp.tools route collector는 초당 약 20,000~30,000개 메시지를 수집함
- 이번 사고 중 10초 평균 메시지율은 150,000/s를 크게 넘음
- 많은 인터넷 경로에 상당한 장애가 있었음을 나타냄
벤더별 오류 처리 차이
- 근본 원인이나 실제 유발 주체가 완전히 명확하지는 않지만, 결함 메시지가 인터넷 규모로 전파된 사실은 BGP 오류 처리의 위험을 보여줌
- 다른 벤더들은 결함 속성을 감지하고 라우트 공지를 억제했지만, Juniper는 이를 peer로 전파함
- 해당 메시지가 Arista 장비에 도달한 뒤에는 BGP error tolerance 코드가 없었거나 결함이 있어 세션 리셋으로 이어짐
- Juniper의 JunOS BGP error tolerance 문서는 JunOS가 메시지의 모든 부분을 살피지는 않는다고 밝힘
- 이 동작은 JunOS 자신은 원격 유발 세션 리셋을 피하면서, 같은 메시지를 다른 peer 또는 고객 쪽으로 전달하는 결과를 낳음
운영상 함의
- 이번 outage는 짧았지만 더 큰 영향을 낳을 수도 있었음
- 더 많은 서비스가 IP 기반으로 이동하면서 인터넷 장애의 범위는 이메일 접근 실패를 넘어설 수 있음
- TV 방송 실패
- 긴급 서비스 전화 장애
- 이런 버그는 실제 세계의 인명 피해를 유발하거나 악화시킬 가능성을 높임
- 전체 라우팅 테이블을 가진 네트워크 운영자는 bgp.tools에 데이터 피드를 제공해 향후 사고 디버깅에 도움을 줄 수 있음
- 이미 2570개 실행 세션이 bgp.tools에 데이터를 제공함
- 설정 방법은 bgp.tools 데이터 피드 설정 문서에서 안내됨