2.2.1.2.1 Acknowledgement Payload

The Acknowledgment payload carries acknowledgment information for one or more packets received by the Receiver. The presence of this payload is flagged by the ACK (0x01) flag in the header (section 2.2.1.1), and it is sent by the Receiver.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

SeqNum

receivedTS

...

A

B

C

D

...

...

...

SeqNum (2 bytes): A 16-bit unsigned integer that specifies the lower 16 bits of the sequence number for the data packet that is acknowledged.

receivedTS (3 bytes): A 24-bit unsigned integer that specifies the lower 24 bits of the time stamp as of when the packet that is being received. The timestamp MUST be in units of 4 microseconds.

A - sendAckTimeGap (1 byte): An 8-bit unsigned integer that specifies the time interval in milliseconds between when the packet being acknowledged was received and when the ACK was sent for that packet.

B - numDelayedAcks (4 bits): A 4-bit unsigned integer that specifies the number of delayed ACKs.

C - delayAckTimeScale (4 bits): A 4-bit unsigned integer that specifies the scale applied to the time differences for all the delayed ACKs carried in this packet. The Receiver SHOULD send a value for this field that ensures that each time interval in the delayAckTimeAdditions field is of size less than or equal to 255 (section 3.1.5.6).

D - delayAckTimeAdditions (variable): delayAckTimeAdditions is an array of bytes with numDelayedAcks as the array size, and each byte represents the time difference between 2 adjacent acknowledgments in units of (1<<delayedAckTimeScale) microseconds. The array is arranged in reverse order for the packets to be acknowledged.