3. Protocol Modes (プロトコルモード)
NTPプロトコルには3つの変種があります: 対称 (symmetric)、クライアント/サーバー (client/server)、およびブロードキャスト (broadcast)。それぞれはアソシエーションモード (association mode, 2つのNTPスピーカー間の関係の記述) に関連付けられており、図1に示されています。さらに、永続的なアソシエーション (persistent associations) は起動時に動員され、決して動員解除されません。一時的なアソシエーション (ephemeral associations) はパケットの到着時に動員され、エラーまたはタイムアウト時に動員解除されます。
+-------------------+-------------------+------------------+
| Association Mode | Assoc. Mode Value | Packet Mode Value|
+-------------------+-------------------+------------------+
| Symmetric Active | 1 | 1 or 2 |
| Symmetric Passive | 2 | 1 |
| Client | 3 | 4 |
| Server | 4 | 3 |
| Broadcast Server | 5 | 5 |
| Broadcast Client | 6 | N/A |
+-------------------+-------------------+------------------+
図1: アソシエーションとパケットモード
クライアント/サーバー変種では、永続的なクライアントがサーバーにモード4パケットを送信し、サーバーはモード3パケットを返します。サーバーは1つ以上のクライアントに同期を提供しますが、それらから同期を受け入れません。サーバーは、GPS受信機や電話モデムサービスなどの標準ソースから直接時刻を取得する参照クロックドライバー (reference clock driver) である場合もあります。この変種では、クライアントはサーバーから同期を引き出します (pull)。
対称変種では、ピア (peer) は対称アクティブ (symmetric active) または対称パッシブ (symmetric passive) アソシエーションのいずれかを使用して、サーバーとクライアントの両方として動作します。永続的な対称アクティブアソシエーションは、対称アクティブピアアソシエーションに対称アクティブ (モード1) パケットを送信します。あるいは、一致するアソシエーションのない対称アクティブパケットが到着すると、一時的な対称パッシブアソシエーションを動員できます。そのアソシエーションは対称パッシブ (モード2) パケットを送信し、エラーまたはタイムアウトまで持続します。ピアは互いに同期をプッシュおよびプルします。本文書の目的上、ピアはクライアントのように動作するため、クライアントへの参照はピアも意味します。
ブロードキャスト変種では、永続的なブロードキャストサーバーアソシエーションが、複数のクライアントが受信できる定期的なブロードキャストサーバー (モード5) パケットを送信します。一致するアソシエーションなしでブロードキャストサーバーパケットを受信すると、一時的なブロードキャストクライアント (モード6) アソシエーションが動員され、エラーまたはタイムアウトまで持続します。クライアントモードで動作しているクライアントがサーバーと数個のパケットを交換して伝播遅延 (propagation delay) を校正し、Autokeyセキュリティプロトコルを実行し、その後クライアントがブロードキャストクライアントモードに戻る初期ボレー (initial volley) を提供することは有用です。ブロードキャストサーバーはクライアントおよび他のサーバーに同期をプッシュします。
電話業界によって確立された慣例に緩やかに従い、階層内の各サーバーのレベルはストラタム番号 (stratum number) によって定義されます。主サーバーはストラタム1が割り当てられます。各下位レベルの副サーバーには、前のレベルより1つ大きいストラタム番号が割り当てられます。ストラタム番号が増加すると、特定のネットワークパスとシステムクロックの安定性に応じて精度が低下します。同期距離 (synchronization distances) によって測定される平均誤差は、ストラタム番号と測定されたラウンドトリップ遅延 (round-trip delay) にほぼ比例して増加します。
標準的な実践として、タイミングネットワークトポロジーは、タイミングループ (timing loops) を回避し、同期距離を最小化するように構成する必要があります。NTPでは、サブネットトポロジーは、主サーバーをルートとする最短パススパニングツリー (shortest-path spanning tree) を計算するBellman-Ford分散ルーティングアルゴリズム (Bellman-Ford distributed routing algorithm) の変種を使用して決定されます。この設計の結果として、アルゴリズムはサブネットを自動的に再編成し、タイミングネットワークに障害がある場合でも、最も正確で信頼性の高い時刻を生成します。
3.1. Dynamic Server Discovery (動的サーバー発見)
動的サーバー発見機能 (dynamic server discovery function) を提供する2つの特別なアソシエーション、メニーキャストクライアント (manycast client) とメニーキャストサーバー (manycast server) があります。メニーキャストクライアントアソシエーションには、永続的なものと一時的なものの2種類があります。永続的なメニーキャストクライアントは、指定されたIPv4またはIPv6ブロードキャストまたはマルチキャストグループアドレスにクライアント (モード3) パケットを送信します。パケットヘッダーのTTL (time-to-live, 生存時間) フィールドの範囲内にある指定されたメニーキャストサーバーは、そのアドレスを持つパケットをリッスンします。サーバーが同期に適している場合、クライアントのユニキャストアドレスを使用して通常のサーバー (モード4) パケットを返します。このパケットを受信すると、クライアントは一時的なクライアント (モード3) アソシエーションを動員します。一時的なクライアントアソシエーションは、エラーまたはタイムアウトまで持続します。
メニーキャストクライアントは、最小数のアソシエーションを検索するためにパケットの送信を継続します。TTLを1から開始し、最小数のアソシエーションが確立されるか、TTLが最大値に達するまで継続的に1ずつ追加します。TTLが最大値に達してもまだ十分なアソシエーションが動員されていない場合、クライアントはすべてのアソシエーションをクリアするためにタイムアウト期間送信を停止し、その後検索サイクルを繰り返します。最小数のアソシエーションが動員されている場合、クライアントはアソシエーションを維持するためにタイムアウト期間ごとに1つのパケットを送信し始めます。フィールド制約により、最小値は1に、最大値は255に制限されています。これらの制限は、個々のアプリケーションのニーズに合わせて調整できます。
一時的なアソシエーションは互いに競合します。新しい一時的なアソシエーションが動員されると、クライアントは第10節と第11.2節で説明されている緩和アルゴリズム (mitigation algorithms) を実行して集団から最良の候補を選び出し、残りの一時的なアソシエーションはタイムアウトして動員解除されます。このようにして、集団にはシステムクロックを調整するためにNTPパケットで最近応答した最良の候補のみが含まれます。