模拟糟糕的互联网连接

时间:2012-08-06 04:28:48

标签: router lan internet-connection testing

我正在开发一种可通过LAN访问互联网的嵌入式设备。 我现在正处于测试阶段,我想测试设备在连接到互联网时的性能。 目前,设备通过集线器连接到路由器,我用它来监控Wireshark的数据包。 什么是降低设备的互联网速度以模仿可能发生的情况的最佳方法?

我可以通过电脑来完成吗?我需要访问路由器吗?如果是这样,是否可以限制路由器接口中每个IP的速度?

实际上,有朋友建议我购买usb2lan以太网卡,并将PC lan连接桥接到嵌入式设备,然后使用软件QoS限制器。你觉得它会起作用吗?

4 个答案:

答案 0 :(得分:24)

如果您使用Mac,Mac会内置名为dummynet的内核工具,您可以通过ipfw进行控制。它允许您模拟慢速连接,随机丢弃具有特定概率的数据包等。

Linux和其他操作系统中存在相同的工具。

来自dummynet homepage

  

截至2010年2月,我们发布了第三个主要版本的dummynet,   现在可以在所有主要平台上运行:FreeBSD,Mac OS X作为其中的一部分   本机发行版,你可以找到Linux,OpenWRT和Windows   版本在这里。

它可以为你做很多事情:

将传入的总流量限制为2Mbit / s,UDP限制为300Kbit / s

ipfw add pipe 2 in proto tcp
ipfw add pipe 3 in proto udp
ipfw pipe 2 config bw 2Mbit/s
ipfw pipe 3 config bw 300Kbit/s

将网络10.1.2.0/24上每台主机的传入流量限制为300Kbit / s。

ipfw add pipe 4 src-ip 10.1.2.0/24 in
ipfw pipe 4 config bw 300Kbit/s queue 20 mask dst-ip 0x000000ff

模拟到月球的ADSL链接:

ipfw add pipe 3 out
ipfw add pipe 4 in
ipfw pipe 3 config bw 128Kbit/s queue 10 delay 1000ms
ipfw pipe 4 config bw 640Kbit/s queue 30 delay 1000ms

答案 1 :(得分:17)

您可以尝试使用“Fiddler

您可以选择模拟不良网络(如旧调制解调器33k或56k)

您需要将设备插入PC并打开代理(每个请求都将通过Fiddler传输)

然后你可以用糟糕的网络测试你的代码然后看看发生了什么;)

答案 2 :(得分:13)

您可以使用(几乎)来自liveCd的任何Linux发行版(如ubuntu,mandriva,其他)在您想要的任何硬件上运行它,并使用基于内核的工具netem,也称为“网络仿真” “iproute2”包工具。它可以让您控制广域网的延迟,程序包丢失,损坏,重复和其他可能的问题。

有最常用的模拟列表,例如:

  • 使用令牌桶过滤器进行速率控制:

    tc qdisc add dev eth0 root handle 1:0 netem delay 100ms
    tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
    
  • 按固定时间延迟所有数据包:tc qdisc add dev eth0 root netem delay 100ms

  • 包裹丢失:tc qdisc change dev eth0 root netem loss 0.1%

答案 3 :(得分:5)

这是另一个OSX解决方案,请查看网络链接调节器。

以下引用摘自以下博客(以下所有信用均应转至Matt Gemmell):

http://mattgemmell.com/2011/07/25/network-link-conditioner-in-lion/

  

获取Xcode的硬件IO工具。为此,请进入Xcode   菜单,然后选择“Open Developer Tool”,最后选择“More Developer   工具...”。您将被带到Apple的开发者下载站点;您   应该下载“Xcode的硬件IO工具”。

     

生成的磁盘映像将包含(除其他外)a   系统偏好设置的偏好设置面板,称为“网络链接   空调”。双击prefpane文件并进行身份验证以允许   它要安装。然后,您将在“系统偏好设置”中看到该窗格。

     

您可以从各种不同类型的网络条件中进行选择   使用“配置文件”弹出菜单。

     

您还可以点击管理个人资料添加自己的个人资料,   从头开始或通过复制现有的个人资料。

     

非常方便地模拟不太理想的网络条件   在测试应用程序时。不要忘记之后关掉它!