MTU Ayarları ile Ubuntu İnternet Hızını Optimize Etme



Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin

Bilgisayar metinleri terimin uygulamalarında farklılık gösterse de Ubuntu, bir makinenin bir TCP / IP ağ bağlantısı üzerinden geçebileceği en büyük TCP paketini ifade etmek için TCP Maksimum İletim Birimi'ni (MTU) kullanır. Bu değerin hesaplanması nispeten basitken ve varsayılanlar makinelerin çoğunda çalışsa da, paketler olağandışı ayarlar nedeniyle parçalıyorsa sisteminizi daha da optimize etmek mümkün olabilir. Tek bir büyük giden paket göndermek, birden çok küçük giden paket göndermekten daha etkilidir.



Makineniz için doğru MTU değerini bulmanın en kolay yolu bir terminal penceresi açmaktır. CTRL, ATL ve T tuşlarını basılı tutun veya belki de Unity kontrol panelinden başlatın. Ubuntu Sunucusu ile çalışıyorsanız, o zaman varsayılan olarak hiçbir grafik ortamı olmayan bir CLI arayüzüne geçersiniz. Terminalde olduğunuzda, ping -s 1464 -c1 distrowatch.com yazın ve çıktıyı bekleyin. Hiçbir şey almıyorsanız, ağ bağlantınız doğru şekilde yapılandırılmamış demektir. Doğru çıktı aldığınızı varsayarsak, 1464 (1492) baytlık veriyi okuyan bir bölümü arayın, bu, paketi 28 bayt başlık bilgisiyle gönderdiğinizi gösterir.



Yöntem 1: ping Çıktısını Paket Parçalanması için İnceleme

Ping komutu, paketin birden fazla başlık verisi eklenmiş birden fazla parça olarak gönderilip gönderilmediğini size bildirir. Çıktıyı 'Frag gerekli ve DF set (mtu = 1492)' veya benzer herhangi bir metinle ilgili bir şey hakkında uyaran herhangi bir satır için inceleyin. Ubuntu sürümünüze hangi ping sürümünün eklendiğine bağlı olarak, uyarı farklı şekilde ifade edilebilir. Bu metin yoksa, büyük olasılıkla şu anda parçalanmış paketleri göndermeyen bazı MTU ölçümleriyle zaten çalışıyorsunuzdur.



Sisteminiz için en iyi duruma getirilmiş MTU'yu bulmak için, bu ping komutunu küçük bir paket boyutuyla çalıştırmak ve daha sonra zamanla parçalanmaya başlayana kadar arttırmak ve ardından bunu kesme noktanız olarak düşünmek isteyeceksiniz. Başlık verileri için biraz yer olması gerektiğinden, MTU = yük + 28 olduğunu unutmayın. Şimdi, boyutu herhangi bir parça olmadan çok büyük bir şeye yükseltebilirseniz, ağ arabiriminiz parça oluşturmaya gerek kalmadan çok büyük paketleri işleyebilir. Sonunda bir Frag gerekli uyarısı gördüğünüzde, bu, çalıştırdığınız veya daha büyük boyutta bir yük ile gönderilen herhangi bir paketin birden çok paket olarak gönderileceği anlamına gelir. Herhangi bir uyarı olmadan ping -s 2464 -c1 distrowatch.com'u denerseniz, ancak ping -s 2465 -c1 distrowatch.com bir uyarı gönderirse, bunun 2.464 + 28'in TCP / IP yapılandırmanızın kaldırabileceği en büyük MTU ayarı olduğunu varsayalım. birden çok parçalanmış paket göndermeden önce. Kesin bir değeri belirlemek birkaç dakika alabilir.



Ping komutunu birden çok kez çalıştırmayı aklınızda bulundurduğunuzda, şunu çalıştırmanız gerekir: sudo ifconfig bilinen ağ arayüzlerinin bir listesini bulmak için. Ubuntu ve türevleri kök hesabın hashını çıkardı, ancak örneklerimiz için sudo bash tarafından oluşturulan bir kabuktan çalıştık. Her komutun önsözünü sudo ile ayrı ayrı yapmanız önerilir.

