В настоящее время я сталкиваюсь с проблемой в моем коде.
В основном я эмулирую соединение между двумя компьютерами, подключенными через Ethernet-мост (Raspberry Pi, Raspbian). Таким образом, я могу влиять на параметры этого соединения (такие как пропускная способность, задержка и многое другое) через tc qdisc. Это отлично работает, как вы можете видеть в коде ниже.
А теперь о моей проблеме:
Я также пытаюсь исключить определенные диапазоны портов, что означает порты, на которые не влияют заданные мной параметры (задержка и т. д.).
Для этого я создал две прио-группы. Приоритетная полоса 0 (более высокий приоритет) обрабатывает мое исключение порта (уже в родительском корне). Затем в приоритетном диапазоне 1 (более низкий приоритет) я уменьшаю задержку через netem.
Весь трафик данных будет проходить через мой приоритетный диапазон 1, остальные (исключенные данные) будут проходить без влияния через приоритетный диапазон 0.
Я не получаю ошибок ядра при выполнении моего кода !
Но я получаю filter parent 1: protocol ip pref 1 basic
только после ввода sudo tc filter show dev eth1
. Мой матч даже не упоминается.
Что я сделал не так?
Можете ли вы объяснить мне, почему я не получаю ожидаемого результата?
ЭТО МОЙ КОД (в правильном порядке выполнения):
РОДИТЕЛЬСКИЙ КОРЕНЬ
sudo tc qdisc add dev eth1 root handle 1: prio bands 2 priomap 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- Это создает два приобанда (1:1 и 1:2)
ДИАПАЗОН 0 [ИСКЛЮЧЕНИЕ ПОРТА | порт 100 - 800]
sudo tc qdisc add dev eth1 parent 1:1 handle 10: tbf rate 512kbit buffer 1600 limit 3000
- Создает tbf (фильтр Token Bucket Filter) для установки пропускной способности
sudo tc filter add dev eth1 parent 1: protocol ip prio 1 handle 0x10 basic match "cmp(u16 at 0 layer transport lt 100) and cmp(u16 at 0 layer transport gt 800)" flowid 1:1
- Создает фильтр с определенным дескриптором, исключающий порты с 100 по 800 из приоритетного диапазона 1 (на которые влияют пакеты данных)
ДИАПАЗОН 1 [ЭМУЛЯЦИЯ СЕТИ]
sudo tc qdisc add dev eth1 parent 1:2 handle 20: tbf rate 1024kbit buffer 1600 limit 3000
- Сравните с ТБФ выше
sudo tc qdisc add dev eth1 parent 20:1 handle 21: netem delay 200ms
- Создает через netem задержку в 200 мс
Здесь вы можете увидеть мою иерархию в виде изображения
Еще раз вопрос:
Мое совпадение с фильтром даже не упоминается.
Что я сделал не так?
Можете ли вы объяснить мне, почему я не получаю ожидаемого результата?
Я ценю любую помощь! Спасибо за ваши старания!
~ротсечс