IPv6.

Nello scorso articolo (e mi sono gia’ arrivati i rimbrotti) sono stato poco preciso a riguardo del protocollo di prossima introduzione, e quindi provo a spiegare meglio cosa sia e come funzioni. Siccome non sono un grande divulgatore , probabilmente falliro’, o perlomeno non vincero’ nessun premio Feynman. Ma ci provo lo stesso, visto che lo chiedete.

IPv6 non nasce solo per aumentare il numero di IP disponibili, ma per risolvere molti problemi che l’attuale protocollo IP ha, difetti che sono emersi con la sua diffusione su vastissima scala. Non che IP sia cosi’ male, sia chiaro: pero’ non e’ nato per fare cio’ che noi oggi vorremmo che faccia.

Per capire il primo tra i problemi, parliamo un attimo di routing. Supponiamo che voi andiate, che so io, da Bologna a Milano. Ma non avete mai fatto questo viaggio. Siete amanti del routing stile IPv4, e cosi’ vi comportate allo stesso modo. A Bologna chiedete ad un passante che si chiama Router “ehi, io parto da Bologna e vado a Milano, dove devo andare?”. E il passante vi dice “Modena, da quella parte”. Bene. Arrivate a Modena, e chiedete ad un altro tizio che si chiama sempre Router “ehi, sono partito da Bologna e devo andare a Milano. Dove vado?”. E lui: “Reggio Emilia”. Cosi’, andate a Reggio emilia, e blabla.
Il problema sembra semplice, no? Basta solo che il router sappia che per arrivare a Milano la prossima fermata sia Modena, eccetera. Adesso andate a Bologna,e  dite al passante “Ehi, io parto da Bologna ma devo andare a Balança.”
Il passante, a quel punto, dovrebbe sapere che Balança si trova in Brasile e indicarvi l’aereoporto.
Dovrebbe, cioe’ “calcolarvi una rotta”. A quel punto i matematici insorgeranno: “cazzo, ma si tratta di un grafo enorme, la complessita’ e’ enorme”. Vero. Ma abbiamo detto che sappiamo che Balança sia un Brasile. Perche’ non Indicarvi la via per andare in brasile, per prima cosa?
Ok, su Internet questa cosa “Balanca e’ in Brasile” si dice “Il tale indirizzo appartiene al tale Autonomous System”. Da qualche parte qualcuno tiene le rotte dall’ Italia al Brasile, e le pubblica. Cosi’, qualsiasi router sa dirvi quale sia la prossima citta’ per arrivara a Balanca.
Tuttavia, rimane un punto: ad ogni tappa dovete fermarvi e chiedere quale sia la prossima tappa.
Possiamo usare una via piu’ semplice? Certo. Siete a Bologna e chiedete : “parto dal Bologna e voglio andare a Milano. Come faccio?”. La risposta potrebbe essere, semplicemente, “entra nella autostrada A1, e seguila sino a Milano”. In questo modo vi faccio notare che avete gia’ la rotta: non abbiamo detto di andare in un’altra citta’, e poi richiedere: vi abbiamo detto come si chiami la strada da seguire.
Certo, non esiste un’autostrada da Bologna a Balança, ma riconoscerete che questa filosofia potrebbe avere dei vantaggi rispetto alla precedente, se la topologia diventa sempre piu’ complessa.
Andiamo a vedere in che modo possiamo capire, diciamo a colpo d’occhio, che Balança sia in Brasile.

L’indirizzo IPv6 e’ diviso in diversi campi.O meglio, i campi dell’ indirizzo IP sono usati in modo diverso.


