15-744 Computer NetworkingAnnouncementsOutlineTransport ProtocolsFunctionality SplitSlide 6UDP: User Datagram Protocol [RFC 768]UDP, cont.UDP ChecksumHigh-Level TCP CharacteristicsTCP HeaderEvolution of TCPTCP Through the 1990sSlide 14Stop and WaitRecovering from ErrorHow to Recognize Resends?How to Keep the Pipe Full?Sliding WindowSender/Receiver StateSequence NumbersWindow Sliding – Common CaseLoss RecoveryImportant LessonsGood Ideas So Far…Slide 26More on Sequence NumbersTCP Flow ControlWindow Flow Control: Send SideSlide 30Performance ConsiderationsEstablishing Connection: Three-Way handshakeSlide 33Reliability ChallengesTCP = Go-Back-N VariantRound-trip Time EstimationOriginal TCP Round-trip EstimatorJacobson’s Retransmission TimeoutTimestamp ExtensionTimer GranularityFast Retransmit -- Avoiding TimeoutsFast RetransmitTCP (Reno variant)SACKSACKPerformance IssuesSlide 48Slide 49CongestionCauses & Costs of CongestionSlide 52Congestion CollapseWhere to Prevent Collapse?Congestion Control and AvoidanceApproaches For Congestion ControlExample: TCP Congestion ControlSlide 59ObjectivesBasic Control ModelLinear ControlPhase plotsSlide 64Additive Increase/DecreaseMultiplicative Increase/DecreaseConvergence to EfficiencyDistributed Convergence to EfficiencyConvergence to FairnessConvergence to Efficiency & FairnessIncreaseConstraintsWhat is the Right Choice?QuestionsTCP Congestion Control15-744 Computer NetworkingReview 2 – Transport ProtocolsAnnouncements•Project proposal•Due 9/24•Roughly 1/3 on each of problem statement, state-of-art, work plan/milestones•~1pg total•HW1•Out today, due 9/272Outline•Transport introduction•Error recovery & flow control•TCP flow control/connection setup/data transfer•TCP reliability•Congestion sources and collapse•Congestion control basics34Transport Protocols•Lowest level end-to-end protocol.•Header generated by sender is interpreted only by the destination•Routers view transport header as part of the payload•Not always true…•Firewalls776655776655TransportTransportIPIPDatalinkDatalinkPhysicalPhysicalTransportTransportIPIPDatalinkDatalinkPhysicalPhysicalIPIProuter222211115Functionality Split•Network provides best-effort delivery•End-systems implement many functions•Reliability•In-order delivery•Demultiplexing•Message boundaries•Connection abstraction•Congestion control•…6Transport Protocols•UDP provides just integrity and demux•TCP adds…•Connection-oriented•Reliable•Ordered•Byte-stream•Full duplex•Flow and congestion controlled•DCCP, RTP, SCTP -- not widely used.7UDP: User Datagram Protocol [RFC 768]•“No frills,” “bare bones” Internet transport protocol•“Best effort” service, UDP segments may be:•Lost•Delivered out of order to app•Connectionless:•No handshaking between UDP sender, receiver•Each UDP segment handled independently of othersWhy is there a UDP?•No connection establishment (which can add delay)•Simple: no connection state at sender, receiver•Small header•No congestion control: UDP can blast away as fast as desired8UDP, cont.•Often used for streaming multimedia apps•Loss tolerant•Rate sensitive•Other UDP uses (why?):•DNS•Reliable transfer over UDP•Must be at application layer•Application-specific error recoverySource port # Dest port #32 bitsApplicationdata (message)UDP segment formatLengthChecksumLength, inbytes of UDPsegment,includingheader9UDP ChecksumSender:•Treat segment contents as sequence of 16-bit integers•Checksum: addition (1’s complement sum) of segment contents•Sender puts checksum value into UDP checksum fieldReceiver:•Compute checksum of received segment•Check if computed checksum equals checksum field value:•NO - error detected•YES - no error detectedBut maybe errors nonetheless? Goal: detect “errors” (e.g., flipped bits) in transmitted segment – optional use!10High-Level TCP Characteristics•Protocol implemented entirely at the ends•Fate sharing (on IP)•Protocol has evolved over time and will continue to do so•Nearly impossible to change the header•Use options to add information to the header•Change processing at endpoints•Backward compatibility is what makes it TCP11TCP HeaderSource port Destination portSequence numberAcknowledgementAdvertised windowHdrLenFlags0Checksum Urgent pointerOptions (variable)DataFlags:SYNFINRESETPUSHURGACK12Evolution of TCP1975 1980198519901982TCP & IPRFC 793 & 7911974TCP described byVint Cerf and Bob KahnIn IEEE Trans Comm1983BSD Unix 4.2supports TCP/IP1984Nagel’s algorithmto reduce overheadof small packets;predicts congestion collapse1987Karn’s algorithmto better estimate round-trip time1986Congestion collapseobserved1988Van Jacobson’s algorithmscongestion avoidance and congestion control(most implemented in 4.3BSD Tahoe)19904.3BSD Renofast retransmitdelayed ACK’s1975Three-way handshakeRaymond TomlinsonIn SIGCOMM 7513TCP Through the 1990s1993199419961994ECN(Floyd)Explicit CongestionNotification1993TCP Vegas (Brakmo et al)delay-based congestion avoidance1994T/TCP(Braden)TransactionTCP1996SACK TCP(Floyd et al)Selective Acknowledgement1996HoeNewReno startup and loss recovery1996FACK TCP(Mathis et al)extension to SACKOutline•Transport introduction•Error recovery & flow control•TCP flow control/connection setup/data transfer•TCP reliability•Congestion sources and collapse•Congestion control basics14Stop and Wait•ARQ•Receiver sends acknowledgement (ACK) when it receives packet•Sender waits for ACK and timeouts if it does not arrive within some time period•Simplest ARQ protocol•Send a packet, stop and wait until ACK arrives•Performance•Can only send one packet per round trip15TimePacketACKTimeoutSender Receiver16Recovering from ErrorPacketACKTimeoutPacketACKTimeoutPacketTimeoutPacketACKTimeoutTimePacketACKTimeoutPacketACKTimeoutACK lost Packet lostEarly timeoutDUPLICATEPACKETS!!!17How to Recognize Resends?•Use sequence numbers•both packets and acks•Sequence # in packet is finite How big should it be? •For stop and wait?•One bit – won’t send seq #1 until received ACK for seq #0Pkt 0ACK 0Pkt 0ACK 1Pkt 1ACK 018How to Keep the Pipe Full?•Send multiple packets without waiting for first to be acked•Number of pkts in flight = window: Flow control•Reliable, unordered delivery•Several parallel stop & waits•Send new packet after each ack•Sender keeps list of unack’ed packets;
View Full Document