好些日子没有更新了……
最近在做一些研究,需要实际改变网络状态,比如拥塞、丢包等,以监测产品在此情景下的表现。
网上居然没找着……大概是我的关键字用的不对了……搜索“+网络 +控制”,未果……
于是群发邮件列表寻找大牛帮助。
这里真是要感叹所里人才云集啊!不出二十分钟,再收邮件时就已有了回复!
原文摘抄如下:
“是要故意产生丢包吗?
windows下wipfw可以做到,具体方法
参考http://wipfw.sourceforge.net/doc.html中
prob match_probability的说明。
linux下可以用NISTnet
”
嗯,windows下的就看那个连接吧,搜了搜linux下的NISTnet。
转一个也是CSDN上某兄弟的文章:
NistNet是一款基于
Linux系统能够动态实时仿真IP网络环境的开源工具,它可实现端到端网络中那些关键性能,例如延迟、抖动、丢包等多种复杂的网络环境的模拟,为那些对于网络环境较为敏感的应用提供了便利的测试方法。
NistNet是做为
Linux内核的一个可动态加载的模块来实现的。它用图形用户接口和命令行接口两种使用形势。
下面介绍如何配置、编译、安装、使用
NistNet。
1) 下载
NistNet源文件。
Sourforge和
Nist的项目主页都提供NistNet的源码下载。
下载nistnet.2.0.12b.tar.gz压缩包
并在一台运行Linux的主机上解压缩此文件。
2) 配置
运行解压缩目录下的
configure命令。
3) 编译
Configure如果无误,即可运行
make命令进行编译。
4) 安装
编译后,运行
Make install进行安装。
5) 使用
./Load.Nistnet
此命令可以加载NistNet到内核
然后可以通过
cnistnet
或者xnistnet启动NistNet工具。
例:为源
IP为192.168.1.203:5060目的IP为192.168.100.156:5060的UDP流量增加10%丢包率,并且增加1s的延时。
执行下序命令:
./Load.NistNet
cnistnet -u
cnistnet –a 192.168.1.203:5060 192.168.100.156:5060 --drop 10 --delay 1000
注:使用此功能之前要使能Linux系统的路由功能,以便能够跨网段转发
使能Linux路由功能的命令是
echo 1 > /proc/sys/net/ipv4/ip_forward
查看路由功能是否启动的命令是
cat /proc/sys/net/ipv4/ip_forward
如果终端显示‘1’则表明路由功能启动成功,如果显示‘0’则表示路由没有成功启动
还有一个讲某产品使用的,不过里面涉及的NISTnet说明还是不错的:
使用NISTnet:
运行NISTnet之前,在计算机启动时执行以下命令:
modprobe nistnet
这条命令可以是登录脚本的一部分,或者用户可以自行创建一个可执行文件。 图6所示为一个名为" statnist"的可执行文件的示例脚本。
图6. 名为"statnist"的可执行文件的示例脚本
如果用户创建了一个名为"statnist"的可执行文件,NISTnet的GUI命令行就变为:
startnist
NISTnet的界面命令行是:
xnistnet
NISTnet的非界面命令行变是:
cnistnet
图7所示为NISTnet的GUI界面。
图7. NISTnet的GUI界面
在GUI界面用户可以输入源地址、目的地址和网络损耗,例如以ms为单位的平均延时和延时差值、丢包率以及包重复率。输入值后,用户就可以更新内容。更新完毕后,点击"Emulator is Off"按钮使其变为"Emulator is On",此时打开了模拟器。 图8所示为打开模拟器后的GUI图。
图8. 模拟器打开后的NISTnet的GUI界面
modprobe nistnet
这条命令可以是登录脚本的一部分,或者用户可以自行创建一个可执行文件。 图6所示为一个名为" statnist"的可执行文件的示例脚本。
![Figure 6. Sample script for an executable file named](http://www.maxim-ic.com.cn/images/appnotes/3963/3963Fig06.jpg)
图6. 名为"statnist"的可执行文件的示例脚本
如果用户创建了一个名为"statnist"的可执行文件,NISTnet的GUI命令行就变为:
startnist
NISTnet的界面命令行是:
xnistnet
NISTnet的非界面命令行变是:
cnistnet
图7所示为NISTnet的GUI界面。
![Figure 7. The GUI screen image of NISTnet.](http://www.maxim-ic.com.cn/images/appnotes/3963/3963Fig07.gif)
图7. NISTnet的GUI界面
在GUI界面用户可以输入源地址、目的地址和网络损耗,例如以ms为单位的平均延时和延时差值、丢包率以及包重复率。输入值后,用户就可以更新内容。更新完毕后,点击"Emulator is Off"按钮使其变为"Emulator is On",此时打开了模拟器。 图8所示为打开模拟器后的GUI图。
![Figure 8. The GUI screen image of NISTnet after the emulator is turned on.](http://www.maxim-ic.com.cn/images/appnotes/3963/3963Fig08.gif)
图8. 模拟器打开后的NISTnet的GUI界面
嗯~大家一起学习下吧!