Upload
layne-grigson
View
214
Download
0
Embed Size (px)
Citation preview
Apr 18, 2023 4/598N: Computer Networks
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
Apr 18, 2023 4/598N: Computer Networks
UDP message queue
Applicationprocess
Applicationprocess
Applicationprocess
UDP
Packets arrive
Ports
Queues
Packetsdemultiplexed
Apr 18, 2023 4/598N: Computer Networks
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– psuedo header + UDP header + data
SrcPort DstPort
ChecksumLength
Data
0 16 31
Apr 18, 2023 4/598N: Computer Networks
TCP Overview
• Connection-oriented• Byte-stream
– app writes bytes– TCP sends segments– app reads bytes
Application process
Writebytes
TCPSend buffer
Segment Segment Segment
Transmit segments
Application process
Readbytes
TCPReceive buffer
…
… …
• Full duplex• Flow control: keep sender from
overrunning receiver• Congestion control: keep sender
from overrunning network
Apr 18, 2023 4/598N: Computer Networks
Data Link Versus Transport
• Potentially connects many different hosts– need explicit connection establishment and termination
• Potentially different RTT– need adaptive timeout mechanism
• Potentially long delay in network– need to be prepared for arrival of very old packets
• Potentially different capacity at destination – need to accommodate different node capacity
• Potentially different network capacity– need to be prepared for network congestion
Apr 18, 2023 4/598N: Computer Networks
Segment Format
Options (variable)
Data
Checksum
SrcPort DstPort
HdrLen 0 Flags
UrgPtr
AdvertisedWindow
SequenceNum
Acknowledgment
0 4 10 16 31
Apr 18, 2023 4/598N: Computer Networks
Segment Format (cont)
• Each connection identified with 4-tuple:– (SrcPort, SrcIPAddr, DsrPort, DstIPAddr)
• Sliding window + flow control– acknowledgment, SequenceNum, AdvertisedWinow
• Flags– SYN, FIN, RESET, PUSH, URG, ACK
• Checksum– pseudo header + TCP header + data
Sender
Data (SequenceNum)
Acknowledgment +AdvertisedWindow
Receiver
Apr 18, 2023 4/598N: Computer Networks
Connection Establishment and Termination
Active participant(client)
Passive participant(server)SYN, SequenceNum = x
SYN + ACK, SequenceNum = y
Acknowledgment = x+1
ACK, Acknowledgment = y + 1
Three way handshake
Apr 18, 2023 4/598N: Computer Networks
Sequence Number Selection
• Initial sequence number (ISN) selection– Why not simply chose 0?– Must avoid overlap with earlier incarnation
• Requirements for ISN selection– Must operate correctly
• Without synchronized clocks• Despite node failures
Apr 18, 2023 4/598N: Computer Networks
ISN and Quiet Time
• Use local clock to select ISN– Clock wraparound must be greater than max segment
lifetime (MSL)
• Upon startup, cannot assign sequence numbers for MSL seconds
• Can still have sequence number overlap– If sequence number space not large enough for high-
bandwidth connections
Apr 18, 2023 4/598N: Computer Networks
Connection Tear-down
• Normal termination– Allow unilateral close– Avoid sequence number overlap
• TCP must continue to receive data even after closing– Cannot close connection immediately: what if a new
connection restarts and uses same sequence number and receives retransmitted FIN from the current session?
Apr 18, 2023 4/598N: Computer Networks
Tear-down Packet Exchange
Sender ReceiverFIN
FIN-ACK
FIN
FIN-ACK
Data write
Data ack
Apr 18, 2023 4/598N: Computer Networks
State Transition Diagram
CLOSED
LISTEN
SYN_RCVD SYN_SENT
ESTABLISHED
CLOSE_WAIT
LAST_ACKCLOSING
TIME_WAIT
FIN_WAIT_2
FIN_WAIT_1
Passive open Close
Send/SYNSYN/SYN + ACK
SYN + ACK/ACK
SYN/SYN + ACK
ACK
Close/FIN
FIN/ACKClose/FIN
FIN/ACKACK + FIN/ACK Timeout after two segment lifetimes
FIN/ACK
ACK
ACK
ACK
Close/FIN
Close
CLOSED
Active open/SYN
Apr 18, 2023 4/598N: Computer Networks
Sliding Window Revisited
• Sending side– LastByteAcked < = LastByteSent
– LastByteSent < = LastByteWritten
– buffer bytes between LastByteAcked and LastByteWritten
Sending application
LastByteWritten
TCP
LastByteSentLastByteAcked
Receiving application
LastByteRead
TCP
LastByteRcvdNextByteExpected
• Receiving side– LastByteRead < NextByteExpected
– NextByteExpected < = LastByteRcvd +1
– buffer bytes between NextByteRead and LastByteRcvd
Apr 18, 2023 4/598N: Computer Networks
Flow Control
• Fast sender can overrun receiver:– Packet loss, unnecessary retransmissions
• Possible solutions:– Sender transmits at pre-negotiated rate– Sender limited to a window’s worth of unacknowledged data
• Flow control different from congestion control
Apr 18, 2023 4/598N: Computer Networks
Flow Control
• Send buffer size: MaxSendBuffer• Receive buffer size: MaxRcvBuffer• Receiving side
– LastByteRcvd - LastByteRead < = MaxRcvBuffer– AdvertisedWindow = MaxRcvBuffer - (NextByteExpected -
NextByteRead)
• Sending side– LastByteSent - LastByteAcked < = AdvertisedWindow– EffectiveWindow = AdvertisedWindow - (LastByteSent -
LastByteAcked)– LastByteWritten - LastByteAcked < = MaxSendBuffer– block sender if (LastByteWritten - LastByteAcked) + y >
MaxSenderBuffer
• Always send ACK in response to arriving data segment• Persist when AdvertisedWindow = 0
Apr 18, 2023 4/598N: Computer Networks
Round-trip Time Estimation
• Wait at least one RTT before retransmitting• Importance of accurate RTT estimators:
– Low RTT -> unneeded retransmissions– High RTT -> poor throughput
• RTT estimator must adapt to change in RTT– But not too fast, or too slow!
Apr 18, 2023 4/598N: Computer Networks
Initial Round-trip Estimator
Round trip times exponentially averaged:• New RTT = (old RTT) + (1 - ) (new sample)• Recommended value for : 0.8 - 0.9• Retransmit timer set to RTT, where = 2• Every time timer expires, RTO exponentially backed-off
Apr 18, 2023 4/598N: Computer Networks
Retransmission Ambiguity
A B
ACK
SampleRTT
A BOriginal transmission
retransmissionSampleRTT
Original transmission
retransmission
ACK
Apr 18, 2023 4/598N: Computer Networks
Karn’s Retransmission Timeout Estimator
• Accounts for retransmission ambiguity• If a segment has been retransmitted:
– Don’t count RTT sample on ACKs for this segment– Keep backed off time-out for next packet– Reuse RTT estimate only after one successful
transmission
Apr 18, 2023 4/598N: Computer Networks
Karn/Partridge Algorithm
• Do not sample RTT when retransmitting • Double timeout after each retransmission
Sender Receiver
Original transmission
ACK
Sam
ple
RT
T
Retransmission
Sender Receiver
Original transmission
ACK
Sam
ple
RT
T
Retransmission
Apr 18, 2023 4/598N: Computer Networks
Jacobson’s Retransmission Timeout Estimator
• Key observation:– Using RTT for timeout doesn’t work– At high loads round trip variance is high
• Solution:– If D denotes mean variation– Timeout = RTT + 4D
Apr 18, 2023 4/598N: Computer Networks
Jacobson/ Karels Algorithm
• New Calculations for average RTT• Diff = SampleRTT - EstRTT• EstRTT = EstRTT + (d x 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)