Kako optimizirati brzinu interneta Ubuntu s MTU postavkama



Isprobajte Naš Instrument Za Uklanjanje Problema

Iako se računalni tekstovi razlikuju u primjeni izraza, Ubuntu koristi TCP maksimalnu prijenosnu jedinicu (MTU) za označavanje najveće veličine TCP paketa koji stroj može prenijeti preko TCP / IP mrežne veze. Iako je izračunavanje ove vrijednosti relativno jednostavno i zadane vrijednosti rade na većini strojeva, možda će biti moguće dodatno optimizirati vaš sustav ako se paketi fragmentiraju zbog neobičnih postavki. Slanje velikih pojedinačnih odlaznih paketa učinkovitije je od slanja više manjih odlaznih paketa.



Najlakši način da saznate ispravnu MTU vrijednost za svoj stroj je otvaranje prozora terminala. Držite CTRL, ATL i T ili ih možda pokrenite s crtice Unity. Ako radite s Ubuntu poslužiteljem, tada ćete se pretvoriti u CLI sučelje bez grafičkog okruženja. Kad ste na terminalu, upišite ping -s 1464 -c1 distrowatch.com i pričekajte izlaz. Ako ništa ne primate, mrežna veza nije ispravno konfigurirana. Pod pretpostavkom da ste dobili ispravan izlaz, potražite odjeljak koji čita 1464 (1492) bajta podataka, što znači da paket šaljete s 28 bajtova podataka zaglavlja.



Metoda 1: Ispitivanje izlaza ping-a za fragmentaciju paketa

Naredba ping obavijestit će vas je li paket poslan kao više od jednog fragmenta s priloženim više podataka zaglavlja. Ispitajte izlaz za bilo koji redak koji upozorava na nešto u vezi s „Frag potreban i DF postavljen (mtu = 1492)“ ili bilo kojim sličnim tekstom. Ovisno o tome koja je inačica pinga uključena u vašu verziju Ubuntua, upozorenje se može sročiti drugačije. Ako ovaj tekst ne bude prisutan, više je vjerojatno da već radite s nekim MTU mjerenjem koje trenutno ne šalje fragmentirane pakete.



Da biste pronašli najoptimiziraniji MTU za svoj sustav, trebali biste pokrenuti ovu ping naredbu s malom veličinom paketa, a zatim je vremenom povećavati dok ne počne fragmentirati nakon čega ovo smatrate svojom presječnom točkom. Imajte na umu da je MTU = korisni teret + 28, jer mora biti mjesta za podatke zaglavlja. Sada, ako možete povećati veličinu na nešto vrlo veliko bez ikakvih fragmenata, tada će vaše mrežno sučelje moći obrađivati ​​masivne pakete bez potrebe za generiranjem fragmenata. Kada napokon vidite upozorenje potrebno Fragu, to znači da će svaki paket poslan s korisnim opterećenjem veličine koju ste pokrenuli ili veću poslati kao više paketa. Pretpostavimo da ako pokušate ping -s 2464 -c1 distrowatch.com bez ikakvog upozorenja, ali ping -s 2465 -c1 distrowatch.com pošalje upozorenje, to znači da je 2.464 + 28 najveća MTU postavka koju vaša TCP / IP konfiguracija može podnijeti prije slanja više fragmentiranih paketa. Točna vrijednost može potrajati nekoliko trenutaka.



Jednom kad imate na umu vrijednost višestrukog pokretanja naredbe ping, morat ćete pokrenuti sudo ifconfig pronaći popis poznatih mrežnih sučelja. Ubuntu i njegovi derivati ​​raspršili su root račun, ali za naše smo primjere radili iz ljuske koju je kreirao sudo bash. Preporučuje se da svaku naredbu samo uvodite u sudo pojedinačno.

Čim saznate ispravan uređaj, pokušajte:

sudo ifconfig interfaceName man ####

Zamijenite interfaceName imenom mrežnog adaptera s kojim radite, a zatim zamijenite #### veličinom koju ste pronašli plus 28 za informacije o zaglavlju. Možete pokrenuti ifconfig da vidite koji je zadani MTU za vaš NIC i pokrenuti ga više puta da biste vidjeli hoće li ga promijeniti ova prethodna naredba. Neki adapteri mrežnog sučelja jednostavno vam ne dopuštaju da ga promijenite. Ako je to slučaj, tada će daljnja optimizacija, nažalost, biti besplodna. Ako je to ipak uspjelo, onda to zapravo možete učiniti trajnim. Pokušajte trčati ifconfig | grep MTU kako biste pronašli sve vrijednosti ako imate više konektora, a zatim možete vrijednosti uskladiti s konektorima s kojima radite.

Metoda 2: Izrada MTU optimizacija

Do sada niste trajno promijenili svoj sustav. Ako se ponovno pokrenete, izbrisat ćete sve promjene, što je dobro ako ste pogriješili i utvrdili da se više ne možete povezati s internetom. S druge strane, ako ste pronašli točnu vrijednost za svoj MTU, tada ćete morati urediti dokument. Ovo je vjerojatno dobro vrijeme za njegovu kopiju u slučaju da se nešto dogodi. Probati ili nešto slično, pa imate kopiju za svaki slučaj. Ako ga želite grafički urediti, unesite i unesite lozinku. Ako koristite Kubuntu, Xubuntu ili Lubuntu, tada ćete morati zamijeniti gedit grafičkim uređivačem teksta koji koristi vaš Ubuntu respin. Na primjer, Xubuntu koristi gadit umjesto jastuka za miš. Ako upotrebljavate Ubuntu Server ili jednostavno radije radite s naredbenim retkom, onda upišite , pod pretpostavkom da ne koristite korijensku ljusku.

Neovisno o tome koju ste metodu koristili za uređivanje, pronađite naziv sučelja ako je prethodno ispljunuoconconfig. Pretpostavimo da ste gledali prvi Wifi konektor na vašem računalu, koji bi se vjerojatno zvao wlan0 ili nešto slično. U tom slučaju pronađite isječak koda koji započinje iface wlan0 inet static ili nečim sličnim. Vaša kilometraža može varirati, ali sljedeći će redak čitati adresu nakon koje slijedi IP adresa u formatu ###. ###. #. ##. Možda je drugačije formatiran ako imate izvornu IPv6 vezu. Imat ćete mrežnu masku i liniju pristupnika, nakon čega slijedi nešto što navodi ime hosta ili nešto slično. Na dnu ćete imati još jedan redak koji glasi mtu i broj. Zamijenite taj broj optimiziranom vrijednošću MTU, spremite dokument i izađite iz uređivača teksta. Morali biste ponovno pokrenuti sustav kako biste osigurali da radi.

Ako nakon nekoliko ponovnih pokretanja sve bude u redu, izbrišite datoteku interfaces.bak u direktoriju ~ / Documents. Umjesto toga, možete koristiti sudo mv i onda

ako bi se išta pokvarilo u tom procesu.

3. metoda: Uređivanje postavki prozora za primanje TCP-a (RWIN)

Ubuntu se odnosi na najveću količinu podataka koju domaćin prihvati prije nego što pošiljatelja prepozna kao vrijednost RWIN. Ako preuzmete datoteku od 30 MB, tada vam udaljeni poslužitelj zapravo neće odmah poslati blok podataka od 30 MB. Vaš Ubuntu domaćin šalje određeni RWIN broj kada zatraži datoteku, a zatim poslužitelj započinje strujanje podataka dok ne dosegne broj bajtova prije nego što pričeka potvrdu da je vaš sustav dobio podatke. Jednom kada poslužitelj to primi, započinje slati dodatne blokove prije nego što čeka novo potvrđivanje.

Latencija je vrijeme potrebno za prijenos i primanje paketa s udaljenog poslužitelja. Stope veze doprinose ovoj vrijednosti, ali isto tako i brojna druga kašnjenja. Naredba ping objasnit će kašnjenje u smislu brojeva vremena povratnog putovanja (RTT). Pogledajte izlaz iz našeg prethodnog ping-a DistroWatch. Naći ćete redak koji glasi vrijeme = 134 ms, koliko je trebalo paketima da krenu iz našeg Ubuntu stroja u distrowatch.com i natrag. Slali smo paket od 1.492 bajta, pa smo pri 134 ms mogli izračunati formulu za pronalaženje ukupne brzine prijenosa:

1.492 / .134 sekundi = 11.134,328 bajta / sekundi, što iznosi približno 10,88 binarnih kilobajta u sekundi. Sveukupno je to prilično sporo, zbog čega postoji RWIN koji sprječava da morate priznati svaki paket poslan pojedinačno.

RWIN postavke u Ubuntuu odvojene su od MTU postavki. Izračunajte proizvod kašnjenja propusnosti (BDP) za vašu internetsku vezu pomoću ove formule:

(Ukupna maksimalna širina pojasa koju vaša internetska veza treba pružiti u bajtovima u sekundi) (RTT u sekundama) = BDP

Veličina TCP paketa ne utječe na RWIN, ali na samu veličinu paketa utječe vrijednost odabrana u Metodi 1. Upotrijebite ovu naredbu za pronalaženje varijabli jezgre povezane s RWIN:

