Layer-3-Overlay-Unterstützung in cRPD
Grundlegendes zur Unterstützung von Layer 3-Overlay-VRF in cRPD
Ab Junos OS Version 19.4R1 werden virtuelle Routing- und Weiterleitungsinstanzen (VRF) in cRPD zusammen mit der Unterstützung von MPLS und Multiprotocol BGP unterstützt, um Overlay-Funktionen bereitzustellen.
Eine Routing-Instanz ist eine Sammlung von Routing-Tabellen, Schnittstellen und Routing-Protokollparametern. Um Layer-3-VPNs zu implementieren, konfigurieren Sie für jedes VPN eine Routing-Instanz. Eine VRF ist ein Netzwerkgerät im Linux-Kernel, und das Gerät ist mit table-id
verknüpft. Sie konfigurieren die Routing-Instanzen nur auf PE-Routern. Sie können VRFs im Linux-Netzwerk erstellen. Die Implementierung von VRF-Geräten wirkt sich nur auf Layer 3 und höher aus. Jede VPN-Routinginstanz besteht aus den folgenden Komponenten:
VRF-Tabelle: Auf jedem PE-Router konfigurieren Sie eine VRF-Tabelle für jedes VPN.
Richtlinienregeln: Diese steuern den Import von Routen in und den Export von Routen aus der VRF-Tabelle.
Ein oder mehrere Routing-Protokolle, die Routen von CE-Routern in die VRF-Tabelle installieren: Sie können die Routing-Protokolle BGP, OSPF und RIP sowie statische Routen verwenden.
Wenn ein VRF-Gerät erstellt wird, wird es einer Routing-Tabelle zugeordnet. Pakete, die über versklavte Geräte in die VRF eingehen, werden in der Routing-Tabelle nachgeschlagen, die dem VRF-Gerät zugeordnet ist. In ähnlicher Weise werden Ausgangsroutingregeln verwendet, um Pakete an den VRF-Treiber zu senden, bevor sie über die eigentliche Schnittstelle gesendet werden.
VRF wird verwendet, um Routen zu verwalten und Datenverkehr basierend auf unabhängigen Weiterleitungstabellen in VRF weiterzuleiten. RPD erstellt mehrere Routing-Tabellen für jede Routing-Instanz des Typs vrf
. Die Tabellen sind eine für jede Adressfamilie. Sie müssen für jedes VPN auf jedem PE-Router, der am VPN beteiligt ist, eine Routing-Instanz konfigurieren. Sie können Routing-Instanzen mithilfe der Hierarchie [edit routing-instances]
konfigurieren. Die Routing-Instanz des Typs vrf
wird nur auf cRPD unterstützt.
Mithilfe der [edit routing-instances routing-instance-name protocols]
Hierarchie können Sie mehrere Instanzen von BFD, BGP, IS-IS, OSPF Version 2 (als OSPF bezeichnet), OSPF Version 3 (OSPFv3) und ICMP-Routererkennung unter einer VRF erstellen. Sie können das protokollunabhängige Routing über die Hierarchie edit routing-instances instance-name routing-options
konfigurieren.
Layer-3-Overlay unterstützt die folgenden Tunneling-Protokolle in cRPD:
Statische Routen in inet.3
BGP mit Unicast-Bezeichnung
GRE-Tunneling
Statische MPLS-Sprachdienstleister
Routen, die mit programmable-rpd-APIs programmiert wurden
Direct-EBGP-Peering auf MPLS-fähiger Schnittstelle
Verschieben der Schnittstellen unter einer VRF
Die Versklavung von Geräten erfolgt durch RPD, d.h. Schnittstellen, die unter der Routing-Instanz konfiguriert sind, werden von RPD über eine an den Kernel gesendete Netlink-Nachricht auf das vrf-Gerät migriert (versklavt).
Wenn eine Schnittstelle unter der Routing-Instanz vom Typ vrf
konfiguriert ist, sendet RPD eine Netlink-Benachrichtigung, um den Link zu versklaven, wenn ein solcher Link vom Kernel gelernt wurde und der Link nicht der richtigen Tabelle zugeordnet ist. Wenn der Link nicht existiert oder RPD nichts über den Link erfahren hat, wird der Link basierend auf der Konfiguration korrekt versklavt, wenn der Link erstellt wird oder RPD davon erfährt.
Beispiel: Konfigurieren von Layer 3 VPN (VRF) auf einer cRPD-Instanz
Dieses Beispiel zeigt die VPNv4-Routenauflösung auf PE-Routern und Routenreflektoren, indem die PE-Router mit spezifischen Richtlinien konfiguriert werden, um den Import von Routen in und den Export von Routen aus der VRF-Tabelle zu steuern, und mit den nächsten Hops, die mithilfe von BGP mit der Bezeichnung Unicast gelernt werden. In diesem Beispiel fließt der Datenverkehr von CE1 zu CE2.
Anforderungen
In diesem Beispiel werden die folgenden Hardware- und Softwarekomponenten verwendet:
-
Ubuntu-Softwareversion 18.04
-
Linux-Kernel Version 4.5 oder höher
-
cRPD-Software-Version 19.4R1 oder höher
Bevor Sie ein Layer-3-VPN (VRF) konfigurieren, müssen Sie die grundlegenden Komponenten installieren:
-
MPLS-Module auf dem Hostbetriebssystem, auf dem die cRPD-Instanz erstellt wird. Weitere Informationen finden Sie unter Konfigurieren von Einstellungen auf dem Hostbetriebssystem.
-
Provider-Edge-Router (PE1), ein Provider-Router (P) und Provider-Edge-Router (PE2). Informationen zur Installation finden Sie unter Installieren von cRPD auf Docker.
Übersicht
Um die VPNv4-Routenauflösung zu konfigurieren, müssen Sie für jedes VPN auf jedem der PE-Router, die am VPN teilnehmen, eine Routinginstanz vom Typ VRF konfigurieren und ihr statische Routen hinzufügen. Die static
Anweisung konfiguriert die statischen Routen, die in der vrfblue.inet.0
Routingtabelle installiert sind. Es gibt keine Loopback-Schnittstelle oder ein Gerät für jedes VRF-Gerät, das im Linux-Kernel erstellt wurde. Die Loopback-Hostadressen werden jedoch direkt zum VRF-Gerät hinzugefügt, das von RPD gelernt werden kann.
Topologie
Abbildung 1 zeigt die Layer-3-VPN-Topologie (VRF)

