Zdaję sobie sprawę, że wiele podobnych pytań zostało już zadanych, ale jak dotąd nie znalazłem rozwiązania mojego problemu.
Mam wirtualny serwer linuksowy (z systemem Debian Squeeze), którego używam do testowania prędkości stron internetowych w celu pomiaru wzrostu i zmniejszenia czasu ładowania tych stron. Próbuję ograniczyć przepustowość i opóźnienie tego serwera, aby zbliżyć się do rzeczywistych czasów ładowania na stronach internetowych, ale jak dotąd nie udało się.
To, czego konkretnie chcę, to:
- Aby ustawić opóźnienie przychodzące i wychodzące na 50 ms.
- Aby ustawić limit przepustowości przychodzącej 512 kb / s.
- Aby ustawić limit przepustowości wychodzącej na 4096 kb / s.
Czytałem o netemie i korzystałem z tc
polecenia, ale wciąż wszystko jest trochę powyżej mojej głowy. Udało mi się zebrać to polecenie, aby kontrolować opóźnienie, które wydaje się działać, ale nie jestem nawet pewien, czy to obsługuje tylko wychodzące opóźnienie, czy oba:
tc qdisc add dev eth0 root netem delay 50ms
Jakiś guru sieci, który może mi pomóc?
Edytować:
Po dalszych badaniach dotarłem w połowie drogi do celu, używając tego polecenia cały ruch wychodzący zachowuje się tak, jak chcę:
tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000
Nadal jednak nie byłem w stanie prawidłowo ograniczyć ruchu przychodzącego. Nauczyłem się, że powinienem używać „filtra Ingress Policer”. Próbowałem to zrobić za pomocą poniższego polecenia, bawiąc się różnymi wartościami, ale bez powodzenia.
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match ip src 0.0.0.0/0 flowid :1 police rate 1.0mbit mtu 10000 burst 10k drop
Polecenie wpływa jednak na szerokość pasma, powyższe wartości powodują, że prędkość zaczyna się od 2 MB / s, a wraz z postępem transferu powoli spada do około 80-90 kB / s, które osiąga po około 30 sekundach transferu.
Jakieś pomysły na to, co robię źle?
netem delay 50ms
nie ogranicza opóźnienia. Zwiększa opóźnienie w50ms
porównaniu z tym, czym byłby inaczej.