Share via


3.1.1.7 Flow Control

The Flow Control feature is similar to the TCP transport protocol Flow Control, as specified in [RFC793].

The main objective of Flow Control is to prevent a fast sender from sending too many datagrams to a slow receiver and congesting it. The receiver advertises the number of datagrams it can accommodate at any given time. The sender MUST NOT send more datagrams than the advertised number of datagrams. The receiver SHOULD discard all datagrams that fall outside the advertised window.

The Flow Control algorithm allows the sender to transmit packets in the following range:

(CumAcked + 1) to (CumAcked + uReceiveWindowSize)

CumAcked:  An internal state variable of the sender.

  • For an RDP-UDP-R sender (section 1.3.1), this is the highest sequence number where all datagrams with a smaller sequence number have already been received by the receiver.

  • For an RDP-UDP-L sender (section 1.3.1), this is the highest sequence number where all datagrams with a smaller sequence number have been either received or marked as lost by the receiver.

uReceiveWindowSize:  The receiver advertised window defined in the RDPUDP_FEC_HEADER structure, as specified in section 2.2.2.1.