3.1.6.4 Per-Packet Pair Session Resend Timer Expiry

If the current system time is greater than the per-session End Time field value, then the initiator MUST fail the request that instantiated the session if the per-session Summaries Received field is set to 0, or invoke the per-session Forced Estimation Callback and then succeed the request if the Summaries Received field is not set to 0 and in both cases the session object is deleted.

Otherwise, if the per-session Send Attempt field is greater than or equal to 3 or the Next Send Time field is greater than or equal to the current time, the initiator MUST set the per-session Expected Message field to 0x0A (Packet Pair Summary). The initiator MUST enable the Per-Packet Pair Session Resend timer and set to expire at the earliest of Next Send Time or End Time if Send Attempt is less than 3, otherwise it expires at End Time. If the expiry time for the Per-Packet Pair Session Resend timer is less than the current system time, it MUST be adjusted to expire at the current system time. At this point, the timer expiry event is complete.

Otherwise, each Packet Pair Probe message inside Probe Array is updated as follows:

  • The Sequence_Number field in the message-specific header MUST be set to the value of the per-session Sequence Number field.

  • The Initiator_Port field in the message-specific header MUST be set to the local port number of the per-session TCP Socket.

  • The Optional_Data_Payload field in the message-specific header SHOULD be initialized with random byte values, generated using any pseudo-random number generator, to pad the probe message to an arbitrary size. For suggestions on the size of this field, please see [PacketPair].

The per-session Sequence Number field MUST then be incremented by 1. The initiator MUST send all messages in the per-session Probe Array, starting from the first element in the array, using UDP Socket. If the send operation fails, the initiator MUST fail the Packet Pair Experiment request and the session object is deleted.

If the send operation succeeds, the per-session Send Attempt field MUST be incremented by 1.

The Next Send Time field MUST be set to the current system time plus 20 milliseconds.

The initiator MUST set the per-session Expected Message field to 0x0A (Packet Pair Summary). The initiator MUST enable the Per-Packet Pair Session Resend timer and set to expire at the earliest of Next Send Time or End Time if Send Attempt is less than 3, otherwise it expires at End Time. If the expiry time for the Per-Packet Pair Session Resend timer is less than the current system time, it MUST be adjusted to expire at the current system time.