Lecture 8 CS 3516 These slides are generated

  • Slides: 46
Download presentation
Lecture 8 CS 3516: These slides are generated from those made available by the

Lecture 8 CS 3516: These slides are generated from those made available by the authors of our text. Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 Introduction 1 -1

Lecture 8 outline 3. 4 principles of reliable data transfer 3. 2 multiplexing and

Lecture 8 outline 3. 4 principles of reliable data transfer 3. 2 multiplexing and demultiplexing 3. 3 connectionless transport: UDP 3. 5 connectionoriented transport: TCP § segment structure § reliable data transfer Transport Layer 3 -2

Pipelined protocols pipelining: sender allows multiple, “in-flight”, yet-to-be-acknowledged pkts § range of sequence numbers

Pipelined protocols pipelining: sender allows multiple, “in-flight”, yet-to-be-acknowledged pkts § range of sequence numbers must be increased § buffering at sender and/or receiver v two generic forms of pipelined protocols: go-Back -N, selective repeat Transport Layer 3 -3

Pipelining: increased utilization sender receiver first packet bit transmitted, t = 0 last bit

Pipelining: increased utilization sender receiver first packet bit transmitted, t = 0 last bit transmitted, t = L / R RTT first packet bit arrives last packet bit arrives, send ACK last bit of 2 nd packet arrives, send ACK last bit of 3 rd packet arrives, send ACK arrives, send next packet, t = RTT + L / R 3 -packet pipelining increases utilization by a factor of 3! Transport Layer 3 -4

Pipelined protocols: overview Go-back-N: v sender can have up to N unacked packets in

Pipelined protocols: overview Go-back-N: v sender can have up to N unacked packets in pipeline v receiver only sends cumulative ack Selective Repeat: v sender can have up to N unack’ed packets in pipeline v rcvr sends individual ack for each packet § doesn’t ack packet if there’s a gap v sender has timer for oldest unacked packet § when timer expires, retransmit all unacked packets v sender maintains timer for each unacked packet § when timer expires, retransmit only that unacked packet Transport Layer 3 -5

Go-Back-N: sender v v v k-bit seq # in pkt header “window” of up

Go-Back-N: sender v v v k-bit seq # in pkt header “window” of up to N, consecutive unack’ed pkts allowed ACK(n): ACKs all pkts up to, including seq # n “cumulative ACK” § may receive duplicate ACKs (see receiver) timer for oldest in-flight pkt timeout(n): retransmit packet n and all higher seq # pkts in window Transport Layer 3 -6

GBN: sender extended FSM rdt_send(data) L base=1 nextseqnum=1 if (nextseqnum < base+N) { sndpkt[nextseqnum]

GBN: sender extended FSM rdt_send(data) L base=1 nextseqnum=1 if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum, data, chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else refuse_data(data) Wait rdt_rcv(rcvpkt) && corrupt(rcvpkt) timeout start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) … udt_send(sndpkt[nextseqnum-1]) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer Transport Layer 3 -7

GBN: receiver extended FSM default udt_send(sndpkt) L Wait expectedseqnum=1 sndpkt = make_pkt(expectedseqnum, ACK, chksum)

GBN: receiver extended FSM default udt_send(sndpkt) L Wait expectedseqnum=1 sndpkt = make_pkt(expectedseqnum, ACK, chksum) rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt, expectedseqnum) extract(rcvpkt, data) deliver_data(data) sndpkt = make_pkt(expectedseqnum, ACK, chksum) udt_send(sndpkt) expectedseqnum++ ACK-only: always send ACK for correctly-received pkt with highest in-order seq # § may generate duplicate ACKs § need only remember expectedseqnum v out-of-order pkt: § discard (don’t buffer): no receiver buffering! § re-ACK pkt with highest in-order seq # Transport Layer 3 -8

GBN in action sender window (N=4) 012345678 012345678 sender send pkt 0 send pkt

GBN in action sender window (N=4) 012345678 012345678 sender send pkt 0 send pkt 1 send pkt 2 send pkt 3 (wait) rcv ack 0, send pkt 4 rcv ack 1, send pkt 5 ignore duplicate ACK pkt 2 timeout 012345678 send pkt 2 pkt 3 pkt 4 pkt 5 receiver Xloss receive pkt 0, send ack 0 receive pkt 1, send ack 1 receive pkt 3, discard, (re)send ack 1 receive pkt 4, discard, (re)send ack 1 receive pkt 5, discard, (re)send ack 1 rcv rcv pkt 2, pkt 3, pkt 4, pkt 5, deliver, send ack 2 ack 3 ack 4 ack 5 Transport Layer 3 -9

