Grundlegendes zu regulären AS-Pfadausdrücken für die Verwendung als Übereinstimmungsbedingungen für Routingrichtlinien
Ein BGP AS-Pfad ist die Abfolge autonomer Systeme, die Netzwerkpakete durchlaufen, um zu einem bestimmten Router zu gelangen. AS-Nummern werden in einer Reihenfolge zusammengestellt, die von rechts nach links gelesen wird. Damit beispielsweise ein Paket ein Ziel über eine Route mit einem AS-Pfad 5 4 3 2 1 erreicht, durchläuft 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 der AS, mit dem die Quelle des Pakets peeren würde.
Wenn Sie mit übereinstimmenden Bedingungen für AS-Pfade und Routing-Richtlinien arbeiten, können Sie reguläre Ausdrücke verwenden, um Routen zu suchen. Erstellen Sie dazu eine oder mehrere Übereinstimmungsbedingungen, die auf einem Teil oder dem gesamten AS-Pfad basieren, und schließen Sie ihn dann in eine Routing-Richtlinie ein.
In den folgenden Abschnitten werden reguläre AS-Pfadausdrücke beschrieben und Konfigurationsbeispiele bereitgestellt.
Konfiguration von regulären AS-Pfad-Ausdrücken
Sie können einen regulären Ausdruck mit benanntem AS-Pfad erstellen und ihn dann in eine Routingrichtlinie mit der Übereinstimmungsbedingung (beschrieben in as-path) einschließen.Übereinstimmungsbedingungen für Routing-Richtlinien Um einen regulären Ausdruck mit benanntem AS-Pfad zu erstellen, fügen Sie die folgende Anweisung ein:
as-path
[edit policy-options] as-path name regular-expression;
Um den regulären AS-Pfadausdruck in eine Routing-Richtlinie aufzunehmen, schließen Sie die Übereinstimmungsbedingung in die Anweisung ein.as-path
from
Darüber hinaus können Sie eine benannte AS-Pfadgruppe erstellen, die aus regulären AS-Pfadausdrücken besteht, und diese dann in eine Routingrichtlinie mit der Übereinstimmungsbedingung einschließen.as-path-group
Um eine benannte AS-Pfadgruppe zu erstellen, schließen Sie die Anweisung ein.as-path-group
[edit policy-options] as-path-group group-name { name [ regular-expressions ]; }
Um die regulären AS-Pfadausdrücke innerhalb der AS-Pfadgruppe in eine Routing-Richtlinie aufzunehmen, fügen Sie die Übereinstimmungsbedingung in die Anweisung ein.as-path-group
from
Es ist nicht möglich, sowohl die und-Anweisungen in denselben Richtlinienbegriff aufzunehmen.as-path
as-path-group
Sie können die Namen mehrerer regulärer AS-Pfadausdrücke in die Übereinstimmungsbedingung in der Anweisung aufnehmen.as-path
from
Wenn Sie dies tun, muss nur ein regulärer AS-Pfadausdruck übereinstimmen, damit eine Übereinstimmung auftritt. Der Abgleich regulärer AS-Pfadausdrücke ist im Grunde eine logische ODER-Operation.
Der AS-Pfadname identifiziert den regulären Ausdruck. Er kann Buchstaben, Zahlen und Bindestriche (-) enthalten und bis zu 65.536 Zeichen lang sein. Um Leerzeichen in den Namen einzufügen, schließen Sie den gesamten Namen in Anführungszeichen (" ") ein.
Der reguläre Ausdruck wird verwendet, um den gesamten AS-Pfad oder Teile davon abzugleichen. Es 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 nicht auf einzelne Zeichen innerhalb einer AS-Nummer verweisen, die sich von regulären Ausdrücken unterscheidet, wie sie in POSIX 1003.2 definiert sind.
Platzhalterzeichen: Entspricht einer beliebigen AS-Nummer. Das Platzhalterzeichen ist ein Punkt (.). Sie können mehrere Platzhalterzeichen angeben.
AS-Pfad: Eine einzelne AS-Nummer oder eine Gruppe von AS-Nummern in Klammern. Wenn Sie den regulären Ausdruck auf diese Weise gruppieren, können Sie eine gemeinsame Operation für die Gruppe als Ganzes ausführen und der Gruppe Vorrang einräumen. Der gruppierte Pfad kann selbst Operatoren enthalten.
In Junos OS Version 9.1 und höher können Sie 4-Byte-AS-Nummern angeben, wie in RFC 4893, BGP-Unterstützung für den AS-Nummernraum mit vier Oktetten, definiert, sowie die 2-Byte-AS-Nummern, die in früheren Versionen des Junos-Betriebssystems unterstützt werden. Sie können einen Wert im Bereich von 1 bis 4.294.967.295 konfigurieren.
operator
—(Optional) Ein Operator, der angibt, wie der Begriff übereinstimmen muss. Die meisten Operatoren beschreiben, wie oft der Begriff gefunden werden muss, um als Übereinstimmung betrachtet zu werden (z. B. eine beliebige Anzahl von Vorkommen, null oder ein Vorkommen). listet die Operatoren für reguläre Ausdrücke auf, die für AS-Pfade unterstützt werden.Tabelle 1 Sie platzieren Operatoren unmittelbar danach ohne Leerzeichen, mit Ausnahme der Operatoren für senkrechte Striche ( | ) und Bindestriche (–), die Sie zwischen zwei Begriffen platzieren, und Klammern, mit denen Sie Begriffe einschließen.term
Sie können ein oder mehrere Begriffs-Operator-Paare in einem einzelnen regulären Ausdruck angeben.
Tabelle 2 zeigt Beispiele für das Definieren regulärer Ausdrücke für AS-Pfade.
Administrator |
Definition von Übereinstimmungen |
---|---|
|
Zumindest und bei den meisten Wiederholungen von . |
|
Exakte Wiederholungen von . müssen eine positive ganze Zahl sein. |
|
oder mehrere Wiederholungen von . müssen eine positive ganze Zahl sein. |
|
Keine oder mehr Wiederholungen von . |
|
Eine oder mehrere Wiederholungen von . |
|
Null oder eine Wiederholung von . |
|
Einer von zwei Begriffen auf beiden Seiten der Pipe. |
|
Zwischen einem Start- und einem Endbereich, einschließlich. |
|
Ein Zeichen am Anfang eines regulären Ausdrucks für Community-Attribute. Dieses Zeichen wird implizit hinzugefügt. Daher ist die Verwendung optional. |
|
Ein Zeichen am Ende eines regulären Ausdrucks für Community-Attribute. Dieses Zeichen wird implizit hinzugefügt. Daher ist die Verwendung optional. |
|
Eine Gruppe von Begriffen, die in Klammern eingeschlossen sind. Zwischenräume zwischen den Klammern und den Begriffen werden ignoriert. Wenn eine Gruppe von Klammern in Anführungszeichen ohne Leerzeichen "()" eingeschlossen ist, gibt dies einen NULL-Pfad an. |
|
Satz von AS-Nummern. Eine AS-Nummer aus dem Set muss übereinstimmen. Um den Anfang und das Ende eines Bereichs anzugeben, verwenden Sie einen Bindestrich (-). Eine Einfügemarke (^) kann verwendet werden, um anzugeben, dass sie nicht mit einer bestimmten AS-Nummer in der Menge übereinstimmt, z. B. [^123]. |
AS-Pfad zum Abgleich |
Regulärer Ausdruck |
Beispielhafte Übereinstimmungen |
---|---|---|
AS-Pfad ist 1234 |
1234 |
1234 |
Null oder mehr Vorkommen der AS-Nummer 1234 |
1234* |
1234 1234 1234 1234 1234 1234 Null AS-Pfad |
Null oder ein Vorkommen 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-Nummern, die mit einer einzelnen AS-Nummer übereinstimmen |
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 zweite AS-Nummer entweder 56 oder 78 ist |
123 (56|78) |
123 56 123 78 |
Pfad beliebiger Länge, außer nicht vorhanden, dessen zweite AS-Nummer alles sein kann, einschließlich nicht vorhanden |
. .*Oder. . {0,} |
1234 1234 5678 1234 5 6 7 8 |
AS-Pfad ist 1 2 3 |
1 2 3 |
1 2 3 |
Ein Vorkommen der AS-Nummern 1 und 2, gefolgt von einem oder mehreren Vorkommen der AS-Nummer 3 |
1 2 3+ |
1 2 3 1 2 3 3 1 2 3 3 3 |
Ein oder mehrere Vorkommen von AS Nummer 1, gefolgt von einem oder mehreren Vorkommen von AS Nummer 2, gefolgt von einem oder mehreren Vorkommen von AS Nummer 3 |
1+ 2+ 3+ |
1 2 3 1 1 2 3 1 1 2 2 3 1 1 2 2 3 3 |
Beliebiger Pfad, der mit den AS-Nummern 4, 5, 6 beginnt |
4 5 6 .* |
4 5 6 4 5 6 7 8 9 |
Pfad beliebiger 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 AS-Pfadausdrücke verwenden, um einen NULL-AS-Pfad zu erstellen, der mit Routen (Präfixen) übereinstimmt, die ihren Ursprung in Ihrem AS haben. Diese Routen wurden Ihrem AS nicht von externen Peers angekündigt. Um einen AS-Pfad zu erstellen, verwenden Sie den Klammeroperator, der in Anführungszeichen ohne Leerzeichen eingeschlossen ist:
[edit policy-options] as-path null-as “()";
Im folgenden Beispiel wird der lokal verwaltete AS 2 mit AS 1 (10.2.2.6) und AS 3 verbunden. AS 3 kündigt seine Routen an AS 2 an, aber der Administrator für AS 2 möchte AS 3-Routen nicht an AS 1 ankündigen und damit den Transitverkehr von AS 1 nach AS 3 durch AS 2 zulassen. Um Transitverkehr zu verhindern, wird die Exportrichtlinie auf AS 1 angewendet. Es erlaubt die Ankündigung von Fahrstraßen von AS 2 nach AS 1, verhindert jedoch die Ankündigung von Fahrstraßen für AS 3 (oder Fahrstraßen für andere verbundene AS) an AS 1:only-my-routes
[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; } } }
Wie reguläre AS-Pfadausdrücke ausgewertet werden
Reguläre AS-Pfadausdrücke implementieren die erweiterten (modernen) regulären Ausdrücke, wie sie in POSIX 1003.2 definiert sind. Sie sind identisch mit den regulären UNIX-Ausdrücken mit folgenden Ausnahmen:
Die grundlegende Einheit des Abgleichs in einem regulären AS-Pfadausdruck ist die AS-Nummer und kein einzelnes Zeichen.
Ein regulärer Ausdruck stimmt nur dann mit einer Route überein, wenn der AS-Pfad in der Route genau mit übereinstimmt .
regular-expression
Der entsprechende reguläre UNIX-Ausdruck ist .^regular-expression$
Der reguläre Ausdruck für den AS-Pfad entspricht z. B. dem regulären UNIX-Ausdruck .1234
^1234$
Sie können einen regulären Ausdruck mithilfe von Platzhalteroperatoren angeben.
Beispiele: Reguläre AS-Pfadausdrücke konfigurieren
Routen exakt mit dem AS-Pfad 1234 56 78 9 abgleichen und übernehmen:
[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; } } }
Ordnen Sie alternative Pfade einem AS zu und akzeptieren Sie sie, nachdem Sie die Einstellung 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; } } }
Routen mit dem AS-Pfad 123, 124 oder 125 abgleichen und nach Änderung der Einstellung akzeptieren:
[edit] policy-options { as-path addison "123–125"; policy-statement from-addison { from as-path addison; } then { preference 200; accept; } } }