Sie sind auf Seite 1von 36

Data structure and input processing

CS 640

Transport Control Protocol


Outline TCP objectives revisited TCP basics New algorithms for RTO calculation

CS 640

TCP Overview
TCP is the most widely used Internet protocol
Web, Peer-to-peer, FTP, telnet,

A two way, reliable, byte stream oriented end-to-end protocol


Includes flow and congestion control

Closely tied to the Internet Protocol (IP) A focus of intense study for many years
Our goal is to understand the RENO version of TCP
RENO is most widely used TCP today RFC 2001 (now expired) RENO mainly specifies mechanisms for dealing with congestion
CS 640 3

TCP Features
Connection-oriented Byte-stream
app writes bytes TCP sends segments app reads bytes

Reliable data transfer


Application process Write bytes

Full duplex Flow control: keep sender from overrunning receiver Congestion control: keep sender from overrunning network
Application process Read bytes

TCP Send buffer

TCP Receive buffer

Segment

Segment

Segment

Transmit segments

CS 640

12.11 TCP Package


A TCP package involving a table called Transmission Control Blocks, a set of timers, and three software modules: main module, input processing module, output processing module.

CS 640

TCP Package (Contd)


Transmission Control Block (TCBs)
To control the connection, TCP uses a structure to hold information about each connection TCP keeps an array of TCBs in the form of a table

CS 640

TCP Package (Contd)


State : defining the state of the connection according to the state transition diagram Process : defining the process using this connection at this machine as a client or a server Local IP address : defining the IP address of the local machine used by this connection Local port number : defining the local port number used by this connection Remote IP address Remote port address Interface : defining the local interface Local window : holding information about the window at 7 CS 640 the local TCP

TCP Package (Contd)


Sending sequence number Receiving sequence number Sending ACK number Time-out values : retransmission time-out, persistence time-out, keepalive time-out, and so on Buffer size : defining the size of the buffer at the local TCP Buffer pointer : pointer to buffer where the receiving data is kept until is read by the CS 640 8 application

TCP Package (Contd)


Main Module : The main module is invoked by an arrived
TCP segment, a time-out, or a message from an application program

CS 640

TCP Package (Contd)


Main Module (contd)

CS 640

10

TCP Package (Contd)


Main Module (contd)

CS 640

11

Main Module (contd) TCP Package

(Contd)

CS 640

12

Main Module D Package TCP (contd)

(Contd)

CS 640

13

TCP Package (Contd)


Main Module (contd)

CS 640

14

TCP Package (Contd)


Main Module (contd)

CS 640

15

TCP Package (Contd)


Main Module (contd)

CS 640

16

TCP Package (Contd)


Main Module (contd)

CS 640

17

TCP Package (Contd)


Input processing module
handles all the details needed to process data or acknowledgment received when TCP is in the ESTABLISHED state sends an ACK if needed, takes care of the window size, does error checking, and so on

Output processing module


handles all the details needed to send out data received from application program when TCP is in the ESTABLISHED state handles retransmissionCS 640 time-outs, persistent time-outs, 18

Segment Format

CS 640

19

Segment Format
0 4 10 SrcPort SequenceNum Acknowledgment HdrLen 0 Checksum Options (variable) Data Flags AdvertisedWindow UrgPtr 16 DstPort 31

CS 640

20

Segment Format (cont)


Each connection identified with 4-tuple:
(SrcPort, SrcIPAddr, DsrPort, DstIPAddr)

Sliding window + flow control


acknowledgment, SequenceNum, AdvertisedWinow
Data(SequenceNum) Sender Acknowledgment + AdvertisedWindow Receiver

Flags

SYN, FIN, RESET, PUSH, URG, ACK

Checksum is the same as UDP


pseudo header + TCP header + data
CS 640 21

Sequence Numbers
32 bit sequence numbers
Wrap around supported

TCP breaks byte stream from application into packets (limited by Max. Segment Size) Each byte in the data stream is considered Each packet has a sequence number
Initial number selected at connection time Subsequent numbers indicate first data byte number in packet

ACKs indicate next byte expected


CS 640 22

Comparison

CS 640

23

Sequence Number Wrap Around


Bandwidth T1 (1.5 Mbps) Ethernet (10 Mbps) T3 (45 Mbps) FDDI (100 Mbps) STS-3 (155 Mbps) STS-12 (622 Mbps) STS-24 (1.2 Gbps) Time Until Wrap Around 6.4 hours 57 minutes 13 minutes 6 minutes 4 minutes 55 seconds 28 seconds

