跳到主要内容

4.3. UPDATE Message Format (UPDATE-Nachrichtenformat)

4.3. UPDATE Message Format (UPDATE-Nachrichtenformat)

UPDATE-Nachrichten werden verwendet, um Routing-Informationen zwischen BGP-Peers zu übertragen. Die Informationen in der UPDATE-Nachricht können verwendet werden, um einen Graphen zu konstruieren, der die Beziehungen der verschiedenen Autonomen Systeme beschreibt. Durch Anwendung noch zu diskutierender Regeln können Schleifen in den Routing-Informationen und einige andere Anomalien erkannt und aus dem Inter-AS-Routing entfernt werden.

Eine UPDATE-Nachricht wird verwendet, um einem Peer realisierbare Routen anzukündigen, die gemeinsame Pfadattribute teilen, oder um mehrere nicht realisierbare Routen aus dem Dienst zurückzuziehen (siehe 3.1). Eine UPDATE-Nachricht KANN gleichzeitig eine realisierbare Route ankündigen und mehrere nicht realisierbare Routen aus dem Dienst zurückziehen. Die UPDATE-Nachricht enthält immer den BGP-Header fester Größe und enthält auch die anderen Felder, wie unten gezeigt (beachten Sie, dass einige der gezeigten Felder möglicherweise nicht in jeder UPDATE-Nachricht vorhanden sind):

      +-----------------------------------------------------+
| Withdrawn Routes Length (2 octets) |
+-----------------------------------------------------+
| Withdrawn Routes (variable) |
+-----------------------------------------------------+
| Total Path Attribute Length (2 octets) |
+-----------------------------------------------------+
| Path Attributes (variable) |
+-----------------------------------------------------+
| Network Layer Reachability Information (variable) |
+-----------------------------------------------------+

Withdrawn Routes Length (Länge der zurückgezogenen Routen):

Diese 2-Oktett-vorzeichenlose Ganzzahl gibt die Gesamtlänge des Feldes Withdrawn Routes in Oktetten an. Ihr Wert ermöglicht es, die Länge des Feldes Network Layer Reachability Information zu bestimmen, wie unten angegeben.

Ein Wert von 0 zeigt an, dass keine Routen aus dem Dienst zurückgezogen werden und dass das Feld WITHDRAWN ROUTES in dieser UPDATE-Nachricht nicht vorhanden ist.

Withdrawn Routes (Zurückgezogene Routen):

Dies ist ein Feld variabler Länge, das eine Liste von IP-Adresspräfixen für die Routen enthält, die aus dem Dienst zurückgezogen werden. Jedes IP-Adresspräfix ist als 2-Tupel der Form <Länge, Präfix> codiert, dessen Felder unten beschrieben sind:

                  +---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+

Die Verwendung und die Bedeutung dieser Felder sind wie folgt:

a) Length (Länge):

Das Length-Feld gibt die Länge des IP-Adresspräfixes in Bits an. Eine Länge von Null zeigt ein Präfix an, das mit allen IP-Adressen übereinstimmt (mit einem Präfix von selbst null Oktetten).

b) Prefix (Präfix):

Das Prefix-Feld enthält ein IP-Adresspräfix, gefolgt von der minimalen Anzahl von abschließenden Bits, die erforderlich sind, damit das Ende des Feldes auf eine Oktettgrenze fällt. Beachten Sie, dass der Wert der abschließenden Bits irrelevant ist.

Total Path Attribute Length (Gesamtlänge der Pfadattribute):

Diese 2-Oktett-vorzeichenlose Ganzzahl gibt die Gesamtlänge des Feldes Path Attributes in Oktetten an. Ihr Wert ermöglicht es, die Länge des Feldes Network Layer Reachability wie unten angegeben zu bestimmen.

Ein Wert von 0 zeigt an, dass weder das Feld Network Layer Reachability Information noch das Feld Path Attribute in dieser UPDATE-Nachricht vorhanden ist.

Path Attributes (Pfadattribute):

Eine Sequenz von Pfadattributen variabler Länge ist in jeder UPDATE-Nachricht vorhanden, mit Ausnahme einer UPDATE-Nachricht, die nur die zurückgezogenen Routen trägt. Jedes Pfadattribut ist ein Tripel <Attributtyp, Attributlänge, Attributwert> variabler Länge.

Der Attribute Type (Attributtyp) ist ein Zwei-Oktett-Feld, das aus dem Attribute Flags (Attribut-Flags) Oktett besteht, gefolgt vom Attribute Type Code (Attribut-Typcode) Oktett.

               0                   1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Attr. Flags |Attr. Type Code|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Das höherwertige Bit (Bit 0) des Attribut-Flags-Oktetts ist das Optional-Bit. Es definiert, ob das Attribut optional (wenn auf 1 gesetzt) oder wohlbekannt (well-known) (wenn auf 0 gesetzt) ist.

