6. Debugging RTPS Systems

In general, the Wireshark capture will contain a lot of information and you will need only a subset of it. There are a few very interesting filters that can help narrow down the information until you get exactly what you are looking for. These are presented below:

IP Level Filters:

  • ip.src: Filters the source IP addresses by IP address.
  • ip.dst: Filters the destination IP addresses by IP address.
  • ip.addr: Filters all the IP addresses (for example, “ip.addr == 192.168.1.0”).

UDP Level Filters:

  • udp.srcport: Filters the source ports by the specified port.
  • udp.dstport: Filters the destination ports by the specified port.
  • udp.port: Filters all the ports.

RTPS Level Filters:

  • rtps.guidPrefix.src: Filters the source GUID prefixes by the specified GUID.

  • rtps.guidPrefix.dst: Filters the destination GUID prefixes by the specified GUID.

  • rtps.guidPrefix: Filters all the GUID prefixes by the specified GUID.

  • rtps.trafficNature: Filters by traffic nature.

    • UNICAST_METATRAFFIC = 0
    • MULTICAST_USERTRAFFIC = 1
    • MULTICAST_METATRAFFIC = 2
    • UNICAST_USERTRAFFIC = 3
  • rtps.domain_id: ID of the domain to which the packed belongs.

  • rtps.sm.id: Filters by submessage ID. These are all the different values for the ID in Wireshark. (Note: Not all of them are sent by Connext DDS.)

    • (0x01) PAD
    • (0x02) DATA
    • (0x03) NOKEY_DATA
    • (0x06) ACKNACK
    • (0x07) HEARTBEAT
    • (0x08) GAP
    • (0x09) INFO_TS
    • (0x0c) INFO_SRC
    • (0x0d) INFO_REPLY_IP4
    • (0x0e) INFO_DST
    • (0x0f) INFO_REPLY
    • (0x10) DATA_FRAG
    • (0x11) NOKEY_DATA_FRAG
    • (0x12) NACK_FRAG
    • (0x13) HEARTBEAT_FRAG
    • (0x14) RTPS_DATA_SESSION
    • (0x15) RTPS_DATA
    • (0x16) RTPS_DATA_FRAG
    • (0x17) ACKNACK_BATCH
    • (0x18) RTPS_DATA_BATCH
    • (0x19) HEARTBEAT_BATCH
    • (0x1a) ACKNACK_SESSION
    • (0x1b) HEARTBEAT_SESSION
    • (0x1c) APP_ACK
    • (0x1d) APP_ACK_CONF
    • (0x1e) HEARTBEAT_VIRTUAL
    • (0x30) SEC_BODY
    • (0x31) SEC_PREFIX
    • (0x32) SEC_POSTFIX
    • (0x33) SRTPS_PREFIX
    • (0x34) SRTPS_POSTFIX
    • (0x80) RTI_CRC
  • rtps.sm.wrEntityId: Filters by DataWriter entity ID.

    By using both the guidPrefix and wrEntityId, you can filter by DataWriter GUID. For example:

    (rtps.guidPrefix.src == 0a:46:02:c7:00:00:27:08:00:00:00:01) &&
    (rtps.sm.wrEntityId == 0x000100c2)
    
  • rtps.param.topicName: Filters by Topic name.

  • rtps.param.typeName: Filters by Type name.

As you can see, there are a lot of filters that can be applied. Do not try to memorize all of them. Instead, right-click on top of the fields you want to use for filtering and use the “apply as filter” feature.

See Appendix: Filters with Predefined Values (Section 9) for a list of filters that have predefined values.

For a full list of available filters for each protocol version, please see https://www.wireshark.org/docs/dfref/r/rtps.html.