1.3.2.2 UDP Data Transfer
If the UDP Transport Extension version negotiated in the UDP connection initialization phase is version 3 or higher (section 2.2.2.9), the UDP data transfer is defined in [MS-RDPEUDP2]. The UDP data transfer messages described in this document MUST be used only when the version negotiated in the UDP connection initialization phase is version 1 or version 2 (section 1.7).
In this phase, which follows the UDP Connection Initialization (section 1.3.2.1) phase, the data generated by the users of this protocol is exchanged. This phase ends when either the connection is terminated by the user, or when an endpoint determines that the remote endpoint is no longer present.
The terminal server (sender) and terminal client (receiver) exchange Coded Packets in this phase. A schematic diagram of the FEC engine is shown in the following diagram.
Figure 3: FEC engine
The Remote Desktop Protocol: UDP Transport Extension Protocol uses the FEC mechanism for recovery from packet losses. An FEC Packet is added to the data stream after processing a block of m Source Packets. Each FEC Packet carries redundant information regarding these Source Packets. This information can be used in case one of the m Source Packets is lost and needs to be recovered. A generic equation for generating an FEC Packet is listed as follows.
Figure 4: Generic equation for an FEC Packet
The FEC Packets require no acknowledgments (section 3.1.1.4), and they are not retransmitted. The sender can either set the FEC block size to any value up to 255 or to not send any FEC Packets in the stream. Likewise, the receiver, upon a receipt of an FEC Packet, can ignore the FEC Packet and not use it for any decoding operations.
Upon receiving notification of a packet loss, the sender retransmits the lost datagram. The implementation of the FEC mechanism in the RDP-UDP protocol is only used for recovery from packet losses.