Doğru cihazı öğrenir öğrenmez şunu deneyin:

sudo ifconfig interfaceName adam ####

İnterfaceName'i birlikte çalıştığınız ağ bağdaştırıcısının adıyla değiştirin ve ardından #### değerini bulduğunuz boyut artı başlık bilgisi için 28 ile değiştirin. NIC'iniz için varsayılan MTU'nun ne olduğunu görmek için ifconfig'i çalıştırabilir ve bu önceki komutun onu değiştirip değiştirmediğini görmek için birkaç kez tekrar çalıştırabilirsiniz. Bazı ağ arabirim adaptörleri bunu değiştirmenize izin vermez. Durum buysa, maalesef daha fazla optimizasyon sonuç vermeyecektir. Ancak bu işe yaradıysa, gerçekten kalıcı hale getirebilirsiniz. Koşmayı dene ifconfig | grep MTU birden çok bağlayıcınız varsa tüm değerleri bulmak için ve ardından değerleri üzerinde çalıştığınız bağlayıcılarla eşleştirebilirsiniz.

Yöntem 2: MTU Optimizasyonlarını Sabit Hale Getirme

Şimdiye kadar sisteminizde kalıcı bir değişiklik yapmadınız. Yeniden başlatırsanız, tüm değişiklikleri silersiniz; bu, bir tür hata yaptıysanız ve artık İnternet'e bağlanamadığınızı fark ederseniz iyi olur. Öte yandan, MTU'nuz için doğru bir değer bulduysanız, belge. Muhtemelen bir şey olması ihtimaline karşı bir kopyasını çıkarmak için iyi bir zaman. Deneyin veya benzer bir şey, böylece her ihtimale karşı bir kopyasına sahip olursunuz. Grafik olarak düzenlemek isterseniz, yazın ve şifrenizi girin. Kubuntu, Xubuntu veya Lubuntu kullanıyorsanız, gedit'i Ubuntu yanıtınızın kullandığı grafik metin düzenleyiciyle değiştirmeniz gerekecektir. Örneğin Xubuntu, gedit yerine mousepad kullanıyor. Ubuntu Sunucusu kullanıyorsanız veya yalnızca komut satırıyla çalışmayı tercih ediyorsanız, bunun yerine şunu yazın: , bir kök kabuğu kullanmadığınızı varsayarak.

Düzenlemek için hangi yöntemi kullandığınıza bakılmaksızın, ifconfig'in daha önce kullandığı arayüzün adını bulun. Makinenizdeki muhtemelen wlan0 veya benzeri bir adla anılan ilk Wifi konektörüne baktığınızı varsayalım. Bu durumda, iface wlan0 inet static veya benzeri bir şeyle başlayan bir kod parçacığı bulun. Kilometreniz değişebilir, ancak sonraki satırda adresi ve ardından ###. ###. #. ## biçiminde bir IP adresi okuyacaktır. Yerel bir IPv6 bağlantısındaysanız farklı biçimlendirilmiş olabilir. Bir ağ maskeniz ve ağ geçidi satırınız ve ardından bir ana bilgisayar adını veya benzer bir şeyi listeleyen bir şeyiniz olacak. En altta, mtu ve bir sayı yazan başka bir satırınız olacak. Bu sayıyı en iyi MTU değeri ile değiştirin, belgeyi kaydedin ve ardından metin düzenleyiciden çıkın. Çalıştığından emin olmak için sistemi yeniden başlatmak isteyeceksiniz.

Birkaç yeniden başlatmadan sonra her şey yoluna girerse, ~ / Documents dizininizdeki interfaces.bak dosyasını silin. Bunun yerine sudo mv kullanabilirsiniz ve sonra

bu süreçte herhangi bir şey ters giderse.

Yöntem 3: TCP Alma Penceresi (RWIN) Ayarlarını Düzenleme

