Kaip optimizuoti „Ubuntu“ interneto greitį naudojant MTU nustatymus



Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas

Nors kompiuterio tekstai skiriasi pagal šį terminą, „Ubuntu“ naudoja TCP maksimalų perdavimo bloką (MTU), nurodydamas didžiausią TCP paketo dydį, kurį mašina gali perduoti per TCP / IP tinklo jungtį. Nors apskaičiuoti šią vertę yra gana paprasta ir numatytieji nustatymai veikia daugelyje mašinų, gali būti įmanoma dar labiau optimizuoti sistemą, jei paketai yra fragmentiški dėl neįprastų parametrų. Didelių pavienių siunčiamų paketų siuntimas yra efektyvesnis nei kelių mažesnių siunčiamų paketų siuntimas.

Lengviausias būdas sužinoti teisingą jūsų kompiuterio MTU vertę yra atidaryti terminalo langą. Laikykite nuspaudę CTRL, ATL ir T arba galbūt pradėkite nuo vienybės brūkšnio. Jei dirbate su „Ubuntu Server“, pagal nutylėjimą nustatysite CLI sąsają be jokios grafinės aplinkos. Kai būsite prie terminalo, įveskite ping -s 1464 -c1 distrowatch.com ir palaukite išvesties. Jei nieko negaunate, jūsų tinklo ryšys nebuvo tinkamai sukonfigūruotas. Darant prielaidą, kad gavote tinkamą išvestį, tada ieškokite skyriaus, kuriame būtų skaitomi 1464 (1492) duomenų baitai, o tai rodo, kad siunčiate paketą su 28 baitais antraštės informacijos.



1 metodas: paketo fragmentacijos ping išvesties tyrimas

Komanda „ping“ praneš, jei paketas buvo išsiųstas kaip daugiau nei vienas fragmentas su pridėtais keliais antraštės duomenimis. Nagrinėkite bet kurios eilutės, įspėjančios apie ką nors, išvestį „Reikalingas fragmentas ir DF rinkinys (mtu = 1492)“ ar panašų tekstą. Atsižvelgiant į tai, kuri ping versija buvo įtraukta į jūsų „Ubuntu“ versiją, įspėjimas gali būti suformuluotas kitaip. Jei šio teksto nėra, daugiau nei tikėtina, kad jau dirbate su kai kuriais MTU matavimais, kurie šiuo metu nesiunčia fragmentiškų paketų.



Norėdami rasti labiausiai optimizuotą MTU savo sistemai, norėtumėte paleisti šią ping komandą su nedideliu paketo dydžiu, tada laikui bėgant ją padidinkite, kol ji pradės fragmentuotis, o po to jūs tai laikote savo nutraukimo tašku. Atminkite, kad MTU = naudingoji apkrova + 28, nes antraštės duomenims turi būti vietos. Dabar, jei jūs galite padidinti dydį iki labai didelio be jokių fragmentų, tada jūsų tinklo sąsaja gali apdoroti didžiulius paketus, nereikalaujant generuoti fragmentų. Kai pagaliau pamatysite „Frag“ reikalingą įspėjimą, tai reiškia, kad bet koks paketas, išsiųstas su naudingu kroviniu, kurio dydis buvo didesnis ar didesnis, bus išsiųstas kaip keli paketai. Tarkime, kad jei bandysite „ping -s 2464 -c1 distrowatch.com“ be jokio įspėjimo, bet „ping -s 2465 -c1 distrowatch.com“ siunčia įspėjimą, tai reiškia, kad 2 644 + 28 yra didžiausia MTU, nustatanti jūsų TCP / IP konfigūraciją prieš siunčiant kelis suskaidytus paketus. Gali praeiti kelios minutės, kol bus nustatyta tiksli vertė.



