Com optimitzar la velocitat d'Internet d'Ubuntu amb la configuració de MTU



Proveu El Nostre Instrument Per Eliminar Problemes

Tot i que els textos informàtics difereixen en l’aplicació del terme, Ubuntu utilitza la unitat de transmissió màxima TCP (MTU) per referir-se a la mida més gran que pot passar un paquet TCP que una màquina pot passar per una connexió de xarxa TCP / IP. Tot i que el càlcul d’aquest valor és relativament senzill i els valors predeterminats funcionen a la majoria de màquines, és possible que s’optimitzi encara més el sistema si els paquets es fragmenten a causa de paràmetres inusuals. L’enviament de paquets de sortida individuals grans és més eficient que l’enviament de paquets de sortida més petits.



La forma més senzilla d’esbrinar el valor MTU correcte per a la vostra màquina és obrir una finestra de terminal. Manteniu premudes les tecles CTRL, ATL i T o, potser, inicieu-les des del tauler Unity. Si esteu treballant amb Ubuntu Server, passareu per defecte a una interfície CLI sense cap entorn gràfic. Un cop arribeu al terminal, escriviu ping -s 1464 -c1 distrowatch.com i espereu la sortida. Si no rebeu res, la vostra connexió de xarxa no s'ha configurat correctament. Suposant que heu rebut la sortida adequada, cerqueu una secció que digui 1464 (1492) bytes de dades, que indiqui que envieu el paquet amb 28 bytes d’informació de capçalera.



Mètode 1: examen de la sortida de ping per a la fragmentació de paquets

L'ordre ping us indicarà si el paquet s'ha enviat com a més d'un fragment amb diverses dades de capçalera adjuntes. Examineu la sortida de qualsevol línia que adverteixi sobre alguna cosa relacionada amb 'Frag necessari i conjunt DF (mtu = 1492)' o qualsevol text similar. Depenent de la versió de ping inclosa amb la vostra versió d’Ubuntu, l’advertència es pot redactar de manera diferent. En cas que aquest text no estigui present, és molt probable que ja estigueu treballant amb algunes mesures de MTU que no envien paquets fragmentats en aquest moment.



Per trobar la MTU més optimitzada per al vostre sistema, voldríeu executar aquesta ordre ping amb una mida de paquet petita i, amb el pas del temps, augmentar-la fins que comenci a fragmentar-se, després de la qual cosa considereu aquest el vostre punt de tall. Tingueu en compte que MTU = càrrega útil + 28, ja que cal que hi hagi marge per a les dades de la capçalera. Ara, si podeu augmentar la mida fins a una cosa molt gran sense fragments, és possible que la vostra interfície de xarxa pugui gestionar paquets massius sense necessitat de generar fragments. Quan finalment veieu un avís de Frag necessari, això vol dir que qualsevol paquet enviat amb una càrrega útil de la mida que hàgiu executat o superior s’enviarà com a paquets múltiples. Suposem que si proveu ping -s 2464 -c1 distrowatch.com sense cap advertiment, però ping -s 2465 -c1 distrowatch.com envia un avís, això vol dir que 2.464 + 28 és la configuració MTU més gran que pot gestionar la vostra configuració TCP / IP. abans d’enviar diversos paquets fragmentats. Pot trigar uns quants moments a identificar un valor exacte.



Un cop tingueu en compte el valor d’executar l’ordre ping diverses vegades, haureu d’executar-lo sudo ifconfig per trobar una llista d’interfícies de xarxa conegudes. Ubuntu i els seus derivats han eliminat el compte root, però hem operat des d'un intèrpret d'ordres creat per sudo bash per als nostres exemples. És recomanable que prefaci cada ordre amb sudo individualment.

Tan aviat com conegueu el dispositiu correcte, proveu:

sudo ifconfig interfaceName man ####

Substituïu interfaceName pel nom de l'adaptador de xarxa amb què esteu treballant i, a continuació, substituïu #### per la mida que heu trobat més 28 per obtenir informació de capçalera. Podeu executar ifconfig per veure quin era el MTU per defecte per a la vostra NIC i tornar-lo a executar diverses vegades per veure si aquesta ordre anterior el canvia. Alguns adaptadors d'interfície de xarxa simplement no us permetran canviar-lo. Si és així, desafortunadament no serà fructífera una nova optimització. Tanmateix, si això ha funcionat, podeu fer-lo permanent. Prova de córrer ifconfig | grep MTU per trobar tots els valors si teniu diversos connectors i, a continuació, podeu fer coincidir els valors amb els connectors amb els quals esteu treballant.

