Linux'ta düşük bant genişliğine sahip, yüksek gecikmeli bir ağ bağlantısını simüle etme


19

Linux makinemde yüksek gecikmeli, düşük bant genişliğine sahip bir ağ bağlantısını simüle etmek istiyorum.

Sınırlı bant genişliği daha önce, örneğin burada tartışılmıştır , ancak hem bant genişliğini hem de gecikmeyi sınırlayan adresleri bulamıyorum.

Kullanarak yüksek gecikme süresi veya düşük bant genişliği elde edebilirim tc. Ancak bunları tek bir bağlantıda birleştiremedim. Özellikle, örnek oranı kontrol komut burada benim için çalışmaz:

# tc qdisc add dev lo root handle 1:0 netem delay 100ms 
# tc qdisc add dev lo parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
RTNETLINK answers: Operation not supported

Düşük bant genişliği, yüksek gecikme süresi olan bir bağlantıyı tcveya kolayca kullanılabilen başka bir aracı nasıl oluşturabilirim?


1
bağlantılarınızdan yaklaşımları birleştirmeyi denediniz mi, örn. gecikme için tc ve bant genişliği için damlama kullanın? (Sadece tc kullanmaktan daha çirkin, ama yine de işe yarayabilir;)
Andy

Bu iyi bir fikir (ve hatta damlama gecikme ekleyecektir), ancak ne yazık ki Firefox damlama altında yüklenmiyor ve test etmem gereken şey bu.
Justin L.

Yanıtlar:


15

Aha! Komutların sırasını ters çevirirsek çalışır.

tc qdisc add dev lo root handle 1: htb default 12 
tc class add dev lo parent 1:1 classid 1:12 htb rate 20kbps ceil 20kbps 
tc qdisc add dev lo parent 1:12 netem delay 1000ms 

https://lists.linux-foundation.org/pipermail/netem/2010-May/001388.html


Nedeniyle ilgilenen herkes, netem qdisc'in bir ebeveyn olamayacağı anlaşılıyor, bu yüzden hiyerarşiyi bir yaprak düğümü olarak yeniden düzenlemek zorundasınız.
Andy

3
Bant genişliği sınırının yalnızca bir yönde (giden) olduğunu unutmayın. Her iki yönde de gerçekleşmesi için ek iş yapmanız gerekir (görünüşe göre ifb'yi kullanarak). linuxfoundation.org/collaborate/workgroups/networking/…
Roger Binns

Trok grok çalışırken bu karşı karşıya geldi. İlk satır okuduğumdan 1: 0 oluşturur, ancak ikinci satır 1: 1 anlamına gelir? (muhtemelen yanlış olan benim anlayışım - ama sınıfların / qtdisklerin nasıl numaralandığını anlamaya çalışan birçok sayfaya baktım)
symcbean

1

Ücretsiz değil, ancak Charles Web Hata Ayıklama Proxy'si düşük bant genişliği yüksek gecikme bağlantılarını simüle edebilir

http://www.charlesproxy.com/documentation/proxying/throttling/


İlginçtir, aslında web hata ayıklama için yapıyorum. Ama elbette bunu para harcamadan yapmanın bir yolu olmalı. :)
Justin L.

Ne yazık ki Charles yerel trafikle çalışmıyor gibi görünüyor. Proxy üzerinden 192.168.1.1'e erişmeye çalıştığımda ölüyor.
Justin L.

2
Veya WANEm'i ücretsiz kullanın: wanem.sourceforge.net
Nathan Kidd
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.