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

Исходное сообщение
"Раздел полезных советов: Пример ограничения полосы пропускания трафика в FreeBSD"

Отправлено auto_tips , 14-Май-02 11:00 
Собираем ядро с опциями:
   options         DUMMYNET
   options         IPFIREWALL

Ограничиваем трафик для сеток 1.1.1.0/24 и 3.3.3.0/24 на 14000 кбит/с:
   ipfw add pipe 50 tcp from any to 1.1.1.0/24 via fxp0
   ipfw add pipe 50 tcp from any to 3.3.3.0/24 via fxp0
   ipfw pipe 50 config bw 14Kbit/s

Для внесения задержки на N ms, используйте delay N после config.
Для установки веса данного пайпа по отношению к другим пайпам используйте weight вес.
Для WF2Q ограничения трафика используйте ipfw queue
(queue N config [pipe pipe_nr] [weight weight] [queue {slots | size})

URL:
Обсуждается: http://www.opennet.me/tips/info/226.shtml


Содержание

Сообщения в этом обсуждении
"Пример ограничения полосы пропускания трафика в FreeBSD"
Отправлено gara , 14-Май-02 11:00 
все вышеперечисленное работает как правило:
полоса пропускания для всех IP, т.е. для всех пользователей из сетки 1.1.1.0/24
суммарно скорость
прокачки 14000 кбит/с.
Если возникает необходимость организовать "канал" для каждого пользователя из нанной сети то пишем

ipfw pipe 10 config mask dst-ip 0x000000ff bw 1024bit/s  queue
ipfw add pipe 10 tcp from any to 1.1.1.0/24 via fxp0

Теперь каждый хост из сети 1.1.1.0/24 имеет свой канал 1024bit/s


А вот как срастить эти два правил (для всех 5Mbit/s но не более
512Kbit/s для каждого)  пока не знаю.


"Пример ограничения полосы пропускания трафика в FreeBSD"
Отправлено Аноним , 18-Ноя-02 16:30 
В /etc/sysctl.conf пишем net.inet.ip.fw.one_pass=0 (или sysctl -w net.inet.ip.fw.one_pass=0). Ну и соответсвенно создаем две pipe - на сеть потом на хосты.
Могу ошибиться но вроде так.

"Пример ограничения полосы пропускания трафика в FreeBSD"
Отправлено Radist UA , 16-Апр-06 02:56 
Именно так.
net.inet.ip.fw.one_pass=0
Сначала общий пайп на 5Mbit/s
Потом пайп на 512Kbit/s для каждого

ИМХО предложенное решение создает каналы указанной пропускной способности Но только для ВХОДЯЩЕГО траффика. Для шейпинга и исходящего повторить то-же только поменять from и to местами


"Пример ограничения полосы пропускания трафика в FreeBSD"
Отправлено Антон , 04-Май-06 16:18 
а если имеется шлюз в инет, но машины при этом все с реальными ип?подскажите плиз как сделать так, чтобы весь трафик клиентам распределялся пайпами по 512Кбит?..все что тут написано у меня почемуто не проходит?..и эти правила должны быть добавлены в самый конец?

"Пример ограничения полосы пропускания трафика в FreeBSD"
Отправлено anclbob , 24-Июл-06 00:29 
А можно написать пример того как создавать общий pipe , а потом в него запихивать другие pipe ??

"Пример ограничения полосы пропускания трафика в FreeBSD"
Отправлено VoLKL , 06-Дек-06 12:57 
Вот накатал тут скрипт, как думаете будет реально работать

#!/bin/sh
ipfw='/sbin/ipfw -q'

${ipfw} disable one_pass
${ipfw} flush
${ipfw} pipe flush
${ipfw} add divert natd all from any to any via lnc0

# Pipe for all users
#${ipfw} pipe 10 config
#${ipfw} pipe 20 config

${ipfw} queue 10 config pipe 10 weight 50 mask src-ip 0xffffffff
${ipfw} queue 20 config pipe 20 weight 50 mask dst-ip 0xffffffff

${ipfw} add queue 10 all from 192.168.0.0/24 to any out via lnc0
${ipfw} add queue 20 all from any to 192.168.0.0/24 in via lnc0

# Pipe for each user

${ipfw} pipe 30 config bw 128Kbit/s mask src-ip 0xffffffff
${ipfw} pipe 40 config bw 128Kbit/s mask dst-ip 0xffffffff

${ipfw} add pipe 30 all from 192.168.0.0/24 to any out via lnc0
${ipfw} add pipe 40 all from any to 192.168.0.0/24 in via lnc0

# Permissions

${ipfw} add allow all from 192.168.0.0/24 to any out via lnc0
${ipfw} add allow all from any to 192.168.0.0/24 in via lnc0


"Пример ограничения полосы пропускания трафика в FreeBSD"
Отправлено VoLKL , 06-Дек-06 12:58 
Вот накатал тут скрипт, как думаете будет реально работать

#!/bin/sh
ipfw='/sbin/ipfw -q'

${ipfw} disable one_pass
${ipfw} flush
${ipfw} pipe flush
${ipfw} add divert natd all from any to any via lnc0

# Pipe for all users
#${ipfw} pipe 10 config
#${ipfw} pipe 20 config

${ipfw} queue 10 config pipe 10 weight 50 mask src-ip 0xffffffff
${ipfw} queue 20 config pipe 20 weight 50 mask dst-ip 0xffffffff

${ipfw} add queue 10 all from 192.168.0.0/24 to any out via lnc0
${ipfw} add queue 20 all from any to 192.168.0.0/24 in via lnc0

# Pipe for each user

${ipfw} pipe 30 config bw 128Kbit/s mask src-ip 0xffffffff
${ipfw} pipe 40 config bw 128Kbit/s mask dst-ip 0xffffffff

${ipfw} add pipe 30 all from 192.168.0.0/24 to any out via lnc0
${ipfw} add pipe 40 all from any to 192.168.0.0/24 in via lnc0

# Permissions

${ipfw} add allow all from 192.168.0.0/24 to any out via lnc0
${ipfw} add allow all from any to 192.168.0.0/24 in via lnc0


"Пример ограничения полосы пропускания трафика в FreeBSD"
Отправлено Александр , 16-Янв-08 12:43 
Как разделить общий канал при условии:
в общем канале есть пользователи
1я очередь - пользователи с высоким приоритетом,
2я очередь - пользователи с низким приоритетом
3я очередь - все что осталось, делят между собой пользователи с выделеной полосой 128, 256к и получали свою полосу в случае если общая полоса не занята пользователями с высокими приоритетами. 1 и 2


"Пример ограничения полосы пропускания трафика в FreeBSD"
Отправлено luser , 09-Июн-10 10:37 
Сделал так как написано выше:
# Pipe for each user

${ipfw} pipe 30 config bw 128Kbit/s mask src-ip 0xffffffff
${ipfw} pipe 40 config bw 128Kbit/s mask dst-ip 0xffffffff

${ipfw} add pipe 30 all from 192.168.0.0/24 to any out via lnc0
${ipfw} add pipe 40 all from any to 192.168.0.0/24 in via lnc0

Скорость входящая ограничивается идеально. Но исходящая не режется. В чем подвох?