L’ rfc2450 lo definisce in questo modo. L’indirizzo IPv6 e’ lungo 128 bit, che possiamo inizialmente dividere in tre aree: global prefix, subnet, Interface ID
L’interface ID e’ la parte piu’ “semplice”, nel senso che indica semplicemente quello che oggi siete abituati a chiamare Mac Address. Questo, attenzione, significa una cosa molto chiara: oggi non potete, strettamente, richiedere quale Mac Address abbia un calcolatore remoto. Non e’ affatto scontato che tale dato arrivi a voi, per la semplice ragione che non e’ strettamente necessario ad identificarvi nella rete globale. Nel mondo IPv6, esso fa parte del vostro indirizzo pubblico.
Cosi’, il grande vantaggio della vostra azienda sara’ che potra’ agevolmente decidere che il vostro Interface ID faccia parte della rete aziendale, e da qualsiasi posto vi colleghiate, sarete sempre voi perche’ l’ Interface ID rimarra’ quello. (1)
Questo concetto di chiarezza dell’identita’ e’ il primo principio su cui si basa la “rivoluzione”. Ovviamente c’e’ chi pensa di poter sfuggire a questa cosa: lo fa a proprie spese, perche’ nel mondo IPv6 l’identita’ e’ VALORE,e  chi vi rinuncia perde valore. Molte corporation che lo implementano non ci sentono da questo orecchio, pensano di poter spoofare questo e quello,   e pagheranno il prezzo in futuro quando i loro clienti pretenderanno di poter usare le reti geografiche come si deve.
Le altre suddivisioni sono:
  • FP           Format Prefix (001)
  • TLA ID       Top-Level Aggregation Identifier
  • RES          Reserved for future use
  • NLA ID       Next-Level Aggregation Identifier
  • SLA ID       Site-Level Aggregation Identifier
