Jump to content
Калькуляторы

Проблемы с dummynet и ipfw

Добрый день. Втрорые сутки мучаюсь с ipfw и все безрезультатно. Задача поделить канал.

Добавил в /etc/rc.conf следующее:

firewall_enable="YES"
firewall_script="/etc/ipfw.rules"
firewall_logging="yes"
dummynet_enable="yes"

В /etc/ipfw.rules прописал:

ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush
ipfw table 1 add 192.168.1.2 #User1
ipfw table 1 add 192.168.1.7 #User2
ipfw pipe 102 config mask src-ip 0x000000ff bw 64Kbit/s queue 50
ipfw add pipe 102 all from "table(1)" to any via re0
ipfw pipe 103 config mask dst-ip 0x000000ff bw 64Kbit/s queue 50
ipfw add pipe 103 all from any to "table(1)" via re0

Канал 300Kbit/s (правда реально не бывает больше 220). По тестам http://www.speedtest.net/ показывает 215Kbit/s входящая и 15Kbit исходящая. При попытке что-либо скачать используется весь доступный канал. В чем может быть проблема?

Share this post


Link to post
Share on other sites

попробуй поменять

ipfw add pipe 102 all from "table(1)" to any via re0

ipfw add pipe 103 all from any to "table(1)" via re0

 

на

ipfw add pipe 102 all from "table(1)" to any in

ipfw add pipe 103 all from any to "table(1)" out

Share this post


Link to post
Share on other sites

Попробовал. Совсем перестал пользователей в инет пускать.

Share this post


Link to post
Share on other sites

Проблема в том, что нужно правильно указывать направление. Должно быть так:

ipfw add pipe 102 ip from table(1) to any out via re0

ipfw add pipe 103 ip from any to table(1) in via re0

 

где re0 -- интерфейс, смотрящий во внешнюю сеть. Кстати говоря, какая задача решается? Поделить канал поровну? Тогда проще сделать один pipe на все 300 Кбит с динамическими queue. Для этих целей также можно использовать ALTQ.

Edited by photon

Share this post


Link to post
Share on other sites

Я дома пытаюсь откатать схему для использования ее в рабочей сети (Поэтому всего 2 пользователя и такой маленький канал). Смысл в следующем. Есть сервер у которого шлюз в интернет маршрутизатор Cisco (на циске работает NAT). На сервере одна сетевая карта re0. Я хочу с помощью ipfw поделить канал. Это вообще реально или я вообще зря трачу время?ОС: FreeBSD 7.1

Edited by Linozh

Share this post


Link to post
Share on other sites
# ipfw pipe show
00102:  64.000 Kbit/s    0 ms   50 sl. 2 queues (64 buckets) droptail
    mask: 0x00 0x000000ff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  4 ip           0.0.0.2/0             0.0.0.0/0     1930   685384  0    0   0
60 ip         0.0.0.254/0             0.0.0.0/0       62     8764  1  100   0
00103:  64.000 Kbit/s    0 ms   50 sl. 1 queues (64 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x000000ff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
62 ip           0.0.0.0/0           0.0.0.254/0        2      244  0    0   0

Share this post


Link to post
Share on other sites

Мда....

 

src-ip 0x000000ff - это полный писец.

 

man ipfw до полного просветления.

 

Раздел TRAFFIC SHAPER (DUMMYNET) CONFIGURATION

 

NATа нету у тебя на этой машине ? re0 это внешний интерфейс ?

 

ipfw table 1 add 192.168.1.2 #User1
ipfw table 1 add 192.168.1.7 #User2
ipfw pipe 102 config bw 64Kbit/s 
ipfw queue 102 config pipe 102 src-ip mask 0xffffffff

ipfw pipe 103 config bw 64Kbit/s 
ipfw queue 103 config pipe 103 dst-ip mask 0xffffffff

ipfw add queue 102 ip from "table(1)" to any out xmit re0
ipfw add queue 103 all from any to "table(1)" in recv re0

 

впрочем dummynet - это прошлый век....

Share this post


Link to post
Share on other sites

На этой машине один интерфейс re0. На ней указан шлюз по умолчанию 192.168.0.254 (адрес маршрутизатора Cisco, на котором работает NAT)

...

впрочем dummynet - это прошлый век....

Может тогда подскажете замену?
Edited by Linozh

Share this post


Link to post
Share on other sites
Может тогда подскажете замену?<br />

Все зависит от задачи и требуемой мощности.

У тебя странная задача с равномерным распределением канала ;)

Проблемы начинаються с ростом загрузки....

Вот рядом хорошая тема про тюнинг dummynet http://forum.nag.ru/forum/index.php?showtopic=49336

Хотя судя по твоим ошибкам тебе надо сначала плотно в теме разобраться, а потом тюнинговать )))

 

У меня задача - ограничить каждого юзера, так что я использую ng_car, устанавливаемый через mpd4.

 

Share this post


Link to post
Share on other sites

Опишу задачу несколько иначе. Есть сеть, шлюз в интернет - маршрутизатор Cisco (на маршрутизаторе работает NAT). Канал 4Мбит/с. Задача: раздавать интернет разным группам пользователей с разной скоростью.Есть незадействованый сервер с одной сетевой картой (можно поставить еще если будет необходимо). Подскажите пожалуйста пример для решения поставленой задачи.

Share this post


Link to post
Share on other sites
Опишу задачу несколько иначе. Есть сеть, шлюз в интернет - маршрутизатор Cisco (на маршрутизаторе работает NAT). Канал 4Мбит/с. Задача: раздавать интернет разным группам пользователей с разной скоростью.Есть незадействованый сервер с одной сетевой картой (можно поставить еще если будет необходимо). Подскажите пожалуйста пример для решения поставленой задачи.

По две трубы на группу, и никаких проблем. На кой там динамика ?

Share this post


Link to post
Share on other sites

LuckySB Ваш пример не заработал и его пришлось немного переделать. Сделал так:

ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush

ipfw table 1 add 192.168.1.2 #User1
ipfw table 1 add 192.168.1.7 #User2
ipfw pipe 102 config bw 64Kbit/s
ipfw queue 102 config mask src-ip 0xffffffff pipe 102

ipfw pipe 103 config bw 64Kbit/s
ipfw queue 103 config mask dst-ip 0xffffffff pipe 103

ipfw add queue 102 ip from "table(1)" to any out xmit re0
ipfw add queue 103 all from any to "table(1)" in recv re0

Теперь исходящую режет отлично получается 59Kbit/s по тестам http://www.speedtest.net/ Как теперь добиться чтобы и входящую тоже ограничивал? Значение net.inet.ip.fw.one_pass нужно менять на ноль? Заранее спасибо.

Edited by Linozh

Share this post


Link to post
Share on other sites

Решил таки эту задачу. Но пришлось разориться еще на одну сетевую карту.

Share this post


Link to post
Share on other sites

 

Ажно целый доллар стоит... голодать теперь придется.

Share this post


Link to post
Share on other sites

Ажно целый доллар стоит... голодать теперь придется.

Даже 2 :)

Share this post


Link to post
Share on other sites
По две трубы на группу, и никаких проблем. На кой там динамика ?

У меня в одной небольшой трубе tcp-потоки не распределялись поровну. Ситуация был а - кто раньше встал - тот и качает.

А с динамическими очередями все красиво и мгновенно делиться .

 

Решил таки эту задачу. Но пришлось разориться еще на одну сетевую карту.

Т.е. эта машина у тебя сбоку стояла ? мдааа. Учи матчасть про роутинг

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this