In almeno un'implementazione esiste un limite rigido alla capacità della tabella ARP. Cosa succede quando la cache ARP è piena e viene offerto un pacchetto con una destinazione (o hop successivo) che non è memorizzata nella cache? Cosa succede sotto il cofano e qual è l'effetto sulla qualità del servizio?
Ad esempio, i router Brocade NetIron XMR e Brocade MLX hanno un massimo di sistema configurabileip-arp
. Il valore predefinito in quel caso è 8192; la dimensione di una sottorete / 19. Dalla documentazione non è chiaro se questo sia per interfaccia o per l'intero router, ma ai fini di questa domanda, possiamo supporre che sia per interfaccia.
Pochi networkers configurerebbero una sottorete / 19 su un'interfaccia appositamente, ma non è quello che è successo. Stavamo migrando un router core da un modello Cisco a un Brocade. Una delle molte differenze tra Cisco e Brocade è che Cisco accetta route statiche definite sia con un'interfaccia in uscita che con un indirizzo hop successivo, ma Brocade insiste sull'una o sull'altra. Abbiamo lasciato l'indirizzo dell'hop successivo e abbiamo mantenuto l'interfaccia. Successivamente, abbiamo appreso l'errore dei nostri modi e siamo passati dall'interfaccia all'indirizzo dell'hop successivo, ma tutto sembrava funzionare inizialmente.
+----+ iface0 +----+
| R1 |-----------| R2 |---> (10.1.0.0/16 this way)
+----+.1 .2+----+
10.0.0.0/30
Prima della migrazione, R1 era un Cisco e aveva la seguente rotta.
ip route 10.1.0.0 255.255.0.0 iface0 10.0.0.2
Dopo la migrazione, R1 era un broccato e aveva la seguente rotta.
ip route 10.1.0.0 255.255.0.0 iface0
R2 è un router Cisco e i router Cisco eseguono ARP proxy per impostazione predefinita. Questa è la (errata) configurazione in produzione che ha posto le basi per quello che si è rivelato essere un overflow della cache ARP.
- R1 riceve un pacchetto destinato alla rete 10.1.0.0/16.
- Sulla base del percorso dell'interfaccia statica, gli ARP R1 per la destinazione sono attivi
iface0
- R2 riconosce che può raggiungere la destinazione e risponde all'ARP con il proprio MAC.
- R1 memorizza nella cache il risultato ARP che combina un IP in una rete remota con il MAC di R2.
Questo accade per ogni destinazione distinta in 10.1.0.0/16. Di conseguenza, anche se / 16 è sottorete correttamente oltre R2, e ci sono solo due nodi sul collegamento adiacente a R1 e R2, R1 subisce un sovraccarico della cache ARP perché induce R2 a comportarsi come se tutti gli indirizzi 65k fossero collegati direttamente.
Il motivo per cui sto ponendo questa domanda è perché spero che mi aiuti a dare un senso ai rapporti sui problemi del servizio di rete (giorni dopo) che ci hanno portato, alla fine, alla cache ARP traboccante. Nello spirito del modello StackExchange, ho cercato di distillare ciò che credo sia una domanda chiara e specifica a cui si possa rispondere obiettivamente.
MODIFICA 1 Per essere chiari, chiedo di parte del livello di colla tra collegamento dati (livello 2) e rete (livello 3), non la tabella di inoltro MAC all'interno del livello collegamento dati. Un host o un router crea il primo per mappare gli indirizzi IP agli indirizzi MAC, mentre uno switch crea il secondo per mappare gli indirizzi MAC alle porte.
EDIT 2 Mentre apprezzo lo sforzo con il quale i rispondenti sono andati a spiegare perché alcune implementazioni non sono soggette all'overflow della cache ARP, ritengo sia importante che questa domanda sia indirizzata a quelle che sono. La domanda è "cosa succede quando", non "il fornitore X è sensibile a". Ho fatto la mia parte ora descrivendo un esempio concreto.
EDIT 3 Un'altra domanda non è questa: "come posso evitare il trabocco della cache ARP?"