Vasona Networks Inc. develops software that improves mobile carrier infrastructure efficiency. With the growing volumes in LTE networks we had to scale up our product, which posed a challenge of testing it in such high loads. Specifically on what traffic generator to use.
We needed a traffic generator that can statefully send different types of traffic, such as Browsing, Video, Audio, etc. from hundreds of thousands different simulated mobile UEs, meaning encapsulating the traffic with GTP tunnels with a unique tunnel ID for each simulated UE.
Obvious solution was to buy an off the shelf traffic generators like IXIA or Spirent, which would have set us back by hundreds of thousands of dollars.
We started looking into TRex and found that it can answer our needs, by using equipment we already had, meaning regular x86 servers.
TRex can scale to:
- 10K clients – each with different GRE tunnel/vlan
- Unlimited servers
- 1k templates
- Millions of flows
- High performance 40-80Gb/sec
Although, it was lacking the GTP tunneling function, we found it easy enough to develop and add support for it in TRex and we are planning to contribute that.
We’re actually currently using the 2 modes types the TRex offers:
- Statful Application – To perform load and stress testing by simulating up to a million mobile UEs for long period of times.
- Stateless Application – To perform 1D benchmarking and find the performance envelop of our product. The Benchmark runs with different packet sizes and different transport protocols. We actually built automation around this and now we have a nightly benchmark constantly running and verifying we don’t degrade the performance of our product.
This is a typical test environment, where we use in-house developed tools to generate the control traffic, which simulates the mobile network components and use TRex to generate the data traffic from the mobile UEs.
Statefull Configuration Example:
IMIX Stateless Configuration Example:
All of this was done during a time span of a few month and was possible thanks to great documentation of TRex and it’s different function and great support we got from the TRex developers through the TRex Google group or even by mails.
One main feature that TRex currently lacks is its own TCP/IP stack. This is needed to simulate live TCP connections that react to network events like packet drops or shaping. This is in the TRex roadmap and yours truly hopes it’ll be in soon.
For the fast multi-core TCP stack request, fd.io TLDK stack was just released and looking to integrate it.