Prise en charge de l’overlay de couche 3 dans cRPD
Comprendre la prise en charge de la couche 3 overlay VRF dans cRPD
À partir de la version 19.4R1 de Junos OS, les instances de routage et de transfert virtuels (VRF) sont prises en charge dans cRPD ainsi que la prise en charge de MPLS et multiprotocole BGP pour fournir une fonctionnalité d’overlay.
Une instance de routage est un ensemble de tables de routage, d’interfaces et de paramètres de protocole de routage. Pour implémenter des VPN de couche 3, vous configurez une instance de routage pour chaque VPN. Un VRF est un équipement réseau dans le noyau Linux et l’équipement est associé table-id
à . Vous configurez les instances de routage sur les routeurs PE uniquement. Vous pouvez créer des VRF dans le réseau Linux. L’implémentation des équipements VRF n’impacte que les couches 3 et ultérieures. Chaque instance de routage VPN se compose des composants suivants :
Table VRF : sur chaque routeur PE, vous configurez une table VRF pour chaque VPN.
Règles de stratégie : elles contrôlent l’importation et l’exportation de routes à partir de la table VRF.
Un ou plusieurs protocoles de routage qui installent des routes à partir de routeurs CE dans la table VRF : vous pouvez utiliser les protocoles de routage BGP, OSPF et RIP, et vous pouvez utiliser des routes statiques.
Lorsqu’un équipement VRF est créé, il est associé à une table de routage. Les paquets entrant par le biais d’équipements asservis vers le VRF sont recherchés dans la table de routage associée à l’équipement VRF. De même, des règles de routage sortantes sont utilisées pour envoyer des paquets au pilote VRF avant de les envoyer sur l’interface réelle.
VRF est utilisé pour gérer les routes et transférer le trafic en fonction de tables de transfert indépendantes dans VRF. RPD crée plusieurs tables de routage pour chaque instance de routage du type vrf
. Les tables sont une pour chaque famille d’adresses. Vous devez configurer une instance de routage pour chaque VPN sur chacun des routeurs PE participant au VPN. Vous pouvez configurer des instances de routage à l’aide de la [edit routing-instances]
hiérarchie. L’instance de routage de type vrf
n’est prise en charge que sur cRPD.
Vous pouvez créer plusieurs instances de BFD, BGP, IS-IS, OSPF version 2 (appelé OSPF), OSPF version 3 (OSPFv3) et détection de routeur ICMP sous une VRF à l’aide de la [edit routing-instances routing-instance-name protocols]
hiérarchie. Vous pouvez configurer le routage indépendant du protocole à l’aide de la edit routing-instances instance-name routing-options
hiérarchie.
L’overlay de couche 3 prend en charge les protocoles de tunnelisation suivants dans cRPD :
Routes statiques dans inet.3
Unicast labellisé BGP
Tunnelisation GRE
LSP statiques MPLS
Routes programmées à l’aide d’API programmables
appairage direct-ebgp sur interface compatible MPLS
Déplacer les interfaces sous une VRF
L’asservissement des équipements est effectué par RPD, c’est-à-dire que les interfaces configurées sous l’instance de routage sont migrées (réduites en esclavage) vers l’équipement vrf par RPD à l’aide d’un message netlink envoyé au noyau.
Lorsqu’une interface est configurée sous l’instance de routage du type vrf
, si une telle liaison a été apprise du noyau et que la liaison n’est pas associée à la table correcte, RPD envoie une notification de liaison netlink pour asservir la liaison. Si le lien n’existe pas ou si RPD n’a pas appris la liaison, chaque fois que la liaison est créée ou que RPD en apprend, alors la liaison sera réduite en esclavage correctement en fonction de la configuration.
Exemple : configuration d’un VPN de couche 3 (VRF) sur une instance cRPD
Cet exemple illustre la résolution de route VPNv4 sur les routeurs PE et les réflecteurs de route en configurant les routeurs PE avec des stratégies spécifiques pour contrôler l’importation et l’exportation de routes à partir de la table VRF, et avec les sauts suivants appris à l’aide de l’unicast étiqueté BGP. Dans cet exemple, le trafic passe de CE1 à CE2.
Exigences
Cet exemple utilise les composants matériels et logiciels suivants :
-
Version logicielle Ubuntu 18.04
-
Noyau Linux version 4.5 ou ultérieure
-
Version logicielle cRPD 19.4R1 ou ultérieure
Avant de configurer un VPN de couche 3 (VRF), vous devez installer les composants de base :
-
Modules MPLS sur le système d’exploitation hôte sur lequel l’instance cRPD est créée. Pour plus de détails, voir Configuration des paramètres sur le système d’exploitation hôte.
-
Routeur de périphérie fournisseur (PE1), routeur fournisseur (P) et routeur de périphérie fournisseur (PE2). Pour l’installation, voir Installation de cRPD sur Docker.
Aperçu
Pour configurer la résolution de route VPNv4, vous devez configurer une instance de routage de type VRF pour chaque VPN sur chacun des routeurs PE participant au VPN et y ajouter des routes statiques. L’instruction static
configure les routes statiques installées dans la table de vrfblue.inet.0
routage. Il n’y a pas d’interface ou d’équipement de bouclage pour chaque équipement VRF créé dans le noyau Linux. Mais les adresses hôtes de bouclage sont directement ajoutées à l’équipement VRF, ce qui peut être appris par RPD.
Topologie
La figure 1 illustre la topologie VPN de couche 3 (VRF)

