Esercizio - pacchetti ARP e IP con router e con switch
In questa pagina 5
Testo. Le interfacce sono indicate con le lettere ; e sono gli indirizzi IP e MAC dell'interfaccia .
- Esercizio 19. La rete contiene l'host e l'interfaccia di un router; la rete contiene l'interfaccia del router e l'host . Le tabelle ARP di , e del router sono vuote. deve inviare un pacchetto IP a ; deve rispondere con un pacchetto ad . Disegnare i pacchetti inviati da ogni host in ciascun collegamento, specificando gli indirizzi MAC e IP di ogni pacchetto.
- Esercizio 20. Ripetere l'esercizio 19 sostituendo il router con uno switch di livello 2.
Teoria usata: 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 →, Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro → (inoltro diretto e indiretto, default gateway), LAN - Ethernet e Wi-FiUna LAN copre un'area limitata ed è definita dalla famiglia IEEE 802.x (802.3 Ethernet, 802.11 Wi-Fi), che divide il livello di collegamento in LLC e MAC. Ethernet è senza connessione, senza controllo di flusso e senza ACK; usa CSMA/CD 1-persistent; il frame va da 64 a 1518 byte (indirizzi di 6 byte, tipo/lunghezza, dati 46-1500, CRC di 4) e il minimo di 64 B deriva da $t_F\ge2\tau_p$. Dal 10 Mbit/s a coassiale fino al 10 Gbit/s su fibra, con switch full-duplex che eliminano le collisioni. Il Wi-Fi (802.11) usa CSMA/CA, ha i modi BSS (con access point) e ad hoc, EBSS con sistema di distribuzione; adatta il bitrate all'SNR; ha problemi del terminale nascosto e del terminale esposto, risolti in parte da RTS/CTS e NAV.LAN - Ethernet e Wi-Fi → (inoltro dello switch).
Idee di base
- Un host mette nel frame un indirizzo MAC di destinazione che è quello del prossimo salto sulla stessa rete: se la destinazione IP è nella sua rete, il MAC della destinazione; altrimenti il MAC del default gateway.
- L'indirizzo IP sorgente/destinazione del pacchetto non cambia da un capo all'altro; gli indirizzi MAC cambiano a ogni collegamento (a ogni router).
- Per conoscere il MAC corrispondente a un IP della stessa rete si usa ARP: una richiesta (ARP request) in broadcast a livello 2 (MAC di destinazione "tutti"), una risposta (ARP reply) in unicast. La richiesta contiene già IP e MAC di chi la invia: chi la riceve può così imparare il MAC del mittente senza un'altra richiesta.
- Il router ha una interfaccia (con IP e MAC propri) per ogni rete. Lo switch invece non ha né IP né, di fatto, MAC da usare come destinazione dei frame: li inoltra imparando in quale porta si trova ciascun MAC.
Esercizio 19: con il router
e stanno su reti IP diverse ( ed ): serve un inoltro indiretto, e usa il router come gateway (il cui conosce, per esempio da DHCP: 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 →). Come capisce che è in un'altra rete: calcola e lo confronta con l'indirizzo della propria rete (appartenenza a una reteun indirizzo appartiene a una rete se AND con la maschera dà l'indirizzo di reteLivello di rete e indirizzamento IP →); essendo diversi, il pacchetto va al gateway, e l'ARP (che funziona solo sul collegamento locale) deve chiedere il MAC del gateway e non quello di : non risponderebbe mai a un broadcast di .
Fase 1: da al router (rete ).
- non conosce . ARP request in broadcast: livello 2: sorgente , destinazione broadcast; livello ARP: "chi ha ? (mittente , )".
- ARP reply da : livello 2: sorgente , destinazione ; livello ARP: è . (Il router ha anche imparato dalla richiesta.)
- Pacchetto su : livello 2: sorgente , destinazione ; livello 3: sorgente , destinazione .
Fase 2: dal router a (rete ). Il router trova nella rete della sua interfaccia (inoltro diretto), ma non conosce .
- ARP request in broadcast su : livello 2: sorgente , destinazione broadcast; ARP: "chi ha ? (mittente , )".
- ARP reply: sorgente , destinazione ; è . ( ha imparato .)
- Pacchetto su : livello 2: sorgente , destinazione ; livello 3: sempre sorgente , destinazione .
Fase 3: la risposta di verso . ha fuori dalla sua rete: usa il gateway , il cui MAC ha già imparato dalla richiesta del punto 4: nessun ARP.
- Pacchetto su : livello 2: sorgente , destinazione ; livello 3: sorgente , destinazione .
- Il router inoltra su ; conosce già (dalla richiesta del punto 1): livello 2: sorgente , destinazione ; livello 3: sorgente , destinazione .
| collegamento | frame | MAC sorg. | MAC dest. | IP sorg. | IP dest. |
|---|---|---|---|---|---|
| ARP request | broadcast | ( cerca ) | |||
| ARP reply | |||||
| dati | |||||
| ARP request | broadcast | ( cerca ) | |||
| ARP reply | |||||
| dati | |||||
| dati | |||||
| dati |
Il router, inoltrando, diminuisce il TTL di e ricalcola il checksum dell'intestazione 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 →), ma non cambia gli indirizzi IP.
Esercizio 20: con lo switch
Ora e sono nella stessa rete IP: inoltro diretto, nessun gateway. I punti e sono porte dello switch, senza indirizzi IP.
- vuole il MAC di : ARP request in broadcast: sorgente , destinazione broadcast; ARP: "chi ha ?". Lo switch inoltra i broadcast su tutte le porte (non c'è un MAC destinazione da imparare): la richiesta arriva a e anche agli altri host. Intanto impara che sta dalla parte di .
- risponde in unicast: sorgente , destinazione ; ARP: è . Lo switch inoltra solo verso la porta di e impara dove sta .
- Pacchetto : sorgente , destinazione ; sorgente , destinazione . È lo stesso frame su entrambi i lati dello switch: nulla viene riscritto.
- risponde: conosce già (dalla richiesta): frame con sorgente , destinazione ; IP sorgente , destinazione ; lo switch lo inoltra solo verso la porta di .
| frame | MAC sorg. | MAC dest. | IP sorg. | IP dest. |
|---|---|---|---|---|
| ARP request ( cerca ) | broadcast | |||
| ARP reply | ||||
| dati | ||||
| dati |
Come lo switch decide le porte (Elementi di rete - hub, switch e routerI dispositivi che interconnettono le reti si distinguono per il livello della pila che arrivano a leggere. Hub (livello 1): ripetitore, rigenera il segnale e lo manda su tutte le porte, tutte le stazioni condividono la capacità. Bridge e switch (livello 2): leggono l'indirizzo MAC e inoltrano solo verso la porta giusta, imparando la tabella (FDB) dagli indirizzi sorgente. Router (livello 3): leggono l'indirizzo IP e collegano reti indipendenti (internetwork). Switch e bridge isolano il traffico e sono plug and play; il router fa instradamento ottimo ma va configurato.Elementi di rete - hub, switch e router →). Ha una tabella (MAC porta) che riempie leggendo il MAC sorgente di ogni frame che passa: dopo la richiesta ARP sa che è dal lato di , dopo la risposta che è dal lato di . Per un frame con destinazione sconosciuta o broadcast fa flooding su tutte le porte tranne quella di arrivo; con destinazione nota lo manda solo sulla porta giusta. Quindi la richiesta ARP (broadcast) arriva a tutti, mentre risposta e dati viaggiano solo tra e . Conteggio dei frame visti da e : (richiesta, risposta, dati, risposta dati), contro gli dell'esercizio 19 ( per ciascun collegamento).
Confronto. Con il router i MAC cambiano a ogni collegamento (due coppie diverse) e servono due scambi ARP, uno per rete; con lo switch c'è un solo scambio ARP, gli indirizzi MAC sono sempre / e il frame non viene riscritto. Gli indirizzi IP non cambiano mai.
Confronto con la soluzione ufficiale
Coincide: ARP request/reply , pacchetto con , ARP request/reply , pacchetto con ; risposta e poi con IP ; per lo switch un solo ARP e frame con . La soluzione ufficiale non mostra un ARP per la risposta: ciò richiede che e il router abbiano imparato il MAC del mittente dalla richiesta ARP, come assunto sopra.
Errori comuni
- Cambiare gli indirizzi IP al passaggio del router: cambiano solo i MAC.
- Usare come MAC di destinazione di quello di (con il router): il frame va al gateway.
- Dimenticare che l'ARP request è in broadcast (MAC destinazione tutti ) e la reply in unicast.
- Attribuire indirizzi IP o MAC allo switch.
Versione ripasso
Dati. contiene e l'interfaccia del router, l'interfaccia e ; tabelle ARP vuote; manda un pacchetto a e risponde. Esercizio 20: uno switch al posto del router.
Regole (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 →, Instradamento e inoltroL'inoltro (forwarding) mette il pacchetto sulla strada verso la destinazione, un salto alla volta (hop by hop). Se la destinazione è nella stessa rete del mittente l'inoltro è diretto (si usa l'ARP per il MAC del destinatario), altrimenti è indiretto: il pacchetto va al router successivo (next hop) indicato dalla tabella di instradamento, o al default gateway. Con le netmask: l'inoltro è diretto attraverso l'interfaccia $x$ se $\text{IP(dst)}\ \text{AND}\ \text{NM}(x)=\text{IP}(x)\ \text{AND}\ \text{NM}(x)$; altrimenti si scorre la tabella dalla maschera più lunga (longest prefix match) e si usa il primo match. La riga con rete $0.0.0.0$ e maschera $0.0.0.0$ (default route) corrisponde sempre. L'aggregazione di rotte (route aggregation) riduce la tabella, e nell'inoltro con etichette (MPLS) la tabella si consulta per indice.Instradamento e inoltro →): MAC di destinazione MAC del prossimo salto nella stessa rete (destinazione se diretto, gateway se indiretto); gli IP non cambiano, i MAC cambiano a ogni router. ARP request in broadcast (contiene IP e MAC del mittente), reply in unicast.
Esercizio 19 (router, inoltro indiretto). Sigle: MMAC, IIP.
| rete | frame | MAC sorg. | MAC dest. | IP |
|---|---|---|---|---|
| ARP request (?) | M- | broadcast | ||
| ARP reply | M- | M- | ||
| dati | M- | M- | I- I- | |
| ARP request (?) | M- | broadcast | ||
| ARP reply | M- | M- | ||
| dati | M- | M- | I- I- | |
| dati | M- | M- | I- I- | |
| dati | M- | M- | I- I- |
Per la risposta non servono altri ARP: i MAC sono già stati imparati dalle richieste. Il router decrementa il TTL e ricalcola il checksum (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 →).
Esercizio 20 (switch, inoltro diretto). Un solo ARP; lo switch non ha IP né MAC come destinazione, inoltra il broadcast su tutte le porte e impara le porte dai MAC sorgente. I frame non vengono riscritti.
| frame | MAC sorg. | MAC dest. | IP |
|---|---|---|---|
| ARP request (?) | M- | broadcast | |
| ARP reply | M- | M- | |
| dati | M- | M- | I- I- |
| dati | M- | M- | I- I- |
Errori: cambiare gli IP al router; M- come destinazione di con il router; ARP request non in broadcast; IP o MAC allo switch.