#dpdk
Вопрос:
Я пытаюсь интегрировать свое пользовательское приложение с примерами DPDK, используя измененный файл Makefile
- Базовое приложение переадресации (l2fwd и скелет) с пользовательским кодом приложения и файлом Makefile работает без проблем.
- Приложение ACL L3fwd с пользовательским кодом приложения и файлом Makefile не может идентифицировать порты сетевой карты
Журнал ошибок: port is not enabled in port mask
NIC: Mellanox PMD
Пользовательский файл создания:
link_directories(/usr/local/lib/aarch64-linux-gnu/)
include_directories(/usr/local/include/)
link_directories(/opt/mellanox/dpdk/lib)
SET(DPDK_LIBS "-Wl,--whole-archive -l dpdk -Wl,--no-whole-archive")
add_executable( exAppln exAppln.c )
target_link_libraries(exAppln LINK_PUBLIC pcap ${DPDK_LIBS} )
Аргумент, передаваемый для пользовательского приложения, является ./Sample -l 1,2 -n 4 -- -p 0x3 --config="(0,0,1)" --rule_ipv4="/root/rule_ipv4.db" --rule_ipv6=/root/rule_ipv6.db
[ПРАВКА-1] на основе разговора через комментарий
- NIC идентифицируется как Mellanox, но тип mlx5 или mlx6 не является
- На основе аргумента Makefile это ссылка на общую библиотеку.
- Аргументы командной строки не изменяются для ввода PCIe-зонда для общей библиотеки PMD для mellanox
- нет записи журнала для
makefile
приложения и--log-level
для приложения.
Комментарии:
1. пожалуйста, обновите используемую версию DPDK? ваше пользовательское приложение использует файл макета DPDK или использует пользовательский файл макета?
2. Я использую пользовательский файл создания. В системе установлены две версии DPDK 20.11 и 19.05. В файле cmakefile пользовательского приложения я связался с двумя версиями dpdk, так как в последней версии отсутствовали некоторые файлы so.
3. @imo пожалуйста, обновите вопрос с помощью пользовательского файла makefile и используемого сетевого адаптера PMD для ясности
4. запрошена информация о PMD сетевой карты, но у вас есть общее имя интерфейса ядра. Это бесполезно. Но на основании аргументов ссылки в файле makefile проблема идентифицирована и решение предоставлено в качестве ответа, пожалуйста, примите или поддержите, чтобы закрыть проблему.
5. все еще ждете с вашего конца , чтобы поделиться обновлением при запуске с опцией
-d
, определяющей, используется ли сетевой адаптер mellanox 5 или mellanox 6, как указано, ссылки на файлы makefile по умолчанию статически (можно перепроверить на основе журналов make)., запрошено создать образец приложения DPDK с теми же флагами для перекрестной проверки
Ответ №1:
Библиотеки DPDK могут быть связаны статически или в общем режиме. На основе обновления -Wl,--whole-archive -l dpdk -Wl,--no-whole-archive
текущая привязка выполняется в общем режиме.
Чтобы включить зондирование желаемого PMD, используйте аргументы DPDK rte_eal_inti -d
. Пример
- для использования в сети Fortville
-d librte_pmd_i40e.so
- для использования 82599ES
-d librte_pmd_ixgbe.so
- [редактировать-1 на основе обновления комментариев] для mellanox net_mlx5, пожалуйста, используйте
-d librte_pmd_mlx5.so
.
записка:
- убедитесь
export LD_LIBRARY_PATH=/usr/local/lib/aarch64-linux-gnu/
, что установлен параметр, указывающий путь к нужному DPDK PMD. - если можно выполнить связывание со статическими библиотеками, вы можете избежать передачи опции
-d
Комментарии:
1. Используется сетевой адаптер Mellanox, а LD_LIBRARY_PATH имеет значение /opt/mellanox/dpdk/lib . Похоже, здесь проблема в другом. Первоначально я использовал пример приложения для базовой переадресации, и интегрированный код выполнялся без ошибок, так как я хотел использовать фильтрацию пакетов, я переключился на код acl l3fwd
2. @ima если вам нужны библиотеки mellanox, вы также должны указать свой путь
export LD_LIBRARY_PATH=/usr/local/lib/aarch64-linux-gnu:/opt/mellanox/dpdk/lib
. вы передали pmd mellanox с опцией-d
rte_eal_init? Работает ли ваш сетевой адаптер mellanox с DPDK/example/l3fwd, построенным в режиме общей библиотеки (создание приложения вручную)?