Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCI 3335: C OMPUTER N ETWORKS C HAPTER 3 T RANSPORT L AYER Vamsi Paruchuri University of Central Arkansas Some.

Similar presentations


Presentation on theme: "CSCI 3335: C OMPUTER N ETWORKS C HAPTER 3 T RANSPORT L AYER Vamsi Paruchuri University of Central Arkansas Some."— Presentation transcript:

1 CSCI 3335: C OMPUTER N ETWORKS C HAPTER 3 T RANSPORT L AYER Vamsi Paruchuri University of Central Arkansas http://faculty.uca.edu/vparuchuri/3335.htm Some of the material is adapted from J.F Kurose and K.W. Ross

2 Transport Layer 3-2 Chapter 3 outline 3.1 Transport-layer services 3.2 Multiplexing and demultiplexing 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP  segment structure  reliable data transfer  flow control  connection management 3.6 Principles of congestion control 3.7 TCP congestion control

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

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

5 Transport Layer 3-5 TCP segment structure - Quiz source port # dest port # 32 bits application data (variable length) sequence number acknowledgement number Receive window Urg data pnter checksum F SR PAU head len not used Options (variable length)  What is the significance of each field  What is TCP Header size  What is max Receiver Window Size? Is it large enough?  Which field should be larger “Seq#” or “Receive window”? Why?  What is the maximum # options?  Which flags are set in first message in connection set up? Second message? Third message?  Why are initial Seq # set randomly? Flags: SYN, FIN, RESET, PUSH, URG, ACK

6 TCP Header: Flags (6 bits)  Connection establishment/termination  SYN – establish; sequence number field contains valid initial sequence number  FIN - terminate  RESET - abort connection because one side received something unexpected  PUSH - sender invoked push to send  URG – indicated urgent pointer field is valid; special data - record boundary  ACK - indicates Acknowledgement field is valid 3: Transport Layer 3b-6

7 TCP Header: ACK flag  ACK flag – if on then acknowledgement field valid  Once connection established no reason to turn off  Acknowledgment field is always in header so acknowledgements are free to send along with data 3: Transport Layer 3b-7

8 TCP Header: PUSH  Intention: use to indicate not to leave the data in a TCP buffer waiting for more data before it is sent  Receiver is supposed to interpret as deliver to application immediately; most TCP/IP implementations don’t delay delivery in the first place though 3: Transport Layer 3b-8

9 TCP Header: Header Length  Header Length (4 bits)  needed because options field make header variable length  Expressed in number of 32 bit words = 4 bytes  4 bits field => 4 bytes*2 4 = 60 bytes; 20 bytes of required header gives 40 bytes possible of options  Recall UDP header was 8 bytes 3: Transport Layer 3b-9 source port # dest port # 32 bits application data (variable length) sequence number acknowledgement number Receive window Urg data pnter checksum F SR PAU head len not used Options (variable length)

10 Implications of Field Length  32 bits for sequence number (and acknowledgement); 16 bits for advertised window size  Implication for maximum window size? Window size <= ½ SequenceNumberSpace  Requirement easily satisfied because receiver advertised window field is 16 bits 2 32 >> 2* 2 16 Even if increase possible advertised window to 2 31 that would still be ok 3: Transport Layer 3b-10

11 Implications of Field Length (cont)  Advertised Window is 16 bit field => maximum window is 64 KB  Is this enough to fill the pipeline? Not always  Pipeline = delay*BW product  100 ms roundtrip and 100 Mbps => 1.19 MB 3: Transport Layer 3b-11

12 TCP Header: Common Options  Options used to extend and test TCP  Each option is:  1 byte of option kind  1 byte of option length  Examples  window scale factor: if don’t want to be limited to 2 16 bytes in receiver advertised window  timestamp option: if 32 bit sequence number space will wrap in MSL; add 32 bit timestamp to distinguish between two segments with the same sequence number  Maximum Segment Size can be set in SYN packets 3: Transport Layer 3b-12

13 TCP Connection Management Recall: TCP sender, receiver establish “connection” before exchanging data segments  initialize TCP variables:  seq. #s  buffers, flow control info (e.g. RcvWindow )  client: connection initiator Socket clientSocket = new Socket("hostname","port number");  server: contacted by client Socket connectionSocket = welcomeSocket.accept(); Three way handshake: Step 1: client end system sends TCP SYN control segment to server  specifies initial seq # Step 2: server end system receives SYN, replies with SYNACK control segment  ACKs received SYN  allocates buffers  specifies server-> receiver initial seq. # Step 3: client acknowledges servers initial seq. # 3: Transport Layer 3b-13

14 Three-Way Handshake 3: Transport Layer3b-14 Active participant (client) Passive participant (server) SYN, SequenceNum = x SYN + ACK, SequenceNum = y, ACK, Acknowledgment = y + 1 Acknowledgment = x + 1 SequenceNum = x+1

15 Connection Establishment  Both data channels opened at once  Three-way handshake used to agree on a set of parameters for this communication channel  Initial sequence number for both sides (random)  Receiver advertised window size for both sides  Optionally, Maximum Segment Size (MSS) for each side; if not specified MSS of 536 bytes is assumed to fit into 576 byte datagram 3: Transport Layer 3b-15

16 Initial Sequence Numbers  Chosen at random in the sequence number space?  Well not really randomly; intention of RFC is for initial sequence numbers to change over time  32 bit counter incrementing every 4 microseconds  Vary initial sequence number to avoid packets that are delayed in network from being delivered later and interpreted as a part of a newly established connection (to avoid reincarnations) 3: Transport Layer 3b-16

17 Transport Layer 3-17 TCP seq. #’s and ACKs Seq. #’s:  byte stream “number” of first byte in segment’s data ACKs:  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 Host A Host B Seq=42, ACK=79, data = ‘C’ Seq=79, ACK=43, data = ‘C’ Seq=43, ACK=80 User types ‘C’ host ACKs receipt of echoed ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ time simple telnet scenario

18 Connection Termination  Each side of the bi-directional connection may be closed independently  4 messages: FIN message and ACK of that FIN in each direction  Each side closes the data channel it can send on  One side can be closed and data can continue to flow in the other direction, but not usually  FINs consume sequence numbers like SYNs 3: Transport Layer 3b-18

19 TCP Connection Management (cont.) Closing a connection: client closes socket: clientSocket.close(); Step 1: client end system sends TCP FIN control segment to server Step 2: server receives FIN, replies with ACK. Closes connection, sends FIN. 3: Transport Layer 3b-19 client FIN server ACK FIN close closed timed wait

20 Transport Layer 3-20 Chapter 3 outline 3.1 Transport-layer services 3.2 Multiplexing and demultiplexing 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP  segment structure  reliable data transfer  flow control  connection management 3.6 Principles of congestion control 3.7 TCP congestion control

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

22 Transport Layer 3-22 TCP sender events: data rcvd from app:  Create segment with seq #  seq # is byte-stream number of first data byte in segment  start timer if not already running (think of timer as for oldest unacked segment)  expiration interval: TimeOutInterval timeout:  retransmit segment that caused timeout  restart timer Ack rcvd:  If acknowledges previously unacked segments  update what is known to be acked  start timer if there are outstanding segments

23 TCP: retransmission scenarios Host A Seq=100, 20 bytes data ACK=100 time premature timeout Host B Seq=92, 8 bytes data ACK=120 Seq=92, 8 bytes data Seq=92 timeout ACK=120 Host A Seq=92, 8 bytes data ACK=100 loss timeout lost ACK scenario Host B X Seq=92, 8 bytes data ACK=100 time Seq=92 timeout SendBase = 100 SendBase = 120 SendBase = 120 SendBase = 100

24 Transport Layer 3-24 TCP retransmission scenarios (more) Host A Seq=92, 8 bytes data ACK=100 loss timeout Cumulative ACK scenario Host B X Seq=100, 20 bytes data ACK=120 time SendBase = 120

