1
我想了解DPDK的basicfwd示例的转发机制。任何人都可以帮我初始化和编辑rte_mbuf
的有效载荷吗? Here是班级。我打算使用tcpdump
和查看数据包内容。DPDK - rte_mbuf负载/数据初始化或更新/修改
这里是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);
我修改了示例应用程序basicfwd.c在DPDK的例子在文件打印转发的数据包:
/* 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
,但它不适合我。
用户数据不是有效载荷是私人区域的用户使用。有效载荷位于mbuf-> buf_addr处,它指向真实数据包中的第一个字节。 – roni