33
The Transport Layer The Transport Layer introduction introduction fundamental problems in networking fundamental problems in networking communicating reliably over an communicating reliably over an unreliable channel unreliable channel congestion and flow control congestion and flow control setting up/tearing down a connection setting up/tearing down a connection multiplexing and addressing multiplexing and addressing

The Transport Layer introduction fundamental problems in networking communicating reliably over an unreliable channel congestion and flow control

Embed Size (px)

Citation preview

Page 1: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

The Transport LayerThe Transport Layer

introductionintroduction fundamental problems in networkingfundamental problems in networking communicating reliably over an unreliable communicating reliably over an unreliable

channelchannel congestion and flow controlcongestion and flow control setting up/tearing down a connectionsetting up/tearing down a connection multiplexing and addressingmultiplexing and addressing

Page 2: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

fragmentation and reassemblyfragmentation and reassembly quality of servicequality of service implementation issuesimplementation issues case studies: TCP, UDP, ATM, XTPcase studies: TCP, UDP, ATM, XTPReading:Reading:

Tannenbaum 6.1, 3.3, 3.4, 3.5.1, 6.2, 6.3, 3.2, 6.4, Tannenbaum 6.1, 3.3, 3.4, 3.5.1, 6.2, 6.3, 3.2, 6.4, 6.5 6.5

Ross, Kurose 3.1 - 3.7Ross, Kurose 3.1 - 3.7

Page 3: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Transport Layer: many interesting Transport Layer: many interesting issuesissues

many fundamentally important networking issues many fundamentally important networking issues show up show up

how to provide reliable communication over an unreliable how to provide reliable communication over an unreliable channelchannel

why/how/when should a send restrain itself: flow and why/how/when should a send restrain itself: flow and congestion controlcongestion control

how to agree to communicate (and stop) in presence of how to agree to communicate (and stop) in presence of lost, delayed, reordered messageslost, delayed, reordered messages

how to deal with large data: fragmentation and reassemblyhow to deal with large data: fragmentation and reassembly how to guarantee performance when resources statistically how to guarantee performance when resources statistically

sharedshared

Page 4: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Transport Layer: services providedTransport Layer: services provided end-host to end-host delivery of dataend-host to end-host delivery of data aspects of transport service:aspects of transport service:

error detection and recovery:error detection and recovery: errors (lost or corrupted data) detected at errors (lost or corrupted data) detected at receiver? Detected error corrected?receiver? Detected error corrected?

timing:timing: timing between data at sender preserved when delivered at timing between data at sender preserved when delivered at receiver?receiver?

framing:framing: data unit boundaries (e.g., “message”) preserved? data unit boundaries (e.g., “message”) preserved? common transport service models:common transport service models:

connectionless:connectionless: datagram, no promises, error detection optional, no error datagram, no promises, error detection optional, no error recovery, no timingrecovery, no timing

connection-oriented:connection-oriented: error recovery, no timing error recovery, no timing circuit-like:circuit-like: timing preserved, no error recovery, optional error detection timing preserved, no error recovery, optional error detection

Page 5: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Internet, OSI, ATM service modelsInternet, OSI, ATM service models

Note: why multiple protocols for same service?Note: why multiple protocols for same service? ATM:ATM: OSI:OSI:

network arch. Service protocolsInternet connection-oriented TCP

connectionless UDPOSI connection-oriented TP0, TP1, TP2, TP3, TP4

connectionless CLTPATM circuit-like AAL1

connection-oriented AAL3/4, AAL5, assuredconnectionless AAL3/4, AAL5,

unassured

Page 6: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Reliable Reliable Communication over Communication over an unreliable channelan unreliable channel

Goal:Goal: design a design a simple “reliable” simple “reliable” data transfer data transfer protocol that:protocol that:

reliably delivers data reliably delivers data between upper layer between upper layer applications/protocolsapplications/protocols

uses a network layer uses a network layer that is “unreliable”that is “unreliable”

sendingentity

receivingentity

reliable channel

sending side receiving side

data data

reliable datatransfer protocol

(send side)

unreliable channel

reliable datatransfer protocol

(receive side)

packet packet

rdt_send()deliver_data()

rdt_rcv()udt_send()

sending side receiving side

datadata

Page 7: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Interaction with upper and lower layersInteraction with upper and lower layers

sender upper layersender upper layer: transport layer invoked from : transport layer invoked from above by call to above by call to rdt_send(data)rdt_send(data) rdt:rdt: reliable data transfer reliable data transfer data:data: to be delivered to receiver upper layer to be delivered to receiver upper layer

