Explicit Congestion Notification, or ECN, is a mechanism for dealing with network congestion over the internet (primarily).

Network congestion occurs when the number of packets received by a router over a period of time is greater than the number it can transmit. Routers queue packets for transmission, and in that way can deal with short bursts of congestion. Packets are simply stored in memory until the line is clear.

A problem arises when congestion continues for long enough that the router runs out of memory (or hits a preset threshold). When this occurs, packets are dropped (deleted). Dropped packets cause the sender to reduce the size its congestion window, taking load off the router by reducing the amount of data sent.

This method of dealing with congestion has several problems, one of which is dealt with by ECN. ECN is an OSI Layer 4 (transport) mechanism to alleviate strain on routers by allowing them to set a field, CE (Congestion Experienced), in the IP Header explicitly notifying the receiving machine that there is congestion on the network. How the receiver deals with this is transport protocol dependent. In TCP (more than 90% of all IP traffic), the receiver then informs the sender to reduce its congestion window size (and thus reduce queue length).

The upshot of this addition is that congestion does not have to reach critical levels before traffic is reduced, and this makes the whole network run smoother. Changes in the way that internet traffic is generated in recent years (with HTTP coming into common use, particularly), mean that the original router behaviours may be less than optimal. The protocols were first designed with bulk data transfers in mind. ECN is a step in the right direction, making realtime exchanges more efficient, and increasing the rate at which TCP can adapt to changing network conditions.

The system does suffer one drawback, however, and that is that not all routers are ECN compliant, and may exhibit unpredictable behaviour when faced with packets that have the CE field set. Currently, there are firewalls in place that break TCP flows that are ECN enabled, and so using it on your machine may mean that some sites become unreachable.

Sources:

RFC 2481
Linux Kernel Source
http://sd.wareonearth.com/woe/Briefings/tcptune/tsld034.htm