Performance of the network can play a major differentiator in the cloud. Given the problem of having hundreds of tenants sitting on your cloud with several thousand virtual machines sending terabytes of data, it becomes essential to build a robust network as well as thoroughly test it. Fortunately, with OpenStack Neutron’s plugin based architecture, the IaaS provider has several solutions at his disposal from multiple vendors to build the network. But then, one of the hardest challenges faced is to test and benchmark the network performance on a multi-tenant cloud environment at scale. At Symantec, we addressed this problem by creating our own benchmarking tool called ‘load-runner’.
Load-runner uses OpenStack to benchmark OpenStack! The environment consists of an Ubuntu based control VM and multiple CentOS based test VMs running iperf. When load-runner is executed in the control VM, it talks to the OpenStack API service to create the test VMs. The test VMs run iperf and communicate back the results to the control VM through a ZeroMQ based communication channel. Load-runner has the capability to collect these results in CSV format and pipe it to an output file.
Load-runner is extremely object-oriented and performs the tests described in a YAML file. The tests can be highly descriptive or very succinct, depending on the need. The tests can describe the number of tenants, networks, servers, availability zones and even the iperf arguments. It can also take in a user-defined Python function to run a particular test in a custom way.
The source code for load-runner is open and available on Github along with its user guide. Any contribution is always welcome!
Rudrajit Tapadar (@rtapadar)
Symantec Cloud Platform Engineering