Das zweithöherwertige Bit (Bit 1) des Attribut-Flags-Oktetts ist das Transitive-Bit. Es definiert, ob ein optionales Attribut transitiv (wenn auf 1 gesetzt) oder nicht transitiv (wenn auf 0 gesetzt) ist.

Für wohlbekannte Attribute MUSS das Transitive-Bit auf 1 gesetzt sein. (Siehe Abschnitt 5 für eine Diskussion über transitive Attribute.)

Das dritthöherwertige Bit (Bit 2) des Attribut-Flags-Oktetts ist das Partial-Bit. Es definiert, ob die im optionalen transitiven Attribut enthaltene Information unvollständig (partial) (wenn auf 1 gesetzt) oder vollständig (wenn auf 0 gesetzt) ist. Für wohlbekannte Attribute und für optionale nicht transitive Attribute MUSS das Partial-Bit auf 0 gesetzt sein.

Das vierthöherwertige Bit (Bit 3) des Attribut-Flags-Oktetts ist das Extended Length-Bit (Erweiterte Länge). Es definiert, ob die Attribute Length ein Oktett (wenn auf 0 gesetzt) oder zwei Oktette (wenn auf 1 gesetzt) lang ist.

Die niederwertigen vier Bits des Attribut-Flags-Oktetts werden nicht verwendet. Sie MÜSSEN beim Senden Null sein und MÜSSEN beim Empfang ignoriert werden.

Das Attribute Type Code-Oktett enthält den Attribut-Typcode. Derzeit definierte Attribut-Typcodes werden in Abschnitt 5 diskutiert.

Wenn das Extended Length-Bit des Attribut-Flags-Oktetts auf 0 gesetzt ist, enthält das dritte Oktett des Pfadattributs die Länge der Attributdaten in Oktetten.

Wenn das Extended Length-Bit des Attribut-Flags-Oktetts auf 1 gesetzt ist, enthalten das dritte und vierte Oktett des Pfadattributs die Länge der Attributdaten in Oktetten.

Die verbleibenden Oktette des Pfadattributs repräsentieren den Attributwert und werden gemäß den Attribut-Flags und dem Attribut-Typcode interpretiert. Die unterstützten Attribut-Typcodes und ihre Attributwerte und Verwendungen sind wie folgt:

a) ORIGIN (Typcode 1):

ORIGIN ist ein wohlbekanntes obligatorisches (mandatory) Attribut, das den Ursprung der Pfadinformationen definiert. Das Datenoktett kann die folgenden Werte annehmen:

  • Wert 0 (IGP) - Network Layer Reachability Information ist intern zum Ursprungs-AS
  • Wert 1 (EGP) - Network Layer Reachability Information über das EGP-Protokoll [RFC904] gelernt
  • Wert 2 (INCOMPLETE) - Network Layer Reachability Information auf andere Weise gelernt

Die Verwendung dieses Attributs ist in 5.1.1 definiert.

b) AS_PATH (Typcode 2):

AS_PATH ist ein wohlbekanntes obligatorisches Attribut, das aus einer Sequenz von AS-Pfadsegmenten besteht. Jedes AS-Pfadsegment wird durch ein Tripel <Pfadsegmenttyp, Pfadsegmentlänge, Pfadsegmentwert> dargestellt.

Der Pfadsegmenttyp ist ein 1-Oktett-Längenfeld mit den folgenden definierten Werten:

  • Wert 1 (AS_SET): ungeordnete Menge von ASes, die eine Route in der UPDATE-Nachricht durchlaufen hat
  • Wert 2 (AS_SEQUENCE): geordnete Menge von ASes, die eine Route in der UPDATE-Nachricht durchlaufen hat

Die Pfadsegmentlänge ist ein 1-Oktett-Längenfeld, das die Anzahl der ASes (nicht die Anzahl der Oktette) im Pfadsegmentwertfeld enthält.

Das Pfadsegmentwertfeld enthält eine oder mehrere AS-Nummern, die jeweils als 2-Oktett-Längenfeld codiert sind.

Die Verwendung dieses Attributs ist in 5.1.2 definiert.

c) NEXT_HOP (Typcode 3):

Dies ist ein wohlbekanntes obligatorisches Attribut, das die (Unicast-) IP-Adresse des Routers definiert, der als nächster Hop zu den im Feld Network Layer Reachability Information der UPDATE-Nachricht aufgeführten Zielen verwendet werden SOLLTE.

Die Verwendung dieses Attributs ist in 5.1.3 definiert.

d) MULTI_EXIT_DISC (Typcode 4):

Dies ist ein optionales nicht transitives Attribut, das eine vier Byte große vorzeichenlose Ganzzahl ist. Der Wert dieses Attributs KANN vom Entscheidungsprozess eines BGP-Speakers verwendet werden, um zwischen mehreren Eintrittspunkten zu einem benachbarten autonomen System zu unterscheiden.

Die Verwendung dieses Attributs ist in 5.1.4 definiert.

e) LOCAL_PREF (Typcode 5):

