Kako optimizirati hitrost interneta Ubuntu z nastavitvami MTU



Preizkusite Naš Instrument Za Odpravo Težav

Medtem ko se računalniška besedila razlikujejo glede uporabe tega izraza, Ubuntu uporablja TCP Maximum Transmission Unit (MTU) za označevanje največje velikosti paketa TCP, ki ga lahko naprava prenese prek omrežne povezave TCP / IP. Čeprav je izračun te vrednosti razmeroma preprost in privzete nastavitve delujejo na večini strojev, bo morda mogoče sistem dodatno optimizirati, če se paketi fragmentirajo zaradi nenavadnih nastavitev. Pošiljanje velikih posameznih odhodnih paketov je učinkovitejše od pošiljanja več manjših odhodnih paketov.



Pravilno vrednost MTU za svojo napravo najlažje najdete tako, da odprete okno terminala. Pridržite tipke CTRL, ATL in T ali pa jih zaženite s pomišljaja Unity. Če delate s strežnikom Ubuntu, boste privzeto uporabili vmesnik CLI brez grafičnega okolja. Ko ste na terminalu, vnesite ping -s 1464 -c1 distrowatch.com in počakajte na izhod. Če ne prejmete ničesar, vaša omrežna povezava ni pravilno konfigurirana. Ob predpostavki, da ste prejeli ustrezen izhod, poiščite razdelek, ki bere 1464 (1492) bajtov podatkov, kar pomeni, da paket pošiljate z 28 bajti informacij v glavi.



Metoda 1: Preučitev izhoda pinga za fragmentacijo paketov

Ukaz ping vas bo obvestil, ali je bil paket poslan kot več kot en fragment z več podatki v glavi. Preglejte izhodne podatke za katero koli vrstico, ki opozarja na nekaj v zvezi s „Frag potreban in DF set (mtu = 1492)“ ali katerim koli podobnim besedilom. Opozorilo je morda odvisno od tega, katera različica pinga je bila vključena v vašo različico Ubuntuja. Če tega besedila ne bi bilo, potem več kot verjetno že delate z nekaterimi meritvami MTU, ki trenutno ne pošiljajo razdrobljenih paketov.



Če želite poiskati najbolj optimiziran MTU za svoj sistem, bi želeli zagnati ta ukaz ping z majhno velikostjo paketov in ga sčasoma povečati, dokler se ne začne fragmentirati, po katerem to štejete za svojo mejno točko. Upoštevajte, da je MTU = koristni tovor + 28, saj mora biti nekaj prostora za podatke glave. Če lahko zdaj brez kakršnih koli drobcev povečate velikost na nekaj zelo velikega, bo morda vaš omrežni vmesnik obdeloval velike pakete, ne da bi morali ustvarjati fragmente. Ko končno vidite opozorilo, ki ga potrebuje Frag, to pomeni, da bo vsak paket, poslan s koristnim tovorom v velikosti, ki ste jo zagnali ali več, poslal več paketov. Predpostavimo, da če poskusite ping -s 2464 -c1 distrowatch.com brez opozorila, toda ping -s 2465 -c1 distrowatch.com pošlje opozorilo, to pomeni, da je 2.464 + 28 največja MTU nastavitev, ki jo vaša konfiguracija TCP / IP zmore pred pošiljanjem več razdrobljenih paketov. Točna vrednost lahko traja nekaj trenutkov.



Ko boste imeli v mislih vrednost večkratnega zagona ukaza ping, boste morali zagnati sudo ifconfig najti seznam znanih omrežnih vmesnikov. Ubuntu in njegovi izpeljanki razpršijo korenski račun, vendar smo za naše primere delovali iz lupine, ki jo je ustvaril sudo bash. Priporočljivo je, da raje vsak ukaz predgovorite s sudo posebej.

Takoj, ko poznate pravilno napravo, poskusite:

sudo ifconfig interfaceName man ####

Zamenjajte interfaceName z imenom omrežnega vmesnika, s katerim delate, in nato nadomestite #### z velikostjo, ki ste jo našli, plus 28 za informacije v glavi. Lahko zaženete ifconfig, da vidite, kakšen je bil privzeti MTU za vašo omrežno kartico, in ga večkrat znova zaženete, da vidite, ali ga spreminja prejšnji ukaz. Nekateri vmesniki omrežnega vmesnika vam preprosto ne dovolijo, da ga spremenite. V tem primeru bo nadaljnja optimizacija na žalost brezplodna. Če pa je to delovalo, ga lahko dejansko naredite za trajno. Poskusite teči ifconfig | grep MTU da poiščete vse vrednosti, če imate več konektorjev, nato pa lahko vrednosti povežete s konektorji, s katerimi delate.

2. način: Izdelava optimizacij MTU

Doslej niste trajno spremenili svojega sistema. Če se znova zaženete, boste izbrisali vse spremembe, kar je dobro, če ste storili kakšno napako in ugotovili, da se ne morete več povezati z internetom. Po drugi strani pa, če ste našli natančno vrednost za svoj MTU, boste morali urediti dokument. Verjetno je pravi čas, da ga kopirate, če se kaj zgodi. Poskusi ali kaj podobnega, tako da imate kopijo za vsak slučaj. Če ga želite grafično urediti, vnesite in vnesite geslo. Če uporabljate Kubuntu, Xubuntu ali Lubuntu, boste morali gedit zamenjati z grafičnim urejevalnikom besedila, ki ga uporablja Ubuntu respin. Xubuntu, na primer, namesto gedit uporablja miško. Če uporabljate strežnik Ubuntu ali preprosto raje delate z ukazno vrstico, potem vnesite , ob predpostavki, da ne uporabljate korenske lupine.

Ne glede na to, katero metodo ste uporabili za urejanje, poiščite ime vmesnika, če je prej izpljunil config. Predpostavimo, da ste na svojem računalniku gledali prvi priključek Wifi, ki bi se verjetno imenoval wlan0 ali kaj podobnega. V tem primeru poiščite delček kode, ki se začne z iface wlan0 inet static ali kaj podobnega. Vaša kilometrina se lahko razlikuje, v naslednji vrstici pa se glasi naslov, ki mu sledi naslov IP v obliki ###. ###. #. ##. Če imate izvorno povezavo IPv6, bo morda drugače formatiran. Imeli boste mrežno masko in prehodno vrstico, ki ji bo sledilo nekaj, kar navaja ime gostitelja ali kaj podobnega. Na dnu boste imeli še eno vrstico, ki se glasi mtu in številko. To številko zamenjajte z optimizirano vrednostjo MTU, shranite dokument in zapustite urejevalnik besedil. Želeli boste znova zagnati sistem, da zagotovite, da je deloval.

Če je po več ponovnih zagonih vse v redu, izbrišite datoteko interfaces.bak v imeniku ~ / Documents. Namesto tega lahko uporabite sudo mv in potem

če bi se pri tem kaj zalomilo.

3. način: Urejanje nastavitev okna za sprejem TCP (RWIN)

Ubuntu se nanaša na največjo količino podatkov, ki jih gostitelj sprejme, preden pošiljatelja prepozna kot vrednost RWIN. Če prenesete 30 MB datoteko, vam oddaljeni strežnik dejansko ne pošlje takoj 30 MB bloka podatkov. Ko gostitelj zahteva datoteko, vaš gostitelj Ubuntu pošlje določeno številko RWIN, nato pa strežnik začne pretakati podatke, dokler ne doseže števila bajtov, preden čaka na potrditev, da je vaš sistem dobil podatke. Ko strežnik to prejme, začne pošiljati dodatne bloke, preden čaka na novo potrditev.

Latencija je čas, potreben za prenos in sprejem paketov z oddaljenega strežnika. K tej vrednosti prispevajo stopnje povezave, a tudi številne druge zamude. Ukaz ping bo razložil zakasnitev glede števila časov povratnega potovanja (RTT). Oglejte si rezultate našega prejšnjega pinga DistroWatch. Našli boste vrstico, ki se glasi čas = 134 ms, kolikor časa je trajalo, da so se paketi od našega stroja Ubuntu vrnili do distrowatch.com in nazaj. Pošiljali smo 1.492-bajtni paket, tako da smo pri 134 ms lahko izračunali formulo za iskanje skupne hitrosti prenosa:

1.492 / .134 sekunde = 11.134,328 bajtov / sekundo, kar pomeni približno 10,88 binarnih kilobajtov na sekundo. Na splošno je to precej počasi, zato je na voljo RWIN, ki preprečuje, da bi morali vsak paket posebej poslati.

Nastavitve RWIN v Ubuntu so ločene od nastavitev MTU. Izračunajte izdelek z zamudo pasovne širine (BDP) za vašo internetno povezavo s to formulo:

(Skupna največja pasovna širina, ki jo mora zagotavljati vaša internetna povezava, je v bajtih na sekundo) (RTT v sekundah) = BDP

Velikost paketa TCP ne vpliva na RWIN, vendar na velikost paketa vpliva vrednost, izbrana v metodi 1. S tem ukazom poiščite spremenljivke jedra, povezane z RWIN:

Upoštevajte, da je za _mem presledek, v citiranem besedilu pa nikjer drugje. Vrnili boste več vrednosti. Potrebni so net.ipv4.tcp_rmem, net.ipv4.tcp_wmem in net.ipv4.tcp_mem . Številke za temi vrednostmi predstavljajo najmanjše, privzete in največje vrednosti za vsako. Predstavljajo vektor pomnilniškega okna prejema, vektor pošiljanja in vektor sklada TCP. Če uporabljate Ubuntu Kylin, boste morda imeli dolg seznam dodatnih. Katero koli od teh dodatnih vrednosti lahko varno prezrete. Nekateri uporabniki Kylina bodo morda videli tudi nekatere vrednosti, ki so začrtane v drugih skriptih, vendar še enkrat preprosto poiščite te vrstice.

Ubuntu nima spremenljivke RWIN, vendar je net.ipv4.tcp_rmem blizu. Te spremenljivke nadzorujejo porabo pomnilnika in ne le velikosti TCP. Vključujejo pomnilnik, ki ga požrejo strukture podatkovnih vtičnic, in kratke pakete v masivnih medpomnilnikih. Če želite optimizirati te vrednosti, pošljite pakete največje velikosti, ki ste jih nastavili v 1. metodi, drugemu oddaljenemu strežniku. Ponovno uporabimo privzeto 1.492 bajtov, odštejmo 28 bajtov za informacije v glavi, vendar ne pozabite, da imate morda drugačno vrednost. Za dodatne podatke RTT uporabite ukaz ping -s 1464 -c5 distrowatch.com.

Ta preizkus boste želeli izvajati večkrat ob različnih dnevnih in nočnih urah. Poskusite pingati tudi nekatere druge oddaljene strežnike, da vidite, koliko se razlikuje RTT. Ker smo imeli vsakič, ko smo poskusili, povprečno nekaj več kot 130 ms, lahko s formulo ugotovimo svoj BDP. Predpostavimo, da imate zelo splošno povezavo 6 Mbit / s. BDP bi bil:

(6.000.000 bitov / sek) (. 133 sekund) * (1 bajt / 8 bitov) = 99.750 bajtov

To pomeni, da mora biti privzeta vrednost net.ipv4.tcp_rmem nekje okoli 100.000. Lahko bi ga postavili še višje, če se bojite, da bi RTT dobil pol sekunde. Vse vrednosti, najdene v net.ipv4.tcp_rmem in net.ipv4.tcp_wmem, je treba nastaviti enako, saj se prenos in sprejem paketov odvijata po isti internetni povezavi. Običajno boste želeli net.ipv4.tcp_mem nastaviti na enako vrednost, ki jo uporabljata net.ipv4.tcp_wmem in net.ipv4.tcp_rmem, saj je ta prva spremenljivka skupna največja velikost pomnilnika, nastavljena za transakcije TCP.

Izdajte ukaz in preverite, ali sta obe nastavitvi nastavljeni na 0 ali 1, kar kaže na stanje izklopa ali vklopa.

Če nastavite net.ipv4.tcp_no_metrics_save na 1, bo jedro Linuxa dinamično optimiziralo okno za prejem med vrednostma net.ipv4.tcp_rmem in net.ipv4.tcp_wmem. Ko je omogočen net.ipv4.tcp_moderate_rcvbuf, preprečuje, da bi zastoji vplivali na nadaljnjo povezljivost. Pred kakršnimi koli trajnimi spremembami preverite hitrost na spletnem mestu http://www.speedtest.net ali http://www.bing.com/search?q=speed+test, da se prepričate, da imate ročne meritve.

Spremenljivke začasno spremenite z izračunanimi vrednostmi. Ne pozabite zamenjati # s svojimi izračunanimi vsotami.

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

Ponovno preizkusite povezavo, da vidite, ali se je hitrost izboljšala, in če ne, znova prilagodite svoj ukaz in ga znova zaženite. Ne pozabite, da lahko pritisnete tipko gor v terminalu, da ponovite zadnji uporabljeni ukaz. Ko najdete ustrezne vrednosti, odprite z gksu ali sudo ukaz urejevalnika besedil iz metode 1 in uredite vrstice tako, da se glasijo, tako da še enkrat zamenjate # s izračunanimi vrednostmi. Seveda boste želeli tudi varnostno kopirati vložite enako kot v prvem delu, samo če se zmotite. Če ste ga izdelali, ga lahko tudi obnovite na enak način.

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

Shranite, ko se prepričate, da je vse v redu. Izdajte naslednji ukaz:

sudo sysctl -p

To bo prisililo jedro Linuxa, da znova naloži nastavitve v , in če se je vse dobro izteklo, bi vam moralo omogočiti vsaj nekoliko hitrejšo omrežno povezavo. Glede na vaše prvotne privzete vrednosti je lahko razlika dejansko dramatična ali pa sploh ni opazna.

8 minut branja