Il primo campo indica il tipo di indirizzo che state usando. Diciamo che indichiate un singolo device, e sia 001. Significa che e’ un indirizzo unico.
Ma prima di continuare c’e’ da chiarire una cosa: questa parte dell’ RFC non parla del protocollo ma del suo uso. Il protocollo in se’ assegna tot bit all’indirizzo. Se si decide che alcuni bit indichino il TLA, si sta dicendo che stabiliamo una convenzione per cui essi sono usati a questo scopo.
Il TLA e’ un insieme di numeri che indicano, di fatto, l’azienda o l’ente che gestisce il (potenzialmente) gigantesco blocco di indirizzi di cui fate parte. Esso e’, nelle intenzioni dell’ RFC, allocato dallo IANA. In pratica , visti i numeri, potrebbe contenere anche un intero continente.
Di fatto, la tabella somigliera’ a questa:
Global Unicast Prefix Assignment     Date        Note
--------------------- ----------     ------      ----
2001:0000::/23        IANA           01 Jul 99
2001:0200::/23        APNIC          01 Jul 99
2001:0400::/23        ARIN           01 Jul 99
2001:0600::/23        RIPE NCC       01 Jul 99
2001:0800::/23        RIPE NCC       01 May 02
2001:0A00::/23        RIPE NCC       02 Nov 02
2001:0C00::/23        APNIC          01 May 02   [2]
2001:0E00::/23        APNIC          01 Jan 03
2001:1200::/23        LACNIC         01 Nov 02
2001:1400::/23        RIPE NCC       01 Feb 03
2001:1600::/23        RIPE NCC       01 Jul 03
2001:1800::/23        ARIN           01 Apr 03
2001:1A00::/23        RIPE NCC       01 Jan 04
2001:1C00::/22        RIPE NCC       01 May 04
2001:2000::/20        RIPE NCC       01 May 04
2001:3000::/21        RIPE NCC       01 May 04
2001:3800::/22        RIPE NCC       01 May 04
2001:3C00::/22        RESERVED       11 Jun 04
2001:4000::/23        RIPE NCC       11 Jun 04
2001:4200::/23        AfriNIC        01 Jun 04
2001:4400::/23        APNIC          11 Jun 04
2001:4600::/23        RIPE NCC       17 Aug 04
2001:4800::/23        ARIN           24 Aug 04
2001:4A00::/23        RIPE NCC       15 Oct 04
2001:4C00::/23        RIPE NCC       17 Dec 04
2001:5000::/20        RIPE NCC       10 Sep 04
2001:8000::/19        APNIC          30 Nov 04
2001:A000::/20        APNIC          30 Nov 04
2001:B000::/20        APNIC          08 Mar 06
2002:0000::/16        6to4           01 Feb 01
2003:0000::/18        RIPE NCC       12 Jan 05
2400:0000::/12        APNIC          03 Oct 06
2600:0000::/12        ARIN           03 Oct 06
2610:0000::/23        ARIN           17 Nov 05
2620:0000::/23        ARIN           12 Sep 06
2800:0000::/12        LACNIC         03 Oct 06
2A00:0000::/12        RIPE NCC       03 Oct 06
2C00:0000::/12        AfriNIC        03 Oct 06
Ho sottolineato in rosso una rete particolare, 6to4, che probabilmente verra’ usata  massivamente durante il periodo di convivenza di IPv4 e IPv6, almeno verso la “fine”.
Il TLA stesso puo’ anche essere diviso in TLA e Sub-TLA, e di conseguenza un blocco piu’ piccolo puo’ essere assegnato direttamente ad un operatore, se abbastanza grande, a discrezione dello IANA. Questa cosa, prevista dall’ RFC iniziale, e’ considerata deprecata dallo IANA, dal momento che aggiunge troppa complessita’ al suo lavoro. Anche l’ uso custom dei campi RES, per dire, e’ stato aggirato.
Il campo RES al momento della stesura dell’ RFC era indicato come RES, cioe’ non erano definiti usi chiari.
I Campi NLA e SLA indicano, a loro volta, blocchi che possono essere assegnati al singolo provider/organizzazione che gestisce quella sottorete, e alla sottorete stessa. Che cosa significa questo? Significa, in soldoni, che la vostra localizzazione e’ possibile semplicemente leggendo l’indirizzo IP. Non c’e’ bisogno di qualcosa che vada a fare una query su un hash aggiuntivo: sapendo che un blocco e’ stato dato, che so io, al RIPE, so che siete europei. Leggendo gli altri bit, so a quale provider appartenete, e a quale sottorete.
Certo, anche con IPv4 posso, ma non e’ scritto sull’idririzzo, dovete poi fare una query su qualche database.
Insomma, quando in IPV6 avete un indirizzo pubblico, avete un’identita’ pubblica piuttosto forte. Dite, a prima vista (poi vedremo NEMO e MIPv6) chi siete, che provider usate, che autorita’ usate (Asia, Europa, USA, etc) che sottorete usate.
Voi direte che cosi’, pero’, e’ piu facile il compito della polizia. Dipende dallo scopo della polizia. Se siete una dittatura e volete bloccare qualche dispositivo, di certo potrete farlo. Non c’e’ alcun dubbio. Se pero’ volete intercettare, c’e’ un piccolo problema: il dispositivo puo’ trovarsi in un’altra rete fra cinque minuti, cosa che ne cambierebbe TLA, NLA e SLA, ma manterrebbe l’ Interface ID. COn l’ interface ID e’ gia’ possibile riconoscervi abbastanza da negoziare una connessione criptata o l’ingresso in una rete privata da parte di un firewall. Cosi’, per voi e’ essenzialmente semplicissimo cambiare posizione senza perdere connessione con la rete locale.

Che cosa deve fare invece la polizia per intercettarvi? Deve mettersi in mezzo. E qui inizia il dramma: per mettersi in mezzo la polizia necessita di sapere da dove vi connettete. Per saperlo ha bisogno di tempo, diciamo qualche minuto di indagine nella migliore delle ipotesi, fino a qualche ora o qualche giorno. Voi, invece, potete cambiare istantaneamente rete di appartenenza, cambiando il routing come cavolo vi pare, senza troppi inconvenienti. Potreste avere 12 sim con voi, e collegarvi cambiando provider ogni minuto: il destinatario della connessione potrebbe ancora riconoscervi, sapere da dove passera’ il vostro traffico tra un minuto e’ praticamente impossibile nei tempi minimi che vi servono a cambiare rete.

Oggi se volete cambiare rete dovete cambiare abbonamenti, e se volete un meccanismo di riconoscimento forte dovete fare qualcosa come una VPN, che richiede un settaggio complesso. Con IPv6, potete in teoria tenere in piedi una trasmissione criptata mentre cambiate IP: la crittazione, e i relativi extension headers, sono parte del payload. Il router non se ne occupa, e’ un problema punto-punto.

