Protocolli e architetture di instradamento/Instradamento IPv6
Oggi i router sono per lo più pronti per IPv6, anche se le prestazioni in IPv6 sono ancora peggiori rispetto a quelle in IPv4 a causa della mancanza di esperienza e della più bassa domanda di traffico. Spesso l'instradamento IPv6 è disabilitato per impostazione predefinita anche se l'apparato supporta IPv6 (sui router Cisco si attiva con il comando ipv6 unicast-routing
).
Due aspetti sono da considerare:
- tabelle di instradamento: come gestire l'inoltro dei pacchetti di dati?
- protocolli di instradamento: come distribuire le rotte nella rete?
Tabelle di instradamento
modificaL'instradamento in IPv6 è effettuato nello stesso modo di IPv4 ma richiede due tabelle di instradamento distinte, una per le rotte IPv4 e l'altra per le rotte IPv6. Le tabelle di instradamento IPv6 possono memorizzare diversi tipi di entry, tra cui:
- entry indirette (codici O/S): specificano gli indirizzi, tipicamente link local, delle interfacce dei router next hop ai quali inviare i pacchetti indirizzati verso link remoti;
- entry dirette: specificano le interfacce del router stesso attraverso le quali inviare i pacchetti indirizzati verso i link locali:
- reti connesse (codice C): specificano i prefissi dei link locali;
- indirizzi di interfaccia (codice L): specificano gli interface identifier nei link locali.
Next hop
modificaCome next hop nelle rotte dinamiche calcolate, i protocolli di instradamento utilizzano sempre gli indirizzi link local, anche se è configurato un indirizzo global sull'interfaccia vicina, per motivi di semplicità: gli indirizzi link local esistono sempre, mentre gli indirizzi global potrebbero non essere utilizzati in alcune porzioni della rete.
Tuttavia l'uso degli indirizzi link local rende difficile il compito di determinare la posizione di quell'indirizzo: l'indirizzo di rete di un indirizzo global permette almeno di identificare la rete in cui l'host dovrebbe essere presente e determinare così l'interfaccia di uscita, ma un indirizzo link local che inizia con FE80:: può essere ovunque → accanto all'indirizzo del next hop, i router stampano anche l'interfaccia locale di uscita per risolvere le ambiguità, come:
2001:1::/64 via FE80::1, FastEthernet0/0
Per le rotte statiche, la scelta è lasciata al gestore della rete, che può utilizzare l'indirizzo che preferisce come next hop:
ipv6 route indirizzo/netmask [interfaccia locale] [next hop] [distanza]
- interfaccia broadcast (ad es. Ethernet): è necessario specificare l'indirizzo del next hop:
- indirizzo global: non è necessario specificare l'interfaccia locale perché può essere determinata dal prefisso di rete:
ipv6 route 2001:1::/64 2001::1
- indirizzo link local: è necessario specificare anche l'interfaccia locale per identificare l'ambito dell'indirizzo link local:
ipv6 route 2001:1::/64 FastEthernet0/0 fe80::1
- indirizzo global: non è necessario specificare l'interfaccia locale perché può essere determinata dal prefisso di rete:
- interfaccia punto-punto (ad es. seriale): non è necessario specificare l'indirizzo del next hop perché è identificato univocamente dall'interfaccia locale:
ipv6 route 2001:1::/64 serial 0
Siccome le rotte statiche non possono adattarsi ai cambiamenti della rete, è fortemente suggerito di utilizzare gli indirizzi global come next hop per le rotte statiche. Ciò evita che una rotta diventi non valida se il next hop cambia: ad esempio, se la scheda di rete sul router next hop viene sostituita a causa di un guasto hardware:
- indirizzo link local: dipende dall'indirizzo MAC della scheda → occorre modificare la rotta;
- indirizzo global: è sufficiente assegnare alla nuova interfaccia lo stesso indirizzo global.
Protocolli di instradamento
modificaI protocolli di instradamento che supportano IPv6 possono adottare due approcci:
- instradamento integrato (IS-IS, MP-BGP4): il protocollo consente di scambiare informazioni di instradamento sia IPv4 sia IPv6 allo stesso tempo:
- efficienza: gli indirizzi IPv4 e IPv6 appartenenti alla stessa destinazione possono essere trasportati tramite un singolo messaggio;
- flessibilità: un singolo protocollo trasporta più famiglie di indirizzi;
- reattività: se avviene un guasto o un cambiamento nella rete, il protocollo lo scopre per entrambe le famiglie di indirizzi;
- bug: un problema nel protocollo influenza reti IPv4 e IPv6 allo stesso modo;
- migrazione: se il protocollo usa IPv4 per trasportare i pacchetti di Hello, non è possibile abolire IPv4 nella rete;
- navi nella notte (RIPng, EIGRP, OSPFv3): il protocollo consente di scambiare informazioni di instradamento solo IPv6:
- efficienza: data una destinazione, deve essere scambiato un messaggio per il suo indirizzo IPv4 e un altro messaggio per il suo indirizzo IPv6, e i messaggi sono completamente indipendenti tra loro;
- flessibilità: si possono usare due protocolli diversi, uno per le informazioni di instradamento IPv4 e un altro per le informazioni di instradamento IPv6;
- reattività: se avviene un guasto o un cambiamento nella rete, entrambi i protocolli devono scoprirlo, ciascuno con le proprie tempistiche e con messaggi duplicati;
- bug: un problema nel protocollo non influenza l'instradamento nell'altro;
- migrazione: ogni protocollo di instradamento genera messaggi della famiglia di indirizzi a cui appartiene.
RIPng
modificaRIPng adotta l'approccio "navi nella notte", e apporta a RIP dei miglioramenti principalmente nell'interfaccia a riga di comando di Cisco:
- supporto alle istanze multiple: il campo
tag
permette di specificare l'istanza di protocollo;[1] - configurazione per interfaccia: sono stati introdotti nuovi comandi:
ipv6 rip <tag> enable
: sostituisce il comandonetwork
e configura automaticamente RIP su quell'interfaccia senza dover specificare un indirizzo;ipv6 rip <tag> default-information originate
: origina la rotta di default (::/0), cioè il resto del mondo è raggiungibile tramite questa interfaccia.
OSPFv3
modificaOSPFv3 adotta l'approccio "navi nella notte", e differisce da OSPF principalmente per tre aspetti:
- configurazione per interfaccia: è stato introdotto il comando
ipv6 ospf <ID processo> area <ID area>
che specifica che tutte le reti e gli indirizzi configurati su questa interfaccia verranno annunciati come appartenenti all'area specificata; - Router ID: sfortunatamente OSPFv3 usa ancora un Router ID da 32 bit, che non è neanche capace di impostare automaticamente quando nessun indirizzo IPv4 è disponibile → il comando
ipv6 router-id <numero>
diventa obbligatorio quando il router è solo IPv6 o è in una rete solo IPv6; - tunnel: è possibile configurare un tunnel IPv6 su IPv4 per collegare tra loro isole IPv6 attraverso una rete IPv4.
IS-IS
modificaIS-IS per IPv6 adotta l'approccio "instradamento integrato": usa infatti un proprio protocollo di livello 3 per trasportare i pacchetti specifici del protocollo, indipendentemente dalla versione del protocollo IP sottostante.
MP-BGP4
modificaMP-BGP4 può adottare entrambi gli approcci a seconda della configurazione: i pacchetti TCP possono essere imbustati in IPv4 o in IPv6 a seconda delle necessità.
La distribuzione più comune segue l'approccio "instradamento integrato", per la necessità di utilizzare il numero dell'AS (che è uguale sia per IPv4 sia per IPv6) per il processo BGP. L'integrazione si riflette anche nelle politiche: è possibile mischiare indirizzi IPv4 e indirizzi IPv6 a piacimento.
Note
modifica- ↑ Il supporto per le istanze multiple era già presente in RIPv2, ma non era configurabile sui router Cisco.