Comprendre les expressions régulières de chemin AS à utiliser comme conditions de correspondance de stratégie de routage
Un chemin BGP AS est la séquence de systèmes autonomes que traversent les paquets réseau pour parvenir à un routeur spécifié. Les numéros AS sont assemblés dans une séquence qui se lit de droite à gauche. Par exemple, pour qu’un paquet atteigne une destination à l’aide d’une route avec un chemin AS 5 4 3 2 1, le paquet traverse d’abord AS 5 et ainsi de suite jusqu’à ce qu’il atteigne AS 1. Dans ce cas, AS 1 est le dernier AS avant la destination du paquet ; c’est l’AS avec lequel la source du paquet s’apparierait.
Lorsque vous utilisez des chemins AS et des conditions de correspondance de stratégie de routage, vous pouvez utiliser des expressions régulières pour localiser les itinéraires. Pour ce faire, créez une ou plusieurs conditions de correspondance basées sur tout ou partie du chemin AS, puis incluez-les dans une stratégie de routage.
Les sections suivantes décrivent les expressions régulières de chemin AS et fournissent des exemples de configuration.
Configuration des expressions régulières de chemin AS
Vous pouvez créer une expression régulière de chemin AS nommée, puis l’inclure dans une stratégie de routage avec la condition de correspondance (décrite à Conditions de correspondance de la stratégie de routagela as-path
section ). Pour créer une expression régulière de chemin AS nommée, incluez l’instruction as-path
suivante :
[edit policy-options] as-path name regular-expression;
Pour inclure l’expression régulière de chemin AS dans une stratégie de routage, incluez la as-path
condition de correspondance dans l’instruction from
.
En outre, vous pouvez créer un groupe de chemin AS nommé composé d’expressions régulières de chemin AS, puis l’inclure dans une stratégie de routage avec la as-path-group
condition de correspondance. Pour créer un groupe de chemins d’accès AS nommé, incluez l’instruction as-path-group
.
[edit policy-options] as-path-group group-name { name [ regular-expressions ]; }
Pour inclure les expressions régulières de chemin AS dans le groupe de chemins AS dans une stratégie de routage, incluez la as-path-group
condition de correspondance dans l’instruction from
.
Vous ne pouvez pas inclure les deux énoncés et as-path
as-path-group
dans la même durée de police.
Vous pouvez inclure les noms de plusieurs expressions régulières de chemin AS dans la as-path
condition de correspondance de l’instruction from
. Si vous faites cela, une seule expression rationnelle de chemin AS doit correspondre pour qu’une correspondance se produise. La correspondance d’expressions régulières de chemin AS est en fait une opération OR logique.
Le nom du chemin d’accès AS identifie l’expression régulière. Il peut contenir des lettres, des chiffres et des traits d’union (-) et peut comporter jusqu’à 65 536 caractères. Pour inclure des espaces dans le nom, placez le nom entier entre guillemets ( » « ).
L’expression régulière est utilisée pour faire correspondre tout ou partie du chemin AS. Il se compose de deux composants, que vous spécifiez dans le format suivant :
term <operator>
term
: identifie un AS. Vous pouvez le spécifier de l’une des manières suivantes :Numéro AS : l’ensemble du nombre AS compose un terme. Vous ne pouvez pas référencer des caractères individuels à l’intérieur d’un numéro AS, qui diffère des expressions régulières telles que définies dans POSIX 1003.2.
Caractère générique : correspond à n’importe quel nombre AS. Le caractère générique est un point (.). Vous pouvez spécifier plusieurs caractères génériques.
Chemin AS : un seul numéro AS ou un groupe de numéros AS entre parenthèses. Regrouper ainsi l’expression régulière permet d’effectuer une opération commune sur l’ensemble du groupe et de lui donner la priorité. Le chemin groupé peut lui-même inclure des opérateurs.
Dans Junos OS version 9.1 et ultérieure, vous pouvez spécifier des numéros AS sur 4 octets tels que définis dans RFC 4893, BGP Support for Four-octet AS Number Space, ainsi que les numéros AS sur 2 octets pris en charge dans les versions antérieures de Junos OS. Vous pouvez configurer une valeur comprise entre 1 et 4 294 967 295.
operator
—(Facultatif) Opérateur spécifiant comment le terme doit correspondre. La plupart des opérateurs décrivent le nombre de fois où le terme doit être trouvé pour être considéré comme une correspondance (par exemple, n’importe quel nombre d’occurrences, ou zéro, ou une occurrence). Tableau 1 répertorie les opérateurs d’expression régulière pris en charge pour les chemins AS. Vous placez les opérateurs immédiatement aprèsterm
sans espace, à l’exception des opérateurs de barre verticale ( | ) et de tiret (–), que vous placez entre deux termes, et des parenthèses, avec lesquelles vous entourez des termes.
Vous pouvez spécifier une ou plusieurs paires terme-opérateur dans une seule expression régulière.
Tableau 2 montre des exemples de définition d’expressions régulières pour qu’elles correspondent à des chemins AS.
Opérateur |
Définition de correspondance |
---|---|
|
Au moins |
|
Les répétitions exactes |
|
|
|
Zéro ou plusieurs répétitions de |
|
Une ou plusieurs répétitions de |
|
Zéro ou une répétition de |
|
L’un des deux termes de chaque côté du tuyau. |
|
Entre une plage de départ et une plage d’arrivée, inclusivement. |
|
Caractère situé au début d’une expression régulière d’attribut de communauté. Ce caractère est ajouté implicitement ; Par conséquent, son utilisation est facultative. |
|
Caractère à la fin d’une expression régulière d’attribut de communauté. Ce caractère est ajouté implicitement ; Par conséquent, son utilisation est facultative. |
|
Groupe de termes entre parenthèses. L’espace intermédiaire entre les parenthèses et les termes est ignoré. Si un ensemble de parenthèses est placé entre guillemets sans espace intermédiaire « () », cela indique un chemin nul. |
|
Ensemble de numéros AS. Un numéro AS de l’ensemble doit correspondre. Pour spécifier le début et la fin d’une plage, utilisez un trait d’union (-). Un accent circonflexe (^) peut être utilisé pour indiquer qu’il ne correspond pas à un nombre AS particulier dans l’ensemble, par exemple [^123]. |
AS Chemin à faire correspondre |
Expression régulière |
Exemples de correspondances |
---|---|---|
Le chemin AS est 1234 |
1234 |
1234 |
Zéro ou plusieurs occurrences du numéro AS 1234 |
1234* |
1234 1234 1234 1234 1234 1234 Chemin d’accès AS nul |
Zéro ou une occurrence du numéro AS 1234 |
1234? ou 1234{0,1} |
1234 Chemin d’accès AS nul |
Une à quatre occurrences du numéro AS 1234 |
1234{1,4} |
1234 1234 1234 1234 1234 1234 1234 1234 1234 1234 |
Une à quatre occurrences de l’AS numéro 12, suivies d’une occurrence de l’AS numéro 34 |
12{1,4} 34 |
12 34 12 12 34 12 12 12 34 12 12 12 12 34 |
Plage de numéros AS pour correspondre à un seul numéro AS |
123–125 |
Près de 200 124 125 |
[123–125]* |
Chemin d’accès AS nul Près de 200 124 124 125 125 125 123 124 125 123 |
|
Chemin dont le deuxième numéro AS doit être 56 ou 78 |
(. 56) | (. 78) ou . (56 | 78) |
1234 56 1234 78 9876 56 3857 78 |
Chemin dont le second numéro AS peut être 56 ou 78 |
. (56 | 78) ? |
1234 56 52 34 56 1234 1234 78 39 794 78 2 |
Chemin dont le premier numéro AS est 123 et le second est 56 ou 78 |
123 (56|78) |
123 56 123 78 |
Chemin de n’importe quelle longueur, sauf inexistant, dont le second nombre AS peut être n’importe quoi, y compris inexistant |
. .*Ou. . {0,} |
1234 1234 5678 1234 5 6 7 8 |
Le chemin AS est 1 2 3 |
1 2 3 |
1 2 3 |
Une occurrence des numéros AS 1 et 2, suivie d’une ou plusieurs occurrences du numéro AS 3 |
1 2 3+ |
1 2 3 1 2 3 3 1 2 3 3 3 |
Une ou plusieurs occurrences de SA numéro 1, suivies d’une ou de plusieurs occurrences de AS numéro 2, suivies d’une ou de plusieurs occurrences de AS Numéro 3 |
1+ 2+ 3+ |
1 2 3 1 1 2 3 1 1 2 2 3 1 1 2 2 3 3 |
Chemin de n’importe quelle longueur commençant par les numéros AS 4, 5, 6 |
4 5 6 .* |
4 5 6 4 5 6 7 8 9 |
Chemin de n’importe quelle longueur qui se termine par les numéros AS 4, 5, 6 |
.* 4 5 6 |
4 5 6 1 2 3 4 5 6 4 9 4 5 6 |
Chemin AS 5, 12 ou 18 |
5 | 12 | 18 |
5 12 18 |
Configuration d’un chemin AS nul
Vous pouvez utiliser des expressions régulières de chemin AS pour créer un chemin AS nul qui correspond aux chemins (préfixes) qui proviennent de votre AS. Ces routes n’ont pas été annoncées à votre AS par des pairs externes. Pour créer un chemin AS nul, utilisez l’opérateur entre parenthèses entre guillemets sans espace intermédiaire :
[edit policy-options] as-path null-as “()";
Dans l’exemple suivant, l’AS 2 administré localement est connecté à l’AS 1 (10.2.2.6) et à l’AS 3. L’AS 3 annonce ses itinéraires vers l’AS 2, mais l’administrateur de l’AS 2 ne veut pas annoncer les itinéraires de l’AS 3 vers l’AS 1 et ainsi autoriser le trafic de transit de l’AS 1 vers l’AS 3 via l’AS 2. Pour empêcher le trafic de transit, la stratégie only-my-routes
d’exportation est appliquée à l’AS 1. Il permet d’annoncer les routes de l’AS 2 à l’AS 1 mais empêche l’annonce des routes de l’AS 3 (ou de tout autre AS connecté) à l’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; } } }
Évaluation des expressions régulières de chemin AS
Les expressions rationnelles de chemin AS implémentent les expressions rationnelles étendues (modernes) telles que définies dans POSIX 1003.2. Elles sont identiques aux expressions rationnelles UNIX avec les exceptions suivantes :
L’unité de base de l’appariement dans une expression régulière de chemin AS est le nombre AS et non un caractère individuel.
Une expression régulière correspond à une route uniquement si le chemin AS de la route correspond exactement à
regular-expression
. L’expression rationnelle UNIX équivalente est^regular-expression$
. Par exemple, l’expression régulière AS path est équivalente à l’expression1234
^1234$
rationnelle UNIX .Vous pouvez spécifier une expression régulière à l’aide d’opérateurs génériques.
Exemples: Configuration des expressions régulières de chemin AS
Faites correspondre exactement les itinéraires avec le chemin AS 1234 56 78 9 et acceptez-les :
[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; } } }
Faites correspondre des chemins alternatifs à un AS et acceptez-les après avoir modifié la préférence :
[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; } } }
Faites correspondre les routes avec un chemin AS de 123, 124 ou 125 et acceptez-les après avoir modifié la préférence :
[edit] policy-options { as-path addison "123–125"; policy-statement from-addison { from as-path addison; } then { preference 200; accept; } } }