Introduction to Computer Networking Guy Leduc Chapter 3...

61
1 © From Computer Networking, by Kurose&Ross Transport Layer 3-1 Introduction to Computer Networking Guy Leduc Chapter 3 Transport Layer Computer Networking: A Top Down Approach, 5 th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009. © From Computer Networking, by Kurose&Ross Transport Layer 3-2 Chapter 3: Transport Layer Our goals: understand principles behind transport layer services: multiplexing/demultipl exing reliable data transfer flow control congestion control learn about transport layer protocols in the Internet: UDP: connectionless transport TCP: connection-oriented transport TCP congestion control

Transcript of Introduction to Computer Networking Guy Leduc Chapter 3...

Page 1: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

1

© From Computer Networking, by Kurose&Ross Transport Layer 3-1

Introduction toComputer Networking

Guy Leduc

Chapter 3Transport Layer Computer Networking:

A Top Down Approach,5th edition.Jim Kurose, Keith RossAddison-Wesley, April2009.

© From Computer Networking, by Kurose&Ross Transport Layer 3-2

Chapter 3: Transport LayerOur goals:❒ understand principles

behind transportlayer services:❍ multiplexing/demultipl

exing❍ reliable data transfer❍ flow control❍ congestion control

❒ learn about transportlayer protocols in theInternet:❍ UDP: connectionless

transport❍ TCP: connection-oriented

transport❍ TCP congestion control

Page 2: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

2

© From Computer Networking, by Kurose&Ross Transport Layer 3-3

Chapter 3 outline

❒ 3.1 Transport-layerservices

❒ 3.2 Multiplexing anddemultiplexing

❒ 3.3 Connectionlesstransport: UDP

❒ 3.4 Principles ofreliable data transfer

❒ 3.5 Connection-orientedtransport: TCP❍ segment structure❍ reliable data transfer❍ flow control❍ connection management

❒ 3.6 Principles ofcongestion control

❒ 3.7 TCP congestioncontrol

© From Computer Networking, by Kurose&Ross Transport Layer 3-4

Transport services and protocols❒ provide logical communication

between app processesrunning on different hosts

❒ transport protocols run in endsystems❍ send side: breaks app

messages into segments,passes to network layer

❍ rcv side: reassemblessegments into messages,passes to app layer

❒ more than one transportprotocol available to apps❍ Internet: TCP and UDP

applicationtransportnetworkdata linkphysical

applicationtransportnetworkdata linkphysical

logical end-end transport

Page 3: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

3

© From Computer Networking, by Kurose&Ross Transport Layer 3-5

Transport vs. network layer

❒ network layer: logicalcommunicationbetween hosts

❒ transport layer: logicalcommunicationbetween processes❍ relies on, enhances,

network layer services

Household analogy:(see example in reference

book)12 kids sending letters to 12

kids❒ processes = kids❒ app messages = letters in

envelopes❒ hosts = houses❒ transport protocol = Ann

and Bill❒ network-layer protocol =

postal service

© From Computer Networking, by Kurose&Ross Transport Layer 3-6

Internet transport-layer protocols

❒ reliable, in-orderdelivery (TCP)❍ congestion control❍ flow control❍ connection setup

❒ unreliable, unordereddelivery: 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: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

4

© From Computer Networking, by Kurose&Ross Transport Layer 3-7

Chapter 3 outline

❒ 3.1 Transport-layerservices

❒ 3.2 Multiplexing anddemultiplexing

❒ 3.3 Connectionlesstransport: UDP

❒ 3.4 Principles ofreliable data transfer

❒ 3.5 Connection-orientedtransport: TCP❍ segment structure❍ reliable data transfer❍ flow control❍ connection management

❒ 3.6 Principles ofcongestion control

❒ 3.7 TCP congestioncontrol

© From Computer Networking, by Kurose&Ross Transport Layer 3-8

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: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

5

© From Computer Networking, by Kurose&Ross Transport Layer 3-9

How demultiplexing works❒ host receives IP datagrams

❍ each datagram has sourceIP address, destination IPaddress

❍ each datagram carries 1transport-layer segment

❍ each segment has source,destination port number

❒ host uses IP addresses & portnumbers to direct segment toappropriate socket

source port # dest port #

32 bits

applicationdata

(message)

other header fields

TCP/UDP segment format

© From Computer Networking, by Kurose&Ross Transport Layer 3-10

Connectionless demultiplexing

❒ Create sockets with portnumbers:

DatagramSocket mySocket1 = newDatagramSocket(12534);

DatagramSocket mySocket2 = newDatagramSocket(12535);

❒ UDP socket identified bytwo-tuple:

(dest IP address, dest port number)

❒ When host receives UDPsegment:❍ checks destination port

number in segment❍ directs UDP segment (+

source IP) to socket withthat port number

❒ IP datagrams withdifferent source IPaddresses and/or sourceport numbers directedto same socket

Page 6: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

6

© From Computer Networking, by Kurose&Ross Transport Layer 3-11

Connectionless demux (cont)

DatagramSocket serverSocket = new DatagramSocket(6428);

ClientIP:B

P2

client IP: A

P1P1P3

serverIP: C

SP: 6428DP: 9157

SP: 9157DP: 6428

SP: 6428DP: 5775

SP: 5775DP: 6428

SP (together with Source IP) provides “return address” to app process

© From Computer Networking, by Kurose&Ross Transport Layer 3-12

Connection-oriented demux

❒ TCP socket identifiedby 4-tuple:❍ source IP address❍ source port number❍ dest IP address❍ dest port number

❒ recv host uses all fourvalues to directsegment to appropriatesocket

❒ Server host may supportmany simultaneous TCPsockets:❍ each socket identified by

its own 4-tuple❒ Web servers have

different sockets foreach connecting client❍ non-persistent HTTP will

have different socket foreach request

Page 7: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

7

© From Computer Networking, by Kurose&Ross Transport Layer 3-13

Connection-oriented demux(cont)

ClientIP: B

P1

client IP: A

P1P2P4

serverIP: C

SP: 9157DP: 80

SP: 9157DP: 80

P5 P6 P3

D-IP:CS-IP: AD-IP:C

S-IP: B

SP: 5775DP: 80

D-IP:CS-IP: B

© From Computer Networking, by Kurose&Ross Transport Layer 3-14

Connection-oriented demux:Threaded Web Server

ClientIP: B

P1

client IP: A

P1P2

serverIP: C

SP: 9157DP: 80

SP: 9157DP: 80

P4 P3

D-IP:CS-IP: AD-IP:C

S-IP: B

SP: 5775DP: 80

D-IP:CS-IP: B

Page 8: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

8

© From Computer Networking, by Kurose&Ross Transport Layer 3-15

Chapter 3 outline

❒ 3.1 Transport-layerservices

❒ 3.2 Multiplexing anddemultiplexing

❒ 3.3 Connectionlesstransport: UDP

❒ 3.4 Principles ofreliable data transfer

❒ 3.5 Connection-orientedtransport: TCP❍ segment structure❍ reliable data transfer❍ flow control❍ connection management

❒ 3.6 Principles ofcongestion control

❒ 3.7 TCP congestioncontrol

© From Computer Networking, by Kurose&Ross Transport Layer 3-16

UDP: User Datagram Protocol [RFC 768]

❒ “no frills,” “bare bones”Internet transportprotocol

❒ “best effort” service, UDPsegments may be:❍ lost❍ delivered out of order

to app❒ connectionless:

❍ no handshaking betweenUDP sender, receiver

❍ each UDP segmenthandled independentlyof others

Why is there a UDP?❒ no connection

establishment (which canadd delay)

❒ simple: no connection stateat sender, receiver

❒ small segment header❒ no congestion control: UDP

can blast away as fast asdesired

Page 9: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

9

© From Computer Networking, by Kurose&Ross Transport Layer 3-17

UDP: more❒ often used for streaming

multimedia apps❍ loss tolerant❍ rate sensitive

❒ other UDP uses❍ DNS❍ SNMP

❒ reliable transfer over UDP:add reliability atapplication layer❍ application-specific

error recovery!

source port # dest port #

32 bits

Applicationdata

(message)

UDP segment format

length checksumLength, in

bytes of UDPsegment,including

header

© From Computer Networking, by Kurose&Ross Transport Layer 3-18

UDP checksum

Sender:❒ treat segment contents as

sequence of 16-bitintegers

❒ checksum: addition (1’scomplement sum) ofsegment contents

❒ sender puts checksumvalue into UDP checksumfield

Receiver:❒ compute checksum of

received segment❒ check if computed checksum

equals checksum field value:❍ NO - error detected❍ YES - no error detected.

But maybe errorsnonetheless? More later….

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

Page 10: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

10

© From Computer Networking, by Kurose&Ross Transport Layer 3-19

Internet Checksum Example❒ Note

❍ When adding numbers, a carryout from themost significant bit needs to be added to theresult

❒ 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

© From Computer Networking, by Kurose&Ross Transport Layer 3-20

Chapter 3 outline

❒ 3.1 Transport-layerservices

❒ 3.2 Multiplexing anddemultiplexing

❒ 3.3 Connectionlesstransport: UDP

❒ 3.4 Principles ofreliable data transfer

❒ 3.5 Connection-orientedtransport: TCP❍ segment structure❍ reliable data transfer❍ flow control❍ connection management

❒ 3.6 Principles ofcongestion control

❒ 3.7 TCP congestioncontrol

Page 11: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

11

© From Computer Networking, by Kurose&Ross Transport Layer 3-21

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

❒ characteristics of unreliable channel will determinecomplexity of reliable data transfer protocol (rdt)

© From Computer Networking, by Kurose&Ross Transport Layer 3-22

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

❒ characteristics of unreliable channel will determinecomplexity of reliable data transfer protocol (rdt)

Page 12: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

12

© From Computer Networking, by Kurose&Ross Transport Layer 3-23

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

❒ characteristics of unreliable channel will determinecomplexity of reliable data transfer protocol (rdt)

© From Computer Networking, by Kurose&Ross Transport Layer 3-24

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 packetarrives on rcv-side of channel

deliver_data(): called byrdt to deliver data to upper

Page 13: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

13

© From Computer Networking, by Kurose&Ross Transport Layer 3-25

Reliable data transfer: getting startedWe’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 determinedby next event

eventactions

© From Computer Networking, by Kurose&Ross Transport Layer 3-26

Rdt1.0: reliable transfer over a reliable channel

❒ underlying channel perfectly reliable❍ no bit errors❍ no loss of packets

❒ separate FSMs for sender, receiver:❍ sender sends data into underlying channel❍ receiver reads data from underlying channel

Wait forcall fromabove packet = make_pkt(data)

udt_send(packet)

rdt_send(data)data = extract (packet)deliver_data(data)

Wait forcall from

below

rdt_rcv(packet)

sender receiver

Page 14: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

14

© From Computer Networking, by Kurose&Ross Transport Layer 3-27

Rdt2.0: channel with bit errors❒ underlying channel may flip bits in packet

❍ checksum to detect bit errors❒ the question: how to recover from errors:

❍ acknowledgements (ACKs): receiver explicitlytells sender that pkt received OK

❍ negative acknowledgements (NAKs): receiverexplicitly tells sender that pkt had errors

❍ sender retransmits pkt on receipt of NAK❒ new mechanisms in rdt2.0 (beyond

rdt1.0):❍ error detection❍ receiver feedback: control msgs (ACK,NAK)

rcvr->sender

pkt A

pkt B

pkt B

ACK

NAK

ACK OK

Error

OK

© From Computer Networking, by Kurose&Ross Transport Layer 3-28

rdt2.0: FSM specification

Wait forcall fromabove

sndpkt = make_pkt(data, checksum)udt_send(sndpkt)

data = extract(rcvpkt)deliver_data(data)udt_send(ACK)

rdt_rcv(rcvpkt) && not corrupt(rcvpkt)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) && isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Wait forACK or

NAK

Wait forcall from

belowsender

receiverrdt_send(data)

Λ

Page 15: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

15

© From Computer Networking, by Kurose&Ross Transport Layer 3-29

rdt2.0: operation with no errors

Wait forcall fromabove

snkpkt = make_pkt(data, checksum)udt_send(sndpkt)

extract(rcvpkt,data)deliver_data(data)udt_send(ACK)

rdt_rcv(rcvpkt) && not corrupt(rcvpkt)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) && isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Wait forACK or

NAK

Wait forcall from

below

rdt_send(data)

Λ

© From Computer Networking, by Kurose&Ross Transport Layer 3-30

rdt2.0: error scenario

Wait forcall fromabove

snkpkt = make_pkt(data, checksum)udt_send(sndpkt)

extract(rcvpkt,data)deliver_data(data)udt_send(ACK)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) && isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Wait forACK or

NAK

Wait forcall from

below

rdt_send(data)

Λ

Page 16: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

16

© From Computer Networking, by Kurose&Ross Transport Layer 3-31

rdt2.0 has a fatal flaw!What happens if ACK/NAK

corrupted?❒ garbled ACK/NAK detected by

checksum too❒ garbled ACK/NAK discarded❒ sender doesn’t know what

happened at receiver!❒ can’t just retransmit: possible

duplicate

Handling duplicates:❒ sender retransmits current

pkt if ACK/NAK garbled❒ sender adds sequence

number to each pkt❒ receiver discards (doesn’t

deliver up) duplicate pkt

Sender sends one packet, then waits for receiver response

stop and waitpkt

same pkt

garbled ACK

Duplicate!

OK

© From Computer Networking, by Kurose&Ross Transport Layer 3-32

rdt2.1: sender, handles garbled ACK/NAKs

Wait forcall 0 from

above

sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)

rdt_send(data)

Wait forACK orNAK 0 udt_send(sndpkt)

rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||isNAK(rcvpkt) )

sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt)&& not corrupt(rcvpkt)&& isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||isNAK(rcvpkt) )

rdt_rcv(rcvpkt)&& not corrupt(rcvpkt)&& isACK(rcvpkt)

Wait for call 1 from

above

Wait forACK orNAK 1

ΛΛ

Page 17: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

17

© From Computer Networking, by Kurose&Ross Transport Layer 3-33

rdt2.1: receiver, handles garbled ACK/NAKs

Wait for0 frombelow

sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt)

rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt)

data = extract(rcvpkt)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)

Wait for1 frombelow

rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt)

data = extract(rcvpkt)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)

sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)

Note: receiver sends ACK in this case.

Why?

© From Computer Networking, by Kurose&Ross Transport Layer 3-34

rdt2.1: discussion

Sender:❒ seq # added to pkt❒ two seq. #’s (0,1) will

suffice. Why?❒ must check if received

ACK/NAK corrupted❒ twice as many states

❍ state must “remember”whether “current” pkthas 0 or 1 seq. #

Receiver:❒ must check if received

packet is duplicate❍ state indicates whether

0 or 1 is expected pktseq #

Page 18: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

18

© From Computer Networking, by Kurose&Ross Transport Layer 3-35

rdt3.0: channels with errors and loss

New assumption:underlying channel canalso lose packets (dataor ACKs)❍ checksum, seq. #, ACKs,

retransmissions will beof help, but not enough

Approach: sender waits“reasonable” amount oftime for ACK

❒ retransmits if no ACKreceived in this time

❒ requires countdown timer

pkt(0)

pkt(0)ACK

Timeout

pkt(0)

pkt(0)ACK

ACKTimeout Discard but ACK!

No duplicate

X X

© From Computer Networking, by Kurose&Ross Transport Layer 3-36

Rdt3.0: actually no need for NAKs!❒ Up to now:

❍ Timer for packet loss❍ NAK for packet errors

❒ Simpler:❍ Timer for both packet loss

and errors!❒ NAK would improve

recovery time, but it’s notour concern here!

pkt(0)

pkt(1)

pkt(1)

ACK

NAK

ACK

With ACKs & NAKs

pkt(0)

pkt(1)

pkt(1)

ACK

ACK

With ACKs only

Timeout

OK

OK

Error

OK

OK

Error

Page 19: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

19

© From Computer Networking, by Kurose&Ross Transport Layer 3-37

Flaw: Delayed packets or ACKs❒ If pkt (or ACK) just delayed (not lost):

❍ retransmission will be duplicate, butuse of seq. #’s already handles this

pkt(0)

pkt(0)

ACK

pkt(0)

pkt(1)ACK

ACKDiscard (no dupl)Resend ACK

❒ However, raceconditions arepossible between thereceived ACK and theretransmitted packet!

Discard again,Still expects #1!

B ACKedbut lost!

C ACKedbut lost!

X

Timeout

A

B

C

A received

B not recovered

C not recovered

Note: such race conditions are only possible over full-duplex channels

© From Computer Networking, by Kurose&Ross Transport Layer 3-38

Fixing rdt3.0

❒ receiver must specify seq # of pkt being ACKed

pkt(0)

pkt(0)

ACK

pkt(1)

pkt(1)ACK(0)

ACK(0)Discard (no dupl)Resend ACK

B notACKed

X

Timeout

A

B

A received

B recoveredTimeout

Page 20: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

20

© From Computer Networking, by Kurose&Ross Transport Layer 3-39

rdt3.0 sendersndpkt = make_pkt(0, data, chksum)udt_send(sndpkt)start_timer

rdt_send(data)

Waitfor

ACK0

rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||isACK(rcvpkt,1) )

Wait forcall 1 from

above

sndpkt = make_pkt(1, data, chksum)udt_send(sndpkt)start_timer

rdt_send(data)

rdt_rcv(rcvpkt)&& not corrupt(rcvpkt)&& isACK(rcvpkt,0)

rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||isACK(rcvpkt,0) )

rdt_rcv(rcvpkt)&& not corrupt(rcvpkt)&& isACK(rcvpkt,1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(sndpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Wait forcall 0from

above

Waitfor

ACK1

Λrdt_rcv(rcvpkt)

ΛΛ

Λ

© From Computer Networking, by Kurose&Ross Transport Layer 3-40

rdt3.0 = Alternating-bit protocol(1969)

Page 21: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

21

© From Computer Networking, by Kurose&Ross Transport Layer 3-41

rdt3.0 in action (2)

© From Computer Networking, by Kurose&Ross Transport Layer 3-42

rdt3.0 still incorrect if pkt or ACKreordering is possible

pkt(0)

pkt(0)

ACK(0)

pkt(1)

ACK(0)

ACK(1)

Timeouton pkt(0)

Duplicate!Consideredas new pkt(0)!pkt(0)pkt(0)

ACKedbut lost!

pkt reordering

Solution: Choose timeout so large that when a pkt is retransmitted the sender is surethat the previous copy of this pkt and its ACK have disappeared from the network.Better solution: Use a much larger seq# space (see later).

X

Can be arbitrarily small

Page 22: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

22

© From Computer Networking, by Kurose&Ross Transport Layer 3-43

Performance of rdt3.0:stop-and-wait operation

first packet bit transmitted, t = 0

sender receiver

RTT

last packet bit transmitted, t = L / R

first packet bit arriveslast packet bit arrives, sendACK

ACK arrives, send nextpacket, t = RTT + L / R

!

Usender

=

LR

RTT + LR

=1

1+R " RTT

L

R . RTT/2 = Bandwidth-delay product= “in-flight” bits

U sender: utilization = fraction of time sender busy sending

© From Computer Networking, by Kurose&Ross Transport Layer 3-44

Performance of rdt3.0❒ Was OK over local low-speed networks, but…❒ Example: 1 Gbps link, 15 ms end-to-end prop. delay, 1KB packet:

Ttransmit = 8kb10**9 bps = 8 µsec

U sender

= .008

30.008 = 0.00027

microsec

onds

L / R

RTT + L / R =

L (packet length in bits)R (transmission rate, bps) =

❍ 1KB pkt every 30 msec -> 33kB/sec throughput over 1 Gbps link❍ network protocol limits use of physical resources!

Page 23: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

23

© From Computer Networking, by Kurose&Ross Transport Layer 3-45

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

© From Computer Networking, by Kurose&Ross Transport Layer 3-46

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 nextpacket, 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

microsecon

ds

3 * L / R

RTT + L / R =

Increase utilizationby a factor of 3!

Page 24: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

24

© From Computer Networking, by Kurose&Ross Transport Layer 3-47

Pipelining Protocols

Go-back-N: overview❒ sender: up to N

unACKed pkts inpipeline

❒ receiver: only sendscumulative ACKs❍ doesn’t ACK pkt if

there’s a gap❒ sender: has timer for

oldest unACKed pkt❍ if timer expires:

retransmit all unACKedpackets

Selective Repeat: overview❒ sender: up to N unACKed

packets in pipeline❒ receiver: ACKs individual

pkts❒ sender: maintains timer

for each unACKed pkt❍ if timer expires: retransmit

only unACKed packet

© From Computer Networking, by Kurose&Ross Transport Layer 3-48

Go-Back-N (GBN)Sender:❒ k-bit seq # in pkt header❒ “window” of up to N, consecutive unack’ed pkts allowed

❒ ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK”❍ may receive duplicate ACKs (see receiver)

❒ single timer: conceptually on the oldest transmitted and unack’ed pkt❒ timeout: retransmit all pkts in window

Page 25: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

25

© From Computer Networking, by Kurose&Ross Transport Layer 3-49

GBN: sender extended FSM

Wait start_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])…udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ }else refuse_data(data)

base = getacknum(rcvpkt)+1If (base == nextseqnum) stop_timer else start_timer

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

base=1nextseqnum=1

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Λ

Λ

© From Computer Networking, by Kurose&Ross Transport Layer 3-50

GBN: receiver extended FSM

ACK-only: always send ACK for correctly-received pktwith highest in-order seq #❍ may generate duplicate ACKs❍ need only remember expectedseqnum

❒ out-of-order pkt:❍ discard (don’t buffer) -> no receiver buffering!❍ Re-ACK pkt with highest in-order seq #

Wait

udt_send(sndpkt)default

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum)

data = extract(rcvpkt)deliver_data(data)sndpkt = make_pkt(expectedseqnum,ACK,chksum)udt_send(sndpkt)expectedseqnum++

expectedseqnum=1sndpkt = make_pkt(0,ACK,chksum)

Λ

Page 26: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

26

© From Computer Networking, by Kurose&Ross Transport Layer 3-51

GBN inaction

Window size (N) = 4

© From Computer Networking, by Kurose&Ross Transport Layer 3-52

Maximum window size with GBN❒ If seq# size = K (“The modulo”)❒ Q: What is the maximum window size N?

01234567012

3

ACK2

DiscardACK2

01234567012

3

ACK2

ACK2

Suppose K = 8, N =8No pkt loss

W=[3..2] W=[3..2]

With pkt loss:For sender: same view

For receiver: different view!

XX

XXXXX

Page 27: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

27

© From Computer Networking, by Kurose&Ross Transport Layer 3-53

GBN: maximum window size❒ Constraint:

❍ window size (N) ≤ seq# size (K) - 1

0123456701

resend 3resend 4…

ACK2

DiscardACK2

W=[3..1]

XXXXX

X

© From Computer Networking, by Kurose&Ross Transport Layer 3-54

Selective Repeat

❒ receiver individually acknowledges all correctlyreceived pkts❍ buffers pkts, as needed, for eventual in-order delivery

to upper layer❒ sender only resends pkts for which ACK not

received❍ sender timer for each unACKed pkt

❒ sender window❍ N consecutive seq #’s❍ again limits seq #s of sent, unACKed pkts

Page 28: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

28

© From Computer Networking, by Kurose&Ross Transport Layer 3-55

Selective repeat: sender, receiver windows

© From Computer Networking, by Kurose&Ross Transport Layer 3-56

Selective repeat

data from above :❒ if next available seq # in

window, send pkttimeout(n):❒ resend pkt n, restart timerACK(n) in [sendbase,sendbase+N-1]:

❒ mark pkt n as received❒ if n smallest unACKed pkt,

advance window base to nextunACKed seq #

senderpkt n in [rcvbase, rcvbase+N-1]

❒ send ACK(n)❒ out-of-order: buffer❒ in-order: deliver (also

deliver buffered, in-orderpkts), advance window tonext not-yet-received pkt

pkt n in [rcvbase-N,rcvbase-1]

❒ ACK(n)otherwise:❒ ignore

receiver

Page 29: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

29

© From Computer Networking, by Kurose&Ross Transport Layer 3-57

Selective repeat in action

© From Computer Networking, by Kurose&Ross Transport Layer 3-58

Selective repeat: dilemmaExample:❒ seq #’s: 0, 1, 2, 3❒ window size=3

❒ receiver sees nodifference in twoscenarios!

❒ incorrectly passesduplicate data as newin (a)

Q: what relationshipbetween seq # sizeand window size?

Page 30: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

30

© From Computer Networking, by Kurose&Ross Transport Layer 3-59

Maximum window size withselective repeat❒ If seq# size = K (“The modulo”)❒ Q: What is the maximum window size N?❒ A: N ≤ K/2

(a) Initial situation with a window of size N=3. (b) After 3 frames have been sent and received but not ACK’ed.

The upper side of the rec window falls in the sending window(c) Initial situation with a window of size N=2. (d) After 2 frames sent and received but not ACK’ed.

The upper side of the rec window does not fall in the sending window

Sender 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3

Receiver 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3

(a) (b) (c) (d)

Suppose K = 4, N =3 K = 4, but N =2

Retransmission of received pkts fall

outside rec window

© From Computer Networking, by Kurose&Ross Transport Layer 3-60

Maximum window size:general principle❒ Notations:

❍ seq# space = [0..K-1], i.e. modulo K❍ Maximum sender window size = Ns❍ Maximum receiver window size = Nr

❒ Requirement:❍ Ns + Nr ≤ K

❒ Particular cases:❍ GBN: Nr = 1, Ns ≤ K - 1❍ Selective repeat: Ns = Nr ≤ K/2❍ Alternating-bit: K = 2, Ns = Nr = 1

• Special case of both GBN and Selective Repeat

Page 31: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

31

© From Computer Networking, by Kurose&Ross Transport Layer 3-61

Chapter 3 outline

❒ 3.1 Transport-layerservices

❒ 3.2 Multiplexing anddemultiplexing

❒ 3.3 Connectionlesstransport: UDP

❒ 3.4 Principles ofreliable data transfer

❒ 3.5 Connection-orientedtransport: TCP❍ segment structure❍ reliable data transfer❍ flow control❍ connection management

❒ 3.6 Principles ofcongestion control

❒ 3.7 TCP congestioncontrol

© From Computer Networking, by Kurose&Ross Transport Layer 3-62

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

❒ full duplex data:❍ bi-directional data flow

in same connection❍ MSS: maximum segment

size❒ connection-oriented:

❍ handshaking (exchangeof control msgs) init’ssender, receiver statebefore data exchange

❒ flow controlled:❍ sender will not

overwhelm receiver

❒ point-to-point:❍ one sender, one receiver

❒ reliable, in-order bytestream:❍ no “message boundaries”

❒ pipelined:❍ TCP congestion and flow

control set window size❒ send & receive buffers

socket

door

TCP

send buffer

TCP

receive buffer

socket

door

segment

application

writes data

application

reads data

Page 32: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

32

© From Computer Networking, by Kurose&Ross Transport Layer 3-63

TCP segment structure

source port # dest port #

32 bits

applicationdata

(variable length)

sequence numberacknowledgement number

Receive windowUrg data pnterchecksum

FSRPAUheadlen

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)

© From Computer Networking, by Kurose&Ross Transport Layer 3-64

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

❍ byte stream“number” of firstbyte in segment’sdata

ACKs:❍ seq # of next byte

expected fromother side

❍ cumulative ACKQ: how receiver handles

out-of-order segments❍ A: TCP spec doesn’t

say, - up toimplementer

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’, echoes

back ‘C’

timesimple telnet scenario

Page 33: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

33

© From Computer Networking, by Kurose&Ross Transport Layer 3-65

TCP Round Trip Time and TimeoutQ: 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

0 1 2 3 4 5RTT (msec)

T

0

0.1

0.2

0.3

Prob.density

0

0.1

0.2

0.3

Prob.density

0 10 20 30 40 50RTT (msec)

T1 T2

Over a link

Over a network

From Computer Networks, by Tanenbaum © Prentice Hall

© From Computer Networking, by Kurose&Ross Transport Layer 3-66

TCP Round Trip Time and Timeout

EstimatedRTT = (1-α)*EstimatedRTT + α*SampleRTT

❒ Exponential weighted moving average❒ Influence of past sample decreases exponentially fast❒ Typical value: α = 0.125

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 34: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

34

© From Computer Networking, by Kurose&Ross Transport Layer 3-67

Example RTT estimation:RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

RT

T (

mil

lise

con

ds)

SampleRTT Estimated RTT

© From Computer Networking, by Kurose&Ross Transport Layer 3-68

TCP Round Trip Time and TimeoutSetting the timeout❒ EstimatedRTT plus “safety margin”

❍ large variation in EstimatedRTT -> larger safety margin❒ first estimate of how much SampleRTT deviates from

EstimatedRTT:

TimeoutInterval = EstimatedRTT + 4*DevRTT

DevRTT = (1-β)*DevRTT + β*|SampleRTT-EstimatedRTT|

(typically, β = 0.25)

Then set timeout interval:

Page 35: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

35

© From Computer Networking, by Kurose&Ross Transport Layer 3-69

Chapter 3 outline

❒ 3.1 Transport-layerservices

❒ 3.2 Multiplexing anddemultiplexing

❒ 3.3 Connectionlesstransport: UDP

❒ 3.4 Principles ofreliable data transfer

❒ 3.5 Connection-orientedtransport: TCP❍ segment structure❍ reliable data transfer❍ flow control❍ connection management

❒ 3.6 Principles ofcongestion control

❒ 3.7 TCP congestioncontrol

© From Computer Networking, by Kurose&Ross Transport Layer 3-70

TCP reliable data transfer

❒ TCP creates rdtservice on top of IP’sunreliable service

❒ Pipelined segments❒ Cumulative acks❒ TCP uses single

retransmission timer

❒ Retransmissions aretriggered by:❍ timeout events❍ duplicate acks

❒ Initially considersimplified TCP sender:❍ ignore duplicate acks❍ ignore flow control,

congestion control

Page 36: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

36

© From Computer Networking, by Kurose&Ross Transport Layer 3-71

TCP sender events:data rcvd from app:❒ Create segment with

seq #❒ seq # is byte-stream

number of first databyte in segment

❒ start timer if notalready running (thinkof timer as for oldestunacked segment)

❒ expiration interval:TimeOutInterval

timeout:❒ retransmit segment

that caused timeout❒ restart timer Ack rcvd:❒ If acknowledges

previously unackedsegments❍ update what is known to

be acked❍ start timer if there are

outstanding segments

© From Computer Networking, by Kurose&Ross Transport Layer 3-72

TCPsender(simplified)

NextSeqNum = InitialSeqNum SendBase = InitialSeqNum

loop (forever) { switch(event)

event: data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(data)

event: timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer

event: ACK received, with ACK field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } } /* end of loop forever */

Comment:• SendBase-1: last cumulatively ack’ed byteExample:• SendBase-1 = 71;y= 73, so the rcvrwants 73+ ;y > SendBase, sothat new data is acked

Page 37: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

37

© From Computer Networking, by Kurose&Ross Transport Layer 3-73

TCP: retransmission scenariosHost A

Seq=100, 20 bytes data

ACK=100

timepremature timeout

Host B

Seq=92, 8 bytes data

ACK=120

Seq=92, 8 bytes data

Seq=

92 t

imeo

ut

ACK=120

Host A

Seq=92, 8 bytes data

ACK=100

loss

tim

eout

lost ACK scenario

Host B

X

Seq=92, 8 bytes data

ACK=100

time

SendBase= 100

SendBase = 120

Sendbase = 100Timer start

Sendbase = 92

Timer start

© From Computer Networking, by Kurose&Ross Transport Layer 3-74

TCP retransmission scenarios (more)Host A

Seq=92, 8 bytes data

ACK=100

loss

tim

eout

Cumulative ACK scenario

Host B

X

Seq=100, 20 bytes data

ACK=120

time

SendBase= 120

Page 38: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

38

© From Computer Networking, by Kurose&Ross Transport Layer 3-75

TCP ACK generation [RFC 1122, RFC 2581]

Event at Receiver

Arrival of in-order segment withexpected seq #. All data up toexpected seq # already ACKed

Arrival of in-order segment withexpected seq #. One other segment has ACK pending

Arrival of out-of-order segmenthigher-than-expect seq. # .Gap detected

Arrival of segment that partially or completely fills gap

TCP Receiver action

Delayed ACK. Wait up to 500msfor next segment. If no next segment,send ACK

Immediately send single cumulative ACK, ACKing both in-order segments

Immediately send duplicate ACK, indicating seq. # of next expected byte

Immediate send ACK, provided thatsegment starts at lower end of gap

© From Computer Networking, by Kurose&Ross Transport Layer 3-76

Fast Retransmit

❒ Time-out period oftenrelatively long:❍ long delay before

resending lost packet❒ Detect lost segments

via duplicate ACKs:❍ Sender often sends

many segments back-to-back

❍ If segment is lost,there will likely be manyduplicate ACKs for thatsegment.

❒ If sender receives 3ACKs for the samedata, it supposes thatsegment after ACKeddata was lost:❍ fast retransmit: resend

segment before timerexpires

Page 39: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

39

© From Computer Networking, by Kurose&Ross Transport Layer 3-77

Host A

tim

eout

Host B

time

X

resend seq # x2

seq # x1seq # x2seq # x3seq # x4seq # x5

ACK x2

ACK x2ACK x2ACK x2

tripleduplicate

ACKs

= Waiting for byte x2

© From Computer Networking, by Kurose&Ross Transport Layer 3-78

event: ACK received, with ACK field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } else { increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) { resend segment with sequence number y }

Fast retransmit algorithm:

a duplicate ACK for already ACKed segment

fast retransmit

Page 40: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

40

© From Computer Networking, by Kurose&Ross Transport Layer 3-79

Chapter 3 outline

❒ 3.1 Transport-layerservices

❒ 3.2 Multiplexing anddemultiplexing

❒ 3.3 Connectionlesstransport: UDP

❒ 3.4 Principles ofreliable data transfer

❒ 3.5 Connection-orientedtransport: TCP❍ segment structure❍ reliable data transfer❍ flow control❍ connection management

❒ 3.6 Principles ofcongestion control

❒ 3.7 TCP congestioncontrol

© From Computer Networking, by Kurose&Ross Transport Layer 3-80

TCP Flow Control

❒ receive side of TCPconnection has areceive buffer:

❒ speed-matchingservice: matchingsend rate to receivingapplication’s drain rate

❒ app process may beslow at reading frombuffer

sender won’t overflowreceiver’s buffer by

transmitting too much, too fast

flow control

IPdatagrams

TCP data(in buffer)

(currently)unused buffer

space

applicationprocess

Page 41: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

41

© From Computer Networking, by Kurose&Ross Transport Layer 3-81

TCP Flow control: how it works

(suppose TCP receiverdiscards out-of-ordersegments)

❒ unused buffer space:= rwnd= RcvBuffer-[LastByteRcvd -

LastByteRead]

❒ receiver: advertisesunused buffer space byincluding rwnd value insegment header

❒ sender: limits # ofunACKed bytes to rwnd❍ guarantees receiver’s

buffer doesn’t overflow

IPdatagrams

TCP data(in buffer)

(currently)unused buffer

space

applicationprocess

rwndRcvBuffer

© From Computer Networking, by Kurose&Ross Transport Layer 3-82

Nagle algorithm❒ When data come in from socket one byte at the

time❍ send first byte and buffer all the rest until the

outstanding byte is acknowledged❍ sends other segments as one per RTT

❒ Useful for Telnet❍ Otherwise:❍ 41 bytes segments containing 1 byte of data❍ 40 bytes of TCP/IP header overhead

Page 42: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

42

© From Computer Networking, by Kurose&Ross Transport Layer 3-83

Silly window syndrome

Receiverʼs buffer is full

Application reads 1 byte

Window update segment sent

New byte arrives

Receiverʼs buffer is full

Header

Header

Room for one more byte

1 Byte

Still a problemwith applicationsreading one byteat a time

Clark's solution: receiver sends a windowupdate only if the buffer is half empty, or if a full segment can be received

From Computer Networks, by Tanenbaum © Prentice Hall

© From Computer Networking, by Kurose&Ross Transport Layer 3-84

Chapter 3 outline

❒ 3.1 Transport-layerservices

❒ 3.2 Multiplexing anddemultiplexing

❒ 3.3 Connectionlesstransport: UDP

❒ 3.4 Principles ofreliable data transfer

❒ 3.5 Connection-orientedtransport: TCP❍ segment structure❍ reliable data transfer❍ flow control❍ connection management

❒ 3.6 Principles ofcongestion control

❒ 3.7 TCP congestioncontrol

Page 43: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

43

© From Computer Networking, by Kurose&Ross Transport Layer 3-85

TCP Connection ManagementRecall:

TCP sender, receiver establish “connection” beforeexchanging 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();

© From Computer Networking, by Kurose&Ross Transport Layer 3-86

Three-way handshakeStep 1: client host sends TCP SYN

segment to server❍ specifies initial seq #❍ no data❍ starts timer for SYN

retransmissionStep 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

client

SYN (seq=x)

server

SYNACK (seq=y, ack=x+1)

ACK (seq=x+1, ack=y+1)

connectlisten

+ accept

connected

connected

If server port not open, TCP server sends back a RST segment

Page 44: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

44

© From Computer Networking, by Kurose&Ross Transport Layer 3-87

TCP Connection Management (cont.)Closing a connection:client closes socket:

clientSocket.close();

Step 1: client end-system sendsTCP FIN control segment toserver

Step 2: server receives FIN,replies with ACK. When alldata sent, closes connection,sends FIN

Note: two directions closedseparately

Symmetric/graceful release

client

FIN

server

ACK

ACK

FIN

close

close

closed

tim

ed w

ait

© From Computer Networking, by Kurose&Ross Transport Layer 3-88

TCP Connection Management (cont.)Step 3: client receives FIN,

replies with ACK.

❍ Enters “timed wait” - willrespond with ACK toreceived FINs

Step 4: server, receives ACK.Connection closed.

FINs have seq#, like datasegments

Can recover loss of lastdata bytes

Note: with small modification, canhandle simultaneous FINs.

client

FIN

server

ACK

ACK

FIN

closing

closing

closed

tim

ed w

ait

closed

Page 45: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

45

© From Computer Networking, by Kurose&Ross Transport Layer 3-89

TCP Connection Management (cont)

TCP clientlifecycle

TCP serverlifecycle

© From Computer Networking, by Kurose&Ross Transport Layer 3-90

Choosing initial seq#❒ Consider choosing x❒ Constraint: x not used

recently in a formerconnection by this client (i.e.same port#) to send TCPsegments to this server(same port#)

❒ Recently = less than packetlifetime

❒ Otherwise a still aliveduplicate segment from theformer connection can beconfused with this SYN

client

SYN (seq=x)

server

SYNACK (seq=y, ack=x+1)

ACK (seq=x+1, ack=y+1)

connect listen+ accept

connected

connected

Page 46: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

46

© From Computer Networking, by Kurose&Ross Transport Layer 3-91

Choosing initial seq# (2)

1. In practice1. If client can only reuse the same port# when a

maximum packet lifetime has elapsed after the lastpacket has been sent, and

2. If, when a host fails (= unknown duration), it waits atleast a maximum packet lifetime before opening thefirst connection,

3. Then, any initial seq# x and y are OK, they could berandomly chosen

2. In principle, could avoid these delays by usingclocks (see next slide)

© From Computer Networking, by Kurose&Ross Transport Layer 3-92

Using clocks❒ Let T be the maximum packet lifetime in the network❒ Each host has a "clock”

❍ that never stops running, even when the station is down❍ that need not be synchronized with other clocks

❒ The clock is merely a regular and reliable counter of say k bitssuch that 2k ticks > T

2k-1

t

Page 47: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

47

© From Computer Networking, by Kurose&Ross Transport Layer 3-93

Using clocks (2)❒ Initial seq# x is the local

clock value❒ Don’t enter forbidden

region (neither from top,nor from bottom)❍ Throughput is bounded!

t

T

x

SYN xis sent

DT x+1is sentDT x+kis sent

y

SYN yis sent

New connectionbetween same portsof same hosts

z

At that time,an old duplicate DT z

anda new packet DT z

can be both present in the network

clock Numbers used byconnection

Forb

idden

regio

n

© From Computer Networking, by Kurose&Ross Transport Layer 3-94

Chapter 3 outline

❒ 3.1 Transport-layerservices

❒ 3.2 Multiplexing anddemultiplexing

❒ 3.3 Connectionlesstransport: UDP

❒ 3.4 Principles ofreliable data transfer

❒ 3.5 Connection-orientedtransport: TCP❍ segment structure❍ reliable data transfer❍ flow control❍ connection management

❒ 3.6 Principles ofcongestion control

❒ 3.7 TCP congestioncontrol

Page 48: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

48

© From Computer Networking, by Kurose&Ross Transport Layer 3-95

Principles of Congestion Control

❒ informally: “too many sources sending too much data too fast fornetwork to handle”

❒ manifestations:❍ lost packets (buffer overflow at routers)❍ long delays (queuing in router buffers)

❒ a top-10 problem!

Transmissionrate adjustment

Transmissionnetwork

Small-capacityreceiver

Large-capacityreceiver

InternalcongestionNeed

flowcontrol

Needcongestion

control

From Computer Networks, by Tanenbaum © Prentice Hall

© From Computer Networking, by Kurose&Ross Transport Layer 3-96

Causes/costs of congestion: scenario 1

❒ two senders, tworeceivers

❒ one router,infinite buffers

❒ no retransmission

❒ large delayswhen congested

❒ maximumachievablethroughput

unlimited sharedoutput link buffers

Host Aλin : original data

Host B

λout

capacity = C

Page 49: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

49

© From Computer Networking, by Kurose&Ross Transport Layer 3-97

Causes/costs of congestion: scenario 2

❒ one router, finite buffers❒ sender retransmission of lost packet

finite shared outputlink buffers

Host A λin : original data

Host B

λout

λ'in : original data, plusretransmitted data

capacity = C

© From Computer Networking, by Kurose&Ross Transport Layer 3-98

Causes/costs of congestion: scenario 2❒ always: λin = λout (goodput)

❒ “perfect” retransmission only when loss: λ’in > λout

❒ retransmission of delayed (not lost) packet makes λ’in larger (than perfect case)

for same λout

“costs” of congestion:❒ more work (retransmission) for given “goodput”❒ unneeded retransmissions: link carries multiple copies of packet

b) only lost packetsretransmitted

C/2

C/2λin

λ out

a) sender avoids loss c) all packetsretransmitted once

C/2

C/2λin

λ out

C/4

C/2

C/2λin

λ out

e.g. C/3

Page 50: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

50

© From Computer Networking, by Kurose&Ross Transport Layer 3-99

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

λin

Q: what happens asand increase ?λ

in

finite shared outputlink buffers

Host Aλin : original data

Host B

λout

λ'in : original data, plusretransmitted data

© From Computer Networking, by Kurose&Ross Transport Layer 3-100

Causes/costs of congestion: scenario 3

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

capacity used for that packet was wasted!

HostA

HostB

λout

Page 51: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

51

© From Computer Networking, by Kurose&Ross Transport Layer 3-101

Approaches towards congestion control

End-end congestioncontrol:

❒ no explicit feedback fromnetwork

❒ congestion inferred fromend-system observed loss,delay

❒ approach taken by TCP

Network-assistedcongestion control:

❒ routers provide feedbackto end-systems❍ single bit indicating

congestion (SNA,DECbit, TCP/IP ECN,ATM)

❍ explicit rate sendershould send at (ATMABR)

❒ Not covered in this course

Two broad approaches towards congestion control:

© From Computer Networking, by Kurose&Ross Transport Layer 3-102

Chapter 3 outline

❒ 3.1 Transport-layerservices

❒ 3.2 Multiplexing anddemultiplexing

❒ 3.3 Connectionlesstransport: UDP

❒ 3.4 Principles ofreliable data transfer

❒ 3.5 Connection-orientedtransport: TCP❍ segment structure❍ reliable data transfer❍ flow control❍ connection management

❒ 3.6 Principles ofcongestion control

❒ 3.7 TCP congestioncontrol

Page 52: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

52

© From Computer Networking, by Kurose&Ross Transport Layer 3-103

TCP congestion control:❒ goal: TCP sender should transmit as fast as possible,

but without congesting network❍ Q: how to find rate just below congestion level

❒ decentralized: each TCP sender sets its own rate,based on implicit feedback:❍ ACK: segment received (a good thing!), network not

congested, so increase sending rate❍ lost segment: assume loss due to congested

network, so decrease sending rate

© From Computer Networking, by Kurose&Ross Transport Layer 3-104

TCP congestion control: bandwidth probing

❒ “probing for bandwidth”: increase transmission rateon receipt of ACK, until eventually loss occurs, thendecrease transmission rate❍ continue to increase on ACK, decrease on loss (since available

bandwidth is changing, depending on other connections innetwork)

ACKs being received, so increase rate

X

X

XX

X loss, so decrease rate

send

ing

rate

time

❒ Q: how fast to increase/decrease?❍ details to follow

TCP’s“sawtooth”behavior

Page 53: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

53

© From Computer Networking, by Kurose&Ross Transport Layer 3-105

TCP Congestion Control: details

❒ sender limits rate by limiting numberof unACKed bytes “in pipeline”:

❍ cwnd: differs from rwnd (how, why?)❍ sender limited by min(cwnd,rwnd)

❒ roughly,

❒ cwnd is dynamic, function ofperceived network congestion

rate = cwnd

RTT bytes/sec

LastByteSent-LastByteAcked ≤ cwnd

cwndbytes

RTT

ACK(s)

© From Computer Networking, by Kurose&Ross Transport Layer 3-106

TCP Congestion Control: more details

segment loss event:reducing cwnd

❒ timeout: no responsefrom receiver❍ cut cwnd to 1

❒ 3 duplicate ACKs: atleast some segmentsgetting through (recallfast retransmit)❍ cut cwnd in half, less

aggressively than ontimeout

ACK received: increasecwnd

❒ slowstart phase:❍ increase exponentially

fast (despite name) atconnection start, orfollowing timeout

❒ congestion avoidance:❍ increase linearly

Page 54: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

54

© From Computer Networking, by Kurose&Ross Transport Layer 3-107

TCP Slow Start❒ when connection begins, cwnd = 1

MSS (Maximum Segment Size)❍ example: MSS = 500 bytes &

RTT = 200 msec❍ initial rate = 20 kbps

❒ available bandwidth may be >>MSS/RTT❍ desirable to quickly ramp up to

respectable rate❒ increase rate exponentially until

first loss event or when thresholdreached❍ double cwnd every RTT❍ done by incrementing cwnd by

1 for every ACK received

Host A

one segment

RTT

Host B

time

two segments

four segments

1

2

34

cwnd

© From Computer Networking, by Kurose&Ross Transport Layer 3-108

Transitioning into/out of slowstartssthresh: cwnd threshold maintained by TCP❒ on loss event: set ssthresh to cwnd/2

❍ remember (half of) TCP rate when congestion last occurred❒ when cwnd >= ssthresh: transition from slowstart to congestion

avoidance phase

slow start timeout

ssthresh = cwnd/2cwnd = 1 MSS

dupACKcount = 0retransmit missing segment timeout

ssthresh = cwnd/2 cwnd = 1 MSS

dupACKcount = 0retransmit missing segment

Λcwnd > ssthresh

cwnd = cwnd+MSSdupACKcount = 0transmit new segment(s),as allowed

new ACKdupACKcount++duplicate ACK

Λ

cwnd = 1 MSSssthresh = 64 KBdupACKcount = 0 congestion

avoidance

Page 55: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

55

© From Computer Networking, by Kurose&Ross Transport Layer 3-109

TCP: congestion avoidance

❒ when cwnd > ssthreshgrow cwnd linearly❍ increase cwnd by 1

MSS per RTT❍ approach possible

congestion slowerthan in slowstart

❍ implementation: cwnd= cwnd + MSS/cwndfor each ACK received

❒ ACKs: increase cwndby 1 MSS per RTT:additive increase

❒ loss: cut cwnd in half(non-timeout-detectedloss): multiplicativedecrease

AIMD

AIMD: Additive IncreaseMultiplicative Decrease

© From Computer Networking, by Kurose&Ross Transport Layer 3-110

TCP congestion control FSM: overview

slow start

congestionavoidance

fastrecovery

cwnd > ssthresh

loss:timeout

loss:timeout

new ACK loss:3dupACK

loss:3dupACK

loss:timeout

Page 56: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

56

© From Computer Networking, by Kurose&Ross Transport Layer 3-111

TCP congestion control FSM: details

slow start

congestionavoidance

fastrecovery

timeoutssthresh = cwnd/2

cwnd = 1 MSSdupACKcount = 0

retransmit missing segment timeoutssthresh = cwnd/2

cwnd = 1 MSSdupACKcount = 0

retransmit missing segment

Λcwnd > ssthresh

cwnd = cwnd+MSSdupACKcount = 0transmit new segment(s),as allowed

new ACKcwnd = cwnd + MSS (MSS/cwnd)

dupACKcount = 0transmit new segment(s),as allowed

new ACK.

dupACKcount++duplicate ACK

ssthresh= cwnd/2cwnd = ssthresh + 3 MSSretransmit missing segment

dupACKcount == 3

dupACKcount++duplicate ACK

ssthresh= cwnd/2cwnd = ssthresh + 3 MSS

retransmit missing segment

dupACKcount == 3

timeoutssthresh = cwnd/2cwnd = 1 dupACKcount = 0retransmit missing segment

cwnd = cwnd + MSStransmit new segment(s), as allowed

duplicate ACK

cwnd = ssthreshdupACKcount = 0

New ACK

Λ

cwnd = 1 MSSssthresh = 64 KBdupACKcount = 0

© From Computer Networking, by Kurose&Ross Transport Layer 3-112

Popular “flavors” of TCP

ssthresh

ssthresh

TCPTahoe

TCPReno

Transmissionround

cwnd windowsize(insegments)

Page 57: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

57

© From Computer Networking, by Kurose&Ross Transport Layer 3-113

Summary: TCP Congestion Control

❒ when cwnd < ssthresh, sender in slow-start phase, windowgrows exponentially.

❒ when cwnd >= ssthresh, sender is in congestion-avoidancephase, window grows linearly.

❒ when triple duplicate ACK occurs, ssthresh set tocwnd/2, cwnd set to ~ ssthresh

❒ when timeout occurs, ssthresh set to cwnd/2, cwnd setto 1 MSS.

© From Computer Networking, by Kurose&Ross Transport Layer 3-114

TCP “goodput” in steady state❒ Goodput = not counting overhead and retransmitted bytes❒ What’s the average goodput of TCP as a function of window size and

RTT?❍ Ignoring slow start

❒ Let W be the window size (in MSS) when losses occur❒ When window is W, goodput is W/RTT❒ Just after loss, window drops to W/2, goodput to 0.5 W/RTT❒ Average goodput: 0.75 W/RTT

Win

dow

size

in M

SS W

W/2

W/2 . RTT

3W/4 . W/2MSS percycle

Page 58: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

58

© From Computer Networking, by Kurose&Ross Transport Layer 3-115

TCP goodput in steady state (2)

❒ Average window size (in MSS) = 3W/4❒ Number of MSS per cycle = 3W/4 . W/2 = 3W2/8 = 1/p

❍ Where p is the packet loss ratio• One packet loss per cycle! (if p small enough)

❍ So

❒ Average goodput (in MSS/sec) = aver. window / RTT = 3W / 4RTT

❒ Average goodput (in bps)

!

W = 83p

= 32

1

RTT p

!

= 32

MSS

RTT p

© From Computer Networking, by Kurose&Ross Transport Layer 3-116

TCP Futures: TCP over “long, fat pipes”

❒ Example: 1500 byte segments, 100ms RTT,want 10 Gbps throughput

❒ Requires window size W = 83 333 in-flight segments❒ Throughput in terms of loss rate:

❒ Needs packet loss rate p = 2 . 10-10 Wow!❒ New versions of TCP for high-speed needed!

!

1.22 " MSS

RTT p

Page 59: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

59

© From Computer Networking, by Kurose&Ross Transport Layer 3-117

Fairness goal: if K TCP sessions share samebottleneck link of bandwidth R, each should haveaverage rate of R/K

TCP connection 1

bottleneckrouter

capacity R

TCP connection 2

TCP Fairness

© From Computer Networking, by Kurose&Ross Transport Layer 3-118

Why is TCP fair?Two competing sessions having the same RTT:❒ Additive increase gives slope of 1, as throughout increases❒ Multiplicative decrease decreases throughput proportionally

R

R

equal bandwidth share

Connection 1 throughput

Conn

ecti

on 2

thr

ough

put

1. congestion avoidance: additive increase

2. loss: decrease window by factor of 23. congestion avoidance: additive increase

4. loss: decrease window by factor of 2

Page 60: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

60

© From Computer Networking, by Kurose&Ross Transport Layer 3-119

And when RTTs are different?❒ If RTT of connection 2 = 2 x RTT of connection 1❒ Connection 1 ramps up twice more quickly

R

R

bandwidth share inversely

proportional to RTT

Connection 1 throughput

Conn

ecti

on 2

thr

ough

put

© From Computer Networking, by Kurose&Ross Transport Layer 3-120

Fairness (more)Fairness and UDP❒ Multimedia apps often

do not use TCP❍ do not want rate

throttled by congestioncontrol

❒ Instead use UDP:❍ pump audio/video at

constant rate, toleratepacket loss

❒ Research area: TCPfriendly

Fairness and parallel TCPconnections

❒ nothing prevents app fromopening parallelconnections between 2hosts

❒ Web browsers do this❒ Example: link of rate R

supporting 9 connections;❍ new app asks for 1 TCP, gets

rate R/10❍ new app asks for 10 TCPs,

gets more than R/2 !

Page 61: Introduction to Computer Networking Guy Leduc Chapter 3 …fuuu.be/polytech/INFOF303/INFOF303_ch3.pdf · passes to network layer rcv side: reassembles segments into messages, passes

61

© From Computer Networking, by Kurose&Ross Transport Layer 3-121

Chapter 3: Summary❒ principles behind transport

layer services:❍ multiplexing,

demultiplexing❍ reliable data transfer❍ flow control❍ congestion control

❒ instantiation andimplementation in theInternet❍ UDP❍ TCP

Next:❒ leaving the network

“edge” (application,transport layers)

❒ into the network“core”