FAQ

Q. Ostinato on Windows does not start because wpcap.dll or packet.dll is not found

This error indicates that either npcap is not installed or installed in a non-standard directory. Follow the appropriate instructions below -

For 64-bit Windows

  1. Check if C:\Windows\SysWOW64\ contains packet.dll and wpcap.dll – if yes, you should not be getting this error; please contact Ostinato support.
  2. Check if C:\Windows\SysWOW64\Npcap contains packet.dll and wpcap.dll – if yes, you have npcap installed in native mode in which the DLLs are installed in a non-standard path. The fix is simple - just add C:\Windows\SysWOW64\Npcap\ to your system PATH.
  3. If both the above directories don’t contain packet.dll and wpcap.dll – you don’t have npcap installed. Please install from npcap.org.

For 32-bit Windows

  1. Check if C:\Windows\System32\ contains packet.dll and wpcap.dll – if yes, you should not be getting this error; please contact Ostinato support.
  2. Check if C:\Windows\System32\Npcap contains packet.dll and wpcap.dll – if yes, you have npcap installed in native mode in which the DLLs are installed in a non-standard path. The fix is simple - just add C:\Windows\System32\Npcap\ to your system PATH.
  3. If both the above directories don’t contain packet.dll and wpcap.dll – you don’t have npcap installed. Please install from npcap.org.

Q. When I run ostinato, it does not start drone (the server) automatically

Check the following -

  • The drone executable is in the same path as ostinato
  • The path does not contain any spaces
  • You have WinPcap installed (Windows Only)

Q. I don’t like running Ostinato/Drone as root. Is there an alternative?

Only the drone agent requires special privileges, not the controller (See Controller-Agent Architecture).

The below commands assume drone was installed in /usr/bin. Some distros may install it at /usr/local/bin or /bin. Please use the path appropriate for your system when running these commands. You can find the path for your system by running which drone after installing the package.

If you are using Linux, and your distro provides the setcap utility to set capabilities, you can assign just the required network privileges to the drone binary instead of full root privileges. Run the following via sudo or as root -

setcap cap_net_raw,cap_net_admin=eip /usr/bin/drone

This is the recommended way.

However, if your distro doesn’t support the setcap utility, you can set suid root for Drone. This assigns full root privileges to the drone binary. Run the following via sudo or as root -

chown root /usr/bin/drone
chmod u+s /usr/bin/drone

Either of these methods, need to be done only once. Post this setup, you should be able to run Ostinato/Drone as a normal user without using sudo or as root.

Note: Although Drone can be invoked without sudo or as root, it will run with the privileges you assigned to it by one of the above methods.

Q. Ostinato on Linux fails to start with message “Could not connect to display”

If you are getting an error similar to the following, try running Ostinato as a normal user (not as root). Make sure you have assigned privileges to Drone.

root@potter:/home# ostinato
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Aborted (core dumped)

Q. After starting Ostinato, the port group status is disconnected (the port group icon is red)

See I cannot connect to the port group

Q. I cannot connect to the port group

Check if drone is running. If yes, try reconnecting to the port group (File | Connect Port Group) - make sure that the firewall is not blocking TCP port 7878. If drone is not running, try running drone manually.

Q. I don’t see any ports in my port list

See Port group has no interfaces

Q. I’m unable to expand the port group

See Port group has no interfaces

Q. Port group has no interfaces

Check the following in the order given -

  • Verify that the port group status is “connected” (the port group icon is green)
  • Check that ports are not administratively disabled
  • Ensure that drone is running with required privileges
    • Linux: There’s an easy way and a better way
      • Easy way: If your distro supports sudo use sudo ostinato, otherwise become root by doing su and then run ostinato. Doing this provides full root privileges to both ostinato and drone which is unnecessary and insecure.
      • Better way: Do a one-time privilege assignment. After doing that you can run ostinato as a normal user
    • Mac OSX: There’s an easy way and a better way
      • Easy way: Use sudo /Applications/Ostinato/Ostinato.app/Contents/MacOS/Ostinato. Doing so provides full root privileges to both ostinato and drone which is unnecessary and insecure.
      • Better way: Install Wireshark, if you haven’t already. It is a great tool to have alongside Ostinato. During Wireshark installation, it creates a startup task that sets up appropriate ownership and permissions to the /dev/bpf* devices so that capture/transmit applications such as Wireshark/Ostinato can be invoked normally without sudo. In other words, if you can run Wireshark without sudo, you can run Ostinato without sudo.
    • Windows: Ostinato uses WinPcap on Windows. Typically WinPcap is installed to run at startup and applications using WinPcap don’t need anything special to be done. If however, this isn’t the case for you, you can right click on the Ostinato application and select “Run as administrator”.
  • Ports are not being filtered out by drone

Q. On starting Ostinato/Drone, I get an error “bound address is already in use”. What’s wrong?

The error indicates that some application is already using the TCP port number (7878) that is used by drone.

Check if drone is already running - if not, maybe some other application is running that is using that port number (use netstat to check). You can change the port number that drone uses by passing it as a command line argument - drone <port-number>. From Ostinato, you will need to connect to drone on that particular port by specifying it in the “New Port Group” command.

Q. What is the maximum transmit rate that Ostinato supports?

Ostinato supports line rate traffic generation at 10G, 25G, 40G and 100G using the Turbo Transmit add-on on supported hardware.

Ostinato line-rate performance

