Questo documento spiega perché Cisco IOS © IPv6 Provider Edge Router (6PE) utilizza due etichette Multiprotocol Label Switching (MPLS) nel piano dati.
Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.
R. 6PE utilizza due etichette:
L'etichetta superiore è l'etichetta di trasporto, alla quale viene assegnato hop per hop dal protocollo LDP (Label Distribution Protocol) o da MPLS traffic engineering (TE).
L'etichetta in basso è quella assegnata dal Border Gateway Protocol (BGP) e pubblicizzata dal BGP (iBGP) interno tra i router Provider Edge (PE).
Al momento del rilascio del 6PE, nessuno dei router principali MPLS (i router IP) doveva essere compatibile con IPv6. Questo requisito ha determinato la necessità di due etichette nel piano dati. Esistono due motivi per cui il 6PE richiede entrambe le etichette.
Funzionalità PHP
Se si utilizzasse solo l'etichetta di trasporto e se si utilizzasse il penultimate hop popping (PHP), il penultimo hop router (il router P) dovrebbe conoscere l'IPv6.
Con il PHP, questo penultimo router hop deve rimuovere l'etichetta MPLS e inoltrare il pacchetto come pacchetto IPv6. Questo router IP deve sapere che il pacchetto è IPv6 perché il router IP deve utilizzare il tipo di incapsulamento di layer 2 corretto per IPv6. (il tipo di incapsulamento è diverso per IPv6 e IPv4; ad esempio, per Ethernet, il tipo di incapsulamento è 0x86DD per IPv6, mentre è 0x0800 per IPv4.) Se il penultimo router hop non supporta IPv6, è probabile che per il pacchetto IPv6 venga impostato il tipo di incapsulamento di layer 2 per IPv4. Il router PE in uscita potrebbe quindi ritenere che il pacchetto sia IPv4.
L'elaborazione TTL (time-to-live) è disponibile sia nelle intestazioni IPv4 che nelle intestazioni IPv6. In IPv6 il campo è denominato Limite hop. I campi IPv4 e IPv6 si trovano in posizioni diverse nelle intestazioni. Inoltre, occorre modificare anche il checksum dell'intestazione IPv4; in IPv6 non è presente alcun campo Checksum dell'intestazione. Se il penultimo router dell'hop non supporta IPv6, il pacchetto IPv6 non avrà un formato valido perché il router si aspetta di trovare il campo TTL e il campo Checksum dell'intestazione nell'intestazione.
A causa di queste differenze, il penultimo router hop deve sapere che si tratta di un pacchetto IPv6. Come fa il router a sapere che il pacchetto è un pacchetto IPv6, dal momento che non ha assegnato un'etichetta alla classe FEC (Forwarding Equivalence Class) IPv6 e non è presente alcun campo di incapsulamento nell'intestazione MPLS? È possibile eseguire la ricerca del primo nibble dopo lo stack di etichette e determinare che il pacchetto è IPv6 se il valore è 6. Ciò implica tuttavia che il penultimo router hop deve essere compatibile con IPv6.
Questo scenario potrebbe funzionare se viene utilizzata l'etichetta Null esplicita (quindi non viene utilizzato alcun PHP). Tuttavia, la decisione è stata quella di richiedere il PHP.
Bilanciamento del carico
Il bilanciamento del carico tipico di un router IP segue questo processo. Il router IP raggiunge la fine dello stack di etichette e determina se è un pacchetto IPv4 guardando il primo nibble dopo lo stack di etichette.
Se il valore del nibble è 4, il payload MPLS è un pacchetto IPv4 e il router IP esegue il bilanciamento del carico eseguendo l'hashing degli indirizzi IPv4 di origine e destinazione.
Se il router IP supporta IPv6 e il valore del nibble è 6, il carico del router IP viene bilanciato eseguendo l'hashing degli indirizzi IPv6 di origine e di destinazione.
Se il router IP non supporta IPv6 e il valore del nibble non è 4 (potrebbe essere 6 se il pacchetto è IPv6), il router IP determina che non è un pacchetto IPv4 e prende la decisione di bilanciamento del carico in base all'etichetta inferiore.
Nello scenario 6PE, si immagini che due router PE in uscita pubblicizzino un prefisso IPv6 in BGP verso il router PE in entrata. Questo prefisso IPv6 verrebbe annunciato con due diverse etichette in BGP. Pertanto, nel piano dati, l'etichetta inferiore sarebbe una delle due etichette. Ciò consentirebbe a un router IP di bilanciare il carico sull'etichetta inferiore in base al flusso.
Se 6PE utilizzasse solo l'etichetta di trasporto per trasportare i pacchetti 6PE attraverso il core MPLS, i router IP non sarebbero in grado di bilanciare il carico di questi pacchetti per flusso a meno che i router IP non fossero compatibili con IPv6. Se i router IP sono compatibili con IPv6, possono utilizzare gli indirizzi IPv6 di origine e di destinazione per prendere una decisione di bilanciamento del carico.