Страница 1 из 1

FreeBSD 7.0, ALTQ c HFSC на два локальных интерфейса

Добавлено: 2008-08-07 1:43:10
mkutsevol
Доброго времени суток!
Учитался манами до упора, но не помогло :(
Задача:Есть инет через VPN (клиент - MPD5) + две сетевухи rl0 и rl1 (10.0.0.0/24 и 10.0.1.0/24). Надо мне сделать шейпер с шедулером HFSC так, чтобы он шейпил один входящий канал на две сетевухи, типа как в dummynet - там же определяется pipe и в него все пхнется, а у пайпа есть ширина. А тут же очереди определяются для каждого физического интерфейса отдельно, да и шейпит он исходящий с интерфейсов траф. Запутался я с ним. Выручите!

Re: FreeBSD 7.0, ALTQ c HFSC на два локальных интерфейса

Добавлено: 2008-08-07 15:30:03
freeman
Может начнёшь с ALTQ c CBQ ? А то про HFSC мало примеров в нете, да и сложнее он для понимания новичкам.

Re: FreeBSD 7.0, ALTQ c HFSC на два локальных интерфейса

Добавлено: 2008-08-08 20:35:41
mkutsevol
Да моя проблема состоит не в шедулере, пусть будет CBQ.
Суть в том, что есть 2 локалки (физических интерфейса) и один канал из инета.
Нужно шейпить инет так, чтобы одина из локалок (любая) могла "доедать" канал инета если другая его недоиспользует (borrow) но borrow работает только в дереве, а дерево на очередь, а очередь на отдельный интерфейс, а у меня их два. Я подумываю можно ли запихать траф в виртуальный интерфейс (ничего пока не нашел пока такого), отшейпить его, а потом разорвать на два физических интерфейса.

Re: FreeBSD 7.0, ALTQ c HFSC на два локальных интерфейса

Добавлено: 2008-08-09 20:18:55
paradox
а кинте ваш конфиг по pf & altq

посмотреть

возможно очередь стоит делать не на локальных интерфейсах
а на инетном интерфейсе
по апиадрессам локалки

Re: FreeBSD 7.0, ALTQ c HFSC на два локальных интерфейса

Добавлено: 2008-08-10 22:45:53
BonDit

Код: Выделить всё

vpn_if  = "ng0"
lan_if  = "rl0"

bondit_net = "192.168.3.0/24"

server1="192.168.3.2"
server2="192.168.3.3"

#ALTQ

altq on $vpn_if cbq bandwidth 200Kb queue { bondit_out, bondik_out }

queue bondit_out  bandwidth 100Kb cbq(ecn borrow)
queue bondik_out  bandwidth 100Kb cbq(default ecn)

altq on $lan_if cbq bandwidth 200Kb queue { bondit_in, bondik_in }

queue bondit_in   bandwidth 100Kb cbq(ecn borrow)
queue bondik_in   bandwidth 100Kb cbq(default ecn)

#nat
nat on $vpn_if proto { tcp, udp icmp } from $bondit_net to any -> ($vpn_if)

# default deny
block on { $vpn_if, $lan_if } all

# правила фильтрации исходящего трафика на интерфейсе ng0
pass out on $vpn_if from $bondit_net to any keep state
pass out on $vpn_if from ($vpn_if) to any keep state queue bondit_out
pass out on $vpn_if from ($vpn_if) to any keep state queue bondik_out

# правила фильтрации входящего трафика на интерфейсе rl0
pass in on $lan_if from $bondit_net to any keep state
pass in on $lan_if from $server1 to any queue bondit_in
pass in on $lan_if from $server2 to any queue bondik_in

# правила фильтрации исходящего трафика на интерфейсе rl0
pass out on $lan_if from $lan_if to $bondit_net
Работоспособность очередей проверял так pfctl -vv -s queue и pftop -v queue.

Данная конфигурация у меня работает.

Re: FreeBSD 7.0, ALTQ c HFSC на два локальных интерфейса

Добавлено: 2008-08-12 13:47:32
mkutsevol
Спасибо, разобрался.
Уставший совсем маны читал, и решил, что шейпить можно только исходящий из физического интерфейса траф.