Шейпер, торрент и загрузка канала.
Имею в наличии следующее
1) подключение ADSL на скорости 256/128
2) небольшую домашнюю сеть на 4 комп.
3) шлюз на Ленни, чтобы компы в инет бегали.
модем настроен в режиме бриджа. на шлюзе с помощью PPPoE поднято
интерфейс ppp0, все это бегает через eth0 и более туде ничего не
подключено. Интефейс wlan0 смотрит в домашнюю сеть (WiFi, здесь все
работает). настроен маскарадинг, интернет есть на всех компах.
также на один комп во внутренней сети DNAT'ом проброшен TCP-порт для
торрет-клиента. торрен также работает и на прием и напередачу. Но тут
возникает проблема: как только запускаю его (Торрент) все остальное
умирает. даже пинги не все идут. правда nload на шлюзе показывает
среднюю загрузку на ppp0 ~ 240kbit на прием и ~ 110 на передачу.
начитавшись LARTC попытался сделать следующее
сам шейпер
--------------------------------------------------------------------------------------------------------------------------------------------------------------
#! / BIN / Bash
DOWNLINK = 210
UPLINK = 110
tc qdisc del dev $PPP_IFACE root 2> /dev/null> /dev /null
tc qdisc del dev $PPP_IFACE ingress 2> /dev/null> /dev/null
tc qdisc add dev $PPP_IFACE root handle 1: htb default 20
tc class add dev $PPP_IFACE parent 1: classid 1:1 htb rate $(UPLINK)
kbit burst 50b
# ceil $ (UPLINK) Kbit
tc class add dev $PPP_IFACE parent 1:1 classid 1:10 htb rate $(UPLINK)
kbit burst 50b prio 1
# ceil $(UPLINK) kbit prio 1
# tc class add dev $PPP_IFACE parent 1:1 classid 1:15 htb rate $ [3 *
$UPLINK/10] kbit ceil $(UPLINK) Kbit \
# Burst 100b prio 2
tc class add dev $PPP_IFACE parent 1:1 classid 1:20 htb rate 1kbit ceil
$(UPLINK) kbit burst 50b prio 3
tc qdisc add dev $PPP_IFACE parent 1:10 Handle 10: sfq perturb 10
# tc qdisc add dev $PPP_IFACE parent 1:15 Handle 15: sfq perturb 10
tc qdisc add dev $PPP_IFACE parent 1:20 Handle 20: sfq perturb 10
tc filter add dev $PPP_IFACE parent 1:0 protocol ip prio 1 handle 0x10
fw flowid 1:10
tc filter add dev $PPP_IFACE parent 1:0 protocol ip prio 2 handle 0x15
fw flowid 1:10
tc qdisc add dev $PPP_IFACE handle ffff: ingress
tc filter add dev $PPP_IFACE parent ffff: protocol ip prio 50 u32 match
ip src \
0.0.0.0 / 0 police rate $(DOWNLINK) kbit burst 10k drop flowid: 1
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
положено в /etc/ppp/ip-up.d/shaper и вистовлено права 755
маркирую пакеты следующим образом
iptables -t magle -A POSTROUTING -o ppp0 -p icmp -j MARK - Set-mark 0x10
iptables -t magle -A POSTROUTING -o ppp0 -p icmp -j RETURN
iptables -t magle -A POSTROUTING -o ppp0 -p tcp -m tcp --tcp-flags SYN,
RST, ACK SYN -j MARK --set-mark 0x10
iptables -t magle -A POSTROUTING -o ppp0 -p tcp -m tcp --tcp-flags SYN,
RST, ACK SYN -j RETURN
iptables -t magle -A POSTROUTING -o ppp0 -p udp -m udp --dport 53 -j
MARK --set-mark 0x10
iptables -t magle -A POSTROUTING -o ppp0 -p udp -m udp --dport 53 -j RETURN
iptables -t magle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 80 -j
MARK --set-mark 0x15
iptables -t magle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 80 -j RETURN
iptables -t magle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 143 -j
MARK --set-mark 0x15
iptables -t magle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 143 -j
RETURN
iptables -t magle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 22-j MARK
--set-mark 0x15
iptables -t magle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 22 -j RETURN
iptables -t magle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 5222 -j
MARK --set-mark 0x15
iptables -t magle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 5222 -j
RETURN
после того как все это запущенное у торрента падает закачка раз этак в
десять, nload показывает скорость загрузки ppp0 ~ 25kbit, отдача
остается месте на уровне ~ 110kbit. все, что попадает в класс 1:10
начинает бегать, даже когда закачиваю файлы с веба то nload показывает
скорость загрузки ppp0 240/110kbit. все, что попадает в 1:20 - приема
почти нет, но передается в общем то без проблем. Я вот этого не понимаю.
Все что я делал касается только исходящего трафика, почему же тогда нет
входного когда исходящий трафик идет через класс 1:20?
я пробовал определить в какой момент оно умирает - после создания класса
1:20 т.е.
tc qdisc add dev ppp0 root handle 1: .... # Работает
tc class add dev ppp0 parent 1: classid 1:1 ..... # Работает
tc class add dev ppp0 parent 1:1 classid 1:10 ...... # Работает
tc class add dev ppp0 parent 1:1 classid 1:20 ....... # После этого
умирает.
если сделать
tc class del dev ppp0 classid 1: 20
вновь начинает работать.
что ему можно сделать чтоб оно грузило канал ну хотя бы на 90% в оба
стороны и при этом была бы еще и возможна интерактивная работа?
PS: я пробовал разделить трафик по трем классам - все что менее важно
(то, что маркировано 0х15) пустить в класс 1:15 - не помогло.
PPS: проверил все еще на одном шлюзе, там WIMAX, скорость 512/512 -
кортинка аналогичная, все работает хороше - торрен принимиет очень мало.
PPPS: попробовал весь низкоприоритетный трафик не пускать в клас 1:20 по
умолчанию а смаркировал его и отправил в специально созданны клас 1:19 -
картина не изменилась.
Reply to: