Network flow control is a means for communications networks to manage traffic congestion on the network. Various techniques can be used for both circuit-based networks as well as packet-switching networks such as those used on the Internet. Through the use of flow control techniques, the network is able to provide better overall quality of service and reduce the frequency of dropped communications.
Circuit networks, such as time-division multiplexing networks for certain types of digital communication, typically use dedicated circuits for communication. In these cases, the network may miss out on utilizing all of its available channels for bandwidth. If a channel is sitting idle while other traffic is waiting to be transmitted, network flow control techniques can be implemented to balance the array of available communication circuits.
With such circuit networks, a technique known as connection admission control (CAC) is used for proper network flow control. Algorithms are used to observe the network and make decisions on whether available resources can be utilized. In general, the algorithms work to allow a circuit's use depending on the evaluation of certain variables, such as the type of service needed, the quality of service that needs to be met, and other traffic information such as the peak rates and sustainable rates. One drawback is that some CAC methods also prioritize the available circuits, thereby reserving some circuits for occasional high-priority connections, which defeats the purpose since those circuits still remain idle if there are no high-priority communications in transit.
With packet-switched networks, a myriad of possible network flow control techniques may be implemented depending on the type of network or available software or hardware. In most cases, a packet-switching network will use some sort of buffer, which is a storage mechanism for capturing data packets as they are received from a sender. The packets go into the buffer and the recipient application pulls them out for use. If the sending transmission is faster than the receiving end's ability to process the data from the buffer, then it can fill rapidly.
In transmission control protocol (TCP) networks, network flow control can be dealt with via a technique known of as window scaling. The three-way handshaking that takes place during a TCP connection allows for information about the recipient's window size to be conveyed. In this way, the recipient can let the sender know how much buffer room is available so that the sender can avoid sending too much data.
The recommended standard 232 (RS-232) telecommunications item also discusses provisions for dealing with network flow control in serialized networks. With RS-232, it breaks down to either a software-based solution or a hardware-based solution. The software technique is also known of as XON-XOFF flow control, where an XON signal is sent by the recipient declaring that it is capable of receiving data, and XOFF when it has a full buffer. Errors may occur if the communication signal is bad, whereby the sender may not properly receive an XOFF signal and continue to push packets onto the recipient. The flow control signals are also sent over the same channel as the data communication, which uses up a small amount of bandwidth.
Hardware-based network flow control, on the other hand, is much more reliable at the added expense of implementing additional, physical lines. In this case, separate transmission control lines are set up: one is called a request to send (RTS) line, and the other is the clear to send (CTS) line. The sending end announces its intent to transmit over the RTS line, and the recipient announces its ability to receive over the CTS line.