Hoe Ubuntu Internet Speed te optimaliseren met MTU-instellingen
Hoewel computerteksten verschillen in de toepassing van de term, gebruikt Ubuntu de TCP Maximum Transmission Unit (MTU) om te verwijzen naar de grootste grootte van een TCP-pakket dat een machine kan doorgeven via een TCP / IP-netwerkverbinding. Hoewel het berekenen van deze waarde relatief eenvoudig is en standaard werkt op een meerderheid van de machines, kan het mogelijk zijn om uw systeem verder te optimaliseren als pakketten fragmenteren vanwege ongebruikelijke instellingen. Het verzenden van grote afzonderlijke uitgaande pakketten is efficiënter dan het verzenden van meerdere kleinere uitgaand pakketten.
De eenvoudigste manier om de juiste MTU-waarde voor uw machine te achterhalen, is om een terminalvenster te openen. Houd CTRL, ATL en T ingedrukt of start het misschien vanuit het Unity-streepje. Als u met Ubuntu Server werkt, wordt standaard een CLI-interface zonder grafische omgeving gebruikt. Zodra u op de terminal bent, typt u ping -s 1464 -c1 distrowatch.com en wacht op de uitvoer. Als u niets ontvangt, is uw netwerkverbinding niet correct geconfigureerd. Stel dat u de juiste uitvoer hebt ontvangen, zoek dan naar een sectie met 1464 (1492) bytes aan gegevens, die aangeeft dat u het pakket met 28 bytes aan kopinformatie verzendt.
Methode 1: Ping-uitvoer onderzoeken voor pakketfragmentatie
Met de opdracht ping weet u of het pakket is verzonden als meer dan één fragment met meerdere kopgegevens. Bekijk de uitvoer voor elke regel die waarschuwt voor iets over Frag needed en DF set (mtu = 1492) of gelijkaardige tekst. Afhankelijk van welke versie van de ping werd meegeleverd met uw versie van Ubuntu, kan de waarschuwing anders zijn geformuleerd. Mocht deze tekst niet aanwezig zijn, dan is het meer dan waarschijnlijk dat u al werkt met sommige MTU-metingen die momenteel geen gefragmenteerde pakketten verzenden.
Om de meest geoptimaliseerde MTU voor uw systeem te vinden, zou u deze ping-opdracht met een klein pakketformaat willen uitvoeren en deze in de loop van de tijd verhogen tot het fragmenteert, waarna u dit als uw afkappunt beschouwt. Houd er rekening mee dat MTU = payload + 28 is, omdat er ruimte moet zijn voor de headergegevens. Nu, als u de grootte kunt vergroten tot iets heel groots zonder fragmenten, dan kan uw netwerkinterface in staat zijn om grote pakketten te verwerken zonder de noodzaak om fragmenten te genereren. Wanneer u eindelijk een Frag-waarschuwing ziet, betekent dit dat elk pakket dat wordt verzonden met een payload van de grootte die u hebt uitgevoerd of hoger, als meerdere pakketten wordt verzonden. Stel dat als je ping -s 2464 -c1 distrowatch.com zonder enige waarschuwing probeert, maar ping -s 2465 -c1 distrowatch.com een waarschuwing stuurt, betekent dit dat 2.464 + 28 de grootste MTU-instelling is die je TCP / IP-configuratie aankan voordat u meerdere gefragmenteerde pakketten verzendt. Het kan even duren voordat een exacte waarde is vastgesteld.
Als u eenmaal een waarde in gedachten hebt om de ping-opdracht meerdere keren uit te voeren, moet u sudo ifconfig uitvoeren om een lijst met bekende netwerkinterfaces te vinden. Ubuntu en zijn derivaten hash uit de root-account, maar we opereerden vanuit een shell gemaakt door sudo bash voor onze voorbeelden. Het is raadzaam om elke opdracht met sudo alleen voor te leggen.
Zodra u het juiste apparaat kent, probeert u het volgende:
sudo ifconfig interfaceName mtu ####
Vervang interfaceName door de naam van de netwerkadapter waarmee u werkt en vervang #### door de gevonden grootte plus 28 voor koptekstinformatie. U kunt ifconfig uitvoeren om te zien wat de standaard MTU was voor uw NIC en deze meerdere keren opnieuw uitvoeren om te zien of deze vorige opdracht deze wijzigt. Bij sommige netwerkinterfaceadapters kunt u het eenvoudigweg niet wijzigen. Als dat het geval is, is verdere optimalisatie helaas vruchteloos. Als dit echter lukte, kun je het echt permanent maken. Probeer ifconfig | uit te voeren grep MTU om alle waarden te vinden als je meerdere connectors hebt, en dan kun je de waarden afstemmen op de connectors waarmee je werkt.
Methode 2: MTU-optimalisaties maken Stick
Tot nu toe heb je geen permanente verandering in je systeem aangebracht. Als je opnieuw opstart, veeg je eventuele wijzigingen weg, wat goed is als je een fout hebt gemaakt en merkt dat je geen verbinding meer kunt maken met internet. Aan de andere kant, als u een juiste waarde voor uw MTU hebt gevonden, moet u de document. Dit is waarschijnlijk een goed moment om er een kopie van te maken voor het geval er iets gebeurt. Proberen of iets vergelijkbaars, dus je hebt een kopie voor het geval dat. Als u het grafisch wilt bewerken, typt u en voer je wachtwoord in. Als je Kubuntu, Xubuntu of Lubuntu gebruikt, moet je gedit vervangen door de grafische teksteditor die je door Ubuntu respin gebruikt. Xubuntu gebruikt bijvoorbeeld mousepad in plaats van gedit. Als u Ubuntu Server gebruikt of liever werkt met de opdrachtregel, typt u in plaats daarvan , ervan uitgaande dat je geen rootshell gebruikt.
Ongeacht welke methode je hebt gebruikt om het te bewerken, vind de naam van de interface ifconfig eerder uitgespuwd. Laten we aannemen dat je naar de eerste Wifi-connector op je machine keek, die waarschijnlijk wlan0 of iets dergelijks zou worden genoemd. Zoek in dit geval een codefragment dat begint met iface wlan0 inet static of iets dergelijks. Uw kilometerstand kan variëren, maar de volgende regel leest het adres gevolgd door een IP-adres in de indeling ###. ###. #. ##. Het kan anders worden opgemaakt als u een native IPv6-verbinding gebruikt. U hebt een netmask en gatewaylijn, gevolgd door iets dat een hostnaam of iets dergelijks bevat. Onderaan heb je een andere regel die mtu en een cijfer voorleest. Vervang dat aantal door de MTU-waarde te optimaliseren, sla het document op en sluit de teksteditor. U wilt het systeem opnieuw opstarten om ervoor te zorgen dat het werkt.
Mocht alles goed zijn na verschillende reboots, verwijder dan het bestand interfaces.bak in je map ~ / Documents. U kunt in plaats daarvan sudo mv gebruiken en dan
als er iets mis ging in het proces.
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikkenMethode 3: Instellingen van het TCP-ontvangstvenster (RWIN) bewerken
Ubuntu verwijst naar de grootste hoeveelheid gegevens die een host accepteert voordat de afzender wordt herkend als de RWIN-waarde. Als u een bestand van 30 MB downloadt, stuurt de externe server u niet meteen een gegevensblok van 30 MB. Uw Ubuntu-host verzendt een specifiek RWIN-nummer wanneer het het bestand opvraagt, waarna de server begint met het streamen van gegevens totdat het het aantal bytes heeft bereikt voordat wordt gewacht op een bevestiging dat uw systeem de gegevens heeft ontvangen. Zodra de server dit ontvangt, begint het extra blokken te verzenden voordat er wordt gewacht op een nieuwe bevestiging.
Latency is de tijd die het kost om pakketten te verzenden en ontvangen van een externe server. Verbindingspercentages dragen bij aan deze waarde, maar dat geldt ook voor tal van andere vertragingen. De ping-opdracht legt de latentie uit in termen van RTT-tijden (round-trip time). Kijk naar de uitvoer van onze vorige ping van DistroWatch. Je zult een regel vinden die tijd = 134 ms aangeeft, dat is hoe lang het duurde voordat pakketten heen en weer gingen van onze Ubuntu-machine naar distrowatch.com en weer terug. We stuurden een pakket van 1492 bytes, dus bij 134 ms konden we een formule berekenen om de totale overdrachtsnelheid te vinden:
1, 492 / .134 seconden = 11, 134.328 bytes / seconde, wat uitkomt op ongeveer 10, 88 binaire kilobytes per seconde. Dat is vrij traag in het algemeen, daarom is RWIN aanwezig om te voorkomen dat u elk verzonden pakket afzonderlijk moet bevestigen.
RWIN-instellingen in Ubuntu staan los van MTU-instellingen. Bereken het bandbreedtevertragingsproduct (BDP) voor uw internetverbinding met deze formule:
(Totale maximale bandbreedte die uw internetverbinding moet leveren in bytes per seconde) (RTT in seconden) = BDP
TCP-pakketgrootte heeft geen invloed op RWIN, maar de pakketgrootte zelf wordt beïnvloed door de waarde die is geselecteerd in methode 1. Gebruik deze opdracht om de kernelvariabelen te vinden die gerelateerd zijn aan RWIN:
Houd er rekening mee dat er ruimte is na _mem, maar nergens anders in de geciteerde tekst. Je krijgt verschillende waarden terug. De benodigde zijn net.ipv4.tcp_rmem, net.ipv4.tcp_wmem en net.ipv4.tcp_mem . De getallen achter deze waarden vertegenwoordigen de minimum-, standaard- en maximumwaarden voor elke waarde. Ze vertegenwoordigen de geheugenvector van het ontvangvenster, de verzendvector en de TCP-stackvector. Als u Ubuntu Kylin gebruikt, hebt u mogelijk nog een lange lijst met aanvullende. U kunt een van deze aanvullende waarden veilig negeren. Sommige gebruikers van Kylin kunnen ook enkele van de waarden zien die in andere scripts zijn afgebakend, maar nogmaals naar deze regels zoeken.
Ubuntu heeft geen RWIN-variabele, maar net.ipv4.tcp_rmem is dichtbij. Deze variabelen regelen het geheugengebruik en niet alleen de TCP-grootte. Ze omvatten geheugen dat opgegeten wordt door datamocketstructuren en korte pakketten in massieve buffers. Als u deze waarden wilt optimaliseren, verzendt u de pakketten met de maximale grootte die u in Methode 1 hebt ingesteld naar een andere externe server. Laten we de standaardinstelling van 1.492 bytes gebruiken, waarbij 28 bytes worden afgetrokken voor koptekstinformatie, maar vergeet niet dat je een andere waarde kunt hebben. Gebruik de opdracht ping -s 1464 -c5 distrowatch.com om extra RTT-gegevens op te halen.
U wilt deze test meer dan eens uitvoeren op verschillende tijdstippen van de dag en de nacht. Probeer ook een aantal externe servers te pingen om te zien hoeveel RTT varieert. Aangezien we een gemiddelde van iets meer dan 130 ms hadden elke keer dat we het probeerden, kunnen we de formule gebruiken om onze BDP te achterhalen. Laten we aannemen dat je een heel generieke 6 Mbits / seconde-verbinding hebt. De BDP zou zijn:
(6.000.000 bits / sec) (. 133 sec) * (1 byte / 8 bits) = 99.750 bytes
Dit betekent dat de standaard waarde net.ipv4.tcp_rmem ergens rond de 100.000 moet zijn. Je zou het nog hoger kunnen stellen als je vreest dat je een RTT zo slecht als een halve seconde krijgt. Alle waarden die worden gevonden in net.ipv4.tcp_rmem en net.ipv4.tcp_wmem moeten identiek worden ingesteld, omdat de verzending en ontvangst van pakketten via dezelfde internetverbinding plaatsvinden. Over het algemeen wilt u net.ipv4.tcp_mem instellen op dezelfde waarde die wordt gebruikt door net.ipv4.tcp_wmem en net.ipv4.tcp_rmem, omdat deze eerste variabele de totale grootste buffergeheugengrootte is die is ingesteld voor TCP-transacties.
Voer het commando uit en kijk of beide instellingen zijn ingesteld op 0 of 1, die een staat van uit of aan aangeven.
Als u net.ipv4.tcp_no_metrics_save naar 1 instelt, zal de Linux-kernel het ontvangstvenster tussen de waarden net.ipv4.tcp_rmem en net.ipv4.tcp_wmem op een dynamische manier optimaliseren. Wanneer net.ipv4.tcp_moderate_rcvbuf is ingeschakeld, voorkomt dit dat opstoppingen latere verbindingen beïnvloeden. Voordat u permanente wijzigingen aanbrengt, voert u een snelheidscontrole uit via http://www.speedtest.net of http://www.bing.com/search?q=speed+test om ervoor te zorgen dat u greep heeft op uw metingen.
Wijzig de variabelen tijdelijk met uw berekende waarden. Zorg ervoor dat u de #'s vervangt door uw berekende bedragen.
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
Test opnieuw uw verbinding om te zien of de snelheid is verbeterd en of uw opdracht niet opnieuw hoeft te worden aangepast en voer het opnieuw uit. Vergeet niet dat u op de toets omhoog in uw terminal kunt drukken om de laatst gebruikte opdracht te herhalen. Zodra u de juiste waarden hebt gevonden, opent u met de opdracht gksu of sudo- teksteditor uit methode 1, en bewerk de regels om te lezen als volgt, en vervang de #s opnieuw met uw berekende waarden. U wilt natuurlijk ook een back-up maken van de bestand op dezelfde manier als in deel een, voor het geval je een fout maakt. Als je er een hebt gemaakt, kun je ook op dezelfde manier herstellen.
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
Bewaar het zodra je zeker weet dat alles in orde is. Voer de volgende opdracht uit:
sudo sysctl -p
Dit zal de Linux kernel dwingen om de instellingen opnieuw te laden , en als alles goed ging, zou het je op zijn minst een iets snellere netwerkverbinding moeten geven. Afhankelijk van uw oorspronkelijke standaardwaarden, is het verschil mogelijk dramatisch of mogelijk helemaal niet merkbaar.
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikken