Unterschied zwischen net.core.rmem_max und net.ipv4.tcp_rmem

14

Was ist der Unterschied zwischen net.core.rmem_max und dem dritten Wert von net.ipv4.tcp_rmem? Welches hat die höhere Priorität für TCP-Verbindungen?

Was ist der maximale Puffer für TCP-Verbindungen in den folgenden zwei Beispielen?

Case 1:
sysctl -w net.core.rmem_max=7388608
sysctl -w net.ipv4.tcp_rmem='4096 87380 8388608'

Case 2:
sysctl -w net.core.rmem_max=8388608
sysctl -w net.ipv4.tcp_rmem='4096 87380 7388608'
Bydsky
quelle
Priorität im Zusammenhang mit TCP?
Nils
@Nils Ja, für TCP-Verbindungen.
Bydsky

Antworten:

5

Kern ist der maximale Gesamtempfangspuffer, während sich tcp nur auf dieses Protokoll bezieht.

Was die Prioritätsfrage betrifft: Es scheint, dass die TCP-Einstellung Vorrang vor der allgemeinen Max-Einstellung hat, was etwas verwirrend ist. Die Einstellung max hat keine Auswirkung auf die aktuelle TCP-Einstellung (gerade unter CentOS 5 getestet).

Eine korrektere Beschreibung wäre gewesen: default_max - aber das war wahrscheinlich zu lang.

Nils
quelle
1
Ihre Erklärung ist sinnvoll, aber dies steht im Widerspruch zu dem, was man tcpüber tcp_rmemden Maximalwert von 's sagt : the maximum size of the receive buffer used by each TCP socket. This value does not override the global net.core.rmem_max- Siehe auch stackoverflow.com/questions/31546835/… . Ist man tcpfalsch
nh2
@ nh2 Das wäre nicht das erste Mal, dass eine Manpage falsch ist.
Nils
1
Wie genau hast du es getestet?
Wildcard
1
@Wildcard Ich habe den Wert eingestellt und den anderen Wert nach Einstellungen gelesen
Nils
3
@Nils, das einfache Lesen der Werte sagt nicht, ob einer den anderen überschreibt - Sie müssen tatsächlich versuchen, einen TCP-Puffer zu erhalten, der den net.core überschreitet. [Wmem / rmem] _max-Puffer, um ein solches Überschreiben zu testen.
Jordan Pilat