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
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.
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
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 127.0.0.1
One controller - many agents
One controller can connect to many agents as shown below -
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 -
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).
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.
- Ostinato controller-agent architecture is NOT like the iperf client-server architecture. Ostinato and Drone do not exchange any data packets
- The Ostinato GUI controller sends stream and device configuration information to the agent only when you click the
Applybutton. 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