Приоритезация и маршрутизация входящего трафика к виртуальным интерфейсам на основе порта с PF_RING

У меня есть система, подключенная к порту SPAN, который выдает почти постоянные 10 Гбит / с необработанного сетевого трафика. Моя основная цель - наблюдать за всем трафиком DHCP с нулевыми потерями, но мне также нужно иметь возможность наблюдать (приемлемо с потерями) поток не-DHCP-трафика. Собственный интерфейс в настоящее время отбрасывает около 0,25% всего трафика как есть.

Чтобы это работало, я предполагаю следующее:

  • Входящий SPAN-трафик поступает через единый интерфейс, который ставит DHCP превыше всего.
  • Трафик направляется на два виртуальных интерфейса в зависимости от того, является ли он DHCP (порт 67/68) или нет.

Код, который я использую для обработки / анализа трафика, можно запускать параллельно, и каждый экземпляр может просматривать свой интерфейс. Самым большим неизвестным мне является то, что он использует PF_RING. Я не очень хорошо знаком с PF_RING и не могу сказать, предотвращает ли онtcфильтрация на основе работает как я ожидал.

Я попытался заставить это работать через tc, но я изо всех сил пытаюсь заставить его работать должным образом. Я использовал следующую последовательность команд, гдеbr0 это исходный интерфейс ввода:

ip link add dummy0 type dummy
ip link set dummy0 up

# Create the ingress queue discipline
tc qdisc add dev br0 handle ffff: ingress

# Setup the filters to mirror UDP traffic to dummy0
tc filter add dev br0 parent ffff: protocol ip u32 match ip dport 67 0x00ff action mirred egress redirect dev dummy0
tc filter add dev br0 parent ffff: protocol ip u32 match ip dport 68 0x00ff action mirred egress redirect dev dummy0
tc filter add dev br0 parent ffff: protocol ip u32 match ip sport 67 0x00ff action mirred egress redirect dev dummy0
tc filter add dev br0 parent ffff: protocol ip u32 match ip sport 68 0x00ff action mirred egress redirect dev dummy0

Это похоже на зеркальное отображение трафика DHCP на виртуальный интерфейс (dummy0) на тестовой виртуальной машине, на которой не запущен PF_RING, но когда я пробую то же самое в своей полной системе, он дает ошибочные результаты (я получаю не-DHCP вещи на dummy0интерфейс, и похоже, что мне тоже не хватает DHCP-трафика). Я также не смог заставить приоритизацию на основе DHCP работать с интерфейсом ввода, что, я думаю, является просто моим непониманиемtc PRIO набор команд.

0 ответов

Другие вопросы по тегам