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

Исходное сообщение
"Еще раз о PIPE в IPFW, нарезка"

Отправлено sasha731 , 05-Июл-13 15:40 
   Добрый день, Коллеги!

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

   Есть сеть с роутером на базе FreeBSD. На нем две сетевые. Внешний канал 10 Мбит/с.
   Есть много машин, которые ходят через squid, есть несколько через ipnat.
   Тем, что через NAT режем скорость. Пару лет думал, что чтобы нескольким машинам нарезать по 2Мбита каждой, нужно сделать что-то вроде:

        ${fwcmd} pipe 60 config bw 2Mbit/s

        # User1 2 Mbs
        ${fwcmd} add pipe 60 all from 192.168.0.249/32 to any
        ${fwcmd} add pipe 60 all from any to 192.168.0.249/32

        # User2 2 Mbs
        ${fwcmd} add pipe 60 all from 192.168.0.248/32 to any
        ${fwcmd} add pipe 60 all from any to 192.168.0.248/32

   Но заметил, когда одна машина качает, со второй в мир достаточно большие задержки. Т.е. это одна "труба" (pipe) на всех выделена??? А для каждой отдельно нужно делать так? :

        ${fwcmd} pipe 60 config bw 2Mbit/s
        ${fwcmd} pipe 61 config bw 2Mbit/s

        # User1 2 Mbs
        ${fwcmd} add pipe 60 all from 192.168.0.249/32 to any
        ${fwcmd} add pipe 60 all from any to 192.168.0.249/32

        # User2 2 Mbs
        ${fwcmd} add pipe 61 all from 192.168.0.248/32 to any
        ${fwcmd} add pipe 61 all from any to 192.168.0.248/32

   Да? Вот это прозрение! ))) А если 10 или 20 машин, все-равно для каждой машины отдельный pipe, что бы они не пересекались? Или есть какое-то более "красивое" решение?
   Спасибо за растолкование. А то примеров куча, но этот момент мне уже не ясен...


Содержание

Сообщения в этом обсуждении
"Еще раз о PIPE в IPFW, нарезка"
Отправлено михалыч , 05-Июл-13 17:07 
>[оверквотинг удален]
>         # User2 2 Mbs
>         ${fwcmd} add pipe 61
> all from 192.168.0.248/32 to any
>         ${fwcmd} add pipe 61
> all from any to 192.168.0.248/32
>    Да? Вот это прозрение! ))) А если 10 или
> 20 машин, все-равно для каждой машины отдельный pipe, что бы они
> не пересекались? Или есть какое-то более "красивое" решение?
>    Спасибо за растолкование. А то примеров куча, но этот
> момент мне уже не ясен...

Ничего нового.
Создаёте таблицу, кладёте в неё ip-адреса,
которым нужно резать скорость.

pipe 1 config mask src-ip 0xffffffff bw 1Mbit/s
pipe 2 config mask dst-ip 0xffffffff bw 2Mbit/s

# режим исходящий трафик
add 1 pipe 1 all from table(1) to any in recv ${local_if}

# режим входящий трафик
add 2 pipe 2 all from any to table(1) out xmit ${local_if}

Если пайпов со временем будет много,
лучше использовать tablearg


"Еще раз о PIPE в IPFW, нарезка"
Отправлено sasha731 , 05-Июл-13 17:20 
>[оверквотинг удален]
> Создаёте таблицу, кладёте в неё ip-адреса,
> которым нужно резать скорость.
> pipe 1 config mask src-ip 0xffffffff bw 1Mbit/s
> pipe 2 config mask dst-ip 0xffffffff bw 2Mbit/s
> # режим исходящий трафик
> add 1 pipe 1 all from table(1) to any in recv ${local_if}
> # режим входящий трафик
> add 2 pipe 2 all from any to table(1) out xmit ${local_if}
> Если пайпов со временем будет много,
> лучше использовать tablearg

   Подождите, а чем, принципиально, таблица отличается от моего первого варианта? Ведь pipe создается только один на всех? Т.е. на всех выделится 2Mb/c ? Или я не правильно делаю и у нас с Вами принципиально разные конфиги? :

       ${fwcmd} pipe 60 config bw 2Mbit/s

       ${fwcmd} table 60 add 192.168.0.248
       ${fwcmd} table 60 add 192.168.0.249

       ${fwcmd} add pipe 60 all from "table(60)" to any
       ${fwcmd} add pipe 60 all from any to "table(60)"

   Ведь одна же труба создается на всех:

# ipfw pipe show
00060:   2.000 Mbit/s    0 ms burst 0
q131132  50 sl. 0 flows (1 buckets) sched 65596 weight 0 lmax 0 pri 0 droptail
sched 65596 type FIFO flags 0x0 0 buckets 1 active
  0 ip           0.0.0.0/0             0.0.0.0/0     56156 82719720 48 22401 2824


"Еще раз о PIPE в IPFW, нарезка"
Отправлено михалыч , 05-Июл-13 17:35 
>[оверквотинг удален]
>    Ведь одна же труба создается на всех:
> # ipfw pipe show
> 00060:   2.000 Mbit/s    0 ms burst 0
> q131132  50 sl. 0 flows (1 buckets) sched 65596 weight 0
> lmax 0 pri 0 droptail
>  sched 65596 type FIFO flags 0x0 0 buckets 1 active
>   0 ip        
>   0.0.0.0/0        
>     0.0.0.0/0     56156 82719720
> 48 22401 2824

Пусть это будет тест на внимательность.
Пайпы отличаются. Заданием маски в конфиге.


"Еще раз о PIPE в IPFW, нарезка"
Отправлено sasha731 , 06-Июл-13 20:59 
>[оверквотинг удален]
>> 00060:   2.000 Mbit/s    0 ms burst 0
>> q131132  50 sl. 0 flows (1 buckets) sched 65596 weight 0
>> lmax 0 pri 0 droptail
>>  sched 65596 type FIFO flags 0x0 0 buckets 1 active
>>   0 ip
>>   0.0.0.0/0
>>     0.0.0.0/0     56156 82719720
>> 48 22401 2824
> Пусть это будет тест на внимательность.
> Пайпы отличаются. Заданием маски в конфиге.

   Да при чем же здесь внимательность? Давайте оставим иронию? ))
Я сразу заметил, что в двух этих pipe маски src-ip (IP-источники) и dst-ip (IP-адресаты). Да и примеров подобных полно в Интернете. Но это ведь и логично, если резать отдельно входящий и исходящий трафик.

   Я же говорил о нарезке каждому IP в отдельности скорости (не важно, входящую или исходящую). Пусть даже для двух разных IP-клиентов каналов одинаковой ширины, т.е. по 2 Мбита/с.

   Или я чего-то недопонимаю? Так я же и просил разъяснить саму суть, а не пример с иронией. )))


"Еще раз о PIPE в IPFW, нарезка"
Отправлено михалыч , 07-Июл-13 07:19 
>[оверквотинг удален]
>    Да при чем же здесь внимательность? Давайте оставим иронию?
> ))
> Я сразу заметил, что в двух этих pipe маски src-ip (IP-источники) и
> dst-ip (IP-адресаты). Да и примеров подобных полно в Интернете. Но это
> ведь и логично, если резать отдельно входящий и исходящий трафик.
>    Я же говорил о нарезке каждому IP в отдельности
> скорости (не важно, входящую или исходящую). Пусть даже для двух разных
> IP-клиентов каналов одинаковой ширины, т.е. по 2 Мбита/с.
>    Или я чего-то недопонимаю? Так я же и просил
> разъяснить саму суть, а не пример с иронией. )))

Я не понимаю, чего вы не понимаете, но это хорошо, что вы "сразу" заметили.
Иначе не спрашивали бы в очередной раз об очевидном.
К тому же, как вы изволили выразиться, "примеров подобных полно в Интернете".

Пример нарезки исходящей скорости был приведён вам лишь чисто для примера. Не более того.

Таблицы в ipfw как раз таки существуют и используются для того, чтобы не городить огород (или зоопарк) с правилами для каждого отдельного ip-адреса.

А если ещё и скорость для ip резать различную, то конфигурационный файл ipfw разрастается и становится большим,
что в свою очередь затрудняет его чтение и понимание.

И для этого уже, в свою очередь, и придумали tablearg

Допустим, у нас есть пачка пользователей, которым мы хотим ограничить скорость, скажем в 2 Мбит/с
Есть ещё группа, им надо 3 Мбит/с, следующим уже необходима скорость в 4 Мбит/с. И так далее.
Это, я надеюсь, вам понятно?

И чтобы не расписывать для каждого отдельного ip-адреса длиннющую портянку с правилами пайпов,
мы всё это хозяйство аккуратно кладём в одну единственную табличку, в которой и укажем, с помощью аргумента к ip-адресу, желаемую нарезку скорости для каждого отдельно взятого ip-адреса.
Это и делается с помощью tablearg

Добавляем в таблицу адреса, в аргументе передаём необходимый пайп для этого адреса.

ipfw table 1 add 192.168.1.2 2
ipfw table 1 add 192.168.21.3 4
ipfw table 1 add 192.168.2.4 3
ipfw table 1 add 192.168.3.5 4
ipfw table 1 add 192.168.1.6 2
ipfw table 1 add 192.168.41.7 3
ipfw table 1 add 192.168.74.2 2
ipfw table 1 add 192.168.25.3 4
ipfw table 1 add 192.168.1.4 3
ipfw table 1 add 192.168.5.5 4
ipfw table 1 add 192.168.69.6 2
ipfw table 1 add 192.168.73.7 3

Одним словом, ip-адреса могут быть совершенно различными, ну то есть абсолютно.
Разумеется, задача по заполнению таблицы, как правило, решается каким-либо биллингом.
Но можно вынести и в отдельный файл.

Определяем нужные нам пайпы.
В них указываем маску, направление и скорость.
src (source, что значит источник)
dst (destination, что значит назначение)

pipe 2 config mask dst-ip 0xffffffff bw 2Mbit/s
pipe 3 config mask dst-ip 0xffffffff bw 3Mbit/s
pipe 4 config mask dst-ip 0xffffffff bw 4Mbit/s

add pipe tablearg all from any to table(1) out xmit ${local_if}

Представляете, если хотя бы для каждого адреса из сети /24 (или всего лишь половины) нужно было бы расписать правила!
Да ещё и пайпы разные.

Почувствуйте разницу!
Видите? Насколько проще и легче для чтения и понимания становится?
Не важно, сколько у нас ip-адресов. Количество правил в ipfw от этого не зависит.

Единственное, нужно прописать нужные пайпы.

А вот маска 0xffffffff (иначе /32) в пайпах и указывает на то, что указанное правило нужно применять к каждому отдельно взятому ip-адресу. То есть каждому по потребностям. Тьфу! Каждому по его скорости. Каждый получит свой кусок пирога.
Пока общей пропускной способности вашего канала хватит. Потом он может треснуть. Если навешаете кучу пользователей.

Если маска будет 0xffffff00 (иначе /24), то будет применено правило для всей этой сети /24
И результат такой нарезки будет совсем другой.
Торрент-качалка у любого пользователя из этой сети и всё. Остальные будут нервно курить и сидеть как на диалапе.

Ну, что ещё теперь не понятно? Вы спрашивайте, спрашивайте, не стесняйтесь!

P.S. Всё то, о чём я написал, это такой секрет, секрет Полишинеля.
Это всё есть в man ipfw


"Еще раз о PIPE в IPFW, нарезка"
Отправлено Pahanivo , 08-Июл-13 07:48 
> P.S. Всё то, о чём я написал, это такой секрет, секрет Полишинеля.  
> Это всё есть в man ipfw

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


"Еще раз о PIPE в IPFW, нарезка"
Отправлено sasha731 , 08-Июл-13 12:39 
>> P.S. Всё то, о чём я написал, это такой секрет, секрет Полишинеля.
>> Это всё есть в man ipfw
> ну дак ведь есть интернеты )) зачем ман читать ))
> клоуны надергают примеров из хауту, и начинают аргументы менять, совершенно не понимая
> что к чему. а потом "опа! помогите не работает!" ))

   Ой, как хорошо, когда все вокруг такие умные и не клоуны. )) Я читал маны, читал и статьи! Знаю что такое таблицы, использую их. И я не говорил, что не работает. Как я заметил, работало не так, как я предполагал! Ниже я объяснил суть вопроса, который Вы даже не потрудились внимательно прочитать. За то столько "пафоса", вместо хоть строчки полезной информации. )) Но и на этом спасибо!