Kai turėsite omenyje vertę kelis kartus paleisti ping komandą, turėsite paleisti sudo ifconfig rasti žinomų tinklo sąsajų sąrašą. „Ubuntu“ ir jo dariniai išmaišo šaknies sąskaitą, tačiau mes dirbome iš „sudo bash“ sukurto apvalkalo savo pavyzdžiams. Rekomenduojama tiesiog įvesti kiekvieną komandą su sudo atskirai.

Kai tik sužinosite tinkamą įrenginį, pabandykite:

sudo ifconfig interfaceName man vardas ####

Pakeiskite interfaceName tinklo adapterio, su kuriuo dirbate, pavadinimu, tada #### pakeiskite rastu dydžiu plius 28 antraštės informacijai. Galite paleisti „ifconfig“, kad pamatytumėte, koks numatytasis MTU buvo jūsų NIC, ir paleiskite jį dar kartą kelis kartus, kad sužinotumėte, ar ši ankstesnė komanda jį keičia. Kai kurie tinklo sąsajos adapteriai paprasčiausiai neleis jo pakeisti. Jei taip yra, tada tolesnė optimizacija, deja, bus bevaisė. Jei vis dėlto tai pavyko, iš tikrųjų galite tai padaryti nuolatine. Pabandykite bėgti ifconfig | grep MTU jei norite rasti visas vertes, jei turite kelias jungtis, tada galėsite jas suderinti su jungtimis, su kuriomis dirbate.

2 metodas: MTU optimizavimo klijavimas

Iki šiol neatlikote nuolatinių savo sistemos pakeitimų. Jei perkrausite iš naujo, pašalinsite visus pakeitimus, o tai gerai, jei padarėte kažkokią klaidą ir pastebėjote, kad nebegalite prisijungti prie interneto. Kita vertus, jei radote tikslią MTU vertę, turėsite redaguoti dokumentas. Tai tikriausiai yra tinkamas laikas pasidaryti jo kopiją, jei kas nors nutiktų. Bandyti ar kažkas panašaus, todėl visam atvejui turite kopiją. Jei norite redaguoti grafiškai, įveskite ir įveskite savo slaptažodį. Jei naudojate „Kubuntu“, „Xubuntu“ arba „Lubuntu“, „gedit“ turėsite pakeisti grafiniu teksto redaktoriumi, kurį naudoja „Ubuntu respin“. Pavyzdžiui, „Xubuntu“ vietoj „gedit“ naudoja pelės klaviatūrą. Jei naudojate „Ubuntu Server“ arba tiesiog norite dirbti su komandine eilute, tada įveskite , darant prielaidą, kad nenaudojate šaknies apvalkalo.

Nepriklausomai nuo to, kurį metodą naudojote redaguoti, suraskite sąsajos pavadinimą, jei prieš tai sukonfigūruokite. Tarkime, kad jūs žiūrėjote į pirmąją savo kompiuterio „Wifi“ jungtį, kuri tikriausiai būtų pavadinta „wlan0“ ar pan. Tokiu atveju raskite kodo fragmentą, prasidedantį „iface wlan0 inet static“ ar pan. Jūsų rida gali skirtis, tačiau kitoje eilutėje bus nurodytas adresas, po kurio bus pateiktas IP adresas ###. ###. #. ## formatu. Jis gali būti suformatuotas kitaip, jei naudojate savąjį „IPv6“ ryšį. Turėsite tinklo kaukę ir šliuzo liniją, po kurios bus nurodytas pagrindinio kompiuterio vardas ar kažkas panašaus. Apačioje turėsite dar vieną eilutę, kurioje parašyta mtu ir skaičius. Pakeiskite tą skaičių optimizuoti MTU vertę, išsaugokite dokumentą ir tada išeikite iš teksto rengyklės. Norint įsitikinti, ar ji veikia, norėsite iš naujo paleisti sistemą.

Jei po kelių perkrovimų viskas bus gerai, ištrinkite failą interfaces.bak savo ~ / Documents kataloge. Vietoj to galite naudoti sudo mv ir tada

jei procese kas nors nesisekė.

3 metodas: TCP gavimo lango (RWIN) nustatymų redagavimas

