Wie Ubuntu Internet Speed mit MTU-Einstellungen zu optimieren
Während sich Computertexte in ihrer Anwendung des Begriffs unterscheiden, verwendet Ubuntu die TCP Maximum Transmission Unit (MTU), um auf die größte Größe eines TCP-Pakets zu verweisen, das eine Maschine über eine TCP / IP-Netzwerkverbindung passieren kann. Während die Berechnung dieses Wertes relativ einfach ist und die Standardwerte auf einer Mehrheit von Maschinen funktionieren, könnte es möglich sein, Ihr System weiter zu optimieren, wenn Pakete wegen ungewöhnlicher Einstellungen fragmentiert werden. Das Senden großer einzelner ausgehender Pakete ist effizienter als das Senden mehrerer kleinerer ausgehender Pakete.
Der einfachste Weg, den richtigen MTU-Wert für Ihre Maschine herauszufinden, ist das Öffnen eines Terminalfensters. Halten Sie STRG, ATL und T gedrückt oder starten Sie es vom Unity-Bindestrich aus. Wenn Sie mit Ubuntu Server arbeiten, verwenden Sie standardmäßig eine CLI-Schnittstelle ohne grafische Umgebung. Sobald Sie am Terminal sind, geben Sie ping -s 1464 -c1 distrowatch.com ein und warten Sie auf die Ausgabe. Wenn Sie nichts erhalten, wurde Ihre Netzwerkverbindung nicht korrekt konfiguriert. Angenommen, Sie erhalten eine korrekte Ausgabe, dann suchen Sie nach einem Abschnitt, der 1464 (1492) Bytes Daten liest, was darauf hinweist, dass Sie das Paket mit 28 Bytes Header-Informationen senden.
Methode 1: Überprüfen der Ping-Ausgabe für die Paketfragmentierung
Mit dem Ping-Befehl wissen Sie, ob das Paket als mehr als ein Fragment mit mehreren angehängten Kopfdaten gesendet wurde. Untersuchen Sie die Ausgabe auf jede Zeile, die über etwas in Bezug auf Frag needs und DF set (mtu = 1492) oder ähnlichen Text warnt. Abhängig davon, welche Version von Ping in Ihrer Ubuntu-Version enthalten war, kann die Warnung anders formuliert sein. Sollte dieser Text nicht vorhanden sein, arbeiten Sie höchstwahrscheinlich bereits mit einer MTU-Messung, die derzeit keine fragmentierten Pakete aussendet.
Um die am besten optimierte MTU für Ihr System zu finden, sollten Sie diesen Ping-Befehl mit einer kleinen Paketgröße ausführen und ihn dann im Laufe der Zeit erhöhen, bis er zu fragmentieren beginnt. Danach betrachten Sie diesen als Abschaltpunkt. Beachten Sie, dass MTU = Payload + 28, da für die Kopfdaten etwas Platz benötigt wird. Jetzt, wenn Sie die Größe auf etwas sehr großes ohne Fragmente erhöhen können, dann kann Ihre Netzwerkschnittstelle in der Lage sein, massive Pakete zu verarbeiten, ohne dass Fragmente generiert werden müssen. Wenn Sie schließlich eine Warnung "Frag benötigt" sehen, bedeutet dies, dass jedes Paket, das mit einer Nutzlast in der Größe gesendet wird, die Sie ausgeführt haben oder höher, als mehrere Pakete gesendet wird. Angenommen, Sie versuchen ping -s 2464 -c1 distrowatch.com ohne Warnung, aber ping -s 2465 -c1 distrowatch.com sendet eine Warnung, dies bedeutet, dass 2, 464 + 28 die größte MTU-Einstellung ist, die Ihre TCP / IP-Konfiguration verarbeiten kann vor dem Senden mehrerer fragmentierter Pakete. Es kann einige Augenblicke dauern, um einen genauen Wert zu bestimmen.
Wenn Sie den Wert für den Befehl ping mehrmals angegeben haben, müssen Sie sudo ifconfig ausführen, um eine Liste bekannter Netzwerkschnittstellen zu finden. Ubuntu und seine Derivate hashten das root-Konto aus, aber wir verwendeten eine Shell, die von sudo bash für unsere Beispiele erstellt wurde. Es wird empfohlen, dass Sie jeden Befehl mit sudo einzeln voranstellen.
Sobald Sie das richtige Gerät kennen, versuchen Sie Folgendes:
sudo ifconfig interfaceName mtu ####
Ersetzen Sie InterfaceName durch den Namen des Netzwerkadapters, mit dem Sie arbeiten, und ersetzen Sie dann #### durch die Größe, die Sie gefunden haben, plus 28 für Headerinformationen. Sie können ifconfig ausführen, um zu sehen, welche Standard-MTU für Ihre Netzwerkkarte verwendet wurde, und sie mehrmals erneut ausführen, um zu sehen, ob dieser vorherige Befehl sie ändert. Einige Netzwerkschnittstellenadapter lassen Sie einfach nicht ändern. Wenn das der Fall ist, wird eine weitere Optimierung leider erfolglos sein. Wenn dies jedoch funktioniert, können Sie es tatsächlich dauerhaft machen. Versuchen Sie, ifconfig | auszuführen grep MTU, um alle Werte zu finden, wenn Sie mehrere Konnektoren haben, und dann können Sie die Werte den Konnektoren zuordnen, mit denen Sie arbeiten.
Methode 2: MTU Optimierungen machen Stick
Bisher haben Sie keine dauerhafte Änderung an Ihrem System vorgenommen. Wenn Sie neu starten, werden Sie alle Änderungen löschen, was gut ist, wenn Sie einen Fehler gemacht haben und feststellen, dass Sie keine Verbindung mehr zum Internet herstellen können. Auf der anderen Seite, wenn Sie einen genauen Wert für Ihre MTU gefunden haben, müssen Sie die bearbeiten Dokument. Dies ist wahrscheinlich eine gute Zeit, um eine Kopie davon zu machen, falls etwas passiert. Versuchen oder etwas Ähnliches, damit Sie eine Kopie für alle Fälle haben. Wenn Sie es grafisch bearbeiten möchten, geben Sie ein und gib dein Passwort ein. Wenn Sie Kubuntu, Xubuntu oder Lubuntu verwenden, müssen Sie gedit durch den grafischen Texteditor ersetzen, den Ihr Ubuntu verwendet. Xubuntu verwendet zum Beispiel mousepad anstelle von gedit. Wenn Sie Ubuntu Server verwenden oder einfach lieber mit der Befehlszeile arbeiten, geben Sie stattdessen ein , vorausgesetzt, Sie verwenden keine Root-Shell.
Unabhängig davon, welche Methode Sie zum Bearbeiten verwendet haben, finden Sie den Namen der Schnittstelle, die ifconfig vorher ausspuckt. Nehmen wir an, Sie haben sich den ersten Wifi-Anschluss auf Ihrer Maschine angeschaut, der wahrscheinlich wlan0 oder etwas Ähnliches heißen würde. In diesem Fall finden Sie ein Code-Snippet, das mit iface wlan0 inet statisch oder ähnlich beginnt. Ihr Kilometerstand kann variieren, aber die nächste Zeile liest die Adresse, gefolgt von einer IP-Adresse im Format ###. ###. #. ##. Es ist möglicherweise anders formatiert, wenn Sie eine native IPv6-Verbindung haben. Sie haben eine Netzmaske und eine Gateway-Leitung, gefolgt von etwas, das einen Host-Namen oder etwas ähnliches auflistet. Ganz unten haben Sie eine weitere Zeile, die mtu und eine Zahl anzeigt. Ersetzen Sie diese Zahl durch den MTU-Optimierungswert, speichern Sie das Dokument und schließen Sie den Texteditor. Sie sollten das System neu starten, um sicherzustellen, dass es funktioniert.
Sollte nach mehreren Neustarts alles in Ordnung sein, löschen Sie die Datei interfaces.bak in Ihrem Verzeichnis ~ / Documents. Sie könnten stattdessen sudo mv verwenden und dann
wenn irgendetwas schief ging.
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klickenMethode 3: Bearbeiten der TCP-Empfangsfenster (RWIN) -Einstellungen
Ubuntu bezieht sich auf die größte Datenmenge, die ein Host akzeptiert, bevor er den Absender als RWIN-Wert anerkennt. Wenn Sie eine 30-MB-Datei herunterladen, sendet der Remote-Server Ihnen nicht sofort einen 30-MB-Datenblock. Ihr Ubuntu-Host sendet eine spezifische RWIN-Nummer, wenn er die Datei anfordert, und dann beginnt der Server Daten zu streamen, bis er die Anzahl der Bytes erreicht hat, bevor er auf eine Bestätigung wartet, dass Ihr System die Daten erhalten hat. Sobald der Server dies empfängt, beginnt er, weitere Blöcke zu senden, bevor er auf eine weitere Bestätigung wartet.
Latenzzeit ist die Zeit, die zum Übertragen und Empfangen von Paketen von einem Remote-Server benötigt wird. Verbindungsraten tragen zu diesem Wert bei, aber auch zahlreiche andere Verzögerungen. Der Ping-Befehl erklärt die Latenz in Bezug auf die Round-Trip Time (RTT). Schauen Sie sich die Ausgabe von unserem vorherigen Ping von DistroWatch an. Sie werden eine Zeile finden, die die Zeit liest = 134 ms, wie lange es dauerte, bis Pakete von unserem Ubuntu-Rechner zu distrowatch.com und wieder zurück gereist sind. Wir sendeten ein 1, 492-Byte-Paket, also konnten wir bei 134 ms eine Formel berechnen, um die gesamte Übertragungsgeschwindigkeit zu finden:
1.492 / .134 Sekunden = 11.134.328 Bytes / Sekunde, was ungefähr 10, 88 binäre Kilobyte pro Sekunde ergibt. Das ist insgesamt ziemlich langsam, weshalb RWIN dafür sorgt, dass Sie nicht jedes einzeln gesendete Paket bestätigen müssen.
Die RWIN-Einstellungen in Ubuntu sind von den MTU-Einstellungen getrennt. Berechnen Sie das Bandbreitenverzögerungsprodukt (BDP) für Ihre Internetverbindung mit dieser Formel:
(Gesamte maximale Bandbreite, die Ihre Internetverbindung in Byte pro Sekunde bereitstellen sollte) (RTT in Sekunden) = BDP
Die TCP-Paketgröße beeinflusst nicht RWIN, aber die Paketgröße selbst wird durch den in Methode 1 ausgewählten Wert beeinflusst. Verwenden Sie diesen Befehl, um die mit RWIN verknüpften Kernelvariablen zu finden:
Bitte beachten Sie, dass hinter _mem ein Leerzeichen steht, aber nirgendwo sonst im zitierten Text. Sie erhalten mehrere Werte zurück. Die benötigten sind net.ipv4.tcp_rmem, net.ipv4.tcp_wmem und net.ipv4.tcp_mem . Die Zahlen nach diesen Werten repräsentieren die Mindest-, Standard- und Maximalwerte für jede. Sie repräsentieren den Empfangsfensterspeichervektor, den Sendevektor und den TCP-Stapelvektor. Wenn Sie Ubuntu Kylin ausführen, haben Sie möglicherweise eine lange Liste von zusätzlichen. Sie können alle diese zusätzlichen Werte ignorieren. Einige Benutzer von Kylin sehen möglicherweise auch einige der in anderen Skripten abgegrenzten Werte, aber suchen Sie noch einmal nach diesen Zeilen.
Ubuntu hat keine RWIN-Variable, aber net.ipv4.tcp_rmem ist geschlossen. Diese Variablen steuern die Speichernutzung und nicht nur die TCP-Größe. Sie umfassen Speicher, der von Daten-Socket-Strukturen aufgefressen wird, und kurze Pakete in massiven Puffern. Wenn Sie diese Werte optimieren möchten, senden Sie die in Methode 1 festgelegten Pakete mit der maximalen Größe an einen anderen Remote-Server. Lassen Sie uns den Standardwert von 1, 492 Byte erneut verwenden, indem Sie 28 Byte für Header-Informationen subtrahieren, aber denken Sie daran, dass Sie möglicherweise einen anderen Wert haben. Verwenden Sie den Befehl ping -s 1464 -c5 distrowatch.com, um zusätzliche RTT-Daten zu erhalten.
Sie möchten diesen Test mehrmals zu unterschiedlichen Tages- und Nachtzeiten durchführen. Versuchen Sie, einige andere Remote-Server anzupingen, um zu sehen, wie viel RTT variiert. Da wir jedes Mal einen Durchschnitt von etwas mehr als 130 ms hatten, können wir die Formel verwenden, um unseren BDP herauszufinden. Angenommen, Sie befinden sich in einer sehr allgemeinen 6-Mbit / Sekunde-Verbindung. Der BDP wäre:
(6.000.000 Bits / Sek.) (133 Sek.) * (1 Byte / 8 Bits) = 99.750 Bytes
Dies bedeutet, dass der Standardwert net.ipv4.tcp_rmem ungefähr 100.000 sein sollte. Du könntest es noch höher legen, wenn du befürchtest, dass du eine RTT so schlimm wie eine halbe Sekunde bekommst. Alle in net.ipv4.tcp_rmem und net.ipv4.tcp_wmem gefundenen Werte müssen identisch eingestellt werden, da die Übertragung und der Empfang von Paketen über dieselbe Internetverbindung erfolgen. Im Allgemeinen möchten Sie net.ipv4.tcp_mem auf den gleichen Wert setzen, der von net.ipv4.tcp_wmem und net.ipv4.tcp_rmem verwendet wird, da diese erste Variable die größte Größe des gesamten Pufferspeichers für TCP-Transaktionen ist.
Geben Sie den Befehl aus und sehen Sie, ob diese beiden Einstellungen auf 0 oder 1 gesetzt sind, was den Status "Aus" oder "Ein" anzeigt.
Wenn Sie net.ipv4.tcp_no_metrics_save auf 1 setzen, wird der Linux-Kernel gezwungen, das Empfangsfenster zwischen den Werten net.ipv4.tcp_rmem und net.ipv4.tcp_wmem dynamisch zu optimieren. Wenn net.ipv4.tcp_moderate_rcvbuf aktiviert ist, wird verhindert, dass Überlastungen die nachfolgende Konnektivität beeinflussen. Bevor Sie dauerhafte Änderungen vornehmen, führen Sie eine Geschwindigkeitsprüfung durch http://www.speedtest.net oder http://www.bing.com/search?q=speed+test durch, um sicherzustellen, dass Sie Ihre Messungen im Griff haben.
Ändern Sie die Variablen vorübergehend mit Ihren berechneten Werten. Stellen Sie sicher, dass Sie die # s durch Ihre berechneten Summen ersetzen.
sudo sysctl -w net.ipv4.tcp_rmem = #### ##### ###### net.ipv4.tcp_wmem = #### ########### net.ipv4. tcp_mem = #### ##### ###### net.ipv4.tcp_no_metrics_save = 1 net.ipv4.tcp_moderate_rcvbuf = 1
Testen Sie Ihre Verbindung erneut, um zu sehen, ob sich die Geschwindigkeit verbessert hat, und wiederholen Sie den Befehl erneut, wenn Sie ihn nicht erneut ausführen. Denken Sie daran, dass Sie die Aufwärts-Taste in Ihrem Terminal drücken können, um den zuletzt verwendeten Befehl zu wiederholen. Sobald Sie die entsprechenden Werte gefunden haben, öffnen Sie Mit dem Befehl gksu oder sudo Texteditor von Methode 1 bearbeiten Sie die zu lesenden Zeilen wie folgt und ersetzen Sie die # s erneut durch die berechneten Werte. Sie möchten natürlich auch die Sicherung sichern file wie im ersten Teil, nur für den Fall, dass Sie einen Fehler machen. Wenn Sie eines erstellt haben, können Sie es auch auf die gleiche Weise wiederherstellen.
net.ipv4.tcp_rmem = #### ##### ######
net.ipv4.tcp_wmem = #### ##### ######
net.ipv4.tcp_mem = #### ##### ######
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1
Speichern Sie es, sobald Sie sicher sind, dass alles in Ordnung ist. Geben Sie den folgenden Befehl aus:
sudo sysctl -p
Dadurch wird der Linux-Kernel gezwungen, die Einstellungen neu zu laden und wenn alles gut gegangen ist, sollte es Ihnen zumindest eine etwas schnellere Netzwerkverbindung geben. Je nach den ursprünglichen Standardeinstellungen ist der Unterschied möglicherweise dramatisch oder möglicherweise gar nicht wahrnehmbar.
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken