chapter 3. transport layer 3-2 transport services and protocols provide logical communication...

33
CHAPTER 3

Upload: olivia-huitt

Post on 16-Dec-2015

230 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

CHAPTER 3

Page 2: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-2

Transport services and protocols• provide logical communication

between app processes running on different hosts

• transport protocols run in end systems – send side: breaks app

messages into segments, passes to network layer

– rcv side: reassembles segments into messages, passes to app layer

• more than one transport protocol available to apps– Internet: TCP and UDP

applicationtransportnetworkdata linkphysical

applicationtransportnetworkdata linkphysical

logical end-end transport

Page 3: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-3

Internet transport-layer protocols

• reliable, in-order delivery (TCP)– congestion control – flow control– connection setup

• unreliable, unordered delivery: UDP– no-frills extension of “best-

effort” IP

• services not available: – delay guarantees– bandwidth guarantees

applicationtransportnetworkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

applicationtransportnetworkdata linkphysical

logical end-end transport

Page 4: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-4

Multiplexing/demultiplexing

application

transport

network

link

physical

P1 application

transport

network

link

physical

application

transport

network

link

physical

P2P3 P4P1

host 1 host 2 host 3

= process= socket

delivering received segmentsto correct socket

Demultiplexing at rcv host:gathering data from multiplesockets, enveloping data with header (later used for demultiplexing)

Multiplexing at send host:

Page 5: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-5

How demultiplexing works• host receives IP datagrams

– each datagram has source IP address, destination IP address

– each datagram carries 1 transport-layer segment

– each segment has source, destination port number

• host uses IP addresses & port numbers to direct segment to appropriate socket

source port # dest port #

32 bits

applicationdata (message)

other header fields

TCP/UDP segment format

Page 6: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-6

Connectionless demultiplexing

• recall: create sockets with host-local port numbers:

DatagramSocket mySocket1 = new DatagramSocket(12534);

DatagramSocket mySocket2 = new DatagramSocket(12535);

• recall: when creating datagram to send into UDP socket, must specify

(dest IP address, dest port number)

• when host receives UDP segment:– checks destination port

number in segment– directs UDP segment to socket

with that port number

• IP datagrams with different source IP addresses and/or source port numbers directed to same socket

Page 7: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-7

UDP: User Datagram Protocol [RFC 768]

• “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

Why is there a UDP?• no connection establishment

(which can add delay)• simple: no connection state at

sender, receiver• small segment header• no congestion control: UDP can

blast away as fast as desired

Page 8: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-8

UDP: more

• often used for streaming multimedia apps– loss tolerant– rate sensitive

• other UDP uses– DNS– SNMP

• reliable transfer over UDP: add reliability at application layer– application-specific error

recovery!

source port # dest port #

32 bits

Applicationdata (message)

UDP segment format

length checksumLength, in

bytes of UDPsegment,including

header

Page 9: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-9

UDP checksum

Sender:• treat segment contents as

sequence of 16-bit integers• checksum: addition (1’s

complement sum) of segment contents

• sender puts checksum value into UDP checksum field

Receiver:• 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 ….

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

Page 10: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-10

Internet Checksum Example• Note: when adding numbers, a carryout from

the most significant bit needs to be added to the result

• Example: add two 16-bit integers

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1

1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

sumchecksum

Page 11: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-11

Principles of Reliable data transfer• important in app., transport, link layers• top-10 list of important networking topics!

• characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)

Page 12: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-12

Principles of Reliable data transfer• important in app., transport, link layers• top-10 list of important networking topics!

• characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)

Page 13: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-13

Principles of Reliable data transfer• important in app., transport, link layers• top-10 list of important networking topics!

• characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)

Page 14: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-14

Reliable data transfer: getting started

sendside

receiveside

rdt_send(): called from above, (e.g., by app.). Passed data to deliver to receiver upper layer

udt_send(): called by rdt,to transfer packet over unreliable channel to receiver

rdt_rcv(): called when packet arrives on rcv-side of channel

deliver_data(): called by rdt to deliver data to upper

Page 15: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-15

Reliable data transfer: getting started

We’ll:• incrementally develop sender, receiver sides of

reliable data transfer protocol (rdt)• consider only unidirectional data transfer

– but control info will flow on both directions!

• use finite state machines (FSM) to specify sender, receiver

state1

state2

event causing state transitionactions taken on state transition

state: when in this “state” next state uniquely

determined by next event

eventactions

Page 16: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-16

Pipelined protocolspipelining: sender allows multiple, “in-flight”, yet-to-be-

acknowledged pkts– range of sequence numbers must be increased– buffering at sender and/or receiver

• two generic forms of pipelined protocols: go-Back-N, selective repeat

Page 17: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-17

Pipelining: increased utilization

first packet bit transmitted, t = 0

sender receiver

RTT

last bit transmitted, t = L / R

first packet bit arriveslast packet bit arrives, send ACK

ACK arrives, send next packet, t = RTT + L / R

last bit of 2nd packet arrives, send ACKlast bit of 3rd packet arrives, send ACK

U sender

= .024

30.008 = 0.0008

microseconds

3 * L / R

RTT + L / R =

Increase utilizationby a factor of 3!

Page 18: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-18

Pipelined ProtocolsGo-back-N: big picture:• sender can have up to N unacked packets in pipeline• rcvr only sends cumulative acks

– doesn’t ack packet if there’s a gap• sender has timer for oldest unacked packet

– if timer expires, retransmit all unack’ed packets

Selective Repeat: big pic• sender can have up to N unack’ed packets in pipeline• rcvr sends individual ack for each packet• sender maintains timer for each unacked packet

– when timer expires, retransmit only unack’ed packet

Page 19: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-19

TCP segment structure

source port # dest port #

32 bits

applicationdata (variable length)

sequence number

acknowledgement numberReceive window

Urg data pnterchecksumFSRPAU

headlen

notused

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 willingto accept

countingby bytes of data(not segments!)

Internetchecksum

(as in UDP)

Page 20: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-20

TCP seq. #’s and ACKsSeq. #’s:

– byte stream “number” of first byte in segment’s data

ACKs:– seq # of next byte

expected from other side

– cumulative ACKQ: 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

Usertypes‘C’

host ACKsreceipt of echoed‘C’

host ACKsreceipt of‘C’, echoesback ‘C’

timesimple telnet scenario

Page 21: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-21

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

Page 22: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-22

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 overflowreceiver’s buffer bytransmitting too much, too fast

flow control

Page 23: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-23

TCP Flow control: how it works

(suppose TCP receiver discards out-of-order segments)

• spare room in buffer= RcvWindow= RcvBuffer-[LastByteRcvd -

LastByteRead]

• rcvr advertises spare room by including value of RcvWindow in segments

• sender limits unACKed data to RcvWindow– guarantees receive buffer

doesn’t overflow

Page 24: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-24

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 host sends TCP SYN

segment to server– specifies initial seq #– no data

Step 2: server host receives SYN, replies with SYNACK segment

– server allocates buffers– specifies server initial seq. #

Step 3: client receives SYNACK, replies with ACK segment, which may contain data

Page 25: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-25

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.

client

FIN

server

ACK

ACK

FIN

close

close

closed

timed

wai

t

Page 26: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-26

TCP Connection Management (cont.)

Step 3: client receives FIN, replies with ACK.

– Enters “timed wait” - will respond with ACK to received FINs

Step 4: server, receives ACK. Connection closed.

Note: with small modification, can handle simultaneous FINs.

client

FIN

server

ACK

ACK

FIN

closing

closing

closed

timed

wai

tclosed

Page 27: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-27

TCP Connection Management (cont)

TCP clientlifecycle

TCP serverlifecycle

Page 28: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-28

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!

Page 29: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-29

Causes/costs of congestion: scenario 1 • two senders, two

receivers• one router, infinite

buffers • no retransmission

• large delays when congested

• maximum achievable throughput

unlimited shared output link buffers

Host Alin : original data

Host B

lout

Page 30: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-30

Causes/costs of congestion: scenario 2 • one router, finite buffers • sender retransmission of timed-out packet

– application-layer input = application-layer output: lin = lout

– transport-layer input includes retransmissions : lin lin

finite shared output link buffers

Host A

lin : original data

Host B

loutl'in: original data, plus

retransmitted data

Page 31: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-31

Causes/costs of congestion: scenario 3 • four senders• multihop paths• timeout/retransmit

lin

Q: what happens as and increase ?l

in

finite shared output link

buffers

Host Alin : original data

Host B

lout

l'in : original data, plus retransmitted data

Page 32: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-32

Causes/costs of congestion: scenario 3

another “cost” of congestion: when packet dropped, any “upstream transmission

capacity used for that packet was wasted!

Host A

Host B

lo

u

t

Page 33: CHAPTER 3. Transport Layer 3-2 Transport services and protocols provide logical communication between app processes running on different hosts transport

Transport Layer 3-33

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: