шейпер

Тут еще одна проблема с торрентами, они создают много потоков, полоса полосой, а потоков тьма, юзер на 64Кбит/с может создать 200 потоков. Там есть какая то дисциплина бесклассовая, которая эти потоки дропает рандомно, и кажется она может примерно поделить потоки между юзерами поровну.. хотя я уже не помню на етот счет, может там надо какой то патч применять или что-то такое, в общем с потоками не все так сладко. 200 потоков и инет у всех остальных начнет работать как через “одно место”..

Вот почитайте тут про ESFQ: http://pc-inform.ru/articles/Povest_o_L … fikom.html htb - она для классов, а на “концы” можно и нужно вешать бесклассовые дисциплины, например эту. А так как ESFQ в ядре нет (надо патчить), но оказывается есть какой то аналог-внешний классификатор для SFQ под именем SFQ flow classifier, то погуглите на эту тему.
http://www.wlug.org.nz/TrafficControl
http://www.linuxquestions.org/questions … rd-718763/
теперь надо реализовать :)
Когда сделаете - покажите как, было бы очень интересно посмотреть, самому интересно про етот flow classifier.. =)
#!/bin/bash
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
TC="/usr/sbin/tc"
IP="/usr/sbin/iptables"
$IP -t mangle -F
#wifi
$TC qdisc del dev wlan0 root
$TC qdisc add dev wlan0 root handle 1 htb default 2 r2q 10
$TC class add dev wlan0 parent 1: classid 1:1 htb rate 3Mbit
#default class
$TC class add dev wlan0 parent 1:1 classid 1:2 htb rate 128Kbit prio 10
#450_Сергей
$TC class add dev wlan0 parent 1:1 classid 1:3 htb rate 512Kbit prio 3
$TC class add dev wlan0 parent 1:3 classid 1:4 htb rate 512Kbit prio 1
$TC class add dev wlan0 parent 1:3 classid 1:5 htb rate 512Kbit prio 2
$TC class add dev wlan0 parent 1:3 classid 1:6 htb rate 512Kbit prio 3
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 22 --destination 192.168.2.111 -j MARK --set-mark 2
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 22 --destination 192.168.2.111 -j RETURN
$IP -t mangle -A FORWARD -p icmp --destination 192.168.2.111 -j MARK --set-mark 2
$IP -t mangle -A FORWARD -p icmp --destination 192.168.2.111 -j RETURN
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 80 --destination 192.168.2.111 -j MARK --set-mark 3
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 80 --destination 192.168.2.111 -j RETURN
$IP -t mangle -A FORWARD --destination 192.168.2.111 -j MARK --set-mark 4
$IP -t mangle -A FORWARD --destination 192.168.2.111 -j RETURN
$TC qdisc add dev wlan0 parent 1:4 handle 4 sfq perturb 10
$TC qdisc add dev wlan0 parent 1:5 handle 5 sfq perturb 10
$TC qdisc add dev wlan0 parent 1:6 handle 6 sfq perturb 10
$TC filter add dev wlan0 parent 1:0 prio 1 handle 2 protocol all fw classid 1:4
$TC filter add dev wlan0 parent 1:0 prio 2 handle 3 protocol all fw classid 1:5
$TC filter add dev wlan0 parent 1:0 prio 3 handle 4 protocol all fw classid 1:6
#450_Азат
$TC class add dev wlan0 parent 1:1 classid 1:7 htb rate 512Kbit prio 3
$TC class add dev wlan0 parent 1:7 classid 1:8 htb rate 512Kbit prio 1
$TC class add dev wlan0 parent 1:7 classid 1:9 htb rate 512Kbit prio 2
$TC class add dev wlan0 parent 1:7 classid 1:10 htb rate 512Kbit prio 3
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 22 --destination 192.168.2.2 -j MARK --set-mark 5
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 22 --destination 192.168.2.2 -j RETURN
$IP -t mangle -A FORWARD -p icmp --destination 192.168.2.2 -j MARK --set-mark 5
$IP -t mangle -A FORWARD -p icmp --destination 192.168.2.2 -j RETURN
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 80 --destination 192.168.2.2 -j MARK --set-mark 6
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 80 --destination 192.168.2.2 -j RETURN
$IP -t mangle -A FORWARD --destination 192.168.2.2 -j MARK --set-mark 7
$IP -t mangle -A FORWARD --destination 192.168.2.2 -j RETURN
$TC qdisc add dev wlan0 parent 1:8 handle 8 sfq perturb 10
$TC qdisc add dev wlan0 parent 1:9 handle 9 sfq perturb 10
$TC qdisc add dev wlan0 parent 1:10 handle 10 sfq perturb 10
$TC filter add dev wlan0 parent 1:0 prio 1 handle 5 protocol all fw classid 1:8
$TC filter add dev wlan0 parent 1:0 prio 2 handle 6 protocol all fw classid 1:9
$TC filter add dev wlan0 parent 1:0 prio 3 handle 7 protocol all fw classid 1:10
#eth1
$TC qdisc del dev eth1 root
$TC qdisc add dev eth1 root handle 1 htb default 2 r2q 10
$TC class add dev eth1 parent 1: classid 1:1 htb rate 10Mbit
#default class
$TC class add dev eth1 parent 1:1 classid 1:2 htb rate 128Kbit prio 10
#450_Тимур
$TC class add dev eth1 parent 1:1 classid 1:3 htb rate 512Kbit prio 3
$TC class add dev eth1 parent 1:3 classid 1:4 htb rate 512Kbit prio 1
$TC class add dev eth1 parent 1:3 classid 1:5 htb rate 512Kbit prio 2
$TC class add dev eth1 parent 1:3 classid 1:6 htb rate 512Kbit prio 3
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 22 --destination 192.168.0.200 -j MARK --set-mark 8
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 22 --destination 192.168.0.200 -j RETURN
$IP -t mangle -A FORWARD -p icmp --destination 192.168.0.200 -j MARK --set-mark 8
$IP -t mangle -A FORWARD -p icmp --destination 192.168.0.200 -j RETURN
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 80 --destination 192.168.0.200 -j MARK --set-mark 9
$IP -t mangle -A FORWARD -p tcp -m tcp --sport 80 --destination 192.168.0.200 -j RETURN
$IP -t mangle -A FORWARD --destination 192.168.0.200 -j MARK --set-mark 10
$IP -t mangle -A FORWARD --destination 192.168.0.200 -j RETURN
$TC qdisc add dev eth1 parent 1:4 handle 4 sfq perturb 10
$TC qdisc add dev eth1 parent 1:5 handle 5 sfq perturb 10
$TC qdisc add dev eth1 parent 1:6 handle 6 sfq perturb 10
$TC filter add dev eth1 parent 1:0 prio 1 handle 8 protocol all fw classid 1:4
$TC filter add dev eth1 parent 1:0 prio 2 handle 9 protocol all fw classid 1:5
$TC filter add dev eth1 parent 1:0 prio 3 handle 10 protocol all fw classid 1:6
вот что-то типа такого, это начало. дальше по аналогии добавлю пользователей. попытался реализовать тарифы. и вопрос, в какую сторону стоит копать/оптимизировать? и как пинги пропустить первыми? почему-то они страшно увеличились.
посовещался я с тов. gard`ом и остановился пока на таком варианте:
#!/bin/bash
TC="/usr/sbin/tc"
IP="/usr/sbin/iptables"
RATE=100
CEIL=500
$IP -t mangle -F
#wifi
$TC qdisc del dev wlan0 root
$TC qdisc add dev wlan0 root handle 1 htb default 2 r2q 10
$TC class add dev wlan0 parent 1: classid 1:1 htb rate 5Mbit
#default class
$TC class add dev wlan0 parent 1:1 classid 1:2 htb rate 20Kbit prio 10
#local class
$TC class add dev wlan0 parent 1:1 classid 1:3 htb rate 2Mbit prio 1
$TC qdisc add dev wlan0 parent 1:3 handle 3 sfq perturb 10
$TC filter add dev wlan0 protocol ip parent 1:0 prio 10 u32 match ip dst 192.168.2.0/24 match ip src 192.168.0.0/24 flowid 1:3
#450_Сергей
$TC class add dev wlan0 parent 1:1 classid 1:4 htb rate ${RATE}Kbit ceil ${CEIL}Kbit prio 2
$TC qdisc add dev wlan0 parent 1:4 handle 4 sfq perturb 10
$TC filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.111 flowid 1:4
#450_Азат
$TC class add dev wlan0 parent 1:1 classid 1:5 htb rate ${RATE}Kbit ceil ${CEIL}Kbit prio 2
$TC qdisc add dev wlan0 parent 1:5 handle 5 sfq perturb 10
$TC filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.2 flowid 1:5
#eth1
$TC qdisc del dev eth1 root
$TC qdisc add dev eth1 root handle 1 htb default 2 r2q 10
$TC class add dev eth1 parent 1: classid 1:1 htb rate 5Mbit
#local class
$TC class add dev eth1 parent 1:1 classid 1:3 htb rate 2Mbit prio 1
$TC qdisc add dev eth1 parent 1:3 handle 3 sfq perturb 10
$TC filter add dev wlan0 protocol ip parent 1:0 prio 10 u32 match ip dst 192.168.0.0/24 match ip src 192.168.2.0/24 flowid 1:3
#450_Тимур
$TC class add dev eth1 parent 1:1 classid 1:4 htb rate ${RATE}Kbit ceil ${CEIL}Kbit prio 2
$TC qdisc add dev eth1 parent 1:4 handle 4 sfq perturb 10
$TC filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.200 flowid 1:4
#441_Vladimir
$TC class add dev eth1 parent 1:1 classid 1:5 htb rate ${RATE}Kbit ceil ${CEIL}Kbit prio 3
$TC qdisc add dev eth1 parent 1:5 handle 5 sfq perturb 10
$TC filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.0.53 flowid 1:5
подниму тему :)
в листах дерева htb можно применять дисциплину tbf? везде о ней говориться применительно к целому интерфейсу.
и еще вопрос, я в результате всех экспериментов и раздумий пришел к выводу, что мне в принципе пофиг на то, как юзер использует свой канал, те в принципе мне будет достаточно построить одноуровневое дерево с равноправными классами, и на каждый класс повесить что-нибудь типа tbf, который тупо порежет скорость. что мне для этого лучше применить?
не знаю аткого приема,каюсь, на бсд были попытки сделать шейпер средсвами фаервола(pf). Также был интересен вариант не бсд и вроде iptables вполне с етим справлялся судя по статьям…и вроде там особо голова не кружилась…хотя опять же , особо линкусом в тот момент не интересовался.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
 
Зарегистрироваться или войдите чтобы оставить сообщение.