使用Lua脚本运行Pktgen
我目前正在与pktgen合作,以实现项目的高速数据包生成。我使用的是pktgen的2.9.5版,以及DPDK的2.1.0版。在我尝试使用lua脚本格式化数据包之前,它确实工作得非常好(我能够以10 Gb/s的速率生成和发送数据包) 事实上,您可以在源代码中找到的脚本示例似乎并不总是具有预期的行为。最简单的脚本工作得非常好(例如HelloWorld.lua,我还可以使用脚本命令设置数据包大小、速率或突发) (上述代码确实有效) 但是,我在尝试用表直接定义数据包格式时遇到了一些问题,如本例所示:使用Lua脚本运行Pktgen,lua,Lua,我目前正在与pktgen合作,以实现项目的高速数据包生成。我使用的是pktgen的2.9.5版,以及DPDK的2.1.0版。在我尝试使用lua脚本格式化数据包之前,它确实工作得非常好(我能够以10 Gb/s的速率生成和发送数据包) 事实上,您可以在源代码中找到的脚本示例似乎并不总是具有预期的行为。最简单的脚本工作得非常好(例如HelloWorld.lua,我还可以使用脚本命令设置数据包大小、速率或突发) (上述代码确实有效) 但是,我在尝试用表直接定义数据包格式时遇到了一些问题,如本例所示: -
-- Lua uses '--' as comment to end of line read the
2 -- manual for more comment options.
3 local seq_table = { -- entries can be in any order
4 ["eth_dst_addr"] = "0011:4455:6677",
5 ["eth_src_addr"] = "0011:1234:5678",
6 ["ip_dst_addr"] = "10.12.0.1",
7 ["ip_src_addr"] = "10.12.0.1/16", -- the 16 is the size of the mask va lue
8 ["sport"] = 9, -- Standard port numbers
9 ["dport"] = 10, -- Standard port numbers
10 ["ethType"] = "ipv4", -- ipv4|ipv6|vlan
11 ["ipProto"] = "udp", -- udp|tcp|icmp
12 ["vlanid"] = 1, -- 1 - 4095
13 ["pktSize"] = 128 -- 64 - 1518
14 };
15 -- seqTable( seq#, portlist, table );
16 pktgen.seqTable(0, "all", seq_table );
17 pktgen.set("all", "seqCnt", 1);
当我尝试这个脚本时,Pktgen通常会给我一个
未知以太网类型0x0000
在命令行中尝试启动0时出错(0是我用来传输数据包的端口)。
在尝试main.lua脚本时也会出现同样的问题
长话短说,我很难理解pktgen.seqtable函数是如何工作的,以及为什么在我的例子中它不能正常工作。我没有在网上找到任何关于这个主题的真正有用的文档
我用来启动脚本的命令是:
sudo -E $PKTGEN_CMD/pktgen -c 0x7 -n 4 -- -m "1.0,2.1" -f test/set_seq.lua
(test/set_seq.lua是一个脚本示例)。我很久没有接触过DPDK了,但是。。。您是否尝试过使用
pktgen.set(“all”,“seqCnt”,0)
而不是1?
sudo -E $PKTGEN_CMD/pktgen -c 0x7 -n 4 -- -m "1.0,2.1" -f test/set_seq.lua