Implementations
Overview
To apply OTG in practice, an OTG-compatible tool, typically a Traffic Generator, is needed. There are several implementations available, and the list is growing:
- Ixia-c: containerized traffic generator from Keysight, with a Community Edition
- Keysight Elastic Network Generator: commercial offering of containerized Ixia-c Traffic Generator from Keysight
- IxNetwork: snappi-ixnetwork enables running OTG/snappi scripts with Keysight IxNetwork
- Magna: open-source OTG implementation from OpenConfig project
- TRex: snappi-trex enables running OTG/snappi scripts with TRex. Supports layer 2-3 Traffic Flows
Ixia-c
Ixia-c is a modern, powerful and API-driven traffic generator designed to cater to the needs of hyperscalers, network hardware vendors and network automation professionals.
It is available both as a free Community Edition as well as a commercial edition, Keysight Elastic Network Generator (KENG), from Keysight. Ixia-c is distributed / deployed as a multi-container application consisting of a controller, traffic and protocol engines, and an optional gNMI server.
As a reference implementation of Open Traffic Generator API, Ixia-c supports client libraries in various languages, most prevalent being snappi for Python and gosnappi for Go.
Community Edition
Components of Ixia-c Community Edition are:
- Ixia-c Controller serves as an OTG API Endpoint over HTTPs and gRPC
- Ixia-c gNMI Server exposes OTG Metrics over gNMI
- Ixia-c Traffic Engine (TE) controls Test Ports and is responsible for transmitting and receiving Traffic Flows
Fig. 1. Ixia-c Traffic Engine Deployment Diagram
Ixia-c Community Edition is limited to:
- Traffic Flows with all capabilities
- Basic traffic performance via raw Linux sockets
- Up to 4 Test Ports in one session
- No L2 protocols on Test Ports
- Emulated Devices without control plane protocols
- Support via Slack channel
KENG
Keysight Elastic Network Generator (KENG) is the commercial edition of Ixia-c with added capabilities:
- Accelerated traffic performance via DPDK PCI
- Unlimited number of Test Ports per session
- Support of L2 protocols on Test Ports
- Emulated Devices with control plane protocols
- Keysight Support with SLAs
Components of KENG are:
- KENG Controller serves as an OTG API Endpoint over HTTPs and gRPC
- Ixia-c gNMI Server exposes OTG Metrics over gNMI
- Ixia-c Traffic Engine (TE) controls Test Ports and is responsible for transmitting and receiving Traffic Flows
- Ixia-c Protocol Engine (PE) is responsible for L2-3 protocol emulation
Fig. 2. Keysight Elastic Network Generator Deployment Diagram
IxNetwork
Keysight's IxNetwork is a tool for performance testing of Layer 2/3 switches and routers. It is capable of emulating a large number of routing protocols and generating terabytes of data. It runs on a large variety of Keysight's hardware based traffic generators and is also available in an all software form factor.
The snappi-ixnetwork plugin allows execution of OTG snappi scripts against an IxNetwork based traffic generator.
Fig. 3. snappi-ixnetwork Deployment Diagram
The above diagram gives a high level overview of how a Python script written using the snappi API uses IxNetwork REST API to configure Keysight's load modules to generate traffic.
The snappi-ixnetwork plugin supports Keysight's AresONE (400 Gbps) and Novus (100 Gbps) based load modules.
Magna
Magna traffic generator is an open-source OTG implementation from OpenConfig project. Magna is designed to be modular, such that it can be easily extended for new use cases. The base implementation does not cover all the OTG APIs, or functionality. More complete implementations such as Ixia-c are likely to be more suited to ongoing testing, an implementation like Magna allows additional flexibility to cover features not yet supported in these implementations, or to test independently of a third-party implementation.
TRex
snappi-trex is a plugin that allows executing snappi scripts with TRex Traffic Generator.
The plugin converts Open Traffic Generator configuration into the equivalent TRex STL Client configuration. This allows users to leverage TRex capabilities without having to write complex STL scripts.
Fig. 4. OTG interface for TRex using snappi-trex plugin
The above diagram outlines the overall process of how the Open Traffic Generator API is able to interface with TRex and generate traffic over its network interfaces.
The snappi-trex plugin supports stateless Traffic Flows over Test Ports. For the full list of supported OTG capabilities, see snappi-trex documentation.