Я ищу способ обрабатывать пакеты на сервере Linux определенным образом - мне нужно запустить некоторую настраиваемую логику для каждого пакета, затем (возможно) предпринять некоторые действия с пакетами и позволить ядру маршрутизировать его по своему усмотрению. Мои конкретные варианты использования:
Я просмотрел некоторые утилиты и инструменты Linux, такие как tc
, XDP
, DPDK
и другие FD.io
решения (VPP
), но я не мог найти простой способ отработать эти технологии простым способом, чтобы достичь того, что я хочу. Желательно, чтобы мои проверки и действия могли выполняться в современной, гибкой среде и коде (не запрашивая здесь python или Java, но bash был бы предпочтительнее некоторого кода C, подобного ядру).
Как обычно можно реализовать такие действия на машине с Linux? Какие-либо передовые методы или технологии, которые позволяют программно реализовать все упомянутые модификации и функции?
Ура.
Использование XDP INGRESS было бы идеальным кандидатом для сценариев igmp и tcp. Но для ipv6, поскольку у вас больше проверок и границ, не знаю, как это будет переводиться. Недостатком здесь является отсутствие конкретного пользовательского приложения, поэтому нельзя использовать режим нулевого копирования пользователя и процесс пакет за пакетом eBPF в JIT песочницы. Зеркало пакетов для идентификаторов тоже будет трудным.
DPDK с TAP или KNI действительно может быть подходящим вариантом, поскольку вы можете группировать и амортизировать стоимость. Но это связано с перехватом пользовательского пространства.
Вот мои предложения
Или