ZettaScale Knowledge Base ZettaScale Knowledge Base

  • Home
  • DDS Products
    • DDS Overview and Concepts
    • OpenSplice DDS
      • OpenSplice DDS
        • OpenSplice FAQ
        • Why OpenSplice DDS?
        • Installation
          • OpenSplice Licensing FAQ
        • Best Practice and Possible Errors
        • API and IDL
        • Configuration
        • Networking
          • DDSI
          • RT Networking
        • Durability Service
        • DDS Security
        • Logging
        • Databases and DBMS
        • Release Notes
      • OpenSplice Tools
        • Overview
        • OpenSplice Launcher
        • OpenSplice Tuner
        • OpenSplice Tester
        • Record and Replay Manager
        • MMStat
    • Cyclone DDS
  • Zenoh
  • Contact Support
Home / RT Networking, DDS, OpenSplice DDS, Networking / OpenSplice DDS and Wireshark

OpenSplice DDS and Wireshark

Wireshark (https://www.wireshark.org/ ) is a widely used network protocol analyser and can be used to view DDS network traffic.

OpenSplice DDS supports two different pluggable network services. These are:

  • Standard DDSI2 (RTPS) protocol
  • Proprietary native networking (RTNetworking) protocol

Standard DDSI2 (RTPS) protocol

If you are using the standard DDSI2 (RTPS) protocol, Wireshark already supports this in the RTPS2 plugin and so no additional tools are required. Users can watch and trace any Data Distribution Service (DDS) related packet that goes on the wire from your OpenSplice DDS-based system.

RTNetworking protocol

In order to view packets sent with the proprietary native networking protocol you will need to use the Opensplice DDS Wireshark plugin to dissect packet information.

Installing the OpenSplice DDS Wireshark Plugin

Note: Version 1.8.6 of the plugin is incompatible with Wireshark version 2.0.x or later. Previous Wireshark versions are available to download here.

Linux

The directory /opt/ZettaScale/OpenSplice/X.X.X/HDE/x86_64.win64/tools/wireshark-plugins/ospl contains code that can be built as a plugin for Wireshark, enabling OpenSplice packets to be decoded.

Building the plugin

The included makefiles are for RedHat 6 but will also work with Fedora 14+ and probably other linuxes or gcc-based unix like development environments with minor modifications.

Requirements

The Wireshark and glib header files and libraries must be available. On RedHat 6 systems these are provided by the wireshark-devel and glib2-devel packages.

Compiling the plugin

Choose an appropriate Makefile.defs.* file and rename it as Makfile.defs
Then running ‘make’ will build the shared library object. If this is placed in a .wireshark/plugins directory in the users home directory, it will be loaded at startup by Wireshark.

*note – In some older versions of OpenSplice compiling the plugin may generate an error similar to “undefined symbol: proto_register_ospl“. This can be resolved by ensuring “packet-ospl.o” is included in the Makefile.

Windows

Acquiring the plugin

ZettaScale no longer provide instructions on how to build the Wireshark Plugin on Windows. Instead, the plugins are available pre-built from the following links, distributed under the General Public License (GPL).

https://download.zettascale.online/www/portal/OpenSplice/Wireshark/Wireshark-Plugin-1.8.6-win32.zip

https://download.zettascale.online/www/portal/OpenSplice/Wireshark/Wireshark-Plugin-1.8.6-win64.zip

The plugin can still be built manually using the provided makefile, however this will be unsupported due to the complex setup requirements and procedures for building from source.

The plugin is built against Visual Studio 2010 and requires that the redist pack is installed prior to use, this has been provided in the redist folder of the plugin package.

Using the OpenSplice DDS Wireshark Plugin

Installing the plugin

It may then be installed by copying packet-ospl.dll to %APPDATA%\Wireshark\Plugins (typically C:\Documents and Settings\username\Application Data\Wireshark\Plugins). You can find this path by echoing %APPDATA% at a command line.

Wireshark preferences and capture options

In order to receive fewer packets you can enable or disable protocols in the Analyze -> Enabled protocols menu. For example, you can enable only IP, Ethernet and UDP protocols.

In the Edit -> Preferences -> Protocols -> OSPL menu you can change the port numbers for OpenSplice packets. Default port numbers are 54100,54110,54120. You can also specify ranges like “54100-54120”.

In the Capture->Options menu you can :

  • Disable “promiscuous mode” in order to get only packets sent to/from your machine.
  • Choose “Stop capturing after … kilobytes”.
  • Start capturing data.

These options are displayed for the default interface (eth2). In Capture -> Interfaces you can see the list of available interfaces and choose the right one (eth2).

If you restart Wireshark the settings in Preferences -> Enabled Protocols are saved from the last run, but Capture -> Options are reset to default values.

Displayed data for OpenSplice packets

Info column (“Packet List” pane):

In the packet list there is a short description of the packet: control packet or data packet, flags, packet length, number of messages, packet number (if RELIABLE flag is set). If you select a packet in the packet list, its details are displayed in “Packet Details” pane.

Here you can sort packets by values in different columns.

Protocol tree (“Packet Details” pane)

In the protocol tree you can see the structure of the packet and the values of all protocol header fields. If you select a field in the protocol tree normally you can see the corresponding bytes in the “Packet Bytes” pane, and in the bottom panel you can see the field description.

Error handling

In some cases an error message is displayed in the protocol tree, for example if message length is greater than the remaining packet length. If an OpenSplice packet is too short, only the flags field is displayed (packets shorter than 8 bytes are ignored).

Display filters

During the capture (or after it) you can use the filter field in order to display only some special kinds of packets, for example:

ospl – display only OSPL packets

udp – only UDP packets (and not recognized as OpenSplice packets, for example if the port number is not specified in the preferences for OpenSplice protocol

ospl.fl_control == 1 – OSPL control packets

ospl.messages > 1 && ospl.error – OSPL packets containing multiple messages and with a dissector error

ospl && !ospl.error – OSPL packets without dissector errors

ospl_flags == 0xa – OSPL packets with flags = 0xa (RELIABLE and TERMINATOR)

In the bottom pane you can see how many packets are there and how many of them are displayed.

Field names in OpenSplice protocol which can be used for display filter:

ospl.flags
ospl.fl_control
ospl.fl_reliable
ospl.fl_fragmented
ospl.fl_terminator
ospl.fl_p2p
ospl.snode (sending node id )
ospl.plength (packet length)
ospl.rnode (receiving node id)
ospl.partition (network partition id)
ospl.crc (crc checksum of the packet (optional))
ospl.messages (number of messages in the packet)
ospl.error (dissector error)

In data packets:

ospl.packet (packet number)
ospl.message (fragmented message number)
ospl.fragment (fragment number)
ospl.tmessage (terminating message number)
ospl.tfragment (terminating fragment number)
ospl.mlength (message length)
ospl.data

In control packets:

ospl.chstatus (channel status)
ospl.apartition (network partition id of acked messages)
ospl.astart (starting packet number of acked range)
ospl.aend (closing packet number of acked range)

Saving captured data

After capturing packets you can save the captured data in a file and reuse it. You can save all packets or only displayed (filtered) packets. Wireshark can also export captured data in xml format.

Related

WiresharkOpenSpliceToolsplugin RT NetworkingDDSOpenSplice DDSNetworking
twitter logo linkedin logo
News and Events
Copyright © 2022 ZettaScale Technology Ltd. All Rights Reserved