Symulowanie połączenia sieciowego o niskiej przepustowości i dużym opóźnieniu w systemie Linux

19

Chciałbym zasymulować połączenie sieciowe o dużym opóźnieniu i niskiej przepustowości na moim komputerze z systemem Linux.

Ograniczanie przepustowości zostało już wcześniej omówione, np. Tutaj , ale nie mogę znaleźć żadnych postów, które dotyczą ograniczenia zarówno przepustowości, jak i opóźnień.

Mogę uzyskać zarówno duże opóźnienie, jak i niską przepustowość tc. Ale nie byłem w stanie połączyć ich w jedno połączenie. W szczególności przykładowy skrypt kontroli szybkości tutaj nie działa dla mnie:

# 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

Jak mogę utworzyć połączenie o niskiej przepustowości i dużym opóźnieniu, za pomocą tclub innego łatwo dostępnego narzędzia?

Justin L.
źródło
1
próbowałeś połączyć podejścia z linków, np. użyć tc do opóźnienia i spływać do przepustowości? (To brzydsze niż zwykłe używanie tc, ale może nadal działać;)
Andy
To dobry pomysł (i rzeczywiście, strumienie dodają nawet opóźnienia), ale niestety Firefox nie ładuje się pod strumieniem i to muszę przetestować.
Justin L.,

Odpowiedzi:

15

Aha! Działa, jeśli odwrócimy kolejność poleceń.

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

Justin L.
źródło
Każdy zainteresowany, dlaczego, wydaje się, że qdisc netem nie może być rodzicem, więc musisz zmienić hierarchię, aby mieć go jako węzeł liścia.
Andy
3
Należy pamiętać, że limit przepustowości jest tylko w jednym kierunku (wychodzący). Musisz wykonać dodatkową pracę, aby stało się to w obu kierunkach (najwyraźniej używając ifb). linuxfoundation.org/collaborate/workgroups/networking/…
Roger Binns
Natknąłem się na to podczas próby grok tc. Z tego co przeczytałem pierwszy wiersz tworzy 1: 0, ale drugi wiersz odnosi się do 1: 1? (chyba moje zrozumienie co jest nie tak - ale ja spojrzał na wielu stronach próbują zrozumieć, jak ćwiczenia / qtdiscs są numerowane)
symcbean
1

To nie jest darmowe, ale Charles Web Debugger Proxy może symulować połączenia o niskiej przepustowości i duże opóźnienia

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

Matthew Lock
źródło
Co ciekawe, robię to w celu debugowania sieci. Ale z pewnością musi istnieć sposób na to, aby nie wydawać pieniędzy. :)
Justin L.,
Niestety Charles wydaje się nie współpracować z lokalnym ruchem drogowym. Umiera, gdy próbuję uzyskać dostęp do 192.168.1.1 przez proxy.
Justin L.,
2
Lub po prostu skorzystaj z WANEm za darmo: wanem.sourceforge.net
Nathan Kidd