Перейти до

шейпер


Рекомендованные сообщения

логично в принципе....

 

Представь ты выходишь из метро. Если работает 4 двери то ты задерживаешься на 5 секунд при выходе. Если 1 дверь то как минимум на 4*5=20 секунд..... вот и все...

 

Одним словом - Очередь она и в африке очередь :)

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

а как же тогда сделать так, чтобы канал динамически шейпился и небыло такого огромного пинга? может компутеры нужно пускать по отдельным очередям???

 

${fwcmd} pipe 1 config bw 1024Kbit/s queue 5

${fwcmd} pipe 2 config bw 512Kbit/s queue 5

 

${fwcmd} queue 10 config pipe 1 weight 50 mask src-ip 0x000000ff

${fwcmd} queue 20 config pipe 2 weight 50 mask dst-ip 0x000000ff

 

ipfw add queue 10 ip from any to 10.0.0.1 in via rl0

ipfw add queue 20 ip from 10.0.0.1 to any out via rl0

 

 

${fwcmd} queue 30 config pipe 1 weight 50 mask src-ip 0x000000ff

${fwcmd} queue 40 config pipe 2 weight 50 mask dst-ip 0x000000ff

 

ipfw add queue 30 ip from any to 10.0.0.2 in via rl0

ipfw add queue 40 ip from 10.0.0.2 to any out via rl0

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

По правде говоря - мне кажется, что очереди ничего не изменят - трубы-то всего 2. Пинги такими и останутся. Или изменится, но незначительно. Проверить нет возможности. У меня такая же байда. Интересно было бы увидеть решение. Я пока создал отдельную pipe в 2 раза уже реального и всех "провинившихся" перенаправил туда. Помогает, но слабо. Всё равно лаги, хоть и намного меньше.

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

но без шейпера все ок, все работает с отличными пингами. и когда шеплю на каждый комп по 128 Кбит/с просто пайпом, без очередей, то тоже все ок

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

хелп :bue: юзеры задрали ложат канал? немогу настроить шейп....

Free bsd 5.4

В ядро добавил:

options IPFIREWALL

options IPFIREWALL_VERBOSE

options IPFIREWALL_FORWARD

options IPDIVERT

options IPFILTER

options IPFILTER_LOG

options DUMMYNET

options QUOTA

options DEVICE_POLLING

options HZ=1000

 

rc.conf

 

defaultrouter="192.168.0.1"

hostname="******"

ifconfig_fxp0="inet 192.168.0.3 netmask 255.255.255.0"

ifconfig_rl0="inet ****** netmask 255.255.255.0"

sshd_enable="YES"

dhcpd_enable="YES" # dhcpd enabled?

dhcpd_flags="-q" # command option(s)

dhcpd_conf="/usr/local/etc/dhcpd.conf" # configuration file

dhcpd_ifaces="fxp0" # ethernet interface

dhcpd_withumask="022" # file creation mask

firewall_enable="YES"

firewall_script="/usr/local/billing/rc.firewall"

natd_enable="YES"

natd_interface="rl0"

gateway_enable="YES"

 

rc.firewall

 

ipfw='/sbin/ipfw -q'

 

${ipfw} -f flush

${ipfw} add divert natd all from any to any via rl0

${ipfw} add allow all from any to any

 

/sbin/ipfw pipe 150 config mask dst-ip 0xffffffff bw 800Bytes/s delay 1

/sbin/ipfw add 150 pipe 150 all from any to 192.168.0.0/24 via fxp0 in

 

покажыте где кривые руки :)=)

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

-Emrise-

Зачем так мучаться - в теме дохрени примеров, посмотри как люди делают.

__________________________________________________________________

Вот, канал 240кбит, поделенный между активными юзерами

 

ipfw add 320 pipe 1 ip from 10.0.0.0/24 to any out

ipfw add 330 pipe 2 ip from any to 10.0.0.0/24 in

