Ako optimalizovať rýchlosť internetu v Ubuntu pomocou nastavení MTU



Vyskúšajte Náš Nástroj Na Odstránenie Problémov

Aj keď sa počítačové texty líšia v použití tohto výrazu, Ubuntu používa maximálnu prenosovú jednotku TCP (MTU) na označenie najväčšej veľkosti paketu TCP, ktorý môže stroj prejsť cez sieťové pripojenie TCP / IP. Aj keď je výpočet tejto hodnoty pomerne jednoduchý a predvolené hodnoty fungujú na väčšine počítačov, je možné, že bude možné ďalej optimalizovať váš systém, ak sú pakety fragmentované z dôvodu neobvyklých nastavení. Posielanie veľkých jednotlivých odchádzajúcich paketov je efektívnejšie ako odosielanie viacerých menších odchádzajúcich paketov.



Najjednoduchší spôsob, ako zistiť správnu hodnotu MTU pre vaše zariadenie, je otvoriť okno terminálu. Podržte stlačené klávesy CTRL, ATL a T alebo ho spustite z pomlčky Unity. Ak pracujete so serverom Ubuntu, predvolene použijete rozhranie CLI bez grafického prostredia. Keď ste na termináli, zadajte príkaz ping -s 1464 -c1 distrowatch.com a počkajte na výstup. Ak nič nedostávate, vaše sieťové pripojenie nebolo správne nakonfigurované. Za predpokladu, že ste dostali správny výstup, vyhľadajte časť, ktorá načíta 1464 (1492) bajtov údajov, čo znamená, že odosielate paket s 28 bajtmi informácií v hlavičke.



Metóda 1: Skúmanie výstupu ping na fragmentáciu paketov

Príkaz ping vás informuje, či bol paket odoslaný ako viac ako jeden fragment s pripojenými viacerými údajmi hlavičky. Preskúmajte výstup pre akýkoľvek riadok, ktorý varuje pred niečím, čo sa týka slov „Frag needed and DF set (mtu = 1492)“ alebo podobného textu. V závislosti od verzie ping, ktorá bola zahrnutá do vašej verzie Ubuntu, môže mať varovanie odlišné znenie. Ak by tento text nebol k dispozícii, je pravdepodobné, že už pracujete s určitým meraním MTU, ktoré v súčasnosti neodosiela fragmentované pakety.



Ak chcete nájsť najoptimalizovanejšiu MTU pre váš systém, mali by ste spustiť tento príkaz ping s malou veľkosťou paketu a potom ho časom zväčšovať, až kým sa nezačne fragmentovať, čo potom považujete za svoj medzný bod. Majte na pamäti, že MTU = užitočné zaťaženie + 28, pretože pre údaje v hlavičke musí byť určitý priestor. Teraz, ak môžete zväčšiť veľkosť na niečo veľmi veľké bez akýchkoľvek fragmentov, potom by vaše sieťové rozhranie mohlo byť schopné zvládnuť obrovské pakety bez potreby generovania fragmentov. Keď sa konečne zobrazí upozornenie Frag needed, znamená to, že akýkoľvek paket odoslaný s užitočným zaťažením veľkosti, ktorú ste spustili alebo vyššej, sa odošle ako viac paketov. Predpokladajme, že ak vyskúšate ping -s 2464 -c1 distrowatch.com bez varovania, ale ping -s 2465 -c1 distrowatch.com odošle varovanie, znamená to, že 2 464 + 28 je najväčšie nastavenie MTU, ktoré vaša konfigurácia TCP / IP zvládne. pred odoslaním viacerých fragmentovaných paketov. Určenie presnej hodnoty môže chvíľu trvať.



Keď budete mať na pamäti hodnotu z opakovaného spustenia príkazu ping, budete musieť spustiť sudo ifconfig vyhľadať zoznam známych sieťových rozhraní. Ubuntu a jeho deriváty hashujú účet root, ale pre naše príklady sme fungovali zo shellu vytvoreného sudo bash. Odporúča sa, aby ste každý príkaz vopred vyslovili osobitne sudo.

Hneď ako poznáte správne zariadenie, vyskúšajte:

sudo ifconfig interfaceName man ####

Nahraďte interfaceName názvom sieťového adaptéra, s ktorým pracujete, a potom #### nahraďte veľkosťou, ktorú ste našli plus 28 pre informácie v hlavičke. Môžete spustiť ifconfig, aby ste zistili, aké bolo predvolené MTU pre vašu NIC, a znova ho spustite niekoľkokrát, aby ste zistili, či ho tento predchádzajúci príkaz zmení. Niektoré adaptéry sieťového rozhrania vám to jednoducho nedovolia zmeniť. Ak je to tak, potom bude ďalšia optimalizácia bohužiaľ zbytočná. Ak to však fungovalo, potom ho môžete skutočne zmeniť na trvalý. Skúste behať ifconfig | grep MTU vyhľadať všetky hodnoty, ak máte viac konektorov, a potom môžete priradiť hodnoty ku konektorom, s ktorými pracujete.

Metóda 2: Vytvorenie optimalizácie MTU

Zatiaľ ste vo svojom systéme neurobili žiadne trvalé zmeny. Ak reštartujete počítač, vymažete všetky zmeny, čo je dobré, ak ste urobili nejakú chybu a zistili ste, že sa už nemôžete pripojiť k internetu. Na druhej strane, ak ste našli presnú hodnotu pre svoju MTU, budete musieť upraviť dokument. Toto je pravdepodobne vhodný čas na vytvorenie jeho kópie pre prípad, že by sa niečo stalo. Vyskúšajte alebo niečo podobné, aby ste mali kópiu pre každý prípad. Ak to chcete upraviť graficky, zadajte a zadajte svoje heslo. Ak používate Kubuntu, Xubuntu alebo Lubuntu, budete musieť gedit nahradiť grafickým textovým editorom, ktorý používa váš Ubuntu. Napríklad Xubuntu používa namiesto gedit podložku pod myš. Ak používate server Ubuntu alebo chcete radšej pracovať s príkazovým riadkom, namiesto toho zadajte , za predpokladu, že nepoužívate koreňový shell.

Bez ohľadu na to, aký spôsob ste použili na jeho úpravu, vyhľadajte názov rozhrania ifconfig predtým vyplivnutého. Predpokladajme, že ste sa pozerali na prvý Wifi konektor na vašom prístroji, ktorý by pravdepodobne mal názov wlan0 alebo niečo podobné. V takom prípade nájdite útržok kódu, ktorý začína iface wlan0 inet static alebo niečo podobné. Váš počet najazdených kilometrov sa môže líšiť, ale v ďalšom riadku sa zobrazí adresa a za ňou adresa IP vo formáte ###. ###. #. ##. Ak máte natívne pripojenie IPv6, môže to mať iný formát. Budete mať čiaru masky siete a brány, za ktorou bude nasledovať niečo, čo uvádza názov hostiteľa alebo niečo podobné. V dolnej časti budete mať ďalší riadok, ktorý číta mtu a číslo. Nahraďte toto číslo optimalizovanou hodnotou MTU, uložte dokument a potom ukončite textový editor. Budete chcieť reštartovať systém, aby ste sa uistili, že funguje.

Ak by bolo po niekoľkých reštartoch všetko v poriadku, vymažte súbor interfaces.bak z adresára ~ / Documents. Namiesto toho môžete použiť sudo mv a potom

keby sa v procese niečo zhoršilo.

Metóda 3: Úpravy nastavení okna príjmu TCP (RWIN)

Ubuntu označuje najväčšie množstvo dát, ktoré hostiteľ prijme predtým, ako uzná odosielateľa ako hodnotu RWIN. Ak si stiahnete 30 MB súbor, vzdialený server vám v skutočnosti okamžite neodošle 30 MB blok dát. Váš hostiteľ Ubuntu odošle konkrétne číslo RWIN, keď požiada o súbor, a potom server začne streamovať údaje, kým nedosiahne počet bajtov, kým čaká na potvrdenie, že váš systém získal údaje. Akonáhle to server prijme, začne posielať ďalšie bloky pred čakaním na ďalšie potvrdenie.

Latencia je čas potrebný na prenos a príjem paketov zo vzdialeného servera. Miera pripojenia prispieva k tejto hodnote, ale rovnako tak aj mnoho ďalších oneskorení. Príkaz ping vysvetlí latenciu z hľadiska čísel času medzipristátia (RTT). Pozrite sa na výstup z nášho predchádzajúceho príkazu ping na DistroWatch. Nájdete riadok, ktorý zobrazuje čas = 134 ms, čo znamená, ako dlho trvalo, kým pakety prešli z nášho zariadenia so systémom Ubuntu na distrowatch.com a späť. Posielali sme paket s veľkosťou 1 492 bajtov, takže pri 134 ms sme mohli vypočítať vzorec na zistenie celkovej rýchlosti prenosu:

1 492 / 0,134 sekundy = 11 134 328 bajtov za sekundu, čo vychádza na približne 10,88 binárneho kilobajtu za sekundu. To je celkovo dosť pomalé, a preto je tu RWIN, ktorý vám bráni v potvrdení každého odoslaného paketu jednotlivo.

Nastavenia RWIN v Ubuntu sú oddelené od nastavení MTU. Vypočítajte produkt oneskorenia šírky pásma (BDP) pre vaše internetové pripojenie pomocou tohto vzorca:

(Celková maximálna šírka pásma, ktorú by malo vaše pripojenie k internetu poskytovať, v bajtoch za sekundu) (RTT za sekundu) = BDP

Veľkosť paketu TCP neovplyvňuje RWIN, ale samotná veľkosť paketu je ovplyvnená hodnotou vybranou v Metóde 1. Pomocou tohto príkazu nájdete premenné jadra súvisiace s RWIN:

