Я пытаюсь найти кратчайший путь между двумя хостами H1 и H2, используя код Дейкстры. Установка условия в одном из переключателей на этом пути. условие: если пакет отправляется в H2, то путь автоматически меняется.
Пользуюсь Mininet, думал использовать tc для уменьшения исходящей полосы пропускания путем фильтрации пакетов, которые поступают на коммутатор и отправляются в H2, код Дейкстры изменит путь.
Я хочу спросить, могу ли я использовать (tc qdisc) контролировать использование исходящей полосы пропускания по данному каналу? Делает tc влияние на физическую ссылку или смоделированные ссылки?
Да, tc
предназначен для этого. ТК работает с любыми типами интерфейсов (физическими и программными). Самый простой планировщик очереди - это htb
(Иерархическая корзина токенов).
Типичная простая конфигурация:
Суммарная пропускная способность дочерних классов не должна превышать пропускную способность родительского класса. В противном случае планировщик не будет точным.
Предположительно пропускная способность интерфейса составляет 100 Мбит / с. Итак, команды для вашей конфигурации будут выглядеть так:
tc qdisc add dev enp4s0f0 root handle 1: htb default 10
tc class add dev enp4s0f0 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit quantum 15000
tc class add dev enp4s0f0 parent 1:1 classid 1:10 htb rate 80Mbit ceil 100Mbit quantum 15000
tc class add dev enp4s0f0 parent 1:1 classid 1:11 htb rate 10Mbit ceil 10Mbit quantum 15000
tc class add dev enp4s0f0 parent 1:1 classid 1:12 htb rate 10Mbit ceil 100Mbit quantum 15000
tc qdisc add dev enp4s0f0 parent 1:10 handle 10: sfq
tc qdisc add dev enp4s0f0 parent 1:11 handle 11: sfq
tc qdisc add dev enp4s0f0 parent 1:12 handle 12: sfq
После того, как иерархия классов настроена, следует настроить классификацию. Есть много типов классификаторов с различными функциями и разным уровнем дружбы с пользователями. Классификатор проверяет пакеты по заданным критериям. Если пакет совпадает, пакет назначается классом.
tc filter add dev <iface> parent 1: prio 1 protocol ip 800::1 u32 match dst ip 192.168.10.2/32 classid 1:11
tc filter add dev <iface> parent 1: prio 1 protocol ip 800::2 u32 match dst ip 192.168.10.0/24 classid 1:12
В этом небольшом примере пакеты для размещения 192.168.10.2
будет передан в класс 1:11 и, как следствие, ограничен 10 Мбит / с. Пакеты на другие адреса из 192.168.10.0/24
подсеть будет передана в класс 1:12. Все остальные пакеты будут переданы классу по умолчанию (1:10).
Это быстрый старт использования tc
инструмент.
Если есть вопросы, задавайте.