您好,我已经为 DPDK 实现了 pingpong。客户端发送数据包,服务器接收数据包然后返回。
服务端部分的实现类似于DPDK官网的L2转发示例。
在进行 L2 转发时,我注意到在将数据包从接收队列转发到传输队列时存在数据包丢失。
我的问题是......有没有办法让丢包为零?
我找不到解决方案,因为 DPDK 网站上的示例应用程序都有丢包。
丢包由下面的回调函数统计
rte_eth_tx_buffer_set_err_callback(tx_buffer[portid], rte_eth_tx_buffer_count_callback, &port_statistics[portid].dropped);
这是我从 L2 转发得到的结果
Port statistics ====================================
Statistics for port 0 ------------------------------
Packets sent: 384126
Packets received: 379889
Packets dropped: 4237
Aggregate statistics ===============================
Total packets sent: 384126
Total packets received: 379889
Total packets dropped: 4237
====================================================
因为我的实现只是乒乓球并且实现非常简单,所以我不认为在我的情况下应该有任何数据包丢失。