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
たが、うまくいきません。