Änderungen

Zur Navigation springen Zur Suche springen

Server:Fehlermeldung "kernel: Neighbour table overflow"

1.803 Bytes hinzugefügt, 13:53, 9. Apr. 2012
zeigt an, dass der ARP-Cache des Kernels zu klein ist, um alle MAC-Adressen zu nicht gerouteten IP-Adressen zu speichern (zu cachen).
== Der ARP-Cache (die neighbour table) des Linux Kernels ==
Der ARP-Cache des Linux Kernels (auch ''neighbour table'' genannt) speichert zu jeder IP-Adresse, die nicht geroutet wird (also in einem Subnetz liegt, das auf einer Netzwerkkarte des Servers konfiguriert ist), eine MAC-Adresse. Dies ist nötig, damit Datenpakete, die nicht zum Router geschickt werden, direkt via Ethernet-Frames übertragen werden können. Logischerweise wird auch die IP-Adresse des Routers (Gateways) auch im ARP-Cache gespeichert.
Müssen zum selben Zeitpunkt mehr IP-Adress-zu-MAC-Adress-Einträge vom Linux Kernel gecacht werden, als der ARP-Cache groß ist, muss der Kernel für '''jedes''' zu versendende Datenpaket einen ARP-Broadcast-Request im Ethernet verschicken, was zu erheblichen Performance-Einbußen und zu Beeinträchtigungen des gesamten Subnetzes führen kann.
Der Die Größe des ARP-Cache des Kernels ist standardmäßig auf eine sinnvolle Größe voreingestellt. In besonderen Netzwerk-Setups kann es jedoch nötig sein, den ARPCaches wird über drei ''sysctl''-Cache manuell zu vergrößern.Variablen gesteuert:
= Beheben (ARP-Cache * bei IPv4<pre>net.ipv4.neigh.default.gc_thresh1net.ipv4.neigh.default.gc_thresh2net.ipv4.neigh.default.gc_thresh3</ neighbour table vergrößern) =pre>* bei IPv6<pre>net.ipv6.neigh.default.gc_thresh1net.ipv6.neigh.default.gc_thresh2net.ipv6.neigh.default.gc_thresh3</pre>
Dabei bedeuten jeweils* <code>gc_thresh1</code>: Die Größe minimale Anzahl an Einträgen im ARP-Cache. Der Aufräumprozess des Kernels wird solange keine Einträge aus dem ARP-Cache löschen, solange diese Zahl unterschritten ist.* <code>gc_thresh2</code>: Die "weiche" maximale Anzahl an Einträgen im ARP-Caches wird über drei ''sysctl''Cache. Der Aufräumprozess des Kernels erlaubt 5 Sekunden lang so viele Einträge im ARP-Variablen gesteuertCache, anschließend beginnt er mit dem Entfernen der ältesten Einträge.* <code>gc_thresh3</code>:Die "harte" maximale Anzahl an Einträge im ARP-Cache. Der Aufräumprozess läuft permanent, wenn mehr als so viele Einträge im ARP-Cache vorhanden sind.
Die Standard-Werte sind
* bei IPv4
<pre>net.ipv4.neigh.default.gc_thresh1</pre>= 128<pre>net.ipv4.neigh.default.gc_thresh2</pre>= 512<pre>net.ipv4.neigh.default.gc_thresh3= 1024</pre>
* bei IPv6
<pre>net.ipv6.neigh.default.gc_thresh1</pre>= 128<pre>net.ipv6.neigh.default.gc_thresh2= 512net.ipv6.neigh.default.gc_thresh3 = 1024</pre> Diese Standard-Werte sind durchaus sinnvoll und in den meisten Fällen ausreichend. In besonderen Netzwerk-Setups kann es jedoch nötig sein, den ARP-Cache manuell zu vergrößern. = Beheben (ARP-Cache / neighbour table vergrößern) = == Größe des ARP-Cache bestimmen (vergrößen, einstellen) == Bestimmen Sie als erstes sinnvolle Werte für die Größe Ihres ARP-Caches:* eine Möglichkeit ist es, die Standard-Werte zu verdoppeln und die Größe ggf. sukzessive anpassen, indem Sie beobachten, ob der ARP-Cache weiterhin zu klein ist* alternativ können Sie die aktuelle Anzahl an Einträgen über <pre>$ ip neigh show</pre>netbzw. <pre>$ arp -n</pre> auslesen und die benötigte Größe danach abschätzen. '''Wichtig:''' Sie sollten die Werte in keinem Fall unnötig groß wählen, da Sie hierdurch wertvollen RAM verlieren (dies ist auch bei Systemen mit mehreren GB RAM relevant!).ipv6 Es ist ratsam, die drei Variablen wie folgt aufeinander abzustimmen: <pre>gc_thresh1 = 128/256/512/1024/.neigh.default.gc_thresh2 = 2 * gc_thresh1gc_thresh3= 2 * gc_thresh2</pre>
sysctl -w net.ipv4.neigh.default.gc_thresh1=8192sysctl = Größe des ARP-w net.ipv4.neigh.default.gc_thresh2Cache setzen/festlegen =16384sysctl -w net.ipv4.neigh.default.gc_thresh3=32768
Setzen Sie die entsprechenden sysctl -w net.ipv6.neigh.default.gc_thresh1=8192Variablen entweder für das laufende System oder dauerhaft via <code>sysctl -w net.ipv6.neigh.default.gc_thresh2=16384sysctl -w net.ipv6.neigh.defaultconf</code>.gc_thresh3=32768
Falls Sie mit sysctl-Variablen nicht vertraut sind, finden Sie [[Server:Sysctl-Variablen (sysctl.conf)|hier weitere Informationen]].
[[Kategorie:Root-Server]][[Kategorie:Netzwerk (Server)]][[Kategorie:Linux (Server)]][[Kategorie:Linux Kernel (Server)]]
1.533

Bearbeitungen

Navigationsmenü