Ubuntu, bir ana bilgisayarın göndereni RWIN değeri olarak kabul etmeden önce kabul ettiği en büyük veri miktarını ifade eder. 30 MB'lık bir dosya indirirseniz, uzak sunucu aslında size hemen 30 MB'lık bir veri bloğu göndermez. Ubuntu ana makineniz dosyayı istediğinde belirli bir RWIN numarası gönderir ve ardından sunucu, sisteminizin verileri aldığına dair bir onay beklemeden önce bayt sayısına ulaşana kadar veri akışına başlar. Sunucu bunu aldıktan sonra, başka bir onay beklemeden önce ek bloklar göndermeye başlar.

Gecikme, uzak bir sunucudan paketlerin iletilmesi ve alınması için geçen süredir. Bağlantı oranları bu değere katkıda bulunur, ancak diğer birçok gecikme de katkıda bulunur. Ping komutu gecikmeyi gidiş-dönüş süresi (RTT) sayılarıyla açıklayacaktır. Önceki DistroWatch pingimizden çıkan çıktıya bakın. Zaman = 134 ms yazan bir satır bulacaksınız; bu, paketlerin Ubuntu makinemizden distrowatch.com'a ve tekrar geri dönüşe gitmesinin ne kadar sürdüğünü gösterir. 1.492 baytlık bir paket gönderiyorduk, bu nedenle 134 ms'de toplam aktarım hızını bulmak için bir formül hesaplayabilirdik:

1,492 / 0,134 saniye = 11,134,328 bayt / saniye, bu da saniyede yaklaşık 10,88 ikili kilobayta çıkar. Bu genel olarak oldukça yavaştır, bu nedenle RWIN, gönderilen her paketi ayrı ayrı onaylamak zorunda kalmanızı önlemek için mevcuttur.

Ubuntu'daki RWIN ayarları MTU ayarlarından ayrıdır. İnternet bağlantınız için Bant Genişliği Gecikme Ürününü (BDP) şu formülle hesaplayın:

(İnternet bağlantınızın Saniyede Bayt cinsinden sağlaması gereken toplam maksimum bant genişliği) (Saniye cinsinden RTT) = BDP

TCP paket boyutu, RWIN'i etkilemez, ancak paket boyutunun kendisi Yöntem 1'de seçilen değerden etkilenir. RWIN ile ilgili çekirdek değişkenlerini bulmak için bu komutu kullanın:

Lütfen _mem'den sonra bir boşluk olduğunu, ancak alıntı yapılan metnin başka hiçbir yerinde olmadığını unutmayın. Birkaç değeri geri alacaksınız. Gerekli olanlar net.ipv4.tcp_rmem, net.ipv4.tcp_wmem ve net.ipv4.tcp_mem . Bu değerlerden sonraki sayılar, her biri için minimum, varsayılan ve maksimum değerleri temsil eder. Alma penceresi bellek vektörünü, gönderme vektörünü ve TCP yığın vektörünü temsil ederler. Ubuntu Kylin çalıştırıyorsanız, uzun bir ek listeniz olabilir. Bu ek değerlerden herhangi birini güvenle göz ardı edebilirsiniz. Bazı Kylin kullanıcıları, diğer komut dosyalarında belirtilen bazı değerleri görebilir, ancak bir kez daha bu satırları arayabilir.

Ubuntu'da bir RWIN değişkeni yoktur, ancak net.ipv4.tcp_rmem yakındır. Bu değişkenler bellek kullanımını kontrol eder ve yalnızca TCP boyutunu kontrol etmez. Veri soketi yapıları tarafından tüketilen belleği ve büyük arabelleklerdeki kısa paketleri içerir. Bu değerleri optimize etmek istiyorsanız, Yöntem 1'de belirlediğiniz maksimum boyuttaki paketleri başka bir uzak sunucuya gönderin. Başlık bilgisi için 28 bayt çıkararak 1.492 bayt varsayılanı tekrar kullanalım, ancak farklı bir değeriniz olabileceğini unutmayın. Ek RTT verisi almak için ping -s 1464 -c5 distrowatch.com komutunu kullanın.

Bu testi, günün ve gecenin farklı saatlerinde birden çok kez çalıştırmak isteyeceksiniz. RTT'nin ne kadar değiştiğini görmek için diğer bazı uzak sunuculara da ping atmayı deneyin. Her denediğimizde ortalama 130 ms'nin biraz üzerinde olduğu için, BDP'mizi bulmak için formülü kullanabiliriz. Çok genel bir 6 Mbit / saniye bağlantıda olduğunuzu varsayalım. BDP şöyle olacaktır:

(6.000.000 bit / sn) (. 133 sn) * (1 bayt / 8 bit) = 99.750 bayt

Bu, varsayılan net.ipv4.tcp_rmem değerinin 100.000 civarında olması gerektiği anlamına gelir. Yarım saniye kadar kötü bir RTT alacağınızdan korkuyorsanız, bunu daha da yükseğe ayarlayabilirsiniz. Paketlerin iletimi ve alımı aynı İnternet bağlantısı üzerinden gerçekleştiğinden, net.ipv4.tcp_rmem ve net.ipv4.tcp_wmem'de bulunan tüm değerlerin aynı şekilde ayarlanması gerekir. Genel olarak net.ipv4.tcp_mem'i net.ipv4.tcp_wmem ve net.ipv4.tcp_rmem tarafından kullanılan aynı değere ayarlamak isteyeceksiniz çünkü bu ilk değişken, TCP işlemleri için belirlenen toplam en büyük arabellek bellek boyutudur.

Komutu verin ve bu ayarların her ikisinin de kapalı veya açık durumunu gösteren 0 veya 1 olarak ayarlanıp ayarlanmadığına bakın.

Net.ipv4.tcp_no_metrics_save'in 1 olarak ayarlanması, Linux çekirdeğini net.ipv4.tcp_rmem ve net.ipv4.tcp_wmem değerleri arasındaki alma penceresini dinamik bir şekilde optimize etmeye zorlar. Net.ipv4.tcp_moderate_rcvbuf etkinleştirildiğinde, tıkanıklığın sonraki bağlantıyı etkilemesini önler. Kalıcı bir değişiklik yapmadan önce, ölçümlerinize hakim olduğunuzdan emin olmak için http://www.speedtest.net veya http://www.bing.com/search?q=speed+test aracılığıyla bir hız kontrolü yapın.

Değişkenleri hesaplanan değerlerinizle geçici olarak değiştirin. #'Leri hesaplanan toplamlarınızla değiştirdiğinizden emin olun.

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

Hızın iyileşip iyileşmediğini görmek için bağlantınızı yeniden test edin ve yoksa komutunuzu tekrar ayarlayıp yeniden çalıştırın. Son kullanılan komutu tekrarlamak için terminalinizdeki yukarı tuşuna basabileceğinizi unutmayın. Uygun değerleri bulduğunuzda açın ile gksu veya sudo Yöntem 1'deki text editor komutunu kullanın ve satırları aşağıdaki gibi düzenleyin, bir kez daha #'leri hesaplanan değerlerinizle değiştirin. Elbette, aynı zamanda yedeklemek isteyeceksiniz. Bir hata yapmanız durumunda, birinci bölümde yaptığınız gibi dosyalayın. Bir tane yaptıysanız, aynı şekilde de geri yükleyebilirsiniz.

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

Her şeyin yolunda olduğundan emin olduktan sonra kaydedin. Aşağıdaki komutu verin:

sudo sysctl -p

Bu, Linux çekirdeğini ayarları yeniden yüklemeye zorlayacaktır. ve eğer her şey yolunda giderse, size en azından biraz daha hızlı bir ağ bağlantısı sağlamalıdır. Orijinal varsayılanlarınıza bağlı olarak, fark gerçekten dramatik olabilir veya potansiyel olarak hiç fark edilmeyebilir.

8 dakika okundu