Skip to content

Controller-Agent Architecture

Ostinato has a controller-agent architecture. There are two corresponding binaries - ostinato is the controller GUI and drone is the agent. Both the components are required. The controller can also be a python script using the python-ostinato API.

The agent does all the heavy lifting of traffic generation and capture. The controller instructs the agent and fetches reporting data like statistics etc. from the agent. Since the agent does the packet generation, hence the DUT (Device Under Test) is connected to the agent and not to the controller.

Arch Basic (ostinato --- drone -- dut)

You can also consider this as frontend-backend where the Ostinato controller is the frontend (GUI or API) and backend is the Drone agent. This guide however, will use the controller-agent terminology

Default Mode

Although the controller and agent are two different binaries, they can also run on the same computer - this is the default mode. Whenever you run the ostinato GUI binary, it will internally spawn the drone agent binary also. The local agent is represented in the controller by a port group with IP address

Arch Default (ostinato/drone -- dut)

One controller - many agents

One controller can connect to many agents as shown below -

Arch 1:N (ostinato --- drone(s) --- dut/sut)

One example of this use case is when a single agent does not have enough ports to connect to the DUT or SUT (System Under Test)

Many controllers - one agent

Multiple controllers can connect to the same agent as shown below -

Arch N:1(ostinato(s) --- drone --- dut(s))

One example of this use case is when an agent has a lot of ports and different controllers are using different ports of the agent connected to different DUT(s).

Cross Platform

Since the controllers and agents can run on different computers, they can be running on same or different Operating Systems - e.g. you can have a Ostinato GUI controller running on Mac OSX laptop connected to an agent running on Windows Server and another agent running on a Linux Server.

Arch Cross Platform

Important Notes

  1. Ostinato controller-agent architecture is NOT like the iperf client-server architecture. Ostinato and Drone do not exchange any data packets
  2. The Ostinato GUI controller sends stream and device configuration information to the agent only when you click the Apply button. So if you add/delete/edit streams and/or devices but forget to click Apply, your changes won't be reflected when you start the transmit
Back to top