As part of a broader organisational restructure, data networking research at Swinburne University of Technology has moved from the Centre for Advanced Internet Architecture (CAIA) to the Internet For Things (I4T) Research Lab.

Although CAIA no longer exists, this website reflects CAIA's activities and outputs between March 2002 and February 2017, and is being maintained as a service to the broader data networking research community.

Synthetic Packet Pairs (SPP) - Tool for passive round trip time measurement


This section contains a few notes about some of the SPP software's internals.

Program Modules

The program is constructed of two main types of modules. The first type is the SPP processor itself, and the second is the data collector. The job of the data collector is to construct a list of <pkt_id,timestamp> tuples (referred to as 'instances' internally) from either a file, live interface, or remote interface that can then be used by the SPP processor. Generally, SPP will operate with three threads: one thread to carry out the SPP algorithm, and two data collector threads, which which read data from measurement points. In a master and slave configuration, the master will use three threads as usual, however the slave will only use two threads, since it only requires one data collector.

SPP Sample Frames

When using remote interface monitoring, SPP Sample Frames are sent to the master from a slave. They include the data necessary to construct the <pkt_id, timestamp> tuples as well as direction for every packet of target traffic observed. The frames begin with a pseudo Real-time Transport Protocol (RTP) header. Re-using the RTP header format has some advantages, such as for debugging we can utilise the Wireshark RTP decoder. The SSF header contains the following information (RTP fields in which the information is stored are shown in square brackets).
  • SSF version (2 bits) [Version]
  • SSF format code (7 bits) [PT]
  • Seconds component of timestamp (4 bytes) [TS]
  • Microseconds component of timestamp (4 bytes) [SSRC]
The RTP sequence number field is not used in our current implementation (future work).

After the header comes a list of observed packet 'instances'. The default instance format is as follows:
  • Packet ID (32 bits)
  • Direction (1 bit)
  • Timestamp diff (15 bits)
In our implementation the length of the timestamp diff can be set to 1, 2 or 4 bytes including the direction bit (the default is 2 bytes). Timestamps are calculated by adding the diff from the current instance to the timestamp of the previous instance. For the first instance in the SSF frame, the diff is added to the timestamp contained in the header.

Last Updated: Friday 19-Apr-2013 15:00:54 AEST | Maintained by: Sebastian Zander ( | Authorised by: Grenville Armitage (