Instradamento e inoltro
In questa pagina 6
In questa pagina 4
L'instradamento (routing) calcola le tabelle (Algoritmi di instradamento - link state e distance vectorL'instradamento (routing) trova il percorso di costo minimo in un grafo pesato in cui i router sono nodi e le reti tra due router sono archi. Link state: ogni router diffonde con un flooding i pacchetti LSP sui propri collegamenti, ricostruisce tutto il grafo e applica Dijkstra (nodi con stato (distanza, permanente o temporaneo)). Distance vector: ogni router conosce solo i vicini e scambia con loro il proprio vettore delle distanze, aggiornato con Bellman-Ford $D_{A,w}=\min{D_{A,w},,D_{A,Y}+d_{Y,w}}$; converge in al più $n-1$ giri ma può soffrire del conteggio all'infinito (limite a 16, hold down, aggiornamenti immediati, split horizon con poison reverse). Path vector: ogni annuncio porta l'intero cammino, si sceglie per politica e non per costo, e i cicli si scoprono trovando sé stessi nel cammino. Dijkstra è corretto se i costi sono non negativi (invariante: un nodo permanente ha già la distanza vera); Bellman-Ford è corretto perché dopo $k$ giri conosce i cammini minimi con al più $k+1$ archi.Algoritmi di instradamento - link state e distance vector →, Protocolli di instradamento - RIP, OSPF e BGPIn Internet l'instradamento non si può fare con un solo protocollo, per scalabilità (tabelle troppo grandi) e per autonomia amministrativa: ogni ISP è un sistema autonomo (AS) con il proprio algoritmo. All'interno di un AS si usano i protocolli IGP: RIP (distance vector, numero di salti, massimo 15, aggiornamenti ogni circa 30 s, su UDP porta 520) e OSPF (link state con Dijkstra, aree collegate all'area 0, cinque tipi di LSA, messaggi direttamente in IP). Tra AS si usa BGP4 (path vector, su TCP porta 179, eBGP tra AS e iBGP dentro l'AS, scelta del percorso per politica: preferenza locale, AS-PATH più corto, origine; i cicli si evitano scartando i cammini che contengono già il proprio AS; quattro messaggi: Open, Keepalive, Notification, Update).Protocolli di instradamento - RIP, OSPF e BGP →); l'inoltro (forwarding) le usa pacchetto per pacchetto. Questa nota descrive l'inoltro: che cosa fa un host o un router quando deve spedire un datagramma IP (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →), come legge le tabelle e come tiene conto delle netmask (Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP →).
Definizione (inoltro). Mettere il pacchetto sul percorso verso la destinazione. Poiché Internet è una combinazione di collegamenti (reti), inoltrare vuol dire consegnare il pacchetto al salto successivo (next hop): si procede hop by hop.
IP è nato come protocollo senza connessione (approccio a datagramma): in quel caso l'inoltro si basa sull'indirizzo di destinazione del datagramma. Oggi c'è la tendenza a un funzionamento orientato alla connessione (circuito virtuale), nel quale l'inoltro si basa su un'etichetta (label) attaccata al datagramma (vedi MPLS in fondo).
L'inoltro può essere diretto o indiretto.
Inoltro diretto
È il caso in cui la destinazione è nella rete locale di chi inoltra, quindi raggiungibile direttamente.
Esempio. () vuole mandare un datagramma ad (); entrambi sono nella rete .
- confronta il NetID del proprio indirizzo con quello dell'indirizzo di destinazione: sono uguali, quindi è nella stessa rete locale.
- cerca nella tabella ARP il MAC corrispondente a (se non c'è lo chiede con una richiesta ARP: Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP →).
- Il livello IP passa il datagramma al livello MAC, che costruisce un frame con come destinazione.
Il frame ha: indirizzo MAC sorgente , destinazione ; datagramma IP con sorgente , destinazione .
Inoltro indiretto
La destinazione è su un'altra rete: serve almeno un altro salto. Quale? Lo dice la tabella di instradamento.
Esempio. () vuole spedire a con . Nella rete di c'è un router con indirizzo .
- confronta il NetID del proprio indirizzo con quello di : non sono uguali.
- deve consegnare il datagramma a un router di bordo: di solito ogni host è configurato con l'indirizzo IP di un default gateway, il router che si occuperà di instradare il pacchetto verso la rete di destinazione.
- trova nella tabella ARP il MAC del default gateway.
- Il livello MAC costruisce il frame e lo spedisce al router.
Il frame ha: MAC sorgente , MAC destinazione (il router, non ); datagramma IP con sorgente e destinazione .
Proprietà (cosa cambia a ogni salto). Gli indirizzi IP sorgente e destinazione restano gli stessi dall'origine alla destinazione finale; gli indirizzi MAC cambiano a ogni salto (sorgente = interfaccia che trasmette, destinazione = interfaccia del prossimo nodo). Si può verificare con l'esercizio Esercizio - pacchetti ARP e IP con router e con switch.
Esempio. Con un router tra due reti, un pacchetto da a viaggia come nel primo collegamento e nel secondo; in tutti e due gli indirizzi IP sono . Con un semplice switch (livello 2) invece anche i MAC non cambiano.
Nel caso di inoltro indiretto il mittente deve conoscere l'indirizzo IP del default gateway: lo ottiene dal messaggio DHCPACK (Protocollo DHCPDopo che a un'organizzazione è stato assegnato un blocco di indirizzi, configurare a mano IP e netmask di ogni host non è efficiente. BOOTP (obsoleto) associa in modo statico un indirizzo MAC a un indirizzo IP; DHCP (Dynamic Host Configuration Protocol) assegna gli indirizzi in modo dinamico, a prestito (lease) per un tempo limitato, anche a sistema operativo già avviato. Il dialogo client-server è su UDP (porta 67 server, 68 client) e usa quattro messaggi: DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK (più DHCPRELEASE a fine uso). Nell'ACK arrivano IP, netmask, default gateway e server DNS.Protocollo DHCP →), insieme alla netmask e al server DNS.
Router, interfacce e configurazione
Un router ha più interfacce (di uscita), ciascuna con un proprio indirizzo IP. La configurazione di un'interfaccia richiede indirizzo IP e netmask. Ogni router ha:
- la tabella di instradamento (routing table): contiene gli indirizzi delle reti di destinazione con le relative netmask e il next hop;
- la configurazione delle interfacce: l'elenco delle reti raggiungibili direttamente (dove si può consegnare senza altri router).
Esempio. Un router con eth0 ed eth1 . L'indirizzo di rete di ciascuna interfaccia si ottiene con l'AND con la maschera ():
- eth0: (perché , con 7 bit di host in questo ultimo byte si tiene solo il primo bit, , quindi );
- eth1: (perché , si tiene il primo bit, , quindi ).
Le due reti sono e .
La decisione di inoltro con le netmask
Un pacchetto da inoltrare viene trattato in due fasi, nell'ordine.
Fase 1: inoltro diretto (si guarda la configurazione delle interfacce)
Formula (condizione di inoltro diretto). Per ogni interfaccia del router: se si inoltra direttamente attraverso l'interfaccia ; altrimenti si prova l'interfaccia successiva. Se nessuna interfaccia corrisponde, l'inoltro è indiretto.
Qui è l'indirizzo di destinazione del pacchetto, e sono indirizzo e maschera dell'interfaccia .
Esempio. eth0 e destinazione : . Corrisponde (positive match): inoltro diretto da eth0.
Fase 2: inoltro indiretto (si guarda la tabella di instradamento)
Definizione (tabella di instradamento). Elenco di righe (rete, netmask, next hop): la rete è l'indirizzo di rete della destinazione, la netmask serve a confrontarlo, il next hop è l'indirizzo IP del router a cui consegnare il pacchetto (e deve appartenere a una delle reti delle interfacce, così il router sa da quale interfaccia mandarlo e quale MAC cercare con ARP).
Regola (corrispondenza della maschera più lunga, longest prefix match). Si esaminano le righe a partire da quella con la netmask più lunga (attenzione: la tabella non è necessariamente ordinata): per ogni riga si calcola e si confronta con l'indirizzo di rete della riga; la prima che corrisponde decide il next hop.
Perché la maschera più lunga. Una riga con prefisso più lungo descrive un gruppo di indirizzi più piccolo e quindi più preciso: se la destinazione appartiene a più righe (per esempio sta sia in sia in ) la riga più specifica contiene un'informazione più mirata, come "tutta la Francia" contro "Parigi" per una lettera diretta a Parigi. Le righe sono quindi annidate come insiemi: l'insieme di indirizzi del è contenuto in quello del , e si sceglie il più piccolo che contenga la destinazione. Come si esegue l'AND: lo si fa byte per byte; un byte di maschera lascia passare il byte dell'indirizzo, un byte lo azzera, e solo il byte "di confine" (per esempio in ) richiede di scrivere il numero in binario (AND bit a bitAND vale 1 solo se entrambi i bit valgono 1Algebra di Boole e porte logiche →).
Regola (default gateway o default route). L'ultima riga ha rete e netmask : corrisponde a qualsiasi indirizzo (la maschera è tutta a zero, quindi l'AND dà sempre ). Viene usata per tutte le destinazioni che non corrispondono a nessuna riga precedente; è la più corta delle maschere, quindi si prova per ultima.
Pseudocodice dell'intero procedimento:
inoltra(pacchetto):
per ogni interfaccia x:
se IP_dst AND NM(x) == IP(x) AND NM(x): consegna direttamente (ARP) su x; fine
ordina le righe della tabella per netmask decrescente
per ogni riga r:
se IP_dst AND NM(r) == rete(r): next hop = r.nexthop; trova l'interfaccia della rete del next hop; fine
(la riga di default corrisponde sempre, quindi si arriva sempre a una riga)Esempio completo
Router con interfacce eth0 (rete ) ed eth1 (rete ) e tabella:
| rete | netmask | next hop |
|---|---|---|
| 131.175.15.0 | 255.255.255.0 | 131.175.21.1 |
| 131.175.16.0 | 255.255.255.0 | 131.175.21.2 |
| 131.175.17.0 | 255.255.255.0 | 131.175.21.3 |
| 131.180.23.0 | 255.255.255.0 | 131.175.21.4 |
| 131.180.18.0 | 255.255.255.0 | 131.175.21.4 |
| 131.180.21.0 | 255.255.255.0 | 131.175.21.4 |
| 131.180.0.0 | 255.255.0.0 | 131.175.21.5 |
| 0.0.0.0 | 0.0.0.0 | 131.175.12.254 |
- . Con eth0: , uguale alla rete di eth0: inoltro diretto da eth0 (non si guarda neanche la tabella).
- . Con eth0: . Con eth1: . Nessuna corrispondenza: inoltro indiretto. Righe a maschera /24 in ordine: la prima () no, perché ; la seconda sì (). Next hop , che appartiene alla rete di eth0: si usa eth0.
- . Nessun match diretto. Tra le righe /24: no, no, sì: next hop . Anche la riga corrisponderebbe, ma ha la maschera più corta e non viene considerata.
- (variante). Nessun match tra le /24; la riga /16 () corrisponde: next hop .
- . Nessun match diretto e nessuna riga specifica: si usa la default route, next hop (rete di eth1).
Attenzione alla maschera giusta
Con i confronti conta la maschera di quella riga o interfaccia. Esempio con una tabella di tipo (rete, netmask, interfaccia): , , , , default via . Destinazione :
- con la riga /26: , con 6 bit di host si tengono i primi 2 bit, , quindi : , nessun match;
- con la riga /25: si tiene solo il primo bit, , quindi : = rete della riga: match, uscita .
Partendo dalla maschera più lunga si prova prima la /26, che non corrisponde, e poi la /25, che corrisponde: l'uscita è . Se si confrontasse con la maschera sbagliata (per esempio la /26 con la rete della riga /25) si concluderebbe a torto che non c'è corrispondenza.
Il grafico mostra gli intervalli dell'ultimo byte coperti dalle due righe: il /25 copre -, il /26 solo - (contenuto nel /25). La destinazione cade nel /25 ma non nel /26.
Grafico interattivo: Ultimo byte di 180.70.65.x: intervalli coperti dalle righe /25 e /26
Casi particolari
- Indirizzo di broadcast della rete d'arrivo. Un pacchetto con destinazione arrivato dall'interfaccia eth0 () è il broadcast diretto della rete di eth0: non va inoltrato (si è già nella rete) Esercizio - inoltro diretto e indiretto con router a tre interfacce.
- Indirizzi . significa "l'host 132 di questa rete" (unicast dentro la sottorete): il router lo scarta.
- Next hop sulla stessa interfaccia di arrivo. Se la tabella dice di mandare il pacchetto a un router che sta nella stessa rete da cui il pacchetto è arrivato, il router non lo inoltra come normale: il mittente avrebbe potuto raggiungerlo direttamente. In pratica il router manda al mittente un messaggio ICMP di redirect (Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →).
- TTL. A ogni inoltro il router decrementa il TTL del datagramma; se arriva a 0 lo scarta e invia un messaggio ICMP di tempo scaduto.
Esercizi svolti: Esercizio - tabella di instradamento del router R1 e inoltro di due pacchetti, Esercizio - tabelle di inoltro e instradamento dei router A e B, Esercizio - inoltro diretto e indiretto con router a tre interfacce, Esercizio - piano di indirizzamento con cinque router e collegamenti punto-punto.
Aggregazione delle rotte
Con gli indirizzi senza classi il numero di righe delle tabelle tende ad aumentare, perché lo scopo dell'indirizzamento senza classi è dividere lo spazio in blocchi gestibili. Tabelle più lunghe richiedono più tempo di ricerca (con una scansione riga per riga il costo cresce in proporzione al numero di righe, cioè è : Notazione asintoticaDefinizioni di O, Omega, Theta e o piccolo con le costanti c ed n0; esempi con costanti esplicite; proprietà (polinomi, esponenziali, logaritmi, somme, implicazioni tra notazioni); sommatorie notevoli; terminologia (logaritmica, lineare, polinomiale, esponenziale).Notazione asintotica →; i router reali usano strutture dati più veloci, ma ridurre le righe resta utile). L'indirizzamento gerarchico con aggregazione delle rotte (route aggregation) permette di annunciare le informazioni di instradamento in modo efficiente (Subnetting e supernettingIl subnetting divide un blocco di indirizzi in sottoblocchi più piccoli allungando la maschera ($n_{\text{sub}}=n_{\text{rete}}+s$, con $2^s$ sottoreti); il supernetting (aggregazione CIDR) fa l'opposto, accorciando il prefisso per unire blocchi contigui in uno più grande. Regole di progetto: ogni sottorete ha un numero di indirizzi potenza di 2 ($M=2^k\ge$ host richiesti $+2$), prefisso $n=32-k$, indirizzo iniziale multiplo di $M$; si assegnano prima le sottoreti più grandi. Per aggregare $2^j$ blocchi di prefisso $n$ servono blocchi contigui il cui primo indirizzo sia multiplo della dimensione dell'aggregato, e il nuovo prefisso è $n-j$.Subnetting e supernetting →).
Esempio. Il router è collegato a quattro organizzazioni, ciascuna con 64 indirizzi (maschera con 26 uni, 6 bit di host): , , , . ha una tabella più lunga, perché deve instradare correttamente ogni pacchetto verso l'organizzazione giusta (quattro righe /26). Il router , lontano da , ha bisogno di una sola riga: qualunque pacchetto con destinazione esce dall'interfaccia , indipendentemente dall'organizzazione. I quattro blocchi sono aggregati in uno solo ( indirizzi, cioè il ). avrebbe una tabella più lunga se i blocchi delle organizzazioni non fossero aggregabili in un blocco unico (condizioni: contigui, in numero potenza di 2, primo indirizzo multiplo della dimensione dell'aggregato).
Quando è possibile si aggregano i NetID per semplificare la tabella; negli Interior Gateway si possono aggregare quattro reti ma non le altre quattro (il blocco non è unico). Con l'aggregazione continua a funzionare l'instradamento grazie alla regola del prefisso più lungo: una riga più specifica (per un'eccezione, per esempio un cliente che si sposta) vince sempre su quella aggregata.
Inoltro con etichette: MPLS
Negli anni '80 l'instradamento ha cominciato a essere affiancato dalla commutazione (switching): serve una rete orientata alla connessione (circuiti virtuali, Commutazione di circuito e di pacchettoUn nodo di commutazione (switch) può collegare ingresso e uscita in tre modi. Commutazione di circuito: si stabilisce prima un collegamento fisico dedicato (rete telefonica), tempo di consegna $T=3Nt_p+Nt_s+M/R$. Commutazione di pacchetto a datagramma: il messaggio è diviso in $K$ pacchetti con intestazione, ognuno è instradato indipendentemente con store-and-forward, $T=Nt_p+(N+K-1)\frac{M/K+H}{R}$, con $K_{ott}=\sqrt{(N-1)M/H}$. A circuito virtuale: tre fasi (setup, dati, chiusura), connessione logica dedicata ma senza risorse dedicate, identificatore locale che cambia a ogni salto.Commutazione di circuito e di pacchetto →). Gli switch inoltrano in base a etichette (label) attaccate ai pacchetti. L'instradamento si basa sulla ricerca nella tabella (confronto di prefissi); la commutazione sull'accesso per indice, perché il circuito è già stato scelto dalla sorgente alla destinazione, e per questo è più veloce.
Per rendere IPv4 "simile a un servizio con connessione" si aggiungono le etichette per la scelta dell'interfaccia: il pacchetto IP è incapsulato in un pacchetto MPLS (Multi-Protocol Label Switching), un livello intermedio tra collegamento e rete, con un'intestazione di 32 bit che contiene un campo etichetta di 20 bit. La commutazione gerarchica si realizza in modo simile all'instradamento gerarchico (un pacchetto può avere più etichette).
Versione ripasso
- Instradamento (routing) = calcolo delle tabelle (Algoritmi di instradamento - link state e distance vectorL'instradamento (routing) trova il percorso di costo minimo in un grafo pesato in cui i router sono nodi e le reti tra due router sono archi. Link state: ogni router diffonde con un flooding i pacchetti LSP sui propri collegamenti, ricostruisce tutto il grafo e applica Dijkstra (nodi con stato (distanza, permanente o temporaneo)). Distance vector: ogni router conosce solo i vicini e scambia con loro il proprio vettore delle distanze, aggiornato con Bellman-Ford $D_{A,w}=\min{D_{A,w},,D_{A,Y}+d_{Y,w}}$; converge in al più $n-1$ giri ma può soffrire del conteggio all'infinito (limite a 16, hold down, aggiornamenti immediati, split horizon con poison reverse). Path vector: ogni annuncio porta l'intero cammino, si sceglie per politica e non per costo, e i cicli si scoprono trovando sé stessi nel cammino. Dijkstra è corretto se i costi sono non negativi (invariante: un nodo permanente ha già la distanza vera); Bellman-Ford è corretto perché dopo $k$ giri conosce i cammini minimi con al più $k+1$ archi.Algoritmi di instradamento - link state e distance vector →, Protocolli di instradamento - RIP, OSPF e BGPIn Internet l'instradamento non si può fare con un solo protocollo, per scalabilità (tabelle troppo grandi) e per autonomia amministrativa: ogni ISP è un sistema autonomo (AS) con il proprio algoritmo. All'interno di un AS si usano i protocolli IGP: RIP (distance vector, numero di salti, massimo 15, aggiornamenti ogni circa 30 s, su UDP porta 520) e OSPF (link state con Dijkstra, aree collegate all'area 0, cinque tipi di LSA, messaggi direttamente in IP). Tra AS si usa BGP4 (path vector, su TCP porta 179, eBGP tra AS e iBGP dentro l'AS, scelta del percorso per politica: preferenza locale, AS-PATH più corto, origine; i cicli si evitano scartando i cammini che contengono già il proprio AS; quattro messaggi: Open, Keepalive, Notification, Update).Protocolli di instradamento - RIP, OSPF e BGP →); inoltro (forwarding) = uso della tabella pacchetto per pacchetto, consegnando al salto successivo (next hop), hop by hop (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →, Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP →).
- IP a datagrammi: inoltro sull'indirizzo di destinazione; nei circuiti virtuali (MPLS) su una etichetta.
Inoltro diretto e indiretto
- Diretto: destinazione nella rete locale (NetID uguale): verso , cerca nella tabella ARP (o con una richiesta: Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP →) e il frame va a .
- Indiretto: altra rete. Esempio verso : NetID diversi, manda al default gateway (MAC di da ARP, non quello di ); datagramma .
- Il default gateway arriva dal DHCPACK (Protocollo DHCPDopo che a un'organizzazione è stato assegnato un blocco di indirizzi, configurare a mano IP e netmask di ogni host non è efficiente. BOOTP (obsoleto) associa in modo statico un indirizzo MAC a un indirizzo IP; DHCP (Dynamic Host Configuration Protocol) assegna gli indirizzi in modo dinamico, a prestito (lease) per un tempo limitato, anche a sistema operativo già avviato. Il dialogo client-server è su UDP (porta 67 server, 68 client) e usa quattro messaggi: DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK (più DHCPRELEASE a fine uso). Nell'ACK arrivano IP, netmask, default gateway e server DNS.Protocollo DHCP →).
Cosa cambia a ogni salto: gli IP sorgente e destinazione restano uguali dall'origine alla fine; i MAC cambiano a ogni salto (interfaccia che trasmette, interfaccia del nodo successivo). Es. con un router: , poi , IP sempre . Con uno switch (livello 2) anche i MAC restano uguali (Esercizio - pacchetti ARP e IP con router e con switch).
Router e interfacce
- Un router ha una tabella di instradamento (reti, netmask, next hop) e la configurazione delle interfacce (reti raggiungibili direttamente). Rete = IP AND netmask: eth0 () dà ; eth1 () dà .
La decisione di inoltro
Fase 1 (diretto): per ogni interfaccia , se si consegna direttamente da (con ARP); se nessuna corrisponde l'inoltro è indiretto.
Fase 2 (indiretto, longest prefix match): si esaminano le righe dalla netmask più lunga (la tabella non è necessariamente ordinata): se = rete della riga, la prima che corrisponde dà il next hop.
Default route: rete e netmask corrisponde sempre (l'AND dà ); ha la maschera più corta, quindi si prova per ultima.
Esempio completo. eth0 , eth1 ; tabella: , , , , e , , .
| destinazione | risultato |
|---|---|
| AND = rete di eth0: diretto da eth0 | |
| nessuna interfaccia; la riga no, la sì: next hop , uscita eth0 | |
| la /24 corrisponde, vince sulla /16 (più corta): next hop | |
| nessuna /24, la /16 corrisponde: next hop | |
| solo la default: next hop (rete di eth1) |
Maschera giusta. Righe e , destinazione (): con la /26 restano 2 bit, , no; con la /25 resta 1 bit, = rete: uscita .
Casi particolari:
- broadcast diretto della rete d'arrivo (es. da eth0 ): non si inoltra (Esercizio - inoltro diretto e indiretto con router a tre interfacce);
- (host 132 di questa rete): scartato;
- next hop sulla stessa rete d'arrivo: ICMP redirect al mittente (Protocollo ICMPIPv4 non ha meccanismi per segnalare o correggere gli errori né per interrogare host e router: li fornisce l'ICMP (Internet Control Message Protocol), un protocollo di rete i cui messaggi viaggiano dentro datagrammi IP con campo Protocol $=1$. I messaggi sono di errore (destination unreachable, tipo 3; time exceeded, tipo 11; redirect, tipo 5; parameter problem, tipo 12), sempre inviati alla sorgente originale e con l'intestazione IP più i primi 8 byte del datagramma che ha causato l'errore, oppure di interrogazione (echo request 8 e reply 0, timestamp 13-14). ICMP segnala ma non corregge. Con l'echo si fanno ping (RTT) e scoperta dell'MTU (bit D, codice 4, payload massimo $1500-20-8=1472$ byte); con time exceeded e port unreachable si fa traceroute ($n+1$ messaggi con TTL crescente). Attacchi: smurf e redirect.Protocollo ICMP →);
- a ogni inoltro il TTL scende di 1; a 0 il pacchetto è scartato con ICMP di tempo scaduto.
Esercizi: Esercizio - tabella di instradamento del router R1 e inoltro di due pacchetti, Esercizio - tabelle di inoltro e instradamento dei router A e B. Lab: Routing statico in KatharàLaboratorio 2 (LAB2). Due LAN (195.11.14.0/24 e 200.1.1.0/24) sono unite da due router r1 e r2 collegati da una rete 100.0.0.8/30. Una interfaccia attiva inserisce da sola nella tabella di instradamento solo la rete direttamente collegata: per le altre servono rotte inserite a mano. I PC usano una rotta predefinita (route add default gw 195.11.14.1), i router rotte statiche (route add -net 195.11.14.0/24 gw 100.0.0.9 dev eth1). Senza la rotta di ritorno su r2 le richieste di ping arrivano ma le risposte no: la raggiungibilità vale solo se c'è un percorso in entrambi i versi. A configurazione finita ping da pc1 a pc2 risponde con ttl=62 (64 meno 2 router).Routing statico in Katharà →.
Aggregazione e MPLS
- Aggregazione delle rotte (Subnetting e supernettingIl subnetting divide un blocco di indirizzi in sottoblocchi più piccoli allungando la maschera ($n_{\text{sub}}=n_{\text{rete}}+s$, con $2^s$ sottoreti); il supernetting (aggregazione CIDR) fa l'opposto, accorciando il prefisso per unire blocchi contigui in uno più grande. Regole di progetto: ogni sottorete ha un numero di indirizzi potenza di 2 ($M=2^k\ge$ host richiesti $+2$), prefisso $n=32-k$, indirizzo iniziale multiplo di $M$; si assegnano prima le sottoreti più grandi. Per aggregare $2^j$ blocchi di prefisso $n$ servono blocchi contigui il cui primo indirizzo sia multiplo della dimensione dell'aggregato, e il nuovo prefisso è $n-j$.Subnetting e supernetting →): senza classi le tabelle crescono e la ricerca rallenta; blocchi contigui si annunciano come uno. Es. , , , ( indirizzi): ha quattro righe, il lontano una sola, . Un'eccezione più specifica vince sull'aggregato (prefisso più lungo).
- MPLS (Commutazione di circuito e di pacchettoUn nodo di commutazione (switch) può collegare ingresso e uscita in tre modi. Commutazione di circuito: si stabilisce prima un collegamento fisico dedicato (rete telefonica), tempo di consegna $T=3Nt_p+Nt_s+M/R$. Commutazione di pacchetto a datagramma: il messaggio è diviso in $K$ pacchetti con intestazione, ognuno è instradato indipendentemente con store-and-forward, $T=Nt_p+(N+K-1)\frac{M/K+H}{R}$, con $K_{ott}=\sqrt{(N-1)M/H}$. A circuito virtuale: tre fasi (setup, dati, chiusura), connessione logica dedicata ma senza risorse dedicate, identificatore locale che cambia a ogni salto.Commutazione di circuito e di pacchetto →): switch inoltrano per etichetta; instradamento = ricerca per prefissi, commutazione = accesso per indice (più veloce, circuito già scelto). Intestazione MPLS di 32 bit con etichetta di 20 bit.
- Errori tipici: applicare la maschera di un'altra riga, fermarsi alla prima riga che corrisponde senza partire dalla maschera più lunga, mettere come MAC di destinazione quello del destinatario finale invece del router.
Esercizi su questo argomento
- Esercizio - Blocco 131.175.208.0-21 con quattro LAN e inoltro di quattro pacchetti
- Esercizio - indirizzamento di LAN A e LAN B e tabella di router 1
- Esercizio - Indirizzi di tre LAN, tabelle di Router 1 e Router 2 e sottoreti di LAN B
- Esercizio - Inoltro di quattro pacchetti, rete da 1014 host e sottoreti da 34 nodi
- Esercizio - Inoltro di tre pacchetti e piano di indirizzamento di un blocco 13.14.0.0-16
- Esercizio - inoltro diretto e indiretto con router a tre interfacce
- Esercizio - pacchetti ARP e IP con router e con switch
- Esercizio - piano di indirizzamento con cinque router e collegamenti punto-punto
- Esercizio - Piano di indirizzamento di nove LAN, inoltro di cinque pacchetti e due sottoreti da 1950 host
- Esercizio - piano di indirizzamento e inoltro con MTU (tema d'esame)
- Esercizio - rete di appartenenza di un indirizzo
- Esercizio - simulazione del lab test
- Esercizio - tabella di instradamento del router R1 e inoltro di due pacchetti
- Esercizio - tabelle di inoltro e instradamento dei router A e B
Lezioni in cui compare
- Lezione 14 · Algoritmi di instradamento - link state e distance vector
- Lezione 15 · Path vector, inoltro e correttezza di Dijkstra e Bellman-Ford
- Lezione 16 · LAB2, routing statico
- Lezione 19 · LAB3, routing avanzato
- Lezione 23 · NAT ed esercizi sul livello di rete
- Lezione 24 · Ripasso di esercizi su rete, collegamento e trasporto
- Lezione 36 · Esercizi per l'esame, simulazione 3 esercizio 2 e simulazione 1 esercizio 1
- Lezione 37 · Esercizi per l'esame, simulazione 1 esercizio 2 e simulazione 2 esercizio 1
Teoria collegata
- Algoritmi di instradamento - link state e distance vector
- Attacco man-in-the-middle
- Datagramma IP e frammentazione
- Elementi di rete - hub, switch e router
- Firewall
- Livello di rete e indirizzamento IP
- Protocolli di instradamento - RIP, OSPF e BGP
- Protocollo ARP
- Protocollo DHCP
- Protocollo ICMP
- Router CISCO
- Routing avanzato in Katharà
- Routing statico in Katharà
- Subnetting e supernetting
- VPN