CS 557 Fair Queuing Analysis and Simulation of a Fair Queueing Algorithm A. Demers, S. Keshav, and S. Shenker, 1989 Spring 2013
The Story So Far … . Some Essential Apps: DNS (naming) and NTP (time). Transport layer: End to End communication, Multiplexing, Reliability, Network layer: Addressing, Congestion control, Fragmentation, Dynamic Flow control, Routing, Best Effort Forwarding Data Layer: richly connected network (many paths) with many types of unreliable links
Fair Queuing Main Points • Objective: – Modify router queuing algorithms to ensure fairness • Approach: – Classify packets into <src, dest> flows – Send packets based on finishing time in bit round-robin protocol • Contributions: – Well known technique and implemented in production routers
Congestion Control Options • Control Congestion at Source – Typically adjust congestion windows – But can ’ t assume everyone will do this • Faulty implementation of the control algorithm • Intentional ignorance of the control algorithm • Dynamic Routing – Route packets around congestion – Has problems with jitter, convergence, etc. • Managing the Queues at the Routers – Topic of this paper
Queue Management • Fairly Allocate the Bandwidth – Which packets get transmitted • Fairly Allocate the Delay – When does a packet get transmitted • Fairly Allocate the Buffer Space – Which packets to drop when too many packets arrive
Previous Approaches • FIFO Queuing (FCFS in the paper) – Packets served on first come, first served basis – Assumptions used in the previous papers – RED will modify rules for dropping packets • Attempt to provide fairness for buffer allocation • Aggressive sender can still capture most bandwidth • Seek a solution that is “ fair ” to all flows
Defining Fairness: Flows • First ask “ fair ” to whom? – “ Conversations ” in this paper – Flows is the common term today • What is a flow? – Source address? – Desitnation address? – Process pair? • Typical definition: <source, destination> pair why choose this definition?
Defining Fairness: MaxMin • Given a resource utotal and several requests pi • Assign allocations of ui to node i. • Allocation is fair if – No one receives more than they requested: ui <= pi for all i – No other allocation has higher minimum allocation (for allocations meeting requirement above) – Recursive true after removal of minimum node: let j = user with minimum allocation let utotal = utotal - uj remove user j above conditions should still hold
A Simple (Incorrect) Approach • Allocate buffer space for each flow – Only drop packet if individual flow buffer overflows – Seems fair in terms of buffer allocation … . • Round-Robin Rule for Sending Packets – Transmit packet from queue 1, then queue 2, etc. • Is this approach fair? – What should a sender do to optimize its share of bandwidth?
A Simple (Impractical) Approach • Allocate buffer space for each flow – Only drop packet if individual flow buffer overflows – Seems fair in terms of buffer allocation … . • Round-Robin Rule for Sending Bits – Transmit one bit from queue 1, then queue 2, etc. • Is this approach fair? • Some notation: R(t) = the number of rounds up to time t Nac(t) = the number of active flows at time t S(i,a) = the time packet i from flow a arrives F(i,a) = the time packet i from flow a left
Notations • Some notation: R(t) = the number of rounds up to time t Nac(t) = the number of active flows at time t S(i,a) = the round packet i from flow starts F(i,a) = the round packet i from flow finishes • In which round is a packet transmitted? S(i,a) = Max(R(arrival_time), F(i-1,a)) F(i,a) = S(i,a) + P • Can order packets by their finishing time F(i,a)
A Fair Queuing Algorithm • Important factor is the finishing time F(i,a) – Packet arrived bit by bit (impractical approach) – But it does not matter how bits arrived – Packet is not available until F(i,a) anyway • Fair Queuing Approach – Send packet with lowest F(i,a) • Pre-emption – What if packet arrives with lower F(i,a) then current packet? – Could choose to pre-empt (easier to analyze) or wait (easier to implement)
Fairness in Delay • Give less delay to flows that use less than their fair share of bandwidth – Example • FTP uses large bandwidth so provide reasonable delay • TCP uses little bandwidth so provide only small delay • Add a new delay parameter D – Bid = P(i,a) + MAX(F(i-1,a), R(t(i,a)) - D) • Impact of D – Suppose previous packet sill in queue Bid = P(I,a) + F(i-1,a) (so D has no impact) – If queue has been empty and D is large, Bid is reduced down as low as last packet completion time
(Please refer to table on page 7) Note TCP Delay. Why does Telnet do Better with FQ?
(Please refer to table on page 8) Note TCP Bandwidth. Why Ill-behaved receive near 0 for FQ?
Summary • Effective approach to ensure fairness at router queues – Does not assume a particular transport protocol, – Does not assume transport protocol is well behaved • Provides a balance of throughput, delay, and loss – On a per flow (source,destination pair) basis • Some limitations – May want some “ biased ” fairness – Requires per flow state at the router
Recommend
More recommend