付録D. 以前のバージョンとの違い
この付録は、NTPバージョン3と以前のバージョン(バージョン2とバージョン1)との違いをまとめています。これらの変更は、精度、安定性、信頼性を向上させ、仕様の曖昧さを明確にするために行われました。ほとんどの変更は、以前のバージョンとの相互運用性に影響を与えない改良と機能強化です。
バージョン3からバージョン2への変更
1. ローカルクロックアルゴリズム
ローカルクロックアルゴリズムは、安定性と精度を向上させるために完全に再設計されました。新しいアルゴリズムは、適応帯域幅制御を備えた位相同期ループ(PLL)設計を使用しています。主な変更点は次のとおりです:
- 改善された周波数補償により、発振器のドリフトをより正確に追跡できます
- 適応時定数は、ネットワーク条件に基づいて自動的に調整されます
- 強化されたステップ/スルー閾値ロジックにより、大きな補正をより適切に処理できます
- ウォッチドッグタイマーは、古いオフセットデータがクロックに影響を与えるのを防ぎます
新しいアルゴリズムは、セクション5と付録Gで詳細に説明されています。実装は新しいアルゴリズムを採用することを強くお勧めしますが、古いアルゴリズムも互換性があります。
2. クロック結合アルゴリズム
複数のピアからのオフセットを結合するための新しいオプションのアルゴリズムが追加されました(付録F)。このアルゴリズム:
- 同期距離に基づく加重平均を使用します
- 複数のピアが利用可能な場合に精度を向上させます
- 外れ値と非対称パスの影響を軽減します
- 国家標準研究所で使用されている技術に基づいています
クロック結合アルゴリズムはオプションであり、相互運用性には影響しません。
3. エラーバジェットの改良
遅延、オフセット、分散の計算方法が改良されました:
- 分散計算には、すべてのエラーコンポーネント(測定エラー、スキュー累積、フィルター分散)が含まれるようになりました
- 遅延計算は、エラー項を分散に移動することで簡素化されました
- 同期距離は、すべてのエラーソースを適切に考慮するようになりました
- エラー境界は、記述された仮定の下で正式に証明できます(付録Hを参照)
これらの変更は、正確性の主張に対してより厳密な基盤を提供しますが、通常の操作に大きな影響を与えません。
4. クロック選択アルゴリズム
クロック選択手順は信頼性を向上させるために変更されました:
- 交差アルゴリズムは、デジタルタイムサービス(DTS)から採用され、以前のソートステップに取って代わりました
- クラスタリングアルゴリズムは、複数の候補をより適切に処理するように改良されました
- 誤計時器検出は、Marzulloのアルゴリズムを使用して改善されました
- 生存者選択は、ストラタムと同期距離の両方を考慮するようになりました
新しいアルゴリズムは、以前のバージョンとの互換性を維持しながら、故障したクロックの検出と拒否においてより堅牢です。
5. クロックフィルターアルゴリズム
クロックフィルターアルゴリズムの小さな改良:
- フィルター分散計算が改善され、サンプル分散をより適切に表現できます
- シフトレジスタ管理がより良いパフォーマンスのために改良されました
- 分散エージングは、最後の更新以降の時間を適切に考慮するようになりました
- 最大分散クランプは数値オーバーフローを防ぎます
6. 閏秒処理
閏秒管理の改善:
- 閏秒インジケータビットは、同期サブネット全体で適切に伝播されるようになりました
- ローカルクロック手順は、61秒と59秒の分を正しく処理するように強化されました
- 最小ステップ間隔は、閏秒イベント中の早期ステップ変更を防ぐために追加されました
- 閏秒テーブルは、コード変更なしで更新できます
7. ポーリング間隔管理
ポーリング間隔管理が改良されました:
- 適応ポーリングは、ローカルクロックのコンプライアンスと安定性に基づいています
- 最小および最大ポーリング間隔が構成可能になりました
- ポーリング間隔クランプは、選択された同期ソース用です
- ヒステリシスは、急速なポーリング間隔の変更を防ぎます
8. 状態変数の変更
いくつかの状態変数が追加または変更されました:
- peer.validカウンターが有効なサンプルを追跡するために追加されました
- peer.updateタイムスタンプが分散エージング用に追加されました
- sys.pollがシステム全体のポーリング動作を制御するために追加されました
- さまざまなパラメータが明確さのために名前変更または再編成されました
9. パケット形式
パケット形式はバージョン2と同一のままで、1つの例外があります:
- 参照識別子フィールドの解釈がストラタム0と1で明確化されました
- 精度フィールドの解釈が改良されました
- ポーリング間隔フィールドは、2の累乗として一貫して解釈されるようになりました
10. 認証
認証メカニズムはバージョン2から変更されていませんが:
- 鍵管理手順が明確化されました
- パフォーマンスの考慮事項が文書化されました
- クロック手順との相互作用がより正確に指定されました
バージョン2からバージョン1への変更
完全性のため、バージョン1からバージョン2への主な変更点を要約します:
1. パケット形式
- ストラタムフィールドが2ビットから8ビットに拡張されました
- 精度フィールドがクロック精度を示すために追加されました
- ルート遅延とルート分散フィールドが追加されました
- 参照識別子フィールドがASCII文字列をサポートするように変更されました
2. 同期アルゴリズム
- ピア選択アルゴリズムが、ストラタムと同期距離を使用するように改良されました
- 到達可能性メカニズムが接続障害を検出するために追加されました
- クロックフィルターアルゴリズムがサンプルを平滑化するために追加されました
3. ローカルクロック
- コンプライアンスレジスタがローカルクロックの安定性を追跡するために追加されました
- 周波数補償が強化されました
- 段階的位相調整が改良されました
4. 動作モード
- ブロードキャストモードがLAN環境用に追加されました
- クライアント/サーバーモードの区別が明確化されました
- 対称モードが改良されました
5. 制御メッセージ
- オプションの制御メッセージ機能が追加されました(付録B)
相互運用性の考慮事項
NTPバージョン3は、以前のバージョンと相互運用するように設計されています:
- バージョン2とバージョン3の実装は制限なく相互運用できます
- バージョン1の実装は相互運用できますが、同じ精度を達成できない場合があります
- 混合ネットワークは正しく動作し、バージョン3の実装は新しいアルゴリズムの利点を得ます
互換性ガイドライン
- バージョンフィールドは送信されるメッセージで3に設定する必要があります
- バージョン2のメッセージは通常通り受け入れて処理する必要があります
- バージョン1のメッセージは機能を低下させて受け入れる必要があります
- 制御メッセージは、それらをサポートすることが知られているピアにのみ送信する必要があります
アップグレードパス
組織はバージョン3に段階的にアップグレードできます:
- プライマリサーバーは、改善されたアルゴリズムを活用するために最初にアップグレードする必要があります
- セカンダリサーバーは都合の良いときにアップグレードできます
- クライアントは最後にアップグレードできます。改善されたサーバーの精度から利益を得るためです
- 混合バージョンは、問題なく無期限に共存できます
実装ノート
実装は次のようにする必要があります:
- パフォーマンス向上のため、可能な限り新しいアルゴリズムを採用
- 以前のバージョンとの互換性を維持
- 標準プロトコルへの拡張を文書化
- オプション機能を有効/無効にする構成オプションを提供
- 既存の実装との相互運用性をテスト
バージョン3の変更は、インターネット上での数年間の運用の蓄積された経験を表しています。これらは、完全な下位互換性を維持しながら、精度、安定性、信頼性において大幅な改善を提供します。