Na podstawie tej sekcji Linux Advanced Routing & Traffic Control HOWTO nie mogę tc
ograniczyć prędkości sieci na moim komputerze.
Router to modem Motorola SurfBoard z kilkoma możliwościami routingu i zaporą ogniową. Maszyna, którą chcę ograniczyć ruch, to 192.168.0.5 , a także skrypt jest uruchamiany z 192.168.0.5 .
Oto moja adaptacja poleceń z linku powyżej dla /etc/NetworkManager/dispatcher.d/
:
#!/bin/sh -eu
# clear any previous queuing disciplines (qdisc)
tc qdisc del dev wlan0 root 2>/dev/null ||:
# add a cbq qdisc; see `man tc-cbq' for details
if [ $2 = up ]; then
# set to a 3mbit interface for more precise calculations
tc qdisc add dev wlan0 root handle 1: cbq avpkt 1000 \
bandwidth 3mbit
# leave 30KB (240kbps) to other machines in the network
tc class add dev wlan0 parent 1: classid 1:1 cbq \
rate 2832kbit allot 1500 prio 5 bounded isolated
# redirect all traffic on 192.168.0.5 to the previous class
tc filter add dev wlan0 parent 1: protocol ip prio 16 \
u32 match ip dst 192.168.0.5 flowid 1:1
# change the hashing algorithm every 10s to avoid collisions
tc qdisc add dev wlan0 parent 1:1 sfq perturb 10
fi
Problem polega na tym, że próbowałem ustawić 2832kbit na bardzo małe wartości do testowania (jak 16kbit ), ale nadal mogę przeglądać internet z dużą prędkością. Problem nie istnieje NetworkManager
, ponieważ testuję skrypt ręcznie.
EDYCJA: Przekonałem się, że zmieniając dst 192.168.0.5
na src 192.168.0.5
, prędkość wysyłania jest niezawodnie ograniczona, ale nadal nie zastanawiałem się, jak uzyskać szybkość pobierania, która jest dla mnie najważniejsza.
wondershaper
faktycznie działa na moim komputerze, ale w rzeczywistości wyrzuca kilka błędów, a także robi więcej niż to, czego potrzebuję (ustalanie priorytetów itp.). W przypadku łącza w dół wondershaper
używa handle ffff:
, ale nadal nie jestem pewien, jak to działa.
tc qdisc add dev wlan0 handle ffff: ingress; tc filter add dev wlan0 parent ffff: protocol ip prio 50 u32 match ip dst 192.168.0.5 police rate 200kbps burst 10k drop flowid :1
. Problem polega na tym, że jest bardzo zawodny, powoduje niestabilne prędkości pobierania (jeśli ustawiony na 200, pobiera z ~ 80-120). Jak wspomniano w moim pytaniu, prędkość wysyłania jest naprawdę ograniczona do pożądanej wartości.