CS 118 Spring 2014Chapter 3 outlineTCP: Overview RFCs: 793, 1122, 1323, 2018, 2581TCP segment structureTCP seq. #’s and ACKsTCP Round Trip Time and TimeoutSlide 7Example RTT estimation:Slide 9Chapter 3: Transport LayerSlide 11Slide 12TCP reliable data transferGo-Back-NGBN in actionTCP sender events:TCP: retransmission scenariosTCP retransmission scenarios (more)TCP ACK generation [RFC 1122, RFC 2581]Fast RetransmitSlide 23TCP Flow ControlTCP Flow control: how it worksSlide 26TCP Connection ManagementTCP Connection Management (cont.)Slide 29TCP Connection Management (cont)Transport Layer 3-1CS 118 Spring 2014Chpt 3 - Section 3CTransport Layer 3-2Chapter 3 outline3.1 Transport-layer services3.2 Multiplexing and demultiplexing3.3 Connectionless transport: UDP3.4 Principles of reliable data transfer3.5 Connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 Principles of congestion control3.7 TCP congestion controlTransport Layer 3-3TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581full duplex data:bi-directional data flow in same connectionMSS: maximum segment sizeconnection-oriented: handshaking (exchange of control msgs) init’s sender, receiver state before data exchangeflow controlled:sender will not overwhelm receiverpoint-to-point:one sender, one receiver reliable, in-order byte stream:no “message boundaries”pipelined:TCP congestion and flow control set window sizesend & receive bufferss o c k e td o o rT C Ps e n d b u f f e rT C Pr e c e i v e b u f f e rs o c k e td o o rs e g m e n ta p p l i c a t i o nw r i t e s d a t aa p p l i c a t i o nr e a d s d a t aTransport Layer 3-4TCP segment structuresource port #dest port #32 bitsapplicationdata (variable length)sequence numberacknowledgement numberReceive windowUrg data pnterchecksumFSRPAUheadlennotusedOptions (variable length)URG: urgent data (generally not used)ACK: ACK #validPSH: push data now(generally not used)RST, SYN, FIN:connection estab(setup, teardowncommands)# bytes rcvr willingto acceptcountingby bytes of data(not segments!)Internetchecksum(as in UDP)Transport Layer 3-5TCP seq. #’s and ACKsSeq. #’s:byte stream “number” of first byte in segment’s dataACKs:seq # of next byte expected from other sidecumulative ACKQ: how receiver handles out-of-order segmentsA: TCP spec doesn’t say, - up to implementorHost AHost BSeq=42, ACK=79, data = ‘C’Seq=79, ACK=43, data = ‘C’Seq=43, ACK=80Usertypes‘C’host ACKsreceipt of echoed‘C’host ACKsreceipt of‘C’, echoesback ‘C’timesimple telnet scenarioTransport Layer 3-6TCP Round Trip Time and TimeoutQ: how to set TCP timeout value?longer than RTTbut RTT variestoo short: premature timeoutunnecessary retransmissionstoo long: slow reaction to segment lossQ: how to estimate RTT?SampleRTT: measured time from segment transmission until ACK receiptignore retransmissionsSampleRTT will vary, want estimated RTT “smoother”average several recent measurements, not just current SampleRTTTransport Layer 3-7TCP Round Trip Time and TimeoutEstimatedRTT = (1- )*EstimatedRTT + *SampleRTTExponential weighted moving averageinfluence of past sample decreases exponentially fasttypical value: = 0.125Transport Layer 3-8Example RTT estimation:Transport Layer 3-9TCP Round Trip Time and TimeoutSetting the timeoutEstimtedRTT plus “safety margin”large variation in EstimatedRTT -> larger safety marginfirst estimate of how much SampleRTT deviates from EstimatedRTT: TimeoutInterval = EstimatedRTT + 4*DevRTTDevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT|(typically, = 0.25) Then set timeout interval:Transport Layer 3-10Chapter 3: Transport LayerOur goals: understand principles behind transport layer services:multiplexing/demultiplexingreliable data transferflow controlcongestion controllearn about transport layer protocols in the Internet:UDP: connectionless transportTCP: connection-oriented transportTCP congestion controlTransport Layer 3-11Chapter 3 outline3.1 Transport-layer services3.2 Multiplexing and demultiplexing3.3 Connectionless transport: UDP3.4 Principles of reliable data transfer3.5 Connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 Principles of congestion control3.7 TCP congestion controlTransport Layer 3-12Chapter 3 outline3.1 Transport-layer services3.2 Multiplexing and demultiplexing3.3 Connectionless transport: UDP3.4 Principles of reliable data transfer3.5 Connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 Principles of congestion control3.7 TCP congestion controlTransport Layer 3-13TCP reliable data transferTCP creates rdt service on top of IP’s unreliable servicePipelined segmentsCumulative acksTCP uses single retransmission timerRetransmissions are triggered by:timeout eventsduplicate acksInitially consider simplified TCP sender: ignore duplicate acksignore flow control, congestion controlTransport Layer 3-14Go-Back-NSender:k-bit seq # in pkt header“window” of up to N, consecutive unack’ed pkts allowedACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK”may receive duplicate ACKs (see receiver)timer for each in-flight pkttimeout(n): retransmit pkt n and all higher seq # pkts in windowTransport Layer 3-15GBN inactionTransport Layer 3-16TCP sender events:data rcvd from app:Create segment with seq #seq # is byte-stream number of first data byte in segmentstart timer if not already running (think of timer as for oldest unacked segment)expiration interval: TimeOutInterval timeout:retransmit segment that caused timeoutrestart timer Ack rcvd:If acknowledges previously unacked segmentsupdate what is known to be ackedstart timer if there are outstanding segmentsTransport Layer 3-18TCP: retransmission scenariosHost ASeq=100, 20 bytes dataACK=100timepremature timeoutHost BSeq=92, 8 bytes dataACK=120Seq=92, 8 bytes dataSeq=92 timeoutACK=120Host ASeq=92, 8 bytes dataACK=100losstimeoutlost ACK scenarioHost BXSeq=92, 8 bytes dataACK=100timeSeq=92 timeoutSendBase= 100SendBase= 120SendBase= 120Sendbase= 100Transport Layer 3-19TCP retransmission
View Full Document