MoonGen是一个高性能的基于CPU的收发包工具
DPDK保证其性能强大,用单核x86 CPU可以收发64B 10G
Lua是比较流行的小巧灵活的脚本语言,收发包逻辑修改后不用编译,直接运行,因为是脚本。
LuaJit是Lua的x86即时编译工具。
这三兄弟组合就是灵活的MoonGen引擎,运行Lua脚本用来执行收发包逻辑,很容易写出比专业测试仪还复杂的逻辑。
编译步骤:
- 安装cmake
- git clone https://github.com/emmericp/MoonGen.git
- ./build.sh
- 如果DPDK KNI模块编译出错, 打开libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/.config文件,修改:CONFIG_RTE_KNI_KMOD=n
运行基本上就是DPDK常规启动步骤:
- sudo modprobe uio;
- sudo insmod libmoon/deps/dpdk/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
- sudo ./bind-interfaces.sh
- sudo ./setup-hugetlbfs.sh
- sudo ./build/MoonGen libmoon/examples/pktgen.lua 0
examples目录下有更多demo脚本, 不同协议包的操作api参见:
https://github.com/libmoon/libmoon/tree/master/lua/proto
一个最简单的vlan报文收发Lua脚本:
local lm = require "libmoon"
local device = require "device"
local stats = require "stats"
local log = require "log"
local memory = require "memory"
function master(args,...)
log:info("VLAN packet generator")
local dev = device.config{port = 0,txQueues = 1,rxQueues = 1}
device.waitForLinks()
stats.startStatsTask{devices = {dev}}
lm.startTask("txVlanSlave", dev:getTxQueue(0))
lm.waitForTasks()
end
function txVlanSlave(queue)
local mempool = memory.createMemPool(function(buf)
buf:getEthVlanPacket():fill{
ethSrc = queue, -- MAC of the tx device
ethDst = "01:23:45:67:89:ab",
ethVlan = 1111,
}
end)
local bufs = mempool:bufArray()
while lm.running() do
bufs:alloc(60) -- Packet size
-- for i, buf in ipairs(bufs) do
-- local pkt = buf:getEthVlanPacket();
-- pkt.eth:setVlanTag(i)
-- end
queue:send(bufs)
end
end
分享到:
相关推荐
数字-模拟信号混合传输收发机设计 数字-模拟信号混合传输收发机是一种能够同时传输数字信号和模拟信号的无线收发机,该机器具有广泛的应用前景。为设计和实现这种机器,需要具备以下知识点: 1. 数字信号处理:...
C语言49-CAN总线扩展帧收发测试(STC32G-DEMO-CODE-220311kw)C语言49-CAN总线扩展帧收发测试(STC32G-DEMO-CODE-220311kw)C语言49-CAN总线扩展帧收发测试(STC32G-DEMO-CODE-220311kw)C语言49-CAN总线扩展帧收发...
C语言55-LIN总线从机收发测试-USART(STC32G-DEMO-CODE-220311kw)C语言55-LIN总线从机收发测试-USART(STC32G-DEMO-CODE-220311kw)C语言55-LIN总线从机收发测试-USART(STC32G-DEMO-CODE-220311kw)C语言55-LIN...
C语言57-LIN总线从机收发测试-USART2(STC32G-DEMO-CODE-220311kw)C语言57-LIN总线从机收发测试-USART2(STC32G-DEMO-CODE-220311kw)C语言57-LIN总线从机收发测试-USART2(STC32G-DEMO-CODE-220311kw)C语言57-LIN...
C语言53-LIN总线从机收发测试(STC32G-DEMO-CODE-220311kw)C语言53-LIN总线从机收发测试(STC32G-DEMO-CODE-220311kw)C语言53-LIN总线从机收发测试(STC32G-DEMO-CODE-220311kw)C语言53-LIN总线从机收发测试(STC...
C语言51-CAN总线标准帧收发测试(STC32G-DEMO-CODE-220311kw)C语言51-CAN总线标准帧收发测试(STC32G-DEMO-CODE-220311kw)C语言51-CAN总线标准帧收发测试(STC32G-DEMO-CODE-220311kw)C语言51-CAN总线标准帧收发...
GD32F303固件库开发(9)----USART通过DMA收发 CSDN文字教程:https://blog.csdn.net/qq_24312945/article/details/125677236 B站教学视频:https://www.bilibili.com/video/BV1QG411p7cw/
运行在macos上的收发包工具,支持udp和tcp协议,带gui图形界面
S2-LP 是高性能超低功耗 RF 收发器,适用于 sub-1 GHz 频段的 RF 无线应用。它能够在免许可证的 ISM 和SRD 频带下(433、512、868 和 920 MHz)运行,但也可以对其进行编程,以便在 413-479 MHz、452-527 MHz、826-...
这个“socket收发包工具”很可能是一个帮助开发者测试和调试socket通信的实用程序,它可以简化数据的发送和接收过程,使得网络编程变得更加便捷。 在深入讲解socket收发包的知识点之前,我们先理解一下什么是socket...
### 高性能 Sub-1GHz 射频收发器 CMT2310A 规格解析 #### 一、核心特性与技术参数 **1.1 频率范围与调制方式** - **频率范围**: CMT2310A 支持宽广的频率范围,即 113 MHz 至 960 MHz,这意味着该芯片能够适用于...
javaweb毕业设计-基于Javamail的邮件收发系统(系统+lw+开题报告+任务书+外文翻译+文献综述+答辩PPT)(可做课程设计).rarjavaweb毕业设计-基于Javamail的邮件收发系统(系统+lw+开题报告+任务书+外文翻译+文献综述+...
在标题和描述中提到的“网卡收发包查看工具”,正是Ethereal(或Wireshark)的核心功能之一。 1. **Ethereal的功能特性** - **实时捕获**: Ethereal可以实时捕获网络上的数据包,对各种网络协议进行解码。 - **...
C语言54-LIN总线主机收发测试(STC32G-DEMO-CODE-220311kw)C语言54-LIN总线主机收发测试(STC32G-DEMO-CODE-220311kw)C语言54-LIN总线主机收发测试(STC32G-DEMO-CODE-220311kw)C语言54-LIN总线主机收发测试(STC...
毫米波高性能收发多功能芯片.pdf
happyday10-网络收发包工具使用.txt
C语言56-LIN总线主机收发测试-USART(STC32G-DEMO-CODE-220311kw)C语言56-LIN总线主机收发测试-USART(STC32G-DEMO-CODE-220311kw)C语言56-LIN总线主机收发测试-USART(STC32G-DEMO-CODE-220311kw)C语言56-LIN...