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.