[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Шейпер, торрент и загрузка канала.



Имею в наличии следующее
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: