TECH 으로 돌아가기
TECH HACKER NEWS 오늘 9분 읽기 26 READS

네트워크가 2006년이라 믿은 밤: 텔스트라 장애가 남긴 시각 동기화의 교훈

네트워크가 2006년이라 믿은 밤: 텔스트라 장애가 남긴 시각 동기화의 교훈
SOURCE IMAGE · HACKER NEWS

2026년 7월 8일, 호주 최대 이동통신 사업자 텔스트라(Telstra)의 상당수 네트워크가 멈췄다. 음성 통화가 연결되지 않고 문자 메시지가 도착하지 않았으며, 긴급전화가 걸리지 않는 경우까지 있었다. 여파는 통신에 그치지 않아 열차, 결제 단말기, 발권 시스템, 전기차 충전기까지 영향을 받았다. 그러나 누군가 네트워크를 공격한 것도, 광케이블이 끊긴 것도, 전원이 나간 것도 아니었다. 원인은 멜버른의 한 섀시에 꽂힌 단 하나의 GPS 수신기였다. 정기 정비를 마치고 다시 켜진 이 장비가 현재 연도를 2006년으로 인식했고, 전국 규모의 이동통신망이 그 시각을 그대로 따라간 것이다. 텔스트라는 독립 기관인 테크놀로지 오딧 파트너스(TAP)에 조사를 의뢰했고, 그 보고서는 같은 유형의 실패가 생명을 다루는 서비스를 포함해 여러 핵심 시스템에서 재현될 수 있음을 보여준다.

왜 이동통신은 시각에 목을 매는가

현대 이동통신은 정밀한 시각 없이는 동작하지 않는다. 상향·하향 데이터를 분리하는 방식에는 FDD와 TDD가 있는데, FDD는 방향마다 별도의 주파수 대역을 배정해 충돌 없이 동시에 흐르게 한다. 반면 TDD는 하나의 대역을 아주 짧은 간격으로 번갈아 송수신에 쓴다. 통상 하향 트래픽이 상향보다 훨씬 많기 때문에, 고정 비율의 FDD는 상향 대역을 놀리게 되지만 TDD는 실제 트래픽에 맞춰 비율을 조정할 수 있다. 스웨덴의 주력 5G 대역인 3.5GHz를 포함해 대부분의 5G 대역이 TDD인 이유다. 대신 TDD는 정확한 시각을 전제로 한다. 같은 주파수를 쓰는 모든 셀이 동시에 송수신 방향을 전환해야 하며, 한 셀의 시계가 어긋나면 이웃 셀의 수신 구간에 신호를 쏘아 네트워크가 스스로를 방해하기 시작한다. 결국 시각 의존성은 사고가 아니라 설계 선택이었던 셈이다.

두 개의 방어막이 5년 간격으로 무너지다

NTP는 계층(stratum) 구조로 시각을 배포한다. 텔스트라의 2010년 설계는 호주 국가측정연구소(NMI)의 stratum 1을 정점에 두고, 시드니와 멜버른의 stratum 2 서버, 다시 세 곳의 stratum 3 서버, 그 아래 수천 개의 망 노드로 이어졌다. 여기서 중요한 것은 stratum 숫자가 시각의 정확성이 아니라 기준으로부터의 단계 수만 뜻한다는 점이다. 그래서 NTP는 잘못된 시각 소스에 맞선 두 가지 방어막을 갖는데, 둘 다 시각 소스들이 서로 독립적이라는 전제 위에서만 작동한다.

첫 번째 균열은 2020년 코어 타이밍 장비 교체에서 시작됐다. 새 섀시는 같은 상자 안에서 stratum 2가 stratum 3에 시각을 공급하지 못하게 되어 있어, 시드니의 stratum 3는 멜버른의 stratum 2에서, 멜버른의 stratum 3는 시드니에서 시각을 받도록 교차 배선됐다. 그 결과 각 지역은 stratum 2 소스가 둘에서 하나로 줄었다. 이 이중화 약화는 인지되고 수용됐다. 동시에 설정을 명시하는 클라이언트/서버 방식에서 노드들이 서로 시각을 주고받으며 알고리즘이 선호하는 소스로 수렴하는 피어링(peering) 방식으로 바뀌었다. 유연성은 늘었지만, 운영 중 실제 위상은 설계된 것이 아니라 창발적으로 결정되는, 아무도 승인하지 않은 형태로 조용히 재편될 수 있는 구조가 됐다.

