Traffic shaping
Гость 18 мая, 2007 - 08:07
Пытаюсь ограничить исходящий p2p-трафик, в простейшем виде примерно так:
iptables -A OUTPUT -t mangle -m ipp2p --ipp2p --debug -j CONNMARK --set-mark 0x01 tc qdisc add dev eth0 root handle 1: htb default 10 tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10mbit ceil 100mbit tc class add dev eth0 parent 1:1 classid 1:20 htb rate 128kbit ceil 256kbit tc filter add dev eth0 protocol ip parent 1:0 prio 2 handle 1 fw classid 1:20
- и ничего не получается. Где я не прав?
»
- Для комментирования войдите или зарегистрируйтесь
iptables -A PREROUTING -t
Или вот еще хинт интересный:
http://parallel.imm.uran.ru/stud/MarshrutizacijaIOgranichenieTrafika
А вообще гугл в помощь.
Попробовал, но
Попробовал, но никакого эффекта, к сожалению.
За ссылку спасибо, буду изучать.
А по этому
А по этому правилу iptables пакеты вообще проходят?
iptables -t mangle -L -n -v
вот: iptables -t mangle
вот:
iptables -t mangle -L -n -v
Chain PREROUTING (policy ACCEPT 670K packets, 1483M bytes)
pkts bytes target prot opt in out source destination
796K 1640M CONNMARK tcp -- * * 0.0.0.0/0 0.0.0.0/0 CONNMARK restore
127K 157M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 MARK match !0x0
231 27839 MARK tcp -- * * 0.0.0.0/0 0.0.0.0/0 ipp2p v0.8.2 --ipp2p MARK set 0x1
231 27839 CONNMARK tcp -- * * 0.0.0.0/0 0.0.0.0/0 MARK match 0x1 CONNMARK save
Chain INPUT (policy ACCEPT 797K packets, 1640M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 781K packets, 1510M bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 781K packets, 1510M bytes)
pkts bytes target prot opt in out source destination
Нет, уберите
Нет, уберите правило из PREROUTING. Вообще у вас всё было правильно изначально в первом посте, кроме действия iptables: вместо CONNMARK нужно было использовать MARK.
Это с чего бы MARK
Это с чего бы MARK использовать? Чтобы по первому пакету только резать? Представляю себе ограничение скорости до 256Кбит 1го пакета, который <=1500 байт...
Вообще видно что p2p траффик отлавливается какой-то:
127K 157M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 MARK match !0x0
157Mb было.
Значит iproute2 фильтр не цепляет в нужный класс. Покажи желательно еще
tc -d -s class show dev eth0
.Соб-на у меня подозрение что tc не подцепляет CONNMARK. Тут уже можно выкрутиться с помощью цели CLASSIFY (по ссылке что я давал выше так и сделано):
Вы
Вы заблуждаетесь насчёт действия MARK. Оно применяется к каждому пакету в потоке.
Действие MARK
Действие MARK применяется к тому пакету, который попадает под правило iptables. Модуль правила для p2p сетей может определить p2p соединения только по первому пакету, где присутствует заголовок присущий p2p соединению. Все остальные пакеты будут выглядеть как мусор. Для этого и нужно действие CONNMARK - чтобы нумеровать не только найденый первый пакет p2p, но и соответсвенно все следующие за ним на данном соединении.
Учите мат. часть, тут ведь правило не по порту отлавливает например.
Да,
Да, действительно. Я то у себя отлавливал пакеты в iptables совсем другим правилом. Спасибо за объяснение.