Exemple : Configuration d’un sous-programme de stratégie
Cet exemple illustre l’utilisation d’un sous-programme de stratégie dans une condition de correspondance de stratégie de routage.
Conditions préalables
Aucune configuration spéciale au-delà de l’initialisation de l’appareil n’est requise avant de configurer cet exemple.
Présentation
Sur l’appareil R1, une stratégie appelée main
est configurée.
user@R1# show policy-options policy-statement main { term subroutine-as-a-match { from policy subroutine; then accept; } term nothing-else { then reject; } }
Cette stratégie principale appelle un sous-programme appelé subroutine
.
user@R1# show policy-options policy-statement subroutine { term get-routes { from protocol static; then accept; } term nothing-else { then reject; } }
Le routeur évalue la logique de main
d’une manière définie. Le critère de correspondance de permet au périphérique de routage de from policy subroutine
localiser le sous-programme. Tous les termes du sous-programme sont évalués, dans l’ordre, en suivant les règles normales de traitement des stratégies. Dans cet exemple, toutes les routes statiques de la table de routage correspondent au sous-programme avec une action d’accept. Cela renvoie un résultat réel à la stratégie d’origine, ou appelante, qui informe l’appareil qu’une correspondance positive s’est produite. Les actions de la stratégie d’appel sont exécutées et le routage est accepté. Toutes les autres routes de la table de routage ne correspondent pas au sous-programme et renvoient un résultat faux à la stratégie appelante. L’appareil évalue le deuxième terme de main
et rejette les routes.
Les actions du sous-programme n’acceptent pas ou ne rejettent pas une route spécifique. Les actions du sous-programme ne sont traduites qu’en un résultat vrai ou faux. Cependant, les actions qui modifient les attributs d’un itinéraire sont appliquées à l’itinéraire, quel que soit le résultat du sous-programme.
L’appareil R1 de l’AS 64510 possède plusieurs routes client, dont certaines sont des routes statiques configurées localement, et d’autres sont reçues de l’appareil R2 et de l’appareil R3 via un BGP interne (IBGP). L’AS 64510 est connecté à l’appareil R4 de l’AS 64511. La stratégie est appliquée en tant que stratégie main
d’exportation dans la session d’appairage BGP de l’appareil R1 avec l’appareil R4. Par conséquent, l’appareil R1 n’envoie que ses propres routes statiques à l’appareil R4. En raison de cette stratégie main
, l’appareil R1 n’envoie pas les routes reçues de ses homologues internes, l’appareil R2 et l’appareil R3.
Lorsque vous utilisez des sous-programmes de stratégie, il est important de se rappeler que la stratégie d’exportation EBGP par défaut consiste à annoncer toutes les routes BGP apprises à tous les homologues EBGP. Cette stratégie par défaut est en vigueur dans la stratégie principale et également dans le sous-programme. Par conséquent, comme illustré dans cet exemple, si vous ne souhaitez pas que la stratégie d’exportation EBGP par défaut prenne effet, vous devez configurer une then reject
action de terminaison en tant que terme final dans la stratégie principale et dans le sous-programme de stratégie. Cet exemple montre ce qui se passe lorsque le terme final then reject
est absent de la stratégie principale ou du sous-programme de stratégie.
Topologie
Figure 1 montre l’exemple de réseau.
Configuration rapide de l’interface de ligne de commande affiche la configuration de tous les périphériques dans Figure 1.
Cette section #configuration318__policy-subroutine-st décrit les étapes à suivre sur l’appareil R1.
Configuration
Configuration rapide de l’interface de ligne de commande
Pour configurer rapidement cet exemple, copiez les commandes suivantes, collez-les dans un fichier texte, supprimez les sauts de ligne, modifiez tous les détails nécessaires pour qu’ils correspondent à votre configuration réseau, puis copiez et collez les commandes dans l’interface de ligne de commande au niveau de la [edit]
hiérarchie.
Appareil R1
set interfaces fe-1/2/0 unit 0 description to_R2 set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.1/30 set interfaces fe-1/2/2 unit 0 description to_R3 set interfaces fe-1/2/2 unit 0 family inet address 10.0.0.5/30 set interfaces fe-1/2/3 unit 0 description to_R4 set interfaces fe-1/2/3 unit 0 family inet address 10.1.0.5/30 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.1 set protocols bgp group int neighbor 192.168.0.2 set protocols bgp group int neighbor 192.168.0.3 set protocols bgp group to_64511 type external set protocols bgp group to_64511 export main set protocols bgp group to_64511 neighbor 10.1.0.6 peer-as 64511 set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set protocols ospf area 0.0.0.0 interface fe-1/2/2.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement main term subroutine-as-a-match from policy subroutine set policy-options policy-statement main term subroutine-as-a-match then accept set policy-options policy-statement main term nothing-else then reject set policy-options policy-statement subroutine term get-routes from protocol static set policy-options policy-statement subroutine term get-routes then accept set policy-options policy-statement subroutine term nothing-else then reject set routing-options static route 172.16.1.16/28 discard set routing-options static route 172.16.1.32/28 discard set routing-options static route 172.16.1.48/28 discard set routing-options static route 172.16.1.64/28 discard set routing-options router-id 192.168.0.1 set routing-options autonomous-system 64510
Appareil R2
set interfaces fe-1/2/0 unit 0 description to_R1 set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.2/30 set interfaces fe-1/2/1 unit 0 description to_R3 set interfaces fe-1/2/1 unit 0 family inet address 10.1.0.1/30 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.2 set protocols bgp group int neighbor 192.168.0.1 export send-static set protocols bgp group int neighbor 192.168.0.3 set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set protocols ospf area 0.0.0.0 interface fe-1/2/1.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement send-static term 1 from protocol static set policy-options policy-statement send-static term 1 then accept set routing-options static route 172.16.2.16/28 discard set routing-options static route 172.16.2.32/28 discard set routing-options static route 172.16.2.48/28 discard set routing-options static route 172.16.2.64/28 discard set routing-options router-id 192.168.0.2 set routing-options autonomous-system 64510
Appareil R3
set interfaces fe-1/2/1 unit 0 description to_R2 set interfaces fe-1/2/1 unit 0 family inet address 10.1.0.2/30 set interfaces fe-1/2/2 unit 0 description to_R1 set interfaces fe-1/2/2 unit 0 family inet address 10.0.0.6/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set protocols bgp group int type internal set protocols bgp group int local-address 192.168.0.3 set protocols bgp group int neighbor 192.168.0.1 export send-static set protocols bgp group int neighbor 192.168.0.2 set protocols ospf area 0.0.0.0 interface fe-1/2/2.6 set protocols ospf area 0.0.0.0 interface fe-1/2/0.4 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement send-static from protocol static set policy-options policy-statement send-static then accept set routing-options static route 172.16.3.16/28 discard set routing-options static route 172.16.3.32/28 discard set routing-options static route 172.16.3.48/28 discard set routing-options static route 172.16.3.64/28 discard set routing-options router-id 192.168.0.3 set routing-options autonomous-system 64510
Appareil R4
set interfaces fe-1/2/3 unit 0 description to_R1 set interfaces fe-1/2/3 unit 0 family inet address 10.1.0.6/30 set interfaces lo0 unit 0 family inet address 192.168.0.4/32 set protocols bgp group ext type external set protocols bgp group ext peer-as 64510 set protocols bgp group ext neighbor 10.1.0.5 set routing-options autonomous-system 64511
Procédure
Procédure étape par étape
L’exemple suivant nécessite que vous naviguiez à différents niveaux dans la hiérarchie de configuration. Pour plus d’informations sur la navigation dans la CLI, reportez-vous Utiliser l’éditeur CLI en mode configuration au Guide de l’utilisateur de l’interface de ligne de commande Junos OS.
Pour configurer l’appareil R1 :
Configurez les interfaces de l’appareil.
[edit interfaces] user@R1# set fe-1/2/0 unit 0 description to_R2 user@R1# set fe-1/2/0 unit 0 family inet address 10.0.0.1/30 user@R1# set fe-1/2/2 unit 0 description to_R3 user@R1# set fe-1/2/2 unit 0 family inet address 10.0.0.5/30 user@R1# set fe-1/2/3 unit 0 description to_R4 user@R1# set fe-1/2/3 unit 0 family inet address 10.1.0.5/30 user@R1# set lo0 unit 0 family inet address 192.168.0.1/32
Configurez les connexions internes BGP (IBGP) aux périphériques R2 et R3.
[edit protocols bgp group int] user@R1# set type internal user@R1# set local-address 192.168.0.1 user@R1# set neighbor 192.168.0.2 user@R1# set neighbor 192.168.0.3
Configurez la connexion EBGP à l’appareil R4.
[edit protocols bgp group to_64511] user@R1# set type external user@R1# set export main user@R1# set neighbor 10.1.0.6 peer-as 64511
Configurez les connexions OSPF aux périphériques R2 et R3.
[edit protocols ospf area 0.0.0.0] user@R1# set interface fe-1/2/0.0 user@R1# set interface fe-1/2/2.0 user@R1# set interface lo0.0 passive
Configurez la stratégie
main
.[edit policy-options policy-statement main term subroutine-as-a-match] user@R1# set from policy subroutine user@R1# set then accept [edit policy-options policy-statement main term nothing-else] user@R1# set then reject
Configurez la stratégie
subroutine
.[edit policy-options policy-statement subroutine term get-routes] user@R1# set from protocol static user@R1# set then accept [edit policy-options policy-statement subroutine term nothing-else] user@R1# set then reject
Configurez l’itinéraire statique vers le réseau 172.16.5.0/24.
[edit routing-options static] user@R1# set route 172.16.1.16/28 discard user@R1# set route 172.16.1.32/28 discard user@R1# set route 172.16.1.48/28 discard user@R1# set route 172.16.1.64/28 discard
Configurez le numéro du système autonome (AS) et l’ID du routeur.
[edit routing-options] user@R1# set router-id 192.168.0.1 user@R1# set autonomous-system 64510
Résultats
À partir du mode de configuration, confirmez votre configuration en saisissant les commandes show interfaces
, show protocols
, show policy-options
et show routing-options
. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de cet exemple pour corriger la configuration.
user@R1# show interfaces fe-1/2/0 { unit 0 { description to_R2; family inet { address 10.0.0.1/30; } } } fe-1/2/2 { unit 0 { description to_R3; family inet { address 10.0.0.5/30; } } } fe-1/2/3 { unit 0 { description to_R4; family inet { address 10.1.0.5/30; } } } lo0 { unit 0 { family inet { address 192.168.0.1/32; } } }
user@R1# show protocols bgp { group int { type internal; local-address 192.168.0.1; neighbor 192.168.0.2; neighbor 192.168.0.3; } group to_64511 { type external; export main; neighbor 10.1.0.6 { peer-as 64511; } } } ospf { area 0.0.0.0 { interface fe-1/2/0.0; interface fe-1/2/2.0; interface lo0.0 { passive; } } }
user@R1# show policy-options policy-statement main { term subroutine-as-a-match { from policy subroutine; then accept; } term nothing-else { then reject; } } policy-statement subroutine { term get-routes { from protocol static; then accept; } term nothing-else { then reject; } }
user@R1# show routing-options static { route 172.6.1.16/28 discard; route 172.6.1.32/28 discard; route 172.6.1.48/28 discard; route 172.6.1.64/28 discard; } router-id 192.168.0.1; autonomous-system 64510;
Si vous avez terminé de configurer l’appareil, passez commit
en mode de configuration.
Vérification
Vérifiez que la configuration fonctionne correctement.
- Vérification des routes sur l’appareil R1
- Vérification de l’annonce de routage vers l’appareil R4
- Expérimentation de la stratégie d’exportation BGP par défaut
Vérification des routes sur l’appareil R1
But
Sur l’appareil R1, vérifiez les routes statiques dans la table de routage.
Action
user@R1> show route protocol static inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 172.16.1.16/28 *[Static/5] 1d 02:02:13 Discard 172.16.1.32/28 *[Static/5] 1d 02:02:13 Discard 172.16.1.48/28 *[Static/5] 1d 02:02:13 Discard 172.16.1.64/28 *[Static/5] 1d 02:02:13 Discard
Sens
L’appareil R1 dispose de quatre routes statiques.
Vérification de l’annonce de routage vers l’appareil R4
But
Sur l’équipement R1, assurez-vous que les routes statiques sont annoncées sur l’équipement R4.
Action
user@R1> show route advertising-protocol bgp 10.1.0.6 inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 172.16.1.16/28 Self I * 172.16.1.32/28 Self I * 172.16.1.48/28 Self I * 172.16.1.64/28 Self I
Sens
Comme prévu, l’appareil R1 annonce uniquement ses routes statiques vers l’appareil R4.
Expérimentation de la stratégie d’exportation BGP par défaut
But
Voyez ce qui peut se produire lorsque vous supprimez la dernière then reject
condition de la stratégie ou de la stratégie main
subroutine
.
Action
Sur l’appareil R1, désactivez la dernière durée de la stratégie
main
.[edit policy-options policy-statement main] user@R1# deactivate term nothing-else user@R1# commit
Sur l’appareil R1, vérifiez quels itinéraires sont annoncés sur l’appareil R4.
user@R1> show route advertising-protocol bgp 10.1.0.6 inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 172.16.1.16/28 Self I * 172.16.1.32/28 Self I * 172.16.1.48/28 Self I * 172.16.1.64/28 Self I * 172.16.2.16/28 Self I * 172.16.2.32/28 Self I * 172.16.2.48/28 Self I * 172.16.2.64/28 Self I * 172.16.3.16/28 Self I * 172.16.3.32/28 Self I * 172.16.3.48/28 Self I * 172.16.3.64/28 Self I
Désormais, toutes les routes BGP de l’appareil R1 sont envoyées à l’appareil R4. En effet, une fois le traitement renvoyé à la stratégie, la stratégie
main
d’exportation BGP par défaut prend effet.Sur l’appareil R1, réactivez la dernière durée de la police
main
, puis désactivez la dernière durée de la stratégiesubroutine
.[edit policy-options policy-statement main] user@R1# activate term nothing-else [edit policy-options policy-statement subroutine] user@R1# deactivate term nothing-else user@R1# commit
Sur l’appareil R1, vérifiez quels itinéraires sont annoncés sur l’appareil R4.
user@R1> show route advertising-protocol bgp 10.1.0.6 inet.0: 23 destinations, 23 routes (23 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 172.16.1.16/28 Self I * 172.16.1.32/28 Self I * 172.16.1.48/28 Self I * 172.16.1.64/28 Self I * 172.16.2.16/28 Self I * 172.16.2.32/28 Self I * 172.16.2.48/28 Self I * 172.16.2.64/28 Self I * 172.16.3.16/28 Self I * 172.16.3.32/28 Self I * 172.16.3.48/28 Self I * 172.16.3.64/28 Self I
Désormais, toutes les routes BGP de l’appareil R1 sont envoyées à l’appareil R4. En effet, avant que le traitement ne soit renvoyé à la stratégie , la stratégie d’exportation BGP par défaut prend effet dans la stratégie
main
subroutine
.
Sens
Pour empêcher l’effet de la stratégie d’exportation BGP par défaut, vous devez inclure un terme final then reject
dans la stratégie principale et dans tous les sous-programmes référencés.