Как получить доступ к различным уровням в пакете, полученном через DPDK?

Я бегу dpdk-stable-18.11.9 по Ubuntu 18.04. Я использовал функцию rte_eth_rx_burst(port_id,queue_id,pkts_burst, MAX_PKT_BURST) для приема пакетов.

Я хочу получить доступ к различным заголовкам пакета, а именно eth_hdr+Ip_hdr+udp_hdr+udp_payload для действительного pkts_burst[0].

Например, в Wireshark я могу показать вам, что мне нужно, из pkts_burst [0].

введите описание изображения здесь

ВСЕ 1512 БАЙТОВ КАК КРАСНЫЙ РАЗДЕЛ ВСТАВЛЯЮТ В МАССИВ 1512 БАЙТОВ:

введите описание изображения здесь

Как я могу это сделать?


person Alexanov    schedule 17.08.2020    source источник
comment
@VipinVarghese, пожалуйста, помогите мне :)   -  person Alexanov    schedule 17.08.2020
comment
пожалуйста, поделитесь своей текущей логикой кода, которая обращается к заголовкам пакетов   -  person Vipin Varghese    schedule 17.08.2020
comment
Думаю, я объяснил причину отрицательного голоса. См. Также [meta.stackoverflow .com / questions / 289631 / и [meta.stackexchange.com/questions/152174/. Пожалуйста, поделитесь своим примером кода, который у вас не работает, я очень рад проверить и предположить, что не так. Если требуется рабочий код с нуля, используйте freelancer.com or upwork.com   -  person Vipin Varghese    schedule 17.08.2020
comment
Я смиренно прошу проверить комментарий от stackoverflow.com/questions/63392719/ Прежде чем критиковать или обвинять факты или люди. Я надеюсь, что вы поделитесь с нами своим примером кода, чтобы мы его рассмотрели, в противном случае вы будете открывать запрос в StackOverflow as bountied или up work or freelancer для кода с нуля.   -  person Vipin Varghese    schedule 17.08.2020
comment
@Alexanov Все, что вы получаете, это байты. Wireshark делает всю работу, чтобы выяснить, что означают байты, и вы тоже можете. Я предлагаю вам изучить эти протоколы и то, как работают заголовки пакетов.   -  person user253751    schedule 17.08.2020
comment
несмотря на то, что проблема обнаружена и решение предоставлено, stackoverflow.com/users/690017/andre-hofmeister считает, что отклонить изменения, мотивируя это This edit defaces the post in order to promote a product or service, or is deliberately destructive.   -  person Vipin Varghese    schedule 18.08.2020
comment
то же самое в случае с stackoverflow.com/users/8242447/   -  person Vipin Varghese    schedule 19.08.2020


Ответы (1)


Используйте Как мы можем получить доступ к полезной нагрузке полученных пакетов в DPDK 18.11.9 в качестве справочного кода для доступа к полезной нагрузке до заголовка IPv4. затем получить доступ к слою UDP с помощью

#include <rte_udp.h>

внутренняя функция процесса

struct udp_hdr *udp = (struct udp_hdr *)((unsigned char *)ipv4_hdr +                                      
 sizeof(struct ipv4_hdr));
unsigned char *paylaod = (unsigned char *) (udp + 1);

Примечание: заголовок UDP и полезная нагрузка UDP сразу после заголовка IP.

P.S. потратил отдельные звонки по скайпу, чтобы объяснить и убедиться, что информация передается.

person Vipin Varghese    schedule 18.08.2020