Mètode 2: Fer que les optimitzacions MTU es mantinguin

Fins ara no heu fet cap canvi permanent al vostre sistema. Si reinicieu, eliminareu els canvis, cosa que és bo si heu comès algun error i comproveu que ja no podeu connectar-vos a Internet. D’altra banda, si heu trobat un valor precís per al vostre MTU, haureu d’editar el fitxer document. Probablement sigui un bon moment per fer-ne una còpia en cas que passi alguna cosa. Proveu-ho o alguna cosa similar, de manera que en tingueu una còpia per si de cas. Si voleu editar-lo gràficament, escriviu i introduïu la vostra contrasenya. Si feu servir Kubuntu, Xubuntu o Lubuntu, haureu de substituir gedit per l’editor de text gràfic que utilitza el respin d’Ubuntu. Xubuntu, per exemple, fa servir mousepad en lloc de gedit. Si utilitzeu Ubuntu Server o simplement preferiu treballar amb la línia d’ordres, en lloc d’això escriviu , suposant que no utilitzeu un intèrpret d'ordres arrel.

Independentment del mètode que hàgiu utilitzat per editar-lo, cerqueu el nom de la interfície si abans escopiu config. Suposem que esteu mirant el primer connector Wifi del vostre equip, que probablement es diria wlan0 o alguna cosa similar. En aquest cas, cerqueu un fragment de codi que comenci per iface wlan0 inet static o alguna cosa similar. El vostre quilometratge pot variar, però a la línia següent es mostrarà l'adreça seguida d'una adreça IP en format ###. ###. #. ##. Pot tenir un format diferent si teniu una connexió IPv6 nativa. Tindreu una màscara de xarxa i una línia de passarel·la, seguida d’alguna cosa que inclogui un nom d’amfitrió o alguna cosa similar. A la part inferior, tindreu una altra línia que diu mtu i un número. Substituïu aquest número pel valor MTU d'optimització, deseu el document i, a continuació, sortiu de l'editor de text. Voleu reiniciar el sistema per garantir que funcioni.

Si tot va bé després de diversos reinicis, suprimiu el fitxer interfaces.bak del directori ~ / Documents. En lloc d’això, podríeu utilitzar sudo mv i llavors

si alguna cosa es va torçar en el procés.

Mètode 3: Edició de la configuració de la finestra de recepció TCP (RWIN)

Ubuntu fa referència a la major quantitat de dades que un amfitrió accepta abans de reconèixer el remitent com el valor RWIN. Si descarregueu un fitxer de 30 MB, el servidor remot no us enviarà immediatament cap bloc de dades de 30 MB. El vostre amfitrió d’Ubuntu envia un número RWIN específic quan sol·licita el fitxer i, a continuació, el servidor comença a transmetre dades fins que arriba al nombre de bytes abans d’esperar el reconeixement que el vostre sistema ha obtingut les dades. Un cop el servidor ho rep, comença a enviar blocs addicionals abans d’esperar a un altre reconeixement.

La latència és el temps que es triga a transmetre i rebre paquets des d’un servidor remot. Les taxes de connexió contribueixen a aquest valor, però també ho fan molts altres retards. L'ordre ping explicarà la latència en termes de números de temps d'anada i tornada (RTT). Mireu la sortida del nostre anterior ping de DistroWatch. Trobareu una línia que llegeix el temps = 134 ms, que és el temps que van trigar els paquets a anar d’anada i tornada des de la nostra màquina Ubuntu a distrowatch.com i tornar-hi. Vam enviar un paquet de 1.492 bytes, de manera que a 134 ms podríem calcular una fórmula per trobar la velocitat de transferència total:

1.492 / .134 segons = 11.134,328 bytes / segon, que surt aproximadament a 10,88 kilobytes binaris per segon. En general, això és bastant lent, per això RWIN està previst per evitar que hagueu de reconèixer cada paquet enviat individualment.

La configuració de RWIN a Ubuntu és diferent de la configuració de MTU. Calculeu el producte de retard d’amplada de banda (BDP) per a la vostra connexió a Internet amb aquesta fórmula:

(Amplada màxima de banda total que la vostra connexió a Internet hauria de proporcionar en bytes per segon) (RTT en segons) = BDP

La mida del paquet TCP no influeix en RWIN, però la mida del paquet està influïda pel valor seleccionat al mètode 1. Utilitzeu aquesta ordre per trobar les variables del nucli relacionades amb RWIN:

