2

Я использую Ubuntu 12.10 и ищу способ формирования сетевого трафика на основе IP-адреса. У меня есть локальная сеть, скажем, с 192.168.1.2 - 192.168.1.254. Сервер находится на 192.168.1.1. Все IP-адреса должны иметь максимально возможную скорость сети (все порты, но Samba является фактическим виновником). В тот момент, когда подключается определенный диапазон IP или IP-адресов (например, 192.168.1.100), этому IP-адресу должна быть предоставлена полная скорость, а скорость всех остальных IP-адресов должна быть снижена до минимума. Как только трафик IP-адресов завершен, скорость остальных подключенных IP-адресов должна быть восстановлена.

У меня в значительной степени есть сервер, и если к нему подключается мой собственный компьютер, мне нужна полная скорость. Только если я не использую сервер, остальные должны иметь полный доступ.

Я нашел некоторые решения онлайн с tc, но все они ограничивают определенные IP-адреса с определенной скоростью. Однако я хочу, чтобы у всех людей была максимальная скорость, кроме случаев, когда подключен определенный IP. Так что в основном мой IP должен иметь самый высокий приоритет, а остальные - самый низкий приоритет.

Может кто-нибудь помочь мне с помощью сценария или, может быть, программа, которая уже существует?

1 ответ1

2

tc это путь. Хитрость в том, чтобы расставить приоритеты трафика, не ограничивая его.

http://www.lartc.org/howto/lartc.qdisc.classful.html, раздел 9.5.3 "Диско PRIO"; по умолчанию он создает 3 очереди, но вы можете проигнорировать третью. Самый простой подход был бы:

Создать очереди дисциплин (qdisc)

tc qdisc add dev eth0 root handle 1: prio

tc qdisc add dev eth0 parent 1:1 handle 10: sfq
tc qdisc add dev eth0 parent 1:2 handle 20: sfq
tc qdisc add dev eth0 parent 1:3 handle 30: sfq

Все они имеют одинаковый алгоритм очереди; затем назначьте свои серверы (IP 192.168.1.0-127 в этом случае) для обработки 10:, а остальные 20::

tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.0/25 flowid 10:
tc filter add dev eth0 protocol ip parent 1:2 prio 2 flowid 20:

(Отказ от ответственности: с тех пор, как я коснулся этого материала, прошло много времени, возможно, вам придется поэкспериментировать со значениями после parent и flowid)

Использование диапазонов с степенями 2 намного проще, чем десятичные пределы. /25 после IP-адреса игнорирует последние 7 бит IP-адреса, следовательно, диапазон от 0 до 127. Используйте /26, чтобы ограничить диапазон до 0..63, если необходимо.

На той же странице обсуждается Hierarchical Token Bucket, который является более тонким способом распределения пропускной способности. Хитрость заключается в том, чтобы создать 2 класса с перекосом полосы пропускания, скажем 1:10 (100 Мбит против 1000 Мбит). Это оставит некоторую пропускную способность для других ваших клиентов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .