Flow Control Explained
May 7, 2013Until recently, I never paid too much attention to flow control. I knew that it was used in networking, and that it was a setting that sometimes needed modified when I would puttyhyperterminal into a device, but that pretty much ended my knowledge of the matter.
As the name suggests, “Flow Control” will limit the amount of data across a network interface. It’s a pretty simple concept but typically we’re not trying to slow down our network, but rather speed it up. Flow control can be used to slow traffic down rather than dropping frames.
Half Duplex Flow Control
When Half Duplex was common place, Cisco used “back pressure” to control how fast data was coming in. Cisco would essential just send frames down the line to create collisions.
Of course this doesn’t work on full duplex links because you can send and receive at the same time. So, a new method needed to be devised to handle the communication speed.
Pause Frames
When a network device needs to slow down a sender, it can issue a “pause frame” which tells the sender to stop transmitting frames for a period of time which is included in the pause frame. Pause frames are implemented at level 2 of the OSI stack so they are implemented below IP and TCP and means they have very basic functionality and really limits their usability.
Problems with Pause Frames
Let’s look at a couple of more examples, using flow control. Here, we see an issue where 3 clients: A,B,and C are all trying to reach theITHollow.com using 50% of their line capacity. The receiver then is overloaded and can’t handle all of the requests.
We could implement flow control so that the senders will get “pause” frames and slow down their transmissions so that they don’t overload the receiver any more.
An issue remains that since these pause frames are implemented at layer 2 of the OSI model, all Ethernet traffic on the interfaces that receive the pause frame are impacted. In the example below, we see that flow control is implemented and slows down the transmissions of the clients A,B and C in order to keep the receiver from being overloaded. However if clients A and C have additional network capacity and want to communicate with each other, they are also “paused”