Home

Awesome

<h1 align="center"> <br> Ixia-C <br> </h1> <h4 align="center"> Ixia-C - A powerful traffic generator based on <a href="https://github.com/open-traffic-generator/models" target="_blank">Open Traffic Generator API</a> </h4> <p align="center"> <a href="https://github.com/orgs/open-traffic-generator/packages/container/package/keng-controller"><img alt="Release v1.17.0-9" src="https://img.shields.io/badge/release-v1.17.0--9-brightgreen"></a> <a href="https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v1.17.0/artifacts/openapi.yaml"><img alt="Open Traffic Generator v1.17.0" src="https://img.shields.io/badge/open--traffic--generator-v1.17.0-brightgreen"></a> <a href="https://pypi.org/project/snappi/1.17.0"><img alt="snappi v1.17.0" src="https://img.shields.io/badge/snappi-v1.17.0-brightgreen"></a> <a href="docs/news.md"><img alt="news" src="https://img.shields.io/badge/-news-blue?logo=github"></a> <a href="docs/contribute.md"><img alt="news" src="https://img.shields.io/badge/-contribute-blue?logo=github"></a> <a href="docs/support.md"><img alt="Slack Status" src="https://img.shields.io/badge/slack-support-blue?logo=slack"></a> </p> <p align="center"> <a href="#quick-start">Quick Start</a> &nbsp;•&nbsp; <a href="#key-features">Key Features</a> &nbsp;•&nbsp; <a href="docs/user-guide-introduction.md">Documentation</a> &nbsp;•&nbsp; <a href="docs/usecases.md">Use Cases</a> &nbsp;•&nbsp; <a href="docs/roadmap.md">Roadmap</a> &nbsp;•&nbsp; <a href="docs/faq.md">FAQ</a> <br> </p>

What is Ixia-C ?

<p align="center"> <img src="docs/res/ixia-c.drawio.svg" alt="Ixia-C deployment for two-arm test with DUT"> </p>

Keysight also offers a well supported commercial version, Keysight Elastic Network Generator (KENG), with no restrictions on performance and scalability. Scripts written for the community version are compatible with this version.

Quick Start

Please ensure that following prerequisites are met by the setup:

1. Deploy Ixia-C

# clone this repository
git clone --recurse-submodules https://github.com/open-traffic-generator/ixia-c.git && cd ixia-c

# create a veth pair and deploy ixia-c containers where one traffic-engine is bound
# to each interface in the pair, and controller is configured to figure out how to
# talk to those traffic-engine containers
cd conformance && ./do.sh topo new dp

2. Setup and run standalone test using snappi or gosnappi

# change dir to conformance if you haven't already
cd conformance

# setup python virtual environment and install dependencies
./do.sh prepytest

# run standalone snappi test that configures and sends UDP traffic
# upon successful run, flow metrics shall be printed on console
./do.sh pytest examples/test_quickstart.py

# optionally, go equivalent of the test can be run like so
./do.sh gotest examples/quickstart_test.go

Checkout the contents of test_quickstart.py and equivalent quickstart_test.go for quick explanation on test steps.

3. Optionally, run test using curl

We can also pass equivalent JSON configuration directly to controller, just by using curl. The description of each node in the configuration is detailed in self-updating online documentation.

# push traffic configuration
curl -skL https://localhost:8443/config -H "Content-Type: application/json" -d @conformance/examples/quickstart_config.json

# start transmitting configured flows
curl -skL https://localhost:8443/control/state -H "Content-Type: application/json" -d @conformance/examples/quickstart_control.json

# fetch flow metrics
curl -skL https://localhost:8443/monitor/metrics -H "Content-Type: application/json" -d @conformance/examples/quickstart_metrics.json

Key Features

Copyright notice

© Copyright Keysight Technologies, Inc. 2021, 2022, 2023