我有一个四端口Intel 1G网卡。我正在使用DPDK在一个物理端口上发送数据,在另一个物理端口上接收数据。
我在DPDK代码中看到了一些示例,但无法使其正常工作。如果有人知道该怎么做,请发给我简单的说明,这样我就可以理解。我正确设置我的电脑用于大页面,加载驱动程序,并分配网络端口以使用dpdk驱动程序等...我可以从DPDK运行helloworld,因此系统设置对我来说没问题。
提前致谢。 temp5556
答案 0 :(得分:2)
建立DPDK之后:
cd
到DPDK目录。
运行sudo build/app/testpmd -- --interactive
你应该看到这样的输出:
$ sudo build/app/testpmd -- --interactive
EAL: Detected 8 lcore(s)
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Multi-process socket /var/run/.rte_unix
EAL: Probing VFIO support...
EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using unreliable clock cycles !
EAL: PCI device 0002:00:02.0 on NUMA socket 0
EAL: probe driver: 15b3:1004 net_mlx4
PMD: net_mlx4: PCI information matches, using device "mlx4_0" (VF: true)
PMD: net_mlx4: 1 port(s) detected
PMD: net_mlx4: port 1 MAC address is 00:0d:3a:f4:6e:17
Interactive-mode selected
testpmd: create a new mbuf pool <mbuf_pool_socket_0>: n=203456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc
Warning! port-topology=paired and odd forward ports number, the last port
will pair with itself.
Configuring Port 0 (socket 0)
Port 0: 00:0D:3A:F4:6E:17
Checking link statuses...
Done
testpmd>
不要担心&#34;没有免费的大页面&#34;信息。这意味着它无法找到任何1024 MB的大页面,但它继续正常,它必须找到大约2 MB的大页面。如果它说“#EAL:使用2 MB大页面&#34;它会很好。代替。
在提示符处键入start tx_first
,然后quit
。你应该看到类似的东西:
testpmd> start tx_first
io packet forwarding - ports=1 - cores=1 - streams=1 - NUMA support enabled, MP over anonymous pages disabled
Logical Core 1 (socket 0) forwards packets on 1 streams:
RX P=0/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00
io packet forwarding packets/burst=32
nb forwarding cores=1 - nb forwarding ports=1
port 0:
CRC stripping enabled
RX queues=1 - RX desc=1024 - RX free threshold=0
RX threshold registers: pthresh=0 hthresh=0 wthresh=0
TX queues=1 - TX desc=1024 - TX free threshold=0
TX threshold registers: pthresh=0 hthresh=0 wthresh=0
TX RS bit threshold=0 - TXQ offloads=0x0
testpmd> quit
Telling cores to stop...
Waiting for lcores to finish...
---------------------- Forward statistics for port 0 ----------------------
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 32 TX-dropped: 0 TX-total: 32
----------------------------------------------------------------------------
+++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
RX-packets: 0 RX-dropped: 0 RX-total: 0
TX-packets: 32 TX-dropped: 0 TX-total: 32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在我的系统中只有一个DPDK端口,所以我发送了32个数据包但没有收到任何数据包。如果我有一个多端口卡,端口之间有电缆,那么我也看到RX数也会增加。
答案 1 :(得分:1)
您可以使用TESTPMD测试DPDK。
TestPMD可以作为数据包生成器(tx_only模式),接收器(rx_only模式)或转发器(io模式)工作。
如果您愿意仅使用TESTPMD作为转发器,则需要将生成器节点连接到您的盒子。
我建议您从以下示例开始:
generator(pktgen)------&gt; testPMD(io模式)----------&gt; recevier(testPMD rx_only模式)。
在pktgen生成器中指定mac地址目的地,即接收端口的MAC地址。
PKTGEN及其详细工作原理在此链接中有更多解释:
http://pktgen.readthedocs.io/en/latest/getting_started.html
TESTPMD及其工作原理在此解释:
我希望这会有所帮助。