Salta al contenuto
Note per Studenti Esercizio - pacchetti ARP e IP con router e con switch

Esercizio - pacchetti ARP e IP con router e con switch

In questa pagina 5

Testo. Le interfacce sono indicate con le lettere A,B,C,DA,B,C,D; IP-x\text{IP-}x e MAC-x\text{MAC-}x sono gli indirizzi IP e MAC dell'interfaccia xx.

  • Esercizio 19. La rete eth0eth_0 contiene l'host AA e l'interfaccia BB di un router; la rete eth1eth_1 contiene l'interfaccia CC del router e l'host DD. Le tabelle ARP di AA, DD e del router sono vuote. AA deve inviare un pacchetto IP a IP-D\text{IP-}D; DD deve rispondere con un pacchetto ad AA. 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

AA e DD stanno su reti IP diverse (eth0eth_0 ed eth1eth_1): serve un inoltro indiretto, e AA usa il router come gateway (il cui IP-B\text{IP-}B AA 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 AA capisce che DD è in un'altra rete: calcola IP-D AND mascheraA\text{IP-}D\ \text{AND}\ \text{maschera}_A 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 DD: DD non risponderebbe mai a un broadcast di eth0eth_0.

Fase 1: da AA al router (rete eth0eth_0).

  1. AA non conosce MAC-B\text{MAC-}B. ARP request in broadcast: livello 2: sorgente MAC-A\text{MAC-}A, destinazione broadcast; livello ARP: "chi ha IP-B\text{IP-}B? (mittente IP-A\text{IP-}A, MAC-A\text{MAC-}A)".
  2. ARP reply da BB: livello 2: sorgente MAC-B\text{MAC-}B, destinazione MAC-A\text{MAC-}A; livello ARP: IP-B\text{IP-}B è MAC-B\text{MAC-}B. (Il router ha anche imparato MAC-A\text{MAC-}A dalla richiesta.)
  3. Pacchetto A→DA\to D su eth0eth_0: livello 2: sorgente MAC-A\text{MAC-}A, destinazione MAC-B\text{MAC-}B; livello 3: sorgente IP-A\text{IP-}A, destinazione IP-D\text{IP-}D.

Fase 2: dal router a DD (rete eth1eth_1). Il router trova IP-D\text{IP-}D nella rete della sua interfaccia CC (inoltro diretto), ma non conosce MAC-D\text{MAC-}D.

  1. ARP request in broadcast su eth1eth_1: livello 2: sorgente MAC-C\text{MAC-}C, destinazione broadcast; ARP: "chi ha IP-D\text{IP-}D? (mittente IP-C\text{IP-}C, MAC-C\text{MAC-}C)".
  2. ARP reply: sorgente MAC-D\text{MAC-}D, destinazione MAC-C\text{MAC-}C; IP-D\text{IP-}D è MAC-D\text{MAC-}D. (DD ha imparato MAC-C\text{MAC-}C.)
  3. Pacchetto A→DA\to D su eth1eth_1: livello 2: sorgente MAC-C\text{MAC-}C, destinazione MAC-D\text{MAC-}D; livello 3: sempre sorgente IP-A\text{IP-}A, destinazione IP-D\text{IP-}D.

Fase 3: la risposta di DD verso AA. DD ha IP-A\text{IP-}A fuori dalla sua rete: usa il gateway CC, il cui MAC ha già imparato dalla richiesta del punto 4: nessun ARP.

  1. Pacchetto D→AD\to A su eth1eth_1: livello 2: sorgente MAC-D\text{MAC-}D, destinazione MAC-C\text{MAC-}C; livello 3: sorgente IP-D\text{IP-}D, destinazione IP-A\text{IP-}A.
  2. Il router inoltra su eth0eth_0; conosce già MAC-A\text{MAC-}A (dalla richiesta del punto 1): livello 2: sorgente MAC-B\text{MAC-}B, destinazione MAC-A\text{MAC-}A; livello 3: sorgente IP-D\text{IP-}D, destinazione IP-A\text{IP-}A.
collegamento frame MAC sorg. MAC dest. IP sorg. IP dest.
eth0eth_0 ARP request MAC-A\text{MAC-}A broadcast (IP-A\text{IP-}A cerca IP-B\text{IP-}B)
eth0eth_0 ARP reply MAC-B\text{MAC-}B MAC-A\text{MAC-}A
eth0eth_0 dati A→DA\to D MAC-A\text{MAC-}A MAC-B\text{MAC-}B IP-A\text{IP-}A IP-D\text{IP-}D
eth1eth_1 ARP request MAC-C\text{MAC-}C broadcast (IP-C\text{IP-}C cerca IP-D\text{IP-}D)
eth1eth_1 ARP reply MAC-D\text{MAC-}D MAC-C\text{MAC-}C
eth1eth_1 dati A→DA\to D MAC-C\text{MAC-}C MAC-D\text{MAC-}D IP-A\text{IP-}A IP-D\text{IP-}D
eth1eth_1 dati D→AD\to A MAC-D\text{MAC-}D MAC-C\text{MAC-}C IP-D\text{IP-}D IP-A\text{IP-}A
eth0eth_0 dati D→AD\to A MAC-B\text{MAC-}B MAC-A\text{MAC-}A IP-D\text{IP-}D IP-A\text{IP-}A

Il router, inoltrando, diminuisce il TTL di 11 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 AA e DD sono nella stessa rete IP: inoltro diretto, nessun gateway. I punti BB e CC sono porte dello switch, senza indirizzi IP.

  1. AA vuole il MAC di DD: ARP request in broadcast: sorgente MAC-A\text{MAC-}A, destinazione broadcast; ARP: "chi ha IP-D\text{IP-}D?". Lo switch inoltra i broadcast su tutte le porte (non c'è un MAC destinazione da imparare): la richiesta arriva a DD e anche agli altri host. Intanto impara che MAC-A\text{MAC-}A sta dalla parte di AA.
  2. DD risponde in unicast: sorgente MAC-D\text{MAC-}D, destinazione MAC-A\text{MAC-}A; ARP: IP-D\text{IP-}D è MAC-D\text{MAC-}D. Lo switch inoltra solo verso la porta di AA e impara dove sta MAC-D\text{MAC-}D.
  3. Pacchetto A→DA\to D: sorgente MAC-A\text{MAC-}A, destinazione MAC-D\text{MAC-}D; sorgente IP-A\text{IP-}A, destinazione IP-D\text{IP-}D. È lo stesso frame su entrambi i lati dello switch: nulla viene riscritto.
  4. DD risponde: conosce già MAC-A\text{MAC-}A (dalla richiesta): frame con sorgente MAC-D\text{MAC-}D, destinazione MAC-A\text{MAC-}A; IP sorgente IP-D\text{IP-}D, destinazione IP-A\text{IP-}A; lo switch lo inoltra solo verso la porta di AA.
frame MAC sorg. MAC dest. IP sorg. IP dest.
ARP request (IP-A\text{IP-}A cerca IP-D\text{IP-}D) MAC-A\text{MAC-}A broadcast
ARP reply MAC-D\text{MAC-}D MAC-A\text{MAC-}A
dati A→DA\to D MAC-A\text{MAC-}A MAC-D\text{MAC-}D IP-A\text{IP-}A IP-D\text{IP-}D
dati D→AD\to A MAC-D\text{MAC-}D MAC-A\text{MAC-}A IP-D\text{IP-}D IP-A\text{IP-}A

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 →\to porta) che riempie leggendo il MAC sorgente di ogni frame che passa: dopo la richiesta ARP sa che MAC-A\text{MAC-}A è dal lato di AA, dopo la risposta che MAC-D\text{MAC-}D è dal lato di DD. 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 AA e DD. Conteggio dei frame visti da AA e DD: 44 (richiesta, risposta, dati, risposta dati), contro gli 88 dell'esercizio 19 (44 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 MAC-A\text{MAC-}A/MAC-D\text{MAC-}D e il frame non viene riscritto. Gli indirizzi IP non cambiano mai.

Confronto con la soluzione ufficiale

Coincide: ARP request/reply A↔BA\leftrightarrow B, pacchetto A→DA\to D con MAC-A→MAC-B\text{MAC-}A\to\text{MAC-}B, ARP request/reply C↔DC\leftrightarrow D, pacchetto con MAC-C→MAC-D\text{MAC-}C\to\text{MAC-}D; risposta MAC-D→MAC-C\text{MAC-}D\to\text{MAC-}C e poi MAC-B→MAC-A\text{MAC-}B\to\text{MAC-}A con IP IP-D→IP-A\text{IP-}D\to\text{IP-}A; per lo switch un solo ARP A↔DA\leftrightarrow D e frame con MAC-A↔MAC-D\text{MAC-}A\leftrightarrow\text{MAC-}D. La soluzione ufficiale non mostra un ARP per la risposta: ciò richiede che DD 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 AA quello di DD (con il router): il frame va al gateway.
  • Dimenticare che l'ARP request è in broadcast (MAC destinazione tutti 11) e la reply in unicast.
  • Attribuire indirizzi IP o MAC allo switch.

Versione ripasso

Dati. eth0eth_0 contiene AA e l'interfaccia BB del router, eth1eth_1 l'interfaccia CC e DD; tabelle ARP vuote; AA manda un pacchetto a DD e DD 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: M==MAC, I==IP.

rete frame MAC sorg. MAC dest. IP
eth0eth_0 ARP request (IP-B\text{IP-}B?) M-AA broadcast
eth0eth_0 ARP reply M-BB M-AA
eth0eth_0 dati A→DA\to D M-AA M-BB I-A→A\to I-DD
eth1eth_1 ARP request (IP-D\text{IP-}D?) M-CC broadcast
eth1eth_1 ARP reply M-DD M-CC
eth1eth_1 dati A→DA\to D M-CC M-DD I-A→A\to I-DD
eth1eth_1 dati D→AD\to A M-DD M-CC I-D→D\to I-AA
eth0eth_0 dati D→AD\to A M-BB M-AA I-D→D\to I-AA

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 (IP-D\text{IP-}D?) M-AA broadcast
ARP reply M-DD M-AA
dati A→DA\to D M-AA M-DD I-A→A\to I-DD
dati D→AD\to A M-DD M-AA I-D→D\to I-AA

Errori: cambiare gli IP al router; M-DD come destinazione di AA con il router; ARP request non in broadcast; IP o MAC allo switch.

Lezioni in cui compare

Teoria collegata