An intermediary node on a data communications network implements a flow
control algorithm to control network congestion. The intermediary node
receives messages destined for servers or other upstream nodes from
clients or other downstream nodes and determines whether to forward the
messages based on the flow control algorithm, which may be adaptive. The
algorithm may consider explicit back-off messages received from upstream
nodes, failure of upstream nodes to respond to messages forwarded by the
intermediary node, and/or other criteria. When a back-off condition
applies, the intermediary node refrains from forwarding messages it
receives and sends back-off messages to nodes initiating the messages.
Back-off messages may include a back-of time period and/or other back-off
criteria.