Konfiguration
- Konfigurieren des PE1-Routers mit BGP-LU
- Konfigurieren des P-Routers mit BGP-LU
- Konfigurieren des PE2-Routers mit BGP-LU
Konfigurieren des PE1-Routers mit BGP-LU
Schritt-für-Schritt-Anleitung
Im folgenden Beispiel müssen Sie durch verschiedene Ebenen in der Konfigurationshierarchie navigieren.
-
Erstellen Sie die Tabelle mpls.0.
user@crpd1# set routing-options rib mpls.0
-
Konfigurieren Sie eine Richtlinie, die Routen akzeptiert.
[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
-
Konfigurieren Sie eine VRF-Routing-Instanz auf PE1 und andere Routing-Instanzparameter.
[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
-
Konfigurieren Sie die Router-ID.
user@crpd1# set routing-options router-id 10.2.2.2
-
Konfigurieren Sie die BGP-Sitzung.
[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
-
Konfigurieren Sie die Schnittstelle auf MPLS.
user@crpd1# set protocols mpls interface all
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die show protocols bgp
Befehle und show routing-instances
eingeben. Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Konfigurationsanweisungen in diesem Beispiel, um sie zu korrigieren.
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; } } }
Wenn Sie mit der Konfiguration des Geräts fertig sind, geben Sie Commit aus dem Konfigurationsmodus ein.
Konfigurieren des P-Routers mit BGP-LU
Schritt-für-Schritt-Anleitung
Im folgenden Beispiel müssen Sie durch verschiedene Ebenen in der Konfigurationshierarchie navigieren.
-
Erstellen Sie die Tabelle mpls.0.
user@crpd2# set routing-options rib mpls.0
-
Konfigurieren Sie eine Richtlinie, die Routen akzeptiert.
[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
-
Konfigurieren Sie die BGP-Sitzung.
[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
-
Konfigurieren Sie die Router-ID.
user@crpd2# set routing-options router-id 10.3.3.3
-
Konfigurieren Sie die Schnittstelle auf MPLS.
user@crpd2# set protocols mpls interface all
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die show protocols bgp
Befehle und show policy-options
eingeben. Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
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; } } }
Konfigurieren des PE2-Routers mit BGP-LU
Schritt-für-Schritt-Anleitung
Im folgenden Beispiel müssen Sie durch verschiedene Ebenen in der Konfigurationshierarchie navigieren.
-
Erstellen Sie die Tabelle mpls.0.
user@crpd3# set routing-options rib mpls.0
-
Konfigurieren Sie eine Richtlinie, die Routen akzeptiert.
[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
-
Konfigurieren Sie eine VRF-Routing-Instanz auf PE2 und andere Routing-Instanzparameter.
[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
-
Konfigurieren Sie die BGP-Sitzung.
[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
-
Konfigurieren Sie die Router-ID.
user@crpd3# set routing-options router-id 10.4.4.4
-
Konfigurieren Sie die Schnittstelle auf MPLS.
user@crpd3# set protocols mpls interface all
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die show protocols bgp
Befehle und show routing-instances
eingeben. Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
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; }
Überprüfung
- Überprüfen der VPNv4-Auflösung auf PE1
- Überprüfen der BGP-LU auf P
- Überprüfen der VPNv4-Auflösung auf PE2
Überprüfen der VPNv4-Auflösung auf PE1
Zweck
So verifizieren Sie VPNv4-Routen auf PE1:
Aktion
Geben Sie im Betriebsmodus den show route table vrfblue.inet.0 10.5.5.5
folgenden Befehl ein:
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)
Geben Sie im Betriebsmodus den show route table mpls.0
folgenden Befehl ein:
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
Geben Sie im Bash-Modus den ip route list table 5 5.5.5.5
folgenden Befehl ein:
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
Geben Sie im Bash-Modus den ip -f mpls route
folgenden Befehl ein:
user@crpd1> ip -f mpls route
299808 via inet 10.10.10.1 dev pe1-ce1 proto 22
Bedeutung
Sie können sehen, dass PE1 eine Route unter vrfblue.inet.0
CE2 hat, die von PE2 mit nexthop 10.4.4.4 gelernt wird, die mithilfe von BGP LU vom P-Router aufgelöst wird.
Überprüfen der BGP-LU auf P
Zweck
So verifizieren Sie VPNv4-Routen auf P:
Aktion
Geben Sie im Bash-Modus den ip -f mpls route show
folgenden Befehl ein:
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
Geben Sie im Betriebsmodus den show route table mpls.0
folgenden Befehl ein:
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
Bedeutung
Sie können die MPLS- und VPN-Routen von P zu PE1 und von P zu PE2 anzeigen.
Überprüfen der VPNv4-Auflösung auf PE2
Zweck
So verifizieren Sie VPNv4-Routen auf PE2:
Aktion
Geben Sie im Betriebsmodus den show route table vrfblue.inet.0 10.1.1.1
folgenden Befehl ein:
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)
Geben Sie im Betriebsmodus den show route table mpls.0
folgenden Befehl ein:
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
Geben Sie im Bash-Modus den ip route list table 5 10.1.1.1
folgenden Befehl ein:
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
Geben Sie im Bash-Modus den ip -f mpls route
folgenden Befehl ein:
user@crpd3> ip -f mpls route
299808 via inet 10.40.40.5 dev pe2-ce2 proto 22
Bedeutung
Auf dem PE2-Router zeigt PE1 die Routen für die VRF-Tabelle vrfblue.inet.0
mit BGP LU etwa 10.1.1.1 als VPNv4-Präfix mit nexthop als 10.2.2.2 an.