3. SRv6 SID
3. SRv6 SID
[RFC8402] definiert einen SRv6 Segment Identifier (Segment-Identifikator) als eine IPv6-Adresse, die explizit mit dem Segment verbunden ist.
Wenn sich ein SRv6 SID im Destination Address (Zieladresse)-Feld eines IPv6-Headers eines Pakets befindet, wird es durch Transit-Knoten in einem IPv6-Netzwerk als IPv6-Adresse geroutet.
Seine Verarbeitung ist in Abschnitt 4.3 von [RFC8754] definiert und wird hier zur Erinnerung wiedergegeben:
Ohne die Details einer Implementierung einzuschränken, erstellt der SR segment endpoint node (Segment-Endpunkt-Knoten) Forwarding Information Base (Weiterleitungsinformationsbasis, FIB)-Einträge für seine lokalen SIDs.
Wenn ein SRv6-fähiger Knoten ein IPv6-Paket empfängt, führt er eine longest-prefix-match lookup (Längste-Präfix-Übereinstimmungssuche) auf der Zieladresse des Pakets durch. Diese Suche kann Folgendes zurückgeben:
Einen FIB-Eintrag, der eine lokal instanziierte SRv6 SID darstellt
Einen FIB-Eintrag, der eine lokale Schnittstelle darstellt, die nicht lokal als SRv6 SID instanziiert ist
Einen FIB-Eintrag, der eine nicht-lokale Route darstellt
Keine Übereinstimmung
Abschnitt 4 dieses Dokuments definiert einen neuen Satz von SRv6 SID behaviors (Verhaltensweisen), zusätzlich zu dem in Abschnitt 4.3.1 von [RFC8754] definierten.
3.1. SID Format (SID-Format)
Dieses Dokument definiert eine SRv6 SID als bestehend aus LOC:FUNCT:ARG, wobei ein locator (Lokalisator, LOC) in den L höchstwertigen Bits der SID kodiert ist, gefolgt von F Bits der function (Funktion, FUNCT) und A Bits der arguments (Argumente, ARG). L, die locator length (Lokalisatorlänge), ist flexibel, und ein Betreiber kann frei die Lokalisatorlänge seiner Wahl verwenden. F und A können beliebige Werte haben, solange L+F+A <= 128. Wenn L+F+A kleiner als 128 ist, MÜSSEN die verbleibenden Bits der SID null sein.
Ein locator kann als B:N dargestellt werden, wobei B der SRv6 SID block (SRv6 SID-Block, IPv6-Präfix, das vom Betreiber für SRv6 SIDs zugewiesen wurde) und N die Kennung des übergeordneten Knotens ist, der die SID instanziiert.
Wenn der LOC-Teil der SRv6 SIDs routbar ist, führt er zu dem Knoten, der die SID instanziiert.
Das FUNCT ist eine undurchsichtige Identifikation eines lokalen Verhaltens, das an die SID gebunden ist.
Der Begriff "function" (Funktion) bezieht sich auf die Bitfolge in der SRv6 SID. Der Begriff "behavior" (Verhalten) identifiziert das an die SID gebundene Verhalten. Einige Verhaltensweisen sind in Abschnitt 4 dieses Dokuments definiert.
Ein SRv6 Endpoint behavior (Endpunktverhalten) kann zusätzliche Informationen für seine Verarbeitung benötigen (z.B. bezüglich des Flusses oder Dienstes). Diese Informationen können in den ARG-Bits der SID kodiert werden.
In einem solchen Fall werden die Semantik und das Format der ARG-Bits als Teil der SRv6 Endpoint behavior-Spezifikation definiert.
Der ARG-Wert einer routed SID (gerouteten SID) SOLLTE zwischen Paketen in einem gegebenen Fluss konstant bleiben. Variierende ARG-Werte zwischen Paketen in einem Fluss können zu unterschiedlichem ECMP hashing (Hashing) führen und eine Neuordnung verursachen.
3.2. SID Allocation within an SR Domain (SID-Zuweisung innerhalb einer SR-Domäne)
Locators werden konsistent mit der IPv6-Infrastrukturzuweisung zugewiesen. Zum Beispiel kann ein Netzbetreiber:
-
Block B::/48 der SR domain (SR-Domäne) zuweisen
-
Jedem SRv6-fähigen Knoten in der Domäne einen eindeutigen B:N::/64-Block zuweisen
Als Beispiel hat ein Mobilfunkdienstanbieter SRv6 kommerziell auf mehr als 1000 kommerziellen Routern und 1800 Whitebox-Routern eingesetzt. Alle diese Geräte sind für SRv6 aktiviert und kündigen SRv6 SIDs an. Der Anbieter hat historisch IPv6 eingesetzt und Infrastrukturadressen aus dem Unique Local Address (eindeutige lokale Adresse, ULA)-Raum [RFC4193] zugewiesen. Sie haben speziell drei /48-Präfixe (Land X, Land Y, Land Z) zugewiesen, um ihre SRv6-Infrastruktur zu unterstützen. Von diesen /48-Präfixen wurde jedem Router ein /64-Präfix zugewiesen, aus dem alle SIDs dieses Routers zugewiesen werden.
In einem anderen Beispiel hat ein großer Mobilfunk- und Festnetzdienstanbieter SRv6 in seinem landesweiten Netzwerk kommerziell eingesetzt. Diesem Anbieter wurde ein /20-Präfix von einer Regional Internet Registry (regionalen Internetregistrierung, RIR) zugewiesen. Sie haben ihrer Infrastruktur einige /48-Präfixe unterzugewiesen, um SRv6 einzusetzen. Jedem Router wird ein /64-Präfix zugewiesen, aus dem alle SIDs dieses Routers zugewiesen werden.
Der IPv6-Adressverbrauch in beiden Beispielen ist minimal und repräsentiert weniger als ein Milliardstel bzw. ein Millionstel des verfügbaren Adressraums.
Ein Dienstanbieter, der die aktuelle Mindestzuweisung eines /32-Präfixes von einer RIR erhält, kann seiner Infrastruktur, die SRv6 einsetzt, ein /48-Präfix zuweisen und anschließend /64-Präfixe für SIDs an jedem SRv6-Knoten zuweisen. Die /48-Zuweisung ist ein Fünfundsechzigtausendstel (1/2^16) des nutzbaren IPv6-Adressraums, der dem Anbieter zur Zuweisung zur Verfügung steht.
Wenn ein Betreiber eine SID an einem Knoten instanziiert, spezifiziert er einen SID-Wert B:N:FUNCT und das an die SID gebundene Verhalten unter Verwendung eines der SRv6 Endpoint Behavior codepoints (Endpunktverhaltens-Codepunkte) des in diesem Dokument definierten Registers (siehe Tabelle 6).
Der Knoten kündigt die SID, B:N:FUNCT, in der control plane (Steuerungsebene) an (siehe Abschnitt 8) zusammen mit dem SRv6 Endpoint Behavior codepoint, der das Verhalten der SID identifiziert.
Ein SR source node (Quellknoten) kann das Verhalten nicht durch Untersuchung des FUNCT-Werts einer SID ableiten.
Daher wird der SRv6 Endpoint Behavior codepoint zusammen mit der SID in der Steuerungsebene angekündigt.
Ein SR source node verwendet den SRv6 Endpoint Behavior codepoint, um die empfangene SID (B:N:FUNCT) einem Verhalten zuzuordnen.
Ein SR source node wählt ein gewünschtes Verhalten an einem ankündigenden Knoten aus, indem er die SID (B:N:FUNCT) auswählt, die mit dem gewünschten Verhalten angekündigt wird.
Als Beispiel:
-
Ein Netzbetreiber kann einen SRv6 SID block 2001:db8:bbbb::/48 aus seinem internen Betriebsblock für seine SRv6-Infrastruktur zuweisen.
-
Ein Netzbetreiber kann einen SRv6 Locator 2001:db8:bbbb:3::/64 einem bestimmten Router, zum Beispiel Router 3, in seiner SR Domain zuweisen.
-
Bei Router 3, innerhalb des locators 2001:db8:bbbb:3::/64, führt der Netzbetreiber oder der Router eine dynamische Zuweisung durch für:
-
Function 0x0100, die mit dem behavior End.X (Endpoint with L3 cross-connect, Endpunkt mit L3-Querverbindung) zwischen router 3 und seinem verbundenen Nachbar-Router (z.B. Router 4) verbunden ist. Diese function ist als 16-Bit-Wert kodiert und hat keine Argumente (F=16, A=0).
Diese SID wird in der Steuerungsebene als 2001:db8:bbbb:3💯: mit einem SRv6 Endpoint Behavior codepoint-Wert von 5 angekündigt.
-
Function 0x0101, die mit dem behavior End.X (Endpoint with L3 cross-connect, Endpunkt mit L3-Querverbindung) zwischen router 3 und seinem verbundenen Nachbar-Router (z.B. Router 2) verbunden ist. Diese function ist als 16-Bit-Wert kodiert und hat keine Argumente (F=16, A=0).
Diese SID wird in der Steuerungsebene als 2001:db8:bbbb:3:101:: mit einem SRv6 Endpoint Behavior codepoint-Wert von 5 angekündigt.
-
Diese Beispiele schließen kein anderes IPv6-Adresszuweisungsschema aus.
3.3. SID Reachability (SID-Erreichbarkeit)
Meistens würde der Knoten N IPv6-Präfixe ankündigen, die den LOC-Teilen entsprechen, die seine SIDs abdecken, oder Präfixe mit kürzerer Maske. Die Verteilung dieser Ankündigungen und die Berechnung ihrer Erreichbarkeit sind spezifisch für das Routing-Protokoll und liegen außerhalb des Umfangs dieses Dokuments.
Eine SRv6 SID wird als routed (geroutet) bezeichnet, wenn ihre SID zu einem IPv6-Präfix gehört, das über ein Routing-Protokoll angekündigt wird. Eine SRv6 SID, die diese Bedingung nicht erfüllt, ist non-routed (nicht geroutet).
Lassen Sie uns eine klassische Illustration geben:
Knoten N ist explizit mit zwei SIDs konfiguriert: 2001:db8🅱️1💯: und 2001:db8🅱️2:101::.
Das Netzwerk erfährt über das IGP von einem Pfad zu 2001:db8🅱️1::/64; daher würde ein Paket, das für 2001:db8🅱️1💯: bestimmt ist, bis zu N geroutet werden. Das Netzwerk erfährt nicht über das IGP von einem Pfad zu 2001:db8🅱️2::/64; daher würde ein Paket, das für 2001:db8🅱️2:101:: bestimmt ist, nicht bis zu N geroutet werden.
Ein Paket könnte durch eine non-routed SID 2001:db8🅱️2:101:: gesteuert werden, indem eine SID list (SID-Liste) <...,2001:db8🅱️1💯:,2001:db8🅱️2:101::,...> verwendet wird, bei der der non-routed SID eine routed SID zum selben Knoten vorausgeht. Ein Paket könnte auch zu einem Knoten gesteuert werden, der eine non-routed SID instanziiert, indem ihm in der SID-Liste eine Adj-SID zu diesem Knoten vorangestellt wird. Routed und non-routed SRv6 SIDs sind die SRv6-Instanziierung von global und local segments (globalen und lokalen Segmenten) [RFC8402].