Zum Hauptinhalt springen

5.1. Fields of a PDU (Felder einer PDU)

5.1 Fields of a PDU (Felder einer PDU)

PDUs enthalten die folgenden Datenelemente:

Protocol Version (Protokollversion): Eine 8-Bit-Ganzzahl ohne Vorzeichen, derzeit 1, die die Version dieses Protokolls angibt.

PDU Type (PDU-Typ): Eine 8-Bit-Ganzzahl ohne Vorzeichen, die den Typ der PDU angibt, z.B. IPv4-Präfix.

Serial Number (Seriennummer): Die Seriennummer des RPKI-Caches, als dieser PDU-Satz vom vorgelagerten Cache-Server empfangen oder aus dem globalen RPKI gesammelt wurde. Der Cache erhöht seine Seriennummer, wenn er eine streng validierte Aktualisierung vom übergeordneten Cache oder vom globalen RPKI abschließt.

Session ID (Sitzungs-ID): Eine 16-Bit-Ganzzahl ohne Vorzeichen. Wenn ein Cache-Server startet, generiert er eine Sitzungs-ID, um die Instanz des Caches zu identifizieren, und bindet sie an die Sequenz von Seriennummern, die diese Cache-Instanz generieren wird. Dies ermöglicht es dem Router, eine fehlgeschlagene Sitzung fortzusetzen, wobei er weiß, dass die von ihm verwendeten Seriennummern mit den Seriennummern des Caches vergleichbar sind. Wenn zu irgendeinem Zeitpunkt nach der Protokollversionsverhandlung (Abschnitt 7) der Router oder der Cache feststellt, dass der Wert der Sitzungs-ID von dem der anderen Partei abweicht, MUSS die Partei, die die Nichtübereinstimmung erkennt, die Sitzung sofort mit einer Error Report PDU mit Code 0 ("Corrupt Data") beenden, und der Router MUSS alle von diesem Cache gelernten Daten löschen.

Beachten Sie, dass eine Sitzung spezifisch für eine bestimmte Protokollversion ist. Das heißt, wenn ein Cache-Server mehrere Versionen dieses Protokolls unterstützt, zufällig denselben Sitzungs-ID-Wert für mehrere Protokollversionen verwendet und darüber hinaus zufällig denselben Seriennummernwert für zwei oder mehr Sitzungen verwendet, die dieselbe Sitzungs-ID, aber unterschiedliche Protokollversionswerte haben, sind die Seriennummern nicht vergleichbar. Der vollständige Test, um festzustellen, ob Seriennummern vergleichbar sind, erfordert den Vergleich von Protokollversion, Sitzungs-ID und Seriennummer. Um das Risiko von Verwirrung zu reduzieren, sollte ein Cache-Server nicht dieselbe Sitzungs-ID über mehrere Protokollversionen hinweg verwenden, aber selbst wenn er dies tut, MUSS ein Router Sitzungen mit unterschiedlichen Protokollversionsfeldern als separate Sitzungen behandeln, auch wenn sie zufällig dieselbe Sitzungs-ID haben.

Wenn ein Cache eine Sitzungs-ID fälschlicherweise so wiederverwendet, dass der Router nicht bemerkt, dass sich die Sitzung geändert hat (die alte Sitzungs-ID und die neue Sitzungs-ID haben denselben numerischen Wert), kann der Router über den Inhalt des Caches verwirrt werden. Die Zeit, die der Router benötigt, um zu entdecken, dass er verwirrt ist, hängt davon ab, ob auch die Seriennummer wiederverwendet wird. Wenn die Seriennummern in der alten Sitzung und der neuen Sitzung ausreichend unterschiedlich sind, wird der Cache auf die Serial Query des Routers mit einem Cache Reset antworten, was das Problem löst. Wenn jedoch die Seriennummern nahe beieinander liegen, kann der Cache mit einer Cache Response antworten, die möglicherweise nicht ausreicht, um den Router mit dem Cache zu synchronisieren. In diesem Fall wird der Router wahrscheinlich (aber nicht sicher) einen Unterschied zwischen dem Zustand, den der Cache erwartet, und seinem eigenen Zustand erkennen. Beispielsweise könnte die Cache Response dem Router mitteilen, einen Datensatz zu löschen, den der Router nicht hält, oder könnte dem Router mitteilen, einen Datensatz hinzuzufügen, den der Router bereits hält. In diesem Fall wird der Router den Fehler erkennen und die Sitzung zurücksetzen. Ein Fall, in dem der Router desynchronisiert bleiben könnte, ist, wenn nichts in der Cache Response den Daten widerspricht, die der Router derzeit hält.

Die Verwendung von persistentem Speicher für die Sitzungs-ID oder die Verwendung eines uhrenbasierten Schemas zur Generierung der Sitzungs-ID sollte das Risiko von Sitzungs-ID-Kollisionen vermeiden.

Die Sitzungs-ID kann ein Pseudozufallswert, ein streng steigender Wert (wenn der Cache über zuverlässigen Speicher verfügt) usw. sein. Ein Epochen-Sekunden-Zeitstempelwert (wie die POSIX-Funktion time()) macht einen ausgezeichneten Sitzungs-ID-Wert aus.

Length (Länge): Eine 32-Bit-Ganzzahl ohne Vorzeichen, deren Wert die Anzahl der Bytes in der gesamten PDU ist, einschließlich des 8-Byte-Headers, der das Längenfeld enthält.

Flags (Flags): Das niederwertigste Bit des Flags-Feldes ist 1 für eine Ankündigung und 0 für einen Widerruf. Bei Präfix-PDUs (IPv4 oder IPv6) gibt dieses Flag an, ob diese PDU eine neue Präfix-Ankündigungsberechtigung ankündigt oder eine zuvor angekündigte Berechtigung widerruft; ein Widerruf entfernt effektiv eine zuvor angekündigte Präfix-PDU mit genau demselben Präfix, Länge, Maximallänge und autonomen Systemnummer (ASN). Ähnlich gibt bei Router-Key-PDUs dieses Flag an, ob diese PDU einen neuen Router-Schlüssel ankündigt oder eine zuvor angekündigte Router-Key-PDU mit genau derselben AS-Nummer, demselben subjectKeyIdentifier und demselben subjectPublicKeyInfo entfernt.

Die verbleibenden Bits im Flags-Feld sind für zukünftige Verwendung reserviert. In Protokollversion 1 MÜSSEN sie bei der Übertragung Null sein und MÜSSEN beim Empfang ignoriert werden.

Prefix Length (Präfixlänge): Eine 8-Bit-Ganzzahl ohne Vorzeichen, die das kürzeste für das Präfixelement zulässige Präfix angibt.

Max Length (Maximallänge): Eine 8-Bit-Ganzzahl ohne Vorzeichen, die das längste für das Präfixelement zulässige Präfix angibt. Dies kann nicht kleiner als das Präfixlängenelement sein.

Prefix (Präfix): Das IPv4- oder IPv6-Präfix der ROA.

Autonomous System Number (Autonome Systemnummer): Eine 32-Bit-Ganzzahl ohne Vorzeichen, die die ASN angibt, die berechtigt ist, das Präfix anzukündigen, oder die mit dem Router-Schlüssel verknüpft ist.

Subject Key Identifier (Subject Key Identifier): Der 20-Byte-Subject Key Identifier (SKI)-Wert für den Router-Schlüssel, wie in [RFC6487] beschrieben.

Subject Public Key Info (Subject Public Key Info): Der subjectPublicKeyInfo-Wert für den Router-Schlüssel, wie in [RFC8208] beschrieben. Dies ist die vollständige ASN.1-DER-Codierung von subjectPublicKeyInfo, einschließlich des ASN.1-Tags und des Längenwerts der subjectPublicKeyInfo-SEQUENCE.

Refresh Interval (Aktualisierungsintervall): Das Intervall zwischen normalen Cache-Abfragen. Siehe Abschnitt 6.

Retry Interval (Wiederholungsintervall): Das Intervall zwischen erneuten Versuchen von Cache-Abfragen nach dem Fehlschlagen einer Cache-Abfrage. Siehe Abschnitt 6.

Expire Interval (Ablaufintervall): Das Intervall, für das vom Cache erhaltene Daten bei Fehlen einer erfolgreichen nachfolgenden Cache-Abfrage gültig bleiben. Siehe Abschnitt 6.