270 likes | 408 Views
Internet Engineering. University of ilam Dr. Mozafar Bag-Mohammadi. Transport Layer. Course Materials. Course Web page visit regularly Textbook مهندسی اینترنت، احسان ملکیان، انتشارات نص “Computer Networks, A system approach”. Peterson & Davie 3rd edition Grading Homework 10%
E N D
Internet Engineering University of ilam Dr. Mozafar Bag-Mohammadi Transport Layer
Course Materials • Course Web page • visit regularly • Textbook • مهندسی اینترنت، احسان ملکیان، انتشارات نص • “Computer Networks, A system approach”. Peterson & Davie 3rd edition • Grading • Homework 10% • Project 15% • Midterm 30% • Final 50%
Prerequisition • General knowledge in Computer. • Fluency in English, specially reading. • C++ programming. • Knowledge of UNIX (LINUX) system and programming.
Outline • Connection Establishment/Termination • Sliding Window Revisited • Flow Control • Adaptive Timeout
End-to-End Protocols • Underlying best-effort network • drop messages • re-orders messages • delivers duplicate copies of a given message • limits messages to some finite size • delivers messages after an arbitrarily long delay • Common end-to-end services • guarantee message delivery • deliver messages in the same order they are sent • deliver at most one copy of each message • support arbitrarily large messages • support synchronization • allow the receiver to flow control the sender • support multiple application processes on each host
Transport Layer Function(s) • Multiplexing/demultiplexing between network application processes. • Others? • Error Detection within a segment • Reliability • Flow Control. • Congestion control. • Connection Management. • Difference between Error detection and reliability? • Difference between flow control and congestion control?
Simple Demultiplexor (UDP) • Unreliable and unordered datagram service • Adds multiplexing • No flow control • Endpoints identified by ports • servers have well-known ports • see /etc/services on Unix • Header format • Optional checksum • pseudo header + UDP header + data 0 16 31 SrcPort DstPort Checksum Length Data
Using UDP • Non-standard protocols can be implemented on top of UDP. • Non-standard = non-TCP in practice • use the port addressing provided by UDP • implement their own reliability, flow control, ordering, congestion control • ? Examples: • remote procedure calls • multimedia • distributed computing
TCP Overview Application process Application process Write Read bytes bytes … … TCP TCP Send buffer Receive buffer … Segment Segment Segment T ransmit segments • Connection-oriented • Byte-stream • app writes bytes • TCP sends segments • app reads bytes • Full duplex • Flow control: keep sender from overrunning receiver • Congestion control: keep sender from overrunning network
High level TCP Characteristics • Connection-oriented reliable byte-stream protocol. • Used for file transfers, telnet, web access, …. • Two way connections. • control information for one direction piggy-backed on data flow in other direction • header fields fall in three classes: general, forward flow, opposite flow • Protocol has evolved over time and will continue to do so. • Nearly impossible to change the header • Uses options to add information to the header • Change processing at endpoints • Backward compatibility is what makes it TCP
Data Link Versus Transport • Potentially connects many different hosts (logical connection) • need explicit connection establishment and termination • Potentially different RTT • need adaptive timeout mechanism • Potentially reordering packets. (How far?), Maximum segment life time. Currently 120 sec. • Potentially long delay in network • need to be prepared for arrival of very old packets • Delay X bandwidth? • Buffer size
Data Link Versus Transport (cont) • Potentially different capacity at destination • need to accommodate different node capacity • Potentially different network capacity • need to be prepared for network congestion
Data delivery in TCP • TCP is byte oriented, however transmit data in segments (messages). • How TCP knows the time for delivery? • Maximum Segment Size (MSS) • Timer • Pushed by the application. Like telnet.
Segment Format (cont) Data (SequenceNum) Sender Receiver Acknowledgment + AdvertisedWindow • Each connection identified with 4-tuple: • (SrcPort, SrcIPAddr, DsrPort, DstIPAddr) • Sliding window + flow control • acknowledgment, SequenceNum, AdvertisedWinow • Checksum • pseudo header + TCP header + data
Segment Format (cont) • Flags • SYN, FIN, RESET, PUSH, URG, ACK • SYN and FIN for establish and tear down connection. • ACK indicates the Ack field is valid. • URG shows some part of data is urgent.(Up to UrgPtr). • PUSH shows the sender had push operation. • RESET shows confusion in receiver.
Connection Establishment and Termination Active participant Passive participant (client) (server) Client does active connection. Server must do passive connection first. SYN, SequenceNum = x , y 1 + SYN + ACK, SequenceNum = x Closing is symmetric, both side must tear down the connection. Acknowledgment = ACK, Acknowledgment = y + 1 Three way handshaking. Connection parameter are exchanged first. Acknowledgment shows the next expected sequence number.
State Transition Diagram CLOSED Active open /SYN Passive open Close Close LISTEN SYN/SYN + ACK Send/ SYN SYN/SYN + ACK SYN_RCVD SYN_SENT ACK SYN + ACK/ACK Close /FIN ESTABLISHED Close /FIN FIN/ACK FIN_WAIT_1 CLOSE_WAIT FIN/ACK ACK Close /FIN ACK + FIN/ACK FIN_WAIT_2 CLOSING LAST_ACK Timeout after two ACK ACK segment lifetimes FIN/ACK TIME_WAIT CLOSED
State Transition (cont) • Sliding window is in ESTABLISHED. • All connections start with CLOSED. • Arcs are tagged with event/action. • Triggering a transition. • Arriving a segment from a peer. • Envoking by an application.
Sliding Window Revisited Sending application Receiving application TCP TCP LastByteWritten LastByteRead LastByteAcked LastByteSent NextByteExpected LastByteRcvd • Sending side • LastByteAcked < = LastByteSent • LastByteSent < = LastByteWritten • buffer bytes between LastByteAcked and LastByteWritten • Receiving side • LastByteRead < NextByteExpected • NextByteExpected < = LastByteRcvd +1 • buffer bytes between LastByteRead and LastByteRcvd
Flow Control • Send buffer size: MaxSendBuffer • Receive buffer size: MaxRcvBuffer • Receiving side • LastByteRcvd - LastByteRead < = MaxRcvBuffer • AdvertisedWindow = MaxRcvBuffer - (NextByteExpected - LastByteRead) • Sending side • LastByteWritten - LastByteAcked < = MaxSendBuffer • block sender if (LastByteWritten - LastByteAcked) + y > MaxSenderBuffer • LastByteSent - LastByteAcked < = AdvertisedWindow • EffectiveWindow = AdvertisedWindow - (LastByteSent - LastByteAcked) • Always send ACK in response to arriving data segment • Persist when AdvertisedWindow= 0
Protection Against Wrap Around • 32-bit SequenceNum Bandwidth Time Until Wrap Around T1 (1.5 Mbps) 6.4 hours Ethernet (10 Mbps) 57 minutes T3 (45 Mbps) 13 minutes FDDI (100 Mbps) 6 minutes STS-3 (155 Mbps) 4 minutes STS-12 (622 Mbps) 55 seconds STS-24 (1.2 Gbps) 28 seconds
Keeping the Pipe Full • 16-bit AdvertisedWindow Bandwidth Delay x Bandwidth Product T1 (1.5 Mbps) 18KB Ethernet (10 Mbps) 122KB T3 (45 Mbps) 549KB FDDI (100 Mbps) 1.2MB STS-3 (155 Mbps) 1.8MB STS-12 (622 Mbps) 7.4MB STS-24 (1.2 Gbps) 14.8MB
TCP Extensions • Implemented as header options • Store timestamp in outgoing segments • Extend sequence space with 32-bit timestamp (PAWS) • Shift (scale) advertised window
Adaptive Retransmission (Original Algorithm) • Measure SampleRTT for each segment/ ACK pair • Compute weighted average of RTT • EstRTT = ax EstRTT + b x SampleRTT • where a+b = 1 • a between 0.8 and 0.9 • b between 0.1 and 0.2 • Set timeout based on EstRTT • TimeOut=2 x EstRTT
Karn/Partridge Algorithm • Do not sample RTT when retransmitting • Double timeout after each retransmission Sender Receiver Sender Receiver Original transmission Original transmission TT TT ACK Retransmission SampleR SampleR Retransmission ACK
Jacobson/ Karels Algorithm • New Calculations for average RTT • Diff = SampleRTT - EstRTT • EstRTT = EstRTT + (dx Diff) • Dev = Dev + d( |Diff| - Dev) • where d is a factor between 0 and 1 • Consider variance when setting timeout value • TimeOut = m x EstRTT + f x Dev • where m = 1 and f = 4 • Notes • algorithm only as good as granularity of clock (500ms on Unix) • accurate timeout mechanism important to congestion control (later)