网络模拟工具Netem

上传人:油条 文档编号:31693649 上传时间:2018-02-09 格式:DOC 页数:10 大小:93KB
返回 下载 相关 举报
网络模拟工具Netem_第1页
第1页 / 共10页
网络模拟工具Netem_第2页
第2页 / 共10页
网络模拟工具Netem_第3页
第3页 / 共10页
网络模拟工具Netem_第4页
第4页 / 共10页
网络模拟工具Netem_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《网络模拟工具Netem》由会员分享,可在线阅读,更多相关《网络模拟工具Netem(10页珍藏版)》请在金锄头文库上搜索。

1、网络模拟工具 Netem 可以模拟时延,丢包,重复包,乱序等功能。 Netem 是用过命令行tc来设置规则的,tc 命令是 IProute2 命令中的一部分!1. 设置固定 delay 100ms (所有经过 eth0 的包都被延时了 100ms):# tc qdisc add dev eth0 root netem delay 100ms修改 # tc qdisc change dev eth0 root netem delay 100ms删除 #tc qdisc del dev eth0 root netem delay 100ms2. 设置 delay 100ms Jitter 10ms

2、:# tc qdisc change dev eth0 root netem delay 100ms 10ms3. Jitter 其实是有相关性的,如果要设置 Jitter 的相关性 25%:# tc qdisc change dev eth0 root netem delay 100ms 10ms 25%4. 设置 Jitter 为正态分布。# tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal5. 设置丢包率 10%# tc qdisc change dev eth0 root netem los

3、s 10%6. 丢包率也有相关性。 如设置 10%的丢包率,但是丢包率之间的相关性为 25%# tc qdisc change dev eth0 root netem loss 0.3% 25%7. 包的 duplication。# tc qdisc change dev eth0 root netem duplicate 3%8. 包的 corruption。# tc qdisc change dev eth0 root netem corrupt 0.1%9. 乱序, 每第 5 个包马上发送,其他的包间隔 10ms 发送。 # tc qdisc change dev eth0 root n

4、etem gap 5 delay 10ms10. 乱序, 10%的包(相关性为 25%)马上发送,其他的包间隔 10ms 发送。# tc qdisc change dev eth0 root netem delay 10ms reorder 10% 25%Linux 网络流量控制工具Netem(可用于网络故障注入) 第一篇:概念篇Netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情况。使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核

5、功能,比如Fedora、Ubuntu、Redhat、OpenSuse、CentOS 、Debian 等等。tc 是 Linux 系统中的一个工具,全名为 traffic control(流量控制)。 tc 可以用来控制 netem 的工作模式,也就是说,如果想使用 netem ,需要至少两个条件,一个是内核中的 netem 功能被包含,另一个是要有 tc 。特别注意:本文介绍的内容主要倾向于利用 tc 工具的发包控制,来实现网络故障部分的注入实现,对于网络流控的介绍相对较少,详细的内容大家可以参考如下网址进行深入了解:http:/www.linuxfoundation.org/collabor

6、ate/workgroups/networking /netem#Delay_distribution第二篇:原理篇TC 用于 Linux 内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。接收包从输入接口(Input Interface)进来后,经过流量限制(Ingress Policing)丢弃不符合规定的数据包,由输入多路分配器(Input De-Multiplexing)进行判断选择:如果接收包的目的是本主机,那么将该包送给上层处理;否则需要进行转发,将接收包交到转发块(Forwarding Block)处理。转发块同时也接收本主机上层(TCP、UDP 等)产生的包。转

7、发块通过查看路由表,决定所处理包的下一跳。然后,对包进行排列以便将它们传送到输出接口(Output Interface)。一般我们只能限制网卡发送的数据包,不能限制网卡接收的数据包,所以我们可以通过改变发送次序来控制传输速率。Linux 流量控制主要是在输出接口排列时进行处理和实现的。 第三篇:应用篇工具可完成如下功能:(故障模拟)模拟时延,丢包,重复包,乱序。1、模拟延迟传输# tc qdisc add dev eth0 root netem delay 100ms该命令将 eth0 网卡的传输设置为延迟 100 毫秒发送。 更真实的情况下,延迟值不会这么精确,会有一定的波动,我们可以用下面

8、的情况来模拟出带有波动性的延迟值:# tc qdisc add dev eth0 root netem delay 100ms 10ms该命令将 eth0 网卡的传输设置为延迟 100ms 10ms (90 110 ms 之间的任意值)发送。 还可以更进一步加强这种波动的随机性:# tc qdisc add dev eth0 root netem delay 100ms 10ms 30%该命令将 eth0 网卡的传输设置为 100ms ,同时,大约有 30% 的包会延迟 10ms 发送。2、模拟网络丢包# tc qdisc add dev eth0 root netem loss 1%该命令将

9、 eth0 网卡的传输设置为随机丢掉 1% 的数据包。也可以设置丢包的成功率:# tc qdisc add dev eth0 root netem loss 1% 30%该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包,成功率为 30% 。3、模拟包重复# tc qdisc add dev eth0 root netem duplicate 1%该命令将 eth0 网卡的传输设置为随机产生 1% 的重复数据包 。 4、模拟包损坏# tc qdisc add dev eth0 root netem corrupt 0.2% 该命令将 eth0 网卡的传输设置为随机产生 0.2% 的损

10、坏的数据包 。 (内核版本需在 2.6.16 以上)5、模拟包乱序# tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%该命令将 eth0 网卡的传输设置为:有 25% 的数据包(50%相关)会被立即发送,其他的延迟 10 秒。 新版本中,如下命令也会在一定程度上打乱发包的次序:# tc qdisc add dev eth0 root netem delay 100ms 10ms其余更多的内容,请参考如下内容:1、http:/ 官方说明: http:/www.linuxfoundation.org/collaborate

11、/workgroups/networking/netemLinux 中模拟延时和丢包的实现 分类: 网络与安全Linux 中使用 tc 进行流量管理。具体命令的使用请参考 tc 的 man 手册。本文简单记录一下使用 tc 模拟延时和丢包的命令。1. 延时(1)设置延时1. # tc qdisc add dev eth0 root netem delay 30ms上面的命令实现了给 eth0 口发包时添加 30ms 的延时。(2)显示延时的设置1. # tc qdisc show结果如下:1. rootKernel-Test test# tc qdisc show2. qdisc pfifo_

12、fast 0: dev eth1 root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 13. qdisc netem 8003: dev eth0 root limit 1000 delay 30.0ms(3)修改延时1. # tc qdisc change dev eth0 root netem delay 40ms(4)删除延时的配置1. # tc qdisc del dev eth0 root netem delay 40ms2. 丢包设置丢包命令如下:1. # tc qdisc add dev eth0 root netem loss

13、10%如果你是通过 SSH 登陆设备进行配置丢包的话,配置完这条命令就会感觉到机器访问时有点一卡一卡的。这说明,设备已经开始丢包了,可以通过具体抓包查看。其他诸如修改、查看、删除的命令,都可以参考上面延时的设置。最后一点需要注意的是,这两个命令应该都是控制的网卡出口的流量。如果想控制网卡入口的流量,应该是需要确认内核是否明确支持了,如果不支持的话,就需要修改内核配置文件,并重新编译内核。Linux 下的网络仿真器 最近在工作中需要使用网络仿真器来设置网络中的速率,丢包,延迟. 在 FreeBSD OS中可以使用 DummyNet+Ipfw 来进行设置. 但是在 Linux 下有什么软件来进行模

14、拟呢?可供选择的有两种:1.NistNet: 非常强大的工具,缺点是文档比较少 .2.NetEm: 简单实用.能够在网络环中“gives you to delay, reordering, loss, etc.”http:/www.linux-foundation.org/en/Net:Netem-netem provides Network Emulation functionality for testing protocols by emulating the properties of wide area networks. The current version emulates v

15、ariable delay, loss, duplication and re-ordering. If you run a current 2.6 distribution, (Fedora, OpenSuse, Gentoo, Debian, Mandriva, Ubuntu), then netem is already enabled in the kernel and a current version of Net:iproute2 is included. The netem kernel component is enabled under: Networking Networking Options QoS and/or fair queuing Network emulatorNetem is controlled by the command line tool tc which is part of the iproute2 package of tools. The tc command uses shared libraries and data files in the /usr/lib/tc directory. Contents 1 Examples 1.1 Emulating wide area ne

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号