Giter VIP home page Giter VIP logo

ixia-c's Introduction


Ixia-C

Ixia-C - A powerful traffic generator based on Open Traffic Generator API

Release v1.1.0-12 Open Traffic Generator v1.1.0 snappi v1.1.0 news news Slack Status

Quick Start  •  Key Features  •  Documentation  •  Use Cases  •  Roadmap  •  FAQ

What is Ixia-C ?

  • A modern, powerful and API-driven traffic generator designed to cater to the needs of hyper-scalers, network hardware vendors and hobbyists alike.

  • Free for basic use-cases and distributed / deployed as a multi-container application consisting primarily of a controller, a traffic-engine and a protocol-engine.

  • As a reference implementation of Open Traffic Generator API, supports client SDKs in various languages, most prevalent being snappi (Python SDK) and gosnappi.

Ixia-C deployment for two-arm test with DUT

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:

  • At least 2 x86_64 CPU cores and 7GB RAM, preferably running Ubuntu 22.04 LTS OS
  • Python 3.8+ (and pip) or Go 1.19+
  • Docker Engine (Community Edition)

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

  • High Performance
    • Run on servers or Keysight hardware (commercial version only)
    • Generate kbps to Tbps of traffic using same script
    • 10Gbps @ 64 byte frame size using one Xeon class core (commercial version only)
    • Built using DPDK
  • Fast REST API for automation
    • Easily integrate with test frameworks like pytest
    • Easily integrate into CI/CD pipelines with Jenkins, GitHub, GitLab
  • Up to 256 flows per port. Each Flow supports:
    • Packet Templates for Ethernet, VLAN, VXLAN, GTPv1, GTPv2, IPv4, IPv6, ICMP, ICMPv6, GRE, UDP, & TCP. More protocols are on the way.
    • Ability to use tools like Scapy to add headers for unsupported protocols.
    • Manipulation of any field in the packet headers
    • Patterns to modify common packet header fields to generate millions of unique packets
    • Ability to track flows based on common packet header fields
    • Configurable frame size
    • Rate specification in pps (packets per second) or % line-rate
    • Ability to send bursts
  • Statistics
    • Per-port and per-flow
    • One way latency measurements (min, max, average) on a per flow basis
  • Capture
    • Packets with filters
    • Write to PCAP or redirect to tcpdump

Copyright notice

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

ixia-c's People

Contributors

biplamal avatar bortok avatar ashutshkumr avatar shramroy avatar ankur-sheth avatar sahanaghosh avatar arkajyoti-cloud avatar apratimmukherjee avatar rudranil-das avatar abhijit-dhar avatar azharkuntoji avatar anjan-keysight avatar vinjose avatar indranibh avatar dandelwa avatar winstonliu1111 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.