Referenz zu BGP-Routenrichtlinienattributen

Auf dieser Seite werden Beispiel-BGP-Routenrichtlinien mit der Common Expression Language (CEL) für Cloud Router gezeigt.

BGP-Routenrichtlinien werden als sortierte Liste von Begriffen definiert. Jeder Begriff wird in der von Ihnen angegebenen Reihenfolge ausgewertet. Er enthält sowohl eine Bedingung als auch eine entsprechende Aktion für den Fall, dass eine Route mit dem Begriff übereinstimmt. Eine bestimmte BGP-Routenrichtlinie kann nur in eine Richtung angewendet werden, entweder eingehend für erkannte Routen oder ausgehend für beworbene Routen, aber nicht gleichzeitig. BGP-Routenrichtlinien können jedoch auf mehrere BGP-Peers auf dem Cloud Router angewendet werden.

Übereinstimmende Attribute

In der folgenden Tabelle werden Übereinstimmungsattribute beschrieben, die für BGP-Routenrichtlinien verfügbar sind:

Attribute

Beschreibung

communities

Liste der Communities, die der BGP-Route zugeordnet sind

destination

Der IP-Bereich für die BGP-Route

Abgleichvorgänge

In der folgenden Tabelle werden Übereinstimmungsvorgänge beschrieben, die für BGP-Routenrichtlinien verfügbar sind:

Vorgang

Beschreibung

communities.matchesEvery('65001:1234')

Gibt „true“ zurück, wenn die Communities eine Obermenge der Liste '65001:1234' sind.

Ein community_value ist ein 32-Bit-Feld, das in zwei 16-Bit-Abschnitte unterteilt ist. Normalerweise codieren die ersten 16 Bit des Werts die Nummer des autonomen Systems (AS) des Netzwerks, aus dem die Community stammt. Diese Konvention wird jedoch von Cloud Router nicht erzwungen. Die zweiten 16 Bit des Werts codieren eine eindeutige Zahl, die vom Ursprungs-AS zugewiesen wird.

Nur für den Import.

destination == '192.168.0.0/24'

Gibt true zurück, wenn eine BGP-Route mit 192.168.0.0/24 übereinstimmt (genaue Übereinstimmung).

destination != '192.168.0.0/24'

Gibt true zurück, wenn eine BGP-Route nicht mit 192.168.0.0/24 übereinstimmt (genaue Übereinstimmung).

destination.inAnyRange(r)

Gibt true zurück, wenn eine BGP-Route im Bereich r liegt, wobei r einer der folgenden Werte ist:

  • Ein String mit einem CIDER-codierten Präfix, z. B. 192.168.0.0/24, ist.
  • Der abstrakte Typ, der von prefix() zurückgegeben wird, oder eine der fließenden Methoden, die Sie für prefix() aufrufen können, z. B. longer(), ist.
  • Eine heterogene Liste, bei der jedes Element einen der zuvor beschriebenen Werte haben muss.

Kann mit ! negiert werden.

prefix('192.168.0.0/24')

Gibt ein Präfixobjekt zurück, das den CIDR-Bereich 192.168.0.0/24 darstellt, der mit destination.inAnyRange() verwendet wird.

prefix('192.168.0.0/24').longer()

Gibt ein Präfixbereichsobjekt zurück, das eine Kopie von prefix() ist. Das Ende des Bereichs ist auf das maximale Familienwert für das Eingabepräfix (/32 oder /128) und der Anfang des Bereichs auf die Länge des Eingabepräfixes plus eins festgelegt.

prefix().orLonger()

Gibt ein Präfixbereichsobjekt zurück, das eine Kopie von prefix() ist, wobei das Ende des Bereichs auf den maximalen Wert der Adressfamilie des Eingabepräfixes (/32 oder /128) festgelegt ist.

prefix().lengthRange(20, 30)

Gibt ein Präfixbereichsobjekt zurück, das eine Kopie von prefix() ist, wobei der Anfang des Bereichs auf /20 und das Ende auf /30 gesetzt ist.

prefix().upTo(30)

Gibt ein Präfixbereichsobjekt zurück, das eine Kopie von prefix() ist, wobei das Ende des Bereichs auf /30 des Eingabepräfixes gesetzt ist.

communitySets('regional')

(Vorabversion)

Gibt die Liste der Communities zurück, die im Community-Set regional auf dem Router angegeben sind.

prefixSets('local')

(Vorabversion)

Gibt die Liste der Präfixe zurück, die im Präfixsatz local auf dem Router angegeben sind.

x || y

Gibt true zurück, wenn entweder x oder y gleich true ist.

x und y müssen boolesche Ausdrücke sein, die entweder das Attribut communities oder das Attribut destination verwenden.

Aufgrund der Regeln für ||-Vorgänge (OR) sind alle Bedingungen effektiv null oder mehr destination-Übereinstimmungsvorgänge, die durch OR verbunden sind.

(D0 || D1 || ... || Dm)

Die folgende Tabelle zeigt ein Beispiel für die Verwendung von prefix zum Erstellen komplexer regulärer Ausdrücke im Vergleich zu einigen Routeranbietern:

Cloud Router Cisco Juniper Erklärung

'192.168.0.1'

192.168.0.1

192.168.0.1

Enthält genau das Präfix 192.168.0.1/32

'192.168.0.0/24'

prefix('192.168.0.0/24')

192.168.0.0/24

192.168.0.0/24 exact

Enthält genau das Präfix 192.168.0.0/24

prefix('192.168.0.0/24').longer()

192.168.0.0/24 ge 25 le 32