"Еще раз о PIPE в IPFW, нарезка"
Отправлено sasha731 , 08-Июл-13 12:35 
> и укажем, с помощью аргумента к ip-адресу, желаемую нарезку скорости для
> каждого отдельно взятого ip-адреса.

   ОГРОМНОЕ спасибо за столь подробное и красочное разъяснение! Хоть в нем есть немного агрессии и иронии, но тем не менее и времени потрачено не мало! Думаю это пригодится не только мне, но и многим интересующимся. Правда, если честно, лично для меня там было мало полезной информации. Не потому, что Вы плохо написали, а потому, что я давно пользуюсь таблицами и успешно их применяю.
   Вопрос заключался несколько в другом, возможно Вы не вникали в его суть. И раз Вы великодушно позволили обращаться, позволю себе сделать небольшое уточнение. Ваша "конструкция" действительно работает правильно, в отличии от моей. Но никак не пойму разницы в одном месте. Ведь если я писал:

        ${fwcmd} pipe 60 config bw 2Mbit/s

        ${fwcmd} add pipe 60 all from 192.168.0.249/32 to any
        ${fwcmd} add pipe 60 all from any to 192.168.0.249/32

   То разве "192.168.0.249/32" не подразумевает маску "0xffffffff" ??? Почему в моем случае скорость делилась между всеми ПК, добавленными в pipe №60 ???


"Еще раз о PIPE в IPFW, нарезка"
Отправлено Pahanivo , 08-Июл-13 16:10 
>    То разве "192.168.0.249/32" не подразумевает маску "0xffffffff" ??? Почему
> в моем случае скорость делилась между всеми ПК, добавленными в pipe
> №60 ???

Потому-что гладиолус!
Открой уже для себя nam ipfw, хотябы ipfw pipe show посмотри


"Еще раз о PIPE в IPFW, нарезка"
Отправлено sasha731 , 08-Июл-13 16:27 
>>    То разве "192.168.0.249/32" не подразумевает маску "0xffffffff" ??? Почему
>> в моем случае скорость делилась между всеми ПК, добавленными в pipe
>> №60 ???
> Потому-что гладиолус!
> Открой уже для себя nam ipfw, хотябы ipfw pipe show посмотри

   Тебе что, сложно ответить нормально и по теме? К чему это выделывание? Лучше покажи, что ты это понимаешь лучше и помоги другим разобраться!
   Уже три раза написал, что я курил маны и сто раз смотрел "pipe show".
   Будут ответы по теме?


"Еще раз о PIPE в IPFW, нарезка"
Отправлено Pahanivo , 08-Июл-13 16:50 
>>>    То разве "192.168.0.249/32" не подразумевает маску "0xffffffff" ??? Почему
>>> в моем случае скорость делилась между всеми ПК, добавленными в pipe
>>> №60 ???
>> Потому-что гладиолус!
>> Открой уже для себя nam ipfw, хотябы ipfw pipe show посмотри
> Тебе что, сложно ответить нормально и по теме?

Нет, не сложно. Но я тут вопроса не увидел - увидел только "объясните, расскажите".
Курс лекций это платная вещь.
> К чему это выделывание?

Выделывание? Какой вопрос - такой ответ.
> Лучше покажи, что ты это понимаешь лучше и помоги другим разобраться!

С точки зрения банальной эрудиции невозможно отрицать тенденций парадоксальных иллюзий,
так как каждый неадекватный индивидуум имеет свою точку зрения. С точки зрения банальной эрудиции не каждый локально мыслящий индивидум способен игнорировать тенденции парадоксальных эмоций. С точки зрения дедукции, индукции и мозговой продукции вы некомпетентны в этом вопросе, поскольку каждый пессимистически настроенный индивидуум катастрофически модифицирует абстракции реального субъективизма.
>    Уже три раза написал, что я курил маны и
> сто раз смотрел "pipe show".
>    Будут ответы по теме?

