Prise en charge de la superposition de couche 3 dans cRPD
Aperçu
Les instances VRF (Virtual Routing and Forwarding) sont prises en charge dans cRPD, ainsi que MPLS et BGP multiprotocole pour fournir une fonctionnalité de superposition.
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 devez configurer une instance de routage pour chaque VPN. Un VRF est un périphérique réseau dans le noyau Linux et l’appareil 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 d’un dispositif VRF n’a d’impact que sur les couches 3 et supé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 d’itinéraires à partir de la table VRF.
Un ou plusieurs protocoles de routage qui installent les routes des routeurs CE dans la table VRF : vous pouvez utiliser les protocoles de routage BGP, OSPF et RIP, ainsi que les routes statiques.
Lorsqu’un dispositif VRF est créé, il est associé à une table de routage. Les paquets qui arrivent par le biais d’appareils asservis vers le VRF sont recherchés dans la table de routage associée au périphérique VRF. De même, les règles de routage de sortie 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 pour 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 de type vrf. Les tables sont une pour chaque adresse familiale. Vous devez configurer une instance de routage pour chaque VPN sur chacun des routeurs PE participant au VPN. Vous pouvez configurer les 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ée OSPF), OSPF version 3 (OSPFv3) et de découverte de routeur ICMP sous un 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.
La superposition de couche 3 prend en charge les protocoles de tunnelisation suivants dans cRPD :
Routes statiques dans inet.3
Unicast étiqueté BGP
Tunnelisation GRE
LSP statiques MPLS
Routes programmées à l’aide d’API programmables-rpd
appairage EBGP direct sur interface compatible MPLS
Configurer des interfaces dans le cadre d’un VRF
L’asservissement des périphériques est effectué par RPD, c’est-à-dire que les interfaces configurées sous l’instance de routage sont migrées (asservies) vers le vrf-device par RPD à l’aide d’un message netlink envoyé au noyau.
Lorsqu’une interface est configurée sous l’instance de routage de type vrf, si un tel lien a été appris du noyau et que le lien n’est pas associé à la table correcte, RPD envoie une notification netlink pour asservir le lien. Si le lien n’existe pas ou si RPD n’a pas pris connaissance de l’existence du lien, chaque fois que le lien est créé ou que RPD l’apprend, le lien sera correctement asservi en fonction de la configuration.
Exemple : Configurer un VPN de couche 3 (VRF) sur une instance cRPD
Cet exemple montre 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 BGP étiqueté unicast. Dans cet exemple, le trafic circule de CE1 vers CE2.
Exigences
Cet exemple utilise les composants matériels et logiciels suivants :
-
Logiciel Ubuntu version 18.04
-
Noyau Linux version 4.5 ou ultérieure
-
Logiciel cRPD version 19.4R1 ou ultérieure
Avant de configurer un VPN de couche 3 (VRF), vous devez installer les composants de base :
-
MPLS sur le système d’exploitation hôte sur lequel l’instance cRPD est créée. Pour plus d’informations, reportez-vous à la section Configurer les paramètres sur le système d’exploitation hôte.
-
un routeur de périphérie fournisseur (PE1), un routeur fournisseur (P) et un routeur Provider Edge (PE2). Pour l’installation, consultez Installer 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 vrfblue.inet.0 table de routage. Il n’y a pas d’interface ou de périphérique de bouclage pour chaque périphérique VRF créé dans le noyau Linux. Mais les adresses d’hôte de bouclage sont directement ajoutées au périphérique VRF, qui peut être appris par RPD.
Topologie
La figure 1 illustre la topologie du VPN de couche 3 (VRF)
Configuration
- Configuration d’un routeur PE1 avec BGP LU
- Configuration du routeur P avec BGP LU
- Configuration d’un routeur PE2 avec BGP LU
Configuration d’un routeur PE1 avec BGP LU
Procédure étape par étape
L’exemple suivant vous oblige à naviguer à différents niveaux dans la hiérarchie de configuration.
-
Créer une table mpls.0.
user@crpd1# set routing-options rib mpls.0 -
Configurez une stratégie qui accepte les itinéraires.
[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
En mode configuration, confirmez votre configuration en entrant les show protocols bgp commandes and 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 terminé de configurer l’appareil, entrez commit à partir du mode de configuration.
Configuration du routeur P avec BGP LU
Procédure étape par étape
L’exemple suivant vous oblige à naviguer à différents niveaux dans la hiérarchie de configuration.
-
Créer une table mpls.0.
user@crpd2# set routing-options rib mpls.0 -
Configurez une stratégie qui accepte les itinéraires.
[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
En mode configuration, confirmez votre configuration en entrant les show protocols bgp commandes and 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 d’un routeur PE2 avec BGP LU
Procédure étape par étape
L’exemple suivant vous oblige à naviguer à différents niveaux dans la hiérarchie de configuration.
-
Créer une table mpls.0.
user@crpd3# set routing-options rib mpls.0 -
Configurez une stratégie qui accepte les itinéraires.
[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
En mode configuration, confirmez votre configuration en entrant les show protocols bgp commandes and 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
À partir du mode opérationnel, entrez 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)
À partir du mode opérationnel, entrez 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
À partir du mode bash, entrez 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
À partir du mode bash, entrez la ip -f mpls route commande :
user@crpd1> ip -f mpls route
299808 via inet 10.10.10.1 dev pe1-ce1 proto 22
Signification
Vous pouvez voir que PE1 a une route sous vrfblue.inet.0 CE2 qui est apprise de PE2 avec nexthop 10.4.4.4, qui est résolue à l’aide de BGP LU à partir du routeur P.
Vérification de BGP LU sur P
But
Pour vérifier les routes VPNv4 sur P :
Action
À partir du mode bash, entrez 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
À partir du mode opérationnel, entrez 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
Signification
Vous pouvez afficher les routes MPLS et VPN de P vers PE1 et de P vers PE2.
Vérification de la résolution VPNv4 sur PE2
But
Pour vérifier les routes VPNv4 sur PE2 :
Action
À partir du mode opérationnel, entrez 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)
À partir du mode opérationnel, entrez 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
À partir du mode bash, entrez 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
À partir du mode bash, entrez la ip -f mpls route commande :
user@crpd3> ip -f mpls route
299808 via inet 10.40.40.5 dev pe2-ce2 proto 22
Signification
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 avec nexthop comme 10.2.2.2.