Anhang B. NTP-Kontrollnachrichten
Dieser Anhang beschreibt das NTP-Kontrollnachrichtenformat, das einen Mechanismus zur Überwachung und Steuerung einer NTP-Implementierung bietet. Kontrollnachrichten sind eine optionale Funktion und müssen nicht in allen Fällen implementiert werden. Wenn sie implementiert sind, werden Kontrollnachrichten nur im Client/Server-Modus verwendet und sind nicht für den Broadcast-Modus geeignet. Kontrollnachrichten werden als Standard-NTP-Nachrichten formatiert, wobei das Modufeld auf 6 (Kontrollnachricht) gesetzt ist.
Kontrollnachrichten bieten einen einfachen Anfrage/Antwort-Mechanismus zur Überwachung und Steuerung einer NTP-Implementierung. Sie werden hauptsächlich für die Verwaltung und Überwachung der NTP-Implementierung verwendet und bieten Zugriff auf interne Variablen, die von der Protokollmaschine gepflegt werden. Diese Variablen können von externen Verwaltungsanwendungen untersucht und in einigen Fällen geändert werden. Kontrollnachrichten bieten eine Möglichkeit, den Zustand und die Leistung der Implementierung zu untersuchen, ohne den normalen Protokollbetrieb zu stören.
B.1. NTP-Kontrollnachrichtenformat
Die NTP-Kontrollnachricht ist wie folgt formatiert:
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 (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Message Digest (optional) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Feldbeschreibungen
Schaltsekundenindikator (LI): Dies ist ein Zwei-Bit-Code, der vor einer bevorstehenden Schaltsekunde warnt, wie im NTP-Nachrichtenformat definiert.
Versionsnummer (VN): Dies ist eine drei-Bit-Ganzzahl, die die NTP-Versionsnummer anzeigt, derzeit 3.
Modus: Dies ist eine drei-Bit-Ganzzahl, die den Modus anzeigt. Für Kontrollnachrichten ist dieses Feld auf 6 gesetzt.
Antwortbit (R): Auf 0 für eine Anfrage gesetzt, 1 für eine Antwort.
Fehlerbit (E): Auf 0 für eine normale Antwort gesetzt, 1 für eine Fehlerantwort.
Mehr-Bit (M): Auf 1 gesetzt, wenn weitere Daten diesem Fragment folgen, 0 für das letzte Fragment.
Operationscode (OpCode): Dies ist ein Fünf-Bit-Code, der die auszuführende Operation spezifiziert:
| Wert | Operation |
|---|---|
| 0 | reserviert |
| 1 | Status lesen |
| 2 | Variablen lesen |
| 3 | Variablen schreiben |
| 4 | Uhrenvariablen lesen |
| 5 | Uhrenvariablen schreiben |
| 6 | Trap-Adresse setzen |
| 7 | Trap-Antwort |
| 8-31 | reserviert |
Sequenz: Dies ist eine 16-Bit-Ganzzahl, die verwendet wird, um Anfragen mit Antworten zu matchen.
Status: Dies ist ein 16-Bit-Code, der den Status des Systems, Peers oder der Uhr anzeigt.
Assoziations-ID: Dies ist eine 16-Bit-Ganzzahl, die eine bestimmte Peer-Assoziation identifiziert. Der Wert 0 zeigt Systemvariablen an.
Versatz: Dies ist eine 16-Bit-Ganzzahl, die den Versatz des ersten Oktetts im Datenbereich spezifiziert.
Zähler: Dies ist eine 16-Bit-Ganzzahl, die die Anzahl der Oktetts im Datenbereich spezifiziert.
Daten: Dieses Feld variabler Länge enthält die Daten der Anfrage oder Antwort. Das Format hängt vom Operationscode ab.
Authentifikator (optional): Wenn Authentifizierung implementiert ist, enthält dieses Feld den Schlüsselbezeichner und Nachrichtendigest, die in Anhang C definiert sind.
B.2. Statuswörter
Das Statusfeld im Kontrollnachrichten-Header enthält einen 16-Bit-Code, der Informationen über das System, den Peer oder die Uhr bereitstellt. Das Format hängt vom Typ des gemeldeten Status ab.
B.2.1. Systemstatuswort
Das Systemstatuswort erscheint im Statusfeld der Antwort auf einen Statuslesebefehl mit einer Null-Assoziations-ID.
B.2.2. Peer-Statuswort
Das Peer-Statuswort erscheint im Statusfeld der Antwort auf einen Statuslesebefehl mit einer Nicht-Null-Assoziations-ID.
B.2.3. Uhrenstatuswort
Das Uhrenstatuswort erscheint im Statusfeld der Antwort auf einen Uhrenvariablen-Lesebefehl. Das Format ist implementierungsabhängig.
B.2.4. Fehlerstatuswort
Das Fehlerstatuswort erscheint im Statusfeld einer Fehlerantwort.
B.3. Befehle
Kontrollnachrichtenbefehle bieten einen Mechanismus zum Lesen und Schreiben von System-, Peer- und Uhrenvariablen. Die folgenden Befehle sind definiert:
Status Lesen: Dieser Befehl gibt das Statuswort des Systems (Assoziations-ID = 0) oder eines bestimmten Peers (Assoziations-ID != 0) zurück.
Variablen Lesen: Dieser Befehl gibt die Werte einer oder mehrerer Variablen des Systems oder eines bestimmten Peers zurück. Das Datenfeld enthält eine durch Kommas getrennte Liste von Variablennamen.
Variablen Schreiben: Dieser Befehl setzt die Werte einer oder mehrerer Variablen. Das Datenfeld enthält eine durch Kommas getrennte Liste von Variable=Wert-Paaren.
Uhrenvariablen Lesen: Dieser Befehl gibt die Werte einer oder mehrerer Referenzuhrenvariablen zurück.
Uhrenvariablen Schreiben: Dieser Befehl setzt die Werte einer oder mehrerer Referenzuhrenvariablen.
Trap-Adresse Setzen: Dieser Befehl setzt die Adresse des Trap-Empfängers. Wenn ein bedeutendes Ereignis auftritt, sendet die Implementierung eine unaufgeforderte Trap-Antwortnachricht an die angegebene Adresse.
Trap-Antwort: Dies ist eine unaufgeforderte Nachricht, die an den Trap-Empfänger gesendet wird, wenn ein bedeutendes Ereignis auftritt.
Die Kontrollnachrichtenfunktionalität bietet einen leistungsstarken Mechanismus zur Überwachung und Verwaltung einer NTP-Implementierung. Sie sollte jedoch mit Vorsicht verwendet werden, um den normalen Protokollbetrieb nicht zu stören oder die Sicherheit zu gefährden.