Каково лучшее решение для управления трафиком в большой системе (около 2000 пользователей)?

11

следующая ситуация: мы являемся группой студентов, которые управляют подключением к Интернету для местных общежитий, в общей сложности около 2000 конечных пользователей.

У нас есть система точек трафика, каждый мегабайт или точка загрузки загружаются, новые точки добавляются с каждым часом. В настоящий момент мы блокируем доступ пользователя к Интернету, когда он потратил все свои очки (поместив его в политику REJECT в iptables на нашем маршрутизаторе шлюза Debian).

Мы хотели бы только ограничить пропускную способность пользователя. Каков наилучший способ сделать это?

Простой ответ - установить ограничение скорости для порта коммутатора пользователя (в основном Cisco Catalyst 3550). Однако это нежелательно, поскольку трафик внутри нашей собственной сети и сети университетов должен оставаться неограниченным. Есть ли способ ограничить полосу пропускания только для пакетов с определенным целевым или исходным IP-диапазоном (таким образом, как выход, так и вход) в Cisco IOS? Я не мог ничего найти.

Другим способом было бы контролировать трафик на нашем маршрутизаторе шлюза. Несколько решений приходят мне на ум:

  • tc или tcng - кажется, что оба имеют довольно загадочный синтаксис, и ни один не предлагает хорошие функции для управления трафиком для IP. Выделенный QDisc для такого количества людей, вероятно, сильно замедлит работу маршрутизатора. Кроме того, документация по обоим довольно устарела.

  • shorewall - кажется, имеет довольно аккуратный синтаксис для конфигураций, однако я не уверен, может ли он обрабатывать такой объем трафика и пользователей и подходит ли он для ограничения трафика на IP

  • pfSense - выглядит как ОС, предназначенная для таких целей, как наша. Однако для этого потребуется полная переустановка нашего шлюзового маршрутизатора. У нас нет других систем BSD, и pfSense должен был бы иметь очень хорошие возможности учета трафика (мы сейчас используем fprobe-ulog и ulog-acctd).

Какой у тебя опыт? Какое решение соответствует нашим потребностям и его легче всего обслуживать? У тебя есть другие идеи?

Если вам нужна дополнительная информация о нашей системе, пожалуйста, не стесняйтесь спрашивать.

Заранее спасибо.


РЕДАКТИРОВАТЬ : я внедрил систему с iptablesи tc.

У каждого пользователя есть / 28-подсеть, VPN-IP (оба из 10.0.0.0/8) и внешний IP-адрес. Все они управляются через одну цепочку iptables. Эта цепочка имеет только одно правило, простое RETURN.

Каждые пять минут скрипт Python считывает счетчики байтов этих правил. Он сбрасывает счетчики и обновляет учетную запись пользователя в нашей базе данных PostgreSQL.

Если баланс очков пользователя уменьшается ниже определенного порога, для этого пользователя создаются два класса tc (один для входящего, другой для исходящего интерфейса на нашем маршрутизаторе шлюза), IP-адреса вводятся в фильтры tc, принадлежащие этим классам. Классы ограничены по скорости HTB.

По сравнению с предыдущей системой с fprobe-ulogи ulog-acctdэто гораздо быстрее , так как подсчет байт осуществляется IPTables.

Скорость сети значительно улучшилась для наших пользователей.

Кристоф Вурм
источник

Ответы:

2

Я не уверен, насколько вы заинтересованы в переконфигурировании всей вашей установки (т.е. заменить Debian), или насколько возможно было бы разместить что-то подобное за вашим шлюзом, но FreeBSD имеет функцию в ipfw, известную как dummynet . Поскольку, похоже, вам не хочется получать выделенный аппаратный формирователь трафика, это может быть вариантом для вас. В настоящее время мы используем его для блокирования SMTP-трафика, входящего и исходящего через один из наших прокси-шлюзов, чтобы предотвратить перегрузку устаревшей серверной системы NFS и, как следствие, ее отсутствие ответа.

С некоторыми сценариями и интеллектуальной настройкой ваших наборов правил станет возможным управлять трафиком тысячами отдельных IP-адресов.

казарка
источник
0

Я должен спросить, что мы используем, но у наших сотрудников ResTek есть устройство на границе с Интернетом, которое выполняет функции качества обслуживания. Он имеет приоритет по умолчанию для неклассифицированных потоков и определяет приоритет другого трафика на основе правил. Это приоритетная функция, которая действительно продает его, так как они также работают с кэширующим кластером на основе Squid, который указан в качестве наивысшего приоритета в пограничном устройстве. Затем люди в своей сети могут выбрать веб-серфинг со стандартным (и несколько отстойным) приоритетом или использовать прокси и получить очень быстрый ответ. Они также принимают запросы приоритета игрового сервера, поскольку они чувствительны к задержке, но, как правило, имеют низкую пропускную способность.

Обработка запросов игрового сервера требует немалых усилий, но они постепенно уходят на второй план, поскольку все больше и больше игр удаляются от частных серверов. В целом, я слышал, у них это хорошо работает. Они могут удерживать такие вещи, как bittorrent, от затопления всего остального трафика, и при этом поддерживать быструю загрузку YouTube.

sysadmin1138
источник
0

При таком количестве пользователей большинство простых программных вещей начнут разрушаться.

Подумайте о том, чтобы посмотреть на упаковщик и подобные устройства В наши дни они почти дороже, чем просто покупают больше пропускной способности (в США и Европе у нас, бедных, в Австралии все еще очень высокие показатели).

LapTop006
источник
К сожалению, мы не можем позволить себе вкладывать в это много денег ни для выделенного формирователя пакетов, ни для увеличения пропускной способности. Наша система работает в данный момент, вопрос в том, как вместо того, чтобы блокировать пользователей, которые превысили выделенный им трафик, мы можем только уменьшить доступную им полосу пропускания.
Кристоф Вурм
0

dummynet - очень хорошее предложение на мой взгляд. Но я уверен, что iptables также способен формировать трафик , так что вы можете просто сделать это на своем Debian Box.

мономиф
источник
0

tc должен работать нормально. Я считаю, что вы хотите изменить текущие правила iptables, чтобы пометить, а не REJECT трафик, тогда вы можете использовать небольшое количество правил tc, чтобы применить формирование трафика к этим помеченным потокам.

также посмотрите ipset для управления списком удушенных пользователей http://ipset.netfilter.org/

Джастин
источник
0

Trafficpanel, кажется, решение. Среди других особенностей:

  • Ограничение максимальной скорости HTTP на соединение
  • Ограничение общего объема трафика веб-ресурсов на хост локальной сети
  • Журнал интернет-трафика на хост локальной сети
  • Ограничение максимальной скорости трафика на хост локальной сети
  • Ограничение общего объема интернет-трафика на хост локальной сети

На самом деле, никогда не пробовал эту вещь, но выглядит хорошо.

AlekS
источник