Configuration
- Configuration du routeur PE1 avec BGP LU
- Configuration du routeur P avec BGP LU
- Configuration du routeur PE2 avec BGP LU
Configuration du routeur PE1 avec BGP LU
Procédure étape par étape
Dans l’exemple suivant, vous devez parcourir différents niveaux de la hiérarchie de configuration.
-
Créez la table mpls.0.
user@crpd1# set routing-options rib mpls.0
-
Configurez une stratégie qui accepte les routes.
[edit policy-options policy-statement] user@crpd1# set EXPORT_LO term 10 from route-filter 10.2.2.2/32 exact user@crpd1# set EXPORT_LO term 10 then accept user@crpd1# set NH_SELF term 10 then next-hop self
-
Configurez une instance de routage VRF sur PE1 et d’autres paramètres d’instance de routage.
[edit routing-instances vrfblue] user@crpd1# set routing-options static route 10.1.1.1/32 next-hop 10.10.10.1 user@crpd1# set instance-type vrf user@crpd1# set route-distinguisher 100:100 user@crpd1# set vrf-target target:100:100
-
Configurez l’ID du routeur.
user@crpd1# set routing-options router-id 10.2.2.2
-
Configurez la session BGP.
[edit protocols bgp group] user@crpd1# set underlay type external family inet unicast user@crpd1# set underlay type external export EXPORT_LO neighbor 10.20.20.3 family inet labeled-unicast resolve-vpn user@crpd1# set underlay type external export EXPORT_LO neighbor 10.20.20.3 peer-as 65002 local-as 65001 user@crpd1# set VPN type internal local-address 10.2.2.2 family inet-vpn unicast user@crpd1# set VPN local-as 65005 user@crpd1# set VPN neighbor 10.4.4.4 family inet-vpn unicast
-
Configurez l’interface sur MPLS.
user@crpd1# set protocols mpls interface all
Résultats
À partir du mode de configuration, confirmez votre configuration en entrant les show protocols bgp
commandes et show routing-instances
. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de configuration de cet exemple pour la corriger.
user@crpd1# show routing-instances vrfblue { routing-options { static { route 10.1.1.1/32 next-hop 10.10.10.1; } } instance-type vrf; route-distinguisher 100:100; vrf-target target:100:100; } user@crpd1# show protocols bgp group underlay { type external; family inet { unicast; } export EXPORT_LO; neighbor 10.20.20.3 { family inet { labeled-unicast { resolve-vpn; } } peer-as 65002; local-as 65001; } neighbor 10.20.20.2 { family inet { labeled-unicast { resolve-vpn; } } peer-as 65001; local-as 65002; } neighbor 10.30.30.4 { family inet { labeled-unicast { resolve-vpn; } } peer-as 65003; local-as 65004; } } group VPN { type internal; local-address 10.2.2.2; family inet-vpn { unicast; } local-as 65005; neighbor 10.4.4.4 { family inet-vpn { unicast; } } }
Si vous avez fini de configurer l’équipement, saisissez commit à partir du mode de configuration.
Configuration du routeur P avec BGP LU
Procédure étape par étape
Dans l’exemple suivant, vous devez parcourir différents niveaux de la hiérarchie de configuration.
-
Créez la table mpls.0.
user@crpd2# set routing-options rib mpls.0
-
Configurez une stratégie qui accepte les routes.
[edit policy-options policy-statement] user@crpd2# set EXPORT_LO term 10 from route-filter 10.3.3.3/32 exact user@crpd2# set EXPORT_LO term 10 then accept user@crpd2# set NH_SELF term 10 then next-hop self
-
Configurez la session BGP.
[edit protocols bgp group] user@crpd2# set underlay type external export EXPORT_LO neighbor 10.20.20.2 family inet labeled-unicast resolve-vpn user@crpd2# set underlay type external export EXPORT_LO neighbor 10.20.20.2 peer-as 65001 user@crpd2# set underlay type external export EXPORT_LO neighbor 10.20.20.2 local-as 65002 user@crpd2# set underlay type external export EXPORT_LO neighbor 10.30.30.4 family inet labeled-unicast resolve-vpn user@crpd2# set underlay type external export EXPORT_LO neighbor 10.30.30.4 peer-as 65003 user@crpd2# set underlay type external export EXPORT_LO neighbor 10.30.30.4 local-as 65004
-
Configurez l’ID du routeur.
user@crpd2# set routing-options router-id 10.3.3.3
-
Configurez l’interface sur MPLS.
user@crpd2# set protocols mpls interface all
Résultats
À partir du mode de configuration, confirmez votre configuration en entrant les show protocols bgp
commandes et show policy-options
. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de cet exemple pour corriger la configuration.
user@crpd2# show protocols bgp group underlay { type external; export EXPORT_LO; neighbor 10.20.20.2 { family inet { labeled-unicast { resolve-vpn; } } peer-as 65001; local-as 65002; } neighbor 10.30.30.4 { family inet { labeled-unicast { resolve-vpn; } } peer-as 65003; local-as 65004; } }
user@crpd2# show policy-options policy-statement EXPORT_LO { term 10 { from { route-filter 10.3.3.3/32 exact; } then accept; } } policy-statement NH_SELF { term 10 { then { next-hop self; } } }
Configuration du routeur PE2 avec BGP LU
Procédure étape par étape
Dans l’exemple suivant, vous devez parcourir différents niveaux de la hiérarchie de configuration.
-
Créez la table mpls.0.
user@crpd3# set routing-options rib mpls.0
-
Configurez une stratégie qui accepte les routes.
[edit policy-options policy-statement] user@crpd3# set EXPORT_LO term 10 from route-filter 10.4.4.4/32 exact user@crpd3# set EXPORT_LO term 10 then accept user@crpd3# set NH_SELF term 10 then next-hop self
-
Configurez une instance de routage VRF sur PE2 et d’autres paramètres d’instance de routage.
[edit routing-instances vrfblue] user@crpd3# set routing-options static route 10.5.5.5/32 next-hop 10.40.40.5 user@crpd3# set instance-type vrf user@crpd3# set route-distinguisher 100:100 user@crpd3# set vrf-target target:100:100 user@crpd3# set interface all
-
Configurez la session BGP.
[edit protocols bgp group] user@crpd3# set underlay type external export EXPORT_LO neighbor 10.30.30.3 family inet labeled-unicast resolve-vpn user@crpd3# set underlay type external export EXPORT_LO neighbor 10.30.30.3 peer-as 65004 user@crpd3# set underlay type external export EXPORT_LO neighbor 10.30.30.3 local-as 65003 user@crpd3# set VPN type internal local-address 10.4.4.4 family inet-vpn unicast user@crpd3# set VPN local-as 65005 user@crpd3# set VPN neighbor 10.2.2.2 family inet-vpn unicast
-
Configurez l’ID du routeur.
user@crpd3# set routing-options router-id 10.4.4.4
-
Configurez l’interface sur MPLS.
user@crpd3# set protocols mpls interface all
Résultats
À partir du mode de configuration, confirmez votre configuration en entrant les show protocols bgp
commandes et show routing-instances
. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de cet exemple pour corriger la configuration.
user@crpd3# show protocols bgp group underlay { export EXPORT_LO; neighbor 10.30.30.3 { family inet { labeled-unicast { resolve-vpn; } } peer-as 65004; local-as 65003; } } group VPN { type internal; local-address 10.4.4.4; family inet-vpn { unicast; } local-as 65005; neighbor 10.2.2.2 { family inet-vpn { unicast; } } }
user@crpd3# show routing-instances vrfblue { routing-options { static { route 10.5.5.5/32 next-hop 10.40.40.5; } } interface all; instance-type vrf; route-distinguisher 100:100; vrf-target target:100:100; }
Vérification
- Vérification de la résolution VPNv4 sur PE1
- Vérification de BGP LU sur P
- Vérification de la résolution VPNv4 sur PE2
Vérification de la résolution VPNv4 sur PE1
But
Pour vérifier les routes VPNv4 sur PE1 :
Action
Depuis le mode opérationnel, saisissez la show route table vrfblue.inet.0 10.5.5.5
commande :
user@crpd1> show route table vrfblue.inet.0 10.5.5.5
vrfblue.inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 10.5.5.5/32 *[BGP/170] 00:00:14, localpref 100, from 10.4.4.4 AS path: I, validation-state: unverified > to 10.20.20.3 via pe1-p, Push 299808, Push 299792(top)
Depuis le mode opérationnel, saisissez la show route table mpls.0
commande :
user@crpd1> show route table mpls.0
mpls.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 299808 *[VPN/170] 00:01:45 > to 10.10.10.1 via pe1-ce1, Pop 299808(S=0) *[VPN/170] 00:01:45 > to 10.10.10.1 via pe1-ce1, Pop 299824 *[VPN/170] 00:01:45 receive table vrfblue.inet.0, Pop
Depuis le mode bash, saisissez la ip route list table 5 5.5.5.5
commande :
user@crpd1> ip route list table 5 10.5.5.5
10.5.5.5 encap mpls 299792/299808 via 10.20.20.3 dev pe1-p proto 22
Depuis le mode bash, saisissez la ip -f mpls route
commande :
user@crpd1> ip -f mpls route
299808 via inet 10.10.10.1 dev pe1-ce1 proto 22
Sens
Vous pouvez voir pe1 a un routage sous vrfblue.inet.0
vers CE2 qui est tiré de PE2 avec nexthop 10.4.4.4, qui est résolu à l’aide de BGP LU du routeur P.
Vérification de BGP LU sur P
But
Pour vérifier les routes VPNv4 sur P :
Action
Depuis le mode bash, saisissez la ip -f mpls route show
commande :
user@crpd2> ip -f mpls route show
299776 via inet 10.20.20.2 dev p-pe1 proto 22 299792 via inet 10.30.30.4 dev p-pe2 proto 22
Depuis le mode opérationnel, saisissez la show route table mpls.0
commande :
user@crpd2> show route table mpls.0
mpls.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0 *[MPLS/0] 01:40:42, metric 1 Receive 1 *[MPLS/0] 01:40:42, metric 1 Receive 2 *[MPLS/0] 01:40:42, metric 1 Receive 13 *[MPLS/0] 01:40:42, metric 1 Receive 299776 *[VPN/170] 01:19:24 > to 10.20.20.2 via p-pe1, Pop 299776(S=0) *[ VPN/170] 01:19:24 > to 10.20.20.2 via p-pe1, Pop 299792 *[VPN/170] 01:19:20 > to 10.30.30.4 via p-pe2, Pop 299792(S=0) *[VPN/170] 01:19:20 > to 10.30.30.4 via p-pe2, Pop
Sens
Vous pouvez consulter les routes MPLS et VPN de P à PE1 et de P à PE2.
Vérification de la résolution VPNv4 sur PE2
But
Pour vérifier les routes VPNv4 sur PE2 :
Action
Depuis le mode opérationnel, saisissez la show route table vrfblue.inet.0 10.1.1.1
commande :
user@crpd3> show route table vrfblue.inet.0 10.1.1.1
vrfblue.inet.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 10.1.1.1/32 *[BGP/170] 00:00:26, localpref 100, from 10.2.2.2 AS path: I, validation-state: unverified > to 10.30.30.3 via pe2-p, Push 299808, Push 299776(top)
Depuis le mode opérationnel, saisissez la show route table mpls.0
commande :
user@crpd3> show route table mpls.0
mpls.0: 7 destinations, 7 routes (7 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0 *[MPLS/0] 01:34:39, metric 1 Receive 1 *[MPLS/0] 01:34:39, metric 1 Receive 2 *[MPLS/0] 01:34:39, metric 1 Receive 13 *[MPLS/0] 01:34:39, metric 1 Receive 299808 *[VPN/170] 00:00:43 > to 10.40.40.5 via pe2-ce2, Pop 299808(S=0) *[VPN/170] 00:00:43 > to 10.40.40.5 via pe2-ce2, Pop 299824 *[VPN/170] 00:00:43 receive table vrfblue.inet.0, Pop
Depuis le mode bash, saisissez la ip route list table 5 10.1.1.1
commande :
user@crpd3> ip route list table 5 10.1.1.1
10.1.1.1 encap mpls 299776/299808 via 10.30.30.3 dev pe2-p proto 22
Depuis le mode bash, saisissez la ip -f mpls route
commande :
user@crpd3> ip -f mpls route
299808 via inet 10.40.40.5 dev pe2-ce2 proto 22
Sens
Sur le routeur PE2, PE1 affiche les routes de la table vrfblue.inet.0
VRF en utilisant BGP LU environ 10.1.1.1 comme préfixe VPNv4 et nexthop comme 10.2.2.2.