Cum să optimizați viteza de internet Ubuntu cu setările MTU



Încercați Instrumentul Nostru Pentru Eliminarea Problemelor

În timp ce textele computerizate diferă în ceea ce privește aplicarea termenului, Ubuntu folosește TCP Maximum Transmission Unit (MTU) pentru a se referi la cea mai mare dimensiune pe care o mașină TCP o poate trece printr-o conexiune de rețea TCP / IP. În timp ce calcularea acestei valori este relativ simplă și implicitele funcționează pe majoritatea mașinilor, ar putea fi posibil să vă optimizați în continuare sistemul dacă pachetele se fragmentează din cauza setărilor neobișnuite. Trimiterea pachetelor mari de ieșire este mai eficientă decât trimiterea mai multor pachete de ieșire mai mici.



Cel mai simplu mod de a afla valoarea MTU corectă pentru aparatul dvs. este să deschideți o fereastră de terminal. Țineți apăsate CTRL, ATL și T sau poate porniți-le de la linia Unity. Dacă lucrați cu serverul Ubuntu, atunci veți fi implicit la o interfață CLI fără niciun mediu grafic. După ce ați ajuns la terminal, tastați ping -s 1464 -c1 distrowatch.com și așteptați ieșirea. Dacă nu primiți nimic, atunci conexiunea dvs. de rețea nu a fost configurată corect. Presupunând că ați primit o ieșire adecvată, apoi căutați o secțiune care citește 1464 (1492) octeți de date, care indică faptul că trimiteți pachetul cu 28 de octeți de informații din antet.



Metoda 1: Examinarea rezultatului ping pentru fragmentarea pachetelor

Comanda ping vă va informa dacă pachetul a fost trimis ca mai mult de un fragment cu mai multe date de antet atașate. Examinați rezultatul pentru orice linie care avertizează despre ceva referitor la „Frag necesar și set DF (mtu = 1492)” sau orice text similar. În funcție de ce versiune de ping a fost inclusă cu versiunea dvs. de Ubuntu, avertismentul poate fi formulat diferit. În cazul în care acest text nu este prezent, este mai probabil să lucrați deja cu unele măsurători MTU care nu trimit pachete fragmentate în prezent.



Pentru a găsi MTU-ul cel mai optimizat pentru sistemul dvs., ați dori să executați această comandă ping cu o dimensiune mică a pachetului și apoi să o măriți în timp până când începe fragmentarea, după care considerați acest punct de tăiere. Rețineți că MTU = sarcină utilă + 28, deoarece trebuie să existe spațiu pentru datele antetului. Acum, dacă puteți crește dimensiunea la ceva foarte mare fără fragmente, atunci interfața dvs. de rețea ar putea fi capabilă să gestioneze pachete masive fără a fi nevoie să genereze fragmente. Când în sfârșit vedeți un avertisment necesar Frag, aceasta înseamnă că orice pachet trimis cu o sarcină utilă de dimensiunea pe care ați executat-o ​​sau mai mare va fi trimis ca pachete multiple. Să presupunem că, dacă încercați ping -s 2464 -c1 distrowatch.com fără niciun avertisment, dar ping -s 2465 -c1 distrowatch.com trimite un avertisment, acest lucru înseamnă că 2.464 + 28 este cea mai mare setare MTU pe care o poate configura TCP / IP. înainte de a trimite mai multe pachete fragmentate. S-ar putea să dureze câteva momente pentru a identifica o valoare exactă.



După ce aveți în vedere o valoare de a rula comanda ping de mai multe ori, va trebui să rulați sudo ifconfig pentru a găsi o listă de interfețe de rețea cunoscute. Ubuntu și derivatele sale au eliminat contul root, dar am operat dintr-un shell creat de sudo bash pentru exemplele noastre. Vă recomandăm să prefaceți fiecare comandă cu sudo individual.

De îndată ce cunoașteți dispozitivul corect, încercați:

sudo ifconfig interfaceName man ####

Înlocuiți interfaceName cu numele adaptorului de rețea cu care lucrați, apoi înlocuiți #### cu dimensiunea pe care ați găsit-o plus 28 pentru informații despre antet. Puteți rula ifconfig pentru a vedea care a fost MTU implicit pentru NIC-ul dvs. și rulați-l din nou de mai multe ori pentru a vedea dacă această comandă anterioară îl modifică. Unele adaptoare de interfață de rețea pur și simplu nu vă permit să le schimbați. Dacă acesta este cazul, atunci optimizarea ulterioară va fi infructuoasă din păcate. Cu toate acestea, dacă acest lucru a funcționat, atunci îl puteți face permanent. Încearcă să alergi ifconfig | grep MTU pentru a găsi toate valorile dacă aveți mai mulți conectori și puteți apoi să le potriviți cu conectorii cu care lucrați.

