Назад | Перейти на главную страницу

Может ли TC ограничивать пропускную способность полем Qos в IP-заголовке

Мы разрабатываем клиент-серверные приложения. В нашем серверном приложении есть три типа сетевых данных: данные в реальном времени, такие как видео / аудио, критические данные, такие как данные базы данных, и данные BestEfforts, как данные обычной передачи файлов.

Мы планируем установить поле QOS каждого IP-пакета, чтобы указать, какому типу данных из трех вышеупомянутых принадлежит IP-пакет, а затем использовать TC, чтобы установить разные максимальные скорости для этих трех типов данных.

Насколько я знаю, установка поля qos жизнеспособна, но мне интересно, можем ли мы ограничить скорость IP-пакетов, указав значение qos (значение поля QOS в IP-заголовке).

Я думаю вы имеете в виду 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