Appendix B. Examples (Esempi)
Appendix B. Examples (Esempi)
B.1 Gateway-Based Architecture (Architettura basata su gateway)
Questa architettura è mirata ai dispiegamenti broadband residenziali ma può essere adattata facilmente ad altri tipi di dispiegamento dove la base installata di dispositivi solo IPv4 è importante.
Considerare uno scenario in cui un CPE Dual-Stack Lite è fornito solo con IPv6 sulla porta WAN, non IPv4. Il CPE agisce come server DHCP IPv4 per la LAN (cablate e wireless) assegnando indirizzi [RFC1918]. Inoltre, il CPE può supportare IPv6 Auto-Configuration e/o un server DHCPv6 per la LAN. Quando un dispositivo solo IPv4 si collega al CPE, quel CPE assegnerà un indirizzo [RFC1918] al dispositivo. Quando un dispositivo dual-stack-capable si collega al CPE, quel CPE assegnerà un indirizzo [RFC1918] e un indirizzo IPv6 globale al dispositivo. Inoltre, il CPE creerà un tunnel softwire IPv4-in-IPv6 [RFC5571] verso un AFTR che risiede nella rete del service provider.
Quando il dispositivo accede al servizio IPv6, invierà il datagramma IPv6 al CPE in modo nativo. Il CPE instraderà il traffico a monte verso il gateway IPv6 predefinito.
Quando il dispositivo accede al servizio IPv4, originerà il datagramma IPv4 con l'indirizzo [RFC1918] e invierà il datagramma IPv4 al CPE. Il CPE incapsulerà il datagramma IPv4 dentro il tunnel softwire IPv4-in-IPv6 e inoltrerà il datagramma IPv6 all'AFTR. Ciò è in contrasto con ciò che il CPE fa normalmente oggi, che è NAT dell'indirizzo [RFC1918] verso l'indirizzo IPv4 pubblico e instradare il datagramma a monte. Quando l'AFTR riceve il datagramma IPv6, decapsulerà l'intestazione IPv6 ed eseguirà un NAT IPv4-to-IPv4 sull'indirizzo sorgente.
Come illustrato nella Figura 1, questo modello di dispiegamento Dual-Stack Lite consiste di tre componenti: il router domestico Dual-Stack Lite con un elemento B4, l'AFTR e un softwire tra l'elemento B4 che agisce come softwire initiator (SI) [RFC5571] nel router domestico Dual-Stack Lite e il softwire concentrator (SC) [RFC5571] nell'AFTR. L'AFTR esegue traduzioni NAT IPv4-IPv4 per multiplexare più abbonati attraverso un pool di indirizzi IPv4 globali. Gli spazi di indirizzi sovrapposti usati dagli abbonati sono disambiguati tramite l'identificazione degli endpoint del tunnel.
+-----------+
| Host |
+-----+-----+
|10.0.0.1
|
|
|10.0.0.2
+---------|---------+
| | |
| Home router |
|+--------+--------+|
|| B4 ||
|+--------+--------+|
+--------|||--------+
|||2001:db8:0:1::1
|||
|||<-IPv4-in-IPv6 softwire
|||
-------|||-------
/ ||| \
| ISP core network |
\ ||| /
-------|||-------
|||
|||2001:db8:0:2::1
+--------|||--------+
| AFTR |
|+--------+--------+|
|| Concentrator ||
|+--------+--------+|
| |NAT| |
| +-+-+ |
+---------|---------+
|192.0.2.1
|
--------|--------
/ | \
| Internet |
\ | /
--------|--------
|
|198.51.100.1
+-----+-----+
| IPv4 Host |
+-----------+
Figure 1: Gateway-Based Architecture
Note:
-
Il router domestico Dual-Stack Lite non è richiesto di essere sullo stesso link dell'host.
-
Il router domestico Dual-Stack Lite potrebbe essere sostituito da un router Dual-Stack Lite nella rete del service provider.
La soluzione risultante accetta un datagramma IPv4 che è tradotto in un datagramma softwire IPv4-in-IPv6 per la trasmissione sul softwire. All'endpoint corrispondente, il datagramma IPv4 è decapsulato e l'indirizzo IPv4 tradotto è inserito in base a una traduzione dal softwire.
B.1.1 Example Message Flow (Esempio di flusso dei messaggi)
Nell'esempio mostrato nella Figura 2, le tabelle di traduzione nell'AFTR sono configurate per inoltrare tra IP/TCP (10.0.0.1/10000) e IP/TCP (192.0.2.1/5000). Cioè, un datagramma ricevuto dal router domestico Dual-Stack Lite dall'host all'indirizzo 10.0.0.1, usando la porta TCP DST 10000, sarà tradotto in un datagramma con indirizzo IPv4 SRC 192.0.2.1 e porta TCP SRC 5000 in Internet.
+-----------+
| Host |
+-----+-----+
| |10.0.0.1
IPv4 datagram 1 | |
| |
v |10.0.0.2
+---------|---------+
| | |
| home router |
|+--------+--------+|
|| B4 ||
|+--------+--------+|
+--------|||--------+
| |||2001:db8:0:1::1
IPv6 datagram 2| |||
| |||<-IPv4-in-IPv6 softwire
-----|-|||-------
/ | ||| \
| ISP core network |
\ | ||| /
-----|-|||-------
| |||
| |||2001:db8:0:2::1
+------|-|||--------+
| | AFTR |
| v ||| |
|+--------+--------+|
|| Concentrator ||
|+--------+--------+|
| |NAT| |
| +-+-+ |
+---------|---------+
| |192.0.2.1
IPv4 datagram 3 | |
| |
-----|--|--------
/ | | \
| Internet |
\ | | /
-----|--|--------
| |
v |198.51.100.1
+-----+-----+
| IPv4 Host |
+-----------+
Figure 2: Outbound Datagram
| Datagramma | Campo intestazione | Contenuti |
|---|---|---|
| IPv4 datagram 1 | IPv4 Dst | 198.51.100.1 |
| IPv4 datagram 1 | IPv4 Src | 10.0.0.1 |
| IPv4 datagram 1 | TCP Dst | 80 |
| IPv4 datagram 1 | TCP Src | 10000 |
| IPv6 datagram 2 | IPv6 Dst | 2001:db8:0:2::1 |
| IPv6 datagram 2 | IPv6 Src | 2001:db8:0:1::1 |
| IPv6 datagram 2 | IPv4 Dst | 198.51.100.1 |
| IPv6 datagram 2 | IPv4 Src | 10.0.0.1 |
| IPv6 datagram 2 | TCP Dst | 80 |
| IPv6 datagram 2 | TCP Src | 10000 |
| IPv4 datagram 3 | IPv4 Dst | 198.51.100.1 |
| IPv4 datagram 3 | IPv4 Src | 192.0.2.1 |
| IPv4 datagram 3 | TCP Dst | 80 |
| IPv4 datagram 3 | TCP Src | 5000 |
Contenuti delle intestazioni dei datagrammi
Quando il datagramma 1 è ricevuto dal router domestico Dual-Stack Lite, l'elemento B4 incapsula il datagramma nel datagramma 2 e lo inoltra al NAT carrier-grade Dual-Stack Lite sul softwire.
Quando il concentratore del tunnel nell'AFTR riceve il datagramma 2, inoltra il datagramma IPv4 al NAT, che determina dalla sua tabella NAT che il datagramma ricevuto sul softwire con porta TCP SRC 10000 deve essere tradotto nel datagramma 3 con indirizzo IPv4 SRC 192.0.2.1 e porta TCP SRC 5000.
La Figura 3 mostra un messaggio in entrata ricevuto all'AFTR. Quando la funzione NAT nell'AFTR riceve il datagramma 1, cerca le informazioni IP/TCP DST nella sua tabella di traduzione. Nell'esempio nella Figura 3, il NAT cambia la porta TCP DST in 10000, imposta l'indirizzo IP DST a 10.0.0.1 e inoltra il datagramma al softwire. Il B4 nel router domestico decapsula il datagramma IPv4 dal datagramma softwire in entrata e lo inoltra all'host.
+-----------+
| Host |
+-----+-----+
^ |10.0.0.1
IPv4 datagram 3 | |
| |
| |10.0.0.2
+---------|---------+
| +-+-+ |
| home router |
|+--------+--------+|
|| B4 ||
|+--------+--------+|
+--------|||--------+
^ |||2001:db8:0:1::1
IPv6 datagram 2 | |||
| |||<-IPv4-in-IPv6 softwire
| |||
-----|-|||-------
/ | ||| \
| ISP core network |
\ | ||| /
-----|-|||-------
| |||
| |||2001:db8:0:2::1
+------|-|||--------+
| AFTR |
|+--------+--------+|
|| Concentrator ||
|+--------+--------+|
| |NAT| |
| +-+-+ |
+---------|---------+
^ |192.0.2.1
IPv4 datagram 1 | |
| |
-----|--|--------
/ | | \
| Internet |
\ | | /
-----|--|--------
| |
| |198.51.100.1
+-----+-----+
| IPv4 Host |
+-----------+
Figure 3: Inbound Datagram
| Datagramma | Campo intestazione | Contenuti |
|---|---|---|
| IPv4 datagram 1 | IPv4 Dst | 192.0.2.1 |
| IPv4 datagram 1 | IPv4 Src | 198.51.100.1 |
| IPv4 datagram 1 | TCP Dst | 5000 |
| IPv4 datagram 1 | TCP Src | 80 |
| IPv6 datagram 2 | IPv6 Dst | 2001:db8:0:1::1 |
| IPv6 datagram 2 | IPv6 Src | 2001:db8:0:2::1 |
| IPv6 datagram 2 | IPv4 Dst | 10.0.0.1 |
| IPv6 datagram 2 | IPv4 Src | 198.51.100.1 |
| IPv6 datagram 2 | TCP Dst | 10000 |
| IPv6 datagram 2 | TCP Src | 80 |
| IPv4 datagram 3 | IPv4 Dst | 10.0.0.1 |
| IPv4 datagram 3 | IPv4 Src | 198.51.100.1 |
| IPv4 datagram 3 | TCP Dst | 10000 |
| IPv4 datagram 3 | TCP Src | 80 |
Contenuti delle intestazioni dei datagrammi
B.1.2 Translation Details (Dettagli della traduzione)
L'AFTR ha un NAT che traduce tra coppie softwire/porta e coppie indirizzo-IPv4/porta. La stessa traduzione è applicata ai datagrammi IPv4 ricevuti sull'interfaccia esterna del dispositivo e dall'endpoint softwire nel dispositivo.
Nella Figura 2, l'interfaccia di rete del traduttore nell'AFTR è su Internet, e l'interfaccia softwire collega il router domestico Dual-Stack Lite. Il traduttore AFTR è configurato come segue:
Interfaccia di rete: tradurre indirizzo IPv4 di destinazione e porta TCP di destinazione nell'identificatore softwire e porta TCP di destinazione
Interfaccia softwire: tradurre identificatore softwire e porta TCP sorgente in indirizzo IPv4 sorgente e porta TCP sorgente
Ecco come funziona la traduzione nella Figura 3:
-
Il datagramma 1 è ricevuto sull'interfaccia di rete del traduttore AFTR. Il traduttore cerca la coppia indirizzo-IPv4/porta nella sua tabella di traduzione, riscrive l'indirizzo IPv4 di destinazione a 10.0.0.1 e la porta TCP sorgente a 10000, e inoltra il datagramma al softwire.
-
Il datagramma IPv4 è ricevuto sul B4 del router domestico Dual-Stack Lite. La funzione B4 estrae il datagramma IPv4, e il router domestico Dual-Stack Lite inoltra il datagramma 3 all'host.
| Softwire-Id/IPv4/Prot/Porta | IPv4/Prot/Porta |
|---|---|
| 2001:db8:0:1::1/10.0.0.1/TCP/10000 | 192.0.2.1/TCP/5000 |
Tabella di traduzione del NAT carrier-grade Dual-Stack Lite
Il Softwire-Id è l'indirizzo IPv6 assegnato al CPE Dual-Stack Lite. Gli host dietro lo stesso router domestico Dual-Stack Lite hanno lo stesso Softwire-Id. L'indirizzo IPv4 sorgente è l'indirizzo [RFC1918] assegnato dal router domestico Dual-Stack ed è unico per ogni host dietro il CPE. L'AFTR riceverebbe pacchetti originati da indirizzi IPv4 diversi nello stesso tunnel softwire. L'AFTR combina Softwire-Id e indirizzo/porta IPv4 [Softwire-Id, IPv4+Porta] per identificare univocamente l'host dietro lo stesso router domestico Dual-Stack Lite.
B.2 Host-Based Architecture (Architettura basata su host)
Questa architettura è mirata a nuovi dispiegamenti su larga scala di dispositivi dual-stack-capable che implementano un'interfaccia Dual-Stack Lite.
Considerare uno scenario in cui un dispositivo host Dual-Stack Lite è collegato direttamente alla rete del service provider. Il dispositivo host è dual-stack capable ma fornito solo con un indirizzo globale IPv6. Inoltre, il dispositivo host pre-configurerà un indirizzo IPv4 ben noto non instradabile; vedere la sezione 10 (Considerazioni IANA). Tale indirizzo IPv4 ben noto non instradabile è simile all'indirizzo di loopback 127.0.0.1. Ogni dispositivo host che implementa Dual-Stack Lite pre-configurerà lo stesso indirizzo. Tale indirizzo sarà usato per originare il datagramma IPv4 quando il dispositivo accede ai servizi IPv4. Inoltre, il dispositivo host creerà un tunnel softwire IPv4-in-IPv6 verso un AFTR. Il NAT carrier-grade risiederà nella rete del service provider.
Quando il dispositivo accede al servizio IPv6, invierà il datagramma IPv6 in modo nativo al gateway predefinito.
Quando il dispositivo accede al servizio IPv4, originerà il datagramma IPv4 con l'indirizzo IPv4 ben noto non instradabile. Quindi, il dispositivo host incapsulerà il datagramma IPv4 dentro il tunnel softwire IPv4-in-IPv6 e invierà il datagramma IPv6 all'AFTR. Quando l'AFTR riceve il datagramma IPv6, decapsulerà l'intestazione IPv6 ed eseguirà NAT IPv4-to-IPv4 sull'indirizzo sorgente.
Questo scenario funziona sia su reti cablate sia wireless. Un tipico dispositivo wireless si collega direttamente al service provider senza un CPE interposto.
Come illustrato nella Figura 4, questo modello di dispiegamento Dual-Stack Lite consiste di tre componenti: l'host Dual-Stack Lite, l'AFTR e un softwire tra il softwire initiator B4 nell'host e il softwire concentrator nell'AFTR. Si assume che l'host Dual-Stack Lite abbia servizio IPv6 e possa scambiare traffico IPv6 con l'AFTR.
L'AFTR esegue traduzioni NAT IPv4-IPv4 per multiplexare più abbonati attraverso un pool di indirizzi IPv4 globali. Gli spazi di indirizzi IPv4 sovrapposti usati dagli host Dual-Stack Lite sono disambiguati tramite l'identificazione degli endpoint del tunnel.
In questa situazione, l'host Dual-Stack Lite configura l'indirizzo IPv4 192.0.0.2 dall'intervallo ben noto 192.0.0.0/29 (definito dall'IANA) sulla sua interfaccia B4. Configura anche il primo indirizzo IPv4 non riservato dell'intervallo riservato, 192.0.0.1, come indirizzo del suo gateway predefinito.
+-------------------+
| |
| Host 192.0.0.2 |
|+--------+--------+|
|| B4 ||
|+--------+--------+|
+--------|||--------+
|||2001:db8:0:1::1
|||
|||<-IPv4-in-IPv6 softwire
|||
-------|||-------
/ ||| \
| ISP core network |
\ ||| /
-------|||-------
|||
|||2001:db8:0:2::1
+--------|||--------+
| AFTR |
|+--------+--------+|
|| Concentrator ||
|+--------+--------+|
| |NAT| |
| +-+-+ |
+---------|---------+
|192.0.2.1
|
--------|--------
/ | \
| Internet |
\ | /
--------|--------
|
|198.51.100.1
+-----+-----+
| IPv4 Host |
+-----------+
Figure 4: Host-Based Architecture
La soluzione risultante accetta un datagramma IPv4 che è tradotto in un datagramma softwire IPv4-in-IPv6 per la trasmissione sul softwire. All'endpoint corrispondente, il datagramma IPv4 è decapsulato e l'indirizzo IPv4 tradotto è inserito in base a una traduzione dal softwire.
B.2.1 Example Message Flow (Esempio di flusso dei messaggi)
Nell'esempio mostrato nella Figura 5, le tabelle di traduzione nell'AFTR sono configurate per inoltrare tra IP/TCP (192.0.0.2/10000) e IP/TCP (192.0.2.1/5000). Cioè, un datagramma ricevuto dall'host all'indirizzo 192.0.0.2, usando la porta TCP DST 10000, sarà tradotto in un datagramma con indirizzo IPv4 SRC 192.0.2.1 e porta TCP SRC 5000 in Internet.
+-------------------+
| |
|Host 192.0.0.2 |
|+--------+--------+|
|| B4 ||
|+--------+--------+|
+--------|||--------+
| |||2001:db8:0:1::1
IPv6 datagram 1| |||
| |||<-IPv4-in-IPv6 softwire
| |||
-----|-|||-------
/ | ||| \
| ISP core network |
\ | ||| /
-----|-|||-------
| |||
| |||2001:db8:0:2::1
+------|-|||--------+
| | AFTR |
| v ||| |
|+--------+--------+|
|| Concentrator ||
|+--------+--------+|
| |NAT| |
| +-+-+ |
+---------|---------+
| |192.0.2.1
IPv4 datagram 2 | |
-----|--|--------
/ | | \
| Internet |
\ | | /
-----|--|--------
| |
v |198.51.100.1
+-----+-----+
| IPv4 Host |
+-----------+
Figure 5: Outbound Datagram
| Datagramma | Campo intestazione | Contenuti |
|---|---|---|
| IPv6 datagram 1 | IPv6 Dst | 2001:db8:0:2::1 |
| IPv6 datagram 1 | IPv6 Src | 2001:db8:0:1::1 |
| IPv6 datagram 1 | IPv4 Dst | 198.51.100.1 |
| IPv6 datagram 1 | IPv4 Src | 192.0.0.2 |
| IPv6 datagram 1 | TCP Dst | 80 |
| IPv6 datagram 1 | TCP Src | 10000 |
| IPv4 datagram 2 | IPv4 Dst | 198.51.100.1 |
| IPv4 datagram 2 | IPv4 Src | 192.0.2.1 |
| IPv4 datagram 2 | TCP Dst | 80 |
| IPv4 datagram 2 | TCP Src | 5000 |
Contenuti delle intestazioni dei datagrammi
Quando invia un pacchetto IPv4, l'host Dual-Stack Lite lo incapsula nel datagramma 1 e lo inoltra all'AFTR sul softwire.
Quando riceve il datagramma 1, il concentratore nell'AFTR passa il datagramma IPv4 al NAT, che determina dalla sua tabella di traduzione che il datagramma ricevuto sul softwire con porta TCP SRC 10000 deve essere tradotto nel datagramma 2 con indirizzo IPv4 SRC 192.0.2.1 e porta TCP SRC 5000.
La Figura 6 mostra un messaggio in entrata ricevuto all'AFTR. Quando la funzione NAT nell'AFTR riceve il datagramma 1, cerca IP/TCP DST nella sua tabella di traduzione. Nell'esempio nella Figura 6, il NAT traduce la porta TCP DST in 10000, imposta l'indirizzo IP DST a 192.0.0.2 e inoltra il datagramma al softwire. Il B4 dentro l'host decapsula il datagramma IPv4 dal datagramma softwire in entrata e lo inoltra al livello applicativo dell'host.
+-------------------+
| |
|Host 192.0.0.2 |
|+--------+--------+|
|| B4 ||
|+--------+--------+|
+--------|||--------+
^ |||2001:db8:0:1::1
IPv6 datagram 2 | |||
| |||<-IPv4-in-IPv6 softwire
| |||
-----|-|||-------
/ | ||| \
| ISP core network |
\ | ||| /
-----|-|||-------
| |||
| |||2001:db8:0:2::1
+------|-|||--------+
| AFTR |
| | ||| |
|+--------+--------+|
|| Concentrator ||
|+--------+--------+|
| |NAT| |
| +-+-+ |
+---------|---------+
^ |192.0.2.1
IPv4 datagram 1 | |
-----|--|--------
/ | | \
| Internet |
\ | | /
-----|--|--------
| |
| |198.51.100.1
+-----+-----+
| IPv4 Host |
+-----------+
Figure 6: Inbound Datagram
| Datagramma | Campo intestazione | Contenuti |
|---|---|---|
| IPv4 datagram 1 | IPv4 Dst | 192.0.2.1 |
| IPv4 datagram 1 | IPv4 Src | 198.51.100.1 |
| IPv4 datagram 1 | TCP Dst | 5000 |
| IPv4 datagram 1 | TCP Src | 80 |
| IPv6 datagram 2 | IPv6 Dst | 2001:db8:0:1::1 |
| IPv6 datagram 2 | IPv6 Src | 2001:db8:0:2::1 |
| IPv6 datagram 2 | IPv4 Dst | 192.0.0.2 |
| IPv6 datagram 2 | IPv4 Src | 198.51.100.1 |
| IPv6 datagram 2 | TCP Dst | 10000 |
| IPv6 datagram 2 | TCP Src | 80 |
Contenuti delle intestazioni dei datagrammi
B.2.2 Translation Details (Dettagli della traduzione)
I passi di traduzione dell'AFTR sono gli stessi dell'Appendice B.1.2. Una differenza è che tutti i B4 basati su host useranno lo stesso indirizzo IPv4 ben noto 192.0.0.2. Per identificare univocamente il B4 basato su host, l'AFTR userà l'indirizzo IPv6 del B4 basato su host, che è unico per l'host.
| Softwire-Id/IPv4/Prot/Porta | IPv4/Prot/Porta |
|---|---|
| 2001:db8:0:1::1/192.0.0.2/TCP/10000 | 192.0.2.1/TCP/5000 |
Tabella di traduzione del NAT carrier-grade Dual-Stack Lite
Il Softwire-Id è l'indirizzo IPv6 assegnato all'host Dual-Stack. Ogni host ha un Softwire-Id unico. L'indirizzo IPv4 sorgente è uno degli indirizzi IPv4 ben noti. L'AFTR potrebbe ricevere pacchetti da host diversi originati dallo stesso indirizzo IPv4 ben noto da tunnel softwire diversi. Analogamente all'architettura gateway, l'AFTR combina Softwire-Id e indirizzo/porta IPv4 [Softwire-Id, IPv4+Porta] per identificare univocamente il singolo host.