第 15 部

NTP

563

第

1章

はじめに
現在広く普及している、ユーザと計算機が端末を介して対話的に作業を進める計算機
環境では、計算機はその内部に時計を持ち現在時刻を保持しているのが普通で、たとえばユーザからの求めに応じて現在の日時を提示したり、ファイルシステムにアクセスが発生した時刻を記録する場合を始めさまざまな局面で利用されている。
計算機がネットワークに接続されておらず単独で稼働している場合には時計の精度が問われることは少なく、日常生活において利用される腕時計や置き時計と同程度の精度があれば十分で、 秒程度の遅れ進みは問題にならない。例外は計算機を利用した計測制御システム中で時刻情報が参照される場合であるが、これも基準時刻からの経過時間が正確に計れれば済む場合が多く、時刻そのものの精度が秒以下オーダで問われることは少ない。
しかし 、計算機がネットワークに接続され、リモートファイルシステムや分散処理が普及すると計算機間の時刻のずれが問題となり、秒以下の精度で時刻が一致していないと的確な処理が行なえない場合がでてくる。たとえば複数の計算機がネットワークを介して同一のファイルシステムをアクセスした場合、全ての計算機の時刻が一致していないとファイルアクセスの順序を正確に把握できなくなるといった問題が生じる。このため計算機同士がネットワークを介して時刻を同期させる技術が必要になる。
さらに計算機ネットワーク同士が相互接続されるインターネット環境では、ネットワー
ク間の時刻のずれが問題となる。ネットワーク間でファイルシステムを共有したり分散処理を行なうことは今のところあまり一般的でないが、将来それが可能になるとネット
ワーク間で時刻が同期していないことは大きな問題となる。この問題の対策としては、正確な時刻を保持する計算機をネットワーク上のどこかに用意し 、他の計算機はこの計算機に時刻を同期させる方法が考えられる。そのための手法のひとつがであり、現在インターネット上の多くの計算機がこのプロトコルにもとづいて時刻同期を行いミリ秒の精度で互いの時計の時刻を一致させている。
ワーキンググループは、文部省国立天文台の研究者をメンバーに迎え
年度に新たに発足したワーキンググループで、
プロジェクトでは数少ない共同研究グ
ループである。本ワーキンググループは、国立天文台が管理運用するセシウム原子時計
を時刻情報源とする計算機を準備し 、この計算機の時刻情報をインターネットに安定供給することを目標に活動を開始した。
本報告は 章からなり、その一部は国立天文台のメンバーが執筆した。具体的には、

10ntp (network time

protocol) [171]
NTP

WIDE

8

1992

1

565

566

1992 年度 WIDE 報告書(WIDE) 2( NAO)(NAO )

3

4(WIDE)

1
章を大野が、 章を福島が、 章を大野が、 章を大野、鈴木、
久保、松田 以上
が 、 章を福島、松田、鈴木が、 章を鈴木が、 章を福島が、そして 章を大野が執筆した。

8

1 国立天文台の略称

5

6

7

2章
UTC と 国立天文台の役割
第UTC (CoordinatedUniversal

現在、我々が日常生活に用いている時刻系を協定世界時
1という。
は、世界中の原子時計から構成される国際原子時と、地球の自転運動の観測から決定される世界時の二つの時刻系を、以下のように組み合わせて作られている。まずの時間単位、つまり 秒の長
さはの時間単位である国際原子秒と同じであると決められており、国際原子秒は平均海水面 厳密にはジオイド 上で計った国際単位系
における 秒、すなわちセシウ
ムのある特定の放射の周期の倍の時間と定義されている。
の 日は、日出没や太陽の南中などの天文現象とは一切関係なく、機械的に
国際原子秒
である。
一方、年月日時分秒を示すの時刻自体はからあまり離れないように調整されている。
は、年の初めに世界時と一致するように決められたが、地球の自転が月などの潮汐力に基づく摩擦によりわずかであるが遅くなってきているため、その後は世界時とは全く独立に維持されてきている。具体的な調整法は、がに比べて遅れぎみであるため、余分の一秒 閏秒という をほぼ年に一回挿入することによりとの差の絶対値が秒を越えないようにしている。この結果、ととは秒の整数倍しか違わない。
年 月現在、との差は秒である。これまでのとの差の経過を表に示す。
は、世界中の天文台や度量衡の研究所あるいは時刻通報にたずさわる機関などに設置された多くの原子時計を相互に比較し 、重み付き平均をとることにより決定されている 表
参照 。残念ながら、現在大陸間の時計比較法の主流となっている人工衛星を使った方法では、比較精度が数十ナノ秒と個々の原子時計の測定精度より 桁以上悪いので、ひいてはそのものの精度はあまり良くない。このため、精度の点だけでいえば個々の研究所でのローカルな原子時計の方が高精度である。したがって、ローカル
な原子時計に基づく協定世界時も重要となってくる。このとき、研究所の略符号を付加
してローカルなを表す。例えば 、国立天文台 三鷹 の場合、天文台で維持しているはと表現する。これに対して、略符号が付かないは、すなわち平均として決定されると直接結び付けられた真のを指す。
およTime )
UTC

TAI

133

TAI(International Atomic Time)
UT1 (Universal Time 1)
UTC
1

(

)

TAI

1

UTC

1958

0.9

( 2.2

TAI

UTC

1

UTC 1
86400

UT1

(

UT1 TAI)TAI UTC
2.1)

UTC TAITAI0UTC=27

UT1

1

UTC

UTC
UTC UTC (NAOT)
1これは9192631770

1993 4
TAI UTC

TAI

(SI)

(

TAI

)

UTC theUTCUTCTAIUTC に限らないが、時刻に関する略語のスペルの順序が変っているのは、原語がフランス語だからである。

567

568

1992 年度 WIDE 報告書

表2.1: TAI と UTC の関係
年 月 日 1T
1972 1 1 101972 7 1 111973 1 1 121974 1 1 13
1975 1 1 14
1976 1 1 15
1977 1 1 16
1978 1 1 17
1979 1 1 18
1980 1 1 19
年

1981
1982
1983
1985
1988
1990
1991
1992
1993
注:

月

7
7
7
7
1
1
1
7
7

1T
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28

日

1T は TAI 0 UTC を秒単位で表した量である。

第 15 部

569

NTP

UTC

び
は決定精度こそ高くはないが、全世界的な時計比較を行うことにより時刻系としての確度は個々のローカルな原子時や協定世界時に比べて格段に向上しているといえる。
さて、ローカルなは真のより精度的には良いことが多いので、必ずしも値が一致するようには運用されておらず、 マイクロ秒程度の差はしばしば生じている。これは、オフセットや一定の進み遅れはハード ウェア的にあるいはソフトウェア的に補正できるのであまり気にしていないという「時計屋」の感覚によるものである。むしろ次以上の高次ド リフトとかワウやフラッターなど 短周期的な揺らぎを抑制するよう運用するのが常である。このことは、ローカルなをマイクロ秒の精度で利用する場合には気を付けていなければならない。

UTC

UTC

1

2

UTC

TAI と UTC の管理は、他の計量単位であるメートルやキログラムと同じく、1875 年に締結されたメートル条約に基づき設置された政府間委員会である国際度量衡総会 CGPM
およびその執行機関である国際度量衡委員会 C IPM が行っているが、実際の運用は CIPMの直接の下部組織である国際度量衡局 BIPM(パリ) において行われている。日本では、主に文部省国立天文台と郵政省通信総合研究所が国際原子時の維持に貢献している。特に、国立天文台は全世界をカバーするための つの主要ノード の一つ アジアノード であるため、およびの維持に枢要な位置を占めている。国立天文台では、 台のセシウム原子時計を用いてこの任に当たっている。 図
一方、閏秒を挿入するかど うかは
超長期線電波干渉計 ほかの天文観測によって得られるの動きに基づき国際地球回転観測事業とよばれる国際機関によって判断される。閏秒の挿入は、いつもというわけではなく、 月末もしくは 月末に行われる。例えば 月末の場合、 月
日時分
秒と 月 日 時 分 秒の間に 月日時分秒という閏秒が挿入される。挿入はの 時、すなわち日本時の 時に行われる。

TAI

UT1

UTC

Service)12659
7 1 0 0 0
UTC 0

3

VLBI(

(

( 2.1))
11)
IERS (Internat ional Earth Rotation

6

6 30 23 59 60
96 30 23 59

570

1992 年度 WIDE 報告書
表2.2: TAI および UTC に寄与している原子時計群

国研究所

略記号 所在地

アメリカ
フランス
ド イツ
アメリカ
スイス
ロシア

米海軍天文台USNO Washington 51
F20
連邦物理工学研究所 PTBBraunschweig 8
国立標準技術研究所 NIST Boulder
10
CH
11
国立物理電波技術
SU
Moscow
4
計測研究所
日本
通信総合研究所
CRL 小金井8
オーストラリア
AUS
7
イギリス
国立物理研究所
NPL Teddington 7
日本
国立天文台三鷹
NAOT 三鷹
6
オーストリアグラーツ工科大学
TUG Graz3
日本
国立天文台水沢
NAOM 水沢2
スペイン
アルマダ物理研究所 ROA
San
6Fernando
イタリア
国立電子技術研究所 IEN
Torino3
台湾
電気通信研究所
TL Chung-Li
3
オランダ
ヴァン・スインデン VSL
Delft
4
研究所
日本
計量研究所
NRLM つくば
3
中国
峽西天文台
CSAO Lintong
4
ド イツ
応用測地学研究所
IFAG Wettzell
4
スウェーデン
国立時刻周波数
SNT Stockholm
3
研究所
中国
上海天文台
SO
Shanghai2
ポーランド
国立標準研究所
PKNM Warsaw
3
カナダ
国立科学評議会
NRC Ottawa
2
イタリア
カリアリ天文台CAO Cagliari3
アメリカ
応用物理研究所
APL Laurel
5
イスラエル
国立物理研究所
INPL Jerusalem
3
:

TAI

UTC

1 UTC
1319 0.030
969 00.504
687 2.840
615 00.134
445 00.250
400 0.328
375 2.529
353 0.030
311 0.374
231 01.281
202 1.263
200 00.534
186 3.024
147 00.522
134 00.100
130 00.089
103 016.683
87 00.547
62 2.983
58 0.079
46 2.110
38 0.092
33 1.477
28 028.762
26 00.036
11 00.698

数 寄与点

注 表は、現在もしくはに寄与している世界中の研究所を、研究所毎の寄与点の順に並べたものである。スペースの関係で、寄与点が以下の研究所
個所 は割愛した。ただし 、フランス、スイス、オーストラリアについては国内すべての研究所をひとつとして扱っている。寄与点は、個々の時計について過去一年間の安定度 主に時間に線形なド リフトを除いた後の分散 の状況により
国際度量衡局 がつける評価点 最高
点 を研究所別に加えたものである。
国立
天文台三鷹 と国立天文台水沢 のように、同じ機関であっても所在地が異なる場合は別の
年 月 日現在のもので、この時点での総寄与点研究所として計上している。表中の寄与点はは点である。
は、研究所のローカルなと真のとの差をマイクロ秒単位で表した量である。

BIPM(
7298

)
) NAOM(

1 UTC

10

)

(
(

(19

)

)
NAOT(

100 )

1993 2 21
UTC

UTC

UTC(local) 0 UTC

図Africa

IEN

CAO

ROA

NPL

LDS

VSL
ORB

Europe

DPT

TUG

OP

SNT AOS

INPL

CH

PTB

IFAG

SU

PKNM
TP

MSL

NRLM

TL

SCL

KRIS

NAOT

AUS

Oceania

NPLI

CASO

CRL

NAOM

Asia

NIST

NRL

IGMA ONRJ

USNOSouth America

APL

North America

第 15 部

NTP

571

2.1: セシウム原子時計の分布

3章
ntp の概要
第3.1 ntp による時刻同期
rdate
ntp [171]

timed など
ntp が普ネットワーク上の計算機が時刻同期を行なう方法として、
コマンド、が開発され利用されてきたが、現在最も普及している方式は
である。
及したのは
や
が以下に挙げる問題を抱えていたためである。

rdate timed

rdate:

 指定した計算機の時刻に強制的に合わせてしまうので、修正される側の計算機では時刻が不連続に変化する。

 時刻情報を伝送する際の遅延時間を考慮していない。
timed:

 ブロードキャスト通信を用いるのでネットワークの形態によっては利用できない。
 timed を稼働している計算機すべてが「合議制」によって現在時刻を決定するため、決定された時刻が正確な時刻であるとは限らない。

 時刻情報を伝送する際の遅延時間を考慮していない。
上記の問題点を回避し 、大規模なネットワーク上で正確な時刻情報を共有する機構としてデラウェア大学のミルズによって開発されたのがで、上記の２
方法と異なりにミリ秒の誤差で同期させることができる。
の特徴は以下の２点を前提として設計されていることである。

UTC(David L.Mills)

ntp

ntp

 ネットワーク上に正確な時刻情報を保持する計算機がある。
 ある計算機と通信を行なう際、行きと帰りの伝送遅延時間が等しい。

572

第 15 部

573

NTP

Ti-3
Ti-2
Host

Peer
Ti-1

Ti

図

3.1: ntp パケットの交換

ntp では、2 つの計算機がネットワークを介して情報交換をし 、一方の時計を他方に同期させる。このとき以下のような方法で通信路の遅延を評価する (図 3.1)。
図 3.1は２台の計算機 Host と Peer が ntp パケットを交換する際のタイムチャートで垂直方向上から下へ時間が流れているものとする。このとき右側の Host の時計を左側の Peer の時計と一致させるには、ある時刻 T 0において Host と Peer 双方の時計が示す
0 0 T 0 を求める必要がある。 Host 側で正確に把握できるのは、
時刻の差 1T = TPeer
Host
Peer に向けてパケットを送った時刻 Ti03 と Peer からパケットが送られてきた Ti のみであり、Peer が Host からのパケットを受けとった時刻 Ti02 やパケットを Host に送り出した時刻 Ti02 は伝送遅延が未知である以上直接知ることはできない。そこで、Peer から Host に返送するパケットに Ti01 と Ti02 を付加する。 Ti01 と Ti02 がわかり、伝送遅
延が行きと帰りで等しいという仮定が成り立つ時 1T は以下の式で求められる。
1T = TPeer 0 THost = Ti01 +2 Ti02 0 Ti +2Ti03
ntp プロトコルを実装したプログラムはいくつか発表されているが、ntp の最新版 (version 3) に対応しているプログラムとしては xntp とよばれるパッケージが著名である。
このパッケージには、ntp プロトコルを処理するデーモンである xntpd 以外にいくつかの支援プログラム (ntpdate 、ntpq 、 xntpdc など ) が含まれている。xntpd は 、内部で
(1) パケット受信 (Receive Process)、(2) パケット送信 (Transmit Process)、(3) 時刻更新 (Update Process) 、(4) 時刻調整 (Local Clock Process) の４つの処理を行なっている。
これらの関係を図 3.2 に示す。

574

1992 年度 WIDE 報告書

更新手続き

ローカル
クロック
プロセス

受信プロセス

送信プロセス

ネットワーク

図

3.2

3.2: ntp のモデル

階層 (stratum) の導入(1 )

前節でネットワーク上に接続されている他の計算機の時刻と自計算機の時刻のずれTを算出できることを示した。次に必要なのは正確な時刻情報の入手である。
ワークステーションを始めとするほとんど 全ての計算機の内部時計の基準発信器は水晶発振子を用いている。水晶発振子を用いた時計は日常生活においては十分な精度を提供するがミリ秒の精度で時計を常に一致させるためには精度が足りない。もし水晶発振子より精度の高い信号源が入手できても、時刻をなどに一致させる方法が提供されていなければ全ての計算機の時刻がある一定値以内に収まるに過ぎない。
そこで、すでにが稼働しているインターネットでは、ネットワーク上にを供給する専用の機材を含んだサーバを何台か設置し他の計算機はこのサーバを参照するよ
うにしている。ただし他の全ての計算機がこのサーバを直接参照すると、このサーバやネットワークに不要な負荷がかかるので、階層という概念を導入しを保持するサーバを頂点という とする階層構造を構成している。すなわちを利用する全てのサーバはいづれかのに属し 、時刻調整は自分と同じに属するサーバか、自分より 階層だけ頂点に近い（すなわち、より精度の高い情報を保持していると考えられる）に属するサーバとだけ行なう。この方法には以下の特徴がある。

UTC

ntp

UTC

(stratum 1

1
stratum(stratum))stratumUTC

ntp
stratum stratum 1 サーバの精度がネットワーク上の全てのサーバおよびそれを参照している計算機の精度に影響を与える。

 stratum 数の小さいサーバほど stratum 1 サーバとの誤差が少ない。

第 15 部

575

NTP

stratum

したがって、各サーバの数はネットワークにかかる負荷を考慮した上で可能な限り小さくするのが普通である。

1

stratum 1

理想的には各組織に最低 台はサーバが設置されるのが好ましいが、日本の現状は理想から大きく隔たっている。
米国にはサーバを運用する組織が何箇所か存在するため、これらを参照する
サーバも数多く存在するが、年度初頭の日本国内にはサー
バは設置されておらず、インターネットを始めとするいくつかのネットワークで米国のサーバを参照する
サーバを運用しているにすぎない。そしてインターネットなどに接続されている各組織は国内最高位のサーバを参照しているため、各組織のは最高でも であり、他のサーバのはないし となっている。

stratum 1
stratum 2

stratum 1
WIDE

4

6

WIDE

1992

stratum 1

stratum 2

stratum

3

stratum 2
stratum

4章

第セシウム原子時計に基づくサーバの試作

NTP stratum 1

1992
(UTC)

stratum 1
stratum 1

すでに述べたように、
年度初頭の段階では日本国内にサーバは存在しておらず、正確な時刻情報の供給はもっぱら米国のサーバに依存していた。一方、国内でを採用する組織は増加を続けており、これらの組織が独立して米国のサーバをアクセスすると不必要な負荷をネットワークにかけると予想された。そこでプロジェクトでは
インターネットのにサーバを設置し 、各組織にはこのサーバを参照するよう提案したが、この方式には各組織のが最良でも になるという欠点がある。
このため国内にサーバを新設し 、各組織はこれを参照してサーバ確保したいという要望が高まってきた。
そこで、プロジェクトの大野と鈴木は文部省国立天文台の福島らとの情報交換
を
年度初頭から開始し 、同天文台が管理運用するセシウム原子時計を時刻情報源とするサーバの実現可能性について検討を始めた。その結果、以下の理由から
本ワーキンググループを発足させ本格的な研究活動を開始することになった。

ntp

stratum 1
WIDE
Center) stratum 2

WIDE

stratum

stratum 1

NOC (Network Operation
stratum 2
3
stratum 2

WIDE

1992
stratum 1

 技術的に特に大きな障害が見あたらない。
 天文台には必要な機材が整備されており、それらを利用できる。
 国内に stratum 1 サーバを設置することが国内のインターネットの発展に貢献する。
 世界的に見てもセシウム原子時計を時刻情報源とする NTP サーバに関する報告がなされていなかった。
本章では、本ワーキンググループが試作したセシウム原子時計を時刻情報源とするサーバについて述べる。

tum 1

4.1

star-

設計方針

ntp

[172]

セシウム原子時計に基づくサーバーの構成にはさまざまな案があったが、現段階では以下のような方式を採用している。これを方式と呼んでいる。

Mk{I

576

第 15 部

577

NTP

1. セシウム原子時計から正秒信号と 1MHz の正弦波信号をとりだす。
2. これを２組の 32 ビットバイナリカウンタに送り計数する。
3. カウンタの出力を、パラレル入力ボードを介してパソコン (PC9801) に取り込む。
4. このパソコン上には ntp サーバのサブセットを用意しておく。
5. 光ファイバで外界と電気的に遮断したイーサネットにこのパソコンを接続し 、対外サービスを行う。
この方式を採用した理由は、以下のとおり。

1. 国立天文台のセシウム原子時計から出力される時刻信号には、UTC (厳密には UTC(NAOT)) に正確に同期した秒パルス信号および 1MHz、5MHz、10MHz の正弦波信号があるが 、このうち 1MHz の正弦波信号が ntp で取り扱うデータタイプの一つ(tv usec) の計数単位と一致し 、利用しやすかった。
2. 国立天文台では、秒信号および 1MHz の正弦波信号を常時利用可能で、かつ 2 つの時刻信号の同期がマイクロ秒以下の精度で保証されていることから、単純な 2 進積
算回路で正確な計数ができると予想されたこと。
（伝送エラーがありうる場合の時刻
積算回路では、 進化回路、相互比較による判断回路、あるいは平滑化・統計回路などが必須であるが、これらを省略しても、高速なレスポンスが期待されたこと）

10

3. 内部同期精度の目標をマイクロ秒としたため、高速型 (遅れ 500 ナノ秒以下) のパラ
レル入力ボードが必要となったが、国内で容易に調達可能なものは PC9801 用しかなかったこと。

4. 当初は、時刻信号を取り込んだパソコンとは別に ntp サーバを搭載したワークステー
ションを用意し 、相互に通信しあいながら他の組織に対して時刻情報を提供する方針であったが、サーバとして想定していたの内部時計分解能 粒度
1がミリ秒と大きく 、また、
サーバプログラムが部分的に移植が可能になったため、信号取り込み機能とサーバ機能を一体化した方がよりよい結果が得られると予測されたこと。

10

ntp
ntp

SONY NEWS

()

5. 落雷によるサージや急激な電圧低下などの電気的な不安定要因がイーサネットを通じて時刻信号経路を逆行し 、供給元の UTC 信号、さらに原子時計側に影響する事態が予想さため、システム全体を無停電電源でバックアップし 、さらに天文台内の他のネットワークとの間を光ファイバーで結んで、他のネットワークとの間を電気的に分離するするのが好ましいと思われたこと。
ここでは上記の2)、3)、4) について順次検討する。