Without the Turbo add-on, it depends. Since the traffic is generated by software, it depends on the capabilities (CPU, memory etc.) of the host running drone. To generate “top-speed” traffic, configure a stream with “Packets/Sec” as 0 (Zero). If running on Windows, also configure the “Number of Packets” to be at least 100. However, Ostinato on Windows is significantly slower due to Windows OS limitations; please use Ostinato for Linux instead.

If packet size is not of concern, just the bits per second throughput, use the largest packet size you can - including jumbo frames if supported by your NIC.

Q. How do I get the traffic rate in Mbps?

A bit of theory first.

An ethernet frame is composed of 8 bytes of preamble+SFD followed by the actual data, followed by 4 byte FCS and finally 12 bytes of inter-packet gap. When you specify the packet size in Ostinato, you are configuring the size of the actual data including the 4 byte FCS.

Traffic rate calculated using this packet size is called the data rate. If we add the 8+12=20 byte overhead to every packet and then calculate the traffic rate, what we get is the line rate. When we say interface is a 1Gbps interface, we refer to its maximum line rate. The maximum data rate that can be transferred on this interface will be less than the line rate due to the 20 bytes per packet overhead e.g. for 64 byte packets, the line rate of 1000 Mbps corresponds to data rate of 762 Mbps.

If you are using a fixed packet size in your stream(s), you can calculate the data rate and line rate using the following formulae -

Data Rate (in Mbps) = (fps * packetSize * 8)/1000000
Line Rate (in Mbps) = (fps * (packetSize+20) * 8)/1000000

where fps is the Frame Send Rate (fps) or Frame Receive Rate (fps) as shown in the Ostinato Statistics Window.

If you are using a mix of packet sizes in your stream(s), you can calculate the data rate using the following formula -

Date Rate (in Mbps) = (Bps*8)/1000000

where Bps is the Byte Send Rate (Bps) or Byte Receive Rate (Bps) as shown in the Ostinato Statistics Window. With the current version of Ostinato it is not possible to calculate the line rate in this case.

Q. Why does my DUT show incoming traffic rate less than the outgoing rate shown by Ostinato?

First check if your DUT can handle the rate you are sending to it e.g. some virtual images are rate limited.

Ostinato always displays (and takes input as) the line rate. Check if your DUT displays the line rate or data rate - the latter will always be less than the former. Learn more about line rate and data rate.

Q. When I try to view the capture buffer, Wireshark gives me an error “The file could not be opened: Uncompression error: buffer error”. What’s wrong?

The error indicates there are no packets in the packet buffer - maybe you forgot to start capture?

Q. Can I save/restore streams across Ostinato sessions?

Save/Restore streams is supported from version 0.2 onwards. However, the file format is not final yet - see FileFormat Spec for more information on backward and forward compatibility.

Q. Can I open/save PCAP (wireshark) files?

PCAP/PDML import/export is supported Ostinato 0.4 onwards

Q. Why isn’t my PCAP file imported correctly? Ostinato shows a “diff” after import

Ostinato has some limitations when importing PCAP files -

  • The following external programs are required - tshark, gzip, awk and diff (except for tshark, the remaining should be available by default on any linux/unix system and for Windows these are shipped alongwith the Ostinato binaries)
  • Only ethernet encapsulation is supported currently
  • The “intelligent import” option is dependent on the tshark version - for best results use tshark 2.x/3.x with Ostinato 1.1 or newer. With Ostinato 1.0 or older, use the latest 1.x tshark. You can have multiple Wireshark/tshark versions installed parallely and change Ostinato preferences to use the appropriate version
  • Ostinato (since v1.2.0) recalculates checksums of imported packets. If your PCAP contained packets with incorrect checksums (maybe due to checksum offload as Wireshark reports), Ostinato will report a diff between the original packet and what Ostinato will send out. You can turn off recalculate checksums during PCAP import, if required.
  • Packets with length > 16K are truncated
  • Some text based protocols may be imported as a hexdump instead of text - please report such instances on the mailing list alongwith the PCAP file so that this may be enhanced in future versions of Ostinato

Potential Solution: If you don’t need to edit the imported packets, retry the import and uncheck the Intelligent Import option.

Q. How do I see debug console logs on Windows platforms?

On a Windows platform, console logs from GUI applications do not go to STDOUT or STDERR but to a special “debugging” window. Install the free application DebugView and run it before you start Ostinato/Drone. Logs from Ostinato/Drone will be shown within DebugView. You can copy-paste logs from this window or save the entire log as a text file.

NOTE: Starting version 0.6, Drone is now a pure console app and not a GUI app, so debug output from Drone does not go to the “debugging” window but to the console stdout. To capture Drone output starting version 0.6, you will need to run drone from a cmd/powershell terminal.

Q. On Linux, no debug logs are seen with -d option

Please try exporting the following environment variable -

export QT_LOGGING_RULES="*.debug=true"

Alternately, you can prefix the variable while starting ostinato/drone -

QT_LOGGING_RULES="*.debug=true" ostinato -d
QT_LOGGING_RULES="*.debug=true" drone -d

Q. Where do I get answers regarding the Ostinato Python API?

Please check the Ostinato API Technical FAQ or the Ostinato API Licensing FAQ

Q. The FAQ doesn’t answer my question. What do I do?

Drop a mail to the Ostinato mailing list - ostinato at googlegroups dot com