„Ubuntu“ nurodo didžiausią duomenų kiekį, kurį priimančiosios priima prieš patvirtindamos siuntėją kaip RWIN vertę. Jei atsisiųsite 30 MB failą, nuotolinis serveris iš tikrųjų jums iškart nesiųs 30 MB duomenų bloko. Jūsų „Ubuntu“ pagrindinis kompiuteris siunčia konkretų RWIN numerį, kai paprašo failo, o tada serveris pradeda duomenų srautą, kol jis pasieks baitų skaičių, kol laukia patvirtinimo, kad jūsų sistema gavo duomenis. Kai serveris tai gauna, jis pradeda siųsti papildomus blokus prieš laukdamas kito patvirtinimo.

Vėlavimas yra laikas, kurio reikia paketams perduoti ir priimti iš nuotolinio serverio. Ryšio tarifai prisideda prie šios vertės, tačiau taip pat daro daugybė kitų vėlavimų. „Ping“ komanda paaiškins delsą, nurodydama pirmyn ir atgal laiko (RTT) skaičius. Pažvelkite į ankstesnio „DistroWatch“ pingo išvestį. Rasite eilutę, kuri nuskaito laiką = 134 ms, tai yra kiek laiko užtruko, kol paketai grįžo iš mūsų „Ubuntu“ mašinos į distrowatch.com ir vėl. Mes siuntėme 1 492 baitų paketą, taigi 134 ms greičiu galėjome apskaičiuoti formulę, kad rastume bendrą perdavimo greitį:

1 492 / 0,134 sekundės = 11 134,328 baitai per sekundę, tai yra maždaug 10,88 dvejetainių kilobaitų per sekundę. Tai apskritai gana lėta, todėl RWIN sukurtas tam, kad nereikėtų patvirtinti kiekvieno atsiųsto paketo.

RWIN nustatymai „Ubuntu“ yra atskiri nuo MTU nustatymų. Apskaičiuokite interneto ryšio pralaidumo vėlavimo produktą (BDP) pagal šią formulę:

(Visas didžiausias pralaidumas, kurį jūsų interneto ryšys turėtų pateikti baitais per sekundę) (RTT sekundėmis) = BDP

TCP paketo dydis neturi įtakos RWIN, tačiau pačiam paketo dydžiui įtakos turi 1 metodu pasirinkta vertė. Naudokite šią komandą, kad rastumėte su RWIN susijusius branduolio kintamuosius:

Atminkite, kad po _mem yra tarpas, bet niekur kitur cituotame tekste. Jūs susigrąžinsite keletą vertybių. Reikalingi yra net.ipv4.tcp_rmem, net.ipv4.tcp_wmem ir net.ipv4.tcp_mem . Skaičiai po šiomis reikšmėmis nurodo kiekvienos vertės mažiausią, numatytąją ir didžiausią vertes. Jie reiškia gaunamo lango atminties vektorių, siuntimo vektorių ir TCP kamino vektorių. Jei naudojate „Ubuntu Kylin“, galite turėti ilgą papildomų sąrašą. Galite saugiai ignoruoti bet kurią iš šių papildomų verčių. Kai kurie „Kylin“ vartotojai taip pat gali pamatyti kai kurias vertes, apibrėžtas kituose scenarijuose, tačiau dar kartą paprasčiausiai ieškokite šių eilučių.

„Ubuntu“ neturi RWIN kintamojo, tačiau net.ipv4.tcp_rmem yra arti. Šie kintamieji kontroliuoja atminties naudojimą, o ne tik TCP dydį. Jie apima atmintį, kurią sunaudoja duomenų lizdų struktūros, ir trumpus paketus didžiuliuose buferiuose. Jei norite optimizuoti šias reikšmes, tada nusiųskite maksimalaus dydžio paketus, kuriuos nustatėte pagal 1 metodą, į kitą nuotolinį serverį. Dar kartą naudokime numatytąjį 1 492 baitų skaičių, atimdami 28 baitus antraštės informacijai, tačiau atminkite, kad jūsų vertė gali būti kitokia. Norėdami gauti papildomų RTT duomenų, naudokite komandą ping -s 1464 -c5 distrowatch.com.