피어링은 타이밍 루프의 가능성을 열었다. 타이밍 루프란, 서로에게서 들은 소문을 세 사람에게 확인하고는 모두 동의한다는 이유로 사실이라 믿는 것과 같다. NTP도 여러 소스를 비교해 다수와 어긋나는 값을 버리는데, 겉보기에 독립적인 소스들이 실은 서로에게서 시각을 받고 있다면 잘못된 값이 오히려 다수결로 채택된다. TAP 보고서는 이중화 상실은 알려져 있었으나 타이밍 루프 위험이 식별됐다는 증거는 찾지 못했다고 지적한다. 실제로 2025년, 멜버른 서버가 자기 아래 노드에서 시각을 받아오는 루프가 나타났다. 경보가 울려야 했지만 다른 경로로 정확한 시각이 들어오고 있었기에 표면적 피해가 없었고, 아무도 티켓을 발행하지 않았다.

근본 원인은 그대로였다

실제 불만은 단순했다. 멜버른이 유일한 stratum 2 소스인 시드니와 자꾸 연결을 잃었고, 대체 설정이 없어 피어링으로 아래 노드에서 대체 소스를 찾곤 했다. 2025년 10월, 엔지니어들은 2020년 이후 방치돼 있던 GPS 수신기를 켜서 멜버른 stratum 3 서버에 연결해 불안정한 시드니 소스를 대신하게 했다. 경보는 멈췄고 겉보기에는 해결된 듯했다. 그러나 멜버른이 왜 시드니 소스를 계속 잃는지 그 뿌리는 규명되지 않았고, 문제는 2026년 7월까지 남아 있었다. 더 심각한 것은 GPS 카드를 붙이는 순간 멜버른 서버가 stratum 3에서 stratum 1로 승격됐다는 사실을 아무도 이해하지 못했다는 점이다. 국가 기준과 동급의 최상위 권위 소스가, 아무의 검토도 거치지 않은 임시방편으로 탄생한 것이다. 이로써 2010년 설계는 사실상 남은 것이 없었다.

GPS는 시각을 1980년 1월을 기점으로 한 주간 번호와 주 내 초 단위로 방송한다. 민간 신호의 주간 번호 필드는 10비트여서 최대 1,023주까지만 세고 1,024주(19.6년)마다 0으로 돌아간다. 이 롤오버는 1999년 8월과 2019년 4월에 있었다. 멜버른 카드는 계속 돌아가고 있었기에 2019년 롤오버를 무사히 넘겼다. 켜져 있는 수신기는 지난주에 이번 주를 더할 뿐 어느 주기에 속하는지 다시 묻지 않기 때문이다. 그러나 전원을 끄면 그 지식이 사라진다. 정비로 꺼졌다 켜진 수신기는 주기를 처음부터 계산해야 했고, 펌웨어가 갱신되지 않은 탓에 이전 주기를 가정해 날짜를 1,024주 과거로 되돌렸다. NTP의 첫 번째 방어막인 '낮은 stratum에 더 큰 가중치'는 GPS 카드로 stratum 1이 된 멜버른 서버를 가장 신뢰했고, 이 판단은 프로토콜대로였기에 모든 클라이언트를 1,024주 어긋난 하나의 소스로 이끌었다. 그 값을 반박할 수 있는 소스들은 이미 그 아래에 놓여 있었다.

이 사고에서 실무자가 가져갈 교훈은 개별 결정의 옳고 그름이 아니라 그 합을 아무도 보지 않았다는 데 있다. 하드웨어 제약을 우회하고, 반복되는 장애를 멈추는 각각의 조치는 그 자리에서는 모두 방어 가능한 선택이었다. 문제는 두 방어막이 5년 간격으로 하나씩 사라지는 동안 누구도 전체 그림을 검토하지 않았다는 점이다. 이런 구조는 서서히 나빠지지 않는다. 몇 년간 매일 정확한 시각을 공급하다가, 멈추는 순간 한꺼번에 무너진다. 시각 동기화를 당연한 배경으로 취급하는 조직이라면, 이중화 상실과 위상 변경이 있을 때마다 그 누적 효과와 소스 간 실제 독립성을 명시적으로 재검토하는 절차가 필요하다는 것이 이번 보고서가 남긴 분명한 메시지다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://www.netnod.se/blog/telstra-outage-night-network-deci...
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...