要約

  • RFC 791のType 68はIPモジュールが時刻を追記できるオプションで、アドレス記録も選べた。4ビットのオーバーフローカウンターは、空きがなく書き込めなかったモジュール数を数えた。
  • 時計が同期している保証はなく記録領域も有限なため、残るのは部分的な処理観測であり、信頼できる端末間遅延測定ではない。

データグラム内に残す時刻

RFC 791 はType 68のInternet Timestampオプションを定義した。送信元はIPヘッダーに領域を確保し、処理に参加するIPモジュールはデータグラムを扱った時刻を書き込める。値は真夜中のUTからの経過ミリ秒を表す32ビットである。UTを利用できない場合や時計がUT基準でない場合は、最上位ビットを立てて非標準の値であることを示した。

フラグがスロットの内容を決める。フラグ0は時刻だけ、1はアドレスと時刻の組、3はあらかじめ並べたアドレスを使い、次のアドレスと自分のアドレスが一致した場合だけ時刻を書き込む。ポインターは次のスロットを示す。オプションは最大40オクテットなので、送信元は記録に割くヘッダー領域を選ぶ必要があった。

この上限がオーバーフロー欄の意味を定める。4ビットの値は、オプションが満杯で時刻を書けなかったIPモジュール数を数える。空きがなければモジュールは転送を続け、カウンターを増やす。一方、領域は残っていても完全な時刻値が入らない場合や、カウンター自体が範囲を超えた場合、RFC 791はデータグラムを不正と扱い、ICMP Parameter Problemを送ることを認めた。どのルーターが欠けたか、その理由までは示さない。

断片化時、このオプションは後続フラグメントにコピーされず、IPヘッダー内にも一度しか現れない。したがって、各フラグメントに完全な経路記録があるとは限らなかった。

経過時間ではなく観測

時刻が並ぶと遅延の記録に見える。しかしRFC 791は時計の同期や精度、すべてのルーターの参加、完全なホップ一覧を保証していない。各値は書き込んだモジュール自身の時計を反映する。二つの値の差には、実際の転送時間と時計のずれが混在し得る。妥当な読み方はより限定的だ。パケットは、限られた数のアドレス・時刻観測とオーバーフローカウントを運べる。

後のホスト要件も、この機能が任意であることを明確にした。RFC 1122 はTimestampオプションの送信元での生成と中継処理を任意とした。仕様は形式と動作を定義するが、ホストやルーターの実装普及を証明しない。

2014年のRFC 7126は、時計の漏えい、トポロジー推定、機器の指紋化という危険を説明した。同RFCは広範な破棄により手法がほぼ不可能になったと述べ、ルーター、セキュリティゲートウェイ、ファイアウォールがオプション付きパケットを破棄すべきだと勧告した。これは同RFCの評価と勧告であり、すべての現行ネットワークを測定した結果ではない。

このオプションは可観測性の限界を示す。パケット内の記録は手掛かりになり得るが、不完全で、時計に依存し、ヘッダー領域を消費する。参加モジュールが何を書けるかは形式から分かる。しかし記録の欠落だけで、その経路にホップがなかったとは言えない。

参考資料