KENG back-to-back BGP and traffic setup with Docker Compose
Overview
This is an extended version of a basic Ixia-c back-2-back lab with Keysight Elastic Network Generator components added to emulate L2-3 protocols like BGP. In this lab, Ixia-c has two traffic ports connected back-2-back using a veth pair. In addition, two protocol engines share network namespaces with respective traffic ports. The lab is defined via Docker Compose YAML file. Once the lab is up, a test Go package is used to request KENG to bring up a BGP session between two ports, generate traffic and report statistics.
Prerequisites
- Licensed Keysight Elastic Network Generator images. Read more in KENG.md
- Linux host or VM with sudo permissions and Docker support
- Docker
- Go
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
Deploy Ixia-c lab
-
Launch the deployment
-
Make sure you have all five containers running. The result should look like this
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4a9d84784c46 ghcr.io/open-traffic-generator/licensed/ixia-c-protocol-engine:1.00.0.205 "/docker_im/opt/Ixia…" 8 seconds ago Up 7 seconds cpdp-b2b_protocol_engine_1_1 13119efaea26 ghcr.io/open-traffic-generator/licensed/ixia-c-protocol-engine:1.00.0.205 "/docker_im/opt/Ixia…" 8 seconds ago Up 7 seconds cpdp-b2b_protocol_engine_2_1 0bf9781a133a ixiacom/ixia-c-traffic-engine:1.4.1.29 "./entrypoint.sh" 11 seconds ago Up 8 seconds 0.0.0.0:5556->5556/tcp, :::5556->5556/tcp, 0.0.0.0:50072->50071/tcp, :::50072->50071/tcp cpdp-b2b_traffic_engine_2_1 1604ef2956ab ixiacom/ixia-c-traffic-engine:1.4.1.29 "./entrypoint.sh" 11 seconds ago Up 8 seconds 0.0.0.0:5555->5555/tcp, :::5555->5555/tcp, 0.0.0.0:50071->50071/tcp, :::50071->50071/tcp cpdp-b2b_traffic_engine_1_1 45798f6d3c59 ghcr.io/open-traffic-generator/licensed/ixia-c-controller:0.0.1-3002 "./bin/controller --…" 11 seconds ago Up 9 seconds cpdp-b2b_controller_1
-
Interconnect traffic engine containers via a veth pair
-
Check traffic and protocol engine logs to see if they picked up veth interfaces
Run test package
Destroy the lab
To destroy the lab, including veth pair, use:
Credits
connect_containers_veth.sh
copyright of Levente Csikor, with modifications to replaceifconfig
withip link
.