40

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

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

其实有朋友建议我买个usb2lan网卡,把PC局域网连接到嵌入式设备,然后用软件QoS限制器。你认为它会起作用吗?

4

4 回答 4

24

如果你手边有一台 Mac,Mac 有dummynet内置的内核工具,你可以通过ipfw. 它允许您模拟慢速连接、以特定概率随机丢弃数据包等等。

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

dummynet 主页

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

它可以为您做很多事情:

将总传入 TCP 流量限制为 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
于 2012-08-06T05:52:09.950 回答
18

您可以尝试使用“提琴手

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

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

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

于 2013-04-09T10:05:29.837 回答
16

您可以使用(几乎)来自 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%
于 2013-04-05T00:37:26.713 回答
5

这是另一个 OSX 解决方案,请查看 Network Link Conditioner。

以下引述摘自以下博客(以下所有功劳均应归功于 Matt Gemmell):

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

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

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

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

您还可以通过单击“管理配置文件”来添加您自己的配置文件,无论是从头开始还是通过复制现有配置文件。

在测试应用程序时模拟不太理想的网络条件非常方便。只是不要忘记之后将其关闭!

于 2013-04-07T10:45:35.360 回答