Protocollo ARP
In questa pagina 6
Il problema: tre nomi per lo stesso host
Lo stesso host si può indicare in tre modi:
- nome (host name):
giordani.dei.unipd.it; - indirizzo Internet (IP), a livello rete:
147.162.97.17; - indirizzo MAC, a livello collegamento:
0:0:c:6:13:4a.
La conversione nome IP la fa il DNS. La conversione IP MAC la fa ARP (Address Resolution Protocol).
Perché serve: un datagramma IP viene incapsulato in un frame (nella parte SDU), e per trasmetterlo sul collegamento fisico serve nel frame l'indirizzo MAC del prossimo nodo, non il suo IP: il livello di collegamento non capisce gli indirizzi IP (Livello di collegamento e framingIl livello di collegamento (DLL) consegna un frame da un nodo a un nodo adiacente su un collegamento. Servizi: framing, accesso al mezzo (MAC) con indirizzi MAC a 48 bit, controllo di flusso, rilevazione e correzione degli errori. Si divide in DLC (framing, controllo di errore e di flusso) e MAC (accesso al mezzo condiviso). Il framing delimita i frame con un flag: nei protocolli a byte (flag di 8 bit, ESC) si usa il byte stuffing, in quelli a bit (flag 01111110) il bit stuffing, che inserisce uno 0 dopo ogni cinque 1 consecutivi.Livello di collegamento e framing →). Ogni volta che un nodo ha un datagramma IP da spedire:
- il mittente conosce l'indirizzo IP della destinazione;
- il mittente conosce l'IP del router che inoltra il datagramma (il router predefinito, default router);
- ogni router lungo il percorso trova l'IP del router successivo nella tabella di instradamento, fino alla rete dove si trova la destinazione finale;
- ma l'IP non serve a spostare il frame su un collegamento: occorre il MAC del prossimo nodo.
Definizione (ARP). Protocollo ausiliario di livello rete che, dato l'indirizzo IP di un nodo della stessa rete locale, ne ricava l'indirizzo MAC. Usa la capacità di diffusione (broadcast) del collegamento sottostante.
Prima di ARP: a chi si manda il frame?
Prima di eseguire ARP il mittente deve stabilire di quale indirizzo IP chiedere il MAC: della destinazione stessa o del router. La decisione usa la maschera della propria interfaccia (appartenenza a una reteun indirizzo appartiene alla rete di indirizzo R e maschera M se indirizzo AND M è uguale a RLivello di rete e indirizzamento IP →): si calcola IP destinazione AND maschera e si confronta con l'indirizzo della propria rete.
Esempio. Alice ha 130.23.43.20/24 (rete 130.23.43.0). (a) Destinazione 130.23.43.25: AND stessa rete 130.23.43.0 inoltro diretto, ARP chiede il MAC di 130.23.43.25. (b) Destinazione 130.23.44.9: AND con dà 130.23.44.0 130.23.43.0 inoltro indiretto: il frame va al router predefinito (per esempio 130.23.43.1) e ARP chiede il MAC di 130.23.43.1, non quello di 130.23.44.9, che sta su un altro collegamento e non risponderebbe mai a un broadcast di questa rete (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 →). Nei due casi cambia solo l'indirizzo IP per cui si fa ARP: l'IP di destinazione dentro il datagramma resta 130.23.44.9.
Funzionamento
Ogni host mantiene una tabella ARP (ARP cache) con coppie (indirizzo IP, indirizzo MAC) imparate di recente. Prima di mandare un datagramma si consulta la tabella; se la coppia manca, si esegue lo scambio seguente.
1. ARP request (broadcast). Quando un host o router deve trovare l'indirizzo di collegamento di un altro host o router della sua rete, invia un pacchetto di richiesta ARP che contiene: il MAC e l'IP del mittente e l'IP del destinatario (l'unico indirizzo noto); il campo MAC del destinatario è a zero (00:00:00:00:00:00). La richiesta è inviata in broadcast sul collegamento: MAC di destinazione del frame FF:FF:FF:FF:FF:FF.
2. ARP reply (unicast). Tutti gli host della rete ricevono ed elaborano la richiesta, ma solo il nodo interessato riconosce il proprio IP e risponde con un pacchetto di risposta ARP che contiene IP e MAC del destinatario. La risposta è unicast, direttamente al nodo che ha fatto la richiesta (nel frame c'è il suo MAC, già noto dalla richiesta).
3. Aggiornamento della cache. Il mittente scrive la coppia (IP, MAC) nella cache ARP e da quel momento spedisce i frame direttamente. Anche chi ha ricevuto la richiesta può imparare la coppia del mittente.
| Campo | Request | Reply |
|---|---|---|
| MAC destinazione del frame | FF:FF:FF:FF:FF:FF (broadcast) |
MAC del richiedente (unicast) |
| MAC sorgente del frame | MAC del richiedente | MAC del nodo cercato |
| IP e MAC mittente (nel messaggio ARP) | quelli del richiedente | quelli del nodo cercato |
| IP e MAC destinatario (nel messaggio ARP) | IP cercato, MAC | IP e MAC del richiedente |
Esempio. Alice ha IP 130.23.43.20 e MAC B2:34:55:10:22:10 e vuole spedire un datagramma a Bob, IP 130.23.43.25 (MAC A4:6E:F4:59:83:AB che Alice non conosce); sono sulla stessa rete.
- Richiesta, frame Ethernet: destinazione
FF:FF:FF:FF:FF:FF, sorgenteB2:34:55:10:22:10; messaggio ARP: mittente (130.23.43.20,B2:34:55:10:22:10), destinatario (130.23.43.25,00:00:00:00:00:00). - Risposta, frame Ethernet: destinazione
B2:34:55:10:22:10, sorgenteA4:6E:F4:59:83:AB; messaggio ARP: mittente (130.23.43.25,A4:6E:F4:59:83:AB), destinatario (130.23.43.20,B2:34:55:10:22:10).
Alice registra (130.23.43.25 A4:6E:F4:59:83:AB) e spedisce il datagramma.
Il formato del pacchetto ARP
Il messaggio ARP viaggia nel campo dati di un frame (per esempio Ethernet, 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 →). È organizzato in righe da 32 bit:
| Campo | Lunghezza | Significato |
|---|---|---|
| Tipo di hardware (Hardware Type) | 16 bit | tecnologia del livello fisico: 0x0001 per Ethernet a 10 Mbit/s |
| Tipo di protocollo (Protocol Type) | 16 bit | protocollo di livello superiore che usa ARP: IPv4 0x0800 |
| HLEN | 8 bit | lunghezza dell'indirizzo di collegamento: MAC byte |
| PLEN | 8 bit | lunghezza dell'indirizzo di rete: IPv4 byte ( bit) |
| Operazione (Operation) | 16 bit | 0001 richiesta ARP, 0002 risposta ARP, 0003 richiesta RARP, 0004 risposta RARP |
| Indirizzo hardware del mittente | byte | MAC del mittente |
| Indirizzo di protocollo del mittente | byte | IP del mittente |
| Indirizzo hardware del destinatario | byte | tutti nella richiesta |
| Indirizzo di protocollo del destinatario | byte | IP del destinatario |
La lunghezza degli ultimi quattro campi dipende dai valori di HLEN e PLEN: per Ethernet e IPv4 il pacchetto ARP è lungo byte. Conti: i primi cinque campi occupano byte; seguono il MAC del mittente (), l'IP del mittente (), il MAC del destinatario () e l'IP del destinatario (). Poiché il payload minimo di un frame Ethernet è di byte, il pacchetto ARP viene completato con byte di riempimento (padding) (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 →).
ARP su più salti: sempre il prossimo salto
ARP non risolve l'indirizzo della destinazione finale, ma quello del prossimo nodo sul collegamento corrente. Se Alice e Bob sono in reti diverse, collegate dai router R1 e R2 (indirizzi di rete , di collegamento ):
Attività del mittente (Alice).
- Il livello rete conosce , e i dati e forma il datagramma.
- Consulta la tabella di instradamento: per la destinazione il prossimo nodo è (il router predefinito).
- Deve trovare l'indirizzo di collegamento di R1: controlla se lo conosce già.
- Se non lo conosce, usa ARP: richiesta e risposta, e ottiene .
- Passa datagramma e al livello di collegamento.
- Il collegamento conosce il proprio indirizzo , crea il frame e lo passa al fisico.
Attività del router R1.
- Il fisico del collegamento sinistro crea il frame e lo passa al livello di collegamento.
- Il livello di collegamento decapsula il datagramma e lo passa alla rete.
- La rete trova che il datagramma va a e consulta la tabella: il prossimo è (R2).
- L'IP di R2 è nello stesso collegamento di R1: con ARP si ottiene il MAC .
- Si passa datagramma e al collegamento di destra.
- Il collegamento incapsula il datagramma, aggiunge e il proprio , e invia il frame a R2. Le attività di Bob sono il decapsulamento finale (per esercizio).
Gli indirizzi cambiano così lungo il percorso:
| Tratto | MAC dest. | MAC sorg. | IP dest. | IP sorg. |
|---|---|---|---|---|
| Alice R1 | ||||
| R1 R2 | ||||
| R2 Bob |
Gli indirizzi IP restano gli stessi da un capo all'altro; gli indirizzi MAC si riscrivono a ogni salto. Questo è il punto da ricordare.
Domini di broadcast e proxy ARP
Finora si è supposto che un broadcast raggiunga tutti gli host della rete locale, che è un unico dominio di broadcast. In pratica una rete locale può essere divisa in più sottoreti IP, e ogni sottorete è un dominio di broadcast separato. Problema: un messaggio ARP non può uscire dalla sottorete del mittente (i router non inoltrano i broadcast). Soluzione: il proxy ARP.
Definizione (proxy ARP). Funzione realizzata nel router che interconnette le sottoreti: intercetta tutte le richieste ARP per indirizzi IP di altre sottoreti e risponde con il proprio MAC; poi inoltra alla sottorete giusta tutti i frame che portano il suo MAC.
Permette di dividere una rete in sottoreti senza configurare le tabelle di instradamento in tutti gli host: ogni host crede che le altre sottoreti siano sullo stesso collegamento.
Altri protocolli collegati: ARP inverso (RARP), BOOTP e DHCP assegnano un indirizzo IP a un host che si collega alla rete. Gli switch non toccano l'ARP: un broadcast ARP viene diffuso su tutte 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 →).
Versione ripasso
Scopo. ARP (Address Resolution Protocol) ricava il MAC di un nodo della stessa rete dal suo IP. Il frame va indirizzato con il MAC del prossimo nodo: il nome si traduce in IP con il DNS, l'IP in MAC con ARP.
Richiesta (broadcast). Il mittente controlla prima la cache ARP; se manca, invia la richiesta con MAC di destinazione FF:FF:FF:FF:FF:FF. Il messaggio contiene MAC e IP del mittente e l'IP cercato, con il MAC del destinatario a zero.
Risposta (unicast). Solo il nodo con l'IP cercato risponde, direttamente al richiedente, con il proprio IP e MAC. Il mittente salva la coppia (IP, MAC) nella cache; anche chi ha ricevuto la richiesta può impararla.
- Esempio: Alice (
130.23.43.20,B2:34:55:10:22:10) cerca Bob (130.23.43.25). La richiesta va in broadcast; la risposta di Bob (A4:6E:F4:59:83:AB) torna unicast ad Alice, che registra130.23.43.25A4:6E:F4:59:83:AB.
Formato. Per Ethernet e IPv4 il pacchetto è di byte: tipo hardware 0x0001 (Ethernet), tipo protocollo 0x0800 (IPv4), HLEN , PLEN , operazione (0001 richiesta, 0002 risposta), indirizzi hardware e di protocollo di mittente e destinatario.
Più salti. ARP risolve sempre il prossimo salto, mai la destinazione finale. Alice spedisce al router R1 con il MAC ; R1 decapsula, instrada verso R2 (prossimo nodo ), fa ARP per il MAC di R2 e reincapsula.
| Tratto | MAC dest. | MAC sorg. | IP dest. | IP sorg. |
|---|---|---|---|---|
| Alice R1 | ||||
| R1 R2 | ||||
| R2 Bob |
Gli IP restano uguali da un capo all'altro; i MAC si riscrivono a ogni salto.
Broadcast e proxy ARP. Ogni sottorete è un dominio di broadcast: il messaggio ARP non ne esce, perché i router non inoltrano i broadcast. Il proxy ARP nel router risponde alle richieste per altre sottoreti con il proprio MAC e inoltra i frame, così gli host non hanno bisogno di tabelle di instradamento per le altre sottoreti. Gli switch diffondono il broadcast su tutte 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 →).
Errori tipici:
- credere che ARP trovi il MAC della destinazione finale attraverso i router;
- pensare che gli IP cambino a ogni salto;
- dimenticare che il broadcast ARP non esce dalla sottorete: per un IP di un'altra rete si cerca il MAC del router (o risponde un proxy ARP).