ipfw pipe 1 config mask src-ip 0x000000ff bw 240Kbit/s

__________________________________________________________________

А это по идее – трафик по приоритету – машина 10.0.0.1 имеет приоритет перед остальными

 

ipfw pipe 1 config bw 256Kbit/s

ipfw queue 1 config pipe 1 weight 10 mask dst-ip 0xffffffff ;входящий трафик низкого приоритета

ipfw queue 11 config pipe 1 weight 10 mask src-ip 0xfffffff ;исходящий трафик низкого приоритета

ipfw queue 2 config pipe 1 weight 90 mask dst-ip 0xffffffff ;входящий трафик высокого приоритета

ipfw queue 21 config pipe 1 weight 90 mask src-ip 0xffffffff ;исходящий трафик высокого приоритета

ipfw add 350 queue 2 ip from any to 10.0.0.1 via rl0

ipfw add 360 queue 21 ip from 10.0.0.1 to any via rl0

ipfw add 370 queue 1 ip from any to 10.0.0.0/30 via rl0

ipfw add 380 queue 11 ip from 10.0.0.0/30 to any via rl0

__________________________________________________________________

Почитай так же здесь:

 

http://www.opennet.ru/base/net/ipfw_pipe.txt.html

http://cenix.nm.ru/ipfw/prim.html

http://www.nt.com.ua/info/ipfw/ar01s03.shtml#id2815680

http://local.com.ua/forum/index.php?showtopic=5991&st=15

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

необходимо одному человеку просто отрезать кусок не более чем 256К.

нашёл такую вещь.

Ограничение полосы пропускания (Shaping).

1. Определение трубы (канала) # ipfw pipe PIPE_NUMBER config bw BANDWIDTH queue QUEUE_SIZE Замечание: Следует отметить, что pipe использует очередь внутри себя, причем ее параметры можно менять (queue QUEUE_SIZE), но это очередь внутри pipe, она отличается от объекта queue!

2. Классификация трафика # ipfw add IPFW_NUMBER pipe PIPE_NUMBER tcp from IP_ADDR to IP_ADDR

 

значит можно сделать так

ipfw pipe 1 config bw 256 queue QUEUE_SIZE (незнаю что ставить наверно вообще писать не надо, в моём случае.)

ipfw add 30 pipe 1 tcp(можно all я так понимаю) from АДРЕС_Сервера to АДРЕС_ограничиваемого

 

верно ли это?

:o

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

Помогите, будьте добры. Нужно сделать так чтоб канал равномерно распределялся между всеми пользавателями в сети. Написал вот такое правило,

 

ipfw pipe 1 config bw 10Mbit/s queue 10

ipfw queue 1 config pipe 1 weight 50

ipfw add 20 queue 1 ip from any to any

 

Бедет ли работать?

ОС FreeBSD 6.1

Спасибо )

 

ЗЫ

Посоветывали сделать вот так

ipfw add pipe 1 ip from any to any

ipfw pipe 1 config bw 10 Mbit/s queue 100 red 0.002/30/80/0.1

 

Как правильней?

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

Лучше так делить поровну, меньше лагов и задержек (пинги уменьшаются существенно). Пример для канала в 600Кбит/с:

 

ipfw pipe 3 config 600Kbit/s

ipfw pipe 4 config 600Kbit/s

ipfw queue 4 config pipe 3 weight 50 mask src-ip 0xffffffff gred 0.002/10/30/0.1

ipfw queue 5 config pipe 4 weight 75 mask dst-ip 0xffffffff gred 0.002/10/30/0.1

 

А для юзеров правила:

ipfw add 320 queue 4 all from any to 10.0.0.0/24

ipfw add 330 queue 5 all from any to 10.0.0.0/24

 