1 後述「ワークステーション内部時計分解能比較表」を参照。

578

1992 年度 WIDE 報告書

4.2

ハード ウェア | ntp サーバ用カウント 回路

1

計算機ネットワーク上において マイクロ秒の精度で計算機相互間の時刻同期を実現
するため
サーバ用カウント回路の設計と製作を行なった。
製作した回路は、に同期した原子時計の信号及び信号を入力とし、これをもとに ビットの時刻データに変換して、計算機のパラレル入力ボードに送出するものである。
ハード ウェアの設計を担当した著者の一人は、原子時計を扱うものの立場から、当初
時刻データとして 秒信号及び信号を計数するなら
進カウンタを利用するのが妥当だと考えた。しかし 、計算機内部での信号処理は進数に変換した方が好都合なので、カウンタ部分にはポピュラーな同期式 ビットバイナリカウンタを 個カスケードに接続して、 ビットのカウンタを形成した2 。
次に、原子時計と計算機ネットワークが電気的に相互干渉を起こさないように、フォト
カプラによって、カウント回路出力部を絶縁することを検討した。しかし 、標準的フォ
トカプラの応答速度は目的とする μ の分解能とくらべて遅く、各々のビットがそれ
ぞれが異なった遅れを持つ可能性がある。そこで、出力部ではなく入力部をパルストラ
ンスで絶縁することにした。この方式ならば原子時計の信号出力
信号
、パ
ルス巾
μ 、立ち上がり時間以下
信号に十分対応できる。
全体の回路構成を図に示す。入力部は信号及び信号共にパルストラン
スで絶縁され、アッテネータを介して次段へ接続されている。 このうち
信号は分配アンプにより 分配されており、一方は同期式 ビットバイナリカウンタ 個で形成される ビットの秒カウンタへ入り、もう一方はワンショットマルチバイブレータへ入る。 一方、信号は ゼロクロスコンパレータによってサイン波から矩形波に変換され、秒カウンタと同じ構成のビットのマイクロ秒カウンタへ入る。 ここで信号を分配したのは、マイクロ秒カウンタを 秒信号でリセットすれば秒以下の部分がマイクロ秒単位の進数 ビット 実際は ビット で表わされるためである。
また、マイクロ秒カウンタをリセットする信号は、分解能 μ を得るために、ワンショットマルチバイブレータでパルス巾約の信号に変換している。マイクロ秒カ
ウンタは
ビット全てをカウントするか秒信号でリセットするかをスイッチによって選択でき、秒カウンタは データロード スイッチによって任意の値にプリセットできる一方、リセットスイッチによってゼロにクリアすることもできる。なお、 ビットカウン
タがオーバーフローするにはマイクロ秒カウンタで約分を要し 、秒カウンタでは 約年を要する。通常はマイクロ秒カウンタを信号でリセットするようにしておけばマイクロ秒カウンタのオーバーフローは気にしなくともよい。
試作の段階では、当初、秒カウンタ出力部及びマイクロ秒カウンタ出力部にバッファ機
能がなかったため、ケーブルを延長した際に反射が生じて計数が正常に行なわれないという障害があった。そこで、出力段にバッファアンプを設けカウンタと計算機との間を結ぶケーブルを メートル程度まで延長できるようにした。

ntp

UTC

64

1pps

1

1MHz

1MHz

16

4

32

10

8

1 s

20 s

4.1

50ns

/1MHz
1pps

2

32
Shot)

:1Vrms)
1MHz

