Ich arbeite mit zwei CentOS Linux-Servern am selben Standort, die sich hinter einer erweiterten Sonicwall PRO 2040-Firewall befinden, die im transparenten Bridge-Modus ausgeführt wird.
Diese Server haben ein seltsames Problem beim Herunterladen von Dateien mit einer Größe von mehr als einigen Megabyte. Wenn ich zum Beispiel versuche, eine Kopie des Linux-Kernels von kernel.org zu testen oder per FTP zu senden, werden die ersten ~ 1-2 MB mit 600 + K / s heruntergeladen, und der Durchsatz sinkt dann von einer Klippe auf 1 K / s.
Ich habe alle Firewall-Konfigurationseinstellungen auf verdächtige Daten überprüft, aber nichts gefunden. Interessanter ist, dass ich denselben Download mit einem Windows-Server durchgeführt habe, der sich hinter derselben Firewall befindet, und der den ganzen Weg mit 600 + K / s durchgesegelt ist.
Hat das jemand gesehen? Wo soll ich anfangen, um dieses Problem zu beheben?
quelle
Antworten:
Auch wir haben das gleiche Problem. Alles, was größer ist als das, was im ersten Download-Burst übertragen werden kann (~ 3,7 MB für uns), läuft unabhängig von der verfügbaren Bandbreite auf ~ 1 bis 4 KB pro Sekunde ab.
Es scheint ein spezifisches Problem mit der SonicWall PRO 2040-Firewall zu sein - https://discussions.apple.com/message/12250946?messageID=12250946
Die Ursache des Problems liegt in der Firewall. Die beste langfristige Lösung besteht darin, eine Einstellung in der Firewall zu finden, mit der die Option TCP-Fensterskalierung aktiviert werden kann, und den TCP-Fensterskalierungsfaktor des initiierenden Computers bei der Initialisierung des zu verwenden Verbindung.
Obwohl sich dieser Artikel auf Router bezieht, gilt dieselbe Logik für die Vorgänge mit der SonicWall Pro 2040-Firewall ( http://lwn.net/Articles/92727/) :
Ähnlich wie oben erwähnt gibt es Problemumgehungen für einzelne Computer - http://prowiki.isc.upenn.edu/wiki/TCP_tuning_for_broken_firewalls . Durch Deaktivieren der TCP-Erweiterung rfc1323 erhält die Firewall niemals die Möglichkeit, ein TCP-Fenster zu übergeben Skalierungsfaktor 0 und gibt stattdessen weiter, dass die Erweiterung rfc1323 nicht aktiviert ist, vermutlich unter Verwendung der maximal zulässigen Fenstergröße von TCP ohne die Erweiterung rfc1323, die 64 KB beträgt.
Befehle, die wir auf unseren verschiedenen Computern als vorübergehende Problemumgehung verwendet haben:
Ubuntu 10.10:
Änderung wird sofort wirksam:
Permanente Änderung nach dem nächsten Neustart:
Mac OSx:
Änderung wird sofort wirksam:
Permanente Änderung nach dem nächsten Neustart:
Win7:
Siehe verfügbare Optionen:
Befehl deaktivieren (dauerhaft):
Als Antwort darauf, warum der Windows Server keine Probleme hatte, fand ich diesen Artikel - http://msdn.microsoft.com/en-us/library/ms819736.aspx
quelle
Diese Firewalls blockieren, wenn Intrusion Prevention und / oder Antivirus aktiviert sind. Insbesondere, wenn Sie TCP-Stream als einen der zu scannenden Typen ausgewählt haben. Es wird versucht, die gesamte Datei in seinem Speicher zu erstellen, um sie zu scannen ...
Deaktivieren Sie diese Funktionen vorübergehend und prüfen Sie, ob Ihre Leistung wieder steigt. Wenn ja, sollten Sie Ihre Server zur Ausnahmeliste hinzufügen, damit Sie nicht für das gesamte Netzwerk die Hosen fallen lassen müssen.
quelle
Sehen Sie die Probleme beim Herunterladen auf den Linux-Server aus dem Netzwerk? Wenn nicht, muss es etwas mit der Kombination von Linux und der Firewall zu tun haben. Können Sie in der Firewall die CPU-Auslastung beobachten oder nach Warnungen suchen? Was ist mit dem Zurücksetzen der Firewall?
Vielleicht nimmt Linux nach dem ersten MB oder so automatisch eine Anpassung der TCP-Optionen (oder vielleicht Layer 2) vor, und die Firewall mag das nicht? Wenn Sie sich die verschiedenen Netzwerkoptionen in / proc ansehen, erhalten Sie möglicherweise eine Idee. Außerdem kann ein Paketspeicherauszug unter Linux eine Änderung der Vorgänge anzeigen, wenn die Verlangsamung auftritt.
quelle
Obwohl ich die Hauptursache dafür nicht gefunden habe, habe ich eine schnelle Problemumgehung gefunden, mit der ich Dateiübertragungen durchführen kann:
sysctl -w net.ipv4.tcp_window_scaling = 0
Die Kernel-Standardeinstellung für die TCP-Fensterskalierung ist aktiviert, aber mit diesem Befehl kann ich sie vorübergehend deaktivieren. Ich habe die Einstellung über sysctl.conf nicht dauerhaft beibehalten, da ich mir über die allgemeinen Leistungseffekte nicht sicher bin, aber sie funktioniert zur Not und kann sie dann auf 1 zurücksetzen, wenn ich fertig bin.
quelle
Versuchen Sie, die TCP-Fenster in der Sonicwall zu ändern.
quelle
Hier müssen noch viele Erstdiagnosen durchgeführt werden.
Fehler in
/var/log/messages
?Fehler in
dmesg
?Paketverlust nachgewiesen in
/sbin/ifconfig
?Probleme mit der Linkverhandlung?
Gibt es physische oder nicht physische Unterschiede zwischen der Windows-Box und der Linux-Box?
Bearbeiten 1
Können Sie die Leistung mit verschiedenen Protokollen und Sites reproduzieren?
quelle