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.
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 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).
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.
Important Notes¶
- 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
Apply
button. So if you add/delete/edit streams and/or devices but forget to clickApply
, your changes won't be reflected when you start the transmit