Se continuate col payload giusto , con il contenuto giusto, e mantenete l’ Interface ID pur cambiando il resto, e’ solo questione dell’altro computer decidere se tenere in piedi la connessione: non c’e’ una reale perdita di sicurezza, e quindi in teoria decade la necessita’ reale di interrompere le connessioni per cambiare rete.(questa caratteristica non e’ molto considerata nelle reti fisse, ma e’ molto interessante per MIPv6 e NEMO, di cui parlo sotto perche’ e’ di interesse telco).

Il fatto che i router switchino il traffico anziche’ fare routing al prossimo hop fa si’ che siano solo ed esclusivamente i due estremi a decidere se fidarsi o meno l’uno dell’altro, e come:  adesso quando facciamo crittazione stiamo lavorando sul payload, e non sugli headers. E il payload NON riguarda i routers. A dire il vero, non c’e’ neanche una checksum sugli headers, quindi anche quelli verranno creduti praticamente come sono, o implementati come soluzione locale per provider/vendor/qualsiasi cosa.

Andiamo un pochino a immaginare  come funziona la rete locale di casa, a questo punto. Oggi funziona come un piccolo router che ha un server DHCP. Tale server vi assegna un indirizzo nattato, che poi viene portato sulla rete pubblica. Anche DHCP sopravvivera’, ma sara’ un pochino diverso. Avrete notato, infatti, che gli indirizzi pubblici causano, di fatto, la scomparsa del concetto di “LAN”: ho parlato, per caso , di “Network Mask”? Ho parlato di Broadcast? No. Perche’ in IPv6 il broadcast non esiste. E quindi, non esiste la cosiddetta “rete locale” come la conosciamo sinora.

Del resto, se faceste come oggi, per configurare il vostro piccolo router domestico dovreste avere a disposizione, di sicuro, SLA, NLA, TLA e configurare il tutto a mano. Domanda: perche’? Supponiamo invece che il vostro router sia “trasparente”, come fosse uno switch. Il vostro PC, per entrare in rete, emette una chiamata “anycast”. Essa viaggia su un cavo, (quindi non arriva al vostro cane, non e’ abbastanza anycast insomma) e viene accettata da alcuni router. Diciamo che la chiamata ha la possibilita’ di passare attraverso un certo numero di router prima di fermarsi, come un biglietto a fascie chilometriche. Se entro questa distanza c’e’ un router , e lui accetta, allora semplicemente si accordera’ con il vostro computer/cellulare/aspirapolvere per entrare nella sua rete. Da quel momento sara’ quel router ad occuparsi di voi. Dopodiche’ una richiesta  RA di ADD, CHANGE STATE o DELETE verra’ inviata ad altri router, i quali saranno cosi’ informati di  dove siete.

Ovviamente  a monte anche il router potrebbe gestire l’entrata in rete di un blocco di indirizzi anziche’ di indirizzi unici, oppure di indirizzi multipli. Si parla allora di allocazione di Multicast Address Dynamic Client Allocation Protocol  , rfc2730.

Complesso? Beh, Ipv6 offre un’altra alternativa: quando infatti avete assegnato a voi stessi un indirizzo, avete assegnato anche un link. Che significa? Significa che siete in rete. No, non sto scherzando: esiste la possibilita’, se possedete un IP, di autoconfigurare il vostro link. E no, non sto scherzando, e’ la possibilita’ che sta alla base di MIPv6, l’ IPv6 per il mobile. In qualsiasi posto voi siate, avete un indirizzo e , potenzialmente, e’ abbastanza regolare da funzionare. perche’? perche’ lo dite voi. Si chiama “allocazione stateless”(RFC2462)