Protect against this by adding a 32-bit timestamp to TCP header


CS 640 24

Connection Establishment
Active participant (client)
SYN, S equen ceNu

Passive participant (server)


m=x

y, um = ceN 1 quen , Se =x + CK ent N+A edgm SY owl Ackn


ACK, Ackno wledg ment =y

+1

CS 640

25

Connection Termination
Active participant (server)
FIN, S equen ceNu m

Passive participant (client)


= x
1

x+ ent = gm owled = y Ackn Num nce eque S FIN,


Ackno wledg ment =y +

CS 640

26

Finite state machine implementation

CS 640

27

State Transition Diagram


CLOSED Active open/SYN Passive open Close Close LISTEN

SYN_RCVD

SYN/SYN + ACK Send/SYN SYN/SYN + ACK ACK SYN + ACK/ACK

SYN_SENT

Close/FIN Close/FIN FIN_WAIT_1 ACK FIN_WAIT_2


AC FIN/ACK K + FI N/ AC K

ESTABLISHED FIN/ACK CLOSE_WAIT Close/FIN CLOSING ACK Timeout after two segment lifetimes TIME_WAIT LAST_ACK ACK CLOSED

FIN/ACK

CS 640

28

Reliability in TCP
Checksum used to detect bit level errors Sequence numbers used to detect sequencing errors
Duplicates are ignored Reordered packets are reordered (or dropped) Lost packets are retransmitted

Timeouts used to detect lost packets


Requires RTO calculation Requires sender to maintain data until it is ACKed
CS 640 29

Sliding Window Revisited


Sending application Receiving application TCP LastByteWritten LastByteRead TCP

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 NextByteRead and LastByteRcvd
CS 640 30

Flow Control in TCP


Send buffer size: MaxSendBuffer Receive buffer size: MaxRcvBuffer Receiving side
LastByteRcvd - LastByteRead < = MaxRcvBuffer AdvertisedWindow = MaxRcvBuffer - (LastByteRcvd LastByteRead)

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 sending one byte seg. when AdvertisedWindow = 0
CS 640 31

Keeping the Pipe Full


16-bit AdvertisedWindow controls amount of pipelining Assume RTT of 100ms Add scaling factor extension to header to enable larger windows
Bandwidth T1 (1.5 Mbps) Ethernet (10 Mbps) T3 (45 Mbps) FDDI (100 Mbps) OC-3 (155 Mbps) OC-12 (622 Mbps) OC-24 (1.2 Gbps) Delay x Bandwidth Product 18KB 122KB 549KB 1.2MB 1.8MB 7.4MB 14.8MB
CS 640 32

Making TCP More Efficient


Delayed acknowledgements
Delay for about 200ms Try to piggyback ACKs with data

Acknowledge every other packet


Many instances in transmission sequence which require an ACK

Dont forget Nagles algorithm


Can be switched off
CS 640 33

Karn/Partridge Algorithm for RTO


Sender
Orig inal t rans miss ion Retr ansm issio n
ACK

Receiver

Sender

Receiver
Orig inal t rans miss ion
ACK Retr ansm issio n

SampleR TT

Two degenerate cases with timeouts and RTT measurements


Solution: Do not sample RTT when retransmitting

After each retransmission, set next RTO to be double the value of the last
Exponential backoff is well known control theory method Loss is most likely caused by congestion so be careful
CS 640 34

SampleR TT

Jacobson/ Karels Algorithm


In late 80s, Internet was suffering from congestion collapse New Calculations for average RTT Jacobson 88 Variance is not considered when setting timeout value
If variance is small, we could set RTO = EstRTT If variance is large, we may need to set RTO > 2 x EstRTT

New algorithm calculates both variance and mean for RTT Diff = sampleRTT - EstRTT EstRTT = EstRTT + ( d x Diff) Dev = Dev + d ( |Diff| - Dev) Initially settings for EstRTT and Dev will be given to you
where d is a factor between 0 and 1 typical value is 0.125
CS 640 35

Jacobson/ Karels contd.


TimeOut = x EstRTT + x Dev
where = 1 and = 4

When variance is small, TimeOut is close to EstRTT When variance is large Dev dominates the calculation Another benefit of this mechanism is that it is very efficient to implement in code (does not require floating point) Notes
algorithm only as good as granularity of clock (500ms on Unix) accurate timeout mechanism important to congestion control (later)

These issues have been studied and dealt with in new RFCs for RTO calculation. TCP RENO uses Jacobson/Karels
CS 640 36

Das könnte Ihnen auch gefallen