$fwcmd pipe 1024 config bw 1024Kbit/s mask src-ip 0xffffffff # in
$fwcmd pipe 2024 config bw 512Kbit/s mask dst-ip 0xffffffff # out
$cmd pipe tablearg ip from table\(1\) to not table\(0\) out #Traffic to any from 1024/512 clients OUT VIP2NEW tariff
$cmd pipe tablearg ip from table\(11\) to not table\(0\) out #Traffic to any from 1024/512 clients OUT (external IP) VIP2NEW tariff
После ната
$cmd pipe tablearg ip from not table\(0\) to table\(2\) in #Traffic to 1024/512 clients from any (IN)
$cmd pipe tablearg ip from not table\(0\) to table\(21\) in #Traffic to 1024/512 clients from any (IN) (external IP)
Вопрос состоит в том, что данная конструкция ограничивает полосу для конкретной сессии, и если человек имеет ограничение 512 кб, то заустив 5 закачек одновременно - у него будет будет 5 штук по 512 кб
Проверено на тестах ..... Что надо изменить, что бы при попытке пользователя запустить 5 закачек - он не вылазил за свой лимит в 512 кб
Может я не правильно пишу маску mask src-ip 0xffffffff ?
Может надо 0x000000ff ?
Последний раз редактировалось Kristian Сб июл 11, 2009 16:16, всего редактировалось 1 раз.
Такое впечатление, что когда приходять пакеты на новую закачку - вместо того что бы проходить по созданному туннелю, под новую закачку создается новый пайп с полосой ....
Скорее всего так оно и есть. Число пайпов можно глянуть через ipfw pipe list. Если там более одной на адрес, то попробуйте поиграть с маской подсети. Это поможет если у вас не PPP соединение (PPTP/PPPoE)
Теперь как это грамотно строить.
Если вы режете полосу от клиента в инет (out), то в пайп завертываются пакеты со статусом out на внешнем интерфейсе до ната. Если режете из инета в сторону клиента (in), то в пайп завертываются пакеты со статусом out, но уже на внутреннем интерфейсе и после ната. Можно привязаться к именам интерфейсов или рулить клиентскими адресами, если у вас куча интерфейсов (PPP). Пакеты со статусом in туда заворачивать смысла не вижу. Такая модель исключает возможность двойного завертывания в пайп одного и того же пакета, который может быть in на одном интерфейсе, а после out на другом.
Как раз двойное завертывание и может поломать полосу.
$cmd pipe tablearg ip from table\(1\) to not table\(0\) out via $oif #Traffic to any from 1024/512 clients OUT VIP2NEW tariff
$cmd pipe tablearg ip from table\(11\) to not table\(0\) out via $oif #Traffic to any from 1024/512 clients OUT (external IP) VIP2NEW tariff
После ната
$cmd pipe tablearg ip from not table\(0\) to table\(2\) out via $iif #Traffic to 1024/512 clients from any (IN)
$cmd pipe tablearg ip from not table\(0\) to table\(21\) out via $iif #Traffic to 1024/512 clients from any (IN) (external IP)
В результате получилось, что если dst addr одинаковый - то полоса делится как ей и положено на количество закачек, но если адрес ресурса второй одновременной закачки отличается от адреса первой закачки ---- нарезается максимально возможная полоса в 512кб.
При трех одновременных закачках (2 с одного сайта и 1 с какого то другого) вывод ipfw pipe show
Гут. А можно было при обьявлении пайпов поменять местами src-addr и dst-addr, маску оставить также 0xffffffff. То есть в объявлении, где mask src-addr, поставить mask dst-addr и наоборот. По выводу ipfw pipe show ясно, что у вас не тот адрес маскируется, оттого и со скоростью непорядок.
У меня когда-то так было, а теперь через ng_car нарезаю. На высоких скоростях нарезки (выше двух мегабит) у пайпов наблюдал странности.