Selective repeat v receiver individually acknowledges all correctly received pkts § buffers pkts, as

Selective repeat v receiver individually acknowledges all correctly received pkts § buffers pkts, as needed, for eventual in-order delivery to upper layer v sender only resends pkts for which ACK not received § sender timer for each un. ACKed pkt v sender window § N consecutive seq #’s § limits seq #s of sent, un. ACKed pkts Transport Layer 3 -10

Selective repeat: sender, receiver windows Transport Layer 3 -11

Selective repeat: sender, receiver windows Transport Layer 3 -11

I’m going to keep telling you this TCP joke until you get it. Transport

I’m going to keep telling you this TCP joke until you get it. Transport Layer 3 -12

Selective repeat sender data from above: v if next available seq # in window,

Selective repeat sender data from above: v if next available seq # in window, send pkt timeout(n): receiver pkt n in [rcvbase, rcvbase+N-1] v v v resend pkt n, restart timer ACK(n) in v [sendbase, sendbase+N]: v v mark pkt n as received if n smallest un. ACKed pkt, advance window base to next un. ACKed seq # send ACK(n) out-of-order: buffer in-order: deliver (also deliver buffered, inorder pkts), advance window to next not-yetreceived pkt n in [rcvbase-N, rcvbase-1] v ACK(n) otherwise: v ignore Transport Layer 3 -13

Selective repeat in action sender window (N=4) 012345678 012345678 sender send pkt 0 send

Selective repeat in action sender window (N=4) 012345678 012345678 sender send pkt 0 send pkt 1 send pkt 2 send pkt 3 (wait) receiver Xloss rcv ack 0, send pkt 4 rcv ack 1, send pkt 5 record ack 3 arrived pkt 2 timeout 012345678 receive pkt 0, send ack 0 receive pkt 1, send ack 1 receive pkt 3, buffer, send ack 3 receive pkt 4, buffer, send ack 4 receive pkt 5, buffer, send ack 5 send pkt 2 record ack 4 arrived rcv pkt 2; deliver pkt 2, pkt 3, pkt 4, pkt 5; send ack 2 Q: what happens when ack 2 arrives? Transport Layer 3 -14

Selective repeat: dilemma example: v v seq #’s: 0, 1, 2, 3 window size=3

Selective repeat: dilemma example: v v seq #’s: 0, 1, 2, 3 window size=3 receiver sees no difference in two scenarios! duplicate data accepted as new in (b) Q: what relationship between seq # size and window size to avoid problem in (b)? receiver window (after receipt) sender window (after receipt) 0123012 pkt 0 0123012 pkt 1 0123012 pkt 2 0123012 pkt 3 0123012 pkt 0 (a) no problem 0123012 X will accept packet with seq number 0 receiver can’t see sender side. receiver behavior identical in both cases! something’s (very) wrong! 0123012 pkt 0 0123012 pkt 1 0123012 pkt 2 0123012 X X timeout retransmit pkt 0 X 0123012 (b) oops! pkt 0 will accept packet with seq number 0 Transport Layer 3 -15

Selective Repeat requires a Timer for each packet. § How are you going to

Selective Repeat requires a Timer for each packet. § How are you going to do that? § You only have one timer. A similar problem occurs if three roommates want to get up at different times in the morning, and they only have one alarm clock. Transport Layer 3 -16

TCP round trip time, timeout Q: how to set TCP timeout value? v longer

TCP round trip time, timeout Q: how to set TCP timeout value? v longer than RTT Q: how to estimate RTT? v § but RTT varies v v too short: premature timeout, unnecessary retransmissions too long: slow reaction to segment loss This is from Section 3. 5 v Sample. RTT: measured time from segment transmission until ACK receipt § ignore retransmissions Sample. RTT will vary, want estimated RTT “smoother” § average several recent measurements, not just current Sample. RTT Transport Layer 3 -17

TCP round trip time, timeout Estimated. RTT = (1 - )*Estimated. RTT + *Sample.

TCP round trip time, timeout Estimated. RTT = (1 - )*Estimated. RTT + *Sample. RTT v v exponential weighted moving average influence of past sample decreases exponentially fast typical value: = 0. 125 RTT: gaia. cs. umass. edu to fantasia. eurecom. fr RTT (milliseconds) v sample. RTT Estimated. RTT time (seconds) Transport Layer 3 -18

TCP round trip time, timeout v timeout interval: Estimated. RTT plus “safety margin” §

TCP round trip time, timeout v timeout interval: Estimated. RTT plus “safety margin” § large variation in Estimated. RTT -> larger safety margin v estimate deviation from Estimated. RTT: Dev. RTT Sample. RTT = (1 - )*Dev. RTT + *|Sample. RTT-Estimated. RTT| (typically, = 0. 25) Timeout. Interval = Estimated. RTT + 4*Dev. RTT estimated RTT “safety margin” Transport Layer 3 -19

Lecture 8 outline 3. 4 principles of reliable data transfer 3. 2 multiplexing and

Lecture 8 outline 3. 4 principles of reliable data transfer 3. 2 multiplexing and demultiplexing 3. 3 connectionless transport: UDP 3. 5 connection-oriented transport: TCP § § segment structure reliable data transfer flow control connection management Transport Layer 3 -20

Multiplexing/demultiplexing at sender: handle data from multiple sockets, add transport header (later used for

Multiplexing/demultiplexing at sender: handle data from multiple sockets, add transport header (later used for demultiplexing) demultiplexing at receiver: use header info to deliver received segments to correct socket application P 3 P 1 P 2 application P 4 transport network link network physical link physical socket process physical Transport Layer 3 -21

How demultiplexing works v host receives IP datagrams § each datagram has source IP

How demultiplexing works v host receives IP datagrams § each datagram has source IP address, destination IP address § each datagram carries one transport-layer segment § each segment has source, destination port number v host uses IP addresses & port numbers to direct segment to appropriate socket 32 bits source port # dest port # other header fields application data (payload) TCP/UDP segment format Transport Layer 3 -22

Connectionless demultiplexing v recall: created socket has host-local port #: v Datagram. Socket my.

Connectionless demultiplexing v recall: created socket has host-local port #: v Datagram. Socket my. Socket 1 = new Datagram. Socket(12534); recall: when creating datagram to send into UDP socket, must specify § destination IP address § destination port # v when host receives UDP segment: § checks destination port # in segment § directs UDP segment to socket with that port # IP datagrams with same dest. port #, but different source IP addresses and/or source port numbers will be directed to same socket at dest Transport Layer 3 -23

Connectionless demux: example Datagram. Socket my. Socket 2 = new Datagram. Socket (9157); Datagram.

Connectionless demux: example Datagram. Socket my. Socket 2 = new Datagram. Socket (9157); Datagram. Socket server. Socket = new Datagram. Socket (6428); application P 3 transport Datagram. Socket my. Socket 1 = new Datagram. Socket (5775); application P 1 P 4 transport network link physical source port: 6428 dest port: 9157 source port: 9157 dest port: 6428 source port: ? dest port: ? Transport Layer 3 -24

Connection-oriented demux v TCP socket identified by 4 -tuple: § § v v source

Connection-oriented demux v TCP socket identified by 4 -tuple: § § v v source IP address source port number dest IP address dest port number demux: receiver uses all four values to direct segment to appropriate socket server host may support many simultaneous TCP sockets: § each socket identified by its own 4 -tuple v web servers have different sockets for each connecting client § non-persistent HTTP will have different socket for each request Transport Layer 3 -25

Connection-oriented demux: example application P 4 application P 3 P 5 P 6 application

Connection-oriented demux: example application P 4 application P 3 P 5 P 6 application P 2 transport network link physical host: IP address A P 3 server: IP address B source IP, port: B, 80 dest IP, port: A, 9157 source IP, port: A, 9157 dest IP, port: B, 80 three segments, all destined to IP address: B, dest port: 80 are demultiplexed to different sockets physical source IP, port: C, 5775 dest IP, port: B, 80 host: IP address C source IP, port: C, 9157 dest IP, port: B, 80 Transport Layer 3 -26

Connection-oriented demux: example threaded server application P 4 P 3 P 2 transport network

Connection-oriented demux: example threaded server application P 4 P 3 P 2 transport network link physical host: IP address A server: IP address B source IP, port: B, 80 dest IP, port: A, 9157 source IP, port: A, 9157 dest IP, port: B, 80 P 3 physical source IP, port: C, 5775 dest IP, port: B, 80 host: IP address C source IP, port: C, 9157 dest IP, port: B, 80 Transport Layer 3 -27

Lecture 8 outline 3. 4 principles of reliable data transfer 3. 2 multiplexing and

Lecture 8 outline 3. 4 principles of reliable data transfer 3. 2 multiplexing and demultiplexing 3. 3 connectionless transport: UDP 3. 5 connectionoriented transport: TCP § segment structure § reliable data transfer The problem with UDP jokes: I don’t get half of them. I dressed up as a UDP packet. I don’t think anyone got it, but I couldn’t tell. A UDP packet walks into a bar without a checksum. Nobody cares. Transport Layer 3 -28

UDP: User Datagram Protocol [RFC 768] v v v “no frills, ” “bare bones”

UDP: User Datagram Protocol [RFC 768] v v v “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 others v UDP use: § streaming multimedia apps (loss tolerant, rate sensitive) § DNS § SNMP v reliable transfer over UDP: § add reliability at application layer § application-specific error recovery! Transport Layer 3 -29

UDP: segment header 32 bits source port # dest port # length checksum application

UDP: segment header 32 bits source port # dest port # length checksum application data (payload) length, in bytes of UDP segment, including header why is there a UDP? v v v UDP segment format v no connection establishment (which can add delay) simple: no connection state at sender, receiver small header size no congestion control: UDP can blast away as fast as desired Transport Layer 3 -30

UDP checksum Goal: detect “errors” (e. g. , flipped bits) in transmitted segment sender:

UDP checksum Goal: detect “errors” (e. g. , flipped bits) in transmitted segment sender: v v v treat segment contents, including header fields, as sequence of 16 -bit integers checksum: addition (one’s complement sum) of segment contents sender puts checksum value into UDP checksum field receiver: v v compute checksum of received segment check if computed checksum equals checksum field value: § NO - error detected § YES - no error detected. But maybe errors nonetheless? More later …. Transport Layer 3 -31

Internet checksum: example: add two 16 -bit integers 1 1 0 0 1 1

Internet checksum: example: add two 16 -bit integers 1 1 0 0 1 1 1 0 1 0 1 wraparound 1 1 0 1 1 sum 1 1 0 1 1 0 0 checksum 1 0 0 0 0 1 1 Note: when adding numbers, a carryout from the most significant bit needs to be added to the result Transport Layer 3 -32

Lecture 8 outline 3. 4 principles of reliable data transfer 3. 2 multiplexing and

Lecture 8 outline 3. 4 principles of reliable data transfer 3. 2 multiplexing and demultiplexing 3. 3 connectionless transport: UDP 3. 5 connection-oriented transport: TCP § § segment structure reliable data transfer flow control connection management Transport Layer 3 -33

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 v point-to-point: v § one sender,

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 v point-to-point: v § one sender, one receiver v v § bi-directional data flow in same connection § MSS: maximum segment size reliable, in-order byte steam: § no “message boundaries” full duplex data: v connection-oriented: § handshaking (exchange of control msgs) inits sender, receiver state before data exchange pipelined: § TCP congestion and flow control set window size v flow controlled: § sender will not Transport Layer 3 -34 overwhelm receiver

TCP segment structure 32 bits URG: urgent data (generally not used) ACK: ACK #

TCP segment structure 32 bits URG: urgent data (generally not used) ACK: ACK # valid PSH: push data now (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) Internet checksum (as in UDP) source port # dest port # sequence number acknowledgement number head not UAP R S F len used checksum receive window Urg data pointer options (variable length) counting by bytes of data (not segments!) # bytes rcvr willing to accept application data (variable length) Transport Layer 3 -35

TCP seq. numbers, ACKs outgoing segment from sender sequence numbers: § byte stream “number”

TCP seq. numbers, ACKs outgoing segment from sender sequence numbers: § byte stream “number” of first byte in segment’s data acknowledgements: § seq # of next byte expected from other side § cumulative ACK Q: how receiver handles out-of-order segments § A: TCP spec doesn’t say, - up to implementor source port # dest port # sequence number acknowledgement number rwnd checksum urg pointer window size N sender sequence number space sent ACKed sent, not- usable not yet ACKed but not usable (“in-flight”) yet sent incoming segment to sender source port # dest port # sequence number acknowledgement number rwnd A checksum urg pointer Transport Layer 3 -36

TCP seq. numbers, ACKs Host B Host A User types ‘C’ host ACKs receipt

TCP seq. numbers, ACKs Host B Host A User types ‘C’ host ACKs receipt of echoed ‘C’ Seq=42, ACK=79, data = ‘C’ Seq=79, ACK=43, data = ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ Seq=43, ACK=80 simple telnet scenario Transport Layer 3 -37

TCP reliable data transfer v TCP creates rdt service on top of IP’s unreliable

TCP reliable data transfer v TCP creates rdt service on top of IP’s unreliable service § pipelined segments § cumulative acks § single retransmission timer v retransmissions triggered by: § timeout events § duplicate acks let’s initially consider simplified TCP sender: § ignore duplicate acks § ignore flow control, congestion control Transport Layer 3 -38

TCP sender events: data rcvd from app: timeout: v create segment with v retransmit

TCP sender events: data rcvd from app: timeout: v create segment with v retransmit segment seq # that caused timeout v seq # is byte-stream v restart timer number of first data ack rcvd: byte in segment v if acknowledges v start timer if not previously unacked already running segments § think of timer as for oldest unacked segment § expiration interval: Time. Out. Interval § update what is known to be ACKed § start timer if there are still unacked segments Transport Layer 3 -39

TCP sender (simplified) data received from application above L Next. Seq. Num = Initial.

TCP sender (simplified) data received from application above L Next. Seq. Num = Initial. Seq. Num Send. Base = Initial. Seq. Num wait for event create segment, seq. #: Next. Seq. Num pass segment to IP (i. e. , “send”) Next. Seq. Num = Next. Seq. Num + length(data) if (timer currently not running) start timer timeout retransmit not-yet-acked segment with smallest seq. # start timer ACK received, with ACK field value y if (y > Send. Base) { Send. Base = y /* Send. Base– 1: last cumulatively ACKed byte */ if (there are currently not-yet-acked segments) start timer else stop timer } Transport Layer 3 -40

TCP: retransmission scenarios Host B Host A Send. Base=92 X ACK=100 Seq=92, 8 bytes

TCP: retransmission scenarios Host B Host A Send. Base=92 X ACK=100 Seq=92, 8 bytes of data timeout Seq=92, 8 bytes of data Seq=100, 20 bytes of data ACK=100 ACK=120 Seq=92, 8 bytes of data Send. Base=100 ACK=100 Seq=92, 8 bytes of data Send. Base=120 ACK=120 Send. Base=120 lost ACK scenario premature timeout Transport Layer 3 -41

TCP: retransmission scenarios Host B Host A Seq=92, 8 bytes of data timeout Seq=100,

TCP: retransmission scenarios Host B Host A Seq=92, 8 bytes of data timeout Seq=100, 20 bytes of data X ACK=100 ACK=120 Seq=120, 15 bytes of data cumulative ACK Transport Layer 3 -42

TCP ACK generation [RFC 1122, RFC 2581] event at receiver TCP receiver action arrival

TCP ACK generation [RFC 1122, RFC 2581] event at receiver TCP receiver action arrival of in-order segment with expected seq #. All data up to expected seq # already ACKed delayed ACK. Wait up to 500 ms for next segment. If no next segment, send ACK arrival of in-order segment with expected seq #. One other segment has ACK pending immediately send single cumulative ACK, ACKing both in-order segments arrival of out-of-order segment higher-than-expect seq. #. Gap detected immediately send duplicate ACK, indicating seq. # of next expected byte arrival of segment that partially or completely fills gap immediate send ACK, provided that segment starts at lower end of gap Transport Layer 3 -43

TCP fast retransmit v v time-out period often relatively long: TCP fast retransmit §

TCP fast retransmit v v time-out period often relatively long: TCP fast retransmit § long delay before resending lost packet if sender receives 3 ACKs for same data detect lost segments via duplicate ACKs. (“triple duplicate ACKs”), resend unacked § sender often sends many segments back -to-back § if segment is lost, there will likely be many duplicate ACKs. segment with smallest seq # § likely that unacked segment lost, so don’t wait for timeout Transport Layer 3 -44

TCP fast retransmit Host B Host A Seq=92, 8 bytes of data Seq=100, 20

TCP fast retransmit Host B Host A Seq=92, 8 bytes of data Seq=100, 20 bytes of data X timeout ACK=100 Seq=100, 20 bytes of data fast retransmit after sender receipt of triple duplicate ACK Transport Layer 3 -45

The End is Near!

The End is Near!