使用Lua脚本运行Pktgen

时间:2016-01-29 13:38:00

标签: lua dpdk

我目前正在与pktgen合作,以实现项目的高速数据包生成。我使用的是pktgen版本2.9.5,以及DPDK版本2.1.0。它确实工作得很好(我能够以10 Gb / s的速率生成和发送数据包),直到我尝试使用lua脚本来格式化数据包。

事实上,您可以在源代码中找到的脚本示例似乎并不总是具有预期的行为。最简单的脚本工作得很好(例如,HelloWorld.lua,我也可以使用脚本命令设置数据包大小,速率或突发)

   package.path = package.path ..";?.lua;test/?.lua;app/?.lua;"
  2 
  3 pktgen.set("all", "count", 0);
  4 pktgen.set("all", "rate", 50);
  5 pktgen.set("all", "size", 256);
  6 pktgen.set("all", "burst", 128);
  7 pktgen.start(0)

(上面的代码确实有效)

但是,我尝试使用表直接定义数据包格式时遇到了问题,如下例所示:

-- 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通常会给我一个     未知的Ethertype 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是一个脚本示例)。

0 个答案:

没有答案