Server:Fehlermeldung "kernel: Neighbour table overflow": Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) |
||
Zeile 43: | Zeile 43: | ||
net.ipv6.neigh.default.gc_thresh2 = 512 | net.ipv6.neigh.default.gc_thresh2 = 512 | ||
net.ipv6.neigh.default.gc_thresh3 = 1024</pre> | net.ipv6.neigh.default.gc_thresh3 = 1024</pre> | ||
+ | |||
+ | Bestimmen Sie als erstes sinnvolle Werte für die Größe Ihres ARP-Caches. Ggf. sollten Sie die Größe sukzessive anpassen, indem beobachten, ob der ARP-Cache weiterhin zu klein ist. Es ist ratsam, die drei Variablen wie folgt aufeinander abzustimmen: | ||
+ | |||
+ | <pre> | ||
+ | gc_thresh1 = 128/256/512/1024/... | ||
+ | gc_thresh2 = 2 * gc_thresh2 | ||
+ | gc_thresh3 = 2 * thresh3</pre> | ||
+ | |||
Setzen Sie die entsprechenden sysctl-Variablen entweder für das laufende System oder dauerhaft via <code>sysctl.conf</code>. | Setzen Sie die entsprechenden sysctl-Variablen entweder für das laufende System oder dauerhaft via <code>sysctl.conf</code>. | ||
Zeile 48: | Zeile 56: | ||
Wichtig: Falls Sie mit sysctl-Variablen nicht vertraut sind, finden Sie hier weitere Informationen. | Wichtig: Falls Sie mit sysctl-Variablen nicht vertraut sind, finden Sie hier weitere Informationen. | ||
− | sysctl -w net.ipv4.neigh.default.gc_thresh1= | + | sysctl -w net.ipv4.neigh.default.gc_thresh1=256 |
− | sysctl -w net.ipv4.neigh.default.gc_thresh2= | + | sysctl -w net.ipv4.neigh.default.gc_thresh2=1024 |
− | sysctl -w net.ipv4.neigh.default.gc_thresh3= | + | sysctl -w net.ipv4.neigh.default.gc_thresh3=2048 |
− | sysctl -w net.ipv6.neigh.default.gc_thresh1= | + | sysctl -w net.ipv6.neigh.default.gc_thresh1=256 |
− | sysctl -w net.ipv6.neigh.default.gc_thresh2= | + | sysctl -w net.ipv6.neigh.default.gc_thresh2=1024 |
− | sysctl -w net.ipv6.neigh.default.gc_thresh3= | + | sysctl -w net.ipv6.neigh.default.gc_thresh3=2048 |
[[Kategorie:Root-Server]][[Kategorie:Netzwerk (Server)]][[Kategorie:Linux (Server)]] | [[Kategorie:Root-Server]][[Kategorie:Netzwerk (Server)]][[Kategorie:Linux (Server)]] |
Version vom 30. März 2012, 03:54 Uhr
Informationen
Die Fehlermeldung
kernel: Neighbour table overflow
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 Kernels
Der ARP-Cache des 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 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 ARP-Cache des Kernels ist standardmäßig auf eine sinnvolle Größe voreingestellt. In besonderen Netzwerk-Setups kann es jedoch nötig sein, den ARP-Cache manuell zu vergrößern.
Beheben (ARP-Cache / neighbour table vergrößern)
Die Größe des ARP-Caches wird über drei sysctl-Variablen gesteuert:
- bei IPv4
net.ipv4.neigh.default.gc_thresh1 net.ipv4.neigh.default.gc_thresh2 net.ipv4.neigh.default.gc_thresh3
- bei IPv6
net.ipv6.neigh.default.gc_thresh1 net.ipv6.neigh.default.gc_thresh2 net.ipv6.neigh.default.gc_thresh3
Dabei bedeuten jeweils
gc_thresh1
: Die 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.gc_thresh2
: Die "weiche" maximale Anzahl an Einträgen im ARP-Cache. Der Aufräumprozess des Kernels erlaubt 5 Sekunden lang so viele Einträge im ARP-Cache, anschließend beginnt er mit dem Entfernen der ältesten Einträge.gc_thresh3
: 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
net.ipv4.neigh.default.gc_thresh1 = 128 net.ipv4.neigh.default.gc_thresh2 = 512 net.ipv4.neigh.default.gc_thresh3 = 1024 net.ipv6.neigh.default.gc_thresh1 = 128 net.ipv6.neigh.default.gc_thresh2 = 512 net.ipv6.neigh.default.gc_thresh3 = 1024
Bestimmen Sie als erstes sinnvolle Werte für die Größe Ihres ARP-Caches. Ggf. sollten Sie die Größe sukzessive anpassen, indem beobachten, ob der ARP-Cache weiterhin zu klein ist. Es ist ratsam, die drei Variablen wie folgt aufeinander abzustimmen:
gc_thresh1 = 128/256/512/1024/... gc_thresh2 = 2 * gc_thresh2 gc_thresh3 = 2 * thresh3
Setzen Sie die entsprechenden sysctl-Variablen entweder für das laufende System oder dauerhaft via sysctl.conf
.
Wichtig: Falls Sie mit sysctl-Variablen nicht vertraut sind, finden Sie hier weitere Informationen.
sysctl -w net.ipv4.neigh.default.gc_thresh1=256 sysctl -w net.ipv4.neigh.default.gc_thresh2=1024 sysctl -w net.ipv4.neigh.default.gc_thresh3=2048
sysctl -w net.ipv6.neigh.default.gc_thresh1=256 sysctl -w net.ipv6.neigh.default.gc_thresh2=1024 sysctl -w net.ipv6.neigh.default.gc_thresh3=2048