Цель: Сделать каждому юзеру канал с одинаковой пропускной способностью на аплоад и даунлоад.
Для каждого зарегистрированного ip сделал свое правило в таком виде:
ipfw add divert natd all from any to any via ${oif}
ipfw add divert natd all from any to any via ${iif}
ipfw add pipe 1 ip from any to ${useripX} out
ipfw add pipe 2 ip from ${useripX} to any in
ipfw pipe 1 config bw ${userspdX}Kbits/s
ipfw pipe 2 config bw ${userspdX}Kbits/sПоставил - работает, начал тестировать - ан нет, не нормально работает. Когда в какую-то конкретную сторону трафик идет - все ОК, но вот когда трафик идет в обе стороны, то канал на аплоад работает лишь на 70%. Почему? Ведь они идут через разные "трубы"! Тестил при помощи фтп сервера, который на машине-рутере стоит, т.ч. потерей в скорости быть не должно.. Тест длился 10 минут и ситуация оставалась неизменной. :(
>в какую-то конкретную сторону трафик идет - все ОК, но вот
>когда трафик идет в обе стороны, то канал на аплоад работает
>лишь на 70%. Почему? Ведь они идут через разные "трубы"!
Есть обратный трафик порядка 10-20%
>Есть обратный трафик порядка 10-20%
откуда столько много?
в IP нету QoS, и нечего мудрить с каналами, ты же не ISP.
>>Есть обратный трафик порядка 10-20%
>откуда столько много?
>в IP нету QoS, и нечего мудрить с каналами, ты же не
>ISP.
В том то и беда что сервак для ISP делаю. :(
>>в какую-то конкретную сторону трафик идет - все ОК, но вот
>>когда трафик идет в обе стороны, то канал на аплоад работает
>>лишь на 70%. Почему? Ведь они идут через разные "трубы"!
>Есть обратный трафик порядка 10-20%Я понимаю, что прога, которая считает трафик на локальной машине может ошибаться, но не на столько же... Ей по барабану что за трафик, она его просто считает..
>ipfw add divert natd all from any to any via ${oif}
>ipfw add divert natd all from any to any via ${iif}
>ipfw add pipe 1 ip from any to ${useripX} out
>ipfw add pipe 2 ip from ${useripX} to any inКак вариант укажи через какую сетевую всё это резать. Если указываешь лоакльную, то будет учитываться даже малейший пинг, если внешную, то трафик до сервер не всчёт. Хотя незнаю как по дефолту. В своё время с этим намучался
>>ipfw add divert natd all from any to any via ${oif}
>>ipfw add divert natd all from any to any via ${iif}
>>ipfw add pipe 1 ip from any to ${useripX} out
>>ipfw add pipe 2 ip from ${useripX} to any in
>
>Как вариант укажи через какую сетевую всё это резать. Если указываешь лоакльную,
>то будет учитываться даже малейший пинг, если внешную, то трафик до
>сервер не всчёт. Хотя незнаю как по дефолту. В своё время
>с этим намучалсяВ том то и дело, ы доках много теории, а как правильно не говорится. :(
>В том то и дело, ы доках много теории, а как правильно
>не говорится. :(
Хм, если нарезать небольшие каналы то это заметно, но если канал нарезаешь 256, то эти 30% и незаметят, а зачем обратка на столько, у меня с фтп обратка на 70% используется, у клиентов.
>>В том то и дело, ы доках много теории, а как правильно
>>не говорится. :(
>
>
>Хм, если нарезать небольшие каналы то это заметно, но если канал нарезаешь
>256, то эти 30% и незаметят, а зачем обратка на столько,
>у меня с фтп обратка на 70% используется, у клиентов.Дык обратку тоже должна прога считать... Хотя ХЗ, её на winsock писали, а там кривота масдайская :)
Специально для этого написал прогу, которая данные с карточки берёт.
Ща буду гонять снова, о результатах доложу :)
А вот результаты тестирования:
protocol: ftp from/to router
file: 5,008 MB
pipes: 64 Kbit upload 64 Kbit download (около 8 КБайт/с)Резудьтат:
В тот момент, когда даунлоад закончил передачу, аплоаду отставал примерно на 2 МБ. Фтп клиент подсказывал, что на тот момент в аплоад осталось еще 40% качать. Но что самое интересное в конце счетчики трансфера показывали следующее upload: 7133037 download: 686086 (траффик шел только по фтп!)
Озадаченный таким обстоятельством (разница чувствительная), я начал замерять обратные пакеты при полной загрузке линии в одну сторону.
Получилось: при полной загрузке upload, download: 260-312 байт/с. Наоборот: 330 байт/с.
Вообще что мне показалось странным - это то, что на download трафик постоянный и на полной загрузке в обе стороны бы примерно 7760 КБайт/с, а upload все время прыгал то 330 байт, то 9760 Байт. Возможно это погрешность в замерении моей программы, т.к. она каждую секунду вычитает из текущего показания счетчика новое показание, но то, что скорость 330 байт/с присутствовала в обоих тестах наводит меня на мысль, что когда идет обратный пакет, он не дает пройти через трубу остальным.
Или в чем может быть дело?
В следующий раз буду пробовать на других скоростях и искать новые зависимости.
А пока рад буду выслушать мысли..
Никаких идей?