Только вот я думаю, что если у вас стоит Squid и NAT - хрень получается, потому что в тот момент, когда SQUID отдаёт по запросу данные из кэша, у вас "потолок" в 600Кбит/с и для данных. А это неправильно, потому что внешний канал хоть и высвобождается, но пользователи это никак не почувствуют, потому что вы режеть ВЕСЬ трафик (если только вы не режете какой-то толстый внешний канал). Сейчас думаю как у себя разрулить это.

Этот пример взят с работающего сервера и был проверен мною с двумя машинами, одновременно работающими в сети. Уже не помню откуда стырил решение, но мучался долго. :)

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

С вашего позволения, спрошу в даной теме:

Есть VPN-сервер на основе freeradius и mpd5. Юзерам режется канал с помощью радиус атрибутов mpd-limit. НО созрел недавно вопрос следующего характера - шейпить канал юзерам, в зависимости от времени суток. Каким методом можно это реализовать? В какую сторону копать?

ОС FreeBSD

Ссылка на сообщение
Поделиться на других сайтах
С вашего позволения, спрошу в даной теме:

Есть VPN-сервер на основе freeradius и mpd5. Юзерам режется канал с помощью радиус атрибутов mpd-limit. НО созрел недавно вопрос следующего характера - шейпить канал юзерам, в зависимости от времени суток. Каким методом можно это реализовать? В какую сторону копать?

ОС FreeBSD

crontab + прикручивай какой-то скриптик :)

Ссылка на сообщение
Поделиться на других сайтах
Скрипт не проблема прикрутить. Что скрипт должен делать - вот проблема. Может есть какие соображения?

ну тогда рассказывай, как щас организован шейпер =) будем думать

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

Биллинг в зависимости от тарифного плана пишет в базу радиуса значение mpd-limit, к примеру:

 

mysql> select * from radgroupreply;
| 1 | 64k | mpd-limit | += | in#1=all shape 64000 8000   |    0 |
| 2 | 64k | mpd-limit | += | out#1=all shape 64000 8000  |    0 |

 

При авторизации пользователя радиус передаёт атрибут mpd-limit серверу mpd, который в свою очередь генерирует "пайп на юзера". Как вариант, я вижу, кромсать скрипт, который к примеру в 20.50 пишет в базу радиуса "удвоенный бендвиз" каждого юзера. А в 21.00 заставить mpd с помощью радиус параметров "перерезать" пайпы всем юзерам.

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

проще запихивать юзверов в таблицы в зависимости от тарифного плана

 

ipfw add 10250 pipe 15 ip from any to table(15)
ipfw add 10251 pipe 16 ip from table(15) to any

и просто распихивать ип клиентов в эти таблицы

и потом скриптом по кроны менять значения pipe 15 и pipe 16

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

Благодарю за ответ. Исходя из Ваших слов составил такой набор правил

 

ipfw table 1 add 10.18.1.2

ipfw table 1 add 10.18.1.3

 

ipfw pipe 1000 config bw 512Kbit/s mask src-ip 0xffffffff

 

 

ipfw add 1000 pipe 1000 ip from any to "table(1)"

ipfw add 1001 pipe 1000 ip from "table(1)" to any

 

Соответственно 2 юзерам "нарежется" канал по 512 каждому.

Ссылка на сообщение
Поделиться на других сайтах
  • 10 months later...
Благодарю за ответ. Исходя из Ваших слов составил такой набор правил

 

ipfw table 1 add 10.18.1.2

ipfw table 1 add 10.18.1.3

 

ipfw pipe 1000 config bw 512Kbit/s mask src-ip 0xffffffff

 

 

ipfw add 1000 pipe 1000 ip from any to "table(1)"

ipfw add 1001 pipe 1000 ip from "table(1)" to any

 

Соответственно 2 юзерам "нарежется" канал по 512 каждому.

 

Это точно будет у каждого по 512 если оба подключатся?Я сейчас делаю для каждого 128Кбитного свой пайп.Я так понимаю что я плужу и достаточно одного пайпа в 128Кбит?

И еще сразу подскажите dst-ip это урезка исходящего а src-ip входящего?

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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...