Nezabudnite, že za _mem je medzera, ale v citovanom texte nikde inde. Získate späť niekoľko hodnôt. Potrebné sú net.ipv4.tcp_rmem, net.ipv4.tcp_wmem a net.ipv4.tcp_mem . Čísla za týmito hodnotami predstavujú minimálnu, predvolenú a maximálnu hodnotu pre každú z nich. Predstavujú vektor pamäte prijímacieho okna, vektor odoslania a vektor zásobníka TCP. Ak používate Ubuntu Kylin, môžete mať k dispozícii dlhý zoznam ďalších. Ktorúkoľvek z týchto ďalších hodnôt môžete bezpečne ignorovať. Niektorí používatelia Kylinu môžu tiež vidieť niektoré z hodnôt uvedených v iných skriptoch, ale ešte raz jednoducho vyhľadajú tieto riadky.

Ubuntu nemá premennú RWIN, ale net.ipv4.tcp_rmem je blízko. Tieto premenné riadia využitie pamäte a nielen veľkosť TCP. Zahŕňajú pamäť zjedenú štruktúrami dátových zásuviek a krátke pakety v masívnych vyrovnávacích pamätiach. Ak chcete tieto hodnoty optimalizovať, odošlite pakety maximálnej veľkosti, ktoré ste nastavili v metóde 1, na iný vzdialený server. Použime znova predvolenú hodnotu 1 492 bajtov, odčítajme 28 bajtov pre informácie v hlavičke, nezabudnite však, že môžete mať inú hodnotu. Pomocou príkazu ping -s 1464 -c5 distrowatch.com získate ďalšie údaje RTT.

Tento test budete chcieť spustiť viackrát v rôznych denných a nočných časoch. Skúste tiež ping niektorým iným vzdialeným serverom, aby ste zistili, ako veľmi sa líši RTT. Pretože sme mali pri každom vyskúšaní v priemere niečo málo cez 130 ms, môžeme pomocou vzorca zistiť náš BDP. Predpokladajme, že využívate veľmi všeobecné pripojenie rýchlosťou 6 Mb / s. BDP by bolo:

(6 000 000 bitov / s) (. 133 s) * (1 bajt / 8 bitov) = 99 750 bajtov

To znamená, že predvolená hodnota net.ipv4.tcp_rmem by mala byť niekde okolo 100 000. Mohli by ste ju nastaviť ešte vyššie, ak sa obávate, že dostanete RTT tak zlú ako pol sekundy. Všetky hodnoty nájdené v súboroch net.ipv4.tcp_rmem a net.ipv4.tcp_wmem je potrebné nastaviť identicky, pretože prenos a príjem paketov sa deje prostredníctvom rovnakého internetového pripojenia. Spravidla budete chcieť nastaviť net.ipv4.tcp_mem na rovnakú hodnotu, akú používajú net.ipv4.tcp_wmem a net.ipv4.tcp_rmem, pretože táto prvá premenná predstavuje celkovú najväčšiu veľkosť vyrovnávacej pamäte nastavenú pre transakcie TCP.

Zadajte príkaz a skontrolujte, či sú obe tieto nastavenia nastavené na 0 alebo 1, čo naznačuje stav vypnutia alebo zapnutia.

Nastavenie net.ipv4.tcp_no_metrics_save na 1 prinúti jadro Linuxu optimalizovať okno príjmu medzi hodnotami net.ipv4.tcp_rmem a net.ipv4.tcp_wmem dynamickým spôsobom. Keď je povolený súbor net.ipv4.tcp_moderate_rcvbuf, zabráni to preťaženiu v ovplyvňovaní následného pripojenia. Pred vykonaním akýchkoľvek trvalých zmien vykonajte kontrolu rýchlosti prostredníctvom stránok http://www.speedtest.net alebo http://www.bing.com/search?q=speed+test, aby ste sa uistili, že máte so svojimi meraniami prehľad.

Dočasne zmeňte premenné s vypočítanými hodnotami. Uistite sa, že ste nahradili # vypočítanými sumami.

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

Znova otestujte pripojenie, aby ste zistili, či sa rýchlosť zlepšila. Ak nie, vyladite príkaz znova a znova ho spustite. Pamätajte, že môžete stlačiť kláves nahor vo svojom termináli, aby ste zopakovali posledný použitý príkaz. Keď nájdete príslušné hodnoty, otvorte ich s gksu alebo sudo príkaz textového editora z metódy 1 a upravte riadky tak, aby boli čítané nasledovne, pričom # opäť nahradíte vypočítanými hodnotami. Budete samozrejme tiež chcieť zálohovať rovnakým spôsobom, ako ste to urobili v prvej časti pre prípad, že urobíte chybu. Ak ste si nejaký vytvorili, môžete tiež rovnako obnovovať.

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

Uložte si ho, keď ste si istí, že je všetko v poriadku. Zadajte nasledujúci príkaz:

sudo sysctl -p

Toto prinúti jadro Linuxu znovu načítať nastavenia v , a ak všetko dobre dopadlo, malo by vám poskytnúť aspoň o niečo rýchlejšie sieťové pripojenie. V závislosti od pôvodných predvolených nastavení môže byť rozdiel skutočne dramatický alebo potenciálne vôbec nepostrehnuteľný.

8 minút čítania