Ich führe iperf
Messungen zwischen zwei Servern, verbunden durch 10Gbit-Link. Ich versuche, die maximale Fenstergröße, die ich beobachte, mit den Systemkonfigurationsparametern zu korrelieren.TCP-Empfangsfenstergröße höher als net.core.rmem_max
Insbesondere habe ich beobachtet, dass die maximale Fenstergröße 3 MiB ist. Ich kann jedoch die entsprechenden Werte in den Systemdateien nicht finden.
von sysctl -a
läuft ich die folgenden Werte erhalten:
net.ipv4.tcp_rmem = 4096 87380 6291456
net.core.rmem_max = 212992
Der erste Wert sagt uns, dass die maximale Empfangsfenstergröße 6 MiB ist. Allerdings tendiert TCP dazu, die doppelte Größe der angeforderten Größe zuzuweisen, so dass die maximale Empfängerfenstergröße 3 MiB betragen sollte, genau wie ich es gemessen habe. Von man tcp
:
Beachten Sie, dass TCP ordnet tatsächlich zweimal die Größe des Puffers in der setsockopt angefordert (2) Ruf, und so ein nachfolgendes getsockopt (2) Anruf wird die gleiche Größe des Puffers nicht zurück, wie in dem angeforderten setsockopt (2) Anruf. TCP verwendet den zusätzlichen Speicherplatz für administrative Zwecke und interne Kernelstrukturen, und die Werte der Datei/proc enthalten die größeren Größen im Vergleich zu den tatsächlichen TCP-Fenstern.
Der zweite Wert, net.core.rmem_max
, besagt jedoch, dass die maximale Empfängerfenstergröße nicht mehr als 208 KiB betragen kann. Und das soll die harte Grenze sein, nach man tcp
:
tcp_rmem max: die maximale Größe des Puffers von jedem TCP-Socket verwendet erhalten. Dieser Wert überschreibt nicht das globale
net.core.rmem_max
. Dies wird nicht verwendet, um die Größe des Empfangspuffers zu begrenzen, der mit SO_RCVBUF für einen Socket deklariert wird.
Also, wie kommt und ich beobachte eine maximale Fenstergröße größer als die in net.core.rmem_max
angegebene?
Hinweis: Ich habe auch das Bandbreiten-Latenz-Produkt berechnet: window_size = Bandwidth x RTT
das ist etwa 3 MiB (10 Gbps @ 2 ms RTT), so dass meine Verkehrserfassung zu überprüfen.
ich eine Prämie begonnen haben, um herauszufinden, ob 'Mann tcp' ist wirklich falsch. – nh2