我想在Linux上模拟UDP和TCP的数据包延迟和丢失,以衡量应用程序的性能。有什么简单的方法吗?
当前回答
Iptables(8)有一个统计匹配模块,可以用来匹配每n个数据包。要删除这个包,只需添加-j drop。
其他回答
对于丢弃的包,我将简单地使用iptables和统计模块。
iptables -A INPUT -m statistic --mode random --probability 0.01 -j DROP
以上将以1%的概率丢弃一个传入数据包。小心,任何超过0.14的东西,你们中的大多数tcp连接很可能会完全失速。
使用-D撤消:
iptables -D INPUT -m statistic --mode random --probability 0.01 -j DROP
看看man iptables,搜索“statistic”来获取更多信息。
我自己还没有尝试过,但是这个页面有一个在Linux内置iptables IP过滤系统中运行的插件模块列表。其中一个模块称为“nth”,它允许您设置一个规则,该规则将丢弃可配置的数据包速率。至少这是个不错的开始。
Iptables(8)有一个统计匹配模块,可以用来匹配每n个数据包。要删除这个包,只需添加-j drop。
破坏者是一种易于使用的网络故障注入工具。它可以模拟:
网络总分区 远程服务关闭(没有监听预期的端口) 延迟 包丢失 -TCP连接超时(当两个系统被有状态防火墙隔开时经常发生)
科学界最常用的工具之一就是DummyNet。一旦你安装了ipfw内核模块,为了在两台机器之间引入50ms的传播延迟,只需运行这些命令:
./ipfw pipe 1 config delay 50ms
./ipfw add 1000 pipe 1 ip from $IP_MACHINE_1 to $IP_MACHINE_2
为了引入50%的丢包,你必须运行:
./ipfw pipe 1 config plr 0.5
这里有更多细节。
推荐文章
- 在tmux中保持窗口名称固定
- 如何生成一个核心转储在Linux上的分段错误?
- 在Python中如何在Linux和Windows中使用“/”(目录分隔符)?
- 如何在Apache服务器上自动将HTTP重定向到HTTPS ?
- 如何限制从grep返回的结果的数量?
- 将值从管道读入shell变量
- 以相对于当前目录的路径递归地在Linux CLI中列出文件
- 如何使用xargs复制名称中有空格和引号的文件?
- 在makefile中抑制命令调用的回声?
- 在套接字编程中AF_INET和PF_INET的区别是什么?
- Chmod递归
- 任何方式退出bash脚本,但不退出终端
- 如何查看按实际内存使用情况排序的顶级进程?
- 如何将多行输出连接到一行?
- 使用grep搜索包含点的字符串