Bir Linux ağ arayüzünde bant genişliği nasıl kısılır?


Yanıtlar:


32

Netem iproute tarafından kontrol çekirdek modülü.

Netem'i çekirdek ile derlemeniz gerekir:

Networking -->
   Networking Options -->
     QoS and/or fair queuing -->
        Network emulator

Netem modülü yüklendikten sonra, iproute's tc size aşağıdakileri sağlar:

tc qdisc add dev  tap0 root netem delay 50ms loss 50% 

(% 50 paket kaybı, 50 ms ekstra gecikme)


Evet, bu gerçekten bunlar için çok iyi bir modül. Şu ana kadar kimsenin cevap vermediğine inanamıyorum ...

Bunu, yıllardır tüm dağıtımlarda standart olduğu için sunucuları yerel olarak (localhost'ta) test etmek için kullanıyorum. 20ms gecikme "tc qdisc ekle dev lo root handle 1: 0 netem delay 20msec" ve "tc qdisc del dev lo root"
pixelbeat

1
Hızlı not: çekirdek modülü sch_netem. Genellikle elle yüklemeye gerek yoktur, gerektiğinde otomatik olarak yüklenir.
Aralık'ta


Netem Benim sürümü (Ubuntu 13.10) de kullanarak bant genişliğini sınırlamak için seçeneği vardır rateseçeneği: tc qdisc add dev lo root handle 1:0 netem delay 10ms rate 1mbit limit 1000. Gibi bazı aygıtlar için unutmayın lo(localhost'u erişmek için), siz de kuyruk uzunluğunu ayarlamak gerekir: ifconfig lo txqueuelen 1000. Bakınız serverfault.com/a/394949/76090
z0r

27

Müşteri tarafı değil mi?

Damlama ne istersen yapmalısın. Ubuntu kullanıyorsanız (veya Debian, sanırım), onu yükleyebilir sudo apt-get install trickleve sonra çalıştırabilirsiniz. trickle -s -d 10 -u 10 firefox(ya da çok uzun zamandır kullanmadım) firefox'u çalıştıracak, indirmesini sınırlayacak ve saniyede 10 kilobayta kadar yükleme hızını kaldıracaktı.


Bu ipucu için teşekkürler. Nedense damlama firefox ile benim için işe yaramazdı ama google-chrome ile iyi çalıştı. (Ubuntu 9.10 64bit)
Tom

6
Damlama, TCP transferleri için standart kütüphane fonksiyonlarında bağlantı kurmak için çağrıları arayarak çalışır - eğer bir uygulama bu fonksiyonları derleme zamanında statik olarak birbirine bağladıysa, bu işe yaramaz.
David Spillett

16

Kutumun ubuntu'da 'wondershaper' adı verilen bir araç kullanarak ağdaki tüm bant genişliğini yemesini önlemenin bir yolunu buldum. Umarım diğer linux destrolarında da vardır. Linux ana bilgisayarımın aşağıdaki komutu kullanarak ne tüketebileceğini bant genişliğini sınırlandırabilirim.

sudo wondershaper eth0 1000 200

Bu, indirme sınırını 1000 kilobite ile sınırlar ve 200 kilobite yükseltir. Daha fazla bilgi / seçenek için harika adamın man sayfalarına bakın.


1
OP'nin aradığı şey tam olarak bu değil (bu, bağlantının kasten indirgenmesi değil, bant genişliğinin korunması ile ilgili) ama yine de bilmek güzel.
Aralık'ta

1
BTW: wondershaperDebian'da bir paket .
Aralık'ta

Ofiste bant genişliği doygunluğu ile ilgili sorunlar yaşadığımız bu sarsılmış b / c, araya giremediğim bir destek oldu ve bunu iki basit satırda çözebildim: # apt-get install wondershaper sonra # wondershaper eth0 9999999 500 tekrar teşekkürler!
orange80

4
Wondershaper olsa bazı matematik problemleri var gibi görünüyor. 1Mb / s yukarı / aşağı yolunu bulmak için 1024 yerine 28096'yı kullandık. Bunun neden olmasına rağmen hiçbir fikrim yok.
boatcoder

Sıfırlamak için, şunları kullanın:sudo wondershaper clear eth0
Léo Lam

8

NIST, NistNet adında bir ağ simülatörü yapar.

http://snad.ncsl.nist.gov/nistnet/ (bağlantı ölü görünüyor)

http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/

NistNet, seçtiğiniz bir haberleşme bağlantısını taklit eden bir yönlendirici yapmanızı sağlar.

En basit işlem için, iki ağ arasında iki NIC bulunan bir kutuya sahipsiniz.

Örneğin, bir uydu bağlantısı üzerinden çalışması gereken bir uygulamam vardı.

Veri, BÜYÜK gecikme süresine sahip 2Mbps'lik bir bağlantı üzerinden geçebilir. Kontrol aynı gecikme ile bir 128 kbps bağlantı üzerinden gitmek zorunda kaldı.

NistNet, hepsini 128 kb / sn hızında çalışmasına yardımcı oldu.

NistNet'i kullanarak sadece bant genişliğini değil aynı zamanda gecikmeyi de taklit edebiliyorum ve aynı zamanda yoğun ya da güvenilmez bir bağlantıyı simüle ederek sizin için paketleri de bırakacağım.

İsteğe bağlı bir bağlantıyı simüle etmek istiyorsanız, sadece bant genişliğini sınırlamayın, gecikmeyi de artırın.

Paketleri de parçalamayı unutmayın. Güzel küçük MTU'ları sahte bağlantıda ayarlayabilirsiniz.

IIRC paket jitter eklenmesi, sipariş dışı paketlerle başa çıkıp çıkamayacağınızı öğrenmenize yardımcı olur.


NistNet uzun zamandır güncellenmiyor, değil mi? IMO, şimdiye kadarki en iyi yol, tüm yeni çekirdekte bulunan netem modülü.

Bir makineyi VM kullanarak 2 NIC ile simüle edebilirsiniz.
Scott,

bağlantı çalışmıyor
hasen

Link benim için çalışıyor.
üçlü

4

Ben şahsen kullandım wondershaper ADSL bağlantısının en iyi şekilde yararlanmak - bu karşıt kullanım durumu için yazılmıştır olsa bunun için geçmişte.

Burada belirtilen diğerlerini denemek zorundayım.


3

Bant genişliğini sınırlamak için yerel olarak kurulmuş kalamar proxy'sini kullanabilirsiniz, örneğin yavaş bağlantıda bir web sayfasını test etmek için:

  1. Kalamar proxy'yi dağıtımınızdan yükleyin - Fedora'ma bu kadar kolay oldu yum install squid.

  2. Aşağıdakileri ekleyin /etc/squid/squid.conf:

    delay_pools 1
    delay_class 1 1
    delay_access 1 allow all
    delay_parameters 1 16000/16000

    Bu, bant genişliğini yaklaşık 128 kbps (16000 Bps) ile sınırlayacaktır.

  3. Kalamar başla :/etc/init.d/squid start

  4. Tarayıcınızı proxy sunucu localhostportunu kullanacak şekilde yapılandırın 3128.



3

Henüz hiç kimse söz ettirmiştir ip_relay Debian depolarındaki "iprelay" adlı,. Intercepting çağrıları kandırmanın yaptığı gibi arama yapmak yerine bir TCP proxy'si olarak çalışır ve proxy kullanabilen (örneğin bir web tarayıcısı) veya kullanıcı tanımlı bir hedef portu (telnet, ssh, ftp, curl, ve diğerleri cetera ).

Kurulumu biraz daha zor, ancak genellikle damlamanın yapamadığı durumlarda çalışıyor.


1
Bu tam olarak aradığım şey için! Kocaman teşekkürler. Aşağı kaydırıp okuduğuma sevindim.
Jay R. Wren,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.