2.2.1.1 Handshake Header Format

Both the initiator and sink devices transmit this header as part of all of its messages. The Handshake header format is defined as follows.


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

Proto_and_Msg_ID

Flags

Reserved

Version

Proto_and_Msg_ID (1 byte): This field distinguishes the qWave Protocol from other qWave protocols (see [MS-QDP]). It also identifies the type of message transmitted, and thus, the form of the message-specific header that immediately follows the Handshake header. This field MUST<2> be one of the following.

Value

Meaning

Sender Role

Uses TCP or UDP

0x00

Discard

Initiator

TCP

0x01

Packet Pair Connection Handshake

Initiator

TCP

Packet Pair Probe

UDP

0x02

Route Check Connection Handshake

Initiator

TCP

Route Check Probe

UDP

0x05

Probegap Probe

Initiator

UDP

0x06

Sink

0x0A

Packet Pair Summary

Sink

TCP

0x14

Route Check Summary

Sink

TCP

0x1E

Connection Handshake Success

Sink

TCP

Flags (1 byte): This field has message-specific meaning. In other words, depending on the value of Proto_and_Msg_ID, this field can be interpreted as follows:

If this is a Packet Pair Probe message (that is, Proto_and_Msg_ID is 0x01, UDP protocol is used and UDP source port is not 2177), this field takes the form of:


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

F

Reserved

F (1 bit): This field MUST be set to 1 to indicate that a Packet Pair Probe message is the first message in a train. Otherwise, this field MUST be set to 0.

Reserved (7 bits): This field MUST be set to 0 and ignored on receipt.

If this is a Route Check Probe message (that is, Proto_and_Msg_ID is 0x02, UDP protocol is used and UDP source port is not 2177), this field takes the form of:


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

O

Reserved

O (1 bit): This field MUST be set to 1 to indicate that a Route Check Probe message is oversized. Otherwise, this field MUST be set to 0. For more information about oversized packets, please see section 3.1.

Reserved (7 bits): This field MUST be set to 0 and ignored on receipt.

If this is a Route Check Summary message (that is, Proto_and_Msg_ID is 0x14, TCP protocol is used and TCP source port is 2177), this field takes the form of:


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

Obs (Observation)

Reserved

Obs (Observation) (2 bits): This field MUST contain one of the following values:

Value

Meaning

0x0

No issue detected

0x1

Packet inversion detected; that is, a packet did not arrive in the order it was sent

0x2

Packet loss detected

0x3

Reserved

For more information about how these values are used, please refer to section 3.1.

Reserved (6 bits): This field MUST be set to 0 and ignored on receipt.

For all other cases, the field takes the following form:


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

Reserved

Reserved (1 byte): This field MUST be set to 0 and ignored on receipt.

Reserved  (1 byte): This field MUST be set to 0 and ignored on receipt.

Version (1 byte): This field identifies the protocol version. If Proto_and_Msg_ID has the value 0x05 or 0x06, this field MUST be set to 0x02. Otherwise, this field MUST be set to 0x01.