This test is designed to characterize sustained ONOS's Intent operations (install and withdraw intents) throughputs when the cluster is scaled from 1 to 3, 5, 7 nodes. We expect as we the increase the number of nodes in the cluster, the total operations throughput should increase.
In order to characterize the intrinsic performance of ONOS itself, free of external performance limiting factors, we use a number of instrumented utilities in ONOS to run this test. On the south bound Openflow side, we use Null Provider to substitute Openflow switches(devices) in order to avoid flow installation performance limitation from hardware or emulated switches. A load generator bundle, "app-intent-perf", is instrumented in ONOS. This app when enable, constructs a set of point-to-point one-hop intents for the afore-mentioned Null Provider devices. The app sets up separate intent buckets so that installation and removal operations of intents can be performed simultaneously without interruption. As such, the installation and removal rates are periodically calculated and logged periodically.
A number of parameters are used to adjust IntentPerfInstaller properties. In the currently test, we varies the "numNeighbor" property to adjust how many neighbors the installed intents need to reach. For example, with cluster size of 3 nodes, ONOS1 is running the installer, with numNeighbors set to 2. This will cause ONOS1 to construct intents for its own local installation, as well as intents that are targeted to other two nodes for the installation.
Other parameters, such as "numKeys" and "cyclePeriod" are currently not experimented with, and remain with their default value.
Diagram illustrating IntentPerfInstaller installing intents targeting devices local to the node and devices in neighboring nodes.
- Configure Null Provider (link, device) to associate 10 null devices for each ONOS node;
- Configure the appropriate properties for IntentPerfInstaller (i.e. numKeys, numNeighbors, cyclePeriod);
- Install "onos-apps-intent-perf" bundle on the generating node;
- Record "Overall Throughput" (currently obtained by checking onos logs) on each node;
- Aggregate TP from all nodes as the total throughput.