终端中的MQTT数据包丢失模拟器

时间:2016-06-20 18:38:11

标签: macos networking mqtt iot

如何模拟mac os中的数据包丢失? 我想测试MQTT QoS级别的不同场景。 这种方法或简单终端是否有任何框架 程序

2 个答案:

答案 0 :(得分:0)

我不能代表OSX,但在Linux上有几种方法可以做,所以可能你可以在VM中试用它们。

  1. 您可以使用ipt_statistic模块删除给定百分比的数据包,该模块是iptables-extensions包的一部分

  2. 使用类似CORE网络模拟器的内容。这使您可以创建整个网络并设置带宽和数据包丢弃率。它们提供VMWare image预安装

答案 1 :(得分:0)

因为MQTT使用TCP,所以它通常不受IP /以太网数据包丢失的影响,直到它变得足够严重,超时发生并且整个TCP连接被丢弃。 MQTT消息重新传输仅在连接断开然后重新建立时发生。

因此,您最好在客户端和服务器之间使用代理或TCP端口转发器之类的东西,以便模拟连接丢失。

socat是一个简单的TCP端口转发器的示例: http://www.dest-unreach.org/socat/

以下命令侦听端口2883并在同一台计算机上转发到1883的连接:

socat TCP-LISTEN:2883,reuseaddr,fork TCP:localhost:1883

键入Ctrl-C将导致它丢弃TCP连接。 socat可以在Mac OS X上的自制软件中获得。