Generally, flow-control is a mechanics which allows the receiving party of a connection to control the rate of the sending party. You may see many different implementations of flow-control technologies at different levels of OSI model (e.g. XON/XOFF for RS232, TCP sliding window, B2B credits for Fibre Channel, FECN/BECN for Frame-Relay, ICMP source-quench message, etc).

For the original Ethernet technology on half-duplex connections there was no possibility to implement explicit (signaled) flow control, since only one side could send frames at time. (However, some may still remember the Cisco’s so-called “back-pressure” feature on some of the older switches (e.g. Cisco Catalyst 1924. The idea was that switch may send barrage of dummy frames on a half-duplex link, effectively preventing the station from transmitting information at given moments of time).

Things changed with full-duplex point-to-point connections. The idea of IEEE 802.3X flow-control was to allow a station on a point-to-point link to send a special “PAUSE” frame (sent to a reserved multicast MAC address 01:80:C2:00:00:01) to signal the other end of the connection to pause transmission for a certain amount of time – the amount is specified in the frame. (Note that the PAUSE frame uses MAC LLC encapsulation). This simple scheme allows for a switch to signal a station to stop overwhelming the connection and vice-versa: station is able to tell switch to slow the sending rate. What should a station or a switch do with the delayed frames left to a specific implementation.

As switches evolved, the simple idea ceased to work in scalable and effecient manner. Nowdays applications need more advanced QoS features other than simple flow-control. Modern Layer3 switches are capable of performing policing, queueing and scheduling to implement complicated Diff-Serv based QoS policies. Messing all that complex functionality with simple flow control may ruin the whole thing. Imagine your switch trying to do it best to provide expedited forwarding for CoS 5 voice frames and suddenly recieving PAUSE frame from a station, telling it to shut up for say 30 milliseconds.

This is why it’s always advised to turn off 802.3X flow control whether you enable MLS QoS on a Cisco switch be it 3550 or 3560. By default flowcontrol is disabled and you can only enable a Cisco switch to receive PAUSE frames, but not to send them.

Use the following commands to set up and verify your current settings:


SW1:
interface GigabitEthernet0/1
 flowcontrol receive on

giga1-sw-ats64#show interfaces gigabitEthernet 0/1 flowcontrol
Port       Send FlowControl  Receive FlowControl  RxPause TxPause
           admin    oper     admin    oper
---------  -------- -------- -------- --------    ------- -------
Gi0/1      Unsupp.  Unsupp.  on       on          0       0