Страница 1 из 1

шейпер на PF

Добавлено: 2010-09-27 16:42:48
axiq
Уважаемые лисы, помогите пожалуйста с настройкой шейпера на PF(никогда не имел опыта).
Задача следующая:
(для упрощения записи введу обозначение A(B)/C(D), где A-ширина download с возможностью расширения (если есть возможность) до ширины B, аналогично C(D) - для upload).
Итак нужно канал 10/5 поделить примерно так:
1. для user_1 канал 1(2)Мб/0.5(1)Мб
2. для user_2 канал 2(10)Мб/1.5(5)Мб
3. для user_3 канал 3(10)Мб/2(5)Мб
4. для media канал 1(10)Мб/0.5(5)Мб
5. для phone канал 1(10)Мб/0.5(5)Мб

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

Код: Выделить всё

altq on $int_if cbq bandwidth 100Mb queue { family_in, roommate_in }
    queue roommate_in bandwidth 2Mb cbq(red) { user_1_in }
	queue user_1_in bandwidth 1Mb cbq(red, borrow)
    queue family_in bandwidth 9Mb priority 2 cbq(red, borrow, default) { user_2_in, user_3_in, media_in }
	queue user_2_in bandwidth 2Mb priority 2 cbq(red, borrow)
	queue user_3_in bandwidth 3Mb priority 3 cbq(red, borrow)
	queue media_in bandwidth 2Mb priority 4 cbq(red, borrow, default)
altq on $ext_if cbq bandwidth 100Mb queue { family_out, roommate_out }
(по аналогии с очередями входящего трафика)
очередь media_in будет для media и phone (п. 4 и 5), я надеюсь они ее смогут разделить между собой, тем более, что работа их одновременно маловероятна.
(*) Следует наверное немного уточнить. user_1 не должен иметь ширину более 2Мб ни при каких обстоятельствах. При этом если есть хоть кто-то из family_in, то user_1 должен иметь 1Мб (т.е. как будто 2 клиента делят канал 2Мб)

Теперь вопросы по предложенному:
1. Встречал мнение, что если указана опция "borrow", то очередь будет расширять канал (по возможности) до значений указаных в корневой очереди. Т.е. очередь user_1_in разширит канал не до 2Мб (значение очереди roommate_in), а до ширины на интерфейсе $int_if. Так ли это??? И если да, то как это обойти (запретить расширение свыше 2Мб)?
2. Можно ли default-очередью объявлять очередь имеющую потомков? Если да, то обязательно ли среди потомков также определять очередь по-умолчанию?
3. Как поведет себя PF если реальная ширина канала будет меньше суммы "минимальной" ширины для клиентов? Т.е. скажем в сети user_1 и user_3, для них минимум нужен канал 1+3=4Мб, но канал реально только 3Мб. Варианты поведения:
а) PF глюкнет и клиенты сами каким-то образом начнут делить канал;
б) за счет более высокого приоритета весь канал заберет user_3;
в) PF "догадается" и разделит канал более-менее пропорчионально определенным в очередях значениям, т.е. 0.75Мб и 2.25Мб;
г) что-то еще...
4. Будут ли клиенты из family_in развивать скорость так, чтобы "отобрать" у user_1 1Мб из его канала (т.е. выполнять условие (*))?
5. С приоритизацией вопрос. Я правильно понимаю, что она срабатывает когда PF начинает расширять канал, т.е если в сети user_2 и user_3, то user_2 получит 2Мб, а user_3 - ширину на интерфейсе $int_if
6. Посоветуйте куда в эту схему воткнуть торрент клиент. Наверное у него должен быть самый низкий приоритет и максимально возможная ширина ? Да и 2Мбпс осталось нераспиленными...
---Да, конечно все "Мб" следует читать как "Мб/с"
Надеюсь на существенную помощь, а не посылания в "сами знаете куда :)". Что смог прочитал. Если с самим PF хоть как-то разобрался, то с очередями и приоритезацией запутался окончательно. Заранее всем премного благодарен!

Re: шейпер на PF

Добавлено: 2010-09-28 6:23:27
Burner
Pf точно ни о чем догадываться не будет