270 likes | 378 Views
EE689 Lecture 4. Review of Last Lecture UDP-based delivery TCP-modifications. End-to-End Congestion. UDP-based applications should do end-to-end congestion control Otherwise -- BW divided unfairly -- Loss of Goodput TCP-friendly -- enforce TCP-like control
E N D
EE689 Lecture 4 • Review of Last Lecture • UDP-based delivery • TCP-modifications
End-to-End Congestion • UDP-based applications should do end-to-end congestion control • Otherwise -- BW divided unfairly • -- Loss of Goodput • TCP-friendly -- enforce TCP-like control • Hard to enforce TCP-friendly mechanism • Multiple connections/IP-spoofing get around those mechanisms.
UDP-based delivery • “Nice” Applications will follow end-to-end congestion • All of the flow control/congestion control reliability to be built into application. • ALF - Application Level Framing - design principle - advocates application level of transport mechanisms.
UDP-based delivery • Packet-pair: One mechanism for BW estimation • Send two packets back-to-back, measure the delay between acks • ACK Compression - Receiving timestamps • Round robin scheduling /FIFO • Minimum ack spacing indicates link BW
Cyclic UDP • Developed at UC Berkeley • Notion of rounds -- data sent in a fixed size time units • Retransmit data within the round • Move on to next round if data not received within round • Apply flow control within the round.
Cyclic UDP • Prioritize packets within round • Order higher priority packets in front • CUDP improves chances of delivery of higher priority packets -- retransmissions have higher priority • NACK - indicate not received packets so far on each packet reception
Cyclic UDP • Rounds allow timely delivery • Rounds allow prioritization of current packets • Application prioritizes within the round • Uses delay and packet losses for determining available BW
Estimating BW • Loss rate = 1 - bytes recvd/ bytes sent • Expected loss rate = X • Expected delay = D1 • If (L > X) EstBW = (1-L)*LtBW/(1+X) else if (meanDelay > D1) EstBW = (1+X)*LtBW*D1/meanDelay else EstBW = (1+X)*LtBW
Cyclic UDP • Adapts to Congestion • Assumes all available BW can be used • Not clear what happens to competing TCP applications • Results indicate multiple CUDP flows share available BW • Loss rate -- scalability ??
Stored Media/Live Media • Stored Media allows buffering of data, can tolerate startup delays • More buffering -- more chances of overcoming congestion/smoother playout • Buffering => Longer latencies, not acceptable for interactive applications • Vxtreme etc. exploit buffering
CUDP Summary • Possible to design adaptive flow control into UDP application • Allows Timely Delivery and discard of expired packets, prioritization • Shown to scale against CUDP apps. • Not clear if more aggressive than TCP • Not a multiplicative decrease response
TCP Modifications • If TCP congestion/flow control is so good, why not retain it? • Easy to show that “TCP-friendly” • Get rid of reliable/in-order delivery mechanisms that get in the way. • HPF = Heterogeneous Packet Flows
HPF • Allows marking packets high/low priority • Provides In-order reliable delivery of high priority packets • Allows low priority packets to be delivered when enough BW available • If routers support priority, can drop low priority packets ahead of high priority packets
HPF Layers • Application Framing (AF) -- convert frames into packets, packets into frames • Windowing, Reliability, Timing and Flow-control (WRTF) -- window management, flow control, reliability, deadlines • Congestion Control (CC) -- congestion response, estimation of RTTs
HPF • Separate the reliable delivery from windowing mechanisms. • Advance rcv_next pointer based on Reliable packets • Compute fraction of packets lost as opposed to based on sequence numbers -- a burst of losses doesn’t lead to cwnd being set to 1. • Multiplicative Decrease/Additive Increase
HPF Congestion Control • If ack_fraction > , cwnd = fi(cwnd), fi = TCP slow start • If ack_fraction < , cwnd = fd(cwnd), fd = 1/(1/cwnd + 1 - ack_fraction) • = 1 - random loss probability
Summary • UDP-based delivery puts application in charge to do flow control, congestion response etc. -- ALF plus more • Tedious for every application to implement all the basic mechanisms • Separate ALF policies and implementation -HPF does this and follows TCP based congestion response