Metoda 2: Realizarea optimizărilor MTU Stick

Până acum nu ați făcut nicio modificare permanentă a sistemului dvs. Dacă reporniți, atunci veți șterge orice modificări, ceea ce este bine dacă ați făcut un fel de greșeală și ați descoperit că nu vă mai puteți conecta la Internet. Pe de altă parte, dacă ați găsit o valoare exactă pentru MTU, va trebui să editați document. Acesta este probabil un moment bun pentru a face o copie a acestuia în cazul în care se întâmplă ceva. Încerca sau ceva similar, astfel încât să aveți o copie pentru orice eventualitate. Dacă doriți să îl editați grafic, tastați și introduceți parola. Dacă utilizați Kubuntu, Xubuntu sau Lubuntu, atunci va trebui să înlocuiți gedit cu editorul de text grafic pe care îl utilizează respin Ubuntu. Xubuntu, de exemplu, folosește mousepad în loc de gedit. Dacă utilizați Ubuntu Server sau pur și simplu preferați să lucrați cu linia de comandă, atunci tastați , presupunând că nu utilizați un shell de rădăcină.

Indiferent de metoda pe care ați folosit-o pentru a o edita, găsiți numele interfeței dacă configurați scuipat înainte. Să presupunem că v-ați uitat la primul conector Wifi de pe echipamentul dvs., care probabil ar fi numit wlan0 sau ceva similar. În acest caz, găsiți un fragment de cod care începe cu iface wlan0 inet static sau ceva similar. Kilometrajul dvs. poate varia, dar rândul următor va citi adresa urmată de o adresă IP în format ###. ###. #. ##. Poate fi formatat diferit dacă aveți o conexiune IPv6 nativă. Veți avea o linie de mască de rețea și gateway, urmată de ceva care listează un nume de gazdă sau ceva similar. În partea de jos, veți avea un alt rând care citește mtu și un număr. Înlocuiți numărul respectiv cu valoarea de optimizare MTU, salvați documentul și apoi ieșiți din editorul de text. Veți dori să reporniți sistemul pentru a vă asigura că a funcționat.

Dacă totul va fi bine după mai multe reporniri, apoi ștergeți fișierul interfaces.bak din directorul dvs. ~ / Documents. Puteți folosi în schimb sudo mv și apoi

dacă ceva s-a stricat în acest proces.

Metoda 3: Editarea setărilor pentru fereastra de recepție TCP (RWIN)

Ubuntu se referă la cea mai mare cantitate de date pe care o gazdă o acceptă înainte ca acesta să recunoască expeditorul ca valoare RWIN. Dacă descărcați un fișier de 30 MB, atunci serverul de la distanță nu vă trimite imediat un bloc de date de 30 MB. Gazda dvs. Ubuntu trimite un anumit număr RWIN când solicită fișierul, iar apoi serverul începe să transmită fluxul de date până când ajunge la numărul de octeți înainte de a aștepta confirmarea că sistemul dvs. a primit datele. Odată ce serverul primește acest lucru, începe să trimită blocuri suplimentare înainte de a aștepta o altă confirmare.

Latența este timpul necesar pentru a transmite și primi pachete de la un server la distanță. Tarifele de conexiune contribuie la această valoare, dar la fel fac numeroase alte întârzieri. Comanda ping va explica latența în termeni de numere de timp dus-întors (RTT). Uită-te la rezultatul din ping-ul anterior al DistroWatch. Veți găsi o linie care citește timpul = 134 ms, adică cât a durat până când pachetele au mers dus-întors de pe mașina noastră Ubuntu la distrowatch.com și înapoi. Trimiteam un pachet de 1.492 de octeți, deci la 134 ms am putut calcula o formulă pentru a găsi viteza totală de transfer:

1.492 / .134 secunde = 11.134.328 octeți / secundă, care se ridică la aproximativ 10,88 kilobyți binari pe secundă. În general, este destul de lent, motiv pentru care RWIN este în poziție pentru a vă împiedica să recunoașteți fiecare pachet trimis individual.

Setările RWIN din Ubuntu sunt separate de setările MTU. Calculați produsul de întârziere a lățimii de bandă (BDP) pentru conexiunea dvs. la internet cu această formulă:

(Lățimea de bandă maximă totală pe care conexiunea dvs. de internet ar trebui să o furnizeze în octeți pe secundă) (RTT în secunde) = BDP

Dimensiunea pachetului TCP nu influențează RWIN, dar dimensiunea pachetului în sine este influențată de valoarea selectată în Metoda 1. Folosiți această comandă pentru a găsi variabilele kernelului legate de RWIN:

Rețineți că există un spațiu după _mem, dar nicăieri altundeva în textul citat. Veți primi mai multe valori înapoi. Cele necesare sunt net.ipv4.tcp_rmem, net.ipv4.tcp_wmem și net.ipv4.tcp_mem . Numerele după aceste valori reprezintă valorile minime, implicite și maxime pentru fiecare. Ele reprezintă vectorul de memorie a ferestrei de recepție, vectorul de trimitere și vectorul de stivă TCP. Dacă rulați Ubuntu Kylin, este posibil să aveți o listă lungă de altele suplimentare. Puteți ignora în siguranță oricare dintre aceste valori suplimentare. Unii utilizatori ai Kylin pot vedea, de asemenea, unele dintre valorile descrise în alte scripturi, dar încă o dată caută pur și simplu aceste linii.

Ubuntu nu are o variabilă RWIN, dar net.ipv4.tcp_rmem este aproape. Aceste variabile controlează utilizarea memoriei și nu doar dimensiunea TCP. Acestea includ memoria consumată de structurile de soclu de date și pachetele scurte în tampoane masive. Dacă doriți să optimizați aceste valori, trimiteți pachetele de dimensiuni maxime pe care le-ați setat în Metoda 1 către alt server la distanță. Să folosim din nou valoarea implicită de 1.492 de octeți, scăzând 28 de octeți pentru informații despre antet, dar nu uitați că este posibil să aveți o valoare diferită. Utilizați comanda ping -s 1464 -c5 distrowatch.com pentru a obține date RTT suplimentare.

Veți dori să efectuați acest test de mai multe ori la diferite ore ale zilei și ale nopții. Încercați să faceți ping și la alte servere la distanță pentru a vedea cât variază RTT. Deoarece am avut în medie puțin peste 130 ms de fiecare dată când am încercat-o, putem folosi formula pentru a ne da seama de BDP. Să presupunem că aveți o conexiune foarte generică de 6 Mbits / secundă. BDP ar fi:

(6.000.000 biți / sec) (. 133 sec) * (1 octet / 8 biți) = 99.750 octeți

Aceasta înseamnă că valoarea implicită net.ipv4.tcp_rmem ar trebui să fie undeva la 100.000. Ați putea să o setați chiar mai sus dacă vă temeți că veți primi un RTT la fel de rău ca o jumătate de secundă. Toate valorile găsite în net.ipv4.tcp_rmem și net.ipv4.tcp_wmem trebuie setate în mod identic, deoarece transmiterea și recepția pachetelor se întâmplă prin aceeași conexiune la Internet. În general, veți dori să setați net.ipv4.tcp_mem la aceeași valoare utilizată de net.ipv4.tcp_wmem și net.ipv4.tcp_rmem, deoarece această primă variabilă este cea mai mare dimensiune de memorie tampon cea mai mare setată pentru tranzacțiile TCP.

Emiteți comanda și vedeți dacă ambele setări sunt setate la 0 sau 1, care indică o stare oprită sau pornită.

Setarea net.ipv4.tcp_no_metrics_save la 1 va forța nucleul Linux să optimizeze fereastra de recepție între valorile net.ipv4.tcp_rmem și net.ipv4.tcp_wmem într-un mod dinamic. Când net.ipv4.tcp_moderate_rcvbuf este activat, acesta împiedică congestia să influențeze conectivitatea ulterioară. Înainte de a efectua modificări permanente, efectuați o verificare a vitezei prin http://www.speedtest.net sau http://www.bing.com/search?q=speed+test pentru a vă asigura că aveți un control asupra măsurătorilor.

Modificați temporar variabilele cu valorile calculate. Asigurați-vă că înlocuiți numărul cu sumele calculate.

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

Reîncercați conexiunea pentru a vedea dacă viteza s-a îmbunătățit și, dacă nu, modificați din nou comanda și reporniți-o. Amintiți-vă că puteți apăsa tasta sus în terminal pentru a repeta ultima comandă utilizată. După ce ați găsit valorile corespunzătoare, deschideți cu gksu sau sudo comanda editorului de text din Metoda 1 și editați liniile pentru a le citi după cum urmează, înlocuind încă o dată numerele cu valorile calculate. Desigur, veți dori, de asemenea, să faceți backup pentru depuneți același mod în care ați făcut-o în prima parte doar în cazul în care ați greșit. Dacă ați creat unul, atunci puteți restaura și în același mod.

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

Salvați-l după ce sunteți sigur că totul este în regulă. Lansați următoarea comandă:

sudo sysctl -p

Acest lucru va forța nucleul Linux să reîncarce setările în , și dacă totul a mers bine, atunci ar trebui să vă ofere cel puțin o conexiune de rețea mai rapidă. În funcție de valorile implicite inițiale, diferența ar putea fi de fapt dramatică sau potențial deloc vizibilă.

8 minute citite