
시간을 0.000000001초보다 정확하게 맞춘다고?
분산 시스템 다뤄본 분들은 알 거예요. 여러 서버의 시계를 맞추는 게 얼마나 골치 아픈 일인지요. 보통은 NTP(Network Time Protocol)를 쓰는데, 인터넷 너머로는 수십 밀리초, LAN 안에서도 1밀리초 정도 오차가 생겨요. 좀 더 정밀하게 맞춰야 하면 PTP(Precision Time Protocol, IEEE 1588)를 쓰는데 이것도 마이크로초 단위까지가 보통이죠.
그런데 CERN(유럽입자물리연구소)에서 만들어서 오픈소스로 푼 White Rabbit이라는 기술은 차원이 달라요. 2,000km 떨어진 노드끼리 1나노초 미만으로 시계를 맞춰요. 1나노초가 얼마냐면, 빛이 30cm 가는 시간이에요. 이 정도 정밀도면 도대체 어디다 쓰는 걸까요?
왜 이렇게 정밀해야 했나
CERN에는 LHC(대형강입자충돌기)라는 27km 길이의 입자가속기가 있어요. 양성자를 거의 빛의 속도로 돌리다가 정해진 지점에서 충돌시켜서 새로운 입자를 만드는 장치인데요. 이때 충돌이 일어나는 정확한 시점에 수천 개의 검출기가 동시에 데이터를 잡아야 해요. 한 검출기가 1나노초만 늦게 트리거되어도 어떤 입자가 어디서 왔는지 추적이 꼬여버려요.
원래 CERN은 가속기 제어용으로 이 시스템을 만들었어요. 그런데 흥미로운 점은, 처음부터 완전한 오픈 하드웨어로 설계했다는 거예요. 회로도, FPGA 코드, 펌웨어 전부 다 공개되어 있어요. CERN OHL(Open Hardware License)이라는 라이선스도 이걸 위해 만들어졌고요.
어떻게 동작하는 걸까
White Rabbit은 세 가지 기술을 합쳐서 만들어요.
첫 번째는 Synchronous Ethernet(SyncE)이에요. 이게 뭐냐면, 일반 이더넷은 각 장비가 독립적인 클럭으로 동작하는데, SyncE는 마스터 클럭을 물리 계층에서 모든 슬레이브로 전파해요. 마치 오케스트라에서 지휘자가 박자를 알려주는 것처럼요. 이걸로 모든 장비가 같은 주파수로 똑딱거리게 만들어요.
두 번째는 PTP의 개량 버전이에요. PTP는 마스터가 "지금 몇 시야"라는 메시지를 보내고, 슬레이브가 받아서 시계를 맞추는 방식인데요. 문제는 메시지가 가는 동안 걸리는 시간이 매번 조금씩 달라서(jitter) 오차가 생긴다는 거예요. White Rabbit은 SyncE 덕분에 주파수가 이미 동기화되어 있어서, 메시지 전송 시간을 훨씬 정확하게 측정할 수 있어요.
세 번째가 핵심인데, Digital Dual Mixer Time Difference(DDMTD)라는 기술이에요. 두 클럭의 위상 차이를 피코초(1조분의 1초) 단위까지 측정해서 보정하는 회로예요. 그리고 광섬유의 길이까지 자동으로 측정해서 신호가 가는 데 걸리는 시간을 빼줘요. 광섬유 안에서 빛이 가는 속도까지 계산에 넣는 거예요.
가속기를 넘어 퍼져나간 기술
재미있는 건 이 기술이 CERN 밖으로 퍼져나갔다는 거예요. 금융 시장의 고빈도 거래(HFT)에서 White Rabbit을 쓰기 시작했어요. 거래소들이 "누가 먼저 주문을 넣었느냐"를 나노초 단위로 판정해야 하거든요. 도이체뵈르제 같은 유럽 거래소가 이미 도입했어요.
전력망에서도 써요. 스마트 그리드에서 여러 발전소와 변전소의 위상을 정밀하게 맞춰야 효율이 올라가는데, PMU(Phasor Measurement Unit)에 White Rabbit을 결합하는 연구가 진행 중이에요.
전파천문학에서도 핵심 인프라예요. 여러 망원경의 신호를 합쳐서 가상의 거대 망원경을 만드는 VLBI(초장기선 전파간섭계) 기술이 있는데, 망원경들 사이의 시간이 1나노초만 어긋나도 이미지가 흐려져요. SKA(Square Kilometre Array) 같은 차세대 천문 프로젝트에서 White Rabbit을 검토하고 있고요.
표준화의 길
2019년에는 White Rabbit의 핵심 기능들이 IEEE 1588-2019(PTPv2.1) 표준에 "High Accuracy" 프로파일로 정식 채택됐어요. 처음에는 입자물리학자들이 자기들 필요해서 만든 도구가 국제 표준이 된 거죠. 오픈 하드웨어가 어디까지 갈 수 있는지 보여주는 좋은 사례예요.
한국 개발자에게
솔직히 말해서, 일반적인 웹 서비스 만들 때 White Rabbit이 필요한 경우는 거의 없어요. 우리한테는 NTP나 잘해야 chrony 정도로 충분하죠. 분산 트랜잭션이나 로그 정렬 문제는 Lamport timestamp나 vector clock 같은 논리적 시계로 푸는 게 보통이고요.
하지만 알아둘 가치는 충분해요. 첫째, 양자컴퓨팅이나 자율주행처럼 정밀한 시간 동기화가 critical한 영역이 점점 늘어나고 있어요. 둘째, FPGA와 네트워크 프로토콜이 만나는 지점에 어떤 가능성이 있는지 보여주는 좋은 사례예요. 셋째, 오픈 하드웨어 생태계의 성공 사례로 배울 점이 많아요.
KAIST나 KISTI 같은 곳의 연구 시설, 한국천문연구원의 KVN 같은 전파망원경 네트워크에서는 이미 비슷한 기술을 검토하고 있을 거예요. 핀테크 쪽에서 거래소 시스템을 다룬다면 한 번쯤 마주칠 기술이고요.
마무리
"시간을 얼마나 정확하게 맞출 수 있을까"라는 질문 하나로 시작해서, 입자물리, 금융, 천문학을 잇는 인프라가 만들어졌어요. 여러분은 평소 개발하면서 시간 동기화 때문에 골치 아팠던 경험 있으신가요? 분산 시스템에서 시간을 어떻게 다루는지 한번 다시 생각해보면 좋을 주제 같아요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공