Capitolo 4 Livello di rete .
Capitolo 4: Indice 4.1 Introduzione 4.2 Protocolli di livello di rete 4.3 Instradamento unicast 4.4 Instradamento multicast 4.5 Protocolli di nuova generazione 1.#
Capitolo 4: Obiettivi Per prima cosa si discutono i servizi che possono essere forniti da questo livello, tra i quali la suddivisione in pacchetti, il routing (instradamento) ed il forwarding (inoltro). Sarà presentato il livello di rete così come previsto nella pila di protocolli TCP/IP e saranno analizzati alcuni dei protocolli nella versione attualmente più diffusa: IPv4 e ICMPv4. Parleremo inoltre dell’indirizzamento (addressing) in IPv4 e delle questioni collegate. Ci si occuperà di instradamento unicast e dei protocolli di instradamento unicast. Si affronterà la comunicazione multicast: i principi di base ed i requisiti dei protocolli d’instradamento multicast. Verrà descritta la nuova generazione di protocolli per il livello di rete, IPv6 e ICMPv6, con il relativo indirizzamento. 1.#
4-1 Introduzione La Figura 4.1 mostra la comunicazione tra Gaia e Gabriele a livello di rete. È lo stesso scenario utilizzato nei Capitoli 2 e 3 per mostrare la comunicazione rispettivamente a livello di applicazione e a livello trasporto. 1.#
Figura 4.1: Comunicazione a livello di rete 1.#
4.1.1 Servizi a livello di rete Prima di analizzare il livello di rete così com’è nella Internet odierna si discuteranno brevemente i servizi che ci si attende siano forniti da un protocollo di questo livello: Suddivisione in pacchetti Instradamento ( routing) Inoltro ( forwarding) 1.#
4.1.1 Servizi (continuazione) Controllo degli errori Controllo di flusso Controllo della congestione Qualità del servizio Sicurezza 1.#
Figura 4.2: Processo d’inoltro 1.#
4.1.2 Packet Switching Dalla discussione su instradamento e inoltro della sezione precedente, deduciamo che a livello di rete avviene una qualche forma di switching (commutazione). Un router infatti è un commutatore di rete che crea un collegamento tra una porta di input e una di output (o un insieme di porte di output), proprio come un commutatore elettrico collega l’input all’output per far passare l’elettricità. 1.#
4.1.2 Packet switching (cont.) Approccio a datagramma: servizio senza connessione Approccio a circuiti virtuali: servizio orientato alla connessione Fase di setup Fase di trasferimento dati Fase di chiusura del circuito virtuale 1.#
Figura 4.3: Una rete packet switching senza connessione 1.#
Figura 4.4: Processo d’inoltro di un router in una rete priva di connessione 1.#
Figura 4.5: Rete basata su circuiti virtuali 1.#
Figura 4.6: Inoltro di un router in una rete a circuito virtuale 1.#
4.1.3 Congestione a livello di rete Nel Capitolo 3 abbiamo parlato della congestione a livello trasporto. Anche se nel caso di Internet non si parla esplicitamente della congestione a livello di rete, lo studio di questo fenomeno può contribuire a farci comprendere meglio la causa della congestione a livello trasporto e a farci trovare dei possibili rimedi da usare a livello di rete. A livello di rete la congestione si riferisce principalmente a due questioni, il throughput ed il ritardo, dei quali abbiamo già parlato nel Capitolo 1. 1.#
4.1.3 Congestione (continuazione) Controllo della congestione Controllo della congestione a ciclo aperto Politica di ritrasmissione Politica di gestione delle fi nestre Politica di riscontro Politica di scarto Politica di ammissione Controllo della congestione a ciclo chiuso Backpressure (contropressione) Choke Packet (pacchetto di strozzamento) Segnalazione implicita Segnalazione esplicita 1.#
Figura 4.7: Ritardo e throughput in funzione del carico della rete 1.#
Figura 4.8: Metodo della backpressure per alleviare la congestione 1.#
Figura 4.9: Meccanismo basato su choke packet 1.#
4.1.4 Struttura di un router Nella nostra discussione circa l’inoltro e l’instradamento abbiamo rappresentato il router come una scatola nera che accetta pacchetti in entrata da una delle porte di input (interfacce), usa una tabella d’inoltro per trovare la porta di output e da questa invia il pacchetto. Scopo di questa sezione sarà quello di aprire questa scatola nera e guardarci dentro. Tuttavia la nostra analisi non sarà eccessivamente dettagliata, in quanto sono stati scritti dei libri interi sui router e il nostro scopo è solamente quello di averne una buona visione d’insieme. 1.#
4.1.4 Struttura di un router (cont.) Componenti Porte di input Porte di output Processore di routing Switching fabric Crossbar Switch 1.#
Figura 4.10: Componenti di un router 1.#
Figura 4.11: Porta di input 1.#
Figura 4.12: Porta di output 1.#
Figura 4.13: Un esempio di switching fabric: il crossbar switch 1.#
4-2 Protocolli di livello rete In questa sezione si vedrà come il livello di rete è implementato nella pila dei protocolli TCP/IP. Nel corso del tempo i protocolli di livello rete hanno avuto molte versioni differenti. In questa sezione si vedrà la versione attuale (4), mentre nell’ultima parte del capitolo sarà brevemente trattata la nuova versione (6), che è all’orizzonte, ma ancora scarsamente utilizzata. 1.#
Figura 4.14: Struttura logica dello stack TCP/IP 1.#
4.2.1 Formato dei datagrammi IPv4 I pacchetti usati dal protocollo IP vengono definiti datagrammi IP. Il loro formato è illustrato nella Figura 4.15. Un datagramma è un pacchetto di lunghezza variabile composto da due parti: un’intestazione (header) e un campo dati (payload). L’intestazione è lunga da 20 a 60 byte e contiene le informazioni essenziali per il routing e la consegna dei datagrammi. Per comodità di lettura normalmente si rappresenta l’intestazione TCP/IP sotto forma di righe di 4 byte (32 bit) ciascuna. 1.#
4.2.1 Formato IPv4(continuazione) Frammentazione Maximum Transfer Unit (MTU) Campi relativi alla frammentazione Sicurezza dei datagrammi IPv4 Packet Sniffing Modifica dei pacchetti IP Spoofing 1.#
Figura 4.15: Datagramma IP 1.#
Figura 4.16: Multiplexing e demultiplexing utilizzando il valore del campo protocollo 1.#
Figura 4.17: Maximum Transfer Unit (MTU) 1.#
Figura 4.18: Esempio di frammentazione 1.#
Figura 4.19: Esempio dettagliato di frammentazione 1.#
4.2.2 Indirizzi IPv4 L’identificatore usato dal protocollo IP nella pila TCP/IP per individuare il collegamento di ciascun dispositivo ad Internet è chiamato indirizzo Internet (Internet Address) o indirizzo IP. Un indirizzo IPv4 è un indirizzo formato da 32 bit che identifica in modo univoco e universale il collegamento di un host o un router ad Internet. L’indirizzo IP è l’indirizzo del collegamento, non dell’host o del router, in quanto se il dispositivo viene spostato in un’altra rete, molto probabilmente l’indirizzo IP verrà cambiato. 1.#
4.2.2 Indirizzi IPv4 (continuazione) Spazio degli indirizzi ( address space) Notazione Gerarchia nell’indirizzamento Indirizzamento con classi (classful) Esaurimento degli indirizzi Subnetting e supernetting Vantaggi dell’indirizzamento con classi 1.#
4.2.2 Indirizzi IPv4 (continuazione) Indirizzamento senza classi (classless) Lunghezza del prefisso: notazione slash (barra) Estrazione delle informazioni da un indirizzo Maschera dell’indirizzo ( address mask) Indirizzo di rete (network address) Assegnazione dei blocchi di indirizzi Subnetting Aggregazione degli indirizzi Indirizzi speciali 1.#
4.2.2 Indirizzi IPv4 (continuazione) Dynamic Host Configuration Protocol (DHCP) Formato dei messaggi DHCP Funzionamento del DHCP NAT Traduzione dell’indirizzo Tabella di traduzione 1.#
Figura 4.20: Tre diverse notazioni per l’indirizzamento IPv4 1.#
Figura 4.21: Gerarchia nell’indirizzamento 1.#
Figura 4.22: Suddivisione dello spazio degli indirizzi nell’indirizzamento con classi 1.#
Figura 4.23: Indirizzamento senza classi, blocchi di lunghezza variabile 1.#
Figura 4.24: Notazione slash (CIDR) 1.#
Figura 4.25: Estrazione delle informazioni nell’indirizzamento senza classi 1.#
Esempio 4.1 Nell’indirizzamento senza classi, dato l’indirizzo IP 167.199.170.82/27 è possibile trovare le tre informazioni sopra indicate come segue: Il numero di indirizzi nella rete è 232 – n = 25 = 32 indirizzi. Il primo indirizzo del blocco si può trovare mantenendo invariati i primi 27 bit a sinistra e cambiando il resto dei bit in 0: Indirizzo: 167.199.170.82/27 10100111 11000111 10101010 01010010 Primo indirizzo: 167.199.170.64/27 10100111 11000111 10101010 01000000 L’ultimo indirizzo si può trovare mantenendo invariati i primi 27 bit a sinistra e cambiando il resto dei bit in 1: Indirizzo: 167.199.170.82/27 10100111 11000111 10101010 01011110 Ultimo indirizzo: 167.199.170.95/27 10100111 11000111 10101010 01011111
Esempio 4.2 Ripetiamo l’Esempio 4.1 usando la maschera dell’indirizzo. La maschera, rappresentata con la notazione decimale puntata, è 256.256.256.224. Le operazioni AND, OR e NOT possono essere applicate ai singoli byte manualmente oppure usando una calcolatrice avanzata. Numero di indirizzi nel blocco: N = NOT (maschera) + 1 = 0.0.0.31 + 1 = 32 indirizzi Primo indirizzo: primo = (indirizzo) AND (maschera) = 167.199.170.82 Ultimo indirizzo: ultimo = (indirizzo) OR (NOT (maschera)) = 167.199.170.255
Esempio 4.3 Nell’indirizzamento senza classi, un indirizzo di per sé non può definire il blocco al quale appartiene. Per esempio l’indirizzo 230.8.24.56 può appartenere a molti blocchi diversi. Alcuni di questi vengono mostrati qui sotto con il valore del prefisso associato a ciascun blocco:
Figura 4.26: Indirizzo di rete (network address) 1.#
Esempio 4.4 Supponiamo che un ISP abbia richiesto un blocco di 1000 indirizzi. Siccome 1000 non è una potenza di 2, vengono assegnati 1024 indirizzi. La lunghezza del prefisso si calcola come: n = 32 – log2 1024 = 22. Un blocco disponibile, 18.14.12.0/22, viene assegnato all’ISP. Si può notare che il primo indirizzo del blocco (in decimali) è 302.910.464 che è un numero divisibile per 1024.
Esempio 4.5 A un’organizzazione viene assegnato un blocco di indirizzi con indirizzo iniziale 14.24.74.0/24. L’organizzazione ha bisogno di 3 sottoblocchi di indirizzi da usare nelle sue 3 sottoreti: un sottoblocco da 10 indirizzi, uno da 60 indirizzi ed uno da 120. Progettare i sottoblocchi. Soluzione Vi sono 232– 24 = 256 indirizzi in questo blocco. Il primo indirizzo è 14.24.74.0/24, l’ultimo è 14.24.74.255/24. Per soddisfare il terzo requisito, assegniamo degli indirizzi ai sottoblocchi, partendo con il più grande e finendo con quello più piccolo.
Esempio 4.5 (continuazione) Il numero di indirizzi nel sottoblocco più grande, che necessita di 120 indirizzi, non è una potenza di 2. Assegniamo quindi 128 indirizzi. La maschera di rete per questa sottorete si può calcolare come: n1 = 32 – log2 128 = 25. Il primo indirizzo in questo blocco è quindi 14.24.74.0/25, l’ultimo invece è 14.24.74.127/25. b. Neanche il numero di indirizzi nel secondo sottoblocco più grande, che necessita di 60 indirizzi, è una potenza di 2. Assegniamo quindi 64 indirizzi. La maschera di rete per questa sottorete si trova come: n2 = 32 – log2 64 = 26. Il primo indirizzo in questo blocco è 14.24.74.128/26 mentre l’ultimo è 14.24.74.191/26.
Esempio 4.5 (continuazione) c. Il numero di indirizzi nel sottoblocco più piccolo, che necessita di 10 indirizzi, non è una potenza di 2. Assegniamo 16 indirizzi. La maschera di rete per questa sottorete si trova come: n3 = 32 – log2 16 = 28. Il primo indirizzo in questo blocco è 14.24.74.192/28, l’ultimo è 14.24.74.207/28. Se sommiamo tutti gli indirizzi nei sottoblocchi precedenti, il risultato è 208 indirizzi, il che significa che 48 indirizzi sono rimasti di riserva. Il primo indirizzo di questo gruppo è 14.24.74.208 mentre l’ultimo è 14.24.74.255. Non sappiamo ancora la lunghezza del prefisso. La Figura 4.27 mostra la configurazione dei blocchi, in figura è indicato anche il primo indirizzo di ogni blocco.
Figura 4.27: Soluzione dell’Esempio 4.5 1.#
Esempio 4.6 La Figura 4.28 mostra come un ISP abbia assegnato a quattro organizzazioni dei piccoli blocchi di indirizzi. L’ISP combina questi quattro blocchi in un singolo blocco e annuncia al resto della rete solamente quest’ultimo blocco. L’annuncio indica che ogni pacchetto destinato a questo blocco più grande deve essere inviato a questo ISP. Sarà poi responsabilità dell’ISP inoltrare il pacchetto all’organizzazione corretta.
Figura 4.28: Esempio di aggregazione degli indirizzi 1.#
Figura 4.29: Formato dei messaggi DHCP 1.#
Figura 4.30: Formato delle opzioni 1.#
Figura 4.31: Funzionamento del DHCP 1.#
Figura 4.32: Network Address Translation (NAT) 1.#
Figura 4.33: Traduzione dell’indirizzo 1.#
Figura 4.34: Traduzione 1.#
Tabella 4.1: Tabella di traduzione a cinque colonne
4.2.3 Inoltro dei datagrammi IP All’inizio del capitolo è stato discusso il tema dell’inoltro (forwarding) a livello di rete. In questa sezione, il concetto sarà esteso per includere anche il ruolo degli indirizzi IP nel forwarding. Come abbiamo detto in precedenza, inoltrare significa collocare il pacchetto nel giusto percorso che lo porterà a destinazione. Dato che oggi Internet è costituita da una combinazione di collegamenti (reti), inoltrare significa inviare il pacchetto al salto (hop) successivo (che può essere la destinazione finale o un dispositivo d’interconnessione intermedio). 1.#
4.2.3 Inoltro (continuazione) Inoltro basato sull’indirizzo di destinazione Aggregazione degli indirizzi Corrispondenza con la maschera più lunga Routing gerarchico Routing geografico 1.#
Figura 4.35: Modulo d’inoltro semplificato per l’indirizzamento senza classi 1.#
Esempio 4.7 Realizzare una tabella d’inoltro per il router R1 utilizzando la configurazione mostrata nella Figura 4.36. Soluzione La Tabella 4.2 mostra la tabella d’inoltro corrispondente: Table 4.2: Tabella d’inoltro per il router R1 nella Figura 4.36.
Figura 4.36: Configurazione dell’Esempio 4.7 1.#
Esempio 4.8 Nella Tabella 4.3 la stessa tabella d’inoltro è mostrata usando la rappresentazione in bit del prefisso. Tabella 4.3: Tabella d’inoltro per il router R1 (Figura 4.36) Quando arriva un datagramma in cui i 26 bit a sinistra nell’indirizzo di destinazione combaciano con i bit della prima riga, il pacchetto viene inviato attraverso l’interfaccia m2. Analogamente negli altri casi.
Esempio 4.9 Mostrare il processo d’inoltro di un datagramma, con indirizzo di destinazione 180.70.65.140, nel caso arrivi a R1 (Figura 4.36). Soluzione Il router esegue i seguenti passaggi: 1. La prima maschera (/26) è applicata all’indirizzo di destinazione. Il risultato è 180.70.65.128, che non combacia con l’indirizzo di rete corrispondente. 2. La seconda maschera (/25) è applicata all’indirizzo di destinazione. Il risultato è 180.70.65.128 che combacia con l’indirizzo di rete corrispondente. L’indirizzo del salto successivo e il numero di interfaccia m0 vengono estratti dalla tabella e usati per inoltrare il datagramma (vedi Capitolo 5).
Figura 4.37: Aggregazione degli indirizzi 1.#
Figura 4.38: Corrispondenza con la maschera più lunga 1.#
Esempio 4.10 Come esempio di routing gerarchico si consideri la Figura 4.39. A un ISP regionale sono stati assegnati 16.384 indirizzi che partono da 120.14.64.0. L’ISP regionale ha deciso di dividere questo blocco in 4 sottoblocchi, ciascuno con 4096 indirizzi. Tre di questi sottoblocchi sono assegnati a tre ISP locali; il quarto sottoblocco invece è riservato per uso futuro. La maschera per ciascun blocco risulta essere /20 poiché il blocco originale con maschera /18 è stato diviso in 4 sottoblocchi. La figura illustra anche come vengono assegnati gli indirizzi agli ISP locali o piccoli.
Figura 4.39: Routing gerarchico ed ISP 1.#
4.2.4 ICMPv4 L’IPv4 non implementa alcun meccanismo per segnalare gli errori o correggerli. Cosa accade se qualcosa va storto? Vi sono situazioni nelle quali si è verificato un errore, ma il protocollo IP non ha meccanismi integrati per renderlo noto all’host mittente. Inoltre, il protocollo IP è sprovvisto di un meccanismo per effettuare richieste sullo stato di un sistema remoto. L’Internet Control Message Protocol versione 4 (ICMPv4) è stato creato per porre rimedio a queste carenze. 1.#
4.2.4 ICMPv4 (continuazione) Messaggi Formato dei messaggi Messaggi di segnalazione errori Messaggi di interrogazione 1.#
Figura 4.40: Formato generale dei messaggi ICMP 1.#
Esempio 4.11 Una delle applicazioni che un host può utilizzare per verificare il funzionamento di un altro host è il programma ping. Il programma ping si basa sui messaggi di richiesta e risposta eco dell’ICMP. Un host invia una richiesta eco (tipo 8, codice 0) a un altro host che, se attivo, può rispondere con una risposta eco (tipo 0, codice 0). In maniera molto grossolana, il programma ping può anche misurare l’affidabilità e la congestione del router tra due host inviando una sequenza di messaggi richiesta-risposta.
Esempio 4.11 (continuazione) Invio di un messaggio ping al sito pads.cs.unibo.it:
Esempio 4.12 Il programma traceroute in UNIX o tracert in Windows può essere utilizzato per individuare il percorso di un datagramma dalla sorgente alla destinazione tramite l’identificazione dell’indirizzo IP di tutti i router che vengono visitati lungo il percorso. Solitamente il programma viene impostato per un massimo di 30 salti (router), che sono usualmente sufficienti per raggiungere la destinazione. Il programma traceroute ha un funzionamento molto diverso da ping. Ping è basato su due messaggi query; traceroute è invece implementato per mezzo di due messaggi di segnalazione degli errori: tempo scaduto e destinazione non raggiungibile. La Figura 4.41 mostra un esempio nel quale n = 3.
Figura 4.41: Esempio di funzionamento del programma traceroute 1.#
Esempio 4.14 (continuazione) Il programma traceroute imposta inoltre un timer per trovare il tempo di round-trip di ciascun router e della destinazione. La maggior parte dei programmi traceroute invia tre messaggi a ogni dispositivo, con lo stesso valore di TTL, per poter effettuare una stima migliore del tempo di round-trip. Quanto segue mostra un esempio di funzionamento del programma traceroute che utilizza tre messaggi per ogni dispositivo e ottiene quindi tre RTT:
4-3 Routing unicast In una rete come Internet lo scopo del livello di rete è quello di consegnare un datagramma dalla sorgente alla destinazione o alle destinazioni. Se un datagramma è destinato ad una sola destinazione (consegna uno-a-uno) si parla di routing unicast. In questa sezione e nella prossima si parlerà unicamente del routing unicast, mentre il routing multicast e il broadcast saranno trattati più avanti. 1.#
4.3.1 Concetti generali Nel routing unicast un pacchetto viene instradato, salto dopo salto, dalla sua sorgente alla sua destinazione con l’aiuto delle tabelle d’inoltro. L’host sorgente non ha bisogno di alcuna tabella d’inoltro visto che si limita a consegnare il proprio pacchetto al router di default della sua rete locale. Neanche l’host di destinazione ha bisogno di una tabella d’inoltro, poiché riceve il pacchetto direttamente dal router di default della sua rete locale. Questo significa che solo i router che collegano tra loro le diverse reti hanno bisogno di tabelle d’inoltro. 1.#
4.3.1 (continuazione) Una internet (rete di reti) come grafo Instradamento a costo minimo Alberi di costo minimo 1.#
Figura 4.42: Una rete e la sua rappresentazione sotto forma di grafo 1.#
Figura 4.43: Alberi a costo minimo per i nodi nella rete della 1.#
4.3.2 Algoritmi di instradamento Dopo aver parlato in generale degli alberi a costo minimo e delle tabelle d’inoltro che si possono costruire a partire da essi, ci concentriamo ora sugli algoritmi di routing. In passato ne sono stati progettati molti. Le differenze tra i vari metodi consistono nel modo in cui essi interpretano il costo minimo e creano l’albero a costo minimo per ciascun nodo. In questa sezione parleremo degli algoritmi alla base dei protocolli di instradamento, mentre in seguito si vedrà come questi algoritmi sono implementati nei protocolli di routing usati in Internet. 1.#
4.3.2 (continuazione) Routing basato su vettore distanza Equazione di Bellman-Ford Vettori distanza Algoritmo di routing basato su vettore distanza Conteggio all’infinito Ciclo a due nodi Split Horizon (orizzonte spaccato) Poisoned Reverse (inversione avvelenata) Instabilità a tre nodi 1.#
4.3.2 (continuazione) Routing a stato del collegamento Link-State Database (LSDB) Costruzione degli alberi a costo minimo (algoritmo di Dijkstra) Path-Vector Routing Alberi di copertura Creazione degli alberi di copertura Algoritmo path-vector 1.#
Figura 4.44: Rappresentazione grafica dell’equazione di Bellman-Ford 1.#
Figura 4.45: Il vettore distanza che corrisponde ad un albero 1.#
Figura 4.46: Vettori distanza iniziali dei nodi di una rete 1.#
Figura 4.47: Aggiornamento dei vettori di distanza 1.#
Tabella 4.4: Algoritmo del distance-vector routing
Figura 4.48: Instabilità a due nodi 1.#
Figura 4.49: Esempio di un link-state database 1.#
Figura 4.50: Gli LSP creati ed inviati da ciascun nodo per costruire l’LSDB 1.#
Table 4.5: Algoritmo di Dijkstra
Figura 4.51: Albero a costo minimo 1.#
Figura 4.52: Alberi di copertura nel path-vector routing 1.#
Figura 4.53: Costruzione dei path-vector alla inizializzazione dei nodi 1.#
Figura 4.54: Aggiornamento dei path-vector 1.#
Tabella 4.6: Algoritmo basato sul path-vector
4.3.3 Protocolli di routing unicast Nella sezione precedente si è parlato degli algoritmi di routing unicast, in questa sezione invece si analizzeranno i protocolli di routing unicast utilizzati in Internet. Anche se tre dei protocolli di cui parleremo si basano sugli algoritmi che abbiamo visto in precedenza, un protocollo è qualcosa di più di un algoritmo. Un protocollo deve definire il suo ambito di funzionamento, i messaggi che vengono scambiati, la comunicazione tra i router e l’interazione con i protocolli di altri ambiti. Dopo una breve introduzione, analizzeremo tre protocolli comunemente utilizzati in Internet:: RIP, OSPF e BGP. 1.#
4.3.3 (continuazione) Struttura di Internet Routing gerarchico I sistemi autonomi Routing Information Protocol (RIP) Conto dei salti (hop) Tabelle d’inoltro Implementazione di RIP Prestazioni 1.#
4.3.3 (continuazione) Open Shortest Path First (OSPF) Metrica Tabelle d’inoltro Aree Implementazione dell’OSPF Prestazioni Border Gateway Protocol Versione 4 (BGP4) Introduzione Attributi del percorso Selezione del percorso Messaggi Prestazioni 1.#
Figura 4.55: Struttura di Internet 1.#
Figura 4.56: Conto degli hop in RIP 1.#
Figura 4.57: Tabelle d’inoltro 1.#
Figura 4.58: Formato dei messaggi RIP 1.#
Esempio 4.13 La Figura 4.59 mostra un esempio abbastanza realistico del funzionamento del RIP in un AS. Per prima cosa, la figura mostra tutte le tabelle d’inoltro dopo che tutti i router sono stati accesi. Quindi mostra i cambiamenti nelle tabelle dopo lo scambio di alcuni messaggi d’aggiornamento. Alla fine vengono mostrare le tabelle d’inoltro che, in assenza di cambiamenti, si sono ormai stabilizzate.
Figura 4.59: Esempio di sistema autonomo che usa RIP (Parte I) 1.#
Figura 4.59: Esempio di sistema autonomo che usa RIP (Parte II) 1.#
Figura 4.59: Esempio di sistema autonomo che usa RIP (Parte III) 1.#
Figura 4.60: Utilizzo dei costi come metrica in OSPF 1.#
Figura 4.61: Tabelle d’inoltro dell’OSPF 1.#
Figura 4.62: Aree in un sistema autonomo 1.#
Figura 4.63: Formati dei messaggi OSPF (parte I) Attenzione 1.#
Figura 4.63: Formati dei messaggi OSPF (parte II) Attenzione 1.#
Figura 4.64: Un esempio di internet formata da quattro AS 1.#
Figura 4.65: Funzionamento di eBGP 1.#
Figura 4.66: Combinazione di sessioni eBGP e iBGP nella internet d’esempio 1.#
Figura 4.67: BGP: tabelle di percorso definitive (parte I) 1.#
Figura 4.67: BGP: tabelle di percorso definitive (parte II) 1.#
Figura 4.67: BGP: tabelle di percorso definitive (parte III) 1.#
Figura 4.68: Tabelle d’inoltro dopo l’aggiunta delle informazioni BGP (parte I) 1.#
Figura 4.68: Tabelle d’inoltro dopo l’aggiunta delle informazioni BGP (parte II) 1.#
Figura 4.69: Formato degli attributi di percorso 1.#
Figura 4.70: Diagramma di flusso per la selezione del percorso 1.#
Figura 4.71: Formato dei messaggi BGP 1.#
4-4 Routing multicast Oggi la comunicazione in Internet non è solo unicast; la comunicazione multicast sta crescendo rapidamente. In questa sezione, prima si discuteranno alcune delle idee generali alla base dell’unicast, del multicast e del broadcast. Successivamente, si parlerà di alcune questioni fondamentali del routing multicast. 1.#
4.4.1 Introduzione Nelle sezioni precedenti abbiamo appreso che l’inoltro di un datagramma da parte di un router è normalmente basato sul prefisso dell’indirizzo di destinazione presente nel datagramma, che definisce la rete alla quale l’host di destinazione è collegato. Una volta compreso il principio d’inoltro, possiamo ora definire più in dettaglio cosa intendiamo per unicast, multicast e broadcast. Analizziamo questi termini e il modo in cui si riferiscono ad Internet. 1.#
4.4.1 Introduzione (continuazione) Unicast Multicast Multicast e unicast multiplo Emulazione del multicast usando l’unicast Applicazioni multicast Broadcast 1.#
Figura 4.72: Invio unicast 1.#
Figura 4.73: Invio multicast 1.#
Figura 4.74: Confronto tra multicast e unicast multiplo 1.#
4.4.2 Principi di base del multicast Prima di affrontare lo studio dei protocolli di instradamento multicast in Internet, si discuterà ora di alcuni dei principi di base del multicast: indirizzi multicast, gruppi multicast, alberi multicast ottimi. 1.#
4.4.2 Multicast (continuazione) Indirizzi multicast Indirizzi multicast in IPv4 Raccolta di informazioni sui gruppi Internet Group Management Protocol (IGMP) Inoltro multicast Due approcci al multicast Approccio Source-based Tree Approccio Group-shared Tree 1.#
Figura 4.75: Esempio di utilizzo degli indirizzi multicast 1.#
Figura 4.76: Un indirizzo multicast in notazione binaria 1.#
Figura 4.77: Annuncio unicast rispetto ad annuncio multicast 1.#
Figura 4.78: Funzionamento di IGMP 1.#
Figura 4.79: Destinazione nell’unicast e nel multicast 1.#
Figura 4.80: L’inoltro dipende dalla destinazione e dalla sorgente 1.#
4-5 IP versione 6 L’esaurimento degli indirizzi e alcune limitazioni di IPv4, già nei primi anni ’90, hanno portato allo sviluppo di una nuova versione del protocollo. Questa nuova versione, chiamata Internet Protocol versione 6 (IPv6) o IP di nuova generazione (IP new generation, IPng) è nata con lo scopo di aumentare lo spazio degli indirizzi rispetto a IPv4, ridisegnare il formato dei datagrammi IP e allo stesso tempo rivedere anche alcuni protocolli ausiliari come ICMP. 1.#
4.5.1 Formato dei datagrammi IPv6 Il formato dei datagrammi IPv6 è mostrato nella Figura 4.81. Ciascun datagramma è composto da un’intestazione di base (base header) seguita dai dati (payload). L’intestazione di base occupa 40 byte, mentre il payload può arrivare fino a 65.535 byte. Concetto di flusso e priorità in IPv6 Frammentazione e riassemblaggio 1.#
Figura 4.81: Formato dei datagrammi IPv6 1.#
Figura 4.82: Payload in un datagramma IPv6 1.#
4.5.2 Indirizzamento IPv6 Il motivo principale del passaggio da IPv4 al IPv6 è la dimensione troppo ridotta dello spazio degli indirizzi in IPv4. In questa sezione si vedrà come l’enorme spazio degli indirizzi di IPv6 eviterà che in futuro si ripeta il problema dell’esaurimento degli indirizzi. Si vedrà anche come il nuovo indirizzamento risolva alcuni dei problemi legati all’indirizzamento IPv4. Un indirizzo IPv6 è lungo 128 bit (16 byte), quattro volte la lunghezza di un indirizzo IPv4. 1.#
4.5.2 IPv6 (continuazione) Spazio degli indirizzi Tre tipi di indirizzo Allocazione dello spazio degli indirizzi Indirizzi unicast globali Indirizzi speciali 1.#
Tabella 4.7: Prefissi dei blocchi IPv6 già assegnati
Figura 4.83: Indirizzi unicast globali 1.#
Figura 4.84: Indirizzi speciali 1.#
4.5.3 Passaggio da IPv4 a IPv6 Dual Stack Anche se è pronta una nuova versione del protocollo IP, rimane da capire come può essere effettuato il passaggio dalla versione corrente a quella nuova. La prima soluzione che viene in mente, la più banale, è definire un giorno di passaggio nel quale tutti gli host e router smetteranno di usare IPv4 ed inizieranno ad usare solo IPv6. Dual Stack Tunneling Traduzione dell’intestazione 1.#
Figura 4.85: Dual stack 1.#
Figura 4.86: Strategia di tunnelling 1.#
Figura 4.87: Strategia di traduzione dell’intestazione 1.#
4.5.4 ICMPv6 ICMP è un altro protocollo che è stato modificato nella versione 6 della pila di protocolli TCP/IP. L’Internet Control Message Protocol versione 6 (ICMPv6) ha lo stesso scopo della versione 4 ma è decisamente più complesso rispetto alla versione precedente. Alcuni protocolli che sono indipendenti nella versione 4 sono stati integrati in ICMPv6. Inoltre sono state aggiunte nuove tipologie di messaggi per estendere le sue funzionalità. La Figura 4.88 confronta il livello di rete della versione 4 con quello della versione 6. I protocolli ICMP, ARP e IGMP che erano presenti nella versione 4, nella 6 sono stati combinati nel solo protocollo ICMPv6. 1.#
Figura 4.88: Confronto del livello di rete nella versione 4 e 6 1.#
Figura 4.89: Formato dei messaggi ICMPv6 (parte I) 1.#
Figura 4.89: Formato dei messaggi ICMPv6 (parte II) 1.#