3. IPv6-VPN-Routenverteilung
3.1. Routenverteilung zwischen PEs über BGP
Wie in [BGP/MPLS-VPN] beschrieben, können diese PEs, wenn zwei Sites eines VPN mit PEs im selben autonomen System verbunden sind, VPN-Routen über ihre (IPv4-)iBGP-Verbindung (Internal Border Gateway Protocol) untereinander verteilen. Alternativ kann jeder PE eine iBGP-Verbindung zu einem Route Reflector herstellen. Ebenso können die PEs für die IPv6-VPN-Routenverteilung ihre iBGP-Verbindung untereinander oder eine iBGP-Verbindung zu einem Route Reflector verwenden. Für das IPv6-VPN kann die iBGP-Verbindung auf IPv4 oder IPv6 basieren.
Die PE-Router tauschen über MP-BGP [BGP-MP] die Erreichbarkeitsinformationen der IPv6-Präfixe im IPv6-VPN aus und kündigen sich entsprechend als BGP-Next-Hop (BGP Next Hop) an.
Die Codierung der Erreichbarkeitsinformationen und die Regeln für die BGP-Next-Hop-Adresse sind in den folgenden Abschnitten festgelegt.
3.2. Codierung der VPN-IPv6-NLRI
Bei der Verteilung von IPv6-VPN-Routen MUSS der ankündigende PE-Router diese Routen ein MPLS-Label zuweisen und verteilen. Im Wesentlichen verteilt der PE-Router keine gewöhnliche IPv6-VPN-Route, sondern eine mit Label versehene IPv6-VPN-Route [MPLS-BGP]. Wenn der ankündigende PE ein Paket empfängt, das das angekündigte Label trägt, poppt der PE dieses Label vom MPLS-Stack und verarbeitet das Paket entsprechend (d. h. direkte Weiterleitung basierend auf dem Label oder Nachschlagen im entsprechenden IPv6-VPN-Kontext).
Die BGP-Multiprotokoll-Erweiterungen [BGP-MP] werden verwendet, um die IPv6-VPN-Routen in der MP_REACH-NLRI (Network Layer Reachability Information) anzukündigen. Die Felder für die Adressfamilienkennung (AFI) und die nachfolgende Adressfamilienkennung (SAFI) MÜSSEN wie folgt gesetzt werden:
-
AFI: 2; für IPv6
-
SAFI: 128; für VPN-IPv6 mit MPLS-Label
Die Codierung des NLRI-Feldes selbst ist in [MPLS-BGP] festgelegt. Im Kontext dieser Erweiterung gehört das Präfix zur IPv6-VPN-Adressfamilie und besteht daher aus einem 8-Byte-Route-Distinguisher, gefolgt vom IPv6-Präfix wie in Abschnitt 2 oben beschrieben.
3.2.1. Codierung des BGP-Next-Hop
Die Codierung des BGP-Next-Hop hängt von der Richtlinie des BGP-Speakers ab: Fordert er, dass der IPv6-VPN-Verkehr zu diesem BGP-Next-Hop über einen IPv6-Tunnel („IPv6-Transport anfordernder BGP-Speaker") transportiert wird, oder über einen IPv4-Tunnel („IPv4-Transport anfordernder BGP-Speaker")?
Die Definition dieser Richtlinie (Anforderung von Transport über einen IPv4- oder IPv6-Tunnel) liegt in der Verantwortung des Netzbetreibers und liegt außerhalb des Anwendungsbereichs dieses Dokuments. Beachten Sie, dass diese Richtlinie die Anforderung eines Transports über einen IPv4- (bzw. IPv6-)Tunnel vorgeben kann, während der BGP-Speaker gleichzeitig die IPv6-VPN-Erreichbarkeitsinformationen über IPv6 (bzw. IPv4) austauscht. In diesem Fall gibt es jedoch einige betriebliche Aspekte, die zu berücksichtigen sind. Insbesondere kann ein unentdeckter Fehler, der den IPv4- (bzw. IPv6-)Tunnel-Datenpfad betrifft, aber nicht den IPv6- (bzw. IPv4-)Datenpfad, von BGP möglicherweise nicht erkannt werden und so zu einem Black Hole für den Datenverkehr führen.
Die Steuerung dieser Richtlinie liegt außerhalb des Anwendungsbereichs dieses Dokuments und kann auf Basis einer Benutzerkonfiguration erfolgen.
3.2.1.1. IPv6-Transport anfordernder BGP-Speaker
Wenn der IPv6-VPN-Verkehr über einen IPv6-Tunnel (z. B. IPv6-MPLS-LSP, durch IPsec geschützter IPv6-Tunnel) zum BGP-Speaker transportiert werden soll, SOLLTE der BGP-Speaker ein Feld für die Next-Hop-Netzwerkadresse ankündigen, das eine IPv6-VPN-Adresse enthält:
-
deren 8-Byte-RD auf Null gesetzt ist, und
-
deren 16-Byte-IPv6-Adresse auf die globale IPv6-Adresse des ankündigenden BGP-Speakers gesetzt ist.
Es kann eine weitere IPv6-VPN-Adresse folgen:
-
deren 8-Byte-RD auf Null gesetzt ist, und
-
deren 16-Byte-IPv6-Adresse auf die link-lokale IPv6-Adresse des ankündigenden BGP-Speakers gesetzt ist.
Im MP_REACH_NLRI-Attribut SOLLTE der Wert für die Länge des Feldes für die Next-Hop-Netzwerkadresse auf 24 (wenn nur die globale Adresse vorhanden ist) bzw. auf 48 (wenn die link-lokale Adresse ebenfalls im Next-Hop-Feld enthalten ist) gesetzt werden.
Wenn der BGP-Speaker nur seine link-lokale IPv6-Adresse verwendet (z. B. wenn der IPv6-CE mit dem IPv6-PE ein Peering eingeht, der CE keine globale IPv6-Adresse besitzt und das eBGP-Peering über die link-lokale Adresse realisiert wird), verwendet der ankündigende BGP-Speaker die „nicht spezifizierte Adresse" ([V6ADDR]), um das Fehlen der globalen IPv6-Adresse im Feld für die Next-Hop-Netzwerkadresse darzustellen.
Das Next-Hop-Feld enthält eine link-lokale Adresse nur dann, wenn der ankündigende BGP-Speaker und der Peer der angekündigten Route ein gemeinsames Subnetz teilen [BGP-IPv6].
In allen anderen Fällen kündigt der BGP-Speaker seinem Peer im Feld für die Next-Hop-Netzwerkadresse nur die globale IPv6-Adresse des Next-Hop an.
Daher KANN ein BGP-Speaker, der eine Route an einen internen Peer ankündigt, das Feld für die Next-Hop-Netzwerkadresse ändern, indem er die link-lokale IPv6-Adresse des Next-Hop entfernt.
Ein Beispielszenario, das die Aufnahme sowohl der globalen als auch der link-lokalen IPv6-Adresse in das BGP-Next-Hop-Adressfeld erfordert, ist die Bereitstellung eines IPv6-VPN-Dienstes über einen Multi-AS-Backbone (autonomes System), bei dem mit Label versehene IPv6-VPN-Routen zwischen den ASBRs (Autonomous System Boundary Routers) verschiedener AS (die ein gemeinsames IPv6-Subnetz teilen) neu verteilt werden; in diesem Fall SOLLTEN die ASBRs sowohl die globale als auch die link-lokale IPv6-Adresse ankündigen.
3.2.1.2. IPv4-Transport anfordernder BGP-Speaker
Wenn der IPv6-VPN-Verkehr über einen IPv4-Tunnel (z. B. IPv4-MPLS-LSP, durch IPsec geschützter IPv4-Tunnel) zum BGP-Speaker transportiert werden soll, SOLLTE der BGP-Speaker seinem Peer ein Feld für die Next-Hop-Netzwerkadresse ankündigen, das eine IPv6-VPN-Adresse enthält:
-
deren 8-Byte-RD auf Null gesetzt ist, und
-
deren 16-Byte-IPv6-Adresse als eine in IPv4 gemappte IPv6-Adresse [V6ADDR] codiert ist, die die IPv4-Adresse des ankündigenden BGP-Speakers enthält. Diese IPv4-Adresse MUSS für andere BGP-Speaker routbar sein.
3.3. Route Target
Die Verwendung von Route Target ist in [BGP/MPLS-VPN] festgelegt und gilt für IPv6-VPNs. Die Codierung des Extended-Community-Attributs ist in [BGP-EXTCOM] definiert.
3.4. BGP-Capability-Aushandlung
Damit zwei PEs mit Label versehene IPv6-VPN-NLRI austauschen können, MÜSSEN sie die BGP-Capability-Aushandlung verwenden, um sicherzustellen, dass beide diese NLRI korrekt verarbeiten können. Das Verfahren ist in [BGP-MP] und [BGP-CAP] festgelegt, nämlich die Verwendung der Capability-Nummer 1 (Multiprotocol BGP) mit den in Abschnitt 3.2 oben angegebenen AFI- und SAFI-Werten.