Flow control (data)
In computer networking, flow control is the process of managing the rate of data transmission between two nodes to prevent a fast sender from outrunning a slow receiver. It provides a mechanism for the receiver to control the transmission speed, so that the receiving node is not overwhelmed with data from transmitting node. Flow control should be distinguished from congestion control, which is used for controlling the flow of data when congestion has actually occurred [1]. Flow control mechanisms can be classified by whether or not the receiving node sends feedback to the sending node.
Flow control is important because it is possible for a sending computer to transmit information at a faster rate than the destination computer can receive and process them. This can happen if the receiving computers have a heavy traffic load in comparison to the sending computer, or if the receiving computer has less processing power than the sending computer.
Types of flow control
- Network congestion
- A prevention mechanism that provides control over the quantity of data transmission that enters a device.
- Windowing Flow control
- mechanism used with TCP.
- data buffer
- A prevention control mechanism that provides storage to contain data- bursts from other network devices, compensating for the variation of data transmission speeds.
Transmit flow control
An earlier version of this section was based on Federal Standard 1037C.[citation needed]
Transmit flow control may occur
- between data "on and off"[citation needed] terminal equipment (DTE) and a switching center, via data circuit-terminating equipment (DCE), the opposite types interconnected straightforwardly,
- or between two devices of the same type (two DTEs, or two DCEs), interconnected by a crossover cable.
The transmission rate may be controlled because of network or DTE requirements. Transmit flow control can occur independently in the two directions of data transfer, thus permitting the transfer rates in one direction to be different from the transfer rates in the other direction. Transmit flow control can be
- either stop-and-go,
- or use a sliding window.
Flow control can be done
- either by control signal lines in a data communication interface (see serial port and RS 232),
- or by reserving in-band control characters to signal flow start and stop (such as the ASCII codes for XON/XOFF).
Hardware flow control
In common RS 232 there are pairs of control lines:
- RTS flow control, RTS (Request To Send)/CTS (Clear To Send) and
- DTR flow control, DTR (Data Terminal Ready)/DSR (Data Set Ready),
which are usually referred to as hardware flow control.
Hardware flow control is typically handled by the DTE or "master end", as it is first raising or asserting its line to command the other side:
- In case of RTS control flow, DTE sets its RTS, which signals the opposite end (the slave end such as a DCE) to begin monitoring its data input line. When ready for data, the slave end will raise its complementary line, CTS in this example, which signals the master to start sending data, and for the master to begin monitoring the slave's data output line. If either end needs to stop the data, it lowers its respective "data readyness" line.
- For PC-to-modem and similar links, the case of DTR flow control, DTR/DSR are raised for the entire modem session (say a dialup internet call), and RTS/CTS are raised for each block of data.
Software flow control
Oppositely, XON/XOFF is usually referred to as software flow control. In the old mainframe days, modems were called "data sets"[citation needed], hence the survival of the term.[citation needed]
Open-loop flow control
The open-loop flow control mechanism is characterized by having no feedback between the receiver and the transmitter. This simple means of control is widely used. The allocation of resources must be a “prior reservation” or “hop-to-hop” type. The Open Loop flow control has inherent problems with maximizing the utilization of network resources. Resource allocation is made at connection setup using a CAC (Connection Admission Control) and this allocation is made using information that is already “old news” during the lifetime of the connection. Often there is an over-allocation of resources. Open-Loop flow control is used by ATM in its CBR, VBR and UBR services (see traffic contract and congestion control) [2].
Closed-loop flow control
The Closed Loop flow control mechanism is characterized by the ability of the network to report pending network congestion back to the transmitter. This information is then used by the transmitter in various ways to adapt its activity to existing network conditions. Closed Loop flow control is used by ABR (see traffic contract and congestion control) [3]. Transmit Flow Control described above is a form of Closed-loop flow control.
See also
- Software flow control
- Computer networking
- Traffic contract
- Congestion control
- Teletraffic engineering in broadband networks
- Teletraffic engineering
- Ethernet flow control
- Handshaking
References
- ^ Network Testing Solutions, ATM Traffic Management White paper last accessed 15 March 2005.