要約

  • 1990年6月のRFC 1165は、OSI遠隔操作サービス上でNTPを動かす実験を提案した。相手の状態を接続済み、接続中、受け入れ中、切断済みに分ける。
  • 従来のNTPは直近八回の転送への応答から到達性を推測した。接続型の実験では回線の成立や切断がその情報を直接示し、時刻の測定は引き続きNTPの交換が担った。

相手がいるかと、時計が合うかは別の仕事

時刻を比べる前に、向こうの機械と話せるかを知りたい。データグラムの上にあるNTPは、最近の返事を手がかりにする。RFC 1165が説明する到達性のシフトレジスタは、直近八回の転送で応答があったかを残す。八回続けて返事がなければ相手を到達不能とみなす。電話を八回鳴らして誰も出なければ、いったん留守と決めるようなものだ。限られた情報から判断するには、筋の通った記録だった。

CrowcroftとOnionsは、その電話に接続状態が見える回線を使ってみた。RFC 1165は、OSIの遠隔操作サービスとASN.1の構文でNTPを運ぶ実験を記す。OSIのアプリケーションに時刻を届けること、仕様の自動検査とコード生成を試すこと、X.25などの接続型サービスで動かすことが狙いだった。接続が確立しているか、壊れたか、まだ準備中かという情報は、サービスがすでに持つ。八回の応答からその事実を推測する役目は薄くなる。

そこで対等相手の状態が増えた。Connectedなら接続が成立し、同期データが行き来している。Connectingは発信側が接続を進めている途中。Acceptingは着信を受けたが、転送やセッションの交渉がまだ終わっていない段階。Disconnectedなら連絡できない。遠くの相手への接続は数秒かかり得るため、設定は非同期に行う。一人の返事を待つ間、時刻デーモンがほかの相手まで黙らせては困る。

最初にA-ASSOCIATE.REQUESTを送り、相手側の指示を受ける。成立した後は必要な周期で遠隔操作を呼び出し、NTPのデータを渡す。プロトコルの版やローカル時計の精度は接続中に頻繁には変わらない。開始時に分かれば、毎回送り直す情報を減らせる。RFCは認証を使う場合、接続時に行う可能性にも触れる。時刻を表すデータ欄は従来のNTPに沿っており、実装は馴染みの内部記録を保ったままROS/ASN.1へ変換できた。

回線がつながった事実は、時計の質の採点表ではない。時刻合わせには、メッセージが通過する時間の揺れが効く。RFC 1165は、ネットワークの単純な速さより通過時間のばらつきが大切だと論じた。遅くても到着のばらつきが少ない経路が、速くても遅延が大きく揺れる経路よりよい結果を出す可能性がある。著者たちはそれを「異端」と呼んだ。帯域幅という見栄えのよい数字に、時計は少し冷たい。

実験の足場もあった。英国の複数の拠点が、以前のROS仕様を使ってX.25上のNTPを動かしていた。少なくとも一つの拠点は英国側とROSで、米国のインターネット上の拠点とはUDPで対等関係を結んだ。RFCは初期の経験を有望としつつ、具体的な比較値を出せるだけの試験にはまだ達していなかった。ここで確かなのは、同じ時刻サービスが二種類の通信経路をまたいでいたことだ。片側では接続が相手の所在を知らせ、もう片側ではデータグラムの返事を数える。

運用する側にとって、どの事実がどこから来たかが明瞭になる。八回の応答記録は最近のやり取りの履歴だ。接続状態は、いまその相手との道が開いているかを示す。NTPの測定値は、遅延や時計のずれについて語る。RFC 1165は時刻の計算を引っ越しさせるより先に、到達性の証人を適切な席へ移した。回線自身が返事できるなら、時計に電話交換手を兼務させる必要はない。