使用Lua脚本运行Pktgen

使用Lua脚本运行Pktgen,lua,Lua,我目前正在与pktgen合作,以实现项目的高速数据包生成。我使用的是pktgen的2.9.5版,以及DPDK的2.1.0版。在我尝试使用lua脚本格式化数据包之前,它确实工作得非常好(我能够以10 Gb/s的速率生成和发送数据包) 事实上,您可以在源代码中找到的脚本示例似乎并不总是具有预期的行为。最简单的脚本工作得非常好(例如HelloWorld.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