Patent ID: 7720951

Claim:
A method of selectively discarding a set of packets to alleviate congestion in a router, the method comprising: receiving a packet at the router; responsive to the router being clear of congestion, forwarding the packet, wherein being clear of congestion means the router forwards packets the router receives without delay caused by congestion; responsive to the router being severely congested, dropping the packet without regard to a source of the packet or a type of packet, wherein the router is severely congested when the router is incapable of forwarding all the packets the router receives; responsive to determining that the router is moderately congested, determining whether an original sender of the packet is capable of receiving congestion notifications; responsive to determining that the original sender of the packet is not capable of receiving congestion notifications, dropping the packet; responsive to determining that the original sender of the packet is capable of receiving congestion notifications, obtaining a unique identifier for the packet and comparing the unique identifier to a list of unique identifiers maintained by the router, wherein the unique identifier for the packet identifies a transport control protocol connection to which the packet belongs; responsive to determining the unique identifier is absent from the list of unique identifiers maintained by the router, storing the unique identifier for the packet in the list of unique identifiers along with a current time associated with the unique identifier, marking the packet to indicate that the router is moderately congested, and routing a marked packet to an intended receiver, wherein the intended receiver notifies the original sender that the router is moderately congested; responsive to determining the unique identifier is present in the list of unique identifiers maintained by the router, retrieving the current time associated with the unique identifier and determining whether the intended receiver has had enough time to notify the original sender that the router is moderately congested; responsive to determining the intended receiver has had an amount of time to notify the original sender that the router is moderately congested, dropping the packet; and responsive to determining the intended receiver has not had the amount of time to notify the original sender that the router is moderately congested, forwarding the packet to the intended receiver.