付録B. NTP制御メッセージ
この付録は、NTP実装を監視および制御するためのメカニズムを提供するNTP制御メッセージ形式について説明しています。制御メッセージはオプション機能であり、すべての場合に実装する必要はありません。実装される場合、制御メッセージはクライアント/サーバーモードでのみ使用され、ブロードキャストモードでは使用されません。制御メッセージは標準NTPメッセージとしてフォーマットされ、モードフィールドは6(制御メッセージ)に設定されます。
制御メッセージは、NTP実装を監視および制御するためのシンプルなクエリ/レスポンスメカニズムを提供します。これは主にNTP実装の管理と監視に使用され、プロトコルマシンによって維持される内部変数へのアクセスを提供します。これらの変数は、外部管理アプリケーションによって検査でき、場合によっては変更できます。制御メッセージは、通常のプロトコル操作を妨げることなく実装のステータスとパフォーマンスを検査する方法を提供します。
B.1. NTP制御メッセージ形式
NTP制御メッセージは次のようにフォーマットされています:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|LI | VN | Mode |R|E|M| OpCode | Sequence |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status | Association ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Offset | Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. Data .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Key Identifier (オプション) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Message Digest (オプション) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
フィールドの説明
閏秒インジケータ(LI): これは、NTPメッセージ形式で定義されているように、差し迫った閏秒を警告する2ビットコードです。
バージョン番号(VN): これは、NTPバージョン番号を示す3ビット整数で、現在は3です。
モード: これは、モードを示す3ビット整数です。制御メッセージの場合、このフィールドは6に設定されます。
レスポンスビット(R): クエリの場合は0に設定され、レスポンスの場合は1に設定されます。
エラービット(E): 通常のレスポンスの場合は0に設定され、エラーレスポンスの場合は1に設定されます。
モアビット(M): このフラグメントの後にさらにデータが続く場合は1に設定され、最後のフラグメントの場合は0に設定されます。
オペレーションコード(OpCode): これは、実行する操作を指定する5ビットコードです:
| 値 | 操作 |
|---|---|
| 0 | 予約済み |
| 1 | ステータスを読む |
| 2 | 変数を読む |
| 3 | 変数を書く |
| 4 | クロック変数を読む |
| 5 | クロック変数を書く |
| 6 | トラップアドレスを設定 |
| 7 | トラップレスポンス |
| 8-31 | 予約済み |
シーケンス: これは、リクエストとレスポンスを一致させるために使用される16ビット整数です。
ステータス: これは、システム、ピア、またはクロックのステータスを示す16ビットコードです。
関連ID: これは、特定のピア関連を識別する16ビット整数です。値0はシステム変数を示します。
オフセット: これは、データ領域内の最初のオクテットのオフセットを指定する16ビット整数です。
カウント: これは、データ領域内のオクテット数を指定する16ビット整数です。
データ: この可変長フィールドには、リクエストまたはレスポンスのデータが含まれます。形式はオペレーションコードによって異なります。
認証子(オプション): 認証が実装されている場合、このフィールドには付録Cで定義されているキー識別子とメッセージダイジェストが含まれます。
B.2. ステータスワード
制御メッセージヘッダーのステータスフィールドには、システム、ピア、またはクロックに関する情報を提供する16ビットコードが含まれます。形式は報告されるステータスのタイプによって異なります。
B.2.1. システムステータスワード
システムステータスワードは、ゼロの関連識別子を持つ読み取りステータスコマンドへのレスポンスのステータスフィールドに表示されます。
B.2.2. ピアステータスワード
ピアステータスワードは、非ゼロの関連識別子を持つ読み取りステータスコマンドへのレスポンスのステータスフィールドに表示されます。
B.2.3. クロックステータスワード
クロックステータスワードは、読み取りクロック変数コマンドへのレスポンスのステータスフィールドに表示されます。形式は実装に依存します。
B.2.4. エラーステータスワード
エラーステータスワードは、エラーレスポンスのステータスフィールドに表示されます。
B.3. コマンド
制御メッセージコマンドは、システム、ピア、およびクロック変数を読み書きするためのメカニズムを提供します。以下のコマンドが定義されています:
ステータスを読む: このコマンドは、システム(関連ID = 0)または特定のピア(関連ID != 0)のステータスワードを返します。
変数を読む: このコマンドは、システムまたは特定のピアの1つ以上の変数の値を返します。データフィールドには、カンマで区切られた変数名のリストが含まれます。
変数を書く: このコマンドは、1つ以上の変数の値を設定します。データフィールドには、カンマで区切られた変数=値のペアのリストが含まれます。
クロック変数を読む: このコマンドは、1つ以上の参照クロック変数の値を返します。
クロック変数を書く: このコマンドは、1つ以上の参照クロック変数の値を設定します。
トラップアドレスを設定: このコマンドは、トラップレシーバーのアドレスを設定します。重要なイベントが発生すると、実装は指定されたアドレスに要請されていないトラップレスポンスメッセージを送信します。
トラップレスポンス: これは、重要なイベントが発生したときにトラップレシーバーに送信される要請されていないメッセージです。
制御メッセージ機能は、NTP実装を監視および管理するための強力なメカニズムを提供します。ただし、通常のプロトコル操作を妨げたり、セキュリティを損なったりしないように、注意して使用する必要があります。