LOCAL_PREF ist ein wohlbekanntes Attribut, das eine vier Byte große vorzeichenlose Ganzzahl ist. Ein BGP-Speaker verwendet es, um seine anderen internen Peers über den Präferenzgrad des ankündigenden Speakers für eine angekündigte Route zu informieren.

Die Verwendung dieses Attributs ist in 5.1.5 definiert.

f) ATOMIC_AGGREGATE (Typcode 6):

ATOMIC_AGGREGATE ist ein wohlbekanntes diskretionäres (discretionary) Attribut der Länge 0.

Die Verwendung dieses Attributs ist in 5.1.6 definiert.

g) AGGREGATOR (Typcode 7):

AGGREGATOR ist ein optionales transitives Attribut der Länge 6. Das Attribut enthält die letzte AS-Nummer, die die aggregierte Route gebildet hat (als 2 Oktette codiert), gefolgt von der IP-Adresse des BGP-Speakers, der die aggregierte Route gebildet hat (als 4 Oktette codiert). Dies SOLLTE dieselbe Adresse sein wie diejenige, die für den BGP-Identifikator des Speakers verwendet wird.

Die Verwendung dieses Attributs ist in 5.1.7 definiert.

Network Layer Reachability Information (Netzwerkschicht-Erreichbarkeitsinformationen):

Dieses Feld variabler Länge enthält eine Liste von IP-Adresspräfixen. Die Länge der Network Layer Reachability Information in Oktetten wird nicht explizit codiert, kann aber wie folgt berechnet werden:

UPDATE-Nachrichtenlänge - 23 - Gesamtlänge der Pfadattribute - Länge der zurückgezogenen Routen

wobei UPDATE-Nachrichtenlänge der im BGP-Header fester Größe codierte Wert ist, Gesamtlänge der Pfadattribute und Länge der zurückgezogenen Routen die im variablen Teil der UPDATE-Nachricht codierten Werte sind und 23 eine kombinierte Länge des BGP-Headers fester Größe, des Feldes Gesamtlänge der Pfadattribute und des Feldes Länge der zurückgezogenen Routen ist.

Erreichbarkeitsinformationen werden als ein oder mehrere 2-Tupel der Form <Länge, Präfix> codiert, deren Felder unten beschrieben sind:

                  +---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+

Die Verwendung und die Bedeutung dieser Felder sind wie folgt:

a) Length (Länge):

Das Length-Feld gibt die Länge des IP-Adresspräfixes in Bits an. Eine Länge von Null zeigt ein Präfix an, das mit allen IP-Adressen übereinstimmt (mit einem Präfix von selbst null Oktetten).

b) Prefix (Präfix):

Das Prefix-Feld enthält ein IP-Adresspräfix, gefolgt von genügend abschließenden Bits, damit das Ende des Feldes auf eine Oktettgrenze fällt. Beachten Sie, dass der Wert der abschließenden Bits irrelevant ist.

Die Mindestlänge der UPDATE-Nachricht beträgt 23 Oktette -- 19 Oktette für den festen Header + 2 Oktette für die Länge der zurückgezogenen Routen + 2 Oktette für die Gesamtlänge der Pfadattribute (der Wert der Länge der zurückgezogenen Routen ist 0 und der Wert der Gesamtlänge der Pfadattribute ist 0).

Eine UPDATE-Nachricht kann höchstens einen Satz von Pfadattributen ankündigen, aber mehrere Ziele, vorausgesetzt, dass die Ziele diese Attribute teilen. Alle in einer gegebenen UPDATE-Nachricht enthaltenen Pfadattribute gelten für alle im NLRI-Feld der UPDATE-Nachricht transportierten Ziele.

Eine UPDATE-Nachricht kann mehrere Routen auflisten, die aus dem Dienst zurückgezogen werden sollen. Jede dieser Routen wird durch ihr Ziel (ausgedrückt als IP-Präfix) identifiziert, das die Route im Kontext der BGP-Speaker - BGP-Speaker-Verbindung, zu der sie zuvor angekündigt wurde, eindeutig identifiziert.

Eine UPDATE-Nachricht kündigt möglicherweise nur Routen an, die aus dem Dienst zurückgezogen werden sollen; in diesem Fall enthält die Nachricht keine Pfadattribute oder Network Layer Reachability Information. Umgekehrt kann sie nur eine realisierbare Route ankündigen; in diesem Fall muss das Feld WITHDRAWN ROUTES nicht vorhanden sein.

Eine UPDATE-Nachricht SOLLTE NICHT dasselbe Adresspräfix in den Feldern WITHDRAWN ROUTES und Network Layer Reachability Information enthalten. Ein BGP-Speaker MUSS jedoch in der Lage sein, UPDATE-Nachrichten in dieser Form zu verarbeiten. Ein BGP-Speaker SOLLTE eine UPDATE-Nachricht dieser Form so behandeln, als ob die WITHDRAWN ROUTES das Adresspräfix nicht enthalten würden.