25 Transport Layer 3-25 TCP Round Trip Time and Timeout Q: how to set TCP timeout value?  longer than RTT  but RTT varies  too short: premature timeout  unnecessary retransmissions  too long: slow reaction to segment loss Q: how to estimate RTT?  SampleRTT : measured time from segment transmission until ACK receipt  ignore retransmissions  SampleRTT will vary, want estimated RTT “smoother”  average several recent measurements, not just current SampleRTT

26 Transport Layer 3-26 TCP Round Trip Time and Timeout EstimatedRTT = (1-  )*EstimatedRTT +  *SampleRTT  Exponential weighted moving average  influence of past sample decreases exponentially fast  typical value:  = 0.125

27 Transport Layer 3-27 Example RTT estimation:

28 Transport Layer 3-28 Fast Retransmit  time-out period often relatively long:  long delay before resending lost packet  detect lost segments via duplicate ACKs.  sender often sends many segments back-to- back  if segment is lost, there will likely be many duplicate ACKs.  if sender receives 3 ACKs for the same data, it supposes that segment after ACKed data was lost:  fast retransmit: resend segment before timer expires

29 Transport Layer 3-29 Host A timeout Host B time X resend 2 nd segment: Seq=100, 20 bytes data Figure 3.37 Resending a segment after triple duplicate ACK Seq=92, 8 bytes data ACK=100 Seq=100, 20 bytes data ACK=100 Seq=120, 20 bytes data Seq=140, 20 bytes data Seq=160, 20 bytes data ACK=180

30 Transport Layer 3-30 TCP Quiz -2  What are “Cumulative Acks”?  What is advantage of having short time outs?  What is advantage of having long time outs?  Describe the method(s) TCP uses to detect packet losses.  What is Fast Retransmit?

31 Transport Layer 3-31 Chapter 3 outline 3.1 Transport-layer services 3.2 Multiplexing and demultiplexing 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer  3.5 Connection-oriented transport: TCP  segment structure  reliable data transfer  flow control  connection management 3.6 Principles of congestion control 3.7 TCP congestion control

32 Transport Layer 3-32 TCP Flow Control  receive side of TCP connection has a receive buffer:  speed-matching service: matching the send rate to the receiving app’s drain rate  app process may be slow at reading from buffer sender won’t overflow receiver’s buffer by transmitting too much, too fast flow control

33 Quiz  Why does TCP use time outs?  How does timeout impact the performance of TCP?  What are pros and cons for short (long) timeouts?  How is RTT estimated by TCP?  What is need for "flow control" in TCP?  Describe "flow control" mechanism.  What is the primary cause of congestion?  Mention 3 costs of congestion.  What is difference between flow and congestion control. Transport Layer 3-33

34 Transport Layer 3-34 Chapter 3 outline 3.1 Transport-layer services 3.2 Multiplexing and demultiplexing 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP  segment structure  reliable data transfer  flow control  connection management 3.6 Principles of congestion control 3.7 TCP congestion control

35 Transport Layer 3-35 Principles of Congestion Control Congestion:  informally: “too many sources sending too much data too fast for network to handle”  different from flow control!  manifestations:  lost packets (buffer overflow at routers)  long delays (queueing in router buffers)  a top-10 problem!

36 Transport Layer 3-36 Approaches towards congestion control end-end congestion control:  no explicit feedback from network  congestion inferred from end-system observed loss, delay  approach taken by TCP network-assisted congestion control:  routers provide feedback to end systems  single bit indicating congestion (SNA, DECbit, TCP/IP ECN, ATM)  explicit rate sender should send at Two broad approaches towards congestion control:

37 Transport Layer 3-37 Chapter 3 outline 3.1 Transport-layer services 3.2 Multiplexing and demultiplexing 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP  segment structure  reliable data transfer  flow control  connection management 3.6 Principles of congestion control 3.7 TCP congestion control

38 Transport Layer 3-38 TCP congestion control: additive increase, multiplicative decrease  approach: increase transmission rate (window size), probing for usable bandwidth, until loss occurs  additive increase: increase cwnd by 1 MSS every RTT until loss detected  multiplicative decrease: cut cwnd in half after loss time cwnd : congestion window size saw tooth behavior: probing for bandwidth

