Cara Mengoptimumkan Kelajuan Internet Ubuntu dengan Tetapan MTU



Cuba Instrumen Kami Untuk Menghapuskan Masalah

Walaupun teks komputer berbeza dalam penerapan istilah tersebut, Ubuntu menggunakan TCP Maximum Transmission Unit (MTU) untuk merujuk pada ukuran terbesar paket TCP yang dapat dilalui oleh mesin melalui sambungan rangkaian TCP / IP. Walaupun mengira nilai ini agak sederhana dan lalai berfungsi pada kebanyakan mesin, mungkin lebih baik untuk mengoptimumkan sistem anda jika paket berpecah-pecah kerana tetapan yang tidak biasa. Menghantar paket keluar tunggal yang besar lebih berkesan daripada menghantar beberapa paket keluar yang lebih kecil.



Cara termudah untuk mengetahui nilai MTU yang betul untuk mesin anda adalah dengan membuka tetingkap terminal. Tahan CTRL, ATL dan T atau mungkin mulakannya dari tanda pisah Unity. Sekiranya anda bekerja dengan Pelayan Ubuntu, maka anda akan lalai ke antara muka CLI tanpa persekitaran grafik sama sekali. Sebaik sahaja anda berada di terminal, ketik ping -s 1464 -c1 distrowatch.com dan tunggu hasilnya. Sekiranya anda tidak menerima apa-apa, sambungan rangkaian anda belum dikonfigurasikan dengan betul. Dengan andaian anda menerima output yang tepat, kemudian cari bahagian yang membaca 1464 (1492) byte data, yang menunjukkan bahawa anda mengirim paket dengan 28 byte maklumat tajuk.



Kaedah 1: Meneliti Output ping untuk Fragmentasi Packet

Perintah ping akan memberitahu anda jika paket tersebut dikirimkan sebagai lebih dari satu fragmen dengan dilampirkan banyak data header. Periksa output untuk mana-mana baris yang memberi amaran mengenai sesuatu mengenai 'Frag diperlukan dan DF set (mtu = 1492)' atau teks serupa. Bergantung pada versi ping mana yang disertakan dengan versi Ubuntu anda, peringatan itu mungkin ditulis dengan cara yang berbeza. Sekiranya teks ini tidak ada, maka kemungkinan besar anda sudah bekerja dengan beberapa pengukuran MTU yang tidak mengirimkan paket terpecah pada masa ini.



Untuk mencari MTU yang paling dioptimumkan untuk sistem anda, anda ingin menjalankan perintah ping ini dengan ukuran paket kecil, dan kemudian dari masa ke masa meningkatkannya sehingga ia mula berpecah-pecah setelah itu anda menganggap ini sebagai titik pemotongan anda. Perlu diingat bahawa MTU = muatan + 28, kerana perlu ada ruang untuk data tajuk. Sekarang, jika anda dapat meningkatkan ukuran menjadi sesuatu yang sangat besar tanpa pecahan, maka antara muka rangkaian anda mungkin dapat menangani paket besar tanpa perlu menghasilkan serpihan. Apabila anda akhirnya melihat peringatan Frag yang diperlukan, ini bermaksud bahawa setiap paket yang dihantar dengan muatan dengan ukuran yang anda jalankan atau lebih tinggi akan dihantar sebagai beberapa paket. Andaikan bahawa jika anda mencuba ping -s 2464 -c1 distrowatch.com tanpa sebarang amaran, tetapi ping -s 2465 -c1 distrowatch.com menghantar amaran, ini bermaksud bahawa 2,464 + 28 adalah tetapan MTU terbesar yang dapat dikendalikan oleh konfigurasi TCP / IP anda. sebelum menghantar beberapa paket berpecah. Mungkin memerlukan beberapa saat untuk menentukan nilai yang tepat.



Setelah anda mempunyai nilai untuk menjalankan perintah ping berkali-kali, anda perlu menjalankannya sudo ifconfig untuk mencari senarai antara muka rangkaian yang diketahui. Ubuntu dan derivatifnya mencentang akaun root, tetapi kami beroperasi dari shell yang dibuat oleh sudo bash untuk contoh kami. Sebaiknya awalkan setiap perintah dengan sudo secara berasingan.

Sebaik sahaja anda mengetahui peranti yang betul, cuba:

sudo ifconfig interfaceNama lelaki ####

Ganti antara muka Nama dengan nama penyesuai rangkaian yang sedang Anda gunakan, dan kemudian ganti #### dengan ukuran yang anda temukan ditambah 28 untuk maklumat tajuk. Anda boleh menjalankan ifconfig untuk melihat apa MTU lalai untuk NIC anda dan menjalankannya berulang kali untuk melihat apakah arahan sebelumnya mengubahnya. Beberapa penyesuai antara muka rangkaian tidak akan membiarkan anda mengubahnya. Sekiranya demikian, sayangnya pengoptimuman selanjutnya tidak akan membuahkan hasil. Sekiranya, bagaimanapun, ini berjaya, maka anda sebenarnya boleh menjadikannya kekal. Cuba berlari ifconfig | grep MTU untuk mencari semua nilai jika anda mempunyai banyak penyambung, dan kemudian anda boleh memadankan nilainya dengan penyambung yang anda gunakan.

Kaedah 2: Membuat Stick Optimization MTU

Sejauh ini anda tidak membuat perubahan tetap pada sistem anda. Sekiranya anda reboot, maka anda akan menghapuskan sebarang perubahan, yang bagus jika anda melakukan kesalahan dan mendapati bahawa anda tidak dapat menyambung ke Internet lagi. Sebaliknya, jika anda menemui nilai yang tepat untuk MTU anda, anda perlu mengeditnya dokumen. Ini mungkin masa yang tepat untuk membuat salinan sekiranya sesuatu berlaku. Cuba atau sesuatu yang serupa sehingga anda mempunyai salinan berjaga-jaga. Sekiranya anda ingin mengeditnya secara grafik, kemudian ketik dan masukkan kata laluan anda. Sekiranya anda menggunakan Kubuntu, Xubuntu atau Lubuntu, maka anda perlu mengganti gedit dengan editor teks grafik yang digunakan oleh Ubuntu respin anda. Xubuntu, misalnya, menggunakan mousepad dan bukannya gedit. Sekiranya anda menggunakan Pelayan Ubuntu atau lebih suka bekerja dengan baris arahan, maka ketik , dengan andaian anda tidak menggunakan shell akar.

Tanpa mengira kaedah mana yang anda gunakan untuk mengeditnya, cari nama antara muka ifconfig yang dilancarkan sebelumnya. Anggaplah anda melihat penyambung Wifi pertama di mesin anda, yang mungkin akan dinamakan wlan0 atau yang serupa. Dalam kes ini, cari coretan kod yang bermula dengan iface wlan0 inet statik atau yang serupa. Perbatuan anda mungkin berbeza-beza, tetapi baris berikutnya akan membaca alamat diikuti dengan alamat IP dalam format ###. ###. #. ##. Ia mungkin diformat secara berbeza jika anda menggunakan sambungan IPv6 asli. Anda akan mempunyai jaringan netmask dan gateway, diikuti dengan sesuatu yang menyenaraikan nama host atau yang serupa. Di bahagian bawah, anda akan mempunyai baris lain yang berbunyi mtu dan nombor. Ganti nombor itu dengan nilai MTU yang dioptimumkan, simpan dokumen dan kemudian keluar dari penyunting teks. Anda mahu menghidupkan semula sistem untuk memastikannya berfungsi.

Sekiranya semuanya baik-baik saja selepas beberapa but semula, kemudian hapus fail interfaces.bak di direktori ~ / Documents anda. Anda boleh menggunakan sudo mv dan kemudian

