finn@ISI.EDU (02/26/91)
Marten Terpstra, ICMP Source Quench messages may be issued by a gateway when that gateway becomes heavily loaded (congested). The congested gateway picks a message and sends a Source Quench back to that message's source. The original message is then discarded by the gateway. The idea is that the source will notice this and cut down on its rate of transmission. That in turn soon decreases the affected gateway's congestion. The throughput of a gateway is linear as it approaches overload but can fall to zero quickly. Consider throughput as the vertical axis and offered load the horizontal axis and ignore scale. As load rises from zero, the graph slope is positive to a knee, then flattish as the gateway's processing limit is closely approached, then another knee and a rapid descent asymptotically toward zero. Source Quench is a way of telling you that the second knee has been reached. The hope is that if enough sources cut their rates of transmission, the gateway's operating point moves quickly back to the left of the catastrophe. 1) How is the message picked? Well, it was envisioned that whenever a gateway had a queue overflow, the message that caused the overflow would be chosen for Source Quench. It turns out that many gateways generate them only for SOME of the messages that cause a queue overflow and not all. That is because no mechanism to force sources to slow down in response to receiving a Source Quench was adopted as a standard. However, that may change. 2) Newer implementations of TCP (incorporating Van Jacobson's code) treat the receipt of a Source Quench message as evidence of a message lost due to congestion and do slow down for a time as a result. If you run Berkeley UNIX there is a high probability that you are running this TCP. Research is underway that may place code into source IP modules that looks for Source Quench messages. 3) Will ICMP Source Quench messages cause a network is down condition. No, not by themselves. If a gateway's routing tables indicate that a network is unreachable, only then should it send a Network Unreachable version of the ICMP Destination Unreachable message. This is my understanding. I hope that this has helped you. --- ggf