Segment-Routing
Der Cloud-native Router von Juniper bietet Unterstützung für Segment-Routing (SR-MPLS und SRv6). Lesen Sie dieses Thema, um sich mit den unterstützten Funktionen vertraut zu machen.
Segment-Routing (SR) ist eine moderne Variante des Quell-Routings, die das Netzwerk simplifiziert, indem Netzwerkstatusinformationen von Zwischenroutern entfernt und stattdessen Pfadstatusinformationen in Paketheader auf der Weiterleitungsebene hinzugefügt werden. Wenn ein Paket an einem SR-Eingangsknoten eintrifft, unterwirft der Eingangsknoten das Paket einer Richtlinie. Die Richtlinie ordnet das Paket einem SR-Pfad zu seinem Ziel zu. Der SR-Pfad ist eine geordnete Reihe von Segmenten, die einen SR-Eingangsknoten mit einem SR-Ausgangsknoten verbinden. Dieser SR-Pfad kann so konzipiert werden, dass er eine beliebige Anzahl von Einschränkungen erfüllt, z. B. Verbindungsbandbreite, minimale Pfadlatenz und mehr.
Segment-Routing kann entweder MPLS oder IPv6 in der Weiterleitungsebene nutzen. Wenn Segment-Routing die MPLS-Weiterleitungsebene verwendet, wird sie als SR-MPLS bezeichnet. SR-MPLS unterstützt sowohl ein IPv4- als auch ein IPv6-Underlay. Wenn Segment-Routing eine IPv6-Weiterleitungsebene nutzt, wird es als SRv6 bezeichnet. Lesen Sie das SR-MPLS Day One-Buch und das SRv6 Day One-Buch für weitere Details.
Segment-Routing kann als Transport-Tunneling-Technologie für die Verbindung von Datencentern für die nächste Generation der Network Function Virtualization (NFV)-basierten Telco-Cloud, 5G, Cloud-WAN und Content Distribution Networks (CDNs) verwendet werden. In den folgenden Anwendungsszenarien kann es mehrere Vorteile bieten:
-
Traffic Engineering – Segment-Routing bietet eine effiziente und dynamische Steuerung des Datenverkehrs auf der Grundlage der Netzwerkbedingungen, um Load Balancing, Überlastungsvermeidung und eine bessere Nutzung der Bandbreite zu ermöglichen. Dies führt zu einer verbesserten Netzwerkleistung und Benutzererfahrung.
-
Network Slicing— Segment-Routing schafft virtualisierte Netzwerk-Slices, indem es die Koexistenz verschiedener Services oder Mandanten auf derselben physischen Infrastruktur ermöglicht. Jeder Netzwerk-Slice kann seine eigenen Weiterleitungsrichtlinien und Ressourcen haben, was eine verbesserte Isolierung und Flexibilität für verschiedene Anwendungen bietet.
-
Servicefunktionsverkettung— Segment-Routing ermöglicht eine flexible und dynamische Dienstfunktionsverkettung, bei der Pakete eine Abfolge von Netzwerkservices wie Firewalls, Lastausgleich und mehr durchlaufen. Er simplifiziert die Servicebereitstellung und ermöglicht eine On-Demand-Dienstverkettung durch die Definition bestimmter Pfade für den Paketfluss.
-
Mobilfunknetze – Segment-Routing optimiert das Routing des Datenverkehrs und die Übergabevorgänge für ein Mobilfunknetz, indem es eine effiziente Pfadauswahl und reduzierte Latenzzeiten ermöglicht.
SR-MPLS
Cloud-nativer Router unterstützt SR-MPLS sowohl für IPv4- als auch für IPv6-Underlay. Der Cloud-native Router kann als Sende-, Empfangs- oder Transit-Router an SR-MPLS-Netzwerken teilnehmen. Es unterstützt SR-MPLS-Implementierung mit oder ohne vorletztes Hop-Popping (PHP), mit und ohne Overlay-ECMP und Explicit/Implicit NULL. Der flexible Segment-Routing-Algorithmus (Flex-Algo) wird ab Version 24.1 des Cloud-nativen Routers unterstützt. Weitere Informationen finden Sie unter Segment-Routing (IS-IS).
Konfigurieren von SR-MPLS auf JCNR
Betrachten Sie die folgende Topologie:
Wir wollen das Routing in diesem Netzwerk segmentieren. PE1 ist ein Cloud-nativer Eingangsrouter-Knoten, P ist ein Cloud-nativer Transit-Router-Knoten und PE2 ist ein ausgehender Cloud-nativer Router-Knoten. Wir konfigurieren einen gemeinsamen SRGB-Bereich (Common Segment Routing Global Block) für alle Knoten. Allen Knoten wird sowohl für IPv4 als auch für IPv6 eine Segment-ID (Knoten-SID) zugewiesen.
Verwenden Sie die Configlet-Ressource , um die cRPD-Pods zu konfigurieren.
- Konfiguration des Cloud-nativen Router-Eingangs (PE1)
- Cloud-native Router-Transitkonfiguration (P)
- Konfiguration Cloud-nativer Router-Ausgang (PE2)
- Überprüfen der SR-MPLS-Konfiguration auf JCNR
- Überprüfen Sie die Konfiguration auf der Weiterleitungsebene des Cloud-nativen Routers
Konfiguration des Cloud-nativen Router-Eingangs (PE1)
Konfigurieren Sie den PE1-Router (Cloud-Native Router Ingress) mit der folgenden Konfiguration:
Konfigurieren Sie die Schnittstellen:
set interfaces ens192 unit 0 family inet address 172.16.0.11/24 set interfaces ens192 unit 0 family inet6 address 172::11/64 set interfaces ens192 unit 0 family iso set interfaces ens192 unit 0 family mpls set interfaces lo0 unit 0 family inet address 192.168.1.11/32 set interfaces lo0 unit 0 family inet6 address 192::11/128 set interfaces lo0 unit 0 family iso address 49.0002.0190.0160.0019.00 set interfaces lo0 unit 0 family mpls
Konfigurieren von IS-IS:
set protocols isis interface ens192 set protocols isis interface lo0.0 set protocols isis level 1 disable
Konfigurieren von Routing-Optionen:
set routing-options route-distinguisher-id 192.168.1.11 set routing-options router-id 192.168.1.11 set routing-options autonomous-system 64512
Konfigurieren Sie das MPLS-Protokoll auf den Schnittstellen:
set protocols mpls ipv6-tunneling set protocols mpls interface ens192 set protocols mpls interface lo0.0
Konfigurieren von BGP-Nachbarn:
set protocols bgp group sr_mpls type internal set protocols bgp group sr_mpls multihop set protocols bgp group sr_mpls local-address 192.168.1.11 set protocols bgp group sr_mpls family inet-vpn unicast set protocols bgp group sr_mpls family inet6-vpn unicast set protocols bgp group sr_mpls local-as 64512 set protocols bgp group sr_mpls neighbor 192.168.3.13
Konfigurieren Sie die Startbezeichnung und den Indexbereich von SRGB:
set protocols isis source-packet-routing srgb start-label 16000 set protocols isis source-packet-routing srgb index-range 23999
Konfigurieren Sie die IPv4- und IPv6-Knotensegment-ID:
set protocols isis source-packet-routing node-segment ipv4-index 11 set protocols isis source-packet-routing node-segment ipv6-index 111
Konfigurieren Sie optional die explizite NULL-Bezeichnung:
set protocols isis source-packet-routing explicit-null
Cloud-native Router-Transitkonfiguration (P)
Konfigurieren Sie den Cloud-nativen Router-Transit (P)-Router mit der folgenden Konfiguration:
Konfigurieren Sie die Schnittstellen:
set interfaces ens192 unit 0 family inet address 172.16.0.12/24 set interfaces ens192 unit 0 family inet6 address 172::12/64 set interfaces ens192 unit 0 family iso set interfaces ens192 unit 0 family mpls set interfaces ens224 unit 0 family inet address 172.16.1.12/24 set interfaces ens224 unit 0 family inet6 address 172::112/64 set interfaces ens224 unit 0 family iso set interfaces ens224 unit 0 family mpls set interfaces lo0 unit 0 family inet address 192.168.2.12/32 set interfaces lo0 unit 0 family inet6 address 192::12/128 set interfaces lo0 unit 0 family iso address 49.0002.0190.0160.0020.00 set interfaces lo0 unit 0 family mpls
Konfigurieren von IS-IS:
set protocols isis interface ens192 set protocols isis interface ens224 set protocols isis interface lo0.0 set protocols isis level 1 disable
Konfigurieren von Routing-Optionen:
set routing-options route-distinguisher-id 192.168.2.12 set routing-options router-id 192.168.2.22 set routing-options autonomous-system 64512
Konfigurieren Sie das MPLS-Protokoll auf den Schnittstellen:
set protocols mpls interface ens192 set protocols mpls interface lo0.0 set protocols mpls interface ens224
Konfigurieren Sie die Startbezeichnung und den Indexbereich von SRGB:
set protocols isis source-packet-routing srgb start-label 16000 set protocols isis source-packet-routing srgb index-range 23999
Konfigurieren Sie die IPv4- und IPv6-Knotensegment-ID:
set protocols isis source-packet-routing node-segment ipv4-index 11 set protocols isis source-packet-routing node-segment ipv6-index 111
Konfiguration Cloud-nativer Router-Ausgang (PE2)
Konfigurieren Sie den PE2-Router (Cloud-Native Router Egress) mit der folgenden Konfiguration:
Konfigurieren Sie die Schnittstellen:
set interfaces ens192 unit 0 family inet address 172.16.1.13/24 set interfaces ens192 unit 0 family inet6 address 172::13/64 set interfaces ens192 unit 0 family iso set interfaces ens192 unit 0 family mpls set interfaces lo0 unit 0 family inet address 192.168.3.13/32 set interfaces lo0 unit 0 family inet6 address 192::13/128 set interfaces lo0 unit 0 family iso address 49.0002.0190.0160.0021.00 set interfaces lo0 unit 0 family mpls
Konfigurieren von IS-IS:
set protocols isis interface ens192 set protocols isis interface lo0.0 set protocols isis level 1 disable
Konfigurieren von Routing-Optionen:
set routing-options route-distinguisher-id 192.168.3.13 set routing-options router-id 192.168.3.13 set routing-options autonomous-system 64512
Konfigurieren Sie das MPLS-Protokoll auf den Schnittstellen:
set protocols mpls ipv6-tunneling set protocols mpls interface ens192 set protocols mpls interface lo0.0
Konfigurieren von BGP-Nachbarn:
set protocols bgp group sr_mpls type internal set protocols bgp group sr_mpls multihop set protocols bgp group sr_mpls local-address 192.168.3.13 set protocols bgp group sr_mpls family inet-vpn unicast set protocols bgp group sr_mpls family inet6-vpn unicast set protocols bgp group sr_mpls local-as 64512 set protocols bgp group sr_mpls neighbor 192.168.1.11
Konfigurieren Sie die Startbezeichnung und den Indexbereich von SRGB:
set protocols isis source-packet-routing srgb start-label 16000 set protocols isis source-packet-routing srgb index-range 23999
Konfigurieren Sie die IPv4- und IPv6-Knotensegment-ID:
set protocols isis source-packet-routing node-segment ipv4-index 13 set protocols isis source-packet-routing node-segment ipv6-index 113
Konfigurieren Sie optional die explizite NULL-Bezeichnung:
set protocols isis source-packet-routing explicit-null
Überprüfen der SR-MPLS-Konfiguration auf JCNR
Die folgenden Befehle können verwendet werden, um die SRv6-Konfiguration auf cRPD zu überprüfen:
user@pe1> show isis database detail IS-IS level 1 link-state database: IS-IS level 2 link-state database: pe1.00-00 Sequence: 0x125, Checksum: 0xce5c, Lifetime: 590 secs IPV4 Index: 11, IPV6 Index: 111 Node Segment Blocks Advertised: Start Index : 0, Size : 23999, Label-Range: [ 16000, 39998 ] IS neighbor: node2.02 Metric: 10 LAN IPv4 Adj-SID: 16, Weight: 0, Neighbor: node3, Flags: --VL-- LAN IPv6 Adj-SID: 17, Weight: 0, Neighbor: node3, Flags: F-VL-- IP prefix: 172.16.0.0/24 Metric: 10 Internal Up IP prefix: 192.168.1.11/32 Metric: 0 Internal Up V6 prefix: 172::/64 Metric: 10 Internal Up V6 prefix: 192::11/128 Metric: 0 Internal Up V6 prefix: fe80::50c8:9dff:fee2:4655/128 Metric: 0 Internal Up pe1.02-00 Sequence: 0x11f, Checksum: 0x4305, Lifetime: 468 secs IS neighbor: node2.00 Metric: 0 IS neighbor: node3.00 Metric: 0 p.00-00 Sequence: 0x83, Checksum: 0xcd5e, Lifetime: 506 secs IPV4 Index: 12, IPV6 Index: 112 Node Segment Blocks Advertised: Start Index : 0, Size : 23999, Label-Range: [ 16000, 39998 ] IS neighbor: node2.02 Metric: 10 LAN IPv4 Adj-SID: 16, Weight: 0, Neighbor: node2, Flags: --VL-- LAN IPv6 Adj-SID: 17, Weight: 0, Neighbor: node2, Flags: F-VL-- IS neighbor: node3.02 Metric: 10 LAN IPv4 Adj-SID: 20, Weight: 0, Neighbor: node4, Flags: --VL-- LAN IPv6 Adj-SID: 21, Weight: 0, Neighbor: node4, Flags: F-VL-- IP prefix: 172.16.0.0/24 Metric: 10 Internal Up IP prefix: 172.16.1.0/24 Metric: 10 Internal Up IP prefix: 192.168.2.12/32 Metric: 0 Internal Up V6 prefix: 172::/64 Metric: 10 Internal Up V6 prefix: 192::12/128 Metric: 0 Internal Up V6 prefix: fe80::50e4:70ff:fe46:76dd/128 Metric: 0 Internal Up p.02-00 Sequence: 0x78, Checksum: 0xf2e5, Lifetime: 1156 secs IS neighbor: node3.00 Metric: 0 IS neighbor: node4.00 Metric: 0 pe2.00-00 Sequence: 0x76, Checksum: 0xb5bf, Lifetime: 644 secs IPV4 Index: 13, IPV6 Index: 113 Node Segment Blocks Advertised: Start Index : 0, Size : 23999, Label-Range: [ 16000, 39998 ] IS neighbor: node3.02 Metric: 10 LAN IPv4 Adj-SID: 16, Weight: 0, Neighbor: node3, Flags: --VL-- LAN IPv6 Adj-SID: 17, Weight: 0, Neighbor: node3, Flags: F-VL-- IP prefix: 172.16.1.0/24 Metric: 10 Internal Up IP prefix: 192.168.3.13/32 Metric: 0 Internal Up V6 prefix: 172::/64 Metric: 10 Internal Up V6 prefix: 192::13/128 Metric: 0 Internal Up V6 prefix: fe80::3c1e:39ff:fe28:1a8a/128 Metric: 0 Internal Up
user@pe1> show route table inet.3 inet.3: 2 destinations, 2 routes (2 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 192.168.2.12/32 *[L-ISIS/14] 1d 01:20:51, metric 10 > to 172.16.0.12 via ens192 192.168.3.13/32 *[L-ISIS/14] 1d 00:59:01, metric 20 > to 172.16.0.12 via ens192, Push 16013
user@p> show route table mpls.0 mpls.0: 20 destinations, 20 routes (20 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 0 *[MPLS/0] 1d 02:05:44, metric 1 Receive 1 *[MPLS/0] 1d 02:05:44, metric 1 Receive 2 *[MPLS/0] 1d 02:05:44, metric 1 Receive 13 *[MPLS/0] 1d 02:05:44, metric 1 Receive 16 *[L-ISIS/14] 1d 01:12:40, metric 0 > to 172.16.0.11 via ens192, Pop 16(S=0) *[L-ISIS/14] 1d 01:12:40, metric 0 > to 172.16.0.11 via ens192, Pop 17 *[L-ISIS/14] 1d 01:12:40, metric 0 > to fe80::250:56ff:fea9:5f96 via ens192, Pop 17(S=0) *[L-ISIS/14] 1d 01:12:40, metric 0 > to fe80::250:56ff:fea9:5f96 via ens192, Pop 20 *[L-ISIS/14] 1d 01:13:06, metric 0 > to 172.16.1.13 via ens224, Pop 20(S=0) *[L-ISIS/14] 1d 01:13:06, metric 0 > to 172.16.1.13 via ens224, Pop 21 *[L-ISIS/14] 1d 01:13:06, metric 0 > to fe80::250:56ff:fea9:5dc via ens224, Pop 21(S=0) *[L-ISIS/14] 1d 01:13:06, metric 0 > to fe80::250:56ff:fea9:5dc via ens224, Pop 16011 *[L-ISIS/14] 1d 01:00:38, metric 10 > to 172.16.0.11 via ens192, Swap 0 16011(S=0) *[L-ISIS/14] 1d 01:12:40, metric 10 > to 172.16.0.11 via ens192, Pop 16013 *[L-ISIS/14] 1d 01:00:24, metric 10 > to 172.16.1.13 via ens224, Swap 0 16013(S=0) *[L-ISIS/14] 1d 01:12:57, metric 10 > to 172.16.1.13 via ens224, Pop 16111 *[L-ISIS/14] 1d 01:00:38, metric 10 > to fe80::250:56ff:fea9:5f96 via ens192, Swap 2 16111(S=0) *[L-ISIS/14] 1d 01:12:40, metric 10 > to fe80::250:56ff:fea9:5f96 via ens192, Pop 16113 *[L-ISIS/14] 1d 01:00:24, metric 10 > to fe80::250:56ff:fea9:5dc via ens224, Swap 2 16113(S=0) *[L-ISIS/14] 1d 01:12:57, metric 10 > to fe80::250:56ff:fea9:5dc via ens224, Pop
Überprüfen Sie die Konfiguration auf der Weiterleitungsebene des Cloud-nativen Routers
Überprüfen Sie den Datenverkehrsfluss über den vRouter auf jedem PE-Knoten:
user@pe1# mpls --dump MPLS Input Label Map Label NextHop ------------------- 0 26 1 26 2 26 13 26 16 27 17 28 16012 27 16013 29 16112 28 16113 30
user@pe1# mpls --get 16013 MPLS Input Label Map Label NextHop ------------------- 16013 29
user@pe1# nh --get 29 Id:29 Type:Tunnel Fmly: AF_MPLS Rid:0 Ref_cnt:2 Vrf:0 Flags:Valid, Policy, Etree Root, MPLS, Oif:1 Len:14 Data:00 50 56 a9 10 fa 00 50 56 a9 5f 96 88 47 Number of Transport Labels:1 Transport Labels:16013,
user@pe1# mpls --get 16 MPLS Input Label Map Label NextHop ------------------- 16 27
user@pe1# nh --get 27 Id:27 Type:Encap Fmly:AF_INET/6 Rid:0 Ref_cnt:6 Vrf:0 Flags:Valid, Policy, Etree Root, EncapFmly:0806 Oif:1 Len:14 Encap Data: 00 50 56 a9 10 fa 00 50 56 a9 5f 96
SRv6
SRv6 ist ein Segment-Routing-Paradigma, das mit einem neuen IPv6-Erweiterungs-Header namens Segment-Routing Header (SRH) auf ein IPv6-Underlay angewendet wird. SRv6 nutzt vorhandene IPv6-Weiterleitungstechnologie zur Codierung von Netzwerkprogrammieranweisungen, die auch als Segmentidentifikatoren (SIDs) bezeichnet werden. In SRv6 werden die SIDs als IPv6-Adressen dargestellt, wenn sie mit SR-MPLS verglichen werden, bei dem SIDs als SR-MPLS-Labels codiert sind. Eine SRv6-SID hat eine Länge von 128 Bit und besteht aus den folgenden Komponenten:
Bestandteil |
Beschreibung |
---|---|
Zeiger |
Erster Teil einer SID, der die Adresse eines SRv6-Knotens identifiziert. Es handelt sich um eine Netzwerkadresse, die die Route zu ihrem übergeordneten Knoten bereitstellt und vom IS-IS-Protokoll in der Tabelle inet6.0 installiert wird. IS-IS leitet das Segment an seinen übergeordneten Knoten weiter, der eine Funktion ausführt, die im zweiten Teil der SID definiert ist. Es ist 64 Bit lang. |
Funktion |
Zweiter Teil einer SID, der die Funktion definiert, die ein Knoten (identifiziert durch den Locator) ausführt, z. B.: Ende: Endpoint-Funktion für SRv6-Instanziierung einer Präfix-SID [RFC8402] End.X: Endpunkt mit L3-Cross-Connect-Funktion für SRv6-Instanziierung einer benachbarten SID [RFC8402] End.DT4: Endpunkt mit Entkapselung und spezifischer IPv4-Tabellen-Lookup-Funktion für SRv6-Instanziierung von Global oder IPv4 L3VPN (Transport von IPv4-Services über SRv6-Underlay) End.DT6: Endpunkt mit Entkapselung und spezifischer IPv6-Tabellen-Lookup-Funktion für SRv6-Instanziierung von Global oder IPv6 L3VPN (Transport von IPv6-Services über SRv6-Underlay) End.DT46: Endpunkt mit Entkapselung und spezifischer IP-Tabellen-Lookup-Funktion für die SRv6-Instanziierung von globalem, IPv4- oder IPv6-L3VPN (Transport von IPv4- und IPv6-Diensten über SRv6-Underlay). Es wird von IPv4- und IPv6-Präfixen gemeinsam genutzt. Das End-SID-Verhalten kann über Varianten wie Penultimate Segment Pop (PSP), Ultimate Segment Pop (USP) und Ultimate Segment Decapsulation (USD) angegeben werden. Die Function-Komponente ist 16 Bit lang. |
Argument |
Ein Feld mit variabler Länge, das zusätzliche Informationen über die Weiterleitungsaktion bereitstellt. Kann maximal 48 Bit lang sein. |
BBBB:BBBB:<uSID1>:<uSID2>:<uSID3>:<uSID4>:<uSID5>:<uSID6>
wobei BBBB:BBBB/32
das Präfix oder der Block darstellt, das bzw. der von einem Operator innerhalb einer SR-Domäne zugewiesen wurde. Es werden verschiedene Präfixlängen unterstützt, darunter /16,
/32
, /48
, /64
Blöcke. Am häufigsten wird ein /32
Block verwendet. Bei den Blöcken kann es sich entweder um einen Global Identifier Block (GIB) oder einen Local Identifier Block (LIB) handeln. Die GIB stellt einen weltweit einzigartigen Bereich von uSIDs dar, die aus einem öffentlichen oder reservierten Adressraum zugewiesen werden, der speziell für SRv6-Bereitstellungen vorgesehen ist. Die LIB wird von einem bestimmten Netzwerkknoten innerhalb der SR-Domäne zugewiesen und ist nur im lokalen Kontext des Knotens anwendbar. Die uSIDx
stellt die einzelnen 16-Bit-uSIDs dar, die entweder von der GIB oder der LIB stammen können. Die uSIDs implementieren die folgenden Funktionen:
-
uN: Micro-Node-SID, die dem endgültigen Ziel (Ende) zugeordnet wird.
-
uA: Micro-Adjacency-SID mit adjazenzspezifischem Verhalten (End.X)
-
uDT: Micro-Service-SID, d. h. domänenspezifische Informationen (End.DT4, End.DT6, End.DT46)
Der Cloud-native Router unterstützt die folgenden SRv6-Funktionen:
Funktionalitäten |
Notizen |
---|---|
SRv6 L3VPN mit uSID |
uSID-Typen: Globale uSID, lokale uSID uSID-Codierung in der Zieladresse |
Block- und uSID-Größen | Unterstützung für /16-, /32-, /48- und /64-Blöcke |
Cloud-nativer Router SRv6 Knotentypen und Mikroanweisungen |
Ingress: SRv6-Kapselung in der Zieladresse (SRH ist nicht erforderlich) Transit: IPv6-Weiterleitung, wenn der Eingangsknoten JCNR ist; Verschieben und vorwärts, wenn der Eingangsknoten nicht dem JCNR entspricht Ausgang: Depasulate und Ausführen der SID-Dienstfunktion |
SR-Endgeräte (Funktionen) |
Ende, Ende.X, Ende.DT4, End.DT6 und Ende.DT46 |
uSID-Verhalten | uN, uDT |
Wiederherstellung nach Fehlern |
Von der Control Plane initiierte Fehlerbehebung (alternativer Pfad als nächster Hop) |
Merkmal |
Beschreibung |
---|---|
SRv6 uSID-Underlay-Tunnel über IS-IS |
IS-IS ruft den Best-Effort-Tunnel zu den angekündigten Locators auf und programmiert sie in der Tabelle inet6.3. |
SRv6 uSID Underlay-Tunnel über IS-IS mit ECMP-Pfaden |
IS-IS ruft den Best-Effort-Tunnel zu den angekündigten Locators auf und programmiert sie in der Tabelle inet6.3. Die Tunnel können über ECMP-Weiterleitungspfade verfügen. |
Routen für BGP-Internetpräfixe, die mit uN SID angekündigt werden |
BGP-Internetpräfixe, die mit uN-SIDs angekündigt werden, werden über entsprechende Locators (SRv6-uSID-Underlay-Tunnel) aufgelöst. Die Underlay-Routen können über ein einzelnes Gateway oder ECMP verfügen. |
Multipath-Routen für BGP-Internetpräfixe, die mit uN SID angekündigt werden |
Mehrere Provide Edge (PE)-Router können dasselbe Internetpräfix (Multihoming) haben, das zu BGP-Multipath am Eingangs-PE führen kann. Jede Multipath-Route wird über Underlay-SRv6-Tunnel aufgelöst, die entweder über ein einzelnes Gateway oder ECMP verfügen. |
Routen für L3VPN-Präfixe, die mit uN SID angekündigt werden |
L3VPN-Präfixe, die mit uN-SIDs angekündigt werden, werden über entsprechende Locators (SRV6 uSID-Underlay-Tunnel) aufgelöst. Diese Underlay-Routen können über ein einzelnes Gateway oder ECMP verfügen. |
Multipath-Routen für L3VPN-Präfixe, die mit uN SID angekündigt werden |
Mehrere PEs können das gleiche L3VPN-Präfix (Multihoming) haben, was zu BGP-Multipath am Eingangs-PE führen kann. Jede Multipath-Route wird über die Underlay-SRv6-Tunnel aufgelöst, die entweder über ein einzelnes Gateway oder ECMP verfügen. |
BGP-Intent-Routen über IS-IS-IS-Tunnel mit Flex-Algorithmus |
Flex-Algorithmus-uSIDs können über IS-IS mit SRv6-Underlay-Tunneln angekündigt werden. BGP-Internetpräfixe und L3VPN-Präfixe mit uSIDs können über die Underlay-Tunnel aufgelöst werden. Diese Präfixe können nicht beabsichtigt sein (ohne dass eine Farbgemeinschaft an sie angehängt ist). Die Präfixe werden über SRV6-Underlay-Tunnel aufgelöst, die in der Tabelle inet6.3 installiert sind. |
BGP-Intent-Routen über IS-IS-IS-Tunnel mit Flex-Algorithmus und Fallback-Mechanismus |
Flex-Algorithmus-uSIDs können über IS-IS mit SRv6-Underlay-Tunneln angekündigt werden. Die BGP-Internetpräfixe und L3VPN-Präfixe mit uSIDs können über die Underlay-Tunnel aufgelöst werden. Bei diesen Präfixen kann es sich um Absichten handeln (mit einer an sie angehängten Farbgemeinschaft). Die Präfixe werden über SRv6-Underlay-Tunnel aufgelöst, die in der Tabelle junos-rti-tc-<color>.inet6.3 installiert sind, wobei die Farbe der Farbe in der mit dem Präfix beworbenen Farbgemeinschaft entspricht. Wenn die Präfixauflösung nicht über die Tabelle junos-rti-tc-<color>.inet6.3 erfolgt, kann sie über den in der inet6.3-Tabelle installierten Flex-Algorithmus-Underlay-Tunnel aufgelöst werden und so einen Fallback-Mechanismus bereitstellen. |
Unterstützung für die Programmierung von uN SID und das Weiterleiten von Paketen basierend auf den uN SID-Routen |
Wir unterstützen die Programmierung von uN-SID-Routen in der Tabelle inet6.0. Dies erleichtert die Weiterleitung von Paketen, deren Zieladresse uN-SIDs enthält. Beachten Sie, dass Pakete mit Segment-Routing-Header (SRH) derzeit nicht unterstützt werden. |
Unterstützte SID-Funktionalitäten |
uN SID-Verschiebung und -Suche (Flavor-Typ uDT für IPv4 uDT für IPv6 uDT für IPv4 und IPv6 |
Locator-Zusammenfassung und -Lecks |
Die Zusammenfassung und das Lecken von Locators ist ein Vorteil von SRv6 gegenüber SR-MPLS. Eine L1-L2-Plattform kann Locators von anderen Ebenen zusammenfassen und an eine andere Ebene weitergeben. Locator-Undichtigkeiten können auch ohne Zusammenfassung auftreten. |
- Konfigurieren von SRv6 in JCNR
- Überprüfen der SRv6-Konfiguration auf JCNR
- Überprüfen Sie den Paketfluss über die Cloud-native Router-Weiterleitungsebene
Konfigurieren von SRv6 in JCNR
Betrachten Sie die folgende Topologie:

Wir wollen die Kommunikation zwischen den Hosts 10.1.1.1/32 und 10.2.2.2/32 über einen SRv6-Tunnel ermöglichen. PE1 ist ein Cloud-nativer Eingangsrouter-Knoten, P ist ein Cloud-nativer Transit-Router-Knoten und PE2 ist ein ausgehender Cloud-nativer Router-Knoten. PE1, P und PE2 kündigen ihre uSIDs (in der Abbildung dargestellt) über IS-IS zusammen mit Overlay-Präfixen über BGP untereinander an. CE1 leitet den Paketfluss zum Eingangsknoten (PE1) ein. PE1 verkapselt das Quellpaket mit dem SRv6-Header und legt die Zieladresse auf die uSID des Ausgangsknotens (PE2) fest. Da der Cloud-native Router in dieser Topologie der Eingangsknoten ist, leitet der Transitknoten (P) das IPv6-Paket einfach weiter. Der Ausgangsknoten (PE2) ist mit einer Microservice-SID (uDT) konfiguriert, um das Paket zu entkapseln und eine bestimmte IP-Tabelle zu suchen, um das Paket an CE2 weiterzuleiten.
Die Konfiguration von SRv6 im Cloud-nativen Router umfasst die Micro-SID-Blockkonfiguration , die Micro-SID-Locator-Konfiguration , die Micro-Node-SID (uN)-Konfiguration in IS-IS und die Micro-Service-SID (uDT)-Konfiguration in BGP.
Konfigurieren Sie die JCNR-Steuerungsebene für SRv6. Der Kürze halber behandeln wir in diesem Beispiel die Konfiguration für den ausgehenden Cloud-nativen Routerknoten (PE2). Die Konfiguration für andere Knoten ist ähnlich.
Konfigurieren Sie den Micro-SID-Block und optional die maximale Anzahl lokaler statischer SIDs (Standardwert ist 0, muss konfiguriert werden, wenn statische uSIDs verwendet werden):
user@PE2# set routing-options source-packet-routing srv6 block blk16_1 2001:db8::/32 user@PE2# set routing-options source-packet-routing srv6 block blk16_1 local-micro-sid maximum-static-sids 2000
Konfigurieren Sie den Micro-SID-Locator:
user@PE2# set routing-options source-packet-routing srv6 locator myloc 2001:db8:4600::/48 user@PE2# set routing-options source-packet-routing srv6 locator myloc micro-sid block-name blk16_1 user@PE2# set routing-options source-packet-routing srv6 locator myloc micro-sid flavor none
Konfigurieren Sie micro-node-SID (uN SID) in IS-IS, um locator TLV und micro-node-SID anzukündigen:
user@PE2# set protocols isis source-packet-routing srv6 locator myloc micro-node-sid
Es gibt zwei Möglichkeiten, Microservice-SIDs zu konfigurieren. Die erste ist nur BGP, wodurch ein Satz von dt4-, dt6- und dt46-uSIDs pro BGP-Instanz konfiguriert werden kann. Die uSID kann entweder statisch oder dynamisch zugeordnet sein. Die zweite Möglichkeit besteht darin, eine Exportrichtlinie zu konfigurieren, um die Micro-Service-SID anzugeben, die von einem Präfix oder dem Locator zum Ableiten der Micro-Service-SID verwendet wird. BGP wird über das
non-default
Schlüsselwort konfiguriert. Im Folgenden finden Sie ein Beispiel für jede Methode. Sie dürfen nur eine davon für einen Satz von dt4-, dt6- und dt46-uSIDs verwenden.Statische Standard-Microservice-SID für IPv4-Services. Beachten Sie, dass die statische uSID in dem
maximum-static-sids
in Schritt 1 definierten Bereich liegen muss:user@PE2# set routing-instances pe-2 protocols bgp source-packet-routing srv6 locator myloc micro-dt4-sid 0xF831
Legen Sie die automatisch zugewiesene Standard-Microservice-SID für IPv4-Dienste fest:
user@PE2# set routing-instances pe-2 bgp source-packet-routing srv6 locator myloc micro-dt4-sid
Legen Sie eine nicht standardmäßige Micro-Service-SID mit BGP-Exportrichtlinie fest:
user@PE2# set routing-instances pe-2 bgp source-packet-routing srv6 locator myloc micro-dt4-sid non-default
user@PE2# set policy-options policy-statement EXPORT_BGP_SRV6 term 1 then srv6 locator myloc user@PE2# set policy-options policy-statement EXPORT_BGP_SRV6 term 1 then srv6 micro-dt4-sid
Konfigurieren Sie BGP für die Ankündigung des SRv6-Dienstes. Im Folgenden finden Sie ein Beispiel für die Familie
inet
:user@PE2# set protocols bgp group CNIv6 family inet unicast advertise-srv6-service user@PE2# set protocols bgp group CNIv6 family inet unicast accept-srv6-service
Überprüfen der SRv6-Konfiguration auf JCNR
Die folgenden Befehle können verwendet werden, um die SRv6-Konfiguration auf cRPD zu überprüfen:
user@host> show srv6 block blk16_1 Block: blk16_1 Block Prefix: 2001:db8::, Block length: 32, Micro-sid length: 16 Global Micro SIDs: Static SID range: 0x0-0xDFFF, Dynamic SID range: - Allocated static SID count: 1, Allocated dynamic SID count: 0 Available static SID count: 57343, Available dynamic SID count: 0 Local Micro SIDs: Static SID range: 0xF830-0xFFFF, Dynamic SID range: 0xE000-0xFFFF Allocated static SID count: 0, Allocated dynamic SID count: 0 Available static SID count: 2000, Available dynamic SID count: 8192
user@host> show srv6 locator Locator: myloc Locator prefix: 2001:db8:4600::, Locator length: 48 Block length: 32, Node length: 16 Function length: 16, Argument length: 0 Micro SID Locator, Flavor [ None ] Micro SID Block Name: blk16_1
user@host> show isis overview Instance: master Router ID: 10.1.1.1 IPv6 Router ID: ::10.1.1.1 ... Source Packet Routing (SPRING): Enabled Node Segments: Disabled SRv6: Enabled Locator: 2001:db8:4600::/48, Algorithm: 0 micro-node-SID: 2001:db8:4600::, Flavor: None ...
user@host> show isis database extensive IS-IS level 1 link-state database: ... SRv6 Locator: 2001:db8:4600::/48, Metric: 0, MTID: 0, Flags: 0x0, Algorithm: 0 SRv6 SID: 2001:db8:4600::, Flavor: None sid-structure-sub-sub-tlv: Block-length:32, Node-length:16 ...
Überprüfen Sie den Paketfluss über die Cloud-native Router-Weiterleitungsebene
Überprüfen Sie den Datenverkehrsfluss über den vRouter auf jedem PE-Knoten:
Eingangs-SRv6-Knoten (PE1)
[user@PE1 /]# flow --match 10.1.1.1 Flow table(size 161218560, entries 629760) Entries: Created 300 Added 300 Deleted 400 Changed 600Processed 300 Used Overflow entries 0 (Created Flows/CPU: 0 0 0 0 0 0 0 0 0 0 0 72 87 72 69)(oflows 0) Action:F=Forward, D=Drop N=NAT(S=SNAT, D=DNAT, Ps=SPAT, Pd=DPAT, L=Link Local Port) Other:K(nh)=Key_Nexthop, S(nh)=RPF_Nexthop Flags:E=Evicted, Ec=Evict Candidate, N=New Flow, M=Modified Dm=Delete Marked TCP(r=reverse):S=SYN, F=FIN, R=RST, C=HalfClose, E=Established, D=Dead Stats:Packets/Bytes Listing flows matching ([10.1.1.1]:*) Index Source:Port/Destination:Port Proto(V) ----------------------------------------------------------------------------------- 231600<=>349580 10.1.1.1:1024 6 (98) 10.2.2.2:1024 (Gen: 3, K(nh):98, Action:F, Flags:, TCP:, QOS:-1, S(nh):0, Stats:77632/8228992, SPort 63335, TTL 0, Sinfo 22.0.0.0) 349580<=>231600 10.2.2.2:1024 6 (98) 10.1.1.1:1024 (Gen: 3, K(nh):98, Action:F, Flags:, TCP:, QOS:-1, S(nh):623, Stats:0/0, SPort 63397, TTL 0, Sinfo 0.0.0.0)
[user@PE1 /]# rt --get 10.2.2.2/32 --vrf 98 Match 10.2.2.2/32 in vRouter inet4 table 0/98/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet4 routing table 0/98/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 10.2.2.0/24 0 LPT - 623 -
[user@PE1 /]# nh --get 623 Id:623 Type:Tunnel Fmly:AF_INET6 Rid:0 Ref_cnt:2 Vrf:0 Flags:Valid, Policy, Etree Root, SRv6, Oif:2 Len:14 Data:40 a6 b7 a0 ef f1 50 7c 6f 48 9c 89 86 dd Sip: abcd:44:44:44::44 Block Len:32 Block: 2001:db8:: Number of Containers:1 Container Dips:[1]: 2001:db8:4600:e001::
Beachten Sie, dass der nächste Hop für den Datenverkehr zu 10.2.2.2/32 ein SRv6-Tunnel mit Ziel-IP: (Die uSID des Ausgangsknotens) ist.
2001:db8:4600:e001::
SRv6-Transitknoten (P)
[user@P /]# flow --match 2001:db8:4600:e001:: Flow table(size 161218560, entries 629760) Entries: Created 300 Added 300 Deleted 400 Changed 600Processed 300 Used Overflow entries 0 (Created Flows/CPU: 0 0 0 0 0 0 0 0 0 0 0 72 87 72 69)(oflows 0) Action:F=Forward, D=Drop N=NAT(S=SNAT, D=DNAT, Ps=SPAT, Pd=DPAT, L=Link Local Port) Other:K(nh)=Key_Nexthop, S(nh)=RPF_Nexthop Flags:E=Evicted, Ec=Evict Candidate, N=New Flow, M=Modified Dm=Delete Marked TCP(r=reverse):S=SYN, F=FIN, R=RST, C=HalfClose, E=Established, D=Dead Stats:Packets/Bytes Listing flows matching ([2001:db8:4600:e001::]:*) Index Source:Port/Destination:Port Proto(V) ----------------------------------------------------------------------------------- 137640<=>238208 abcd:44:44:44::44:0 4 (0) 2001:db8:4600:e001:::0 (Gen: 1, K(nh):0, Action:F, Flags:, QOS:-1, S(nh):0, Stats:81560/11907760, SPort 53031, TTL 0, Sinfo 0.0.0.0) 238208<=>137640 2001:db8:4600:e001:::0 4 (0) abcd:44:44:44::44:0 (Gen: 1, K(nh):0, Action:F, Flags:, QOS:-1, S(nh):0, Stats:0/0, SPort 55361, TTL 0, Sinfo 0.0.0.0)
[user@P /]# rt --get 2001:db8:4600:e001::/128 --vrf 0 --family inet6 rt --get fcbb:bb01:4600:e001::/128 --vrf 0 --family inet6 Match fcbb:bb01:4600:e001::/128 in vRouter inet6 table 0/0/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet6 routing table 0/0/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 2001:db8:4600::/48 0 T - 80 -
[user@P /]# nh --get 80 Id:80 Type:Encap Fmly:AF_INET/6 Rid:0 Ref_cnt:11 Vrf:0 Flags:Valid, Policy, Etree Root, EncapFmly:0806 Oif:7 Len:14 Encap Data: 50 7c 6f 48 83 79 40 a6 b7 a0 f9 3b
Beachten Sie, dass P nur das IPv6-Paket weiterleitet.
Ausgang SRv6-Knoten (PE2)
[root@PE2 /]# rt --get 2001:db8:4600:e001::/128 --vrf 0 --family inet6 Match 2001:db8:4600:e001::/128 in vRouter inet6 table 0/0/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet6 routing table 0/0/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 2001:db8:4600:e001::/80 0 T - 72 -
[root@PE2 /]# nh --get 72 Id:72 Type:Vrf_Translate Fmly:AF_INET6 Rid:0 Ref_cnt:7 Vrf:19 Flags:Valid, Etree Root, SRv6, Vrf:19
[root@PE2 /]# rt --get 10.2.2.2/32 --vrf 19 Match 10.2.2.2/32 in vRouter inet4 table 0/19/unicast Flags: L=Label Valid, P=Proxy ARP, T=Trap ARP, F=Flood ARP, Ml=MAC-IP learnt route vRouter inet4 routing table 0/19/unicast Destination PPL Flags Label Nexthop Stitched MAC(Index) 10.2.2.2/32 0 PT - 776 -
[root@PE2 /]# nh --get 776 Id:776 Type:Encap Fmly:AF_INET/6 Rid:0 Ref_cnt:2 Vrf:19 Flags:Valid, Policy, Etree Root, EncapFmly:0806 Oif:21 Len:14 Encap Data: 00 10 94 00 04 1e 50 7c 6f 48 77 64
Beachten Sie, dass die Ausgangs-PE in der Standardtabelle nach der uSID-IPv6-Adresse sucht. Der nächste Hop mit exakter Übereinstimmung ist so konfiguriert, dass
Vrf_Translate
. Er sucht die10.2.2.2/32
Ziel-IP-Adresse im angegebenen VRF und leitet das Paket an CE2 weiter.