Перейти к содержимому
Калькуляторы

Проблемы с 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 исходящая. При попытке что-либо скачать используется весь доступный канал. В чем может быть проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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.

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем Linozh

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

# 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мда....

 

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 - это прошлый век....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

...

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

Может тогда подскажете замену?
Изменено пользователем Linozh

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может тогда подскажете замену?<br />

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

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

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

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

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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 нужно менять на ноль? Заранее спасибо.

Изменено пользователем Linozh

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Даже 2 :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.