Как я могу создать пакет полезных данных IP с mbuf? - PullRequest
0 голосов
/ 28 марта 2020

Мое требование - создать Ethe rnet -IP-Payload с DPDK Mbuf. Приложение DPDK запущено на виртуальной машине, функция генерации пакетов вызывает API (прикреплено на втором изображении). Я отправляю пакет через интерфейс DPDK и переписываюсь на моей хост-системе (W10).

Wireshark, не могу понять протокол ethe rnet как IP. Что-то не так?

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

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

1 Ответ

0 голосов
/ 28 марта 2020

пара вещей, которые вы можете исправить в своем коде DPDK.

  1. Сетевые пакеты имеют порядковый номер, я предполагаю, что вы используете гостевую ОС на x86. Если это так, пожалуйста, убедитесь, что вы исправили порядковый номер.
  2. DPDK API rte_pktmbuf_mtod возвращает вам начало пакета. Пожалуйста, сначала заполните заголовок ethe rnet, затем переместите 14 байтов ie struct rte_eth_hdr для ввода типа к IP и заполните данные.
  3. в поле IP, поле контрольной суммы установлено как 0. Пожалуйста, перекрестно проверьте, активируете ли вы разгрузку IP-CHECKSUM в port_init.
  4. Все поля в IP должны также соответствовать БОЛЬШОМУ порядку байтов.
  5. В mbuf также есть порт. С rte_mbuf_allo c это будет 0, но для отправки на другой порт это должно быть правильное значение.

Наблюдения Wireshark

  1. Байт 13 и 14 равен 0xa50. Это выглядит так, как будто ваша предполагаемая полезная нагрузка перезаписана
  2. Байт 1 равен 0x45, что ясно показывает, что вы сначала пишете содержимое заголовка IP вместо ethe rnet. Пожалуйста, используйте шаг 2 из исправлений DPDK.
...