So optimieren Sie die Ubuntu-Internetgeschwindigkeit mit den MTU-Einstellungen
Der einfachste Weg, um den richtigen MTU-Wert für Ihre Maschine herauszufinden, besteht darin, ein Terminalfenster zu öffnen. Halten Sie STRG, ATL und T gedrückt oder starten Sie es über den Unity-Strich. Wenn Sie mit Ubuntu Server arbeiten, verwenden Sie standardmäßig eine CLI-Oberfläche ohne grafische Umgebung. Wenn Sie am Terminal angekommen sind, geben Sie ping -s 1464 -c1 distrowatch.com ein und warten Sie auf die Ausgabe. Wenn Sie nichts erhalten, wurde Ihre Netzwerkverbindung nicht richtig konfiguriert. Angenommen, Sie haben die richtige Ausgabe erhalten, suchen Sie nach einem Abschnitt, der 1464 (1492) Datenbytes liest, was darauf hinweist, dass Sie das Paket mit 28 Byte Header-Informationen senden.
Methode 1: Untersuchen der Ping-Ausgabe auf Paketfragmentierung
Mit dem Befehl ping erfahren Sie, ob das Paket als mehr als ein Fragment mit mehreren angehängten Headerdaten gesendet wurde. Untersuchen Sie die Ausgabe auf eine Zeile, die vor etwas in Bezug auf “Frag benötigt und DF gesetzt (mtu = 1492)” oder einen ähnlichen Text warnt. Abhängig davon, welche Ping-Version in Ihrer Ubuntu-Version enthalten war, kann die Warnung unterschiedlich formuliert sein. Sollte dieser Text nicht vorhanden sein, arbeiten Sie höchstwahrscheinlich bereits mit einer MTU-Messung, bei der derzeit keine fragmentierten Pakete gesendet werden.
Um die für Ihr System am besten optimierte MTU 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 dies als Ihren Grenzwert. Beachten Sie, dass MTU = Payload + 28 ist, da Platz für die Header-Daten vorhanden sein muss. Wenn Sie die Größe ohne Fragmente auf etwas sehr Großes erhöhen können, kann Ihre Netzwerkschnittstelle möglicherweise massive Pakete verarbeiten, ohne dass Fragmente generiert werden müssen. Wenn Sie endlich eine Frag-Warnung sehen, die benötigt wird, bedeutet dies, dass jedes Paket, das mit einer Nutzlast der von Ihnen ausgeführten Größe oder höher gesendet wird, als mehrere Pakete gesendet wird. Angenommen, Sie versuchen ping -s 2464 -c1 distrowatch.com ohne Warnung, ping -s 2465 -c1 distrowatch.com sendet jedoch 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 Momente dauern, bis ein genauer Wert ermittelt ist.
Sobald Sie einen Wert für das mehrmalige Ausführen des Ping-Befehls im Sinn haben, müssen Sie ihn ausführen sudo ifconfig um eine Liste bekannter Netzwerkschnittstellen zu finden. Ubuntu und seine Derivate haben das Root-Konto gehasht, aber wir haben für unsere Beispiele mit einer von sudo bash erstellten Shell gearbeitet. Es wird empfohlen, dass Sie jedem Befehl einfach sudo einzeln voranstellen.
Versuchen Sie, sobald Sie das richtige Gerät kennen:
sudo ifconfig interfaceName mtu ####
Ersetzen Sie interfaceName durch den Namen des Netzwerkadapters, mit dem Sie arbeiten, und ersetzen Sie dann #### durch die gefundene Größe plus 28 für Header-Informationen. Sie können ifconfig ausführen, um die Standard-MTU für Ihre Netzwerkkarte zu ermitteln, und sie mehrmals ausführen, um festzustellen, ob dieser vorherige Befehl sie ändert. Bei einigen Netzwerkschnittstellenadaptern können Sie dies einfach nicht ändern. Wenn dies der Fall ist, ist eine weitere Optimierung leider erfolglos. Wenn dies jedoch funktioniert hat, können Sie es tatsächlich dauerhaft machen. Versuche zu rennen ifconfig | grep MTU Um alle Werte zu finden, wenn Sie mehrere Konnektoren haben, können Sie die Werte dann den Konnektoren zuordnen, mit denen Sie arbeiten.
Methode 2: MTU-Optimierungen festhalten
Bisher haben Sie Ihr System nicht dauerhaft geändert. Wenn Sie neu starten, werden alle Änderungen gelöscht. Dies ist gut, wenn Sie einen Fehler gemacht haben und feststellen, dass Sie keine Verbindung mehr zum Internet herstellen können. Wenn Sie jedoch einen genauen Wert für Ihre MTU gefunden haben, müssen Sie den bearbeiten Dokument. Dies ist wahrscheinlich ein guter Zeitpunkt, um eine Kopie davon zu erstellen, falls etwas passiert. Versuchen oder etwas Ähnliches, damit Sie für alle Fälle eine Kopie haben. Wenn Sie es grafisch bearbeiten möchten, geben Sie ein und geben Sie Ihr Passwort ein. Wenn Sie Kubuntu, Xubuntu oder Lubuntu verwenden, müssen Sie gedit durch den grafischen Texteditor ersetzen, den Ihr Ubuntu-Respin verwendet. Xubuntu verwendet beispielsweise ein Mauspad anstelle von gedit. Wenn Sie Ubuntu Server verwenden oder einfach lieber mit der Befehlszeile arbeiten, geben Sie stattdessen ein Angenommen, Sie verwenden keine Root-Shell.
Unabhängig davon, mit welcher Methode Sie es bearbeitet haben, suchen Sie den Namen der Schnittstelle, die ifconfig zuvor ausgespuckt hat. Nehmen wir an, Sie haben sich den ersten Wifi-Anschluss auf Ihrem Computer angesehen, der wahrscheinlich den Namen wlan0 oder ähnliches trägt. Suchen Sie in diesem Fall einen Codeausschnitt, der mit iface wlan0 inet static oder ähnlichem beginnt. Ihr Kilometerstand kann variieren, aber in der nächsten Zeile wird die Adresse gefolgt von einer IP-Adresse im Format ###. ###. #. ## angezeigt. Es kann anders formatiert sein, wenn Sie eine native IPv6-Verbindung haben. Sie haben eine Netzmaske und eine Gateway-Leitung, gefolgt von etwas, das einen Hostnamen oder ähnliches auflistet. Unten sehen Sie eine weitere Zeile mit der Aufschrift mtu und eine Zahl. Ersetzen Sie diese Nummer durch den optimierten MTU-Wert, speichern Sie das Dokument und beenden 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önnen stattdessen sudo mv verwenden und dann
wenn dabei etwas schief ging.
Methode 3: Bearbeiten der Einstellungen des TCP-Empfangsfensters (RWIN)
Ubuntu bezieht sich auf die größte Datenmenge, die ein Host akzeptiert, bevor er den Absender als RWIN-Wert bestätigt. Wenn Sie eine 30-MB-Datei herunterladen, sendet Ihnen der Remote-Server nicht sofort einen 30-MB-Datenblock. Ihr Ubuntu-Host sendet eine bestimmte RWIN-Nummer, wenn er die Datei anfordert. Anschließend beginnt der Server mit dem Streaming von Daten, bis die Anzahl der Bytes erreicht ist, bevor er auf die Bestätigung wartet, dass Ihr System die Daten erhalten hat. Sobald der Server dies empfängt, beginnt er, zusätzliche Blöcke zu senden, bevor er auf eine weitere Bestätigung wartet.
Die Latenz ist die Zeit, die zum Senden 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 Form von RTT-Zahlen (Round Trip Time). Schauen Sie sich die Ausgabe unseres vorherigen Ping von DistroWatch an. Sie finden eine Zeile mit der Aufschrift time = 134 ms. So lange hat es gedauert, bis Pakete von unserer Ubuntu-Maschine zu distrowatch.com und wieder zurück gefahren sind. Wir haben ein 1.492-Byte-Paket gesendet, sodass wir bei 134 ms eine Formel berechnen konnten, um die Gesamtübertragungsgeschwindigkeit zu ermitteln:
1.492 / .134 Sekunden = 11.134.328 Bytes / Sekunde, was ungefähr 10,88 binären Kilobytes pro Sekunde entspricht. Das ist insgesamt ziemlich langsam, weshalb RWIN vorhanden ist, damit 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 folgender Formel:
(Maximale Gesamtbandbreite, die Ihre Internetverbindung in Bytes pro Sekunde bereitstellen sollte) (RTT in Sekunden) = BDP
Die TCP-Paketgröße hat keinen Einfluss auf RWIN, aber die Paketgröße selbst wird durch den in Methode 1 ausgewählten Wert beeinflusst. Verwenden Sie diesen Befehl, um die Kernelvariablen zu finden, die sich auf RWIN beziehen:
Bitte beachten Sie, dass nach _mem ein Leerzeichen steht, aber nirgendwo anders im zitierten Text. Sie erhalten mehrere Werte zurück. Diejenigen, die benötigt werden, sind net.ipv4.tcp_rmem, net.ipv4.tcp_wmem und net.ipv4.tcp_mem. Die Zahlen nach diesen Werten geben jeweils den Minimal-, Standard- und Maximalwert an. Sie repräsentieren den Speichervektor des Empfangsfensters, den Sendevektor und den TCP-Stapelvektor. Wenn Sie Ubuntu Kylin ausführen, haben Sie möglicherweise eine lange Liste zusätzlicher. Sie können jeden dieser zusätzlichen Werte ignorieren. Einige Benutzer von Kylin sehen möglicherweise auch einige der in anderen Skripten beschriebenen Werte, suchen jedoch noch einmal einfach nach diesen Zeilen.
Ubuntu hat keine RWIN-Variable, aber net.ipv4.tcp_rmem ist nah. Diese Variablen steuern die Speichernutzung und nicht nur die TCP-Größe. Dazu gehören Speicher, der von Daten-Socket-Strukturen verbraucht wird, und kurze Pakete in massiven Puffern. Wenn Sie diese Werte optimieren möchten, senden Sie die in Methode 1 festgelegten Pakete mit maximaler Größe an einen anderen Remoteserver. Verwenden wir erneut die Standardeinstellung von 1.492 Byte und subtrahieren 28 Byte für die Header-Informationen. Denken Sie jedoch daran, dass Sie möglicherweise einen anderen Wert haben. Verwenden Sie den Befehl ping -s 1464 -c5 distrowatch.com, um zusätzliche RTT-Daten abzurufen.
Sie sollten diesen Test mehrmals zu verschiedenen Tages- und Nachtzeiten ausführen. Versuchen Sie auch, einige andere Remote-Server anzupingen, um festzustellen, wie stark die RTT variiert. Da wir bei jedem Versuch durchschnittlich etwas mehr als 130 ms hatten, können wir die Formel verwenden, um unseren BDP zu ermitteln. Nehmen wir an, Sie haben eine sehr generische 6-Mbit / s-Verbindung. Die BDP wäre:
(6.000.000 Bits / Sek.) (133 Sek.) * (1 Byte / 8 Bits) = 99.750 Byte
Dies bedeutet, dass der Standardwert für net.ipv4.tcp_rmem irgendwo bei 100.000 liegen sollte. Sie könnten es sogar noch höher einstellen, wenn Sie befürchten, dass Sie eine RTT von nur einer halben Sekunde erhalten. Alle in net.ipv4.tcp_rmem und net.ipv4.tcp_wmem gefundenen Werte müssen identisch festgelegt werden, da das Senden und Empfangen von Paketen über dieselbe Internetverbindung erfolgt. Im Allgemeinen sollten Sie net.ipv4.tcp_mem auf denselben Wert setzen, der von net.ipv4.tcp_wmem und net.ipv4.tcp_rmem verwendet wird, da diese erste Variable die größte für TCP-Transaktionen festgelegte Pufferspeichergröße ist.
Geben Sie den Befehl ein und prüfen Sie, ob diese beiden Einstellungen auf 0 oder 1 gesetzt sind, was auf einen Aus- oder Ein-Zustand hinweist.
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 eine Überlastung die nachfolgende Konnektivität beeinflusst. Führen Sie vor dauerhaften Änderungen eine Geschwindigkeitsüberprüfung über 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 festzustellen, ob sich die Geschwindigkeit verbessert hat. Wenn nicht, optimieren Sie Ihren Befehl erneut und führen Sie ihn erneut aus. 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 gksu oder sudo Texteditor-Befehl aus Methode 1, und bearbeiten Sie die zu lesenden Zeilen wie folgt, wobei Sie die #s erneut durch Ihre berechneten Werte ersetzen. Sie möchten natürlich auch das sichern Datei auf die gleiche Weise wie im ersten Teil, nur für den Fall, dass Sie einen Fehler machen. Wenn Sie eine erstellt haben, können Sie diese 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 ein:
sudo sysctl -p
Dadurch wird der Linux-Kernel gezwungen, die Einstellungen in neu zu laden , und wenn alles gut gegangen ist, sollte es Ihnen zumindest eine etwas schnellere Netzwerkverbindung geben. Abhängig von Ihren ursprünglichen Standardeinstellungen kann der Unterschied tatsächlich dramatisch oder möglicherweise überhaupt nicht spürbar sein.