Может ли TC ограничить полосу пропускания полем Qos заголовка IP
Мы разрабатываем клиент-серверные приложения. В нашем серверном приложении есть три типа сетевых данных: данные в реальном времени, такие как видео / аудио, критические данные, такие как данные базы данных, и данные BestEhaps как обычная передача файлов.
Мы планируем установить поле QOS каждого IP-пакета, чтобы указать, к какому типу данных из вышеупомянутых трех принадлежит пакет ip, затем использовать TC, чтобы установить разные максимальные скорости для этих трех типов данных.
Насколько я знаю, установка поля qos жизнеспособна, но мне интересно, можем ли мы ограничить скорость ip-пакетов, указав значение qos (значение поля QOS в заголовке IP).
1 ответ
Я думаю, вы имеете в виду 8-бит TOS
поле в заголовке пакета IPv4. Вы уже читали LARTC HOWTO? Это руководство, которое вам обязательно нужно прочитать. Вкратце, вам нужно
1) Определить QDISCs
а также CLASSes
в котором трафик классифицирован, расставлен по приоритетам и сформирован (выходной трафик может быть сформирован только!!!). Как правило, любой пакет, который необходимо отправить, ставится в очередь на QDISC
сетевого интерфейса.
CEIL=10
tc qdisc add dev eth0 root handle 1: htb default 15
tc class add dev eth0 parent 1: classid 1:1 htb rate ${CEIL}mbit ceil ${CEIL}mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 4mbit ceil ${CEIL}mbit prio 0
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 1mbit ceil ${CEIL}mbit prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 6mbit ceil ${CEIL}mbit prio 2
tc qdisc add dev eth0 parent 1:11 handle 110: sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 120: sfq perturb 10
Классы с нижним prio
поле опробовано первым. Таким образом, класс 1:10 может быть выделен для пакетов, требующих, например, минимальной задержки. Классы 1:11 и 1:12 прикрепили SFQ
дисциплина организации очередей для обеспечения более справедливого распределения пропускной способности.
2) Определите ФИЛЬТРЫ, чтобы поставить в очередь пакет справа CLASS
,
tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 10 fw classid 1:10
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 11 fw classid 1:11
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 12 fw classid 1:12
Это просто говорит о том, что пакет с отметкой 10 переходит в класс 10 и так далее.
3) Определите правила iptables для маркировки пакета, чтобы поставить его в очередь справа CLASS
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark 0x10
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Cost -j MARK --set-mark 0x11
iptables -t mangle -A PREROUTING -m tos --tos Maximize-Throughput -j MARK --set-mark 0x12
Я использую iptables tos
модуль, чтобы показать вам, как вы можете сопоставить конкретные значения TOS
поле и отметьте его соответственно. Для получения дополнительной информации об этом модуле выполните
iptables -m tos --help