3.2.5.4 Receiving a Route Check Probe message

When a Route Check Probe message arrives through UDP Socket, the sink validates the fields as per sections 2.2.1.1 and 2.2.2.5. If the header contains an invalid value, the sink MUST ignore the message.

Otherwise, the sink MUST locate the relevant Probe Session by searching Probe Session List for an entry where the per-session Initiator Address matches the source IP address of the received message and the per-session Initiator Port matches the Initiator_Port field in the Route Check Probe message-specific header. If an entry cannot be located, the sink MUST ignore the message.

When found, if the per-session Type field is not set to Route Check, the sink MUST ignore the message.

If the per-session Sequence_Number field, plus 1, is not equal to the Sequence_Number field in the message-specific header, the per-session Consecutive Receives field MUST be set to 1. Otherwise, the Consecutive Receives field is incremented by 1.

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

If the Train_Size field in the message-specific header is set to 0, then the sink MUST perform one of the following actions:

  • Packet Inversion Detected- If the Sequence Number field in the message-specific header is less than the per-session Latest High Priority Sequence Number field and the Sequence_Number field is greater than or equal to Latest High Priority Sequence Number minus Latest High Priority Train Size plus 1, then this message is the missing message in the train and the sink needs to send feedback to the initiator. The sink sets the per-session Latest High Priority Train Size field, the Latest High Priority Sequence Number field, the Consecutive Receives field, and the Oversized Packet field to 0. It then sends a Route Check Summary message to the initiator using the per-session TCP Socket . The Obs flag in the Handshake header of the Route Check Summary message is set to 0x01 (Packet inversion detected). Message processing is complete.

  • Otherwise, if the O flag in the Handshake header in the Route Check Probe message is set (indicating an oversized packet), and the Sequence_Number field in the message-specific header is greater than the per-session Latest High Priority Sequence Number field, then the per-session Oversized Packet field is set to the value of Sequence_Number. Message processing is now complete.

  • If neither of the above applies, message processing is complete.

If the Train_Size field in the message-specific header is set to a non-zero value, then the sink MUST perform one of the following actions:

  • Last Packet in Train- If the per-session Consecutive Receives field is greater than or equal to the Train_Size field in the message-specific header, then all packets were received in the correct order and the sink needs to send feedback to the initiator. The sink sets the per-session Latest High Priority Train Size field, the Latest High Priority Sequence Number field, the Consecutive Receives field, and the Oversized Packet field to 0. It then sends a Route Check Summary message to the initiator using the per-session TCP Socket. The Obs flag in the Handshake header of the Route Check Summary message is set to 0x00 (No issue detected). Message processing is complete.

  • Packet Loss Detected- Otherwise, if the per-session Oversized Packet field is set to 0, or the Oversized Packet field plus the Train_Size field in the message-specific header is less than or equal to the Sequence_Number field in the message-specific header, then packet loss is assumed. The sink sets the per-session Latest High Priority Train Size field, the Latest High Priority Sequence Number field, and the Consecutive Receives field to 0. It then sends a Route Check Summary message to the initiator using the per-session TCP Socket. The Obs flag in the Handshake header of the Route Check Summary message is set to 0x02 (Packet loss detected). Message processing is complete.

  • If neither of the above applies, the sink sets the per-session Latest High Priority Sequence Number field to the value of the Sequence_Number field in the message-specific header, and the per-session Latest High Priority Train Size field to the value of the Train_Size field in the message-specific header. Message processing is complete.