(NETZWERK) - TCP Stack tunen
agapanthus
- sonstiges
Moin.
Heute bin ich auf der Suche nach einem Trick, den TCP-Stack unter Linux (Suse Enterprise Edition 9) dazu zu überreden, die windows size zu modifizieren. Standardmäßig benutzt Suse offensichtlich 5840 Byte. Eigentlich soll Linux ja über einen Automatismus verfügen, aber hier wird immer nur die o.g. Größe genommen. Resourcen gibts übrigens genug, daran kann es nicht liegen...
Bisher habe ich folgendes versucht:
In /proc/sys/net/ipv4 und /proc/sys/net/core habe ich die entsprechenden Werte gesetzt.
Und, als das nix gebracht hat, habe ich es über sysctl.conf versucht:
net.core.rmem_max = 65536
net.core.wmem_max = 65536
net.ipv4.tcp_rmem = 16384 36864 65536
net.ipv4.tcp_wmem = 16384 36864 65536
net.ipv4.tcp_window_scaling 1
Nach einem network restart sollte es gehen - denkste, jedes TCP SYN wird stur mit SYN ACK mit o.g. window size beantwortet.
Hat einer eine Idee?
Gruß Frank
Hallo Frank,
Hat einer eine Idee?
Ehrlich gesagt: Keine Ahnung. Auf meinem System (Gentoo 2006.1, Kernel 2.6.19.1) variiert die Window-Size von Paket zu Paket und bewegt sich selbst in der Default-Configuration (net.ipv4.tcp_wmem = 4096 16384 131072, net.ipv4.tcp_rmem = 4096 87380 131072, net.ipv4.tcp_window_scaling = 1) in Bereichen zwischen 30000 und 40000.
Wie stellst Du denn fest, dass die Window-Size lediglich 5840 Byte groß ist? Per Paketsniffer? Welchen Kernel verwendest Du?
Viele Grüße,
Christian
Moin.
Ehrlich gesagt: Keine Ahnung. Auf meinem System (Gentoo 2006.1, Kernel 2.6.19.1) variiert die Window-Size von Paket zu Paket und bewegt sich selbst in der Default-Configuration (net.ipv4.tcp_wmem = 4096 16384 131072, net.ipv4.tcp_rmem = 4096 87380 131072, net.ipv4.tcp_window_scaling = 1) in Bereichen zwischen 30000 und 40000.
Sowas hatte ich auch erwartet...
Wie stellst Du denn fest, dass die Window-Size lediglich 5840 Byte groß ist? Per Paketsniffer? Welchen Kernel verwendest Du?
Ich trace mit tcpdump und sehe mir das ganze dann mit WireShark, ehemals Ethereal an. Die Frage nach dem Kernel kann ich erst am Montag beantworten, mittlerweile bin ich zu Hause... Wochenende.
Gruß Frank
Moin Christian.
Welchen Kernel verwendest Du?
2.6.5-7.276-smp
Ich werde mir jetzt nochmal genau die TCP-Nachrichten ansehen und melde mich dann hier nochmal.
Gruß Frank
Heute bin ich auf der Suche nach einem Trick, den TCP-Stack unter Linux (Suse Enterprise Edition 9) dazu zu überreden, die windows size zu modifizieren. Standardmäßig benutzt Suse offensichtlich 5840 Byte.
Und das ist auch gut so. Informiere dich über TCP Slow Start.
Nach einem network restart sollte es gehen - denkste, jedes TCP SYN wird stur mit SYN ACK mit o.g. window size beantwortet.
Weil deine Verbindung zu Beginn niedrige Windowgrößen benutzt, und erst bei erfolgreichem Datentransfer mehr Windowgröße erlaubt.
Hat einer eine Idee?
Klarer Fall von "Hat TCP noch nicht ganz durchschaut". Warum überhaupt daran herumtunen? Welches Problem willst du eigentlich lösen?
Moin.
Standardmäßig benutzt Suse offensichtlich 5840 Byte.
Und das ist auch gut so. Informiere dich über TCP Slow Start.
Werde ich machen. Klingt schon irgendwie logisch.
Weil deine Verbindung zu Beginn niedrige Windowgrößen benutzt, und erst bei erfolgreichem Datentransfer mehr Windowgröße erlaubt.
Gut, dann müßte aber nach einige Paketen, und es sind viele während der Vebindung, die window size größer werden. Wird sie aber nicht. Gibts da eine Grenze?
Klarer Fall von "Hat TCP noch nicht ganz durchschaut".
Könnte stimmen ;-)
Warum überhaupt daran herumtunen? Welches Problem willst du eigentlich lösen?
Es geht um eine Datenübertragung zw. einer Solaris- und einer Linux-Kiste. Und es werden viele Daten übertragen, dummerweise werden aber alle Nase lang ACKs geschickt, die würden wir gern seltener sehen.
Gruß Frank