receiver upper layer:receiver upper layer: transport layer delivers transport layer delivers datadata to to upper layer via call to upper layer via call to deliver_data(data)deliver_data(data)

sender lower layer:sender lower layer: call to call to udt_send(pudt_send(pkkt)t) will pass will pass pktpkt to lower layer to lower layer udt:udt: unreliable data transfer unreliable data transfer

receiver lower layer:receiver lower layer: delivers delivers pktpkt to transport layer to transport layer via call to via call to rdt_rcv(pkt)rdt_rcv(pkt)

Page 8: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Notes:Notes: datadata is unit of data crossing upper boundary is unit of data crossing upper boundary pktpkt is unit of data crossing lower boundary is unit of data crossing lower boundary pktpkt = = datadata with some added fields with some added fields

Page 9: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Reliable data transfer: medium Reliable data transfer: medium assumptionsassumptions

Assumptions about network layer serviceAssumptions about network layer service underlying medium (network) connecting sender and underlying medium (network) connecting sender and

receiver may have many links, routers, networks!receiver may have many links, routers, networks! can packets be lost, corrupted, delayed, reordered by can packets be lost, corrupted, delayed, reordered by

network?network?

A first set of media assumptionsA first set of media assumptions no loss, no corruption, no reorderingno loss, no corruption, no reordering

Page 10: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

sendingentity

receivingentity

reliable channel

sending side receiving side

data data

reliable datatrasfer protocol

(send side)

unreliable channel

reliable datatrasfer protocol(receive side)

packet packet

rdt_send()deliver_data()

rdt_rcv()udt_send()

sending side receiving side

datadata

provided service

service implementation

Page 11: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Reliable data transfer: medium Reliable data transfer: medium assumptionsassumptions

A first try at a protocol (rdt1.0)A first try at a protocol (rdt1.0)

rdt_send(data) rdt_send(data) { { make_packet(pkt,data); make_packet(pkt,data);

udt_send(pkt);udt_send(pkt);

} }

rdt_rcv(pkt) rdt_rcv(pkt) {{extract(pkt,data);extract(pkt,data);

deliver_data(data);deliver_data(data);}}

Page 12: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

How to specify a protocol?How to specify a protocol?

How to describe/specify a protocol?How to describe/specify a protocol? English (why a good/bad idea)?English (why a good/bad idea)? programming language or pseudocode programming language or pseudocode

(good/bad?)(good/bad?) graph-based methods: Petri net models and graph-based methods: Petri net models and

finite state machinesfinite state machines

Page 13: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

A finite state machine (FSM) consists of:A finite state machine (FSM) consists of: set of statesset of states for each protocol entity for each protocol entity

each entity has its each entity has its ownown set of states set of states state “records” all relevant past history of entitystate “records” all relevant past history of entity entity response to each “event” in state must be entity response to each “event” in state must be

uniquely defineduniquely defined

set of labeled directed arcsset of labeled directed arcs between states between states represent changes in staterepresent changes in state arc labeling:arc labeling:

event or action that caused transitionevent or action that caused transitionaction(s) taken on transitionaction(s) taken on transition

Page 14: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

FSM for rdt1.0FSM for rdt1.0

wait forwait forcall fromcall from

aboveabove

rdt_send(data

(a) rdt1.0: sending side (b) rdt1.0: receiving side

wait forwait forcall fromcall from

belowbelow

rdt_rcv(pkt)make_pkt(pkt,data)

udt_send(pkt)extract(pkt,data)deliver_data(data)

Page 15: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

A second set of media assumptionsA second set of media assumptions

packets sent to network can be corrupted but packets sent to network can be corrupted but neither lost nor reorderedneither lost nor reordered

any part of packet can be corruptedany part of packet can be corrupted corrupt(corrupt(pktpkt), notcorrupt(), notcorrupt(pktpkt)) return T if return T if

pkt is (is not) corruptpkt is (is not) corrupt

Questions:Questions: how does rdt1.0 fail under new media assumptions?how does rdt1.0 fail under new media assumptions? new protocol mechanisms required (rdt2.0)new protocol mechanisms required (rdt2.0)

checksumchecksum ACK, NACKACK, NACK

Page 16: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Protocol rdt2.0: senderProtocol rdt2.0: sender

Page 17: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

wait forwait forcall fromcall from

aboveabove

wait forwait forACK orACK or

NAKNAK

rdt_send(data)

rdt_rcv(rcvpkt)

&& isNAK(rcvpkt)

rdt_rcv(rcvpkt)

&& isACK(rcvpkt)data cksum

NAK

ACK

compute checksummake_pkt(pkt,data,cksum))

