Конфигурация QoS для среднего провайдера
Какова лучшая платформа QoS на основе Linux для реализации конфигурации, в которой все клиенты DSL 256 Кбит / с (все принадлежат к одному и тому же диапазону IP) получают гарантированную скорость 200 Кбит / с с одним правилом QoS?
5 ответов
Стандартная Linux QoS/ система управления трафиком называется [tc][1]
(управление движением).
Вам нужно будет инициализировать цепочку, установить ее свойства, а затем добавить к ней ваши IP-адреса, что-то вроде этого:
#!/bin/bash
DEV=eth0
PATH=$PATH:/sbin
tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 20
tc class add dev $DEV parent 1:1 classid 1:10 htb rate 2000kbps ceil 2000kbps burst 500kb quantum 1500
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 match ip dst 10.10.10.1/24 flowid 1:10
tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 match ip src 10.10.10.1/24 flowid 1:10
И будет ли указанная конфигурация назначать каждому IP в диапазоне требуемую скорость без необходимости иметь отдельное правило для каждого отдельного IP?
Нет не будет Как работает HTB, вы можете назначать тарифы для всего сегмента, а не для отдельных IP -адресов. То, что пытался сделать Caleb, - это равномерно распределить доступную полосу пропускания в 2000 кбит / с через SFQ qdisc среди 10 ваших клиентов. Однако это не будет работать должным образом - SFQ рассчитывает планирование для каждого соединения, а не для IP - если у кого-либо из ваших клиентов будет больше открытых соединений, требующих пропускной способности, чем у других, он получит в целом большую пропускную способность.
Есть еще один планировщик, называемый ESFQ, который расширяет SFQ, чтобы иметь возможность планировать per-ip, но даже тогда вы только запланировали бы активный в настоящее время трафик, не ограничивая какого-либо данного пользователя скоростью 200 кбит / с. Я не знаю, есть ли какой-нибудь легкодоступный qdisc, который позволил бы вам сделать это, но учитывая огромное количество различных проектов qdisc, я бы предположил, что так.
Другая проблема заключается в том, что tc только планирует исходящий трафик на интерфейсе, входящий трафик никогда не учитывается. Устройство промежуточной очереди (IMQ) помогает обойти это ограничение.
Для гарантий и справедливого разделения, планировщик HFSC (перенесенный из altq в Linux в BSD) - отличная вещь. (по крайней мере, он не такой неуклюжий и грубый, как HTB.) К сожалению, настройка любого формирования трафика в Linux - это болезненный процесс с жесткой кривой обучения, и, поскольку интерфейс tc просто недружелюбен, я бы предложил использовать MasterShaper или что-то подобное внешний интерфейс.
(PS. Если вы решите управлять tc по своему усмотрению, используйте функцию ядра IFB для формирования загрузки - это похоже на IMQ, предложенный здесь ранее, но работает на более новых ядрах и немного лучше подходит для всей платформы)
Возможно, мои предыдущие ответы, связанные с Linux/QoS, также могут вам помочь:
Mikrotik RouterBoards;) Лучшая платформа, которую вы можете иметь. Их ОС (RouterOS) основана на Linux, но, будучи приложением, у вас нет доступа к реальной оболочке или файловой системе.
Это небольшая платформа для интернет-провайдеров, поэтому вам они действительно нравятся.