logo资料库

DummyNet控制丢包、延时-图解.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
Dummynet 安装配置 DummyNet 是 FreeBSD 的内部系统工具,需要在安装 FreeBSD 系统后重新安装编译内 核。该工具是内核级别的 IP 包处理工具。该工具可以模拟包的丢失、包的延时……(仓促 间仅试验了 drop & delay,但相信功能远多于此)。该工具是配合 FreeBSD 自带的防火墙 ipfw 使用的。 第一部分:简单的介绍安装 1、FreeBSD 系统的安装: (1,2,3,……,系统的安装过程省略) 2、dummynet 安装: 我在 FreeBSD8.1 下面 的安装最 简单的 方法是通 过以 root 身份 运行 sysinstall , 选择 Configure, 然后是 Distributions、 src,选中其中的 base 和 sys 3、接下来配置内核(因为要编译内核,过程比较慢 very very ) 内核文件默认路径 /usr/src/sys/i386/conf A、在文件 GENERIC 中,所以需要先 copy 一份 # cd /usr/src/sys/i386/conf # cp GENERIC dummynet-GENERIC B、再编辑 dummynet-GENERIC 文件,添加以下几行 options IPFIREWALL #在内核中添加防火墙支持 options DUMMYNET #启用 dummynet options IPFIREWALL_DEFAULT_TO_ACCEPT #把防火墙设置为默认接收包 C、配置内核 # config dummynet-GENERIC D、编译内核 根据提示的路径进入,执行提示的相关命令 # cd ../compile/dummynet-GENERIC # make cleandepend # make depend # make (此时可以去休息了,过程灰常滴慢,俺在虚拟机编译了超过 1 个小时) # make install E、reboot 重启系统,让新内核生效 检验内核中是否已经添加了防火墙,查看 net.inet.ip.fw.enable 的值 # sysctl net.inet.ip.fw.enable net.inet.ip.fw.enable:1 # 结果为 1 表明已经添加成功,并且防火墙已经启用 第二部分:简单举例(本处需要使用 ipfw 规则,偶也不熟,找手册吧) 1、 清除所有规则,看默认的网络情况 # ipfw -f flush
本例通过 ping 网关看到网络基本正常,丢包率 0.0%,平均延迟 3.257ms (进、出来回, 单向就是 1.6ms) 2、 设置延迟和丢包 设置所有上行 icmp 协议的 ip 包延迟 100ms 丢包率 40% 通过 ping 网关看丢包率在 46.5%,平均延迟 106.581ms(单向 out,如果双向则在 210ms 所有) 3、 设置延迟 让所有通过网卡的 ip 包都延迟 500ms(包含进、出)
通过 ping 网关看,丢包率在 0.5%,平均延时 1002.87ms(进、出双向,单向则为 500ms 左 右) 第三部分:结论 通过以上实验看,在有线网络环境下 dummynet 基本上可以模拟丢包、延时等,需要结合 ipfw 使用,但是是否能够作为第三方去控制别的 IP 地址间的带宽或者控制无线网络,结果 未知。
分享到:
收藏