udt_send(pkt)

udt_send(rcvpkt)

Page 18: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Protocol rdt2.0: receiverProtocol rdt2.0: receiver

Page 19: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

wait forwait forcall fromcall from

belowbelow

extract(rcvpkt,data)

rdt_rcv(rcvpkt)&&corrupt(rcvpkt)

data cksum

NAK

ACK

udt_send(NAK)

deliver_data(data)udt_send(ACK)

rdt_rcv(rcvpkt) &&notcorrupt(rcvpkt)

Page 20: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Q:Q: will rdt2.0 always work given will rdt2.0 always work given assumptions?assumptions?

Page 21: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Protocol rdt2.1Protocol rdt2.1

approaches to fix rdt2.0approaches to fix rdt2.0

1.1.

2.2.

3.3.

Page 22: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Protocol rdt2.1: senderProtocol rdt2.1: sender

Page 23: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control
Page 24: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Protocol rdt2.1: receiverProtocol rdt2.1: receiver

Page 25: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control
Page 26: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

A third set of media assumptionsA third set of media assumptions

packets sent to network layer can be lost, packets sent to network layer can be lost, corrupted, but not reorderedcorrupted, but not reordered

new protocol mechanisms required (rdt3.0):new protocol mechanisms required (rdt3.0):

1.1.

2.2.

3.3.

Page 27: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Protocol rdt3.0: senderProtocol rdt3.0: sender

Page 28: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control
Page 29: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Operation of rdt3.0: no errorsOperation of rdt3.0: no errors

sender receiver

send pkt0rcv pkt0send ACK0

rcv ACK0send pkt1

rcv ACK1send pkt0

rcv pkt0send ACK0

rcv pkt1send ACK1

pkt0

pkt1

pkt0

ACK0

ACK1

ACK0

Page 30: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Operation of rdt3.0: lost packetsOperation of rdt3.0: lost packets

sender receiver

send pkt0

rcv ACK0send pkt1

pkt0

pkt1

ACK0rcv pkt0send ACK0

rcv ACK1send pkt0

rcv pkt0send ACK0

rcv pkt1send ACK1

pkt0

ACK1

ACK0

X

pkt1timeoutresend pkt1

Page 31: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

The Alternating bit protocolThe Alternating bit protocol protocol rdt3.0 known as Alternating Bit (AB) protocolprotocol rdt3.0 known as Alternating Bit (AB) protocol stop and wait ARQstop and wait ARQ

ARQ: automatic repeat/requestARQ: automatic repeat/request

half-duplex-like communicationhalf-duplex-like communication user ofuser of

timerstimers sequence numberssequence numbers error detection bitserror detection bits

required to provide reliable communication in presence of lost required to provide reliable communication in presence of lost or corrupted packetsor corrupted packets

Q:Q: what if channel can what if channel can reorderreorder packets?? packets??

Page 32: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Pipelined error recovery protocolsPipelined error recovery protocols large bandwidth-delay product: propagation delays long with large bandwidth-delay product: propagation delays long with

respect to packet transmission timerespect to packet transmission time e.g.: 1 Gbit/sec link, 1Kbyte packet implies 8 microsecs to e.g.: 1 Gbit/sec link, 1Kbyte packet implies 8 microsecs to

transmit into wiretransmit into wire t_trans = (8Kbits/packet)/(10**9 bits/sec) = 8 microsecst_trans = (8Kbits/packet)/(10**9 bits/sec) = 8 microsecs

cross country speed of light propagation delay is 15 msecscross country speed of light propagation delay is 15 msecs channel utilization: fraction of time sender (channel at sender) is channel utilization: fraction of time sender (channel at sender) is

busy transmittingbusy transmitting U_sender = 0.008msecs/30.016msecs = 0.000266U_sender = 0.008msecs/30.016msecs = 0.000266 sender only busy .02% of time!sender only busy .02% of time! Sender throughput is 266Kbits/sec even with 1G linkSender throughput is 266Kbits/sec even with 1G link

protocol (not channel capacity) constrains performance protocol (not channel capacity) constrains performance (throughput)(throughput)

Page 33: The Transport Layer  introduction  fundamental problems in networking  communicating reliably over an unreliable channel  congestion and flow control

Pipelined error Pipelined error recovery recovery protocolsprotocols

solution to low throughput solution to low throughput with long propagation with long propagation delays: pipelining allow delays: pipelining allow multiple multiple unacknowledged unacknowledged packets to be in-transit packets to be in-transit between sender and between sender and receiverreceiver