Using the CORE emulation framework multiple emulated nodes may be configured and run in real time. These emulated devices run the exact same code that would be on the actual devices.
This capability allows the developer to rapidly test and debug with different network topologies, including in real time mobility, in real time. Further, these emulated nodes can be connected to actual physical devices that may be present on the developers desk in order to assess CPU usage and other metrics that are unavoidably device dependent.
As an example of testing on an embedded device, we used a Picostation 2 from Ubiquiti. It's an Atheros MIPS 4KC running at 180MHz with 32MB of RAM and 8MB flash.
The Picostation2 was connected to 30 virtual devices running on a laptop and then OrderOne Scalable Embedded was started on the Picostation2. The OrderOne protocol was configured to generate a packet once a second.
Results for the Picostation2:
- It took 1.7 seconds from launch for OrderOne to build routes to all 30 virtual devices.
- It took 25 seconds from launch to build encrypted sessions with all 30 virtual devices.
- After the sessions were built user space CPU usage was between 7% to 10%. Additional kernel/system usage was between 3% to 6%.
- There were no routing drops while the sessions were being built.
By having a large number of emulated nodes connected to a few actual devices the developer can easily create large ‘stress test’ environments with lots of packet loss while only needing a few real devices.
Rapid development was one of the key drivers in the development of OrderOne Scalable Embedded.
A typical debug cycle should take less than a minute on a laptop running a VM of Ubuntu. Here are the current set of steps and the time that it takes to buildand run a modified version of the core:
- (2.1 seconds) Issue a build command on the host machine that rsync’s thesource code image to the Linux VM and then ‘makes’ both the logic moduleand core application.
- (~3 seconds) Move to the Linux VM window and press the ‘play’ button on the emulation. CORE initializes the nodes and launches OrderOne Scalable Embedded.