(1pps

4

1MHz

1pps

16

32

32

(

1
20

500ns

32

136.1

1pps

1

71.5

:10Vp-p1pps
8(Single)1 s

32

32 ビットのカウンタを 8 ビットカウンタの 4 段接続にしなかった事に特に意味はない

2ここで、

B.C

B.C

B.C

B.C

B.C

B.C

4

4

4

4

4

4

B.C

B.C

B.C

Amp.

B.C

32bit "sec." counter (utc.tv_sec)
B.C

Att.

4

B.C

SW’s
Pulse
Trans.

4

B.C

Amp.

1MHz

B.C

Amp.

B.C

Att.

Control
Logics

Pulse
Trans.

1 Hz

579

NTP
B.C

第 15 部

4

4

4

4

4

4

4

4

NOTE: B.C −−− 4bit Binary Counter
32bit "micro sec." counter (utc.tv_usec)

図

1pps

4.1: カウンタ装置の構成
1MHz

32

以上が原子時計の信号及び信号をそれぞれ
ビットのバイナリデータに変換するハードウェアの概要である。このサーバ用カウント回路は 台試作した。
号機はを電源としたが、 号機は電源に加えて
電源での運転も可能にし 、さらに時刻を表示するデジタル時計回路と つのビットカウンタの動作をモニタする回路を追加した。 図
参照 。

AC100V

2

LED

4.3

( 4.2

ntp
AC100V
)

2

32

2

DC

1

パーソナルコンピュータ用ソフト の開発

stratum 1

パーソナルコンピュータ側のソフトは、となるワークステーションにセシウ
ム原子時計の時刻情報を転送する機能を持つ。
開発言語は、ワークステーションとの互換性を考えて 言語とし 、マイクロソフトとそれに対応したアンガマンバスのソケットライブラリを使用した。
セシウム原子時計のおよび信号は、前節で述べたカウンタでビットの秒およびマイクロ秒単位で計数される。このうち秒カウンタは、で標準的に採用
3されている構造体のに一致させることができるので、一度設定すればソフトウェアによる修正や変換は不要である。なお、原子時計でサーバを実現する場合には、上に述べたとおりマイクロ秒カウンタを信号でリセットするように出来るので、マイクロ秒カウンタが秒 以上の値になることを考慮する必要がない。そのため、マイクロ秒カウンタ ビットのうち上位 ビット 20
秒
はコントロールビットなどに転用可能である。
パソコン上のソフトウェアは、パラレルインタフェースボードから つのアドレ
スに割り当てられた ビットのポートを介してデータを読み込む。こうして得られた
つの ビットデータを以下のような構造体に格納する。

C

Ver.6

1pps

C

1MHz

UNIX

struct timeval tv sec

1000000(1 )
32

)

8

8

12

ntp

(2 = 1000000
8

struct timeval

struct timeval {3

1pps

1970 年の 1 月 1 日 UT 0 時からの積算秒を現している

32

I/O

8

580

1992 年度 WIDE 報告書
long tv_sec;
long tv_usec;/* seconds *//* microseconds */}struct timeval

この型の構造体に格納された時刻情報は、ソケットライブラリを使ったデータ転送プログラムにより他の計算機に転送できる。
なお、カウント回路の動作確認のために上記プログラムとは別にパラレルインタフェー
スボードで読み込んだ
ビットデータをモニターするプログラムも併せて作成した。このモニタープログラムはカウンタ装置から送られてくる ビット分のデータを、 ビッ
ト毎に 進および進表示するもので、ハード ウェアや取得ルーチンのデバッグ時に効果的であった。

64

2

16

64
struct timeval

8

第 15 部

図

NTP

4.2: カウンタ装置の外観

581

5章
NTP サーバーに関する時計比較実験
第Stratum 1 サーバーを実際に運用するには、ntp サーバーの基本的部分、すなわちネッ
トワーク上の異なる計算機の内部時計同士の時刻比較をどれぐらいの精度で行えるかを知る必要がある。このために、前の章で述べた方式に基づき、計算機内部でセシウム原
子時計に基づく時刻信号を実現しているパソコン 以下、簡単のためにと呼ぶ とシステム時計のみを参照する普通のワークステーション 以下、簡単のため、と呼ぶとの間でイーサネットを介した時計比較実験を行った。
実験方法は、をクライアント、をサーバーとし 、おのおのの時刻系で測った時
刻を往復通信でやり取りすることにより、回線の遅れを 一応 差し引いた時計差を計測するというものである。以下では、時刻についてクライアントでは小文字を使って t1 、t2などと表し 、サーバーでは大文字を使って T1 、T2などと表すことにする。

(

PC

WS

PC

(

(

WS

)

)

)

実験に使用した計算機などの諸元は以下の通りである。

PC (クライアント )OS
C コンパイラ

NEC 社製 PC9801DA(CPU i80386、クロック 20Mhz)
MS-DOS Ver.3.3C
Microsoft C Ver.6

ライブラリ

アンガマンバスソケットライブラリ

ハード ウェアWS (サーバー)

SONY 社製 NWS821(CPU M68020、クロック 16.67Mhz)
OS
NEWS-OS Ver.3.3C
使用システムコール gettimeofday

ハード ウェア

実験環境は、国立天文台三鷹地区のメインのネットワークにつながっているワークス
テーションと、メインネット下のサブネットにつながっているを用いた。メインネッ
トワーク及びサブネット内で閉じたトラヒックはかなりの量であるが、二つのネットワー
クをまたがるトラヒックは比較的少ない状況であった。時計比較に使ったプログラムの概要は以下の通りである 図。

PC( 5.1)

クライアント(PC) では、582

第 15 部NEWS

PC98
プログラム実行
時刻を読み込む
データを送り出す

t0
t1
t1'

プログラム実行の遅れ
ネットワーク回線の混み具合による遅れ

NEWS内の負荷による遅れ(t1+t3) /2 = t2

ネットワーク回線の混み具合による遅れ

データを受け取る
時刻を読み込む

図

t3'
t3

583

NTP

T1 データが届く
Δt = T2 - t2
T2 時刻を読み込む
T3 データを送り出す

プログラム実行の遅れ

5.1: 経過時間に沿ったソフトウェアの動作

584

1992 年度 WIDE 報告書

1. 計測開始の合図をうける。
2. クライアントの内部時計を読みだす (この読みを t1とする)。
3. 読んだ値を文字列に変換し 、サーバーに向けて送信する。
サーバー (WS) では、
1. クライアントの通信を受信する。
2. サーバーの内部時計を読みだす (この読みを T2とする)。
3. 読んだ値を文字列に変換し 、クライアントに向けて返信する。
これをうけて、クライアントでは、

1. サーバーからの返信を受信する。
2. 再びクライアントの内部時計を読む (この読みを t3とする)。
さて、T2に対応するクライアント側の時刻を t2とする。回線の遅れが行きと帰りで一定であり、計算機内部の時間遅れを無視できるとすると

t2 =(t1 + t3)
2

WS の時刻 T2との時刻差 1t を
1t = T2 0 t2と定義し 、これを連続して多数回 (例えば 100 回) 測定する。もちろん、実装に当たってとしてよいであろう。そこで、

は、高速性を確保するために測定結果はすべて配列としてメモリ上に保存するなどの工夫が必要であるが、ここではその詳細には立ち入らない。
ところで、現実には、さまざまな要因により上に述べた仮定は正しくない。例えば 、クライアントもサーバーも時計を読む時刻と通信データを送受信した時刻は異なる。パソ
コンではシングルタスクで動いているので、この時刻のずれは送受信や時計読みだしな
どの行為のプログラムのステップ数に比例しており、パソコンの動作クロックが安定である限りほぼ一定であるとみなしてよい。一方、ワークステーションではマルチタスク
であるので必ずしも一定とは言い切れない。実際、ユーザプロセス実行中は常に割込みやが起きる可能性がある。しかし 、多数回測定することにより、これらの例外的なイベントは少数例として取り除くことができ、少数のそのような例外を除去したのち平均操作を行えば確度の高い時計差が得られるであろう。
以下に実験結果を述べる。まず、一回の測定に要する時間は、回線の混み具合にもよ
るがおおよそ ミリ秒であった。測定結果の一例を時間順にプロットしたものを図
に
示す。

DMA

2

5.2

第 15 部

585

NTP

秒

時刻差の測定値
ＮＥＷＳ−ＰＣ

0.005

0

0

100

回数

図

5.2: NEWS-PC 間における時刻差 (時間順)586

1992 年度 WIDE 報告書

NEWS-PC間の時刻差の測定値
8
7
6
個数

5
4
3
2
1
-6000
-5500
-5000
-4500
-4000
-3500
-3000
-2500
-2000
-1500
-1000
-500
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
5500
6000

0

マイクロ秒

図

5.3: NEWS-PC 間の時刻差 (頻度分布)
(1

100

)

1

横軸は何番目に測定したかのインデックス からまで 、縦軸は測定値 t である。
この場合、時計差の平均値は 回の回連続測定で標準偏差 ミリ秒程度で決定できる。これをさらに多数回繰り返すことによって時計差の平均値のばらつきは約 ミリ秒の精度で決定できることがわかった。
しかしながら、これはこのシステムの限界ではない。もう一度図を見てみよう。一
見、測定値は十分バラついているように見えるが、注意深く見ると測定値が鋸波状に増減を繰り返しているのがわかる。これは、サーバーの内部時計の分解能 粒度 がミリ秒しかないためにおきた現象だとおもわれる。
図
は測定値の頻度分布をとったものであるが、測定値の分布が幅ミリ秒の一様分布に近いことがわかる。実際、測定値に単純な統計処理を施すと、標準偏差が約 ミ
リ秒程度となるが、これは正規化一様分布の分散がであることから導かれる理論値

1

100

3

1

5.2

10

(WS)

5.3

(

10

1/12

)

3

10 = 2:88 ミリ秒
12=pとよく一致している。これは、測定値のばらつきがサーバーの内部時計の粗さによるためであることを裏付ける有力な証拠である。
さらに、比較のため、同様の実験をセシウム原子時計に基づく時刻信号を実現しているパソコン同士で行なった。どちらのパソコンも同一の時計信号を入力している。クラ第 15 部

587

NTP

秒

時刻差の測定値
ＰＣ−ＰＣ

0–0.001 0

100

回数

図

5.4: PC-PC 間における時刻差 (時間順)

イアント側のパソコンは上記と同じものを用い、サーバー側のパソコンはハード ウェア
だけ、内部クロックに置きえただけで後はまったく同じである。ネットワークなど実験環境は同じにした。
このときの測定結果の一例を時間順にプロットしたものを図に、その頻度分布を、図に示す間の実験では、サーバーもクライアントもマイクロ秒の分解能を持っているた
め、測定値の分布はガウス分布でよく近似できる。この場合、時計差の平均値は 回の回連続測定で標準偏差マイクロ秒程度で決定でき、これをさらに多数回繰り返すことによって時計差の平均値のばらつきは約数十マイクロ秒の精度で決定できることがわかった。
したがって、この実験結果から同一構内のネットワークすなわちベースであればわれわれの方式により数十マイクロ秒の時刻同期が可能であると推測される。実際にこの精度で時刻同期を実現するには、高い分解能の内部時計を持つワークステーションを用いて実験を重ねる必要があろう。

PC9801RA(CPU i80386

5.4

5.5
PC{PC

100

20Mhz)

1

300

LAN

588

個数

-700

1992 年度 WIDE 報告書

200

PC-PC間の時刻差の測定値

100

14

0

12

-100

10

-800

5.5: PC-PC 間における時刻差 (頻度分布)

-200

8

-300

6

-400

マイクロ秒

-500

4

-900
図

-600

2
0
-1000

6章
xntpd の修正による暫定 ntp サーバ実験
第xntpd を修正することで暫定的に ntp サーバを立ち上げてみる実験を行った。まだ実験中であるためレポートとしては不完全であるが、現状を報告する。

6.1

動機

ntp

最終的にどのような形でサーバを実現するのかは、まだ議論の余地があるが、すでに述べたように、いくつかのパーツが現実に動作している。

 セシウムクロック
 バイナリカウンタ
 パラレルインターフェースを実装した PC9801
最終的な ntp サーバに必要な機能のうち現時点で不足しているのは、以下の二つのう
ちいずれかである。

 PC9801 上で動作する、完全な ntp サーバ
 何らかの UNIX が動く機種で動作する ntp サーバへのデータの正確な受渡し機構

ntp

PC9801

現実問題として、の仕様を全て満たすサーバを上で実装するのには多くの労力と時間がかかる。逆に、上でセシウム原子時計を直接利用するには、まだハード ウェアが不足している。

UNIX

そこで、正確さという点では難点があるが 、まず実験環境を用意し 、正確さについて
1の情報を得るために、イーサネットを介して上で動作する
サーバと上で動作するセシウムクロックカウンタを連係する実験を行った。
本来サーバは直接接続されているデバイスから読みとるのにどれだけ時間がかかるのかなどといったパラメータを持つことにより、なるべく誤差が生じないように工夫している。そこにイーサネットという全く時間的に不安定な要素を取り込むのは問題であるが、以下の点から有効であると判断した。

UNIX

ntp

1 実験では、最新版である

Version 3 サーバを用いた

589

xntp

PC9801

590

1992 年度 WIDE 報告書
Ethernet
Ethernet

UNIX
Work Station

DOS PCUNIXWork Station

64

From Cesium Clock
1 Hz pulses

Counter

1 MHz clocks

図6.1: xntp 実験環境

 ntp サーバを動かすために必要な技術を整理できる
 前の章の実験ではっきりしているように、同じセグメント上に他のイーサネットノー
ドがつながっていなければネットワークトラヒックによっておこる遅延による影響は比較的少ないはずであり、が本来もつリアルタイム性を阻害する要因を考えれば差はないといえる。

UNIX

 反対に、ネットワークを間に介することによってどの程度影響が出るのかを知る手がかりとなる以下、その方法について説明する。

6.2

実験系の構成 (ハード ウェア)

実験系の構成を図6.1に示す。

PC9801 と実験用ワークステーション (今回の実験は SONY NEWS) を同一イーサネッ
トセグメントに接続する。さらに、観測用のワークステーションを用意した。実験用ワー
クステーションは的に接続されているので、他のサイトから実験内容を参照す
ることのみならずサーバとして実際に参照できるためプロトコルを介してクロッ
クを実際に同期させる事が出来る。

Internet
ntp

6.3

ntp

実験系の構成 (ソフトウェア)

ソフトウェアは

PC9801 側と NEWS 側双方に用意する。

第 15 部LI

VN Mode591

NTP

Stratum

Poll

Precision

Root Delay (32bit)
Root Dispersion (32bit)
Reference Idntifer (32bit)
Reference Timestamp (64bit)

Originate Timestamp (64bit)

Receive Timestamp (64bit)

Transmit Timestamp (64bit)

Authenticator (optional) (96bit)

図6.2: ntp プロトコル パケットフォーマット

6.3.1 PC9801 側のソフト ウェア

ntp プロトコルの一部を実装したプログラムを、先に述べたソケットライブラリを用いて作成した。ntp のパケットが送られて来ると、時刻などの情報を埋めこんだリプライパ
ケットを作り返信するというものである。ここで言う「時刻」とは、PC9801 に接続されたバイナリカウンタで設定された値である。

ntp packet(パケットフォーマットは図 6.2参照) を受け取ると、まず、受Receive Timestamp に設定した後、以下の値を設定する。

具体的には、
け取った時刻を Stratum = 0
 Polling Interval = 64 (本来正しくない) Precision = 0
 Root Delay = Root Dispersion = 0
 Reference Clock Identi er には ATOM(原子時計) を設定
 Reference TimeStamp には、本来、最後に時計が校正された時刻が入るべきである
が 、適当な値が無いため受け取り時刻と同じ時刻をセットする。

Transmit Timestamp に時刻をセットし 、

この後、パケットを実際に送出する直前に、パケットを送出する。

592

1992 年度 WIDE 報告書

6.3.2

ワークステーション側ソフト ウェア

SONY NEWS xntpd

ワークステーション側は、にを若干変更したものを用いる。当初
は他のリファレンスクロックと同等の扱いを正しくするようにサブルーチンを記述する予定であったが、ソフトウェア担当グループがというプログラムの全貌をまだ十分に把握できていなかったため、以下のような方針で修正を行った。

xntpd

 xntpd を local clock を参照するように設定する (ntp.conf)
 local clock の取り出しは gettimeofday を呼び出すが、その部分で PC9801 側とやりとりを行って値を返すルーチンをはめ込む

6.4

実験

以上のハード ウェアを組合せて適切にセットアップを行うと、セシウムクロックを基準とする
サーバの準備が整う。このサーバから、観測用のワークステーションがク
ロックを参照すれば 、そのワークステーションはセシウムクロックに正確に同期する。

ntp

実験はセシウムクロックを厳密に温度管理しない状態で行ったが、ミリ秒単位までク
ロックは狂うことはない2ので実験に支障はない。
この状態で、外部3から来たクロックとの比較を行った。比較は観測用ワークステーショ
ンとに接続された他のサイトの双方で行った。

Internet

xntd local clock

gettimeofday
PC
ntp

は
を読み出すように設定されているため、具体的には、
システムコールを呼び出すが 、その部分が置き換えられているため、側の簡易サーバへ問い合わせパケットを送出する。簡易
サーバはセシウムクロックを読み、必要なリプライパケットを組み立てて返送する。
は得られた結果を元に内のクロックを同期させる。つまり、に同期するわけである。このことから分かるように、が動作しているワークステーションのクロックはこのによっては同期されない。

xntpd

ntp
xntpd
UTC(NAOT)
xntpd

xntpd

xntpd

gettimeofday

一方、ワークステーション上の以外のプログラムは、正しいシス
テムコールを用いてワークステーションの内蔵時計を参照しているので、この双方のクロックを比較することで稼働状況を知る事が出来るわけである。さらに
インター
ネット上の何台かのマシンから、国立天文台のサーバを参照し 、時刻情報が取得できることを確認した。

xntpd

2 天文台の保時室ではナノ秒のオーダでの管理が行われている。
3 正確には国内には

している。

WIDE

stratum 1 サーバはまだ存在しないので、海外の stratum 1 サーバを間接的に参照

第 15 部

6.5

NTP

593

今後

1992 年度初頭より開始された本研究は、ハード ウェアの構成の検討などから始めて、ようやく ntp サーバが立ち上がる状態に達した。
しかし 、実験を始めた直後で、まだ十分な数値的データがとれていないため、客観的な結果を示すには至っていない。
今後の計画としては、プロトコルおよびについて理解を深め、「暫定サーバ」にこの知識を反映させる。次に、コンパチ機などに直接クロックを読み出す事が出来るハード ウェアを用意し 、のド ライバを作成する予定である。

ntp

IBM PC
xntpd

xntp

第

7章

今後の展望
ntp

当面の目標としては、まず、現在のセシウム原子時計ベースのサーバーを長期間試験運用し 、なるべく早い時期に定常運用に移行することが肝要である。定常的に運用する場合、国立天文台側にはなんら問題はなく、むしろ国の共同利用機関として、広く全国の研究者ひいては国民に利用されるサービスを行うことは望ましいとさえいえる。
次のステップとして以下のことが考えられる。

1. 現在のサーバシステムを時刻信号取り込みの部分も含めて PC9801 から DOS/V 系に移植する。

2. 何らかの形でパソコンあるいはワークステーションからハード 的に時刻信号 (秒パルス) あるいは位相信号 (例えば 1MHz) をとりだし 、計算機内部で想定している時計面と現実の世界での UTC の比較をタイムインターバルカウンターなどでハードウェア的に計測できるようにする。

3. イーサネット以外の各種の伝送経路 (FDDI など ) を用いて通信実験を行い、LANを介してどの程度の測定精度が得られるかを追求する。

4. マイクロ秒の分解能をもつ内部時計を有するワークステーションとの間で通信実験を行い、イーサネット上でどこまでワークステーションの時刻同期が行えるか同期
精度の追求を行う。

1)

2)

例えば 、 ができれば諸外国でも同様のサーバーが導入しやすくなるであろうし 、が確立されればこのサーバーが提供する時刻系の確度が飛躍的に向上する。また、 やが達成されれば電波干渉計や地震計アレイなど時間差方式を用いた天文学や地球物理学などの観測精度を高めることが可能となり、これらの学問の発展への寄与は大きい。
しかし 、を初めとする各種広域時刻同期システムが電話回線 一般であれ専用回線
であれ を利用する限り、伝送による時刻遅れおよびその揺らぎを解消することは難しい。これを解決するにはサーバが数量的にかつ通信体系の上で広範に分布することが重要である。たとえ、日本全体の計算機ネットワークで国立天文台が数十マイ
クロ秒の精度・確度のサーバを提供したとしても、いったん電話回線が介入すると精度・確度ともに劣化してしまう。したがって、理想的には各のノードに一台ずつ、ここで述べたような
サーバが普及することが望ましい。しかし 、セシウム原子時

3)

