Friday, December 8, 2017

Solarwinds and MIMIC Simulator

If you need to develop and test customizations, or train staff on the
Solarwinds management application, then you can create a facsimile
of your production network in MIMIC Simulator and reproduce interesting

For example, here we show a simulated network being managed by Solarwinds.

Friday, November 17, 2017

Long-term testing with MIMIC Simulator

What do our test systems do over the weekend? They run longer-term tests
that we cannot run overnight.

For example, they run one MIMIC MQTT Simulator test that continuously in
a loop starts 1000 sensors, publishes messages for a while, then stops
them, as might happen in a real-world scenario.

The code is as simple as this:

% while ( 1 )
    ./mimicsh --nogui --script mqtt-start-many.mtcl --args "1 1000 1000"
    sleep 10
    ./mimicsh --nogui --script mqtt-stop-many.mtcl --args "1 1000 1000"

With this simple 5-line test we found that a third-party MQTT broker
was failing after a while. Apparently it was not configured to handle the
"TCP SYN flood" that the OS detected.

Chalk it up to another configurable on brokers that we learned the
hard way.

 If your MQTT broker does not have the configurables for SYN flooding
in their documentation, then you will encounter this problem in your
deployment when all those sensor connections start flapping.

This is but one of the many tests that you can perform with MIMIC MQTT
Simulator on your MQTT broker before IoT deployment to avoid costly
problems in the real world.

Thursday, November 9, 2017

Online MQTT Lab for your access

We have just released a SaaS lab with hundreds/thousands
of simulated MQTT sensors to prototype/test your IoT solution at

You can test your applications by connecting to the lab at any time.

Check out the 3 minute video at

Monday, October 2, 2017

MIMIC MQTT Simulator integrates with Google IoT Core

While integrating simulated Bosch sensors in MIMIC MQTT Simulator
with Google IoT Core we implemented JSON Web Tokens (JWT) for the
MQTT Password, as standardized in RFC 7519 .

This allows for any number of devices publishing MQTT telemetry
with arbitrary authentication parameters to Google IoT Core or
any other IoT platform that requires JWT.

This is in addition to previous support for OAuth 2.0 .

The screenshot below shows 2 pulled subscriptions with unique

Monday, September 18, 2017


Are you implementing LWM2M-MQTT in your environment?

MIMIC MQTT Simulator supports arbitrary payloads for MQTT messages
for a large number of simulated MQTT-enabled devices.

You can use it to quickly prototype your LWM2M-MQTT implementation.
In particular, you can test scalability of your LWM2M server over the MQTT

Thursday, September 14, 2017

How to right-size your IoT platform

You have run extensive tests on your IoT platform candidates, have gotten
QOS / performance guarantees from the vendor, and have selected the most
promising choice.  You may have even put money down.

Now that you are ready to deploy your IoT platform, these are the problems
you will need to solve:
  1. initial configuration

    Likely the IoT platform will need to be tuned to your individual
    requirements in the production environment, which is likely much
    different than your test environment. You may have tested in-house,
    and are deploying on the cloud, or vice versa.

    Configuration does not only involve the middleware software components,
    but the OS itself, as we had learned in this post.

    For example, it took us multiple tries until we could scale ActiveMQ
    to 20,000 simultaneous client connections. Out of the box, on a 8-CPU
    system, we could only scale to about 800 sessions. Then we applied ARP
    cache- and thread-tuning, and got to 7,000 sessions.  Only on the third
    try did we get to 20,000 sesssions.

    You will face this with any IoT platform. With MIMIC MQTT Simulator this
    exercise took an hour including research on this unknown software.
    How long will / would it take you?

  2. end-to-end tuning

    The process above just gets us part-way to the ultimate requirements.
    There are many variables that impact long-term run-time performance
    in your production environment:

    a) connect rate:

    at what rate do clients connect to the broker. For example, your devices
    may all simultaneously connect after a brownout, or there may be a
    steady trickle of sensors connecting and disconnecting during the day.
    Every scenario is different.

    b) publish rate:

    how often do clients publish telemetry? How large and what size
    distribution do the messages have? What QOS and encryption
    parameters are being used? The scenario of 1 message every minute
    with 100 bytes per sensor is quite different from a camera publishing
    hi-res images at 10 / second.

    c) consumption rate:

    how many applications are consuming messages? Since the broker is
    essentially a layer 4 switch, the fanout determines switching
    performance. Wildcard topic subscriptions challenge topic matching
    algorithms. Are your consumers running with enough power to not bog
    the broker down?

    MIMIC MQTT Simulator is highly customizable allowing you to vary all
    these variables to run many end-to-end scenarios to ensure adequate performance.

  3. devops

    You have your production system running, but how do you test that it
    scales up and down with varying performance levels? How do you test
    changes to your applications while it is running?

    With MIMIC you can run synthetic loads even on your production system
    to verify operational adjustments. Your broker cluster should absorb the
    extra load, and contract when the load is gone. By generating custom
    payloads you can test new features and fixes to your consumer application.

Tuesday, July 25, 2017

MIMIC interoperates with Cumulocity IoT Platform

We used the Cumulocity API detailed here to define 100 simulated sensors
with MIMIC MQTT Simulator as shown in this screenshot.

You can use MIMIC to quickly create any set of measurements, events
and alarms for a large number of IoT devices to test your real-time
application on Cumulocity.