9. Peer Process (Peer-Prozess)
Der Peer-Prozess wird beim Eintreffen eines Server- oder Peer-Pakets aufgerufen. Er führt das On-Wire-Protokoll aus, um den Uhren-Offset und die Rundlaufverzögerung zu bestimmen, und berechnet Statistiken, die von den System- und Poll-Prozessen verwendet werden. Peer-Variablen werden in der Assoziationsdatenstruktur instanziiert, wenn die Struktur initialisiert wird, und durch eintreffende Pakete aktualisiert. Es gibt einen Peer-Prozess, Poll-Prozess und Assoziationsprozess für jeden Server.
9.1. Peer Process Variables (Peer-Prozess-Variablen)
Die folgenden sind die Hauptvariablenkategorien, die vom Peer-Prozess verwendet werden:
Konfigurationsvariablen
| Name | Formel | Beschreibung |
|---|---|---|
| srcaddr | srcaddr | Quelladresse (source address) |
| srcport | srcport | Quellport (source port) |
| dstaddr | dstaddr | Zieladresse (destination address) |
| dstport | destport | Zielport (destination port) |
| keyid | keyid | Schlüsselidentifikator (key identifier) |
Paketvariablen
| Name | Formel | Beschreibung |
|---|---|---|
| leap | leap | Schaltsekunden-Indikator (leap indicator) |
| version | version | Versionsnummer (version number) |
| mode | mode | Modus (mode) |
| stratum | stratum | Stratum |
| ppoll | ppoll | Peer-Poll-Exponent (peer poll exponent) |
| rootdelay | delta_r | Wurzelverzögerung (root delay) |
| rootdisp | epsilon_r | Wurzeldispersion (root dispersion) |
| refid | refid | Referenz-ID (reference ID) |
| reftime | reftime | Referenz-Zeitstempel (reference timestamp) |
Zeitstempel-Variablen
| Name | Formel | Beschreibung |
|---|---|---|
| org | T1 | Ursprungs-Zeitstempel (origin timestamp) |
| rec | T2 | Empfangs-Zeitstempel (receive timestamp) |
| xmt | T3 | Sende-Zeitstempel (transmit timestamp) |
| t | t | Paketzeit (packet time) |
Statistikvariablen
| Name | Formel | Beschreibung |
|---|---|---|
| offset | theta | Uhren-Offset (clock offset) |
| delay | delta | Rundlaufverzögerung (round-trip delay) |
| disp | epsilon | Dispersion |
| jitter | psi | Jitter |
| filter | filter | Uhrenfilter (clock filter) |
| tp | t_p | Filterzeit (filter time) |
9.2. Peer Process Operations (Peer-Prozess-Operationen)
Paketempfangsablauf
Die Empfangsroutine definiert den Prozessablauf beim Eintreffen eines Pakets. Die Hauptschritte umfassen:
- Zugriffskontrolle: Implementierung von Zugriffskontrolllisten-Prüfungen (ACL)
- Formatvalidierung: Überprüfung von Feldlänge, Ausrichtung, Versionsnummer und Erweiterungsfeldsyntax
- Authentifizierung: Wenn Authentifizierung implementiert ist, muss der MD5-Schlüssel-Hash-Algorithmus unterstützt werden
- Assoziationssuche: Durchsuchen der Assoziationstabelle nach übereinstimmender Quelladresse und Port
Peer-Dispatch-Tabelle
Basierend auf der Kombination von Assoziationsmodus und Paketmodus verteilt das System die Verarbeitung auf verschiedene Schritte:
| Assoziationsmodus | Paketmodus 1 | Paketmodus 2 | Paketmodus 3 | Paketmodus 4 | Paketmodus 5 |
|---|---|---|---|---|---|
| Keine Assoziation 0 | NEWPS | DSCRD | FXMIT | MANY | NEWBC |
| Symm. Aktiv 1 | PROC | PROC | DSCRD | DSCRD | DSCRD |
| Symm. Passiv 2 | PROC | ERR | DSCRD | DSCRD | DSCRD |
| Client 3 | DSCRD | DSCRD | DSCRD | PROC | DSCRD |
| Server 4 | DSCRD | DSCRD | DSCRD | DSCRD | DSCRD |
| Broadcast 5 | DSCRD | DSCRD | DSCRD | DSCRD | DSCRD |
| Bcast Client 6 | DSCRD | DSCRD | DSCRD | DSCRD | PROC |
Verarbeitungsaktionen:
- DSCRD: Paket verwerfen (nicht-fatale Protokollverletzung)
- ERR: Paket verwerfen und symmetrische passive Assoziation demobilisieren (fatale Protokollverletzung)
- FXMIT: Schnelle Übertragung (zustandsloser Server-Antwort)
- MANY: Manycast-Server-Antwort
- NEWBC: Neue Broadcast-Assoziation
- NEWPS: Neue symmetrische passive Assoziation
- PROC: Übereinstimmende Assoziation verarbeiten
Paketvalidierung
Für die PROC-Verarbeitung führt das System strenge Zeitstempel-Prüfungen durch, um ungültige, doppelte oder gefälschte Pakete zu vermeiden. Hauptvalidierungen umfassen:
- Überprüfung, dass der Sende-Zeitstempel nicht null ist
- Überprüfung, dass der Ursprungs-Zeitstempel mit dem zuvor gesendeten Sende-Zeitstempel übereinstimmt
- Erkennung doppelter Pakete (Sende-Zeitstempel stimmt mit gespeichertem Ursprungs-Zeitstempel überein)
- Überprüfung, dass der Ziel-Zeitstempel später als der Ursprungs-Zeitstempel ist
Nach Bestehen dieser Prüfungen berechnet das System Offset und Verzögerung, aktualisiert den Uhrenfilter und bereitet Statistiken für den Systemprozess vor.