Il multicast e’ un’altra delle possibilita’ dell’ IPv6. In IPv6, quando si alloca un indirizzo multicast, si possono contestualmente  allocare  miliardi di indirizzi unicast. Ma quando il traffico lascia il server che fa streaming, esso e’ UN flusso solo, diretto ad UN solo IPv6, che e’ un indirizzo multicast. In pratica, ze i client sono 100 o sono 1000 , per il server non cambia nulla: sempre un solo flusso in uscita, meno banda un upstream.
Attualmente il multicast funziona in maniera simile su IPv4 , ma richiede un meccanismo di sottoscrizione e ottenere le reti non e’ ne’ semplice ne’ immediato.  Inoltre non essendo obbligatorio, non e’ previsto per forza che tutti i dispositivi di rete lo supportino, mentre in IPv6 fa parte del protocollo. Al contrario, su IPv6 un undirizzo multicast e’ un indirizzo che ha diversi parametri gia’ inseriti dentro, che spiegano in che modo collegarsi al servizio: in Giappone molte TV fanno gia’ uso di IPV6 e multicast, per via della facilita’ di utilizzo. L”RFC3306 spiega piu’ in dettaglio.

In definitiva, quindi, il protocollo IPv6 e’ un attimino piu’ complesso concettualmente, e per certi versi richiede una rete piu’ intelligente. Il problema sta nel fatto, pero’, che la mobilita’  teorica offerta dal protocollo e’ superiore alla facilita’ con la quale e’ possibile predisporre un’intercettazione. Su numeri di media portata o di grande portata, con un minimo di crittazione, di fatto i governi escono dal gioco: possono sicuramente bloccare la comunicazione, anche piu’ facilmente che con IPv4. Ma l’intercettazione se uno dei due punti e’ abbastanza “mobile”, e’ possiible solo mettendosi di fronte all’estremo che rimane fermo. A patto di conoscerlo in anticipo. Il tempo necessario per predisporre un’intercettazione, insomma, supera quasi sempre il tempo necessario a spostarsi, e quello necessario a settare una crittazione punto-punto.

Un’altra domanda che potreste pormi e’: ehi, ma se la crittazione avviene interamente nel payload, perche’ mai usare il mac? Potrei cambiare, almeno in teoria,  il mac della mia macchina, o almeno esporne uno diverso, e continuare la connessione cambiando MAC, tenendo i campi TLA, NLA e SLA, cioe’ rimanendo nella stessa rete.

Vero anche questo, ma sareste ancora sullo stesso cavo. Che e’ facile da stabilire avendo TLA, NLA e SLA. Invece se vi muovete e cambiate reti, e’ un casino. Inoltre, non e’ detto che ve lo lascino fare tutti i router, ne’ che i router vi accetterebbero con il vostro id falso.

Cosi’, la morale della storia e’: in IPv6 l’identita’ e’ valore. Potrete scegliere di assegnarla in maniera forte assicurando che il campo dell vostro ID sia veritiero, e allora avrete tutti i vantaggi di mobilita’ possibili. Potete rendere inaffidabile l’identificazione, cosa nel quale perdete valore, a vostro scapito in un mondo nel quale gli indirizzi IPv6 verranno assegnati a tutto e a tutti, perche’ nessuno consentira’ ad indirizzi sconosciuti di usare dei servizi.

Per fare un parallelo, potrei farlo con alcuni servizi della rete mobile: se entrate con Vodafone, potrete usare alcuni servizi VAS di Vodafone ma non quelli di TIM, perche’ diventa difficile identificarvi e farvi pagare. Se non passate da un wap gateway, per molti di questi servizi  (anche del vostro stesso fornitore) siete anonimi: il guaio e’ che non potete piu’ usarli, e magari vi servivano o vi piacevano. L’alternativa e’ passare per un wap gateway: non siete piu’ anonimi ma potete usare i servizi perche’ la SIM (un pezzo di hardware) garantisce la vostra identita’ ed essa viene arricchita in alcuni headers del protocollo HTTP.

Ecco, in IPv6 potreste decidere di spoofare il vostro hardware e di modificare la vostra identita’ . E non entrerete piu’ da nessuna parte, o quasi. Non ci sara’ routing per voi. Oppure, potete usare un’identita’ del device legata all’hardware. In quel caso, potete usare i servizi ma non riuscirete ad essere anonimi. 