192.168.0.0/24 longer

Stimmt mit dem Bereich zwischen 192.168.0.0/25 und 192.168.0.0/32 überein.

prefix('192.168.0.0/24').orLonger()

192.168.0.0/24 le 32

192.168.0.0/24 orlonger

Stimmt mit dem Bereich zwischen 192.168.0.0/24 und 192.168.0.0/32 überein.

prefix('192.168.0.0/24').lengthRange(25, 30)

192.168.0.0/24 ge 25 le 30

192.168.0.0/24 prefix-length-range /25-/30

Stimmt mit dem Bereich zwischen 192.168.0.0/25 und 192.168.0.0/30 überein.

prefix('192.168.0.0/24').upTo(30)

192.168.0.0/24 le 30

192.168.0.0/24 up to /30

Stimmt mit dem Bereich zwischen 192.168.0.0/24 und 192.168.0.0/30 überein.

Mit allen Routen übereinstimmen

In der folgenden Tabelle werden Beispiele beschrieben, die mit allen Routen im Match-Ausdruck einer BGP-Routenrichtlinie übereinstimmen:

Vorgang

Beschreibung

communities.matchesEvery([])

Entspricht allen Routen für Importrichtlinien.

destination.inAnyRange(prefix('0.0.0.0/0').orLonger())

Entspricht allen IPv4-Adressen für Import- oder Exportrichtlinien.

destination.inAnyRange(prefix('::/0').orLonger())

Entspricht allen IPv6-Adressen für Import- oder Exportrichtlinien.

destination.inAnyRange([prefix('0.0.0.0/0').orLonger(), prefix('::/0').orLonger()])

Entspricht allen Routen für Import- oder Exportrichtlinien.

Aktionsattribute

In der folgenden Tabelle werden die Aktionsattribute beschrieben, die für BGP-Routenrichtlinien verfügbar sind:

Attribut

Beschreibung

Beschränkungen

asPath

Die Liste der AS-Nummern, die die BGP-Routenaktualisierung durchlaufen hat

Richtlinien exportieren und importieren

communities

Die Liste der Communities der Route

Nur Richtlinien exportieren

med

Der Multi-Exit Discriminator (MED) der Route

Richtlinien exportieren und importieren

Aktionsvorgänge

In der folgenden Tabelle werden die Aktionsvorgänge beschrieben, die für BGP-Routenrichtlinien verfügbar sind:

Vorgang

Beschreibung

Beschränkungen

accept()

Akzeptiert die BGP-Route und beendet die weitere Auswertung der BGP-Routenrichtlinien oder -bedingungen, einschließlich aller Aktionen, die nach dieser Route folgen.

Keine

drop()

Die BGP-Route wird herausgefiltert und die weitere Auswertung von BGP-Richtlinien oder -Begriffen wird beendet, einschließlich aller nachfolgenden Aktionen.

Keine

nextPolicy()

Beendet die Ausführung der verbleibenden Begriffe in dieser BGP-Routenrichtlinie (einschließlich aller Aktionen nach diesem Begriff) und fährt mit der nächsten angewendeten BGP-Routenrichtlinie fort (falls vorhanden).

Keine

asPath.prependSequence([1, 2, 3])

Fügt dem AS-PATH-Attribut eine Liste von AS-Nummern als Sequenz vor.

Die Argumente müssen Ganzzahlen im Bereich von 32 Bit sein.

Keine

communities.add('65001:1234')

Fügt den Community-Wert der Liste der Communities hinzu.

Der Community-Wert kann eine einzelne Community oder eine Liste sein.

Alle Communitywerte, die private Communitys sind, die den folgenden ASNs von Google zugeordnet sind, werden von Cloud Router ignoriert:

6432, 15169, 16550, 16591, 19448, 19527, 22859, 26910, 32381, 36039, 36384, 36385, 36492, 55023

Nur Richtlinien exportieren

communities.remove('65001:1234')

Entfernt den Community-Wert aus der Liste der Communities.

Der Community-Wert kann eine einzelne Community oder eine Liste sein.

Alle Communitywerte, die private Communitys sind, die den folgenden ASNs von Google zugeordnet sind, werden von Cloud Router ignoriert:

6432, 15169, 16550, 16591, 19448, 19527, 22859, 26910, 32381, 36039, 36384, 36385, 36492, 55023

Nur Richtlinien exportieren

communities.replaceAll(['65001:1234'])

Ersetzt die Liste der Communities durch den Community-Wert, der leer sein kann.

Alle Communitywerte, die private Communitys sind, die den folgenden ASNs von Google zugeordnet sind, werden von Cloud Router ignoriert:

6432, 15169, 16550, 16591, 19448, 19527, 22859, 26910, 32381, 36039, 36384, 36385, 36492, 55023

Nur Richtlinien exportieren

med.set(12345)

Legt MED auf 12345 fest.

Der Wert von MED muss eine nicht negative Ganzzahl zwischen 0 und 232 sein.

Keine

med.add(12345)

Fügt dem festgelegten MED-Wert 12345 hinzu.

Der Wert von MED muss eine nicht negative Ganzzahl zwischen 0 und 232 sein. Wenn das Ergebnis der Addition größer als 232 – 1 ist, wird MED auf 232 - 1 gesetzt.

Keine

med.subtract(12345)

Subtrahiert 12345 vom festgelegten MED-Wert.

Der Wert von MED muss eine nicht negative Ganzzahl zwischen 0 und 232 sein. Wenn das Ergebnis der Subtraktion kleiner als 0 ist, wird MED auf 0 gesetzt.

Keine