Tingueu en compte que hi ha un espai després de _mem, però en cap altre lloc del text citat. Recuperareu diversos valors. Els que calen són net.ipv4.tcp_rmem, net.ipv4.tcp_wmem i net.ipv4.tcp_mem . Els números posteriors a aquests valors representen els valors mínim, predeterminat i màxim de cadascun. Representen el vector de memòria de la finestra de recepció, el vector d’enviament i el vector de pila TCP. Si utilitzeu Ubuntu Kylin, és possible que en tingueu una llarga llista. Podeu ignorar amb seguretat qualsevol d’aquests valors addicionals. Alguns usuaris de Kylin també podrien veure alguns dels valors descrits en altres scripts, però una vegada més simplement busquen aquestes línies.

Ubuntu no té una variable RWIN, però net.ipv4.tcp_rmem està a prop. Aquestes variables controlen l’ús de la memòria i no només la mida del TCP. Inclouen memòria consumida per estructures de sòcol de dades i paquets curts en memòries intermèdies massives. Si voleu optimitzar aquests valors, envieu els paquets de mida màxima establerts al mètode 1 a un altre servidor remot. Tornem a utilitzar el valor predeterminat de 1.492 bytes, restant 28 bytes per obtenir informació de capçalera, però recordeu que és possible que tingueu un valor diferent. Utilitzeu l'ordre ping -s 1464 -c5 distrowatch.com per obtenir dades RTT addicionals.

Voleu fer aquesta prova més d’una vegada a diferents hores del dia i de la nit. Proveu també de fer ping a altres servidors remots per veure quant varia RTT. Com que teníem una mitjana de poc més de 130 ms cada vegada que ho provàvem, podem utilitzar la fórmula per esbrinar el nostre BDP. Suposem que teniu una connexió molt genèrica de 6 Mbits / segon. El BDP seria:

(6.000.000 bits / seg) (. 133 seg) * (1 byte / 8 bits) = 99.750 bytes

Això significa que el valor per defecte net.ipv4.tcp_rmem hauria de ser aproximadament de 100.000. Podríeu configurar-lo encara més si temeu que obtindreu un RTT tan dolent com mig segon. Tots els valors que es troben a net.ipv4.tcp_rmem i net.ipv4.tcp_wmem s’han d’establir de manera idèntica, ja que la transmissió i recepció de paquets es produeix a través de la mateixa connexió a Internet. Generalment, voldreu establir net.ipv4.tcp_mem al mateix valor que utilitzen net.ipv4.tcp_wmem i net.ipv4.tcp_rmem, ja que aquesta primera variable és la mida de memòria de memòria intermèdia més gran total establerta per a les transaccions TCP.

Emet l'ordre i comproveu si tots dos paràmetres estan definits a 0 o 1, que indiquen un estat de desactivat o activat.

Si configureu net.ipv4.tcp_no_metrics_save a 1, el nucli de Linux obligarà a optimitzar la finestra de recepció entre els valors net.ipv4.tcp_rmem i net.ipv4.tcp_wmem de manera dinàmica. Quan net.ipv4.tcp_moderate_rcvbuf està activat, evita que la congestió influeixi en la connectivitat posterior. Abans de fer canvis permanents, feu una comprovació de velocitat a través de http://www.speedtest.net o http://www.bing.com/search?q=speed+test per assegurar-vos que teniu en compte les vostres mesures.

Canvieu temporalment les variables amb els vostres valors calculats. Assegureu-vos de substituir els # per les vostres sumes calculades.

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

Torneu a provar la connexió per veure si la velocitat ha millorat i, si no, torneu a ajustar l'ordre i torneu-la a executar. Recordeu que podeu prémer la tecla amunt del terminal per repetir l'última ordre utilitzada. Un cop hàgiu trobat els valors adequats, obriu amb el gksu o bé suo comanda de l’editor de text del mètode 1 i editeu les línies per llegir-les de la manera següent, substituint una vegada més els # pels valors calculats. Per descomptat, també voldreu fer una còpia de seguretat de arxivar de la mateixa manera que ho va fer a la primera part per si comet un error. Si n'heu creat un, també podeu restaurar de la mateixa manera.

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

Deseu-lo un cop esteu segur que tot està bé. Emeteu l'ordre següent:

sudo sysctl -p

Això obligarà el nucli Linux a tornar a carregar la configuració , i si tot va bé, hauria de proporcionar una connexió de xarxa almenys una mica més ràpida. En funció dels valors predeterminats originals, la diferència pot ser realment dramàtica o potencialment no perceptible.

8 minuts de lectura