4)

)

ntp

(

stratum 1

LANstratum 1594

第 15 部

595

NTP

1

計は 台約一千万円と高価であり、なおかつその精度維持には多大の労力と維持費がかかるため、セシウム原子時計ベースのサーバを普及させることは現実的ではない。

GPS
ntp(Global Positioning System)

GPS

この目的のためには時に基づくサーバーを開発することが近道であろう。
とは全世界測位システムの略で、年代にいつでも世界中どこでも位置と時刻を知る手段として米軍により導入されたシステムである。このシステムでは、約二十個の人工衛星にセシウム原子時計をのせ、と同期された時刻系
時 に基づき時刻信号を常時発射させている。歴史的理由により時はに比べてきっかり 秒だけ遅れている。式で書けば以下のようになる。

1990
TAI

(GPS )

9

GPS

TAI

TAI { GPS 時 = 9 秒

GPS 時は TAI と同様 UTC とは関係なく進む時刻系であるが、 UTC との差に関する情報も GPS 衛星から放送されているため、受信機から UTC の時刻情報を取り出すことができる。セシウム原子時計のように秒信号を直接パルスの形で取り出すことは普及版の受信機ではできないが、一部の専用受信機では可能で専用受信機の場合ほぼマイクロ秒の精度が得られる。この時注意しなければいけないことは、時は真のに基づいてではなく、米海軍天文台のローカルなによって運用されているという点である。このため、マイクロ秒の確度はないと考えなければならない。ちな
みに、の決定に用いるためのローカルな原子時計間の時刻同期は、高級な専用受信機を複数台使って特殊なスケジュールに基づいて観測することにより行われており、その同期精度は数十ナノ秒である。
価格面から見ると普及版の受信機だと万円以下、専用受信機でも万円程度であり、セシウム原子時計に比べはるかに廉価である。さらに受信機はターンキーシス
テムでありかつメンテナンスフリーであるため、導入・運用は非常に容易である。さらに心強いことに受信機はかなりの数の日本メーカーが開発に携わっているため、サーバー用に特注することも不可能ではないと考えられる。
さて、秒パルス信号が出力できる専用
受信機に基づくサーバ これを方式と呼ぶ を開発するには、現在の方式の大半がそのまま利用でき、変更点は以下に挙げる程度なので、その開発は比較的容易であると予想される 図
参照 。

GPS

(USNO)

UTC

GPS

UTC

TAI

20

GPS

100

GPS

)

ntp

GPS
Mark I

ntp(

Mark II( 7.1)

1. GPS 受信機は正確な秒パルス信号しか出さないので、時刻積算回路のなかで自分自身でマイクロ秒を積算する必要がある。今のところ、最も有力な手法としては、内部に水晶発振回路を埋め込み、受信機からの秒パルスに同期するよう位相同期ルー
プをかける方法を考えている。

2. GPS 自身がシステムとして正式運用に入った現在、日本上空で GPS 衛星が 1 個も見えないなどの理由で GPS 時の秒信号が途絶することはあまりないだろうが、それでも 24 時間確実に受信できる保証はまったくない。従って、GPS 時の場合、単なる積算秒信号をそのまま tv sec とするわけにはゆかず、受信機が受信した年月日時
分秒などの時刻情報を RS232C 経由で計算機内部に取り込み、きちんと同期させる必要がある。

596

1992 年度 WIDE 報告書

GPS衛星群NAO 三鷹恒温室

Stratum 1 ntp Server
Cesium ClockSlave ntp
ServerSlave ntp Server

Slave ntp Server

Slave ntp Server

図Slave ntp Server

7.1: 専用 GPS 受信機に基づく ntp サーバ
GPS

注： 図ではアンテナを示すのにパラボラアンテナの絵を用いているが、衛星は静止衛星ではなく複数参照することになるので、アンテナは無指向性である。

第

8章

おわりに
NTP

本年度あらたに創設されたワーキンググループでは、国立天文台の協力を得てセシウム原子時計を時刻情報源とするサーバを試作し 、これがインター
ネット上から利用可能であることを確認したが、残念ながら今年度は試験運用の域をでることなく終了した。
来年度の最初の目標は、前章でも述べたように定常運用に移行することである。その際、パソコンとワークステーションが連携して時刻情報を提供する現行の暫定的システ
ムを廃し 、仕様を全て満たしたサーバをマシン上に構築するか、カウンタ回路の出力を直接取り込めるマシンを利用する方針で望みたい。このうち後者を採用する場合、ワークステーションのかわりに
あるいは
が稼働する
互換機を利用する予定である。これは以下の理由で「セシウム原子時計から時刻情報を得て稼働するマシン」として適切であると考えたからである。

UNIX

PC

stratum 1

ntp

WIDE

DOS

BSD/386

386BSDIBM

UNIX

 ハード ウェアが回路図のレベルで公開されている。
 OS のソースコードが提供されている。
 OS がマイクロ秒の精度で時刻情報を保持できることがはっきりしている1 。
このためには、以下の作業が必要になるが、これらはいずれも来年度の早い段階で実現可能である。

 カウンタ回路の出力を IBM PC 互換機に取り込むための高速パラレル入力ボードの調達。

 カウンタ回路の出力をユーザプログラムが参照するための機構の提供。（たとえば 、/dev/cesium といったキャラクタデバイスの作成）
 カーネルのソースコード の変更。

GPS

stratum 1

また、本年度は検討だけに留まった
受信器を利用したサーバも実装し、インターネットの各組織が独自にサーバを起動できる環境を構築
したい。

WIDE

1 付録

A 参照

597

stratum 1

謝辞
本研究に対し 、平成謝します。

4 年度国立天文台留置金の援助をいただきましたことをここに感

598

9章
付録: UNIX ワークステーションの内部時計の分
第解能調査
ntp サーバーの試作の過程で、現行の UNIX ワークステーションの内部時計1がどの程度の分解能 (粒度) を持っているかを知る必要が生じたので、これを調査した。
gettimeofday システムコールは、呼び出された時点の内部時刻を struct timeval 型の構造体で返す。そこで、連続して gettimeofday を呼び出し 、返される内部時刻の表を作成してみた。得られる値は内部時計の基本単位 | 粒度 | の整数倍であるから、値の変化から粒度を推定することができる。

1

粒度が非常に粗いか計算機が十分速い場合、すなわち 回の呼び出しに要する実時間
が粒度より短い場合、内部時刻は一定回数同じ値を示したのち急に粒度の大きさだけ変化する。したがって、内部時刻の増分もしくは第 階差 回前の時刻との差 をとると、または粒度の整数倍であり、多くの場合粒度そのものとなる。つまり、内部時刻について十分多くの連続したサンプルをとれば 、そのサンプルの第 階差の でない最小値が粒度を与えることになる。

1

0

(1

)

1

0

反対に粒度が荒いか計算機が遅い場合、内部時刻はほぼ一定の時間だけ増えつづけるが増分もまた粒度の整数倍であることから粒度を推定することができる。つまり、上記の方法で第 階差の代わりに第 階差の増分、すなわち第 階差、を用いればよい。ところで、第 階差が もしくは粒度の整数倍の場合、第 階差の絶対値も もしくは粒度の整数倍になるため、第 階差そのままでなく第 階差の絶対値を用いることにすれ
ば 、粒度と計算機の速度の関係よらず有効である。

1
1

0

1

2

このアルゴ リズムで動く簡単な

2

2

2

C プログラムを以下に示す。

#include <stdio.h>#include <sys/time.h>#define MAX 1000
void main()
1 具体的にはBSD 系 UNIX の gettimeofday システムコールによって返される値

599

0

600

1992 年度 WIDE 報告書{
int i, d2, min_d2;
unsigned int usec[MAX];
struct timeval tv;
struct timezone tz;
for(i = 0; i < MAX ; i++) {gettimeof day(&tv, &tz);
usec[i] = tv.tv_usec;}
min_d 2 = 99999;
for(i = 2; i < MAX; i++) {d2 = usec[ i] - 2*usec[i-1] + usec[i-2];
if(d2 < 0) d2 = - d2;
if(d2 > 0 && (i == 2 || d2 < min_d2) ) min_d2 = d2;}
printf("Time Resolution = %d (micro sec)\n", min_d2);}
このプログラムによって国立天文台三鷹2 及び東京大学教養学部3 にある各種のワーク
ステーションで得られた結果を表に示す。
およびの製品の場合、粒度は マイクロ秒でありに時計面が合うかど う
かを別にするとミリ秒以下の高精度のサーバーとしての資格は十分であると考えられる。
製品の場合は、
が
に、また
が
にそれぞ
れ近いことからビットシフトしたときほぼ 秒になるような粒度を採用していることがわかる。
製品の場合はやや不思議な振舞いを示す。単純にこのプログラムを適用するととのいずれについてもより数十少ない値となり、さらにその値が毎回微妙に変動する。詳しく途中経過を検討すると、ほとんどの場合値は呼び出されるごとに ずつ増えるため、一見粒度が マイクロ秒のような印象を与える。しかし数十回連続して値が ずつ増えていった後、急に近く増えての整数倍の値にリセットされる。このことから、実際の粒度はミリ秒と推測できる。
値が呼ばれる度に ずつ増える現象は、おそらく時間計測などの用途でを呼び出すときに差が にならないようにするため同じ値を帰さないようにしているのためと思われる。

HP

9.1

Sun

1
ntp
976 1000000/1024
1

DEC

SONY
NWS821 PWS1550

1

10000

tv usec
gettimeofday
2
3

mtk.nao.ac.jp ド メイン
c.u-tokyo.ac.jp ド メイン

UTC3906 1000000/256

10000

tv usec

1

1

0

1

tv usec

10000
10

tv usec

第 15 部

NTP

601

9.1: ワークステーションの内部時計の粒度
機種名
OS+Version
粒度
DEC pc486DX2 BSDI BSD/386 V1.0
1
HP 9000/715
HP-UX 9.01
1
Sun SS-10
Solaris 1.1
1
Sun 4/390
Solaris 1.1
1
Sun Sparc IPX
Sun OS 4.1.2
1
Sun Sparc 1+
Sun OS 4.0.3
1
DEC 3000/400
DEC OSF/1 V1.2
976
DEC 3100
Ultrix 4.2
3906
IRIS Indigo
IRIX 4.0.2
10000
Solbourne S4000 OS/MP 4.1A
10000
Sony NWS3400
NEWS-OS 4.1.2R
10000
Sony PWS1550
NEWS-OS 4.2C
10000
Sony NWS821
NEWS-OS 3.3C
10000
Sony NWS730
NEWS-OS 3.3C
10000
Sun 3/50
Sun OS 4.0.3
10000
Sun 3/80
Sun OS 4.1.1
10000
TOSHIBA SparcLt OS/AS 4.11
10000
SUMI StationSEIUX 3.2000
注: 粒度はマイクロ秒の単位で表している。粒度の欄で、0 0 0はシステムコール等の表不備により測定不能であることを意味する。

602

1992 年度 WIDE 報告書