Hogyan lehet optimalizálni az Ubuntu internet sebességét az MTU beállításokkal



Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére

Míg a számítógépes szövegek eltérőek a kifejezés alkalmazásában, az Ubuntu a TCP Maximum Transmission Unit (MTU) használatával utal arra a legnagyobb méretre, amelyet egy gép át tud adni egy TCP / IP hálózati kapcsolaton. Bár ennek az értéknek a kiszámítása viszonylag egyszerű, és az alapértelmezett beállítások a gépek többségénél működnek, lehetséges lehet a rendszer további optimalizálása, ha a csomagok szétaprózódnak a szokatlan beállítások miatt. Nagy, egyetlen kimenő csomag küldése hatékonyabb, mint több kisebb kimenő csomag küldése.



A legmegfelelőbb módja annak, hogy kiderítse a gépének megfelelő MTU értéket, ha megnyit egy terminálablakot. Tartsa lenyomva a CTRL, az ATL és a T gombot, vagy indítsa el a Unity kötőjelből. Ha az Ubuntu Server programmal dolgozik, akkor alapértelmezés szerint egy CLI felületet használ, grafikus környezet nélkül. A terminál elérése után írja be a ping -s 1464 -c1 distrowatch.com címet, és várja meg a kimenetet. Ha nem kap semmit, akkor a hálózati kapcsolat nincs megfelelően beállítva. Feltételezve, hogy megfelelő kimenetet kapott, akkor keressen egy olyan részt, amely 1464 (1492) bájtos adatolvasást tartalmaz, ami azt jelzi, hogy a csomagot 28 bájt fejlécinformációval küldi.



1. módszer: A ping kimenet vizsgálata csomagtöredezettség szempontjából

A ping parancs tudatja Önnel, ha a csomagot egynél több töredékként, több fejlécadattal együtt küldték el. Vizsgálja meg bármely olyan sor kimenetét, amely figyelmeztet valamire a „Frag needed and DF set (mtu = 1492)” vagy bármely hasonló szöveg vonatkozásában. Attól függően, hogy a ping mely verzióját tartalmazta az Ubuntu verziója, a figyelmeztetés másképp is megfogalmazható. Ha ez a szöveg nem lenne jelen, akkor valószínűleg több MTU méréssel dolgozik, amely jelenleg nem küld töredezett csomagokat.



A rendszeréhez legoptimálisabb MTU megtalálásához futtassa ezt a ping parancsot kis csomagmérettel, majd az idő múlásával növelje addig, amíg el nem kezd töredezni, majd ezt tekintheti a vágási pontnak. Ne feledje, hogy MTU = hasznos teher + 28, mivel a fejlécadatoknak helyet kell adni. Most, ha töredék nélkül megnövelheti a méretet nagyon nagyra, akkor a hálózati interfész képes lehet hatalmas csomagok kezelésére, töredékek generálása nélkül. Amikor végre meglátja a Frag szükséges figyelmeztetést, ez azt jelenti, hogy minden olyan csomag, amelyet a futtatott vagy nagyobb méretű hasznos teherrel küld, több csomagként küldi el. Tegyük fel, hogy ha figyelmeztetés nélkül próbálkozik a ping -s 2464 -c1 distrowatch.com szolgáltatással, de a ping -s 2465 -c1 distrowatch.com figyelmeztetést küld, ez azt jelenti, hogy a 2464 + 28 a legnagyobb MTU, amelyet a TCP / IP konfiguráció képes kezelni mielőtt több töredezett csomagot küldene. Pillanatokba telhet egy pontos érték meghatározása.



Miután meggondolta a ping parancs többszöri futtatását, futtatnia kell sudo ifconfig megtalálni az ismert hálózati interfészek listáját. Az Ubuntu és származékai kivonják a gyökérfiókot, de példáinkhoz a sudo bash által létrehozott héjból működtünk. Javasoljuk, hogy az egyes parancsokat inkább csak külön-külön adja meg sudo-val.

Amint ismeri a megfelelő eszközt, próbálja meg:

sudo ifconfig interfaceNév man ####

Cserélje le az interfaceName nevet annak a hálózati adapternek a nevével, amellyel dolgozik, majd cserélje le a #### értéket a talált méretre, plusz 28-ra a fejléc információhoz. Az ifconfig futtatásával megnézheti, hogy mi volt az alapértelmezett MTU a NIC-hez, és futtassa újra többször, hogy lássa, megváltoztatja-e ez az előző parancs. Néhány hálózati interfész-adapter egyszerűen nem engedi megváltoztatni. Ha ez a helyzet, akkor a további optimalizálás eredménytelen lesz. Ha azonban ez bevált, akkor valójában állandóvá teheti azt. Próbálja futni ifconfig | grep MTU hogy megtalálja az összes értéket, ha több csatlakozója van, majd az értékeket hozzáillesztheti azokhoz a csatlakozókhoz, amelyekkel dolgozik.

2. módszer: Az MTU-optimalizálások kibírása

Eddig nem hajtott végre állandó változtatást a rendszerén. Ha újraindítja, akkor töröl minden változtatást, ami jó, ha valamilyen hibát követett el, és úgy találta, hogy nem tud tovább csatlakozni az internethez. Másrészt, ha pontos értéket talált MTU-jához, akkor módosítania kell a dokumentum. Ez valószínűleg jó alkalom arra, hogy másolatot készítsen róla, ha valami történik. Próbáld ki vagy valami hasonló, így minden esetre van egy példányod. Ha grafikusan szeretné szerkeszteni, írja be és írja be a jelszavát. Ha Kubuntut, Xubuntut vagy Lubuntut használ, akkor le kell cserélnie a gedit-et az Ubuntu respin által használt grafikus szövegszerkesztővel. A Xubuntu például egérpadot használ a gedit helyett. Ha Ubuntu Server-t használ, vagy egyszerűen csak a parancssorral kíván dolgozni, akkor inkább írja be , feltételezve, hogy nem használ gyökérhéjat.

Függetlenül attól, hogy melyik módszert használta a szerkesztéshez, keresse meg az interfész nevét, ha azconconfig korábban kiköpte. Tegyük fel, hogy a géped első Wifi csatlakozóját nézegetted, amelynek valószínűleg a neve wlan0 vagy valami hasonló lenne. Ebben az esetben keressen egy kódrészletet, amely az iface wlan0 inet static vagy valami hasonlóval kezdődik. A futásteljesítmény változhat, de a következő sorban a cím olvasható, amelyet egy IP-cím követ, ###. ###. #. ## formátumban. Lehet, hogy másként van formázva, ha natív IPv6-kapcsolaton van. Lesz egy hálómaszk és átjáró vonal, majd valami következik, amely felsorolja a gazdagép nevét vagy valami hasonlót. Alul egy másik sor lesz, amelyen az mtu és egy szám olvasható. Cserélje le ezt a számot az MTU optimalizálására, mentse el a dokumentumot, majd lépjen ki a szövegszerkesztőből. Indítsa újra a rendszert, hogy biztosan működjön.

Ha minden rendben van többszöri újraindítás után, akkor törölje az interfaces.bak fájlt a ~ / Documents könyvtárban. Ehelyett használhatja a sudo mv-t és akkor

ha közben valami elromlott.

3. módszer: A TCP fogadó ablak (RWIN) beállításainak szerkesztése

Az Ubuntu a legnagyobb adatmennyiségre utal, amelyet a gazdagép elfogad, mielőtt a küldőt RWIN-értékként elismeri. Ha 30 MB-os fájlt tölt le, akkor a távoli kiszolgáló valójában nem azonnal küld Önnek 30 MB-os adatblokkot. Az Ubuntu gazdagép elküld egy adott RWIN számot, amikor a fájlt kéri, majd a szerver addig kezdi az adatfolyamot, amíg el nem éri a bájtok számát, mielőtt arra várna, hogy nyugtázza, hogy a rendszere megszerezte az adatokat. Miután a szerver megkapta ezt, további blokkokat küld el, mielőtt újabb nyugtázásra vár.

A késleltetés az az idő, amely a csomagok távoli szerverről történő továbbításához és fogadásához szükséges. A csatlakozási arány hozzájárul ehhez az értékhez, de számos más késés is. A ping parancs meg fogja magyarázni a késést az oda-vissza út (RTT) számok alapján. Nézze meg a DistroWatch előző pingjének kimenetét. Talál egy sort, amely idő = 134 ms-ot ír le, ennyi idő kellett ahhoz, hogy a csomagok oda-vissza menjenek az Ubuntu-gépünkről a distrowatch.com-ra és vissza. 1492 bájtos csomagot küldtünk, így 134 ms-nál kiszámíthattunk egy képletet a teljes átviteli sebesség megtalálásához:

1 492 / 0,134 másodperc = 11 134,328 bájt / másodperc, ami körülbelül 10,88 bináris kilobájt másodpercenként. Ez összességében meglehetősen lassú, ezért van az RWIN, amely megakadályozza, hogy minden egyes külön küldött csomagot nyugtáznia kell.

Az Ubuntu RWIN-beállításai elkülönülnek az MTU-beállításoktól. Számítsa ki az internetkapcsolatának sávszélesség-késleltetési termékét (BDP) a következő képlettel:

(Az internetkapcsolatának maximális sávszélessége bájt / másodpercben legyen elérhető) (RTT másodpercben) = BDP

A TCP csomagméret nem befolyásolja az RWIN-t, de magát a csomagméretet az 1. módszerben kiválasztott érték befolyásolja. Használja ezt a parancsot az RWIN-hez kapcsolódó rendszermag-változók megkeresésére:

