KENG three back-to-back pairs setup with Docker Compose
Overview
This lab is an extension of Ixia-c back-to-back traffic engine setup. Free version of Ixia-c supports up to 4 traffic engine ports. If the number of ports you need exceeds four, a commercial subscription to Ixia-c – Keysight Elastic Traffic Generator - should be used. In this setup, we're using an evaluation copy of the Keysight Elastic Traffic Generator controller. Read more about access to the evaluation copy in KENG.md.
Prerequisites
- Linux host or VM with sudo permissions and Docker support
- Docker
Install components
-
Install
docker-compose
-
Install
otgen
-
Make sure
/usr/local/bin
is in your$PATH
variable (by default this is not the case on CentOS 7) -
Clone this repository
Deploy lab
-
Create 3 veth pairs
sudo ip link add name veth0 type veth peer name veth1 sudo ip link set dev veth0 up sudo ip link set dev veth1 up sudo sysctl net.ipv6.conf.veth0.disable_ipv6=1 sudo sysctl net.ipv6.conf.veth1.disable_ipv6=1 sudo ip link add name veth2 type veth peer name veth3 sudo ip link set dev veth2 up sudo ip link set dev veth3 up sudo sysctl net.ipv6.conf.veth2.disable_ipv6=1 sudo sysctl net.ipv6.conf.veth3.disable_ipv6=1 sudo ip link add name veth4 type veth peer name veth5 sudo ip link set dev veth4 up sudo ip link set dev veth5 up sudo sysctl net.ipv6.conf.veth4.disable_ipv6=1 sudo sysctl net.ipv6.conf.veth5.disable_ipv6=1
-
Launch the deployment and adjust MTUs on the veth pair
-
Make sure you have all seven containers (six Ixia-c Traffic Engine + one KENG Controller) running:
The result should look like this
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6f3b3f0f4104 ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.9 "./entrypoint.sh" 7 seconds ago Up 5 seconds b2b_traffic_engine_1_1 2815f742922a ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.9 "./entrypoint.sh" 7 seconds ago Up 6 seconds b2b_traffic_engine_6_1 7bafb0bc3bbc ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.9 "./entrypoint.sh" 7 seconds ago Up 5 seconds b2b_traffic_engine_3_1 e205740a0f0d ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.9 "./entrypoint.sh" 7 seconds ago Up 5 seconds b2b_traffic_engine_4_1 539f386b5e7e ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.9 "./entrypoint.sh" 7 seconds ago Up 5 seconds b2b_traffic_engine_5_1 2ec23b5623dc ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.9 "./entrypoint.sh" 7 seconds ago Up 5 seconds b2b_traffic_engine_2_1 16cfd8d59224 ghcr.io/open-traffic-generator/keng-commercial-sep-30:0.0.1-3113 "./bin/controller --…" 7 seconds ago Up 5 seconds b2b_controller_1
Run OTG traffic flows
-
Start with using
otgen
to request Ixia-c to run traffic flows defined inotg.3pairs.yml
. If successful, the result will come as OTG port metrics in JSON format -
You can now repeat this exercise, but transform output to a table
-
The same, but with flow metrics
-
The same, but with byte instead of frame count (only receive stats are reported)
-
Now report packet per second rate, as a line chart (end with
Ctrl-c
)
Destroy the lab
To destroy the lab, including veth pair, use: