Salta al contenuto
Note per Studenti Protocollo ARP

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 →\to IP la fa il DNS. La conversione IP →\to 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: 2525 AND 0=0= stessa rete 130.23.43.0 ⇒\Rightarrow inoltro diretto, ARP chiede il MAC di 130.23.43.25. (b) Destinazione 130.23.44.9: AND con 255.255.255.0255.255.255.0 dà 130.23.44.0 ≠\neq 130.23.43.0 ⇒\Rightarrow 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 =00:00:00:00:00:00=00{:}00{:}00{:}00{:}00{:}00 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, sorgente B2: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, sorgente A4: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 →\to 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 =6=6 byte
PLEN 8 bit lunghezza dell'indirizzo di rete: IPv4 =4=4 byte (3232 bit)
Operazione (Operation) 16 bit 0001 richiesta ARP, 0002 risposta ARP, 0003 richiesta RARP, 0004 risposta RARP
Indirizzo hardware del mittente HLENHLEN byte MAC del mittente
Indirizzo di protocollo del mittente PLENPLEN byte IP del mittente
Indirizzo hardware del destinatario HLENHLEN byte tutti 00 nella richiesta
Indirizzo di protocollo del destinatario PLENPLEN 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 8+6+4+6+4=288+6+4+6+4=28 byte. Conti: i primi cinque campi occupano 2+2+1+1+2=82+2+1+1+2=8 byte; seguono il MAC del mittente (66), l'IP del mittente (44), il MAC del destinatario (66) e l'IP del destinatario (44). Poiché il payload minimo di un frame Ethernet è di 4646 byte, il pacchetto ARP viene completato con 46−28=1846-28=18 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 NN, di collegamento LL):

Attività del mittente (Alice).

  1. Il livello rete conosce NAN_A, NBN_B e i dati e forma il datagramma.
  2. Consulta la tabella di instradamento: per la destinazione NBN_B il prossimo nodo è N1N_1 (il router predefinito).
  3. Deve trovare l'indirizzo di collegamento di R1: controlla se lo conosce già.
  4. Se non lo conosce, usa ARP: richiesta e risposta, e ottiene L1L_1.
  5. Passa datagramma e L1L_1 al livello di collegamento.
  6. Il collegamento conosce il proprio indirizzo LAL_A, crea il frame e lo passa al fisico.

Attività del router R1.

  1. Il fisico del collegamento sinistro crea il frame e lo passa al livello di collegamento.
  2. Il livello di collegamento decapsula il datagramma e lo passa alla rete.
  3. La rete trova che il datagramma va a NBN_B e consulta la tabella: il prossimo è N3N_3 (R2).
  4. L'IP di R2 è nello stesso collegamento di R1: con ARP si ottiene il MAC L3L_3.
  5. Si passa datagramma e L3L_3 al collegamento di destra.
  6. Il collegamento incapsula il datagramma, aggiunge L3L_3 e il proprio L2L_2, 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 →\to R1 L1L_1 LAL_A NBN_B NAN_A
R1 →\to R2 L3L_3 L2L_2 NBN_B NAN_A
R2 →\to Bob LBL_B L4L_4 NBN_B NAN_A

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 registra 130.23.43.25 →\to A4:6E:F4:59:83:AB.

Formato. Per Ethernet e IPv4 il pacchetto è di 2828 byte: tipo hardware 0x0001 (Ethernet), tipo protocollo 0x0800 (IPv4), HLEN =6=6, PLEN =4=4, 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 L1L_1; R1 decapsula, instrada verso R2 (prossimo nodo N3N_3), fa ARP per il MAC L3L_3 di R2 e reincapsula.

Tratto MAC dest. MAC sorg. IP dest. IP sorg.
Alice →\to R1 L1L_1 LAL_A NBN_B NAN_A
R1 →\to R2 L3L_3 L2L_2 NBN_B NAN_A
R2 →\to Bob LBL_B L4L_4 NBN_B NAN_A

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).

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata