tag:blogger.com,1999:blog-75340577821174996522024-02-20T02:49:57.185-08:00Gambit Communications BlogGambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.comBlogger254125tag:blogger.com,1999:blog-7534057782117499652.post-15879204626825942002022-12-01T12:39:00.010-08:002022-12-02T07:55:27.490-08:00MIMIC MQTT Lab: Test MQTT 5 support on AWS IoT Core<p> AWS recently <a href="https://aws.amazon.com/about-aws/whats-new/2022/11/aws-iot-general-availability-version-5-mqtt-message-broker-mqtt5" target="_blank">announced MQTT 5 support</a> for AWS IoT.</p><div style="text-align: left;">We tested it in less than 5 minutes with <a href="https://mqttlab.iotsim.io/aws" target="_blank">MIMIC MQTT Lab AWS</a> . You can do the same to make sure your<br />AWS IoT application uses the latest <a href="https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html" target="_blank">MQTT 5 features</a> such as properties in PUBLISH messages, etc. </div><div style="text-align: left;">Check the <a href="https://www.youtube.com/watch?v=Hf6WIVytWsc" target="_blank">2-minute Youtube video</a> that shows the MQTT 5 CONNACK with <a href="https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901031" target="_blank">new reason code</a>:</div><blockquote><div style="text-align: left;"></div></blockquote><blockquote><div style="text-align: left;">CONNACK rc=0x00 Session Expiry Interval 0,Receive Maximum 100,Maximum QoS 1,Retain Available 1,Maximum Packet Size 149504,Topic Alias Maximum 8,Wildcard Subscription Available 1,Subscription Identifiers Available 0,Shared Subscription Available 1,Server Keep Alive 50</div></blockquote><blockquote><div style="text-align: left;"></div></blockquote><div style="text-align: left;"><br /></div><div style="text-align: left;"><div class="separator" style="clear: both; text-align: left;"><iframe allowfullscreen="" class="BLOG_video_class" height="326" src="https://www.youtube.com/embed/Hf6WIVytWsc" width="394" youtube-src-id="Hf6WIVytWsc"></iframe></div><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">When we connect with the <a href="https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html#mqtt-qos" target="_blank">disallowed QOS 2</a>, we get a new self-explanatory error code:</div><blockquote><div style="text-align: left;">CONNACK rc=0x9b Reason String CONNACK:QOS 2 is not supported:861b3462-65d8-ba70-5472-63869294a5a1<br /><br /></div></blockquote><p>and when we send a malformed PUBLISH (empty topic and topic alias):</p><blockquote><p>INFO 12/02.10:53:07 - MQTT[AGT=3916] - sent CONNECT (51 bytes)<br />INFO 12/02.10:53:07 - MQTT[AGT=3916] - rcvd CONNACK rc=0x00 Session Expiry Interval 0,Receive Maximum 100,Maximum QoS 1,Retain Available 1,Maximum Packet Size 149504,Topic Alias Maximum 8,Wildcard Subscription Available 1,Subscription Identifiers Available 0,Shared Subscription Available 1,Server Keep Alive 50<br />INFO 12/02.10:53:08 - MQTT[AGT=3916] - sent PUBLISH (126 bytes)<br />INFO 12/02.10:53:08 - MQTT[AGT=3916] - rcvd DISCONNECT reason 0x82 (Reason String DISCONNECT:Data in packet does not conform to MQTT specification:19ec6dc1-0b50-888c-6c3e-3be26faee968)<br /><br /></p></blockquote><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-83455842279352977942022-11-21T08:08:00.003-08:002022-11-21T08:08:21.203-08:00MQTT performance testing - Best Practices<div style="text-align: left;">The MIMIC Simulator performance testing methodology attempts to overcome<br /><a href="https://www.testingxperts.com/blog/performance-testing" target="_blank">common problems with published performance benchmarks</a>, specially in the </div><div style="text-align: left;"><a href="https://www.techtarget.com/iotagenda/tip/How-to-overcome-IoT-performance-testing-challenges" target="_blank">IoT arena</a>. In this article we examine one recently published report and discuss </div><div style="text-align: left;">how to make it better.</div><div style="text-align: left;"> </div><div style="text-align: left;">The main problem with any performance test is that the results apply only to the </div><div style="text-align: left;">specific test scenario. If the test scenario is carefully selected, the results will be </div><div style="text-align: left;">relevant for a wide variety of situations. If the test report is good, then the exact </div><div style="text-align: left;">methodology is documented, so you can evaluate it, and determine whether the </div><div style="text-align: left;">results can be useful for you. For example this report</div><p style="text-align: left;"><a href="https://www.researchgate.net/publication/354610718_Stress-Testing_MQTT_Brokers_A_Comparative_Analysis_of_Performance_Measurements" target="_blank">https://www.researchgate.net/publication/354610718_Stress-Testing_MQTT_Brokers_A_Comparative_Analysis_of_Performance_Measurements</a></p><div style="text-align: left;">performed one test scenario for an uncommon situation of a small set (3) of high-</div><div style="text-align: left;">frequency publishers, and 15 mosquitto_sub subscribers. Plain text MQTT is only </div><div style="text-align: left;">used in trivial situations, and there is no indication that TLS transport is measured. </div><div style="text-align: left;">Latency measurements suffer from the time synchronization problem on different </div><div style="text-align: left;">systems.</div><div style="text-align: left;"> </div><div style="text-align: left;">Specifically, it says right at the beginning in the abstract</div><div style="text-align: left;"> </div><div style="text-align: left;">"<span style="font-family: courier;">The evaluation of the brokers is performed by a realistic test scenario</span>"</div><p style="text-align: left;"> but then, in section 4.1.1. Evaluation Conditions:</p><div style="text-align: left;"><p>"</p><span style="font-family: courier;">Number of topics: 3<br /> (via 3 publisher threads)<br />Number of publishers: 3<br />Number of subscribers: 15 (subscribing to all 3 topics)<br />Payload: 64 bytes<br />Topic names used to publish large<br />number of messages: ‘topic/0’, ‘topic/1’, ‘topic/2’<br />Topic used to calculate latency: ‘topic/latency</span><br /><blockquote><p><span style="font-family: courier;"></span></p></blockquote></div><div style="text-align: left;">"</div><div style="text-align: left;"> </div><div style="text-align: left;">so rather than testing a large-scale environment, a small set (3) of high-frequency </div><div style="text-align: left;">publishers, and 15 mosquitto_sub subscribers was used. <a href="https://doc.gambitcom.com/mimic/mqtt_compat.htm" target="_blank">In our experience</a>, no </div><div style="text-align: left;">recent broker has any problem with less than 1000 publishers.</div><p style="text-align: left;">Second, in section 4. the subscriber back-end is detailed:<br /><br />"<span style="font-family: courier;">The subscriber machine used the “mosquitto_sub” command line<br />subscribers, which is an MQTT client for sub- scribing to topics and<br />printing the received messages. During this empirical evaluation, the<br />“mosquitto_sub” output was redirected to the null device (/dev/null)</span> "<br /><br /></p><div style="text-align: left;">using a the simple <a href="https://mosquitto.org/man/mosquitto_sub-1.html" target="_blank">mosquitto_sub</a> client which is single threaded. In addition,</div><div style="text-align: left;">the subscribers subscribe to all topics, probably the wildcard topic #. So, out of </div><div style="text-align: left;">many code paths in the broker, the least commonly used is tested. If your </div><div style="text-align: left;">application uses a topic hierarchy, with different subscribers subscribing to </div><div style="text-align: left;">different topic trees, then topic matching performance needs to be exercised.</div><p style="text-align: left;"></p><div style="text-align: left;">Third, while QOS 0, 1 and 2 seem to be tested, only a single payload size </div><div style="text-align: left;">was used, and there is no indication that TLS transport is measured.</div><p style="text-align: left;">Fourth, they attempt to measure latency correctly, ie. section 4.1.2<br /><br />"<span style="font-family: courier;">Latency is defined as the time taken by a system to transmit a message<br />from a publisher to a subscriber</span>"</p><div style="text-align: left;">but their methodology is flawed, since it is almost impossible to synchronize the </div><div style="text-align: left;">clocks on 2 separate systems to <a href="https://stackoverflow.com/questions/97853/whats-the-best-way-to-synchronize-times-to-millisecond-accuracy-and-precision-b" target="_blank">millisecond accuracy</a> and in table 6 the latencies </div><div style="text-align: left;">are in the 1ms range. So, the measurements rely on unknown synchronization. </div><div style="text-align: left;">For an example of the MIMIC latency testing methodology see <a href="https://gambitcomm.blogspot.com/2018/08/video-monitor-end-to-end-latency-of.html" target="_blank">this blog post</a>.</div><p style="text-align: left;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr7jftnJTj0J6FDV6z6UwkfTV7a-ic7o53EM9BbsdTXL8LPE96Xin5iDxrvptAuhYfCz2y_f36qDJ7qv__cqFbVinmTMGNmbAJfVFJjUEoQ5BestTUChDD71RMivwvIlbKp616otL2Ok-NCksA_exumpTm3NR8Q4NLbYxv_dQ83yIWcQG24ei3JYjE/s2560/mimic-amlen-10k+1-qos2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1440" data-original-width="2560" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr7jftnJTj0J6FDV6z6UwkfTV7a-ic7o53EM9BbsdTXL8LPE96Xin5iDxrvptAuhYfCz2y_f36qDJ7qv__cqFbVinmTMGNmbAJfVFJjUEoQ5BestTUChDD71RMivwvIlbKp616otL2Ok-NCksA_exumpTm3NR8Q4NLbYxv_dQ83yIWcQG24ei3JYjE/w640-h360/mimic-amlen-10k+1-qos2.png" width="640" /></a></div><br /><p style="text-align: left;"><br /><br /></p>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-84714667965386859612022-11-18T12:49:00.002-08:002022-11-18T12:49:41.314-08:00Migrating from shuttered IBM Watson IoT platform<div style="text-align: left;">In a <a href="https://gambitcomm.blogspot.com/2020/06/insighttech-avoid-iot-project-failure.html" target="_blank">previous article</a> simulation was recognized as helping prevent IoT project failures<br />so prevalent in the industry.</div><div style="text-align: left;"> </div><div style="text-align: left;">With the recent announcements of the shuttering of the <a href="https://financesonline.com/news/google-cloud-iot-core-is-being-retired-tech-giant-to-focus-on-core-cloud-business/" target="_blank">Google IoT Core</a> and </div><div style="text-align: left;"><a href="https://www.theregister.com/2022/11/15/ibm_set_to_retire_watson/" target="_blank">IBM Watson IoT</a> platforms, we can suggest that <a href="https://www.gambitcomm.com/site/iot_simulator.php" target="_blank">MIMIC IoT Simulator</a> can be used </div><div style="text-align: left;">to help migrate from the obsolete IoT platforms to a new offering by:</div><p><br />1) running a facsimile of your environment in MIMIC<br /><br />2) staging migration to the new platform<br /><br />3) testing requirements at various scales to make it future-proof<br /><br />before you impact your production network.<br /><br /></p>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-88383513965722676132022-11-17T11:08:00.012-08:002022-11-19T14:07:14.046-08:00How to scale your MQTT lab to 1000 sensors in minutes<p></p><div style="text-align: left;">TL;DR Money saved: $40,000. Time saved: immeasurable.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">We needed to create a MQTT lab with 1000 sensors to test a subscriber client with</div><div style="text-align: left;">realistic telemetry. The <a href="https://github.com/gambitcomminc/monitor-thresh" target="_blank">open-source client</a> tracks any key value, and alerts if any</div><div style="text-align: left;">arbitrarily pre-selected value exceeds a threshold.<br /></div><p>We bought 1 real <a href="https://www.shelly.cloud/en-us/products/product-overview/shelly-plus-h-t-1" rel="nofollow" target="_blank">Shelly Plus H&T</a> sensor for $40.</p><p></p><div style="text-align: left;">After you have configured it, it sends MQTT messages to the broker, but only </div><div style="text-align: left;">every time the temperature and humidity changes. So, to test our application, we </div><div style="text-align: left;">would have had to run to the refridgerator quite often to make it change the </div><div style="text-align: left;">temperature.</div><p>As you can see from the screenshot</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS6FjMLzKkKsR0uaxPk436pDj-wownDiAm9_3z5HsdvYsuhVzuBVMCbRkHAdzv5kBOZnsyyD_X2bnnFihs4zKcG7aF47SB204bJGb0BeSvDIBNVrimIy_F0RT5ORc9_1oVM9u6S3XfbZJyEDBK99gKCrwio0M6yIrBETyJRPzMLtbWY8k7Co7DVVYT/s4000/IMG_20221117_114151_249.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="2992" data-original-width="4000" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS6FjMLzKkKsR0uaxPk436pDj-wownDiAm9_3z5HsdvYsuhVzuBVMCbRkHAdzv5kBOZnsyyD_X2bnnFihs4zKcG7aF47SB204bJGb0BeSvDIBNVrimIy_F0RT5ORc9_1oVM9u6S3XfbZJyEDBK99gKCrwio0M6yIrBETyJRPzMLtbWY8k7Co7DVVYT/w640-h478/IMG_20221117_114151_249.jpg" width="640" /></a></div><p><br /></p><div class="separator" style="clear: both; text-align: center;"> </div><p>it sends JSON payloads, but very infrequently. In our case, after 6 minutes</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKkKWdcHV-BfDXphO1k4HYt2Y6bap0-oId-CrX3XZqAGSJ0o5FE7PMls71fiP4qzva-0jNfSWUzm2r-vmNH_GpjmC_vUEq5807Xk8jwcQRl_BTj9pl3F65PZu0orRP44kdM8hblweFjylz5rvU69waD-j0c-o1e_NhWBDwWdgpcqS_7uKRrVb1hzqs/s4000/IMG_20221117_114342_327.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="2992" data-original-width="4000" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKkKWdcHV-BfDXphO1k4HYt2Y6bap0-oId-CrX3XZqAGSJ0o5FE7PMls71fiP4qzva-0jNfSWUzm2r-vmNH_GpjmC_vUEq5807Xk8jwcQRl_BTj9pl3F65PZu0orRP44kdM8hblweFjylz5rvU69waD-j0c-o1e_NhWBDwWdgpcqS_7uKRrVb1hzqs/w640-h478/IMG_20221117_114342_327.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"> </div><p>So, every time we wanted a message, we needed to change the temperature.</p><p>To accelerate development, we used MIMIC. <br /></p><div style="text-align: left;">First we just captured the messages with wireshark, recorded into <a href="https://www.gambitcomm.com/site/mqttsimulator.php" target="_blank">MIMIC MQTT Simulator</a>, </div><div style="text-align: left;">and generated messages whenever and however we wanted. Rather than waiting for minutes, we can</div><div style="text-align: left;">send any message with any value in seconds, speeding up development time. Then we multiplied</div><div style="text-align: left;">the sensor 1000-fold, quickly reaching the required scalability at no additional cost.<br /></div><p>This video shows the process in 2 minutes:</p><div class="separator" style="clear: both; text-align: left;"><iframe allowfullscreen="" class="BLOG_video_class" height="538" src="https://www.youtube.com/embed/CVzSBgwZ4_c" width="648" youtube-src-id="CVzSBgwZ4_c"></iframe></div><br /><p>Money saved: $40,000. Time saved: immeasurable.<br /></p>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-54421182145405378272022-10-20T14:52:00.016-07:002023-07-19T05:44:32.389-07:00IoT platform demo requirements<div style="text-align: left;"><br /></div><div style="text-align: left;">IoT platform software is <a href="https://www.google.com/search?client=firefox-b-1-e&q=iot+platform+complicated" target="_blank">complicated</a> leading to project delays and <a href="https://www.insight.tech/content/avoid-iot-project-failure-with-better-simulators" target="_blank">frequent failures</a>. To </div><div style="text-align: left;">select the right platform for their needs, the customer has to learn and evaluate features such </div><div style="text-align: left;">as data acquisition, analytics, graphing, database integration, alarming, etc.</div><p></p><div style="text-align: left;">Product <a href="https://www.oreilly.com/content/evaluating-choosing-iot-platform/" target="_blank">evaluation </a>is usually done in a couple of steps, starting with a survey leading to practical </div><div style="text-align: left;">hands-on trial, each further filtering from the wide assortment of products. The initial evaluation needs </div><div style="text-align: left;">to whittle down to a couple of candidates for deeper investigation before a proof-of-concept effort. </div><div style="text-align: left;"><br /></div><div style="text-align: left;">Free brochures, videos, and other static marketing collateral can only go so far to get a customer</div><div style="text-align: left;">interested in the IoT platform software. What is needed is a more engaging, interactive format.</div><div style="text-align: left;">Thus, in order to best advertise platform features, an initial product demo has to be</div><ol style="text-align: left;"><li> <b>free</b> - to get the foot in the door, you should not be charged. Further, the customer <br />should not need to give a credit card number, or any kind of personal information</li><li><b>immediate</b> - the customer should get to the demo in a couple of clicks, and the instructions <br />should not consist of more than a couple of lines. In total, the demo should be done in a <br />couple of minutes.</li><li><b>always on</b> - in a global economy, the demos should be accessible 24 hours a day, 7 days <br />a week.</li><li><b>interactive</b> - the demos should go beyond replay of videos, and consist of live interactions <br />for each customer.</li><li><b>dynamic</b> - the customer should be able to view the features you want to show off in the <br />most compelling way and be most realistic.</li><li><b>predictable</b> - the demo should behave the same way each time they visit, so that you can <br />control it, describe it, and it matches the customer's expectations.</li><li><b>diverse</b> - every customer scenario is unique, requiring different platform features and <br />types of sensor hardware. The demos should showcase the various features that the customer wants.</li><li><b>scalable</b> - scaling up an IoT application is the hardest part. The demo should prove <br />how the platform enables large scale applications.<br /></li></ol><p><br />For examples of demos with <a href="https://www.gambitcomm.com/site/iot_simulator.php" target="_blank">MIMIC IoT Simulator</a> that we have provided to our partners </p><ul style="text-align: left;"><li><a href="https://mqttlab.iotsim.io/cumulocity/#demo" target="_blank">Cumulocity</a></li><li><a href="https://mqttlab.iotsim.io/losant/#demo" target="_blank">Losant</a></li><li><a href="https://help.ubidots.com/en/articles/4990402-create-an-mqtt-lab-with-gambit-communication-and-ubidots" target="_blank">Ubidots</a> </li><li><a href="https://mqttlab.iotsim.io/tago/#demo" target="_blank">TagoIO</a> <br /> </li></ul><p>see also this <a href="https://gambitcomm.blogspot.com/2021/11/live-dynamic-immediate-247-interactive.html" target="_blank">blog post</a> .</p><p><br /></p><div class="separator" style="clear: both; text-align: left;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/LWotzcXZW6c" width="510" youtube-src-id="LWotzcXZW6c"></iframe></div><br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-35849914600013821832022-09-13T09:22:00.007-07:002022-10-21T07:58:07.684-07:00MIMIC SNMP Simulator and neteXpose DNA<div style="text-align: left;"><br /></div><div style="text-align: left;"><a href="https://www.gambitcomm.com/site/snmp-simulator.php" target="_blank">MIMIC SNMP Simulator</a> can simulate details of each device to the finest level. In </div><div style="text-align: left;">this integration, <a href="http://netexpose.com/?product=dna-discovery-and-knowledge-base" target="_blank">netExpose DNA</a> discovered the chassis details of a simulated </div><div style="text-align: left;">Alcatel switch, allowing them to test their management application with all sorts</div><div style="text-align: left;">of device scenarios.<br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr4cBu1v-XSclCSMU6P7HfIUdOv8oJ4NpYEVoQVA6Uq6KK3zEQ5B2jugBkIGeXYL0GuHo5li12R36bTNyLkbwufTTep_9Uvm4UtyrqhjR3uqBGoBmg3XmMlcb7EnivGoa8gKjqpcs1V4M0XSpqW49PNbO9z4vNYwun0tOAb_7XiHnDDht3T3Pomp0X/s1889/Mimic_DNA_01.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="771" data-original-width="1889" height="262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr4cBu1v-XSclCSMU6P7HfIUdOv8oJ4NpYEVoQVA6Uq6KK3zEQ5B2jugBkIGeXYL0GuHo5li12R36bTNyLkbwufTTep_9Uvm4UtyrqhjR3uqBGoBmg3XmMlcb7EnivGoa8gKjqpcs1V4M0XSpqW49PNbO9z4vNYwun0tOAb_7XiHnDDht3T3Pomp0X/w640-h262/Mimic_DNA_01.png" width="640" /></a></div><br /><p><br /></p>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-62368470800840554132022-08-26T08:18:00.006-07:002022-10-21T07:57:36.863-07:00Migrating to Google IoT Core alternatives<p><br /></p><div style="text-align: left;">If you are contemplating migrating from Google IoT before <a href="https://financesonline.com/news/google-cloud-iot-core-is-being-retired-tech-giant-to-focus-on-core-cloud-business/" target="_blank">it retires in a year</a>, you </div><div style="text-align: left;">might want to use MIMIC MQTT Simulator and its <a href="https://mqttlab.iotsim.io/gcp" target="_blank">SaaS offering for Google IoT </a></div><div style="text-align: left;"><b>https://mqttlab.iotsim.io/gcp</b> to design / develop / test your migration strategy.</div><div style="text-align: left;"> </div><div style="text-align: left;"><a href="https://www.gambitcomm.com/site/mqttsimulator.php" target="_blank">MIMIC MQTT Simulator</a> allows you to simulate a large number of your assets that </div><div style="text-align: left;">connect to Google IoT Core, then migrate them to the alternative of your choice.</div><div style="text-align: left;">You can duplicate your current IoT environment in MIMIC to make sure the new </div><div style="text-align: left;">IoT platform handles your specific requirements.</div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/UKcJe1GMHiQ" width="320" youtube-src-id="UKcJe1GMHiQ"></iframe></div><br /><p><br /></p>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-41365600251955900212022-03-04T11:14:00.005-08:002022-10-21T07:59:51.154-07:00MIMIC MQTT Lab for Azure IoT Hub - get started in 5 minutes<div style="text-align: left;"><br /></div><div style="text-align: left;">Available for immediate use is <a href="https://mqttlab.iotsim.io/azure" target="_blank">MIMIC MQTT Lab Azure</a> to get started with Azure IoT Hub</div><div style="text-align: left;">in minutes, as shown in this 3-minute Youtube video</div><p><br /></p><div class="separator" style="clear: both; text-align: left;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/8wjn1jTLoR0" width="320" youtube-src-id="8wjn1jTLoR0"></iframe></div><br /><p></p><div style="text-align: left;">Start with #nocode, #loweffort, #lowcost, then graduate to more advanced IoT simulation</div><div style="text-align: left;">to develop, test, prototype, demo and train your Azure IoT application.</div><div style="text-align: left;">Generate predictable, customized telemetry graphed in Azure Time Series Insight in under</div><div style="text-align: left;">2 minutes</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/9JL0YXmCfS4" width="320" youtube-src-id="9JL0YXmCfS4"></iframe></div><br /><p><br /></p>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-40076829104200675042021-11-09T11:36:00.012-08:002022-09-08T10:47:42.690-07:00Live, dynamic, immediate, 24/7, interactive Ubidots demo<p> FYI, we have published a demo with <a href="https://mqttlab.iotsim.io/ubidots/" target="_blank">MIMIC MQTT Lab</a> for the <a href="http://ubidots.com" target="_blank">Ubidots</a> IoT platform that is</p><p></p><ol style="text-align: left;"><li><b>live</b> - real-time telemetry, no pre-canned videos;</li><li><b>dynamic</b> - things are changing all the time, GPS coordinates, telemetry;</li><li><b>immediate</b> - no need to sign up, etc. just open 2 web browser windows;</li><li><b>predictable </b>- telemetry looks deliberately artificial to show complete control;</li><li><b>interactive</b> - can change the telemetry in real-time;</li><li><b>24/7</b> - any time of day or night.</li></ol><p>The demo shows asset tracking features for a fleet of vehicles: real-time telemetry updates the location</p><p>on the map. If the vehicle is going too fast or is stopped, the colors of the gauge widgets turn to yellow and red respectively.</p><p>To try it now, open 2 web browser windows side by side with the URLs to</p><ul><li><a href="http://mqtt.live.gambitcommunications.com:8080/lab?key=aZc5DMSxR8paIJ4FEe4gwQ%253D%253D" target="_blank">MIMIC lab</a></li><li><a href="https://industrial.ubidots.com/app/dashboards/public/dashboard/Sh4joR1RDoDaMzVkNONp2lj7X76ubset52H71tjKeAg?nonavbar=true" target="_blank">Ubidots dashboard</a></li></ul><p>eg. as in this <a href="https://www.youtube.com/watch?v=CIdmqQGXK24" target="_blank">Youtube video</a> <br /></p><p></p><div class="separator" style="clear: both; text-align: left;"><iframe allowfullscreen="" class="BLOG_video_class" height="277" src="https://www.youtube.com/embed/CIdmqQGXK24" width="484" youtube-src-id="CIdmqQGXK24"></iframe></div><div><br /></div><p> You can change the speed of vehicle 1 with the <b>Demo</b> menu. Allow a couple of seconds to see the impact in the dashboard.<br /></p><p>UPDATE: You can now try the same demo for several more platforms:</p><p></p><ul style="text-align: left;"><li><a href="https://mqttlab.iotsim.io/losant/#demo" target="_blank">Losant</a><br /></li><li><a href="https://mqttlab.iotsim.io/tago/#demo" target="_blank">TagoIO</a><br /></li></ul><p></p>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-11423138558987727092021-09-16T09:09:00.007-07:002022-10-21T07:58:46.122-07:00Self-service MQTT latency testing<div style="text-align: left;"><br /></div><div style="text-align: left;">We have created a SaaS lab at <a href="https://mqttlab.iotsim.io/mqttlatency" target="_blank">https://mqttlab.iotsim.io/mqttlatency</a> to test real-time round-trip </div><div style="text-align: left;">latency to/from your internet-accessible MQTT broker.</div><div style="text-align: left;"> </div><div style="text-align: left;">This 4-minute <a href="https://www.youtube.com/watch?v=vhxTT8PoDwY" target="_blank">Youtube video</a> shows how easy it is by measuring latency for 3 publically accessible </div><div style="text-align: left;">MQTT brokers. To add your own would be a minute more.</div><div style="text-align: left;"> </div><div style="text-align: left;"> <div class="separator" style="clear: both; text-align: left;"><iframe allowfullscreen="" class="BLOG_video_class" height="430" src="https://www.youtube.com/embed/vhxTT8PoDwY" width="517" youtube-src-id="vhxTT8PoDwY"></iframe></div><br /></div>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-81242939426763642412021-07-15T10:56:00.003-07:002021-07-15T10:56:37.588-07:00Self-service online MQTT Lab up to 10,000 sensors available on AWS Marketplace<p>We have recently added a 10k size for our online, self-service MQTT<br />labs on the AWS Marketplace, designed for development, testing,<br />proof-of-concept, training of large IoT applications. The affordable<br />prices are<br /><br />Lab Hourly Annual<br /><br />MIMIC MQTT Lab - 10 sensors $0.10 $ 300.00<br /><br />MIMIC MQTT Lab - 100 sensors $0.30 $ 600.00<br /><br />MIMIC MQTT Lab - 1000 sensors $0.90 $2000.00<br /><br />MIMIC MQTT Lab - 10000 sensors $1.80 $4000.00<br /><br />(all + AWS usage fees)<br /><br />For details check<br /><br /><a href="https://aws.amazon.com/marketplace/seller-profile?id=b654d165-74ca-4af3-b597-07b3cf484b91">https://aws.amazon.com/marketplace/seller-profile?id=b654d165-74ca-4af3-b597-07b3cf484b91<br /></a><br />and<br /><br /><a href="https://mqttlab.iotsim.io/">https://mqttlab.iotsim.io/</a><br /><br />For custom pricing (size, duration) contact us.<br /><br />Here is a 2-minute video of 1000 sensors publishing to the EMQX broker<br />running in a separate EC2 instance:<br /><br /><a href="https://www.youtube.com/watch?v=JUu6nvW6pcE">https://www.youtube.com/watch?v=JUu6nvW6pcE</a><br /><br /><br /><br /></p>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-63438297215136799352020-06-17T08:52:00.000-07:002020-06-17T08:52:07.602-07:00insight.tech: Avoid IoT Project Failure with Better SimulatorsMIMIC IoT Simulator is featured in this Intel <a href="https://www.insight.tech/content/avoid-iot-project-failure-with-better-simulators" target="_blank">insight.tech article</a><br /><br />"<i>Proper network simulation is essential to a successful scale-up.<br />...<br />Rather than attempting to simulate physical hardware, Gambit simulates<br />the traffic that IoT devices generate when they communicate across<br />the network.<br />...<br />When end users can model their network and sensors, they can determine<br />resource requirements before deploying a single device.</i> "<br /><br />Check out MIMIC IoT Simulator on the <a href="https://marketplace.intel.com/s/offering/a5b3b000000TejZAAS/mimic-iot-simulator?language=en_US" target="_blank">Intel Marketplace</a> to<br />
get your <a href="http://iotsimulation.com/" target="_blank">IoT Simulation</a> on the right track.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-41281368866932307932020-03-13T07:50:00.003-07:002020-07-16T13:46:45.361-07:00MIMIC Simulator: Simulated heterogeneous network<div class="separator" style="clear: both; text-align: center;">
</div>
When you want to test your network management application<br />
customizations, nothing beats running against your production network.<br />
But, when you cannot impact your production environment with your<br />
experimentation, you need to run in a lab, with a facsimile of your network.<br /><div>
In that case, an <a href="https://www.snmpsimulator.com" target="_blank">SNMP Simulator</a> like <a href="https://www.gambitcomm.com/" target="_blank">MIMIC Simulator</a> allows you to record <br /></div><div>parts of your network to simulate in your lab. Once everything works in the <br /></div><div>lab, you can deploy changes on your production network.<br /></div>
<br />
For capacity planning or training, you might need sample networks that<br />
represent features that you currently have not deployed, and are planning<br />
to implement. In that case, a MIMIC SNMP Simulator can simulate the<br />
network you need.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/update/doc/auvik-mimic-topo25.JPG" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="436" data-original-width="800" height="217" src="https://www.gambitcommunications.com/update/doc/auvik-mimic-topo25.JPG" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
Figure 1 - Auvik</div>
<br />
MIMIC <a href="https://www.gambitcomm.com/site/large_nets.php" target="_blank">ships</a> with various sample networks, including <a href="https://www.gambitcommunications.com/update/doc/samplenet2019.shtml" target="_blank">this</a> heterogeneous<br />
network which represents a current, multi-vendor, multi-function,
multi-site<br />
environment containing many features to be managed.<br />
<br />
The network has two interconnected sites of <b>25 devices</b> in total, namely,<br />
New York City and London. This network has a variety of devices from<br />
different
vendors. It contains Routers, Switches, Firewalls, Storage devices,<br />
Wireless
Controllers, Wireless Access Points, Phones, Printers and Windows<br />
Servers from
vendors Cisco, Juniper, Fortigate, PaloAlto, Aruba, NetApp, HP,<br />
Avaya and
Microsoft.<br />
<br />
In our lab, the topology is mapped by various common NMS applications,<br />
such as <a href="https://www.auvik.com/" target="_blank">Auvik</a>, <a href="https://entuity.com/" target="_blank">Entuity</a>, <a href="https://www.opennms.com/" target="_blank">OpenNMS</a>, Spectrum, etc.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://www.gambitcommunications.com/update/doc/entuity-dashboard.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="225" src="https://www.gambitcommunications.com/update/doc/entuity-dashboard.jpg" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
Figure 2 - Entuity</div>
<br />
New York has 13 devices starting with <b>Cisco ASR-9000</b> as Edge
router with<br />
2 Firewalls connected to core router <b>Cisco ASR-1000</b> that
connects to the<br />
inside network.
London has 12 devices starting with <b>Juniper MX960</b> as<br />
Edge router
with one Firewall connected to core router <b>Juniper T4000</b> that<br />
connects to the inside network.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/update/doc/opennms-mimic-topo25.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="182" src="https://www.gambitcommunications.com/update/doc/opennms-mimic-topo25.jpg" width="400" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
Figure 3 - OpenNMS </div>
<br />
This network can be customized with all other advanced MIMIC features,<br />
such as
<br />
<ul>
<li>
random interface statistics,
</li>
<li>
CPU/memory statistics,
</li>
<li>
SNMP link/down for root cause analysis,
</li>
<li>CBQOS,
</li>
<li>
IPSLA,
</li>
<li>
IOS configuration management
</li>
<li>
NetFlow
</li>
<li>
Topology Wizard
</li>
</ul>
For example, this network was augmented to 1000 agents:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/update/doc/mimic-topo-25+975.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="449" data-original-width="800" height="223" src="https://www.gambitcommunications.com/update/doc/mimic-topo-25+975.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Figure 4 - Augmented network</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
MIMIC Simulator accelerates testing and training by providing relevant, </div>
<div class="separator" style="clear: both; text-align: left;">
customizable, scalable, dynamic, reproducible network scenarios in your</div>
<div class="separator" style="clear: both; text-align: left;">
lab.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/update/doc/opsramp-topo.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="225" src="https://www.gambitcommunications.com/update/doc/opsramp-topo.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Figure 5 - OpsRamp</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-13325884119674954622020-01-13T13:18:00.003-08:002020-01-13T13:18:48.129-08:00WebNMS Simulation Toolkit: End of LifeWebNMS has announced end-of-life for the WebNMS Simulation Toolkit as<br />
detailed on <a href="https://www.webnms.com/eol_support.html" rel="nofollow" target="_blank">their site</a> as of December 31, 2019.<br /><br />For customers requiring the latest features of an SNMP simulator we offer half off<br />
on an upgrade to the latest version of <a href="https://www.gambitcomm.com/" target="_blank">MIMIC Simulator</a> (ie. 50% discount)<br />
until March 31, 2020.<br />
<br />
Take advantage of a first-class simulation environment geared towards large-scale,<br />
custom, rapid development, testing, prototyping, demonstration of network management<br />
applications. For more details, see the videos on our <a href="https://www.youtube.com/user/gambitcomm/videos" target="_blank">Youtube channel </a>or contact us at<br />
sales@gambitcomm.com . Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-14644043041287217582019-10-30T13:08:00.001-07:002019-10-30T13:08:39.597-07:00MIMIC MQTT Simulator integrates with Alibaba IoT PlatformWe have added <a href="https://www.gambitcomm.com/site/mqttsimulator.php">MIMIC MQTT Simulator</a> integration with the<br />
<a href="https://www.alibabacloud.com/product/iot">Alibaba IoT Platform</a> for getting started, evaluation, development,<br />
testing and proof-of-concept on this platform.<br />
<br />
Here a simulated sensor is updating its device shadow:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-IpKnewPUFD0iMWvNWoYCSry4TqGzIQlMbNrmsq9aYpd-wGhbdVMY9iX_KN7F5_bbVzOhkCaHtzYYEiD6yucvFo_JkpRcvMgyURKqLRlDdagnBnw1K8AwK2uA1xA4QptfnEKjIJs-Rts/s1600/mqtt-alibaba-shadow.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-IpKnewPUFD0iMWvNWoYCSry4TqGzIQlMbNrmsq9aYpd-wGhbdVMY9iX_KN7F5_bbVzOhkCaHtzYYEiD6yucvFo_JkpRcvMgyURKqLRlDdagnBnw1K8AwK2uA1xA4QptfnEKjIJs-Rts/s640/mqtt-alibaba-shadow.png" width="640" /></a></div>
<br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-21663749089839912062019-10-17T09:48:00.000-07:002019-10-17T10:14:42.263-07:00Dynamic, real-time, predictable testing of Amazon GreengrassEfficient testing of <a href="https://aws.amazon.com/greengrass/">Amazon IoT Greengrass</a> with lots of devices is difficult to<br />
achieve, unless you use simulation techniques as everywhere else in<br />
engineering.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmVocGsx6iupvKBBAKmr_a_zrURUaf2RJWITFchcISXmTzGk0F7L0_sIYEy9dJSH6vJzgmRuTIswT95irUkS7vN1L8y7rGPeF31E9tawDITt9vkP5zxy2-GzDEhkQikC8Mx-gnXWOn9uc/s1600/mqtt-greengrass-devices.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmVocGsx6iupvKBBAKmr_a_zrURUaf2RJWITFchcISXmTzGk0F7L0_sIYEy9dJSH6vJzgmRuTIswT95irUkS7vN1L8y7rGPeF31E9tawDITt9vkP5zxy2-GzDEhkQikC8Mx-gnXWOn9uc/s640/mqtt-greengrass-devices.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
We setup a lab of 100 simulated sensors in <a href="https://www.gambitcomm.com/site/mqttsimulator.php">MIMIC MQTT Simulator</a><br />
publishing telemetry in real-time to one instance of Greengrass, simulating<br />
an IoT edge scenario where telemetry is processed at the edge, without<br />
needing to go to the cloud. Most of the telemetry is uninteresting, unless an<br />
anomaly occurs, such as a temperature value above a certain threshold. <br />
<br />
In this 2-minute <a href="https://www.youtube.com/watch?v=HzEtIeYdHr0">Youtube video</a> 10 of those sensors are started, and monitored<br />
by a subscriber application based on NODE-RED. You can see how it<br />
tracks the temperature and light values of the sensors. We dynamically<br />
and predictably create the anomaly in a matter of seconds.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOWE8hXBhkKNRaPTZqebMme8bUcI-0VOriWfKJplccZ3HCvwdAIYkL4MbS-70AMHn14m8kmwuaAWsBkNp7LFjE74Wsp0CF749hcar4E4A095XbEJCI1i82Hg4rTPAApveyWaTggrJuWzs/s1600/mqtt-greengrass-10.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOWE8hXBhkKNRaPTZqebMme8bUcI-0VOriWfKJplccZ3HCvwdAIYkL4MbS-70AMHn14m8kmwuaAWsBkNp7LFjE74Wsp0CF749hcar4E4A095XbEJCI1i82Hg4rTPAApveyWaTggrJuWzs/s640/mqtt-greengrass-10.png" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Then we expanded the number of active sensors to 100, but the NODE-RED<br />
application would not easily show the number of sensors on the graph<br />
(even 10 cannot be definitively shown, and 100 hung the app).<br />
<br />
So, we wrote a small Python MQTT subscriber client, which monitors each<br />
sensor reported at the Greengrass local shadow, and displays the number<br />
of sensors detected, and whether any of them exceeds the arbitrary<br />
threshold (our anomaly).<br />
<br />
This 2-minute <a href="https://www.youtube.com/watch?v=TxA1CmZrVyM">Youtube video</a> shows the interesting parts of the setup,<br />
and the successful completion of the test.<br />
<br />
When testing with Greengrass, make sure to use MQTT simulation to<br />
verify your application.<br />
<br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-69158180800446715892019-10-14T11:05:00.001-07:002019-10-16T06:42:01.629-07:00Anomaly detection scenario with Google IoT CoreThe traditional <a href="https://en.wikipedia.org/wiki/Anomaly_detection">anomaly detection</a> scenario involves detecting unusual<br />
behavior in a vast sea of normal data. To empirically test your anomaly- <br />
detection IoT application requires you to setup a large environment of<br />
sensors sending data to your Google Pubsub application.<br />
To do this in real-time to verify response time constraints is specially hard<br />
to do. <br />
<br />
To demonstrate how simulation can simplify this task, we improved on the<br />
Google Cloud IoT Core <a href="https://cloud.google.com/iot/docs/samples/end-to-end-sample">End-to-end example</a> tutorial by making 10 lines of<br />
code change to their pubsub <a href="https://github.com/gambitcomminc/python-docs-samples/blob/master/iot/api-client/end_to_end_example/cloudiot_pubsub_example_server.py">Python server</a> code.<br />
<br />
The changes merely count the number of devices detected (by their<br />
serial number), and the anomaly is detected if any temperature value<br />
exceeds the threshold, printing a WARN message.<br />
<br />
When we start 10 simulated sensors in <a href="https://www.gambitcomm.com/site/mqttsimulator.php">MIMIC MQTT Simulator</a> configured <br />
to connect to Google IoT Core, they are detected by the listening Pubsub<br />
application. We can then change in real-time the temperature of one of them,<br />
causing the pubsub application to detect the exceeded threshold.<br />
<br />
This 1-minute <a href="https://www.youtube.com/watch?v=OUKaXs7hH7E">Youtube video</a> shows the entire demo in real-time.<br />
<br />
We then used their <a href="https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/iot/api-client/manager">Python manager client</a> to define 90 more devices for<br />
a total of 100. Then we ran the same scenario again. Notice the lag between<br />
when the event occurred and the detection by the Pubsub application.<br />
<br />
Here we show the entire demo in this 1-minute <a href="https://www.youtube.com/watch?v=UKcJe1GMHiQ">Youtube video</a>. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFTdf_UFIXE2QMHUEy4b33l888QXwNG6fepMoqe3Q8s7ilPwVWKwDINc9eNOz6NSDnbR84SG4yCPs_Aj_nAh1AIBJrqTSxOt78qR-ewVnpxC6BrwKaVOgQjR681IjuENDopgGvXGflxGY/s1600/mqtt-googleiot-anomaly.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFTdf_UFIXE2QMHUEy4b33l888QXwNG6fepMoqe3Q8s7ilPwVWKwDINc9eNOz6NSDnbR84SG4yCPs_Aj_nAh1AIBJrqTSxOt78qR-ewVnpxC6BrwKaVOgQjR681IjuENDopgGvXGflxGY/s640/mqtt-googleiot-anomaly.png" width="640" /></a></div>
<br />
<br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-450039540182316322019-08-28T05:09:00.000-07:002019-08-29T07:58:43.152-07:00Guard your IoT Application against hackers using IoT SimulationThe Internet of Things opens up many vectors for security vulnerabilities<br />
as detailed in
<a href="https://tools.ietf.org/html/rfc8576">RFC 8576</a>.<br />
<br />
Vulnerabilities in all stages of a IoT device's life cycle include malware baked in<br />
during manufacturing, or patched while operating by exploiting zero-day<br />
vulnerabilities, specially after the manufacturer's support of the old device is<br />
discontinued (end-of-life). This malware usually causes the IoT device to<br />
deviate from its intended function for some nefarious purpose.<br />
<br />
Part of any IoT Testing and Proof of Concept (PoC) includes addressing security<br />
concerns by adding security monitoring solutions to prevent intrusions,<br />
malware, etc in order to prevent the high <a href="https://venturebeat.com/2019/07/30/microsoft-30-of-iot-projects-fail-in-the-proof-of-concept-stage/">failure rates</a> of IoT projects.<br />
<br />
While preventing malware through authentication, authorization and privacy is<br />
a first defense, the IoT monitoring solution should detect behavior that is not<br />
"normal". A usual test scenario then consists in reproducing cases of IoT devices<br />
that deviate from their expected behavior. Unless you have a lab full of hacked<br />
devices, this is not easy to do.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmu15KTafSfmo0hqTWWY1JK-p_cV8zMQN8N_E1Ns09lwhguID1A9aemVkCesGByh6_HPQdCNHc-YkTCjI_Wug7H-mxCiRRfMLnRO3DkMNiI_91GwKM2yvdXAfHXRGHVBXNOw6QXET2zuU/s1600/mimic-nodered-sparkplug-1k.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmu15KTafSfmo0hqTWWY1JK-p_cV8zMQN8N_E1Ns09lwhguID1A9aemVkCesGByh6_HPQdCNHc-YkTCjI_Wug7H-mxCiRRfMLnRO3DkMNiI_91GwKM2yvdXAfHXRGHVBXNOw6QXET2zuU/s640/mimic-nodered-sparkplug-1k.png" width="640" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div>
An IoT Simulator such as
<a href="https://www.gambitcomm.com/site/iot_simulator.php">MIMIC IoT Simulator</a> is designed to easily recreate<br />
scenarios meant to test your IoT monitoring solution for common hacking<br />
scenarios, such as misbehaving IoT devices (eg. hacked devices sending unusual<br />
Internet traffic, or accessing unauthorized resources), incorrectly configured<br />
firewall or load-balancing rules, reported common vulnerabilities and exposures<br />
(CVE) such as in this
<a href="https://threatpost.com/iot-devices-vulnerable-takeover/144167/">article</a>
.
<br />
<br />
The "normal" behavior of an IoT device can be characterized by the network<br />
traffic it emits and the resources it accesses. Monitoring solutions can learn<br />
this behavior and alert if it deviates from this pattern. MIMIC can control any<br />
simulated device to behave differently at any point in time, and can easily create<br />
different behaviors on demand. Thus, the monitoring solution can be exercised<br />
to prove that it handles certain scenarios, such as higher traffic rates, network<br />
traffic to different destinations and access to restricted resources. Since the<br />
simulator creates reproducible scenarios, it can be part of regression tests<br />
supporting an agile development cycle.<br />
<br />
For example, this <a href="https://www.youtube.com/watch?v=7AZ9BSBS52g">Youtube video</a> demonstrates complete, dynamic, real-time<br />
control of message generation rates in MIMIC.<br />
<br />
<br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-61723273190836770882019-06-17T08:59:00.001-07:002019-06-17T10:42:41.835-07:00MIMIC SNMP SImulator and Prometheus FOSSWe installed the <a href="https://prometheus.io/">Prometheus</a> free open-source software NMS, and enabled<br />
SNMP monitoring following this<a href="https://medium.com/@openmohan/snmp-monitoring-and-easing-it-with-prometheus-b157c0a42c0c"> post</a>.<br />
<br />
Once we pointed Prometheus at a out-of-the-box 25-node simulated network with<br />
<br />
<a href="https://www.gambitcomm.com/site/snmp-simulator.php">MIMIC SNMP Simulator</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjslFyR2Pt6LcYja8h63KJm7mPs-HOd7tOijuYSg1cx92eklNzknan7SqZp6wnrEao670Je6TnKewpchtyaCPBJxa70MgzpdbcUzARuFtX-1OAwxwrWvE7k8y2FeRnStYpsDS25B-MPqXo/s1600/mimic-prometheus-targets.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjslFyR2Pt6LcYja8h63KJm7mPs-HOd7tOijuYSg1cx92eklNzknan7SqZp6wnrEao670Je6TnKewpchtyaCPBJxa70MgzpdbcUzARuFtX-1OAwxwrWvE7k8y2FeRnStYpsDS25B-MPqXo/s640/mimic-prometheus-targets.jpg" width="640" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
we can monitor network interfaces. The graphing can be<br />
compared to a commercial offering as shown below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_8w3uKl-LtmuSWS0kCnz27Zuh3nFtIQrFxNtEA18mvv7jsGIE8iJcaQH9OfidmS8ycY4a1rbvrV2p_YJGoDTEZHDkK2nT7-EG2d0eQYQNMBLc42wsotBLCMyd3-WajEU31ZnlHcgfqfk/s1600/mimic-prometheus-spectrum-graph-stacked.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="817" data-original-width="1600" height="326" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_8w3uKl-LtmuSWS0kCnz27Zuh3nFtIQrFxNtEA18mvv7jsGIE8iJcaQH9OfidmS8ycY4a1rbvrV2p_YJGoDTEZHDkK2nT7-EG2d0eQYQNMBLc42wsotBLCMyd3-WajEU31ZnlHcgfqfk/s640/mimic-prometheus-spectrum-graph-stacked.jpg" width="640" /></a></div>
<br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-60515117822524788202019-06-14T10:52:00.000-07:002019-06-14T12:45:29.011-07:00IoT Control System at the edge: MIMIC MQTT Simulator and AWS IoT Greengrass<br />
<h3>
Overview</h3>
<a href="https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html">AWS IoT Greengrass</a> is Amazon's IoT edge processing platform. We used their<br />
documentation and other sources [1] with <a href="https://www.gambitcomm.com/site/mqttsimulator.php">MIMIC MQTT Simulator</a> to setup a<br />
simple control system at the edge to test bi-directional MQTT message flow<br />
(from sensors to control logic, and from control logic to actuator).<br />
<br />
For those who'd rather skip to the video, here is the 2-minute <a href="https://www.youtube.com/watch?v=0OmrIABtKG4">Youtube video</a>.<br />
<br />
This example illustrates the <a href="https://www.networkworld.com/article/3234708/why-edge-computing-is-critical-for-the-iot.html">purpose</a> of IoT at the edge: the processing that does<br />
not need the cloud should happen locally. In this test, everything is occurring at<br />
the edge, we just added device shadow synchronization to the AWS IoT cloud<br />
for illustration.<br />
<br />
<h3>
Details</h3>
You need to setup an account at
<a href="https://aws.amazon.com/iot/">Amazon AWS IoT</a>.
Once logged into the AWS IoT<br />
console, and a Greengrass Group has been created
according to their<br />
<a href="https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-gs.html">Getting Started manual</a>.
We setup a group called <tt>GG_group2</tt> with a core<tt> </tt><br />
<tt>GG_group2_Core</tt>.
<br />
<br />
Then we simulated our usual bi-directional <b>simple control system</b>
at the edge,<br />
with these devices<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/faq/greengrass-devices.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="360" src="https://www.gambitcommunications.com/faq/greengrass-devices.png" width="640" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
including a sensor <tt>sensor_1</tt> reporting telemetry to Greengrass core,<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/faq/greengrass-sensor1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="360" src="https://www.gambitcommunications.com/faq/greengrass-sensor1.png" width="640" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
running in MIMIC as seen above on the left, with certificates as configured
in<br />
AWS on the right.<br />
<br />
When the <tt>actuator</tt> (eg. cooling system) in the control system
is off, the sensor<br />
temperature heats, and when it is on, then it cools.
We implemented the control<br />
system logic in a
<a href="https://nodered.org/">Node-RED</a>
flow,
rather than in a Lambda function. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/faq/greengrass-nodered-flow.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="360" src="https://www.gambitcommunications.com/faq/greengrass-nodered-flow.png" width="640" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
It turns the actuator on if the
temperature exceeds a high threshold, and turns it<br />
off if the temperature
is cool enough. The connectivity to the core broker is setup<br />
as a
subscriber to the shadow updates as shown below on the right:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/faq/greengrass-nodered-server.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="360" src="https://www.gambitcommunications.com/faq/greengrass-nodered-server.png" width="640" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
and the Node-RED subscriber is configured to connect to the broker at the edge:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/faq/greengrass-nodered-broker.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="360" src="https://www.gambitcommunications.com/faq/greengrass-nodered-broker.png" width="640" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
with TLS certificates exported by AWS:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/faq/greengrass-nodered-tls.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="360" src="https://www.gambitcommunications.com/faq/greengrass-nodered-tls.png" width="640" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
The parts of the system need permission to publish as defined in the
Greengrass<br />
subscriptions:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.gambitcommunications.com/faq/greengrass-subscriptions.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="450" data-original-width="800" height="360" src="https://www.gambitcommunications.com/faq/greengrass-subscriptions.png" width="640" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Once everything is setup, the control system reaches a normal steady
state at the<br />
edge, as visualized by the Node-RED graphing rules, as
shown in this 2-minute<br />
<a href="https://www.youtube.com/watch?v=0OmrIABtKG4&hd=1">Youtube video</a>.<br />
<br />
<h3>
Conclusion</h3>
We saw that by using MIMIC MQTT Simulator we can create a real-time<br />
scalable, predictable, customized IoT Edge Control System scenario that<br />
compresses the state transitions into a period short enough for showing in<br />
less than 3 minutes.<br />
<br />
Future work can improve on this to make it more scalable, test exceptions<br />
(eg. what if the sensor does not cool down when fan is on?), test different<br />
implementations (eg. Lambda function vs. Node-RED), etc. <br />
<br />
<br />
References: <br />
<br />
[1] <a href="https://medium.com/devicepilot/the-hitchhikers-guide-to-aws-iot-1013742ae5bc">The Hitchhikers Guide to AWS IoT</a>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-18792482055678839082019-06-03T10:09:00.001-07:002019-06-12T05:47:23.125-07:00MIMIC MQTT Simulator driving a IoT demo at Cisco LiveIf you are planning to attend <a href="https://www.ciscolive.com/us.html">Cisco Live</a> next week, take a look at a<br />
dynamic IoT platform demo. You will see a cruise ship with dynamic,<br />
real-time cabin temperature and door lock sensors simulated by<br />
<a href="https://www.gambitcomm.com/site/mqttsimulator.php">MIMIC MQTT Simulator</a>.<br />
<br />
Here you see a drill-down to a particular sensor: <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://thumbs.gfycat.com/FittingHeftyIsabellinewheatear-small.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="342" data-original-width="660" height="329" src="https://thumbs.gfycat.com/FittingHeftyIsabellinewheatear-small.gif" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Update 6/12/2019: Here is a <a href="https://twitter.com/jparello/status/1138665277745352704">tweet</a> to a video at the show.<br />
<br />
Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-25926790837479604252019-05-24T11:07:00.000-07:002020-02-24T09:18:52.065-08:00MIMIC MQTT Simulator: dynamic, scalable device shadows on AWS IoTThis 2-minute <a href="https://www.youtube.com/watch?v=CEvtWkaYBa8&hd=1">Youtube video</a> shows multiple, independent device shadows<br />
updating from <a href="https://www.gambitcomm.com/site/mqttsimulator.php">MIMIC MQTT Simulator</a> to <a href="https://aws.amazon.com/iot/">Amazon AWS IoT</a> with dynamic,<br />
real-time, predictable, scalable values.<br />
<br />
MIMIC allows to quickly create on-demand prototypes and proof-of-concepts for<br />
your particular IoT Application based on AWS IoT device shadows.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0qlNoRW_Lh45uu5CFWCsFo2OHNFbHMti7IFzvLXsdye570AkGiFqSFLrsBRnVvDhbVWiUZ6VmGVdfkhcAp3GxB9PdmbqSK6Mye7kA_hKmznI-nd_HNY1idiYJvgonfVF64POZ5v9oocQ/s1600/mimic-awsiot-1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="873" data-original-width="1600" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0qlNoRW_Lh45uu5CFWCsFo2OHNFbHMti7IFzvLXsdye570AkGiFqSFLrsBRnVvDhbVWiUZ6VmGVdfkhcAp3GxB9PdmbqSK6Mye7kA_hKmznI-nd_HNY1idiYJvgonfVF64POZ5v9oocQ/s400/mimic-awsiot-1.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Update 12/04/2019:<br />
<br />
Our <a href="http://mqttlab.iotsim.io/aws/">AWS IoT Get Started Tutorial Lab</a> allows you to get started with<br />
AWS IoT Core in a matter or minutes, learning and experimenting quickly.<br />
<br />
Update 2/24/2020:<br />
<br />
Here is a video testing AWS IoT Rules.<br />
<br />
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/tQkiF3AeKfs" width="560"></iframe><br />
<br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-42469706462340562022019-05-13T07:52:00.002-07:002019-05-13T10:20:18.232-07:00MIMIC Simulator integrated with Telegraf OSS monitoring applicationWhat better way to quickly develop / test / prototype <a href="https://github.com/influxdata/telegraf">Telegraf</a> deployments<br />
than with simulated data? <a href="https://www.gambitcomm.com/">MIMIC Simulator</a> delivers the dynamic,<br />
customizable, scalable data for the variety of Telegraf input plugins.<br />
<br />
To exercise SNMP interoperability, for this experiment we graph real-time<br />
interface statistics from a simulated Cisco<a href="https://www.cisco.com/c/en/us/products/routers/asr-9000-series-aggregation-services-routers/index.html"> ASR 9000</a> router.<br />
<br />
The graph in <a href="https://grafana.com/">Grafana</a> shows ifInOctets SNMP data collected from the MIMIC<br />
simulated Cisco ASR 9000. The data is collected by the Telegraf application<br />
using the SNMP plugin, and output to InfluxDB. Grafana is showing the data<br />
using the InfluxDB as data source.<br />
<br />
The Telegraf, InfluxDB and Grafana setup was done using this link:<br />
<br />
<a href="https://lkhill.com/telegraf-influx-grafana-network-stats/">https://lkhill.com/telegraf-influx-grafana-network-stats/</a><br />
<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ-X6TDxivIdE733yQDxi6T94FMRHRRipGIg6jxrPoSD7WosHmCUIMZ9KYIoqzbRzPQAHLhaousm56XnIn7iShORH9DuGygh1vD2bTOCnms7eI5nsIhy_j-azuSj9sBs8qyWH9GgjtdBQ/s1600/mimic-telegraf-grafana2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="929" data-original-width="1600" height="231" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ-X6TDxivIdE733yQDxi6T94FMRHRRipGIg6jxrPoSD7WosHmCUIMZ9KYIoqzbRzPQAHLhaousm56XnIn7iShORH9DuGygh1vD2bTOCnms7eI5nsIhy_j-azuSj9sBs8qyWH9GgjtdBQ/s400/mimic-telegraf-grafana2.jpg" width="400" /></a></div>
<br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-31998415010771011562019-04-01T12:44:00.002-07:002019-04-02T06:51:21.648-07:00MIMIC implements MQTT 6Skipping the latest MQTT 5, MIMIC MQTT Simulator now supports the<br />
yet-to-be-defined MQTT 6 standard.<br />
<br />
Happy April Fool's Day!<br />
<br />
In all seriousness, MIMIC is the first <a href="https://www.gambitcomm.com/site/mqttsimulator.php">MQTT 5 simulator</a> to implement the<br />
latest MQTT 5.<br />
<br />
Try it out at <a href="http://mqttlab.iotsim.io/mqtt5/">http://mqttlab.iotsim.io/mqtt5/</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioulJMSWpKlyh7QuXLv6ecOS5iavPZWBPoZfqY2N_sMCzvUFOlT-KbHnS5xvceFP1L3iIDGNBJF3HAZvev_skhzv_CcCeD5csKtNjukiBNTLu_ShqFQtRGKZOYGvAIwfdKao1hVW_cbJc/s1600/mqtt-sine-1.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="325" data-original-width="600" height="345" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioulJMSWpKlyh7QuXLv6ecOS5iavPZWBPoZfqY2N_sMCzvUFOlT-KbHnS5xvceFP1L3iIDGNBJF3HAZvev_skhzv_CcCeD5csKtNjukiBNTLu_ShqFQtRGKZOYGvAIwfdKao1hVW_cbJc/s640/mqtt-sine-1.gif" width="640" /></a></div>
<br />Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0tag:blogger.com,1999:blog-7534057782117499652.post-41726657203256812462019-02-07T11:47:00.005-08:002023-07-07T10:49:29.109-07:00MQTT 5 Testing<a href="http://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html">MQTT 5.0</a> is the next version of the ISO standard <a href="https://www.iso.org/standard/69466.html">MQTT 3.1.1</a> Internet<br />
of Things protocol.<br />
<br />
We used the latest version of <a href="https://www.gambitcomm.com/site/mqttsimulator.php">MIMIC MQTT Simulator</a> to test several MQTT<br />
brokers with MQTT 5 support, and in a short time have discovered some<br />
differences in protocol behavior between them.<br />
<br />
<h4>
</h4>
<h4>
Test 1 - CONNECT with Maximum Packet Size set to low value</h4>
In the case of 0, one broker disconnects immediately, and the other sends a<br />
CONNACK with Reason Code. In this case, the spec clearly <a href="http://docs.oasis-open.org/mqtt/mqtt/v5.0/cos01/mqtt-v5.0-cos01.html#_Toc514847923">says</a><br />
<br />
<blockquote class="tr_bq" style="text-align: left;"><p>
It is a Protocol Error to include the Maximum Packet Size
more than once, </p></blockquote><blockquote class="tr_bq" style="text-align: left;"><p>or for the value to be set to zero.</p></blockquote>
Both behaviors are legal, since protocol errors must result in disconnect, but<br />
at the discretion of the server it may send a CONNACK with reason code, as<br />
detailed <a href="http://docs.oasis-open.org/mqtt/mqtt/v5.0/cos01/mqtt-v5.0-cos01.html#_Toc514848132">here</a>.<br />
<br />
Curiously, if the value is 10, again one broker disconnects immediately, but<br />
the other does not send anything, presumably because the CONNACK would<br />
have violated the limit. This results in a timeout at the client. <br />
<h4>
Test 2 - PUBLISH with empty topic name and no topic alias</h4>
In this case, one broker disconnects and the other sends PUBACK with<br />
Reason Code. In this case, the spec clearly <a href="http://docs.oasis-open.org/mqtt/mqtt/v5.0/cos01/mqtt-v5.0-cos01.html#_Toc514847980">says</a><br />
<br />
<blockquote class="tr_bq">
It is a Protocol Error if
the Topic Name is zero length and there is no Topic Alias.</blockquote>
Protocol errors must result in disconnect as detailed <a href="http://docs.oasis-open.org/mqtt/mqtt/v5.0/cos01/mqtt-v5.0-cos01.html#_Toc514848132">here</a>. <br />
<h4>
Test 3 - PUBLISH to wildcard topic</h4>
For example, to handle the error of a PUBLISH with QOS = 1 to an illegal<br />
wildcard topic, one broker returns a <a href="http://docs.oasis-open.org/mqtt/mqtt/v5.0/cos01/mqtt-v5.0-cos01.html#_Toc514847997">PUBACK with the Reason Code of 0x90</a>,<br />
whereas another returns a DISCONNECT with that Reason Code. This<br />
behavior is expected with QOS 0, but since it is not defined as a protocol<br />
error, for QOS 1 and 2 the PUBACK and PUBREC response should be used.<br />
<br />
This is what our logs show:<br />
<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">INFO 02/06.10:58:25 - MQTT[AGT=1] - sent PUBLISH (110 bytes)</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">INFO 02/06.10:58:25 - MQTT[AGT=1] - rcvd PUBREC rc=0x90 Reason String The topic is not valid: </span>...<br />
<br />
<span style="font-family: inherit;">vs.</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">INFO 02/06.11:01:25 - MQTT[AGT=1] - sent PUBLISH (110 bytes)</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">INFO 02/06.11:01:25 - MQTT[AGT=1] - rcvd DISCONNECT reason 0x90 (Reason String PUBLISH with wildcard character (#/+) was sent.)</span><br />
<br />
<h4>
Test 4 - PUBLISH with Payload Format property</h4>
For a <a href="http://docs.oasis-open.org/mqtt/mqtt/v5.0/cos01/mqtt-v5.0-cos01.html#_Toc514847984">PUBLISH with property Payload Format set</a>, the spec says<br />
<br />
<blockquote class="tr_bq">
A Server MUST send the Payload Format Indicator unaltered to all<br />
subscribers receiving the Application Message [MQTT-3.3.2-4]</blockquote><p>
One of the brokers discards the Payload Format Indicator property if it is 0.<br />
If this property is missing, it can be assumed to be 0. While not breaking<br />
anything, this is technically incorrect.<br />
</p><h4>
</h4><h4>
Test 5 - Shared vs. non-shared subscriptions<br /></h4><div style="text-align: left;">The new <a href="http://docs.oasis-open.org/mqtt/mqtt/v5.0/cos01/mqtt-v5.0-cos01.html#_Toc514848121">shared subscriptions</a> allow multiple subscribers to receive mutually </div><div style="text-align: left;">exclusive subsets of the messages of a particular topic filter. This 90-second </div><div style="text-align: left;">YouTube video illustrates the behavior</div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/tdefBE_XDiw" width="491" youtube-src-id="tdefBE_XDiw"></iframe></div><br /><div style="text-align: left;"><br /></div><h4>Conclusion</h4><p>
Since MQTT 5 is so recent, you need to test many features of your selected<br />
MQTT brokers and IoT applications with different scenarios to mitigate<br />
costly surprises before deployment. MIMIC MQTT Simulator can really help<br />
with that.<br />
</p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p><br /></p>Gambit Communicationshttp://www.blogger.com/profile/10945086646971695288noreply@blogger.com0