Šį testą norėsite atlikti daugiau nei vieną kartą skirtingu dienos ir nakties metu. Pabandykite pinguoti ir kai kuriuose kituose nuotoliniuose serveriuose, kad sužinotumėte, kiek skiriasi RTT. Kiekvieną kartą, kai bandėme, vidutiniškai turėjome šiek tiek daugiau nei 130 ms, mes galime naudoti formulę, kad išsiaiškintume savo BDP. Tarkime, kad esate prisijungę prie bendro 6 Mbits / s ryšio. BDP būtų:

(6 000 000 bitų / sek.) (. 133 sek.) * (1 baitas / 8 bitai) = 99 750 baitų

Tai reiškia, kad numatytoji net.ipv4.tcp_rmem vertė turėtų būti maždaug 100 000. Galite ją nustatyti dar aukščiau, jei bijote, kad gausite net pusę sekundės blogą RTT. Visas reikšmes, esančias net.ipv4.tcp_rmem ir net.ipv4.tcp_wmem, reikia nustatyti identiškai, nes paketų perdavimas ir priėmimas vyksta tuo pačiu interneto ryšiu. Paprastai norėsite net.ipv4.tcp_mem nustatyti tą pačią vertę, kurią naudoja net.ipv4.tcp_wmem ir net.ipv4.tcp_rmem, nes šis pirmasis kintamasis yra didžiausias buferinės atminties dydis, nustatytas TCP operacijoms.

Išduokite komandą ir pažiūrėkite, ar abu šie parametrai yra nustatyti 0 arba 1, o tai rodo būseną išjungta arba įjungta.

Nustačius net.ipv4.tcp_no_metrics_save į 1, Linux branduolys bus priverstas dinamiškai optimizuoti priėmimo langą tarp net.ipv4.tcp_rmem ir net.ipv4.tcp_wmem reikšmių. Kai įgalintas net.ipv4.tcp_moderate_rcvbuf, jis neleidžia perkrovoms paveikti vėlesnio ryšio. Prieš atlikdami nuolatinius pakeitimus, patikrinkite greitį per http://www.speedtest.net arba http://www.bing.com/search?q=speed+test, kad įsitikintumėte, jog turite matavimų rankeną.

Laikinai pakeiskite kintamuosius pagal apskaičiuotas vertes. Įsitikinkite, kad #s pakeitėte apskaičiuotomis sumomis.

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

Iš naujo išbandykite ryšį, kad sužinotumėte, ar greitis pagerėjo, ir, jei ne, dar kartą pakoreguokite komandą ir paleiskite ją iš naujo. Atminkite, kad galite paspausti aukštyn esantį klavišą savo terminale, kad pakartotumėte paskutinį kartą naudotą komandą. Radę tinkamas vertes, atidarykite su gksu arba sudo teksto redaktoriaus komandą iš 1 metodo ir redaguokite eilutes, kad jos būtų skaitomos taip, dar kartą pakeisdami #s apskaičiuotomis vertėmis. Žinoma, jūs taip pat norėsite sukurti atsarginę kopiją failą taip pat, kaip jūs darėte iš dalies, tik tuo atveju, jei padarysite klaidą. Jei tokį sukūrėte, taip pat galite atkurti taip pat.

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

Išsaugokite, kai įsitikinsite, kad viskas gerai. Išduokite šią komandą:

sudo sysctl -p

Tai privers „Linux“ branduolį iš naujo įkelti nustatymus ir, jei viskas gerai, tai turėtų suteikti jums bent kiek spartesnį tinklo ryšį. Atsižvelgiant į pradinius numatytuosius nustatymus, skirtumas iš tikrųjų gali būti dramatiškas arba galbūt visai nepastebimas.

8 minutes perskaityta