Switches, Hubs, and Modems
cancel
Showing results for 
Search instead for 
Did you mean: 

When to use Flow Control?

SOLVED
Go to solution
RicN
Valued Contributor

When to use Flow Control?


When should you use the Flow Control feature on a switch interface?

It seems to be able to send some kind of pause frame if overloaded, but is it good practise to put this network flow controlling on layer two?

Do both sides on a link have to be configured? Could it be used from PC/Server to Switch or just Switch-to-Switch link?

What is your experiences and recommendations?
7 REPLIES
Manfred Arndt
Valued Contributor

Re: When to use Flow Control?

RicN,

The primary application for flow control is in high performance applications with protocols that are highly loss sensitive.

Both sides of a link have to be configured and if you are going to use flow control, it is generally recommended to be enabled on every link along the path.

Using Flow Control is typically not a good recommendation and is rarely used. If you are planning on using QoS, then you MUST NOT use flow control.

This is because flow control can cause head of line blocking across ports and queues.

For example, priority 0 buffer is full, so the switch sends a pause frame to the transmitter on the side of the link. This will cause the TX switch to block all higher priority traffic until the receiving switch says its ok to resume.

Likewise, a single downlink port on a switch that is congested can cause all uplink traffic being sent to that switch to be blocked.

Draft IEEE 802.1Qau specification for congestion notification is adding support for per-priority pause to mitigate the head-of-line blocking for QoS across priority queues.

Bottom line: unless you really know what you are doing...don't use flow control.

Cheers,
Manfred
RicN
Valued Contributor

Re: When to use Flow Control?


Hello Manfred and thank you for more good answers!

The pause frame itself, will it only travel one link, i.e. from one switchport to the next, never from say a PC to a server located a few switch hops away?

Is there any "negotiation" going on, like finding the best speed/flow or is it just a temporary pause being sent when the Layer 2 buffer is full either on a switchport or perhaps also on a NIC on a PC?
Richard Brodie_1
Honored Contributor

Re: When to use Flow Control?

"The pause frame itself, will it only travel one link, i.e. from one switchport to the next, never from say a PC to a server located a few switch hops away?"

The pause frame address is in the reserved 'not to be forwarded' 802.1D range. Even if it doesn't understand it, a switch shouldn't forward it. Some cheap and nasty ones might.
RicN
Valued Contributor

Re: When to use Flow Control?


Thanks!

I am wondering why it would be good to set the flow control feature on all links if so?

It should be the switch port with the lowest bandwidht that run into trouble and has to demand pause from it's neighbor, but this pause itself - could it create a chain effect and make next uplink switchport buffer to be full and to demand a pause from its uplink neighbor?

I guess it in most cases would be best to let TCP handle a general network flow control?
Manfred Arndt
Valued Contributor
Solution

Re: When to use Flow Control?

Flow Control works best when the network can signal the source server to pause and stop overloading the network when congestion occurs.

This makes most sense with non-TCP and non-UDP based application that can not tolerate ANY packet loss. This is typically in environments where all traffic is constrained to a local LAN.

For most applications, it is best to let TCP handle the window sizing and retransmissions. And most UDP applications can handle typical packet loss from well engineered networks just fine.

If you really know what you are doing...you could try to use flow control on the switch port with the lowest bandwidth, as long as the upstream switch has more than sufficient buffer capacity. But this can be tricky to engineer properly and more often than not creates more problems than helps.

For most situations, you will be better off to re-engineer your network and deploy switches with sufficient buffer capacity where you detect bottle-necks in your network.
RicN
Valued Contributor

Re: When to use Flow Control?


Thank you Manfred for really good answers!
bellfox
Occasional Contributor

Re: When to use Flow Control?

good answer manfred, thank you too. it's realy help us..