Zum Hauptinhalt springen

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

NameFormelBeschreibung
srcaddrsrcaddrQuelladresse (source address)
srcportsrcportQuellport (source port)
dstaddrdstaddrZieladresse (destination address)
dstportdestportZielport (destination port)
keyidkeyidSchlüsselidentifikator (key identifier)

Paketvariablen

NameFormelBeschreibung
leapleapSchaltsekunden-Indikator (leap indicator)
versionversionVersionsnummer (version number)
modemodeModus (mode)
stratumstratumStratum
ppollppollPeer-Poll-Exponent (peer poll exponent)
rootdelaydelta_rWurzelverzögerung (root delay)
rootdispepsilon_rWurzeldispersion (root dispersion)
refidrefidReferenz-ID (reference ID)
reftimereftimeReferenz-Zeitstempel (reference timestamp)

Zeitstempel-Variablen

NameFormelBeschreibung
orgT1Ursprungs-Zeitstempel (origin timestamp)
recT2Empfangs-Zeitstempel (receive timestamp)
xmtT3Sende-Zeitstempel (transmit timestamp)
ttPaketzeit (packet time)

Statistikvariablen

NameFormelBeschreibung
offsetthetaUhren-Offset (clock offset)
delaydeltaRundlaufverzögerung (round-trip delay)
dispepsilonDispersion
jitterpsiJitter
filterfilterUhrenfilter (clock filter)
tpt_pFilterzeit (filter time)

9.2. Peer Process Operations (Peer-Prozess-Operationen)

Paketempfangsablauf

Die Empfangsroutine definiert den Prozessablauf beim Eintreffen eines Pakets. Die Hauptschritte umfassen:

  1. Zugriffskontrolle: Implementierung von Zugriffskontrolllisten-Prüfungen (ACL)
  2. Formatvalidierung: Überprüfung von Feldlänge, Ausrichtung, Versionsnummer und Erweiterungsfeldsyntax
  3. Authentifizierung: Wenn Authentifizierung implementiert ist, muss der MD5-Schlüssel-Hash-Algorithmus unterstützt werden
  4. 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:

AssoziationsmodusPaketmodus 1Paketmodus 2Paketmodus 3Paketmodus 4Paketmodus 5
Keine Assoziation 0NEWPSDSCRDFXMITMANYNEWBC
Symm. Aktiv 1PROCPROCDSCRDDSCRDDSCRD
Symm. Passiv 2PROCERRDSCRDDSCRDDSCRD
Client 3DSCRDDSCRDDSCRDPROCDSCRD
Server 4DSCRDDSCRDDSCRDDSCRDDSCRD
Broadcast 5DSCRDDSCRDDSCRDDSCRDDSCRD
Bcast Client 6DSCRDDSCRDDSCRDDSCRDPROC

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:

  1. Überprüfung, dass der Sende-Zeitstempel nicht null ist
  2. Überprüfung, dass der Ursprungs-Zeitstempel mit dem zuvor gesendeten Sende-Zeitstempel übereinstimmt
  3. Erkennung doppelter Pakete (Sende-Zeitstempel stimmt mit gespeichertem Ursprungs-Zeitstempel überein)
  4. Ü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.