In diesem Dokument wird erläutert, warum der Cisco IOS© IPv6 Provider Edge Router (6PE) zwei Multiprotocol Label Switching (MPLS)-Labels auf Datenebene verwendet.
Weitere Informationen zu Dokumentkonventionen finden Sie unter Cisco Technical Tips Conventions (Technische Tipps von Cisco zu Konventionen).
Antwort: 6PE verwendet zwei Labels:
Das oberste Label ist das Transport-Label, dem Hop-by-Hop über das Label Distribution Protocol (LDP) oder MPLS Traffic Engineering (TE) zugewiesen wird.
Das untere Label ist das vom Border Gateway Protocol (BGP) zugewiesene und vom internen BGP (iBGP) zwischen den Provider Edge (PE)-Routern angekündigte Label.
Als der 6PE veröffentlicht wurde, war eine Hauptanforderung, dass keiner der MPLS-Core-Router (die P-Router) IPv6-fähig sein musste. Aus diesem Grund waren zwei Labels auf Datenebene erforderlich. Es gibt zwei Gründe, warum die 6PE beide Labels benötigt.
PHP-Funktionalität
Wenn nur das Transportlabel verwendet würde und wenn Penultimate Hop Popping (PHP) verwendet würde, müsste der Penultimate Hop Router (der P-Router) IPv6 verstehen.
Bei PHP müsste dieser vorletzte Hop-Router das MPLS-Label entfernen und das Paket als IPv6-Paket weiterleiten. Dieser P-Router muss wissen, dass das Paket IPv6 ist, da der P-Router den richtigen Layer-2-Kapselungstyp für IPv6 verwenden muss. (Der Kapselungstyp ist bei IPv6 und IPv4 unterschiedlich. für Ethernet beispielsweise 0x86DD für IPv6 und 0x0800 für IPv4.) Wenn der vorletzte Hop-Router nicht IPv6-fähig ist, würde er wahrscheinlich den Layer-2-Kapselungstyp für IPv4 für das IPv6-Paket verwenden. Der Egress-PE-Router glaubt dann, dass das Paket IPv4 ist.
Sowohl im IPv4- als auch im IPv6-Header wird Time-to-Live (TTL) verarbeitet. In IPv6 wird das Feld als Hop Limit bezeichnet. Die Felder IPv4 und IPv6 befinden sich an verschiedenen Stellen im Header. Außerdem muss die Header-Prüfsumme im IPv4-Header geändert werden. In IPv6 gibt es kein Header-Prüfsummenfeld. Wenn der vorletzte Hop-Router nicht IPv6-fähig ist, würde dies zu einem fehlerhaften IPv6-Paket führen, da der Router erwartet, das TTL-Feld und das Header-Prüfsummenfeld im Header zu finden.
Aufgrund dieser Unterschiede muss der vorletzte Hop-Router wissen, dass es sich um ein IPv6-Paket handelt. Woher weiß dieser Router, dass es sich bei dem Paket um ein IPv6-Paket handelt, da er der IPv6 Forwarding Equivalence Class (FEC) kein Label zugewiesen hat und im MPLS-Header kein Kapselungsfeld vorhanden ist? Es könnte nach dem ersten Nibble nach dem Label-Stack suchen und ermitteln, dass das Paket IPv6 ist, wenn der Wert 6 ist. Dies impliziert jedoch, dass der vorletzte Hop-Router IPv6-fähig sein muss.
Dieses Szenario könnte funktionieren, wenn das explizite Null-Label verwendet wird (daher kein PHP). Die Entscheidung war jedoch, PHP zu verlangen.
Lastenausgleich
Dieser Prozess wird für den typischen Lastenausgleich auf einem P-Router verwendet. Der P-Router geht zum Ende des Label-Stacks und ermittelt, ob es sich um ein IPv4-Paket handelt, indem er den ersten Nibble nach dem Label-Stack betrachtet.
Wenn der Nibble-Wert 4 beträgt, ist die MPLS-Nutzlast ein IPv4-Paket, und der P-Router gleicht die Last durch Hashing der Quell- und Ziel-IPv4-Adressen aus.
Wenn der P-Router IPv6-fähig ist und der Wert des Nibble-Werts 6 beträgt, gleicht der P-Router die Last aus, indem er die Quell- und Ziel-IPv6-Adressen hasht.
Wenn der P-Router nicht IPv6-fähig ist und der Wert des Nibble-Werts nicht 4 beträgt (bei einem IPv6-Paket kann es sich um 6 handeln), stellt der P-Router fest, dass es sich nicht um ein IPv4-Paket handelt, und trifft die Entscheidung für den Lastenausgleich auf Grundlage des unteren Labels.
Im Szenario mit 6 PE stellen Sie sich vor, dass zwei Ausgangs-PE-Router ein IPv6-Präfix im BGP dem Eingangs-PE-Router melden. Dieses IPv6-Präfix würde im BGP mit zwei unterschiedlichen Labels angekündigt. In der Datenebene wäre das untere Label also eines der beiden Labels. Dies würde es einem P-Router ermöglichen, den Lastenausgleich auf Basis des unteren Labels für jeden Fluss durchzuführen.
Wenn 6PE nur das Transport-Label zum Transport der 6PE-Pakete durch den MPLS-Core verwendet, können die P-Router diese Pakete nicht auf Flow-Basis ausgleichen, es sei denn, die P-Router sind IPv6-fähig. Wären die P-Router IPv6-fähig, könnten sie die Quell- und Ziel-IPv6-Adressen verwenden, um eine Lastverteilungsentscheidung zu treffen.