US 7,558,200 B2
Router congestion management
Kamal Jain, Bellevue, Wash. (US); Xiaojie Gao, Pasadena, Calif. (US); and Leonard J. Schulman, La Crescenta, Calif. (US)
Assigned to Microsoft Corporation, Redmond, Wash. (US)
Filed on Sep. 01, 2005, as Appl. No. 11/35,353.
Prior Publication US 2007/0053286 A1, Mar. 08, 2007
Int. Cl. H04L 12/26 (2006.01)
U.S. Cl. 370—230  [370/429] 10 Claims
OG exemplary drawing
 
1. A process for managing router congestion in a distributed communications system, comprising:
receiving data packets from senders;
tracking data packet transmission rates of the senders;
implementing an accented congestion management protocol that expects each of the senders to decrease its respective data transmission rate if congestion occurs;
detecting congestion or potential congestion;
during the congestion or potential congestion, determining that one or more of the senders deviate from the accepted congestion management protocol by comparing, for each sender, a present data packet transmission rate to a prior tracked data transmission rate for the sender to determine whether the sender maintained or increased its rate of data packet transmission in violation of the accented congestion management protocol;
rank ordering the one or more of the senders according to egregiousness of their deviation from the accented congestion management protocol to generate a rank ordered list of one or more worst offenders;
identifying which of the received data packets are from the one or more worst offenders of the rank ordered list;
marking the identified data packets for dropping;
queuing in a queue, according to received order, the received data packets, including the identified data packets marked for dropping; and
transmitting the received data packets from a head of the queue except for at least some of those data packets marked for dropping which were received from a most egregious one of the one or more worst offenders according to the rank ordered list wherein a decision for not transmitting occurs based on the marking as each of the marked, identified data packets reaches the head of the queue.