Imajte na umu da postoji razmak nakon _mem, ali nigdje drugdje u navedenom tekstu. Vratit ćete nekoliko vrijednosti. Oni koji su potrebni su net.ipv4.tcp_rmem, net.ipv4.tcp_wmem i net.ipv4.tcp_mem . Brojevi nakon ovih vrijednosti predstavljaju minimalne, zadane i maksimalne vrijednosti za svaku. Oni predstavljaju vektor memorije prozora primanja, vektor slanja i vektor TCP stoga. Ako koristite Ubuntu Kylin, možda imate dugačak popis dodatnih. Možete sigurno zanemariti bilo koju od ovih dodatnih vrijednosti. Neki korisnici Kylina također mogu vidjeti neke vrijednosti ocrtane u drugim skriptama, ali još jednom jednostavno potražite ove retke.

Ubuntu nema RWIN varijablu, ali net.ipv4.tcp_rmem je blizu. Te varijable kontroliraju upotrebu memorije, a ne samo TCP veličinu. Uključuju memoriju koju pojedu strukture utičnica za podatke i kratke pakete u masivnim međuspremnicima. Ako želite optimizirati ove vrijednosti, pošaljite pakete maksimalne veličine koje ste postavili u Metodi 1 na drugi udaljeni poslužitelj. Ponovno upotrijebimo zadanu vrijednost od 1.492 bajta, oduzimajući 28 bajta za informacije o zaglavlju, ali imajte na umu da možda imate drugačiju vrijednost. Upotrijebite naredbu ping -s 1464 -c5 distrowatch.com za dobivanje dodatnih RTT podataka.

Morat ćete pokrenuti ovaj test više puta u različito doba dana i noći. Pokušajte pingati i neke druge udaljene poslužitelje da biste vidjeli koliko se RTT razlikuje. Budući da smo u prosjeku imali nešto više od 130 ms svaki put kad smo ga isprobali, pomoću formule možemo shvatiti svoj BDP. Pretpostavimo da ste na vrlo generičkoj vezi od 6 Mbit / s. BDP bi bio:

(6.000.000 bitova / sek.) (. 133 sek.) * (1 bajt / 8 bitova) = 99.750 bajtova

To znači da bi zadana vrijednost net.ipv4.tcp_rmem trebala biti negdje oko 100 000. Mogli biste ga postaviti i više ako se bojite da ćete RTT dobiti čak pola sekunde. Sve vrijednosti pronađene u net.ipv4.tcp_rmem i net.ipv4.tcp_wmem moraju se postaviti na identičan način, jer se prijenos i prijem paketa odvijaju putem iste internetske veze. Općenito ćete htjeti postaviti net.ipv4.tcp_mem na istu vrijednost koju koriste net.ipv4.tcp_wmem i net.ipv4.tcp_rmem jer je ova prva varijabla ukupna najveća veličina međuspremnika postavljena za TCP transakcije.

Izdajte naredbu i provjerite jesu li obje postavke postavljene na 0 ili 1, što ukazuje na stanje isključenja ili uključivanja.

Postavljanje net.ipv4.tcp_no_metrics_save na 1 prisilit će Linux jezgru da dinamički optimizira prozor primanja između vrijednosti net.ipv4.tcp_rmem i net.ipv4.tcp_wmem. Kada je omogućen net.ipv4.tcp_moderate_rcvbuf, sprečava zagušenje da utječe na daljnju povezanost. Prije bilo kakvih trajnih promjena, provjerite brzinu putem http://www.speedtest.net ili http://www.bing.com/search?q=speed+test kako biste bili sigurni da imate kontrolu nad svojim mjerenjima.

Privremeno promijenite varijable pomoću izračunatih vrijednosti. Obavezno zamijenite # s izračunatim zbrojevima.

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 testirajte vezu kako biste vidjeli je li se brzina poboljšala, a ako ne, ponovo podesite svoju naredbu i ponovite je. Imajte na umu da možete pritisnuti tipku za gore na terminalu da biste ponovili posljednju korištenu naredbu. Nakon što pronađete odgovarajuće vrijednosti, otvorite s gksu ili sudo naredbu uređivača teksta iz Metode 1 i uredite retke kako bi glasali kako slijedi, još jednom zamijenivši # s izračunatim vrijednostima. Svakako ćete htjeti napraviti i sigurnosnu kopiju podnesite datoteku na isti način kao u prvom dijelu samo u slučaju da pogriješite. Ako ste ga izradili, možete ga također obnoviti na isti 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

Spremite je jednom kad budete sigurni da je sve u redu. Izdajte sljedeću naredbu:

sudo sysctl -p

To će prisiliti Linux kernel da ponovo učita postavke u , i ako je sve prošlo u redu, trebalo bi vam pružiti barem nešto bržu mrežnu vezu. Ovisno o izvornim zadanim postavkama, razlika može zapravo biti dramatična ili se uopće ne može primijetiti.

8 minuta čitanja