3.1.5.1 Packet Processing

A multicast session is initialized to be in PreStartState (section 3.1.1.1). In PreStartState, the server MUST NOT send any packets and MUST wait until the first client joins (section 3.1.5.2) the multicast session; at which point the SessionState (section 3.1.1.1) is changed to QCCState.

When SessionState (section 3.1.1.1) is set to QCCState, the server MUST process as specified in section 3.1.5.7. The server moves from QCCState to DataState when a client has been selected as the master client for the multicast session.

When SessionState (section 3.1.1.1) is set to DataState, the server sends the data payload provided by the WDS Multicast Application Protocol to the clients, as specified in [MS-WDSMA]. When the server stops receiving replies from the Master Client, the server changes the SessionState (section 3.1.1.1) to QCCState to force the choice of a new client as the master client.

The server MUST accept and process packets received from clients on unicast address (section 3.1.1.1) during the lifetime of the multicast session.

For each packet received from a client, the server MUST validate the packet as specified in section 3.1.5.1.1and MUST ignore all packets that are not properly constructed.

Whenever a packet is received from a client, the server MUST reset the Inactivity Timer (section 3.1.2) and set its timeout value back to the value specified in section 3.1.2.

The WDS Multicast Transport Protocol causes lower-layered triggered events to the WDS Multicast Application Protocol ([MS-WDSMA]) as the following specifies:

Trigger

Description

POLLACK Trigger

Section 3.1.5.5

Status Trigger

Section 3.1.5.8

Data Empty Trigger

Section 3.1.6.7

Terminate Trigger

Section 3.1.6.9

The server MUST process the packet based on the OpCode (section 2.2.3) as specified below.

OpCode

Description

WDSMCTP_OP_JOIN

0x02

Section 3.1.5.2

WDSMCTP_OP_QCR

0x05

Section 3.1.5.8

WDSMCTP_OP_LEAVE

0x0B

Section 3.1.5.3

WDSMCTP_OP_POLLACK

0x0C

Section 3.1.5.5

WDSMCTP_OP_ACK

0x08

Section 3.1.5.9.5

WDSMCTP_OP_NACK

0x09

Section 3.1.5.9.6

When the Inactivity Timer (section 3.1.2) expires (which happens when the server does not receive packets from any clients for the time specified in section 3.1.2), the server MUST terminate the multicast session.