Kérjük, ne feledje, hogy a _mem után van szóköz, de az idézett szövegben sehol máshol. Több értéket kap vissza. A szükségesek azok net.ipv4.tcp_rmem, net.ipv4.tcp_wmem és net.ipv4.tcp_mem . Az ezen értékek utáni számok az egyes minimum, alapértelmezett és maximális értékeket jelentik. A fogadó ablak memória vektorát, a küldés vektorát és a TCP verem vektorát képviselik. Ha az Ubuntu Kylint futtatja, akkor hosszú listája lehet továbbiaknak. Ezeknek a további értékeknek bármelyikét nyugodtan figyelmen kívül hagyhatja. Lehet, hogy a Kylin néhány felhasználója is lát néhány értéket más szkriptekben, de még egyszer egyszerűen keresse ezeket a sorokat.

Az Ubuntunak nincs RWIN változója, de a net.ipv4.tcp_rmem közel van. Ezek a változók nem csak a TCP méretét, hanem a memória használatát szabályozzák. Idetartoznak az adatcsatlakozó-struktúrák által elfogyasztott memória és a rövid csomagok hatalmas pufferekben. Ha optimalizálni szeretné ezeket az értékeket, küldje el az 1. módszerben beállított maximális méretű csomagokat egy másik távoli kiszolgálóra. Használjuk újra az 1 492 bájtos alapértelmezett értéket, kivonva a 28 fejlettől a fejléc információit, de ne feledje, hogy más lehet az értéke. Használja a ping -s 1464 -c5 distrowatch.com parancsot további RTT adatok megszerzéséhez.

Ezt a tesztet többször is le kell futtatnia a nap és az éjszaka különböző időpontjaiban. Próbáljon meg pingelni néhány más távoli szervert is, hogy lássa, mennyire változik az RTT. Mivel átlagosan valamivel több mint 130 ms volt a próbálkozásunk, a képlet segítségével megtudhatjuk a BDP-t. Tegyük fel, hogy nagyon általános 6 Mbits / másodperces kapcsolatot használ. A BDP a következő lenne:

(6.000.000 bit / sec) (. 133 sec) * (1 bájt / 8 bit) = 99.750 bájt

Ez azt jelenti, hogy az alapértelmezett net.ipv4.tcp_rmem értéknek valahol 100 000 körül kell lennie. Még magasabbra is állíthatja, ha attól fél, hogy fél másodperc alatt olyan RTT-t kap. A net.ipv4.tcp_rmem és a net.ipv4.tcp_wmem fájlokban található összes értéket azonos módon kell beállítani, mivel a csomagok továbbítása és fogadása ugyanazon az internetkapcsolaton keresztül történik. Általában azt szeretné, hogy a net.ipv4.tcp_mem ugyanazon értéket állítsa be, amelyet a net.ipv4.tcp_wmem és a net.ipv4.tcp_rmem használ, mivel ez az első változó a TCP-tranzakciókhoz beállított teljes legnagyobb puffermemória-méret.

Adja ki a parancsot és nézze meg, hogy mindkét beállítás 0 vagy 1 értékre van-e állítva, amelyek ki vagy be állapotot jeleznek.

Ha a net.ipv4.tcp_no_metrics_save értéket 1-re állítja, arra kényszeríti a Linux kernelt, hogy dinamikusan optimalizálja a fogadó ablakot a net.ipv4.tcp_rmem és a net.ipv4.tcp_wmem értékek között. Ha a net.ipv4.tcp_moderate_rcvbuf engedélyezve van, megakadályozza, hogy a torlódások befolyásolják a későbbi kapcsolatokat. Mielőtt bármilyen változtatást végrehajtana, végezzen sebességellenőrzést a http://www.speedtest.net vagy a http://www.bing.com/search?q=speed+test oldalon, hogy megbizonyosodjon arról, hogy rendelkezik-e fogantyúval a méréseihez.

A változókat ideiglenesen módosítsa a kiszámított értékekkel. Ne felejtse el kicserélni a # -okat a kiszámított összegekkel.

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

Tesztelje újra a csatlakozást, hogy lássa, javult-e a sebesség, és ha nem módosítja újra a parancsot, és futtassa újra. Ne felejtsd el, hogy a terminálban lévő fel gomb megnyomásával megismételheted az utoljára használt parancsot. Miután megtalálta a megfelelő értékeket, nyissa meg a ... val gksu vagy sudo szövegszerkesztő parancsot az 1. módszerből, és az alábbiak szerint szerkessze a sorokat, még egyszer cserélje ki a # -eket a számított értékekkel. Természetesen biztonsági másolatot is szeretne készíteni a fájlokat ugyanúgy, mint az első részben, hátha hibázik. Ha elkészítetted, akkor ugyanúgy visszaállíthatod.

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

Mentse el, ha biztos benne, hogy minden rendben van. Adja ki a következő parancsot:

sudo sysctl -p

Ez arra kényszeríti a Linux kernelt, hogy töltse be újra a beállításokat , és ha minden jól ment, akkor legalább valamivel gyorsabb hálózati kapcsolatot kell biztosítania. Az eredeti alapértelmezett értékektől függően a különbség valóban drámai lehet, vagy egyáltalán nem észrevehető.

8 perc olvasás