Здравствуйте. Прошу прощения за оффтопик, но в других доступных источниках мне не удалось найти решение.
Встала такая вот задача: Есть канал 10Мбит. Мне из него надо выделить 5Мбит на определенные IP-адреса, но выделить так, чтобы у каждого пользователя из этой подсетки, было еще и "свое" ограничение скорости. Т.е. если мы возьмем пару десятков пользователей с ограничением 256Кбит, и еще десяток с ограничением 128Кбит, то общая их скорость не должна превышать 5Мбит. Да, я в курсе что будут потери и так делать не хорошо, но это надо сделать. При свободном канале (скажем 10 пользователей со "своим" ограничением в 128Кбит) скорость должна быть ограничена этим "своим" ограничением. Надеюсь объяснил понятно. Если есть вопросы - я попробую описать более подробно в деталях. В инете не смог найти примеров решения данной задачи. Как это можно реализовать? В описаниях работы tc приводятся примеры с разграничиванием полос пропускания по портам, однако сделать тоже самое, но по IP у меня не получилось. Пробовал делать так: { TC=/sbin/tc # eth0 - "внешка" # eth1 - клиенты DEV_OUT=eth0 DEV_IN=eth1 echo "clean" $TC qdisc del dev $DEV_OUT root 2> /dev/null > /dev/null $TC qdisc del dev $DEV_IN root 2> /dev/null > /dev/null echo "starting..." $TC qdisc add dev $DEV_OUT root handle 1:0 htb $TC class add dev $DEV_OUT parent 1:0 classid 1:1 htb rate 100mbit $TC class add dev $DEV_OUT parent 1:1 classid 1:10 htb rate 160kbit ceil 256kbit prio 2 $TC qdisc add dev $DEV_IN root handle 1: htb $TC class add dev $DEV_IN parent 1: classid 1:1 htb rate 100mbit $TC class add dev $DEV_IN parent 1:1 classid 1:10 htb rate 160kbit ceil 256kbit prio 2 USR_ID=100 USR_IP=10.4.0.2 USR_SPEED=160kbit $TC class add dev $DEV_OUT parent 1:10 classid 1:$USR_ID htb rate $USR_SPEED $TC qdisc add dev $DEV_OUT parent 1:$USR_ID handle $USR_ID: pfifo limit 5 $TC filter add dev $DEV_OUT protocol ip parent 1:0 prio 1 u32 match ip src $USR_IP flowid 1:$USR_ID $TC class add dev $DEV_IN parent 1:10 classid 1:$USR_ID htb rate $USR_SPEED $TC qdisc add dev $DEV_IN parent 1:$USR_ID handle $USR_ID: pfifo limit 5 $TC filter add dev $DEV_IN protocol ip parent 1:0 prio 1 u32 match ip dst $USR_IP flowid 1:$USR_ID USR_ID=101 USR_IP=10.4.0.3 USR_SPEED=160kbit $TC class add dev $DEV_OUT parent 1:10 classid 1:$USR_ID htb rate $USR_SPEED $TC qdisc add dev $DEV_OUT parent 1:$USR_ID handle $USR_ID: pfifo limit 5 $TC filter add dev $DEV_OUT protocol ip parent 1:0 prio 1 u32 match ip src $USR_IP flowid 1:$USR_ID $TC class add dev $DEV_IN parent 1:10 classid 1:$USR_ID htb rate $USR_SPEED $TC qdisc add dev $DEV_IN parent 1:$USR_ID handle $USR_ID: pfifo limit 5 $TC filter add dev $DEV_IN protocol ip parent 1:0 prio 1 u32 match ip dst $USR_IP flowid 1:$USR_ID echo "done" } На двоих по данным iptraf получается 320Кбит при полной загрузке. Данные подтвеждаются и скоростью скачаивания на компах. Загрузку обеспечивал ввиде скачивания больших файлов с двумя хостами в несколько потоков. Задача - этим 2 хостам дать "общий" канал от 160Кбит до 256кбит, но при загрузке с 1 хоста скорость должна быть 160Кбит. Если ткнете в доку/ссылку - буду благодарен. Заранее спасибо. -- Best regards, Mihail Bart-mdv- @ SolarNet IRC: irc.solarnet.ru WWW: http://www.solarnet.ru/ -- Самое главное - выглядеть совершенно естественно; но для этого нужно очень много косметики. -- Кельвин Кляйн