ABSTRACT

Random Early Detection (RED) effectively improves congested conditions by monitoring and controlling average queue size [1]. RED not only keeps queuing delay low but also retains high throughput because it prevents current connections from global synchronization. Unfortunately, RED has to cooperate with specific transport-layer protocol, namely TCP. Besides, RED is incapable of dealing with fair bandwidth sharing among flows.To improve RED’s fairness while keeping simplicity, Choose and keep for responsive flows, choose and kill for unresponsive flows (CHOKe) was proposed [2]. When a packet arrives at a congested router, CHOKe randomly draws a residing packet and compares whether both packets come from the same flow. If they both belong to the same flow, both are discarded at the same time; otherwise, the arriving packet is admitted to enter the buffer according to a probability that depends on the degrees of congestion. XCHOKe is a revised version of the CHOKe, which detects possible malicious flows by storing the flow labels of CHOKe hits in a lookup table [3]. If a flow label has many hits, such flow has a higher chance to be identified as a malicious flow. Accordingly, its arriving packets are assigned with a higher dropping probability. However, XCHOKe has limited improvement on fairness while comparing with CHOKe and RED.