Deploy Ixia-c using docker-compose
Deploying multiple services manually (along with the required parameters) is not always applicable in some scenarios. For convenience, the deployments directory consists of the following docker-compose
files:
*.yml
: Describes the services for a given scenario and the deployment parameters that are required to start them..env
: Holds the default parameters, that are used across all*.yml
files. For example, the name of the interface, the version of docker images, and etc.
If a concerned .yml
file does not include certain variables from .env
, those can then safely be ignored.
Follwoing is the example of a usual workflow, by using docker-compose
.
# change default parameters if needed; e.g. interface name, image version, etc.
vi deployments/.env
# deploy and start services for community users
docker-compose -f deployments/<scenario>.yml up -d
# stop and remove services deployed
docker-compose -f deployments/<scenario>.yml down
On most of the systems, docker-compose
needs to be installed separately even if the docker is already installed. For more information, see docker prerequisites .
All the scenarios that are mentioned in the following sections, describe both manual and automated (requiring docker-compose) steps.
Deployment Parameters
Controller
Controller Parameters | Optional | Default | Description |
---|---|---|---|
--debug | Yes | false | Enables high volume logs with debug info for better diagnostics. |
--disable-app-usage-reporter | Yes | false | Disables sending of usage data to the app-usage-reporter. |
--http-port | Yes | 8443 | TCP port for HTTP server. |
--aur-host | Yes | https://localhost:5600 | Overrides the location of the app-usage-reporter. |
--accept-eula | No | NA | Indicates that the user has accepted EULA, otherwise the controller will not boot up. |
--license-servers | No | NA | Indicates the ip address of license servers for commercial users. |
Docker Parameters:
--net=host
: It is recommended to allow the use of the host network stack, in order to address the traffic-engine containers usinglocalhost
instead ofcontainer-ip
, when deployed on the same host.-d
: This starts the container in background.
Example:
# For community users
docker run --net=host -d ghcr.io/open-traffic-generator/keng-controller --accept-eula --debug --http-port 5050
# For commercial users
docker run --net=host -d ghcr.io/open-traffic-generator/keng-controller --accept-eula --debug --http-port 5050 --license-servers="ip/hostname of license server"
Traffic Engine
Environment Variables | Optional | Default | Description |
---|---|---|---|
ARG_IFACE_LIST | No | NA | Name of the network interface to bind to. It must be visible to the traffic-engine's network namespace. For example, virtual@af_packet,eth1 where eth1 is the interface name and virtual@af_packet indicates that the interface is managed by the host kernel's network stack. |
OPT_LISTEN_PORT | Yes | "5555" | TCP port on which the controller can establish connection with the traffic-engine. |
OPT_NO_HUGEPAGES | Yes | "No" | If set to Yes , it disables hugepages in the OS. The hugepages needs to be disabled when the network interfaces are managed by the host kernel's stack. |
Docker Parameters:
--net=host
: This is required if the traffic-engine needs to bind to a network interface that is visible in the host network stack but not inside the docker's network.--privileged
: This is required because the traffic-engine needs to exercise capabilities that require elevated privileges.--cpuset-cpus
: The traffic-engine usually requires 1 shared CPU core for management activities and 2 exclusive CPU cores, each for the transmit engine and receive engine. The shared CPU core can be shared across multiple traffic-engines. For example,--cpuset-cpus="0,1,2"
which indicates that cpu0 is shared, cpu1 is used for transmit and cpu2 is used for receive. If CPU cores are not specified, any arbitrary CPU cores will be chosen. > If enough CPU cores are not provided, the available CPU cores may be shared among management, transmit, and the receive engines, that can occasionally result in lower performance.-d
: This starts the container in background.
Example: