Может ли 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
Другие вопросы по тегам