OTG with Ixia L23 Hardware: back-to-back setup
Overview
This example demonstrates how the OTG API can be used to control Keysight/Ixia L23 Network Test Hardware. The same Keysight Elastic Network Generator ixia-c-controller
that serves as the OTG API Endpoint for Ixia-c software test ports can be used with the hardware test ports. Such deployment model requires to use ixia-c-ixhw-server
container image that provides an interface between the controller and the hardware test ports. See the diagram below that illustrates the components of such setup:
Prerequisites
-
Access to Keysight Elastic Network Generator images. Read more in KENG.md
-
Keysight Ixia Novus or AresOne Network Test Hardware with IxOS 9.20 or higher
-
Linux host or VM with sudo permissions and Docker support. Here is an example of deploying an Ubuntu VM
otg
using multipass: -
Python3 (version 3.9 or higher), PIP and VirtualEnv
* Go version 1.19 or later -
git
andenvsubst
commands (typically installed by default)
Install components
-
Install
docker-compose
-
Make sure
/usr/local/bin
is in your$PATH
variable (by default this is not the case on CentOS 7) -
Clone this repository
Diagnostics
To collect diagnostics logs from all the components of the lab, run:
It will create a logs-DATE.tar.gz
file you can share with Keysight for troubleshooting.
TIP. Use
make logs
if you havemake
on your system
Deploy Keysight Elastic Network Generator
-
Launch the deployment
-
To make sure all the containers are running, use
the list of containers should include:
ixhw-b2b_ixia-c-controller_1
ixhw-b2b_ixia-c-ixhw-server_1
-
Initialize environment variables with locations of Ixia L23 hardware ports. Replace
ixos_ip_address
,slot_number_X
,port_number_X
with values matching your equipment.export OTG_LOCATION_P1="ixos_ip_address;slot_number_1;port_number_1" export OTG_LOCATION_P2="ixos_ip_address;slot_number_2;port_number_2"
For example, if IxOS management IP is
10.10.10.10
and you need to use ports14
and15
in the slot number2
:
Run OTG traffic flows with Python snappi
library
-
Setup virtualenv for Python
-
Run flows via snappi script, reporting port metrics
-
Run flows via snappi script, reporting port flow
Cleanup
To stop the deployment, run:
OpenConfig Feature Profiles B2B test
Deploy Keysight Elastic Network Generator
-
Launch the deployment
-
To make sure all the containers are running, use
the list of containers should include:
ixhw-b2b_ixia-c-controller_1
ixhw-b2b_ixia-c-ixhw-server_1
ixhw-b2b_ixia-c-gnmi-server_1
-
Initialize environment variables with locations of Ixia L23 hardware ports. Replace
ixos_ip_address
,slot_number_X
,port_number_X
with values matching your equipment.export OTG_LOCATION_P1="ixos_ip_address;slot_number_1;port_number_1" export OTG_LOCATION_P2="ixos_ip_address;slot_number_2;port_number_2"
For example, if IxOS management IP is
10.10.10.10
and you need to use ports14
and15
in the slot number2
: -
Create an ONDATRA binding file
otgb2b.binding
by usingotgb2b.template
as a template and substituting OTG port locations using the environmental variables initialized in the previous step.
Run FeatureProfiles OTG HW back-2-back test
-
Clone FeatureProfiles fork from Open Traffic Generator org. The back-2-back test we're going to use is published under the
static
branch we need to clone: -
Run FeatureProfiles OTG HW B2B test
Multi-seat deployment
If you need to support multiple concurrent seats (simultaneous tests) on the same VM, it is possible to launch several parallel instances of Keysight Elastic Network Generator.
-
What you need for that is to choose a set of different TCP ports that
ixia-c-controller
andixia-c-gnmi-server
would be mapped to on the host. As an example, see the file fp.compose.ports2.yml. You would also need start the deployment using a non-default project name, so that the second set of containers would run over a dedicated network. -
Now create a second ONDATRA binding file, for example
otgb2b.binding2
:
Now you're ready to run the two parallel tests via the same VM using two different binding files.
Cleanup
To stop the deployment, run: