我试图了解 DPDK 的 basicfwd 示例的转发机制。任何人都可以帮助我初始化和编辑有效载荷rte_mbuf
吗?这是课程。我计划使用tcpdump
并rte_pktmbuf_dump
查看数据包内容。
这是rte_mbuf
我希望将自己的有效负载添加到:
struct rte_mbuf *bufs[BURST_SIZE];
这是rte_mbuf
收到的:
const uint16_t nb_rx = rte_eth_rx_burst(port, 0, bufs, BURST_SIZE);
这是rte_mbuf
正在传输的:
const uint16_t nb_tx = rte_eth_tx_burst(port ^ 1, 0,
bufs, nb_rx);
我修改了 DPDK 示例中的示例应用程序basicfwd.c以在文件中打印转发的数据包:
/* Get burst of RX packets, from first port of pair. */
const uint16_t nb_rx = rte_eth_rx_burst(port, 0, bufs, BURST_SIZE);
FILE *fp;
fp = fopen("dump.txt", "a");
fprintf(fp, "\n-----------------------\n fprintf... %d<->%d\n", count, port);
rte_pktmbuf_dump(fp, bufs[0], 1000);
fclose(fp);
if (unlikely(nb_rx == 0))
continue;
/* Send burst of TX packets, to second port of pair. */
const uint16_t nb_tx = rte_eth_tx_burst(port ^ 1, 0,bufs, nb_rx);
这些是我在输出文件中看到的数据包:
我希望能够修改内容以便更好地理解。我已经尝试过
rte_pktmbuf_init
,bufs->userdata =*(unsigned short*) 0xAAAAAAAA
但它对我不起作用。