Grundlegendes zu AS Path Regular Expressions for Use as Routing Policy Match Conditions (Grundlegendes zu AS Path Regular Expressions for Use as Routing Policy Match Conditions)
Ein BGP AS-Pfad ist die Abfolge autonomer Systeme, die Netzwerkpakete durchqueren, um zu einem angegebenen Router zu gelangen. AS-Nummern werden in einer Sequenz zusammengestellt, die von rechts nach links gelesen wird. Wenn beispielsweise ein Paket ein Ziel über eine Route mit einem AS-Pfad 5 4 3 2 1 erreicht, durchquert das Paket zuerst AS 5 und so weiter, bis es AS 1 erreicht. In diesem Fall ist AS 1 der letzte AS vor dem Paketziel. es ist die AS, mit der die Quelle des Pakets peeren würde.
Beim Arbeiten mit AS-Pfaden und Routing-Richtlinien-Übereinstimmungsbedingungen können Sie reguläre Ausdrücke verwenden, um Routen zu lokalisieren. Erstellen Sie dazu eine oder mehrere Übereinstimmungsbedingungen basierend auf einem teil oder dem gesamten AS-Pfad, und fügen Sie ihn dann in eine Routing-Richtlinie ein.
In den folgenden Abschnitten werden reguläre AUSDRÜCKE des AS-Pfads beschrieben und Konfigurationsbeispiele bereitgestellt.
Konfiguration von AS Path Regular Expressions
Sie können einen named AS Path Regular Expression erstellen und ihn dann mit der Übereinstimmungsbedingung as-path
in eine Routingrichtlinie einschließen (beschrieben in Übereinstimmungsbedingungen für Routing-Richtlinien). Um einen benannten AS-Pfad regulären Ausdruck zu erstellen, fügen Sie die Anweisung ein as-path
:
[edit policy-options] as-path name regular-expression;
Um den regulären Ausdruck des AS-Pfads in eine Routing-Richtlinie einzubeziehen, fügen Sie die Übereinstimmungsbedingung as-path
in die from
Anweisung ein.
Darüber hinaus können Sie eine benannte AS-Pfadgruppe aus regulären AUSDRÜCKEn des AS-Pfads erstellen und sie dann mit der as-path-group
Übereinstimmungsbedingung in eine Routingrichtlinie aufnehmen. Um eine benannte AS-Pfadgruppe zu erstellen, fügen Sie die Anweisung ein as-path-group
.
[edit policy-options] as-path-group group-name { name [ regular-expressions ]; }
Um die regulären AUSDRÜCKE des AS-Pfads in die AS-Pfadgruppe in eine Routingrichtlinie einzuschließen, fügen Sie die as-path-group
Übereinstimmungsbedingung in die from
Anweisung ein.
Sie können nicht beides und as-path-group
Anweisungen as-path
im selben Richtlinienbegriff einschließen.
Sie können die Namen mehrerer regulärer AUSDRÜCKE des AS-Pfads in die as-path
Übereinstimmungsbedingung in die from
Anweisung aufnehmen. Wenn Sie dies tun, muss nur ein regulärer Ausdruck des AS-Pfads übereinstimmen, damit eine Übereinstimmung auftritt. Die Abgleichung des AS-Pfads mit regulären Ausdrücken ist im Prinzip ein logischer ODER-Vorgang.
Der AS-Pfadname identifiziert den regulären Ausdruck. Sie kann Buchstaben, Zahlen und Bindestriche (-) enthalten und bis zu 65.536 Zeichen umfassen. Um Leerzeichen in den Namen einzufügen, schließen Sie den gesamten Namen in Anführungszeichen ("").
Der reguläre Ausdruck wird verwendet, um alle oder Teile des AS-Pfads zu entsprechen. Sie besteht aus zwei Komponenten, die Sie im folgenden Format angeben:
term <operator>
term
– Identifiziert einen AS. Sie können es auf eine der folgenden Arten angeben:AS-Nummer: Die gesamte AS-Nummer setzt sich aus einem Begriff zusammen. Sie können keine einzelnen Zeichen innerhalb einer AS-Nummer referenzieren, die sich von regulären Ausdrücken wie in POSIX 1003.2 definiert unterscheidet.
Platzhalterzeichen – Entspricht einer einzelnen AS-Nummer. Das Wildcard-Zeichen ist ein Punkt (.). Sie können mehrere Wildcard-Zeichen angeben.
AS-Pfad: Eine einzelne AS-Nummer oder eine Gruppe von AS-Zahlen, die in Klammern eingeschlossen sind. Wenn Sie den regulären Ausdruck auf diese Weise gruppieren, können Sie einen gemeinsamen Vorgang für die Gruppe als Ganzes durchführen und der Gruppe Vorrang geben. Der gruppierte Pfad kann selbst Betreiber enthalten.
In Junos OS Version 9.1 und höher können Sie 4-Byte-AS-Zahlen wie in RFC 4893, BGP-Unterstützung für Vier-Oktett-AS-Nummernraum sowie die 2-Byte-AS-Nummern angeben, die in früheren Versionen von Junos OS unterstützt werden. Sie können einen Wert im Bereich von 1 bis 4.294.967.295 konfigurieren.
operator
—(Optional) Ein Operator, der festlegt, wie der Begriff übereinstimmen muss. Die meisten Betreiber beschreiben, wie oft der Begriff gefunden werden muss, um als Übereinstimmung betrachtet zu werden (z. B. eine beliebige Anzahl von Vorfällen oder Null oder ein Vorkommen). Tabelle 1 listet die Operatoren für reguläre Ausdrücke auf, die für AS-Pfade unterstützt werden. Sie platzieren Die Operatoren sofort danachterm
, mit Ausnahme der Pipe ( | ) und Dash (–) Operatoren, die Sie zwischen zwei Begriffen und Klammern platzieren, denen Sie Begriffe beifügen.
Sie können ein oder mehrere Term-Operator-Paare in einem einzelnen regulären Ausdruck angeben.
Tabelle 2 zeigt Beispiele für das Definieren von regulären Ausdrücken, die as-Pfaden entsprechen.
Betreiber |
Übereinstimmungsdefinition |
---|---|
|
Zumindest |
|
Genaue |
|
|
|
Null oder mehr Wiederholungen von |
|
Eine oder mehrere Wiederholungen von |
|
Null oder eine Wiederholung von |
|
Einer von zwei Begriffen auf beiden Seiten der Leitung. |
|
Zwischen start- und enden Bereich, inklusiv. |
|
Ein Zeichen am Anfang eines Community-Attributs regulären Ausdrucks. Dieses Zeichen wird implizit hinzugefügt; daher ist die Verwendung optional. |
|
Ein Zeichen am Ende eines Community-Attributs regulärer Ausdruck. Dieses Zeichen wird implizit hinzugefügt; daher ist die Verwendung optional. |
|
Eine Gruppe von Begriffen, die in den Klammern eingeschlossen sind. Das dazwischenliegende Leerzeichen zwischen den Klammern und den Begriffen wird ignoriert. Wenn eine Reihe von Klammern in Anführungszeichen ohne dazwischenliegendes Leerzeichen "()" eingeschlossen ist, gibt dies einen NULL-Pfad an. |
|
Satz von AS-Zahlen. Eine AS-Nummer aus dem Set muss übereinstimmen. Um den Anfang und das Ende eines Bereichs anzugeben, verwenden Sie einen Bindestrich (-). Ein Caret (^) kann verwendet werden, um anzugeben, dass er nicht mit einer bestimmten AS-Nummer im Satz übereinstimmt, z. B. [^123]. |
AS-Pfad zum Match |
Regulärer Ausdruck |
Beispiel-Übereinstimmungen |
---|---|---|
AS-Pfad ist 1234 |
1234 |
1234 |
Keine oder mehr Vorkommen der AS-Nummer 1234 |
1234* |
1234 1234 1234 1234 1234 1234 Null-AS-Pfad |
Null oder ein Auftreten der AS-Nummer 1234 |
1234? oder 1234{0,1} |
1234 Null-AS-Pfad |
Ein bis vier Vorkommen der AS-Nummer 1234 |
1234{1,4} |
1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 |
Ein bis vier Vorkommen von AS Nummer 12, gefolgt von einem Vorkommen von AS Nummer 34 |
12{1,4} 34 |
12 34 12 12 34 12 12 12 34 12 12 12 12 34 |
Bereich von AS-Zahlen, die einer einzelnen AS-Nummer entsprechen |
123–125 |
123 124 125 |
[123–125]* |
Null-AS-Pfad 123 124 124 125 125 125 123 124 125 123 |
|
Pfad, dessen zweite AS-Nummer 56 oder 78 sein muss |
(56) | 78) oder . (56 | 78) |
1234 56 1234 78 9876 56 3857 78 |
Pfad, dessen zweite AS-Nummer 56 oder 78 sein kann |
. (56 | 78)? |
1234 56 52 34 56 1234 1234 78 39 794 78 2 |
Pfad, dessen erste AS-Nummer 123 und die zweite AS-Nummer entweder 56 oder 78 ist |
123 (56|78) |
123 56 123 78 |
Pfad jeder Länge, außer nicht vorhanden, dessen zweite AS-Nummer alles sein kann, einschließlich nicht vorhandener Pfade |
. .*Oder. . {0,} |
1234 1234 5678 1234 5 6 7 8 |
AS-Pfad ist 1 2 3 |
1 2 3 |
1 2 3 |
Ein Auftreten der AS-Nummern 1 und 2 gefolgt von einem oder mehreren Vorkommnissen der AS-Nummer 3 |
1 2 3+ |
1 2 3 1 2 3 3 1 2 3 3 3 |
Ein oder mehrere Ereignisse von AS Nummer 1 gefolgt von einem oder mehreren Ereignissen von AS Nummer 2, gefolgt von einem oder mehreren Ereignissen von AS-Nummer 2 Nr. 3 |
1+ 2+ 3+ |
1 2 3 1 1 2 3 1 1 2 2 3 1 1 2 2 3 3 |
Pfad jeder Länge, der mit den AS-Nummern 4, 5, 6 beginnt |
4 5 6 .* |
4 5 6 4 5 6 7 8 9 |
Pfad jeder Länge, der mit den AS-Nummern 4, 5, 6 endet |
.* 4 5 6 |
4 5 6 1 2 3 4 5 6 4 9 4 5 6 |
AS-Pfad 5, 12 oder 18 |
5 | 12 | 18 |
5 12 18 |
Konfigurieren eines Null-AS-Pfads
Sie können reguläre AUSDRÜCKE des AS-Pfads verwenden, um einen NULL-AS-Pfad zu erstellen, der den aus Ihrem AS stammenden Routen (Präfixen) entspricht. Diese Routen wurden Ihrem AS von keinem externen Peer angekündigt. Um einen Null-AS-Pfad zu erstellen, verwenden Sie den Klammeroperator, der in Anführungszeichen ohne dazwischenliegende Leerzeichen eingeschlossen ist:
[edit policy-options] as-path null-as “()";
Im folgenden Beispiel ist lokal verwaltete AS 2 mit AS 1 (10.2.2.6) und AS 3 verbunden. AS 3 kündigt seine Routen zu AS 2 an, aber der Administrator für AS 2 möchte keine AS 3-Routen zu AS 1 ankündigen und somit Transitverkehr von AS 1 zu AS 3 bis AS 2 zulassen. Um Den Transitverkehr zu verhindern, wird die Exportrichtlinie only-my-routes
auf AS 1 angewendet. Es erlaubt die Ankündigung von Routen von AS 2 zu AS 1, verhindert aber die Ankündigung von Routen für AS 3 (oder Routen für andere verbundene AS) zu AS 1:
[edit policy-options] as-path null-as "()"; policy-statement only-my-routes { term just-my-as { from { protocol bgp; as-path null-as; } then accept; } term nothing-else { then reject; } } protocol { bgp { neighbor 10.2.2.6 { export only-my-routes; } } }
Bewertung von as Path Regular Expressions
As-Pfad-reguläre Ausdrücke implementieren die erweiterten (modernen) regulären Ausdrücke, wie in POSIX 1003.2 definiert. Sie sind identisch mit den regulären UNIX-Ausdrücken mit den folgenden Ausnahmen:
Die grundlegende Einheit für den Abgleich in einem regulären Ausdruck des AS-Pfads ist die AS-Nummer und nicht ein individuelles Zeichen.
Ein regulärer Ausdruck entspricht einer Route nur, wenn der AS-Pfad in der Route genau zu .
regular-expression
Der entsprechende reguläre UNIX-Ausdruck ist^regular-expression$
. Beispielsweise ist der AS-Pfad regulärer Ausdruck1234
gleichbedeutend mit dem UNIX-regulären Ausdruck^1234$
.Sie können einen regulären Ausdruck mit Wildcard-Operatoren angeben.
Beispiele: Konfigurieren von AS Path Regular Expressions
Passen Sie Routen genau mit dem AS-Pfad 1234 56 78 9 ab und akzeptieren Sie sie:
[edit] policy-options { as-path wellington "1234 56 78 9"; policy-statement from-wellington { term term1 { from as-path wellington; } then { preference 200; accept; } term term2 { then reject; } } }
Passen Sie alternative Pfade mit einem AS ab und akzeptieren Sie sie, nachdem Sie die Präferenz geändert haben:
[edit] policy-options { as-path wellington-alternate “1234{1,6} (56|47)? (78|101|112)* 9+”; policy-statement from-wellington { from as-path wellington-alternate; } then { preference 200; accept; } } }
Passen Sie Routen mit einem AS-Pfad von 123, 124 oder 125 ab und akzeptieren Sie sie, nachdem Sie die Präferenz geändert haben:
[edit] policy-options { as-path addison "123–125"; policy-statement from-addison { from as-path addison; } then { preference 200; accept; } } }