Разница в режиме eBPF XDP и режиме Socket Filter при анализе информации заголовка пакета - PullRequest
0 голосов
/ 06 апреля 2020

Мне было интересно, есть ли разница между режимом eBPF XDP и фильтром сокета eBPF при анализе информации заголовка пакета.

Скажем, я хочу получить IP-адрес назначения и исходный IP-адрес из заголовка пакета, используя eBPF.

Если между XDP и режимом фильтрации сокетов нет разницы, может быть, лучше реализовать функцию мониторинга пакетов в XDP, чем в программе фильтрации сокетов?

Если так Разве не лучше всегда отслеживать каждый входящий пакет, используя XDP вместо буфера сокета, поскольку XDP может перегрузить свои операции в NI C при использовании в режиме аппаратной разгрузки?

Спасибо!

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Если ваше ядро ​​ поддерживает прямой доступ к пакетам для программ с сокетным фильтром, разница между их синтаксическим анализом с помощью фильтра с сокетом или XDP-программ действительно невелика.

Однако существуют и другие причины, чтобы предпочесть t c или фильтр программ сокетов для программ XDP. Основная причина, вероятно, заключается в том, что XDP имеет относительно небольшое количество доступных помощников , особенно по сравнению с программами t c. Тогда разные типы программ имеют доступ к разной информации; например, программы t c имеют частичный доступ к skb, а программы фильтра сокетов могут обращаться к uid сокета и файлам cookie.

0 голосов
/ 06 апреля 2020

В качестве дополнения к ответу pchaigno: аппаратная разгрузка здесь имеет мало общего. Он поддерживается как для программ XDP, так и для программ T C и обеспечит одинаковую производительность в обоих случаях.

Анализ пакетов в XDP и фильтрах сокетов / T C одинаков, поэтому если вы хотите производительность go для XDP, период. Причины НЕ ИСПОЛЬЗОВАТЬ XDP - это причины, указанные в pchaigno: больше помощников для T C, доступ к буферу сокетов. Или отсутствие поддержки XDP вашим драйвером (в этом случае generi c XDP должен обеспечить производительность, эквивалентную T C). Обратите внимание, что эти дополнительные помощники и доступ к буферу сокетов могут быть недоступны для программ, выгруженных на оборудование (в NFP Netronome программы, выгруженные из XDP и T C, ведут себя одинаково и имеют доступ к одному и тому же подмножеству помощников).

Не относится к мониторингу входящего пакета, но еще одним большим преимуществом T C на данный момент является возможность добавления фильтров на выходной стороне. На момент написания этой статьи ведется работа по поддержке этого для XDP, но ничего не объединено с ядром.

...