Figure 4 shows a CP data packet. CP encapsulates transport-level packets by prepending a 16-byte header and indicating in the protocol field which transport level protocol is associated with the packet. In turn, IP encapsulates CP packets and indicates in its protocol field that CP is being used.
Each CP header contains an application identifier associating the packet with a particular C-to-C application, and a flow identifier indicating which flow from a given endpoint host the packet belongs to. The triple (application id, IP address, flow id) uniquely identifies each flow within the C-to-C application, and hence the source of each CP packet. The header also contains a version number and a flags field.
The remaining contents of the CP header vary according to the changing role played by the header as it traverses the network path from source endpoint to destination endpoint. As the packet passes from the source endpoint to its local AP, the header merely identifies the cluster application it is associated with and its sender. As the packet is sent from the source's local AP to the remote AP, the header contains probe information used to measure round trip time, detect packet loss, and communicate current loss rate and bandwidth availability. As the packet is forwarded from the remote AP to its destination endpoint, the header contains information on application bandwidth use, flow membership, round trip time, loss rate, and bandwidth availability.