ARP-Cache optimieren

Das Address Resolution Protocol (ARP) wird verwendet, um 32 -Bit- IPv4 -Adressen einer 48-Bit-Hostadapteradresse zuzuordnen, die für das Data Link Protocol erforderlich ist.

ARP wird vom System transparent gehandhabt. Das System verwaltet jedoch einen ARP-Cache, bei dem es sich um eine Tabelle handelt, die die zugehörigen 32-Bit-IP-Adressen und ihre 48-Bit-Hostadresse enthält. Möglicherweise müssen Sie die Größe des ARP-Cache in Umgebungen ändern, in denen eine große Anzahl von Maschinen (Clients) verbunden sind. Dies kann mit den Befehlen no und netstat erfolgen.

Der Befehl no konfiguriert Netzoptimierungsparameter und die zugehörigen optimierbaren ARP-Parameter sind:

  • arpqsize = 12
  • killc = 20
  • arptab_bsiz = 7
  • arptab_nb = 149

Die Größe der ARP-Tabellen setzt sich aus einer Reihe von Buckets zusammen, die durch den Parameter arptab_nb definiert werden. Jedes Bucket enthält die Anzahl der im Parameter arptab_bsiz definierten Einträge. Die Standardwerte sind 149 Buckets mit jeweils 7 Einträgen, sodass die Tabelle 1043 Hostadressen (149 x 7) aufnehmen kann. Diese Standardeinstellung funktioniert für Systeme, die gleichzeitig mit bis zu 1043 anderen Maschinen im IP-Netz kommunizieren. Wenn ein Server gleichzeitig mit mehr als 1043 Maschinen im Netz verbunden ist, ist die ARP-Tabelle zu klein, was dazu führt, dass die ARP-Tabelle ausbricht und die Leistung beeinträchtigt wird. Das Betriebssystem muss dann einen Eintrag im Cache löschen und durch eine neue Adresse ersetzen. Dies erfordert, dass die TCP-oder UDP-Pakete in die Warteschlange gestellt werden, während das ARP-Protokoll diese Informationen austauscht. Der Parameter arpqsize gibt an, wie viele dieser wartenden Pakete von der ARP-Schicht in die Warteschlange gestellt werden können, bis eine ARP-Antwort von einer ARP-Anforderung empfangen wird. Wenn die ARP-Warteschlange überläuft, werden abgehende TCP-oder UDP-Pakete gelöscht.

Die Überlastung des ARP-Cache kann sich aus folgenden Gründen negativ auf die Leistung auswirken:

  1. Das aktuelle ausgehende Paket muss auf die ARP-Protokollsuche über das Netz warten.
  2. Ein weiterer ARP-Eintrag muss aus dem ARP-Cache entfernt werden. Wenn alle Adressen benötigt werden, ist eine weitere Adresse erforderlich, wenn an die gelöschte Hostadresse Pakete gesendet werden.
  3. Die ARP-Ausgabewarteschlange ist möglicherweise überlaufen, was zu gelöschten Paketen führen kann.

Die Parameter arpqsize, arptab_bsizund arptab_nb sind alle Warmstartparameter. Dies bedeutet, dass das System neu gestartet werden muss, wenn sich ihre Werte ändern, weil sie Tabellen ändern, die zur Bootzeit oder zur TCP/IP-Ladezeit erstellt werden.

Der Parameter arpt_killc gibt die Zeit in Minuten an, bevor ein ARP-Eintrag gelöscht wird. Der Standardwert des Parameters arpt_killc ist 20 Minuten. ARP-Einträge werden alle im Parameter arpt_killc definierten Minuten aus der Tabelle gelöscht, um den Fall abzudecken, in dem ein Hostsystem seine 48-Bit-Adresse ändern kann, die auftreten kann, wenn sein Netzadapter ausgetauscht wird. Dadurch wird sichergestellt, dass alle veralteten Einträge im Cache gelöscht werden, da diese die Kommunikation mit einem solchen Host verhindern würden, bis die alte Adresse entfernt wird. Eine Erhöhung dieser Zeit würde die ARP-Suchen durch das System reduzieren, kann aber dazu führen, dass veraltete Hostadressen länger gehalten werden. Der Parameter arpt_killc ist ein dynamischer Parameter, der geändert werden kann, ohne dass ein Warmstart des Systems durchgeführt werden muss.

Der Befehl netstat -p arp zeigt die ARP-Statistiken an. Diese Statistiken zeigen, wie viele ARP-Anforderungen insgesamt gesendet wurden und wie viele Pakete aus der Tabelle gelöscht wurden, wenn ein Eintrag gelöscht wurde, um Platz für einen neuen Eintrag zu schaffen. Wenn diese bereinigte Anzahl hoch ist, sollte die Größe der ARP-Tabelle erhöht werden. Das folgende Beispiel zeigt den Befehl netstat -p arp .
# netstat -p arp

arp:  
     6 packets sent
     0 packets purged
Sie können die ARP-Tabelle mit dem Befehl arp -a anzeigen. Die Befehlsausgabe zeigt die Adressen, die sich in der ARP-Tabelle befinden, und wie diese Adressen hashverschlüsselt werden und in welche Buckets.
 ? (10.3.6.1) at 0:6:29:dc:28:71 [ethernet] stored 
                                                   
bucket:    0     contains:    0 entries            
bucket:    1     contains:    0 entries            
bucket:    2     contains:    0 entries            
bucket:    3     contains:    0 entries            
bucket:    4     contains:    0 entries            
bucket:    5     contains:    0 entries            
bucket:    6     contains:    0 entries            
bucket:    7     contains:    0 entries            
bucket:    8     contains:    0 entries            
bucket:    9     contains:    0 entries            
bucket:   10     contains:    0 entries            
bucket:   11     contains:    0 entries            
bucket:   12     contains:    0 entries            
bucket:   13     contains:    0 entries            
bucket:   14     contains:    1 entries            
bucket:   15     contains:    0 entries            


...lines omitted...

There are 1 entries in the arp table.