Dit document verklaart waarom de Cisco IOS© IPv6 Provider Edge-router (6PE) twee Multiprotocol Label Switching (MPLS)-labels in het gegevensvlak gebruikt.
A. 6PE gebruikt twee labels:
Het hoogste etiket is het vervoeretiket, dat hop-door-hop door het Protocol van de Verdeling van het Etiket (LDP) of door MPLS Traffic Engineering (TE) wordt toegewezen.
Het onderste etiket is het etiket dat wordt toegewezen door het BGP-protocol (BGP) en dat wordt geadverteerd door de interne BGP-router (iBGP) tussen de Provider Edge-routers (PE).
Toen de 6PE werd uitgebracht, was een belangrijke vereiste dat geen van de MPLS-kernrouters (de P-routers) IPv6-bewust moest zijn. Dat vereiste heeft geleid tot de behoefte aan twee etiketten in het gegevensvlak. Er zijn twee redenen waarom de 6PE beide labels nodig heeft.
PHP-functionaliteit
Als alleen het transportlabel werd gebruikt, en als voorlaatste hop popping (PHP) werd gebruikt, zou de voorlaatste hop router (de P router) IPv6 moeten begrijpen.
Met PHP zou deze voorlaatste hop router het MPLS label moeten verwijderen en het pakket door moeten sturen als IPv6 pakket. Deze IP-router moet weten dat het pakket IPv6 is, omdat de IP-router het juiste Layer 2-inkapselingstype voor IPv6 moet gebruiken. (Het inkapselingstype is anders voor IPv6 en IPv4; bijvoorbeeld, voor Ethernet, is het inkapselingstype 0x86DD voor IPv6, terwijl het 0x0800 voor IPv4 is.) Als de voorlaatste hop router niet IPv6-geschikt is, zou het waarschijnlijk Layer 2 inkapselingstype voor IPv4 voor het IPv6 pakket zetten. De uitgaande PE router zou dan geloven dat het pakket IPv4 was.
Er is time-to-live (TTL) verwerking in zowel de IPv4 als IPv6 headers. In IPv6 heet dit veld Hoplimiet. De IPv4- en IPv6-velden bevinden zich op verschillende locaties in de kopregels. Ook moet de Header Checksum in de IPv4 header gewijzigd worden; er is geen veld voor de checksum van de header in IPv6. Als de voorlaatste hop router niet geschikt is voor IPv6, zou het IPv6-pakket misvormd raken omdat de router verwacht het veld TTL en het veld voor de checksum van de header te vinden in de header.
Wegens deze verschillen, zou de voorlaatste hoprouter moeten weten het een IPv6 pakket is. Hoe zou deze router weten dat het pakket een IPv6-pakket is, omdat er geen label is toegewezen aan de IPv6 Forwarding Equivalence Class (FEC) en er geen inkapselingsveld is in de MPLS-header? Het kan scannen naar de eerste nibble na de labelstack en bepalen dat het pakket IPv6 is als de waarde 6 is. Dat impliceert echter dat de voorlaatste hop router IPv6-geschikt moet zijn.
Dit scenario zou kunnen werken als het expliciete null label wordt gebruikt (vandaar geen PHP). De beslissing was echter om PHP te gebruiken.
Taakverdeling
De typische taakverdeling op een IP-router volgt dit proces. De IP-router gaat naar het einde van de labelstack en bepaalt of het een IPv4-pakket is door naar de eerste nibble na de labelstack te kijken.
Als de nibble een waarde van 4 heeft, is de MPLS-payload een IPv4-pakket en de IP-router-load-saldi door de IPv4-adressen van de bron en van de bestemming te hasken.
Als de IP-router IPv6-compatibel is en de waarde van de nibble 6 is, wordt de IP-router belast door de IPv6-adressen van de bron en van de bestemming te hakken.
Als de IP-router niet geschikt is voor IPv6 en de waarde van de nibble niet 4 is (dit kan 6 zijn als het pakket een IPv6-pakket is), bepaalt de IP-router of het geen IPv4-pakket is en neemt hij het besluit over de taakverdeling op basis van het onderste label.
In het 6PE scenario, stel je voor dat er twee uitgang PE routers zijn die één IPv6 prefix in BGP adverteren naar de ingang PE router. Dit IPv6 prefix zou geadverteerd worden met twee verschillende labels in BGP. Vandaar, in het gegevensvlak, zou het bodemetiket één van beide etiketten zijn. Dit zou een router van P om saldo op het bodemetiket op een per-stroombasis toe te staan laden.
Als 6PE slechts het vervoeretiket gebruikte om de 6PE pakketten door de kern van MPLS te vervoeren, zouden de routers van P niet deze pakketten op een per-stroombasis kunnen laden, tenzij de routers IPv6-geschikt waren. Als de IP-routers IPv6-compatibel waren, konden ze de IPv6-adressen van de bron en de bestemming gebruiken om een taakverdeling te maken.