Ich verwende seit einiger Zeit eine Linux-Box als Router. Nichts Besonderes, nur das Weiterleiten im Kernel zu aktivieren, das Masquerading einzuschalten und iptables einzurichten, um ein paar Löcher in die Firewall zu stechen.
Vor kurzem hat ein Freund von mir auf ein Leistungsproblem hingewiesen. Einzelne TCP-Verbindungen scheinen eine sehr schlechte Leistung zu haben. Sie müssen mehrere parallele TCP-Verbindungen herstellen, um eine anständige Geschwindigkeit zu erreichen.
Zum Beispiel habe ich eine 10-MBit-Internetverbindung. Wenn ich eine Datei aus einer bekannten Quelle herunterlade, z. B. DownThemAll! Erweiterung für Firefox (die mehrere parallele TCP-Verbindungen öffnet) Ich kann es dazu bringen, meine Downstream-Bandbreite bei etwa 1 MB / s zu maximieren. Wenn ich jedoch dieselbe Datei mit dem integrierten Download-Manager in Firefox (nur eine einzige TCP-Verbindung verwendend) herunterlade, wird sie schnell gestartet und die Geschwindigkeit wird erhöht, bis die maximale Geschwindigkeit von 100 KB / s bis 350 KB / s erreicht ist.
Ich habe das interne Netzwerk überprüft und es scheint keine Probleme zu haben. Alles läuft über einen 100-Mbit-Switch. Ich habe iperf sowohl intern (vom Router zu meinem Desktop) als auch extern (von meinem Desktop zu einer Linux-Box, die ich im Internet besitze) ausgeführt und habe keine Probleme gesehen. Es übertrifft 1 MB / s, wie es sollte. Speedtest.net meldet auch 10-MBit-Geschwindigkeiten.
Die Last auf dem Linux-Rechner liegt ständig bei 0,00, 0,00 und 0,00, und der Arbeitsspeicher ist ausreichend. Es ist ein älteres Notebook mit einem Pentium M 1,6 GHz-Prozessor und 1 GB RAM. Das interne Netzwerk ist mit der integrierten Intel-Netzwerkkarte verbunden, und das Kabelmodem ist mit einer 32-Bit-PCMCIA-Netzwerkkarte von Netgear FA511 verbunden.
Ich denke, das Problem liegt in der Paketweiterleitung im Router, aber ich bin mir ehrlich gesagt nicht sicher, wo das Problem liegen könnte. Gibt es etwas, was einen einzelnen TCP-Stream erheblich verlangsamen würde?
2 Antworten auf die Frage
1
Bob Somers
Das Problem wurde behoben. Es gab eine Art Hardwareproblem (immer noch keine Ahnung, was) auf der Maschine. Nach der Installation der gleichen Linux-Distribution und der Neukonfiguration der Firewall und der Paketweiterleitung auf eine andere Maschine habe ich das Problem nicht mehr.
Seltsam.
0
David Spillett
Dies ist höchstwahrscheinlich ein Problem mit der Leistung pro Stream auf dem Remote-Ende oder Ihrem ISP. Jeder einzelne Stream wird entweder absichtlich (von Ihrem ISP) oder nur aufgrund von Überlastung (am Remote-Standort, bei Ihrem ISP oder an einem anderen Ort) gedrosselt zwischen).
Es ist unwahrscheinlich, dass es an Ihrem Ende ein Fehler ist.
Stellen Sie sich als Beispiel vor, wie dies bei Überlastungen der Fall ist: Stellen Sie sich einen Webserver mit einer 10000Kbyte / s-Verbindung und keinen anderen Grenzwerten / Engpässen vor. Wenn es 100 aktive Verbindungen gibt, die große Objekte herunterladen, werden sie (wobei Abweichungen, die durch Latenz- und Überlastungsunterschiede zwischen jedem Client und dem Server verursacht werden, ignoriert werden) durchschnittlich etwa 100 KByte / s erreicht. Wenn Sie fünf Verbindungen statt einer geöffnet haben, erhalten Sie mehr als 480 KByte / Sek. (10000/104 * 5), während jeder einzelne Stream etwas in der Richtung von 95 KByte / Sek. (10000/104 * 1) erhält. Natürlich sind Sie in diesem Beispiel der einzige, der mehrere Verbindungen verwendet, was im wirklichen Leben unwahrscheinlich ist. Und auch diese Mathematik funktioniert nur, wenn das Verkehrsmanagement bei Überlastung zu einer angemessenen Durchschnittsrate für jeden Strom führt.
Danke, aber ich habe das auch überprüft. Wir haben einen generischen Linksys-Router ausgetauscht und dieses Problem ist nicht aufgetreten. Es war in der Lage, 10 Mbit auf einen einzigen TCP-Stream herunterzuladen. Ich habe auch getestet, wie ich eine Datei von meiner Linux-Box aus dem Internet herunterlade (die ich nicht bedrosselt habe) und dasselbe Problem hatte.
Bob Somers vor 15 Jahren
0
Ungerade. Ich würde nicht erwarten, dass Linux den Datenverkehr auf diese Weise beeinflusst, wenn nicht explizites Traffic Shaping eingerichtet wird. Wenn Sie die Routing-, Filterungs- und Verwerfungsregeln für das Masquerading und die Portweiterleitung manuell eingerichtet haben, wissen Sie, ob Sie dies getan haben. Wenn Sie jedoch ein GUI-Tool oder -Skript von einem anderen Ort aus verwendet haben, wäre es vielleicht wert, das zu überprüfen Inhalt der aktiven ip_tables- und Warteschlangenregeln, um festzustellen, ob dort etwas Unerwartetes vorliegt.
David Spillett vor 15 Jahren
0