5. Inoltro
5. Inoltro (Forwarding)
Se i router intermedi nel backbone non dispongono di alcuna informazione sulle route verso i vari VPN, come viene inoltrato un pacchetto (packet) da un sito VPN a un altro?
Quando un router PE riceve un pacchetto IP da un dispositivo CE, seleziona un particolare VRF in cui cercare l'indirizzo di destinazione del pacchetto. Tale selezione si basa sul circuito di attacco di ingresso (ingress attachment circuit) del pacchetto.
Supponiamo che venga trovata una corrispondenza; ne deriva il "next hop" (next hop) del pacchetto.
Se il next hop del pacchetto è raggiungibile direttamente da questo PE tramite un circuito di attacco VRF (cioè il circuito di attacco di uscita (egress attachment circuit) si trova sullo stesso PE di quello di ingresso), il pacchetto viene inviato a quel circuito di attacco, senza che alcuna etichetta MPLS venga inserita (push) nello stack di etichette (label stack) del pacchetto.
Se i circuiti di ingresso e di uscita si trovano sullo stesso PE ma sono associati a VRF diversi, e se la route nel VRF del circuito di ingresso che corrisponde meglio all'indirizzo di destinazione è un aggregato (aggregate) di molteplici route nel VRF del circuito di uscita, allora potrebbe essere necessaria una ricerca in questo VRF di uscita per l'indirizzo di destinazione del pacchetto.
Se il next hop del pacchetto non è raggiungibile tramite un circuito di attacco VRF, il pacchetto deve attraversare il backbone di almeno un salto. Ha quindi un "BGP Next Hop" (BGP Next Hop), e tale BGP Next Hop assegna un'etichetta (label) MPLS alla route che corrisponde meglio all'indirizzo di destinazione del pacchetto. Tale etichetta è detta "etichetta di route VPN" (VPN route label). Il pacchetto IP viene convertito in un pacchetto MPLS la cui unica etichetta nello stack è questa etichetta di route VPN.
Il pacchetto deve poi essere tunnelizzato (tunneled) verso tale BGP Next Hop.
Se il backbone supporta MPLS, ciò avviene nel modo seguente:
-
I router PE (e qualsiasi ASBR) devono inserire i propri prefissi di indirizzo /32 nella tabella di instradamento IGP del backbone quando ridistribuiscono gli indirizzi VPN-IPv4. Ciò consente a MPLS di assegnare un'etichetta per la route verso ciascun router PE in ciascun nodo del backbone. Per garantire l'interoperabilità (interoperability) tra diverse implementazioni, è richiesto il supporto di LDP per stabilire i percorsi di commutazione delle etichette (label switched path) attraverso il backbone. Possono tuttavia essere usati altri metodi per stabilire tali percorsi. (Alcuni di questi altri metodi potrebbero non richiedere la presenza di tali prefissi /32 nell'IGP.)
-
Se esistono tunnel con ingegneria del traffico (traffic engineering) verso tale BGP Next Hop, e uno o più di essi sono utilizzabili per il pacchetto, ne viene selezionato uno. Il tunnel è associato a un'etichetta MPLS, l'"etichetta di tunnel" (tunnel label). L'etichetta di tunnel viene inserita nello stack di etichette MPLS, e il pacchetto è inoltrato al next hop del tunnel.
-
Altrimenti:
-
Il pacchetto avrà un "IGP Next Hop" (IGP Next Hop), cioè il next hop lungo la route IGP verso il BGP Next Hop.
-
Se il BGP Next Hop coincide con l'IGP Next Hop e viene usata la tecnica di penultimate hop popping, il pacchetto viene inviato all'IGP Next Hop recante solo l'etichetta di route VPN.
-
Altrimenti, l'IGP Next Hop assegna un'etichetta per la route che corrisponde meglio all'indirizzo di destinazione del BGP Next Hop. Tale etichetta è detta "etichetta di tunnel". Essa viene inserita come etichetta in cima allo stack del pacchetto. Il pacchetto viene poi inoltrato all'IGP Next Hop.
-
-
MPLS trasporta quindi il pacchetto attraverso il backbone fino al BGP Next Hop, dove l'etichetta VPN viene esaminata.
Se il backbone non supporta MPLS, il pacchetto MPLS recante solo l'etichetta di route VPN può essere tunnelizzato verso il BGP Next Hop usando la tecnica di [MPLS-in-IP-GRE]. Quando il pacchetto emerge dal tunnel, si trova al BGP Next Hop, dove l'etichetta VPN viene esaminata.
Al BGP Next Hop, l'elaborazione del pacchetto dipende dall'etichetta di route VPN (vedere sezione 4.3.2). In molti casi, il PE sarà in grado di determinare da tale etichetta il circuito di attacco tramite cui il pacchetto deve essere trasmesso (verso un dispositivo CE) e l'header di livello 2 (data link layer) appropriato dell'interfaccia. In altri casi, il PE potrà determinare solo che il pacchetto deve essere cercato in un particolare VRF per il suo indirizzo di destinazione prima di essere trasmesso a un dispositivo CE. Vi sono anche casi intermedi: l'etichetta di route VPN può determinare il circuito di attacco di uscita, ma potrebbe essere necessaria un'ulteriore ricerca (ad esempio ARP) per determinare l'header di livello 2 su tale circuito.
Le informazioni dell'header MPLS stesso e/o le informazioni associate a tale etichetta possono anche essere usate per fornire qualità del servizio (QoS) sull'interfaccia verso il CE.
In ogni caso, se un pacchetto arriva al suo PE di ingresso come pacchetto IP non etichettato, ne ripartirà anche come pacchetto non etichettato.
Il fatto che i pacchetti recanti un'etichetta di route VPN siano tunnelizzati attraverso il backbone consente di mantenere tutte le route VPN fuori dai router P. Ciò è essenziale per garantire la scalabilità (scalability) dell'approccio.