Ну, будут вопросы, будут и ответы.


"Еще раз о PIPE в IPFW, нарезка"
Отправлено sasha731 , 08-Июл-13 18:02 

   Там вопросы стояли со знаком вопроса. Но Вы слышите только себя. Ваш ответ понятен, спасибо, больше не нужно. И за одно понятно, что Вы говорили о клоунах и кого имели ввиду. )))

"Еще раз о PIPE в IPFW, нарезка"
Отправлено sasha73 , 08-Июл-13 18:13 
> С точки зрения банальной эрудиции невозможно отрицать тенденций парадоксальных иллюзий,

   Как же не выделывание? )) Чистой воды. Тем более скопированное из Тырнета, как Вы изволили выражаться. ))

   Кто может ответить все же по теме? Что я упустил?

>>>    То разве "192.168.0.249/32" не подразумевает маску "0xffffffff" ??? Почему
>>> в моем случае скорость делилась между всеми ПК, добавленными в pipe
>>> №60 ???


"Еще раз о PIPE в IPFW, нарезка"
Отправлено Sabakwaka , 08-Июл-13 19:47 
>>>> №60 ???

Ты склочник, Саша.

192.168.0.249/32" НЕ подразумевает маску "0xffffffff".

Маска 0xffffffff изолирует единственный IP, а префиксная нотация  "x.x.x.x/x" для этого не предназначена и этого не «умеет».

Префиксная нотация ПРЕДНАЗНАЧЕНА для описания блока из минимум 4-х IP:
1. Адрес сети
2. Min IP
3. Max IP
4. Broadcast Address

Поэтому создатели IPFW вряд ли стали предусматривать обработку префиксов /30+, т.к. это неописанная неутверждённая вентиляторная вилами на пропеллер фича. Битовой маской ОДНОЗНАЧНЕЕ, какгбе.
О битовой маске не поспоришь в форуме три недели без еды и сна, обсуждая, что же она значит и описывает.
Пользуйся битовой маской и ты.


"Еще раз о PIPE в IPFW, нарезка"
Отправлено sasha73 , 09-Июл-13 16:15 
> Ты склочник, Саша.

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

> 192.168.0.249/32" НЕ подразумевает маску "0xffffffff".

   СПАСИБО! Вот и расставлено все по своим местам. Вот в чем дело! А то, некоторые, возможно, этого сами недопонимали, раз посылали в ман IPFW. Тут оказывается, я в азах описания сетей путался. Я знал, что префиксная нотация вида /24, ..., /30 описывает сеть, но почему то был уверен, что при /32 - это уже конкретный адрес. Да и во многих приложениях это имеется в виду в конфигах...

> Пользуйся битовой маской и ты.

   Вот так, век живи - век учись! СПАСИБО всем, что уделили время и образумили! Ну и отдельное спасибо Sabakwaka!



"Еще раз о PIPE в IPFW, нарезка"
Отправлено Miha , 08-Июл-13 20:26 
>> и укажем, с помощью аргумента к ip-адресу, желаемую нарезку скорости для
>> каждого отдельно взятого ip-адреса.
>    ОГРОМНОЕ спасибо за столь подробное и красочное разъяснение! Хоть
> в нем есть немного агрессии и иронии, но тем не менее

  А это болезнь опеннета :-) Тут как-только задают вопрос по ipfw, так сразу комплексы вываливают, так что привыкайте.


"Еще раз о PIPE в IPFW, нарезка"
Отправлено sasha73 , 09-Июл-13 16:16 
>>> и укажем, с помощью аргумента к ip-адресу, желаемую нарезку скорости для
>>> каждого отдельно взятого ip-адреса.
>>    ОГРОМНОЕ спасибо за столь подробное и красочное разъяснение! Хоть
>> в нем есть немного агрессии и иронии, но тем не менее
>   А это болезнь опеннета :-) Тут как-только задают вопрос по
> ipfw, так сразу комплексы вываливают, так что привыкайте.

   Спасибо за поддержку! ))) Но как оказывается, нас меньшинство. ))