Была поставлена задача ограничивать пользователей по количеству сесий и по скорости. Ограничения должны не мешать нормальному веб-серфингу даже по "тяжелым" сайтам (например таких как vkontakte.ru), пользования аськой, возможно что то поставить на закачку. Должна быть исключена возможность субпровайдинга и торентов.Попытка реализации:
На шлюзе стоит FreeBSD 7.0-RELEASE, для ограничения выбран ipfw из-за достаточно простого применения.
Набор правил которые используются в ipfw
ipfw -q add 500 pipe 500 ip from any to table(10) out
ipfw -q add 600 pipe 600 ip from table(10) to any out limit src-addr 30
ipfw -q pipe 500 config bw 5000Kbit/s
ipfw -q pipe 600 config bw 5000Kbit/s
ipfw -q add 700 allow ip from any to table(10) out
ipfw -q add 700 allow ip from table(10) to any out
В таблицу 10 заносятся все пользователи на которых действуют эти ограничения.
Решено резать только исходящие потоки, чтоб исключать такие моменты: как Пользователь открыл пару страниц, от него запросы ушли. Он потом решил, что его не интерисует больше данная страница и закрывает ее, пытаясь открыть другую. Ответы от ненужно страницы будут уже не нужными, но будут мешать открытию нужной страницы, внося задержки.
Для тестов на пользовательских компах использовалась ОС Windows XP Prof SP3 с последними обновлениями.
Что получено - нарезка трафика выполняется правильно, ограничение сесий действует, все как бы хорошо, но есть одно большое НО...
Собственно проблема:
Проблем нет при использовании Opera (8.x-9.x) или Mozila Firefox (2.x-3.x) (даже при ограничении конектов на 15), она появляется когда пользователь использует IE7 или браузер использующий его ядро (например Maxton). Некоторые картинки не подгружаются, а вместо них появляются красные крестики, в эти же моменты часто выбивает icq и putty.
Что пытался делать:
1. Пробовал с разных компов, ситуация не меняется.
2. Увеличивал колличство конектов до 100 , проблема остается. При увеличении до 150 иногда картинки все же вываливаются.
3. Отключал антифишинг и воообще все модули запуском из командной строки iexplore -extoff
4. По умолчанию количество одновременных сесий равно 10, пробовал уменьшать даже до 1. Не помогло.
5. В настройке пайпов пробовал ставить queue 1024Kbit/s
6. Пробовал через пайпы пропускать без ограничений только tcp сесии с флагом established. А Ограничения налаживать правилом, стоящим раньше "ipfw -q add 400 allow ip from any to table(10) limit src-addr 30 out setup"
Все вышеописанное не помогло :(, подскажите в чем может быть такая трабла.
Чем так сильно отличается работа IE от Mozila и Opera?