Назад | Перейти на главную страницу

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

Кто-нибудь знает о продукте на базе FreeBSD, Linux или Windows, который может автоматически понижать приоритет сетевых пакетов пользователей, вызвавших большой объем сетевого трафика в последнюю минуту? (Стандартные механизмы FreeBSD pf и ALTQ не могут этого сделать.)

я не говорить об определении приоритета пакетов для определенных протоколов или номеров портов; Я хочу динамически понижать приоритет в зависимости от фактического использования полосы пропускания пользователем.

Я написал сценарий для настройки HFSC + SFQ для Linux (с использованием tc); HFSC должен делать то, что вы хотите, а SFQ сверху обеспечивает равноправие между массовыми потоками. Результат работает для меня очень хорошо, обеспечивая низкую задержку даже перед лицом нескольких массовых загрузок или загрузок.

Вот сценарий: https://gist.github.com/939373

В некоторой степени это можно сделать с помощью ALTQ. Что вы можете сделать с помощью ALTQ, так это понизить полосу пропускания определенного канала через определенное время при использовании HFSC. Достигает ли это того, что вам нужно, во многом зависит от протокола.

Доступна подробная информация о PF и HFSC. Вот и вы будете искать вариант 7 для своей реализации. Он не «снижает приоритет через некоторое время», а «изначально предоставляет большую пропускную способность». Это может иметь тот же желаемый конечный результат.

Эти решения для Windows очень близки к вашим потребностям: Разделитель полосы пропускания и Диспетчер пропускной способности

Если бы я использовал Linux, я бы использовал tc для управления потолком пиков и SNMP для подсчета гигабайт, переданных на порты коммутатора, чтобы наказать активных пользователей (с приоритетами пакетов или более низкими потолками).

Я не парень PF / ALTQ, но я знаю IPFW / DummyNet, и он может делать то, что вам нужно, распределяя приоритет по скорости использования.

Очень простой пример (поскольку у меня нет подробностей о том, как настроен ваш маршрутизатор):

ipfw pipe 1 bw 300Kbit/s
ipfw sched 1 config pipe 1 mask src-ip 0xffffffff
ipfw queue 1 config sched 1
ipfw add 10 queue 1 ip from 192.168.1.0/24 to any

Я бы не рекомендовал использовать эти правила без изменений ....

Они просто берут весь трафик, идущий с 192.168.1.0, пропускают его через Очередь 1.
Очередь 1 связана с расписанием 1
Расписание 1 использует FWQ + для распределения полосы пропускания (когда ее недостаточно) на основе наименьшего использования получает наивысший приоритет. Потоки группируются по IP-адресу источника (я предполагаю, что вы хотите, чтобы весь трафик с определенного IP-адреса обрабатывался одинаково).
Расписание ограничено каналом, который сообщает ему, что у него есть 300 Кбит / с для работы (в противном случае он предположил бы, что он имеет всю скорость интерфейса Ethernet, а ваше интернет-соединение, вероятно, не так быстро). Вы бы изменили 300 Кбит / с на любое ваше фактическое соединение.

Краткое объяснение того, что это делает: это создаст очередь пакетов, по умолчанию глубиной 50 пакетов. Допустим, у вас есть два пользователя в вашей сети, один из которых передает файлы BitTorrent через соединение, а другой просто проверяет свою электронную почту; ни один из них никоим образом не ограничивает их использование. IP-адрес, с которого BitTorrent-клиент отправляет, будет генерировать достаточно трафика, чтобы заполнить очередь и переполнить Интернет-соединение. Когда человек, проверяющий свою электронную почту, отправляет что-то, оно будет помещено в первую очередь в очередь (и, следовательно, будет отправлено как можно быстрее), потому что они не отправляли данные. Если бы ситуация была с двумя клиентами BT, каждый из них получал бы половину соединения, так как у них обоих была бы постоянно заполненная очередь.

DummyNet позволяет очень сложное формирование трафика с правильными параметрами, вам просто нужно быть очень конкретным в отношении того, что вы пытаетесь достичь. Также имейте в виду, что маршрутизатор может контролировать только то, что он отправляет, он никогда не может контролировать то, что получено (потому что это контролируется тем, что его отправляет). Подумайте, как и ваш почтовый ящик, почтальон определяет, что вы получаете, а вы определяете, что вы отправляете через него.