Tutto dipende da come componete il vostro indirizzo, e da quale indirizzo ottenete, e da chi.

In un certo senso, potremmo dire che il “valore” dell’ indirizzo IPv6 sia maggiore, nella misura in cui tramite la sua composizione e’ possibile fornire alla rete piu’ informazioni, grazie alle quali e’ possibile offrire piu’ servizi. D’altro canto, esso contiene gia’, in se’, piu’ numerini con i quali e’ possibile identificarvi, e l’anonimato d’altro canto potrebbe significare la perdita sostanziale di molti servizi.

Per esempio, il protocollo MM7 , nella chiamata SOAP, permette non solo il global title o il numero di telefono, ma anche l’idirizzo IPv4 o IPv6: se pensate ad un servizio di MMS punto-punto, senza passare per la telco, (2) mantenere il vostro prezioso Interface ID potrebbe essere necessario per ricevere il messaggio. Idem per la telefonata.

Un’ultima cosa: io parlo da persona che lavora nel mobile. Le reti fisse che implementano IPv6 potrebbero mantenere molte delle limitazioni di IPv4. Il problema e’ che invece le telco hanno interesse ad implementare quanto ho appena detto, cioe’ la mobilita’ completa dei sistemi. Se parlate di mobilita’ completa a chi si occupa di reti fisse, vi dira’ che magari IPv6 e IPv4 non sono molto diversi. E qui veniamo al dunque:

Sono perplesso: e’ DaVVERO possibile tenersi l’intero IPv6 e andare a spasso per il mondo portandoselo appresso, in diverse reti, cosi’ com’e’?

SI. E’ una possibilita’ teorica nelle reti fisse, nel senso che non e’ ancora realmente implementata, ufficialmente  e ha il nome di NEMO. Il fatto e’, cioe’, che nessuna regola vieta ai routers di permettervi ugualmente il routing., e quindi sulle reti fisse l’implementazione di NEMO permetterebbe al vostro IPv6 di muoversi SENZA cambiare NESSUNO dei suoi campi. Il che significa che voi SEMBRATE di Telecom Italia, invece state usando il cavo di Tiscali, e chi vi intercetta sta sul cavo sbagliato. L’ RFC3963 spiega come potrebbe funzionare la cosa.

Una cosa interessante per le telco, invece e’ MIPv6, la versione mobile , che non e’ teorica e sta venendo sperimentata, e  che permette al dispositivo mobile di tenere lo stesso indirizzo IP in qualsiasi posto del mondo si trovi. Questo, per le polizie, sara’ un incubo, perche’ come immaginate l’ utenza verra’ comunque venduta tramite SIM o dispositivi simili, e nessuno vietera’ un commercio di SIM cinesi in Italia, o viceversa: la possibilita’ di un indirizzo IP di zompare qui e la’ per il mondo si avvicina.E’ descritto nell’ RFC3775. Anche in questo caso, leggendo l’ IP si dedurrebbe che siate italiani che trasmettono dall’ Italia, ma per intercettarvi bisognerebbe essere… in Cina.

forse adesso e’ piu’ chiaro, o forse avete ancora piu’ confusione.

Uriel

(1) Mi aspetto che Cisco introduca la sua idea di Interface Id e che ovviamente mandi tutto in merda, come al solito, inventando la Cisco Way (proprietaria e chiusa) per fare le cose. Il Big One sara’ una buona notizia per questa ragione. Se gli alieni ci schifano e non ci contattano e’ per colpa di Cisco. Se c’e’ Cisco, evidentemente non esiste alcuna civilta’. Ho goduto come un riccio quando 3GPP ha schifato il loro pseudo-SIP e li ha costretti ad essere piu’ compliant.

(2) In fondo lo SMIL di un MMS e’ solo un formato mime con un banale encoding base64, quindi si puo’ trasferire da un dispositivo all’altro con facilita’, senza un reale bisogno di MMSC, MM1, Wap Push, etc etc.

Annunci

Rispondi

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...