sekiranya ada yang serba salah dalam prosesnya.

Kaedah 3: Mengedit Tetapan TCP Receive Window (RWIN)

Ubuntu merujuk kepada jumlah data terbesar yang diterima oleh host sebelum mengakui pengirim sebagai nilai RWIN. Sekiranya anda memuat turun fail 30 MB, pelayan jauh tidak akan langsung menghantar sekumpulan data 30 MB kepada anda. Host Ubuntu anda menghantar nombor RWIN tertentu ketika meminta fail, dan kemudian pelayan mula mengalirkan data sehingga mencapai jumlah bait sebelum menunggu pengakuan bahawa sistem anda mendapat data. Setelah pelayan menerimanya, ia akan mula menghantar blok tambahan sebelum menunggu pengakuan lain.

Latensi adalah masa yang diperlukan untuk menghantar dan menerima paket dari pelayan jauh. Kadar sambungan menyumbang kepada nilai ini, tetapi begitu juga dengan kelewatan lain. Perintah ping akan menjelaskan kependaman dari segi nombor waktu perjalanan pergi balik (RTT). Lihatlah output dari ping DistroWatch kami sebelum ini. Anda akan menemui garis yang berbunyi = 134 ms, iaitu berapa lama masa yang diperlukan untuk paket pergi balik dari mesin Ubuntu kami ke distrowatch.com dan kembali lagi. Kami menghantar paket 1.492-byte, jadi pada 134 ms kami dapat mengira formula untuk mencari jumlah kelajuan pemindahan:

1,492 / .134 saat = 11,134.328 bait / saat, yang mencapai kira-kira 10.88 kilobyte binari sesaat. Itu agak perlahan secara keseluruhan, itulah sebabnya RWIN disediakan untuk mengelakkan anda daripada mengakui setiap paket yang dihantar secara individu.

Tetapan RWIN di Ubuntu terpisah dari tetapan MTU. Kira Produk Kelewatan Jalur Lebar (BDP) untuk sambungan Internet anda dengan formula ini:

(Jumlah lebar jalur maksimum sambungan Internet anda harus dibekalkan dalam Byte sesaat) (RTT dalam Detik) = BDP

Ukuran paket TCP tidak mempengaruhi RWIN, tetapi ukuran paket itu sendiri dipengaruhi oleh nilai yang dipilih dalam Kaedah 1. Gunakan arahan ini untuk mencari pemboleh ubah kernel yang berkaitan dengan RWIN:

Perlu diingat bahawa ada ruang selepas _mem, tetapi tidak ada tempat lain dalam teks yang dipetik. Anda akan mendapat beberapa nilai. Yang diperlukan adalah net.ipv4.tcp_rmem, net.ipv4.tcp_wmem dan net.ipv4.tcp_mem . Nombor selepas nilai ini mewakili nilai minimum, lalai dan maksimum untuk masing-masing. Mereka mewakili vektor memori tetingkap terima, vektor kirim dan vektor tumpukan TCP. Sekiranya anda menjalankan Ubuntu Kylin, maka anda mungkin mempunyai senarai panjang yang lain. Anda boleh mengabaikan salah satu nilai tambahan ini dengan selamat. Beberapa pengguna Kylin mungkin juga melihat beberapa nilai yang digambarkan dalam skrip lain, tetapi sekali lagi hanya mencari baris ini.

Ubuntu tidak mempunyai pemboleh ubah RWIN, tetapi net.ipv4.tcp_rmem hampir. Pemboleh ubah ini mengawal penggunaan memori dan bukan hanya ukuran TCP. Ini termasuk memori yang dimakan oleh struktur soket data dan paket pendek dalam penyangga besar-besaran. Sekiranya anda ingin mengoptimumkan nilai-nilai ini, hantarkan paket ukuran maksimum yang anda tetapkan dalam Kaedah 1 ke pelayan jauh lain. Mari kita gunakan lalai 1.492-bait sekali lagi, mengurangkan 28 bait untuk maklumat tajuk, tetapi ingat bahawa anda mungkin mempunyai nilai yang berbeza. Gunakan perintah ping -s 1464 -c5 distrowatch.com untuk mendapatkan data RTT tambahan.

Anda ingin menjalankan ujian ini lebih daripada sekali pada waktu yang berbeza pada siang dan malam. Cuba ping beberapa pelayan jauh lain juga untuk melihat berapa banyak RTT berbeza-beza. Oleh kerana kita mempunyai purata lebih dari 130 ms setiap kali kita mencubanya, kita dapat menggunakan formula untuk mengetahui BDP kita. Anggaplah anda menggunakan sambungan 6 Mbits / saat yang sangat generik. BDP adalah:

(6,000,000 bit / saat) (. 133 saat) * (1 bait / 8 bit) = 99,750 bait

Ini bermaksud nilai net.ipv4.tcp_rmem lalai mestilah sekitar 100,000. Anda boleh menetapkannya lebih tinggi jika anda takut mendapat RTT seburuk setengah saat. Semua nilai yang terdapat di net.ipv4.tcp_rmem dan net.ipv4.tcp_wmem perlu ditetapkan secara sama, kerana penghantaran dan penerimaan paket berlaku melalui sambungan Internet yang sama. Anda biasanya mahu menetapkan net.ipv4.tcp_mem ke nilai yang sama yang digunakan oleh net.ipv4.tcp_wmem dan net.ipv4.tcp_rmem kerana pemboleh ubah pertama ini adalah jumlah memori penyangga terbesar yang ditetapkan untuk transaksi TCP.

Keluarkan arahan dan lihat apakah kedua-dua tetapan ini ditetapkan ke 0 atau 1, yang menunjukkan keadaan mati atau aktif.

Menetapkan net.ipv4.tcp_no_metrics_save ke 1 akan memaksa kernel Linux untuk mengoptimumkan tetingkap penerimaan antara nilai net.ipv4.tcp_rmem dan net.ipv4.tcp_wmem secara dinamik. Apabila net.ipv4.tcp_moderate_rcvbuf diaktifkan, ia menghalang kesesakan daripada mempengaruhi sambungan seterusnya. Sebelum membuat perubahan tetap, lakukan pemeriksaan laju melalui http://www.speedtest.net atau http://www.bing.com/search?q=speed+test untuk memastikan anda dapat menangani pengukuran anda.

Ubah pemboleh ubah buat sementara waktu dengan nilai yang dikira anda. Pastikan untuk mengganti # dengan jumlah yang dikira.

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

Uji kembali sambungan anda untuk melihat apakah kelajuannya meningkat, dan jika tidak mengubah perintah anda lagi dan jalankan semula. Ingatlah bahawa anda boleh menekan kekunci di terminal anda untuk mengulangi arahan terakhir yang digunakan. Setelah anda menemui nilai yang sesuai, buka dengan gksu atau sudo perintah penyunting teks dari Kaedah 1, dan edit baris untuk dibaca seperti berikut, sekali lagi menggantikan # dengan nilai yang dikira anda. Anda tentu juga ingin membuat sandaran fail dengan cara yang sama seperti yang anda lakukan di bahagian pertama sekiranya anda melakukan kesalahan. Sekiranya anda membuatnya, anda juga boleh memulihkannya dengan cara yang sama.

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

Simpan setelah anda yakin semuanya baik-baik saja. Keluarkan arahan berikut:

sudo sysctl -p

Ini akan memaksa kernel Linux memuat semula tetapan di , dan jika semuanya berjalan dengan baik maka ia seharusnya memberi anda sekurang-kurangnya sambungan rangkaian yang lebih cepat. Bergantung pada lalai asal anda, perbezaannya sebenarnya mungkin dramatik atau berpotensi tidak dapat dilihat sama sekali.

8 minit membaca