Menu

Packet headers

The following headers are used, all values are in network byte order. The text below describes the packet formats used in pml-0.01. Note that these packet formats will be obsoleted in ml-0.02.

The P2P Multicast Transport  (PMT) header is used when transporting a resource from sender to receivers. 

  0 4 8 12 16 20 24 28
0 Vers PacketID SessionID
1 SegmentID
2 Payload (...)

PMT header

Transmissions wiill use a value of 0 for the Version field to distinguish the packets from PMSD packets, described below. The packet Id is the sequence number of the packet in the transmission of the current segment. The SessionID must match the SessionID in the corresponding PMSD header describing the multicast session.

The P2P Multicast Session Description (PMSD) header is used when describing a resource using a multicast group.

  0 4 8 12 16 20 24 28
0 Vers CodingID SessionID
1 Payload size (bytes) Starts in (sec) (Res.)
2 Source IP address
3 Multicast group IP address
4 UDP port Bitrate (8Kbit/s)
5 Filesize (bytes)
6
7 File TigerTree Hash
8
9
10
11
12
13 Part offset
14 Part length
15 Part TigerTree Hash
16
17
18
19
20
21 Filename (Max 128 bytes)

PMSD header


The first four bytes of each header are used to multiplex both PMT and PMSD packets on the same (S,G) session. Currently, version number 0 indicates that a PMT packet is being sent and version number 1 indicates that a PMSD version 1 packet is being sent.
The bitrate field in the PMSP header is provided in multiples of 8Kbit/s. So a bitrate value of 8 means that the session will be transmitted at 64Kbit/s
The payload field in the PMSD header indicates the payload size of PMT packets, so excluding the PMTP header (which is 8 bytes)

The following P2P Multicast Transport encodings are defined:

ID Codec Parameters Remarks
0 Reed-Solomon SYMSIZE=8, Genpoly = 0x187, FCS=1, Prime=1, NROOTS=8 (deprecated)
1 LDGM-Stairs

Left degree = 7, Data packets = int(Part length / Payload size) + 1, FEC packets = int (0.25 * data packets), Seed = 1

PMT coding


Copyright (C) 2003, 2004 Steven Hessing