39 Transport Layer 3-39 TCP Congestion Control: details  sender limits transmission: LastByteSent-LastByteAcked  cwnd  roughly,  cwnd is dynamic, function of perceived network congestion How does sender perceive congestion?  loss event = timeout or 3 duplicate acks  TCP sender reduces rate ( cwnd ) after loss event three mechanisms:  AIMD  slow start  conservative after timeout events rate = cwnd RTT Bytes/sec

40 Transport Layer 3-40 TCP Slow Start  when connection begins, increase rate exponentially until first loss event:  initially cwnd = 1 MSS  double cwnd every RTT  done by incrementing cwnd for every ACK received  summary: initial rate is slow but ramps up exponentially fast Host A one segment RTT Host B time two segments four segments

41 Transport Layer 3-41 Refinement: inferring loss  after 3 dup ACKs:  cwnd is cut in half  window then grows linearly  but after timeout event:  cwnd instead set to 1 MSS;  window then grows exponentially  to a threshold, then grows linearly  3 dup ACKs indicates network capable of delivering some segments  timeout indicates a “more alarming” congestion scenario Philosophy:

42 Transport Layer 3-42 Refinement Q: when should the exponential increase switch to linear? A: when cwnd gets to 1/2 of its value before timeout. Implementation:  variable ssthresh  on loss event, ssthresh is set to 1/2 of cwnd just before loss event Can you identify different phases?

43 Connection Timeline 3: Transport Layer3b-43

44 Transport Layer 3-44 Summary: TCP Congestion Control timeout ssthresh = cwnd/2 cwnd = 1 MSS dupACKcount = 0 retransmit missing segment  cwnd > ssthresh congestion avoidance cwnd = cwnd + MSS (MSS/cwnd) dupACKcount = 0 transmit new segment(s), as allowed new ACK. dupACKcount++ duplicate ACK fast recovery cwnd = cwnd + MSS transmit new segment(s), as allowed duplicate ACK ssthresh= cwnd/2 cwnd = ssthresh + 3 retransmit missing segment dupACKcount == 3 timeout ssthresh = cwnd/2 cwnd = 1 dupACKcount = 0 retransmit missing segment ssthresh= cwnd/2 cwnd = ssthresh + 3 retransmit missing segment dupACKcount == 3 cwnd = ssthresh dupACKcount = 0 New ACK slow start timeout ssthresh = cwnd/2 cwnd = 1 MSS dupACKcount = 0 retransmit missing segment cwnd = cwnd+MSS dupACKcount = 0 transmit new segment(s), as allowed new ACK dupACKcount++ duplicate ACK  cwnd = 1 MSS ssthresh = 64 KB dupACKcount = 0 New ACK! New ACK! New ACK!

45 Transport Layer 3-45 Chapter 3: Summary  principles behind transport layer services:  multiplexing, demultiplexing  reliable data transfer  flow control  congestion control  instantiation and implementation in the Internet  UDP  TCP Next:  leaving the network “edge” (application, transport layers)  into the network “core”

46 Netstat  netstat –a –n  Shows open connections in various states  Example: Active Connections ProtoLocalAddrForeignAddr State TCP0.0.0.0:230.0.0.0:0 LISTENING TCP192.168.0.100:139207.200.89.225:80CLOSE_WAIT TCP192.168.0.100:1275 128.32.44.96:22ESTABLISHED UDP127.0.0.1:1070*:*

47 Quiz  What are three primary mechanisms of TCP Congestion Control  What are the two TCP loss events  How many packets are transmitted in the first 4 RTT durations after a TCP connection is established. Transport Layer 3-47

48 Quiz (cont) Transport Layer 3-48


Download ppt "CSCI 3335: C OMPUTER N ETWORKS C HAPTER 3 T RANSPORT L AYER Vamsi Paruchuri University of Central Arkansas Some."

Similar presentations


Ads by Google