Na podstawie tej sekcji Linux Advanced Routing & Traffic Control HOWTO nie mogę tcograniczyć 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.5na 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.
wondershaperfaktycznie 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ół wondershaperuż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.