URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 80942
[ Назад ]

Исходное сообщение
"Разделение канала в Linux"

Отправлено hyp , 27-Июн-08 20:28 
Всем здрасвуйте!
Задача:
Есть роутер на базе Linux,
к eth0(10.10.0.1) подключен свич через который в инет ходит две клиентских машины(10.10.0.2 и 10.10.0.5)
к eth1(192.168.1.2) подключен ADSL(192.168.1.1) модем который тоже настроен роутером
Нужно между клиентами разделить канал поровну.

При решении задачи пробовал использовать tc из пакета iproute2, утилита мне не знакома и показалась более тяжелой для освоения чем например iptables
Все советы которые нашел гугл делят канал для разных портов но не клиентов, поэтому самостоятельно решить не удалось.
Буду благодарен за советы.


Содержание

Сообщения в этом обсуждении
"Разделение канала в Linux"
Отправлено hertz , 28-Июн-08 15:01 
tc qdisc add dev eth1 root handle 1: htb default 30
tc class add dev eth1 parent 1: classid 1:1 htb rate 8mbit ceil 8mbit
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 2mbit ceil 8mbit
tc class add dev eth1 parent 1:1 classid 1:20 htb rate 2mbit ceil 8mbit
tc class add dev eth1 parent 1:1 classid 1:30 htb rate 4mbit ceil 8mbit

tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev eth1 parent 1:30 handle 30: sfq perturb 10

tc filter add dev eth1 parent 1: protocol ip prio 1 u32 match ip src 10.10.0.2 flowid 1:10
tc filter add dev eth1 parent 1: protocol ip prio 2 u32 match ip src 10.10.0.5 flowid 1:20

писал по памяти
в результате будет гарантированная (ИСХОДЯЩАЯ!!!) скорость в 2 мбита для обоих клиентов и 4 мбита для всех прочих. при этом, если полоса по любому из классов простаивает (не используется на полную), то остатки могут быть перераспределены между другими классами (пропорционально rate)


"Разделение канала в Linux"
Отправлено hyp , 28-Июн-08 20:29 
если я все правильно понял то если я добавлю
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dst 10.10.0.2 flowid 1:10
tc filter add dev eth0 parent 1: protocol ip prio 2 u32 match ip dst 10.10.0.5 flowid 1:20

то тоже самое произойдет с входящим. Так?


"Разделение канала в Linux"
Отправлено heap , 03-Июл-08 11:39 
>если я все правильно понял то если я добавлю
>tc filter add dev eth0 parent 1: protocol ip prio 1 u32
>match ip dst 10.10.0.2 flowid 1:10
>tc filter add dev eth0 parent 1: protocol ip prio 2 u32
>match ip dst 10.10.0.5 flowid 1:20
>
>то тоже самое произойдет с входящим. Так?

Ниче не понял - судя по всему eth1 смотрит наружу и я так понимаю действует NAT. Тогда правила касательно eth1 не заматчат ни одного пакета, так как в них уже будет измененный ip src. Зато как вариант поставить в iptables на эти пакеты метку, и матчить ее в фильтре. А на eth0 можно и по айпи.


"Разделение канала в Linux"
Отправлено eugen , 29-Июн-08 10:42 
>Задача:
>Есть роутер на базе Linux,
>Нужно между клиентами разделить канал поровну.

поставь htb.init - это скрипт-обертка над tc и ip - http://sourceforge.net/projects/htbinit/.
все легко и просто, дока и примеры в начале самого скрипта.