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