내 컴퓨터는 어디에서 시간을 가져오는가?
(dotat.at)- 컴퓨터 시간은 보통 NTP에서 시작하지만, 그 뒤에는 기준 시계, GPS, 미국 해군천문대, 국제 시간 표준으로 이어지는 긴 공급망이 있음
- stratum 1 NTP 서버는 MSF·DCF77 같은 무선 신호나 GPS 수신기를 기준 시계로 삼고, 실제 환경에서는 GPS가 흔한 출처가 됨
- GPS 시간은 콜로라도의 Schriever Space Force Base와 US Naval Observatory Alternate Master Clock, 워싱턴 DC의 US Naval Observatory로 이어짐
- UTC는 원자시계 시간과 지구 자전을 맞추기 위한 표준이며, IERS의 Bulletin C와 BIPM의 Circular T가 윤초와 공식 UTC 차이를 관리함
- 현재 초의 세슘 기반 정의는 1955~1958년 Louis Essen·Jack Parry의 원자시계, William Markowitz의 천문 관측, WWV 무선 시간 신호를 연결한 보정 작업에서 이어짐
NTP에서 시작되는 시간의 계층
- 컴퓨터가 시간을 어디서 가져오는지에 대한 가장 짧은 답은 NTP임
- 다만 NTP 서버도 스스로 시간을 만들지 않으며, 출처를 따라가면 여러 계층이 이어짐
- NTP는 stratum 구조로 시간을 전달함
- stratum 3 NTP 서버는 stratum 2 NTP 서버에서 시간을 받음
- stratum 2 NTP 서버는 stratum 1 NTP 서버를 기준으로 삼음
- stratum 1 NTP 서버는 기준 시계(reference clock)에서 직접 시간을 가져옴
- 기준 시계는 영국의 MSF, 독일의 DCF77 같은 무선 신호일 수도 있지만, 많은 경우 GPS 수신기일 가능성이 큼
GPS 시간과 미국 해군천문대
- GPS 시간의 출처를 따라가면 콜로라도의 Schriever Space Force Base에 닿음
- Schriever에는 여러 극비 위성 및 관련 임무가 있어 가까이 접근해 좋은 사진을 찍기 어려움
- 현장에는 US Naval Observatory Alternate Master Clock이 있음
- 이 보조 마스터 시계는 워싱턴 DC의 US Naval Observatory에서 시간을 받음
USNO가 시간을 맞추는 세 가지 기반
-
원자시계
- US Naval Observatory의 첫 번째 기반은 많은 원자시계임
- 랙 장착형 세슘 빔 시계, 수소 메이저가 들어 있는 검은 상자, rubidium fountains가 사용됨
- USNO는 원자시계 전용 건물이 있을 정도로 많은 시계를 보유함
- Apple Maps에서 USNO 캠퍼스 중앙의 큰 공사 현장이 보였고, 이는 새로운 시계 건물로 확인됨
- 시계 정확도의 주요 한계는 온도·습도 같은 환경 안정성이며, 새 건물은 강력한 공기 조절 설비를 갖출 예정임
-
지구 자전 정보
- 두 번째 기반은 UTC가 원자시계 시간과 지구 자전 시간 사이의 절충이라는 점임
- USNO는 파리 천문대에 기반한 국제 지구자전 서비스 IERS에서 관련 정보를 받음
- IERS는 1년에 두 번 Bulletin C를 보내 6개월 뒤 윤초가 있을지 알림
- 윤초는 UTC를 지구 자전과 맞추기 위해 추가되거나 제거될 수 있음
- IERS Bulletin A는 지구 방향 매개변수의 정밀 정보를 담은 주간 공지이며, US Naval Observatory가 발송함
- GPS가 정밀 위치를 제공하려면 위성 아래의 지구 방향을 정확히 알아야 함
-
원자시계 검증
- 세 번째 기반은 USNO의 원자시계가 잘 작동하는지 확인하는 정보임
- 이 정보는 파리의 BIPM에서 오며, BIPM은 전 세계 표준 UTC를 유지함
BIPM, UTC, SI 초
- BIPM은 전 세계 국가 시간 연구소의 시간 측정값을 모아 공식 UTC를 결정함
- 주기적으로 발행되는 Circular T에는 공식 UTC와 각국 시간 연구소의 UTC 사이 불일치 정보가 담김
- BIPM은 국제단위계 SI 유지 책임도 가짐
- SI는 CGPM이 정의하며, CGPM은 1875년 미터협약으로 설립된 국제 조약 조직임
- UTC는 세슘 원자의 양자 측정에 기반한 SI 시간 단위의 구현임
- 현재 초의 정의에 들어가는 약 9.2GHz 숫자는 초기 세슘 원자시계 보정에서 이어짐
세슘 원자시계와 천문학적 초의 연결
- 1955년 Louis Essen과 Jack Parry가 첫 세슘 원자시계를 만들었고, 현재 초의 정의는 이 시계의 보정에서 나옴
- 원자시계 이전의 초는 천문학에 기반했기 때문에, Essen과 Parry는 원자시계가 기존 시간 표준에 비해 얼마나 빠르게 똑딱이는지 알아내야 했음
- 이 연결 작업에는 US Naval Observatory의 천문학자들이 참여함
- William Markowitz는 하늘을 관측해 시간을 측정함
- Louis Essen은 원자시계를 보고 시간을 측정함
- 두 측정을 맞추기 위해 둘 다 워싱턴 DC의 National Bureau of Standards가 송출한 WWV 무선 시간 신호를 들음
- 이 작업은 1955~1958년 3년 동안 진행됨
- Markowitz가 측정한 것은 ephemeris second였음
- 1952년 국제천문연맹은 시간 정의를 지구 자전이 아니라 태양 주위를 도는 지구 궤도에 기반하도록 바꿈
- 1930년대에는 지구 자전이 완전히 일정하지 않고 조금씩 느려지고 빨라진다는 사실이 발견됨
- 시계가 지구 자전보다 더 정밀해지면서 ephemeris second가 더 정밀한 새 시간 표준이 됨
- ephemeris second는 태양계의 수학적 모델인 천체력(ephemeris) 에 기반함
- 표준 천체력은 Simon Newcomb이 1800년대 후반에 만들었음
- Newcomb은 방대한 역사적 천문 데이터를 수집해 수학적 모델을 만들었음
- 이 모델은 1980년대 중반까지 표준으로 유지됨
- Simon Newcomb도 US Naval Observatory와 US nautical almanac office에서 일했음
- 더 이른 시기에는 별이 하늘을 가로지르는 모습을 관찰해 시계를 맞추는 방식이 더 직접적이었음
- 컴퓨터 시간의 출처는 Royal Greenwich Observatory가 아님
댓글과 토론
Hacker News 의견들
-
시간 유지와 관련해서 NIST Randomness Beacon도 있음: https://csrc.nist.gov/projects/interoperable-randomness-beac...
이 프로토타입은 60초마다 512비트 블록으로 전체 엔트로피 비트열을 생성해 게시하고, 각 값에는 순번·타임스탬프·서명이 붙으며 이전 값의 해시도 포함해 값을 체인으로 묶음
여기서 “시간을 블록체인에 올린다”는 농담이 있었는데, NIST가 이미 비슷한 일을 하고 있는 셈임- 이건 블록체인이 아니라 단일 작성자 Merkle DAG에 가까움
합의가 필요 없고, 단일 작성자가 있는 Git 저장소와 비슷함 - 이게 어디에 쓰이는지 예시가 궁금함
공개된 긴 난수 문자열을 체인에 올리는 게, 어떤 사건이 특정 시점 이전에는 일어나지 않았음을 증명하는 용도 말고 왜 유용한지 잘 모르겠음 - 왜 이걸 P2P 난수 시스템의 루트로 쓰지 않는지 늘 궁금했음
바뀌지 않을 몇 개의 키를 가진 신뢰 가능한 시간 소스가 있고 누구나 재전송할 수 있다면 꽤 유용할 것 같음
수동 설정 없이 가장 가까운 휴대폰이나 컴퓨터에서 시간을 받아오는 무설정 시계도 가능해질 수 있음
- 이건 블록체인이 아니라 단일 작성자 Merkle DAG에 가까움
-
컴퓨터가 시간을 자동 동기화하지 않도록 해두면, 시간이 얼마나 빨리 드리프트하는지 볼 수 있다는 게 놀라움
지금 주 데스크톱은 1.7초 빠른데, 몇 주 동안 시계를 갱신하지 않았을 가능성이 큼
그래도 이 정도면 심한 편은 아니고 다른 시스템은 훨씬 더 많이 틀어질 수 있음
왜 NTP로 자동 설정하지 않느냐면, 드리프트 속도를 보고 싶을 수도 있고, 실행 중인 서비스를 최대한 줄이고 싶을 수도 있고, 앞에 있는 이더넷 스위치가 너무 깜빡이지 않길 바랄 수도 있고, 시계가 많이 틀어졌을 때 무엇이 망가지는지 떠올리고 싶을 수도 있음
결국 답은 “내가 그렇게 원해서”이고, 많은 컴퓨터의 내부 시계나 크리스털은 전혀 정밀하지 않음- 크리스털 오차는 보통 20ppm 정도임
일주일이면 20ppm 기준으로 약 12초 정도 틀어질 수 있음
메인보드에는 아마 전원이 빠졌을 때도 시간을 유지하는 cr2032가 들어 있을 것임
크리스털 예시: https://www.digikey.com/en/products/filter/crystals/171?s=N4... - 자세히 말하긴 어렵지만, 어떤 IoT 제품은 NTP가 실패하면 모든 장치가 천천히 뒤처지게 되어 있었음
NTP를 고치면 시간이 앞으로 점프해 “같은 순간을 두 번 사는” 대신 인식된 시간에 공백이 생기기 때문에 이 설계가 마음에 들었음
그래서 속도계가 일부러 조금 높게 표시되는 것처럼, 크리스털도 컴퓨터가 미래로 미끄러지지 않도록 일부러 조금 느리게 만들어진다고 생각했음 - 약 40일 전 미니 PC를 홈 서버로 설정하면서 Fedora Server가 기본으로 NTP 동기화를 구성하지 않는다는 걸 몰랐음
2주 만에 30초 드리프트가 쌓였고, Prometheus가 경고했지만 처음엔 단일 노드에 모든 걸 올려서 생긴 경고라고 잘못 짐작했음
메트릭을 조회하다가 드리프트 때문에 오류가 나는 걸 보고 서버와 노트북에서date +'%s'출력을 비교했더니 차이가 30초를 훨씬 넘었음 - Wikipedia에 따르면 일반적인 크리스털 RTC 정확도는 ±100~±20ppm, 즉 하루 8.6~1.7초 수준임
온도 보상 RTC IC는 5ppm 미만도 가능하고, 실용적으로는 항해용 크로노미터의 전통적 작업인 천문 항법을 수행할 정도로 충분함
2011년에는 칩 스케일 원자시계가 나왔고, 훨씬 비싸고 전력도 많이 먹지만 50ppt 이내로 시간을 유지함
- 크리스털 오차는 보통 20ppm 정도임
-
흥미로운 해설이지만, 이 형식은 정보를 전달하기에 너무 불편함
슬라이드를 제거하고 일관된 문단으로 다시 쓴 뒤 핵심 이미지만 보조 자료로 다시 넣는 편이 나았을 것 같음- 누군가 오프라인에서 발표를 한 뒤 온라인에서 할 수 있는 일은 여러 단계가 있음
발표했다는 사실을 알리고, 녹화 영상을 올리고, 설명 없이 슬라이드를 PDF 등으로 올리고, 슬라이드를 HTML 페이지에 배치하면서 발표자가 말했을 내용을 곁들이고, 마지막으로 전체를 문단형 글로 다시 쓰는 것임
여기서는 1~4번까지 했는데 5번까지 안 했다고 불평하는 건 꽤 큰 작업을 추가로 요구하는 셈이라 뭐라 하기 어렵고, 애초에 발표를 읽을 수 있는 형태로 올려준 것만으로도 고마움
모바일에서, 특히 초기 버전은 읽기 어려웠다는 데는 동의하지만 “주석 달린 발표” 형식 자체가 나쁘진 않음
예를 들어 https://idlewords.com/talks/의 https://idlewords.com/talks/superintelligence.htm, https://noidea.dog/talks의 https://noidea.dog/impostor, https://simonwillison.net/tags/annotatedtalks/의 https://simonwillison.net/2022/Nov/26/productivity/ 같은 사례가 있고, CSS를 조금 조정해 이미지를 오른쪽에 두는 식이면 더 읽기 쉬워질 수 있음 - 읽어야 할 문장보다 이미지가 먼저 나오는 배치가 특히 헷갈렸음
“여기 NTP 패킷 그림이 있습니다” 다음에 책상에 앉은 남자 사진이 나오는 식임 - 실제 발표 영상을 보는 편이 훨씬 나음: https://ripe86.ripe.net/archives/video/1126/
- 이런 형식은 처음 봤지만, 호기심 많은 사람이 특정 주제의 토끼굴로 빠져드는 과정을 꽤 닮았음
마음에 들었음 - 의식의 흐름처럼 읽히는 재미있는 글이었음
- 누군가 오프라인에서 발표를 한 뒤 온라인에서 할 수 있는 일은 여러 단계가 있음
-
많은 장치에서 공통으로 쓰이는 자원인 NTP Pool도 언급할 만함
자원봉사자들이 운영하는 NTP 서버 그룹이고, 특히 오픈소스 계열 장치에서 자주 선택됨
Microsoft, Apple, Google은 각자 시간 서버를 운영하지만, 그 외 대부분에는 NTP Pool이 훌륭한 자원임: https://www.ntppool.org/en/- 한때 버그 있는 Snapchat iOS 릴리스 때문에 NTP Pool이 사실상 DDoS를 맞았던 일이 떠오름: https://community.ntppool.org/t/recent-ntp-pool-traffic-incr...
- 한동안 RIPE NCC의 GPS 동기화 PCI 카드를 써서 풀에 참여했었음
재미있었지만 기계실 환경에서는 돔 안테나를 계속 붙여두기가 어려웠음
특수 케이블을 싫어하고, 지붕 접근은 보안과 누수 측면에서 골칫거리였음
요즘은 루비듐 시계도 꽤 저렴함
지금은 Raspberry Pi로 집 사무실 창문 밖의 GPS 가시성과 가용성을 측정하는 Bert Hubert의 GPS 드리프트/가용성 프로젝트에 참여 중인데, 이쪽이 훨씬 더 재미있음
-
계측기나 측정 방법이 기준 물질보다 더 정밀하고 안정적이며 신뢰 가능해지는 순간은 흥미로움
그리고 누군가, 대개 한 개인이 마침내 그 사실을 발견하거나 어떤 경우에는 직접 그렇게 만들어냄
천문력 초는 태양계의 수학적 모델인 천문력을 기반으로 했고, 표준 천문력은 1800년대 말 Simon Newcomb이 방대한 역사적 천문 데이터를 모아 만든 모델이었으며 1980년대 중반까지 표준으로 유지됨
1952년에 국제천문연맹은 시간을 지구 자전이 아니라 지구의 태양 공전을 기준으로 정의하도록 바꿨는데, 1930년대에 지구 자전이 완전히 균일하지 않고 조금씩 느려지거나 빨라진다는 사실이 발견됐기 때문임
시계가 이제 지구 자전보다 더 정밀해졌고, 천문력 초가 더 정밀한 새 시간 표준이 되었음- 고등학교 때 이 내용을 배웠던 기억이 나지만, 이전에는 실제로 어떤 1초의 길이를 썼는지 궁금함
지구 자전을 기준으로 했다면 Newcomb이 모은 “방대한 역사적 천문 데이터”는 어떤 데이터였을까?
시간이 지나며 변하는 지구 자전 속도만을 기준으로 시간의 길이를 어떻게 신뢰성 있게 포착하고 저장할 수 있었는지 의문이고, 아마 다른 자연 현상과 비교한 데이터였을 것 같음
- 고등학교 때 이 내용을 배웠던 기억이 나지만, 이전에는 실제로 어떤 1초의 길이를 썼는지 궁금함
-
Big Time에 너무 종속되지 않으려면, 커뮤니티가 유지하고 민주화된 시간 추적 표준이 필요하다고 봄
- 사실 이미 거의 그런 구조 아닌가?
True Time™은 전 세계 연구소의 수십 개 원자시계를 사실상 평균내서 정해지니, 이보다 더 “커뮤니티 유지”와 “민주화”에 가까워지기 어렵다고 봄 - 글과 이 댓글을 보니, 근본 시간 유지 메커니즘에 대한 조직적 공격이 어떤 영향을 줄지 궁금해짐
중복성과 합의가 꽤 있어 보이지만, 어떤 시스템이 실패하고 어떤 시간표로 문제가 생기며 어떻게 복구될지 궁금함 - 맑은 밤하늘과 현대 휴대폰 카메라만 있으면 시계를 보정하는 것도 가능할 것 같음
초 단위 정확도도 터무니없는 기대는 아닐 듯하지만, 보정에는 비현실적으로 긴 시간이 걸릴 수 있음
- 사실 이미 거의 그런 구조 아닌가?
-
DARPA는 Robust Optical Clock Network (ROCkN) 프로그램에 자금을 대고 있음
이 프로그램은 크기·무게·전력(SWaP)이 낮고 GPS 원자시계보다 정확도와 보류 성능이 좋으며 실험실 밖에서도 쓸 수 있는 광학 원자시계를 만들려는 목표임
대형 클라우드 제공자 대부분은 GPS에서 시간을 얻되 GPS가 없을 때도 정확한 시간을 유지할 수 있는 Open Compute Time Card급 장비를 배포해둠
https://www.darpa.mil/news-events/2022-01-20 -
Raspberry Pi가 남아 있고 직접 Stratum 1 NTP 서버를 운영하고 싶다면 이 글이 있음: https://austinsnerdythings.com/2021/04/19/microsecond-accura...
- NTP 용도로는 예전 보드보다 Raspberry Pi 4를 쓰는 편이 좋음
구형 보드는 이더넷 포트가 USB 허브 뒤쪽에 있어서 네트워크에 밀리초 단위 패킷 타이밍 지터가 생기고, 마이크로초 단위 NTP 정확도는 얻기 어려움
재미를 더하려면 절연 상자에 넣고 CPU 부하를 걸어 따뜻하게 유지해서 Raspberry Pi를 오븐 보상 수정 발진기처럼 만들 수도 있음: https://blog.ntpsec.org/2017/03/21/More_Heat.html - GPS에서 시간을 직접 받는다면 그건 Stratum 0 서버임
Stratum 1 서버는 Stratum 0 서버에서 시간을 받는 서버를 말함
- NTP 용도로는 예전 보드보다 Raspberry Pi 4를 쓰는 편이 좋음
-
슬라이드 대부분은 GPS나 원자시계 같은 시간 측정의 물리학을 다루고 있음
그 자체로 흥미롭지만, 내 컴퓨터가 현재 시간을 어떻게 얻는지 이해하려면 “가정용 컴퓨터가 원격 시간 서버에서 보낸 패킷의 지연 시간을 어떻게 측정하나?”가 더 관련 있는 질문임
여러 왕복 시간의 지속 시간을 측정해 평균을 지연 시간으로 삼는지, 특정 왕복 중 갑자기 혼잡이 생기면 어떻게 되는지 같은 질문이 물리적 질문보다 더 신비롭게 느껴짐 -
어떤 시간 소스를 쓰는지 조심해야 함
10~15년 전쯤 우리 서버 중 하나가tick.usno.navy.mil과tock.usno.navy.mil을 쓰도록 설정돼 있었는데, Navy가 내보내는 시간에 “문제”가 있었음
하룻밤 사이에 여러 라이선스 서버가 인증하지 못했고, 시스템에 접속할 수 없게 됨
SSH도 몇 분 이내의 정확한 시간이 필요하다고 알고 있었는데, 같은 건물 다른 사무실에서 로컬로 로그인해 시간 불일치를 확인하고 시간 서버와 동기화 방식을 바꿔 해결했음- 몇 가지를 잘못 기억하는 것 같음
SSH는 아주 짧은 수명의 SSH 인증서를 쓰는 경우가 아니라면 시간에는 전혀 신경 쓰지 않음
- 몇 가지를 잘못 기억하는 것 같음