使用搜索“linux 以太网数据包生成器”使我成为第一个命中的packeth。
- 有 GUI 和 CLI 版本
- 不仅生成UDP,还生成许多其他协议,包括QinQ
- 为 RedHat 打包为rpm或Debian 包
如果是我,我会做一个快速而肮脏的10 秒netcat测试,因为netcat已经安装在大多数 linux 发行版中……这是/dev/urandom
通过 UDP发送 linux 文件(或在我的示例中)的示例...
先在两边启动tcpdump,监听一个稀有的UDP端口(本例使用65535/udp)。我用它-s 1
来减少tcpdump
必须做的工作量(这意味着它捕获速度更快)。
tcpdump -s 1 -ni eth0 udp and port 65535
接下来,可以选择以定时结束启动您的接收器(在子外壳中将netcat部分作为背景,这样它就不会阻塞)。如果您不关心对接收到的数据进行校验和,则这实际上不是必需的。:
(nc -q 1 -u -l -p 65535 > /dev/null &); sleep 10; fuser -k 65535/udp;
然后,启动你的发射器......在这种情况下,我展示了它/dev/urandom
在 udp/65535 上推送to的输出。如果您愿意,请使用真实文件...
(cat /dev/urandom | nc -u <DESTINATION_IP> 65535&); sleep 10; \
fuser -n udp ,<DESTINATION_IP>,65535 -k
确保您选择的超时时间(我在sleep 10
上面使用)足够长,以便对 shell 命令进行排序并完成网络传输。如果您传输的内容不是/dev/urandom
,请确保您有sleep
足够的时间来完成文件传输。
完成后,停止双方的tcpdump。当它退出时,您将从tcpdump获得数据包计数:
[mpenning@tsunami ~]$ sudo tcpdump -s 1 -ni eth0 udp and port 65535
14:18:55.563674 [|ether]
14:18:55.563688 [|ether]
^C
2000 packets captured
2000 packets received by filter
0 packets dropped by kernel
[mpenning@tsunami ~]$
计算sender_count
- receiver_count
,这就是您的数据包丢失。