Post on 12-Jan-2016
Transport Layer3-*3. Transport LayerComputer Networking: A Top Down Approach 6th edition Jim Kurose, Keith Ross Addison-Wesley March 2012
All material copyright 1996-2012 J.F Kurose and K.W. Ross, All Rights Reserved
Transport Layer
Transport Layer3-*3. Transport Layer: Goalsour goals: understand principles behind transport layer services:multiplexing, demultiplexingreliable data transferflow controlcongestion control
learn about Internet transport layer protocols:UDP: connectionless transportTCP: connection-oriented reliable transportTCP congestion control
Transport Layer
Transport Layer3-*3. Transport Layer: Outline3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data transfer3.5 connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 principles of congestion control3.7 TCP congestion control
Transport Layer
Transport Layer3-*Transport services and protocolsprovide logical communication between app processes running on different hoststransport protocols run in end systems send side: breaks app messages into segments, passes to network layerrecv side: reassembles segments into messages, passes to app layermore than one transport protocol available to appsInternet: TCP and UDP
Transport Layer
Transport Layer3-*Transport vs. network layernetwork layer: logical communication between hosts
transport layer: logical communication between processes relies on and enhances network layer services12 kids in Anns house sending letters to 12 kids in Bills house:hosts = housesprocesses = kidsapp messages = letters in envelopestransport protocol = Ann and Bill who demux to in-house siblingsnetwork-layer protocol = postal service
household analogy:
Transport Layer
Transport Layer3-*Internet transport-layer protocolsreliable, in-order delivery (TCP)congestion control flow controlconnection setupunreliable, unordered delivery: UDPno-frills extension of best-effort IPservices not available: delay guaranteesbandwidth guarantees
Transport Layer
Transport Layer3-*3. Transport Layer: Outline3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data transfer3.5 connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 principles of congestion control3.7 TCP congestion control
Transport Layer
Transport Layer3-*Multiplexing/demultiplexingprocesssockettransportapplicationphysicallinknetworkP2P1transportapplicationphysicallinknetworkP4transportapplicationphysicallinknetworkP3
Transport Layer
Transport Layer3-*How demultiplexing workshost receives IP datagramseach datagram has source and destination IP addresseach datagram carries one transport-layer segmenteach segment has source and destination port number host uses IP addresses & port numbers to direct segment to right socketsource port #dest port #32 bitsapplicationdata (payload)other header fieldsTCP/UDP segment format
Transport Layer
Transport Layer3-*Connectionless demultiplexingrecall: created socket has host-local port #: DatagramSocket mySocket1 = new DatagramSocket(12534);
when host receives UDP segment:checks destination IP and port # in segmentdirects UDP segment to socket bound to that (IP,port)
recall: when creating datagram to send into UDP socket, must specifydestination IP addressdestination port #IP datagrams with same dest. (IP, port), but different source IP addresses and/or source port numbers will be directed to same socket
Transport Layer
Transport Layer3-*Connectionless demux: exampleDatagramSocket serverSocket = new DatagramSocket (6428);
transportapplicationphysicallinknetworkP3transportapplicationphysicallinknetworkP1transportapplicationphysicallinknetworkP4DatagramSocket mySocket1 = new DatagramSocket (5775);
DatagramSocket mySocket2 = new DatagramSocket (9157);
Transport Layer
Transport Layer3-*Connection-oriented demuxTCP socket identified by 4-tuple: source IP addresssource port numberdest IP addressdest port numberdemux: receiver uses all four values to direct segment to right socketserver host has many simultaneous TCP sockets:each socket identified by its own 4-tupleweb servers have different socket each clientnon-persistent HTTP will have different socket for each request
Transport Layer
Transport Layer3-*Connection-oriented demux: exampletransportapplicationphysicallinknetworkP3transportappphysicallinkP4transportapplicationphysicallinknetworkP2host: IP address Ahost: IP address CnetworkP6P5P3three segments, all destined to IP address: B, dest port: 80 are demultiplexed to different socketsserver: IP address Bserver socket, also port 80
Transport Layer
Transport Layer3-*Connection-oriented demux: exampletransportapplicationphysicallinknetworkP3transportappphysicallinktransportapplicationphysicallinknetworkP2host: IP address Ahost: IP address Cserver: IP address BnetworkP3P4server socket, also port 80threaded server
Transport Layer
Transport Layer3-*3. Transport Layer: Outline3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data transfer3.5 connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 principles of congestion control3.7 TCP congestion control
Transport Layer
Transport Layer3-*UDP: User Datagram Protocol [RFC 768]no frills, bare bones transport protocol for best effort service, UDP segments may be:lostdelivered out-of-orderconnectionless:no sender-receiver handshakingeach UDP segment handled independentlyUDP uses:streaming multimedia apps (loss tolerant, rate sensitive)DNSSNMPreliable transfer over UDP: add reliability at application layerapplication-specific error recovery!
Transport Layer
Transport Layer3-*UDP: segment headersource port #dest port #32 bitsapplicationdata (payload)UDP segment formatlengthchecksumlength, in bytes of UDP segment, including headerno connection establishment (which can add delay)simple: no connection state at sender, receiversmall header sizeno congestion control: UDP can blast away as fast as desiredwhy is there a UDP?
Transport Layer
Transport Layer3-*UDP checksumsender:treat segment contents, including header fields, as sequence of 16-bit integerschecksum: addition (ones complement sum) of segment contentssender puts checksum value into UDP checksum fieldreceiver:compute checksum of received segmentcheck if computed checksum equals checksum field value:NO - error detectedYES - no error detected. But maybe errors nonetheless? More later .Goal: detect errors (flipped bits) in segments
Transport Layer
Transport Layer3-*Internet checksum: exampleexample: add two 16-bit integers1 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 1wraparoundsumchecksumNote: when adding numbers, a carryout from the most significant bit needs to be added to the result
Transport Layer
Q1: Sockets and multiplexingTCP uses more information in packet headers in order to demultiplex packets compared to UDP.TrueFalseTransport Layer3-*
Transport Layer
Q2: Sockets UDPSuppose we use UDP instead of TCP under HTTP for designing a web server where all requests and responses fit in a single packet. Suppose a 100 clients are simultaneously communicating with this web server. How many sockets are respectively at the server and at each client?1,12,1200,2100,1101, 1Transport Layer3-*
Transport Layer
Q3: Sockets TCPSuppose a 100 clients are simultaneously communicating with a (traditional HTTP/TCP) web server. How many sockets are respectively at the server and at each client?1,12,1200,2100,1101, 1Transport Layer3-*
Transport Layer
Q4: Sockets TCPSuppose a 100 clients are simultaneously communicating with (a traditional HTTP/TCP) web server. Do all of the sockets at the server have the same server-side port number?YesNoTransport Layer3-*
Transport Layer
Q5: UDP checksumsLets denote a UDP packet as (checksum, data) ignoring other fields for this question. Suppose a sender sends (0010, 1110) and the receiver receives (0011,1110). Which of the following is true of the receiver?Thinks the packet or checksum is corrupted and discards the packet.Thinks only the checksum is corrupted and delivers the correct data to the application. Can possibly conclude that nothing is wrong with the packet.A and CTransport Layer3-*
Transport Layer
Transport Layer3-*3. Transport Layer: Outline3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data transfer3.5 connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 principles of congestion control3.7 TCP congestion control
Transport Layer
Transport Layer3-*Principles of reliable data transferimportant in application, transport, link layerstop-10 list of important networking topics!
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
Transport Layer
Transport Layer3-*characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)Principles of reliable data transferimportant in application, transport, link layerstop-10 list of important networking topics!
Transport Layer
Transport Layer3-*characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)important in application, transport, link layerstop-10 list of important networking topics!
Principles of reliable data transfer
Transport Layer
Transport Layer3-*Reliable data transfer: getting startedsendsidereceiveside
Transport Layer
Transport Layer3-*well:incrementally develop sender, receiver sides of reliable data transfer protocol (rdt)consider only unidirectional data transferbut control info will flow on both directions!use finite state machines (FSM) to specify sender, receiverstate1state2event causing state transitionactions taken on state transitionstate: when in this state next state uniquely determined by next eventeventactionsReliable data transfer: getting started
Transport Layer
Transport Layer3-*rdt1.0: reliable transfer over a reliable channelunderlying channel perfectly reliableno bit errorsno loss of packetsseparate FSMs for sender, receiver:sender sends data into underlying channelreceiver reads data from underlying channelWait for call from abovepacket = make_pkt(data)udt_send(packet)rdt_send(data)extract (packet,data)deliver_data(data)Wait for call from belowrdt_rcv(packet)senderreceiver
Transport Layer
Transport Layer3-*underlying channel may flip bits in packetchecksum to detect bit errorsthe question: how to recover from errors:acknowledgements (ACKs): receiver explicitly tells sender that pkt received OKnegative acknowledgements (NAKs): receiver explicitly tells sender that pkt had errorssender retransmits pkt on receipt of NAKnew mechanisms in rdt2.0 (beyond rdt1.0):error detectionreceiver feedback: control msgs (ACK,NAK) rcvr->senderrdt2.0: channel with bit errorsHow do humans recover from errorsduring conversation?
Transport Layer
Transport Layer3-*underlying channel may flip bits in packetchecksum to detect bit errorsthe question: how to recover from errors:acknowledgements (ACKs): receiver explicitly tells sender that pkt received OKnegative acknowledgements (NAKs): receiver explicitly tells sender that pkt had errorssender retransmits pkt on receipt of NAKnew mechanisms in rdt2.0 (beyond rdt1.0):error detectionfeedback: control msgs (ACK,NAK) from receiver to senderrdt2.0: channel with bit errors
Transport Layer
Transport Layer3-*rdt2.0: FSM specificationWait for call from abovesndpkt = 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)senderreceiverrdt_send(data)L
Transport Layer
Transport Layer3-*rdt2.0: operation with no errorsWait for call from abovesnkpkt = 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)Wait for call from belowrdt_send(data)L
Transport Layer
Transport Layer3-*rdt2.0: error scenarioWait for call from abovesnkpkt = 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)Wait for call from belowrdt_send(data)L
Transport Layer
Transport Layer3-*rdt2.0 has a fatal flaw!what happens if ACK/NAK corrupted?sender doesnt know what happened at receiver!cant just retransmit: possible duplicate
handling duplicates: sender retransmits current pkt if ACK/NAK corruptedsender adds sequence number to each pktreceiver discards (doesnt deliver up) duplicate pkt
Transport Layer
Transport Layer3-*rdt2.1: sender, handles garbled ACK/NAKsWait for call 0 from abovesndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)rdt_send(data)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) && notcorrupt(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt)rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isNAK(rcvpkt) )rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) LL
Transport Layer
Transport Layer3-*sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) extract(rcvpkt,data)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)rdt2.1: receiver, handles garbled ACK/NAKs
Transport Layer
Transport Layer3-*
Transport Layer
Transport Layer3-*rdt2.1: discussionsender:seq # added to pkttwo seq. #s (0,1) will suffice. Why?must check if received ACK/NAK corrupted twice as many statesstate must remember whether expected pkt should have seq # of 0 or 1
receiver:must check if received packet is duplicatestate indicates whether 0 or 1 is expected pkt seq #note: receiver can not know if its last ACK/NAK received OK at senderQ: Do we really need both ACKs and NACKs?
Transport Layer
Transport Layer3-*rdt2.2: a NAK-free protocolsame functionality as rdt2.1, using ACKs onlyinstead of NAK, receiver sends ACK for last pkt received OKreceiver must explicitly include seq # of pkt being ACKed duplicate ACK at sender results in same action as NAK: retransmit current pkt
Transport Layer
Transport Layer3-*rdt2.2: sender, receiver fragments
Transport Layer
Transport Layer3-*rdt3.0: channels with errors and lossnew assumption: underlying channel can also lose packets (data, ACKs)checksum, seq. #, ACKs, retransmissions will be of help but not enoughapproach: sender waits reasonable amount of time for ACK retransmits if no ACK received in this timeif pkt (or ACK) just delayed (not lost):retransmission will be duplicate, but seq. #s already handles thisreceiver must specify seq # of pkt being ACKedrequires countdown timer
Transport Layer
Transport Layer3-*rdt3.0 sendersndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)start_timerrdt_send(data)rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isACK(rcvpkt,1) )sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)start_timerrdt_send(data)rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isACK(rcvpkt,0) )rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1) stop_timerstop_timerudt_send(sndpkt)start_timertimeoutudt_send(sndpkt)start_timertimeoutrdt_rcv(rcvpkt)Lrdt_rcv(rcvpkt)LLL
Transport Layer
Transport Layer3-*senderreceiverrcv pkt1rcv pkt0send ack0send ack1send ack0rcv ack0send pkt0send pkt1rcv ack1send pkt0rcv pkt0(a) no losssenderreceiverrcv pkt1rcv pkt0send ack0send ack1send ack0rcv ack0send pkt0send pkt1rcv ack1send pkt0rcv pkt0(b) packet lossrdt3.0 in action
Transport Layer
Transport Layer3-*rdt3.0 in actionrcv pkt1send ack1(detect duplicate)senderreceiverrcv pkt1rcv pkt0send ack0send ack1send ack0rcv ack0send pkt0send pkt1rcv ack1send pkt0rcv pkt0(c) ACK lossrcv pkt1send ack1(detect duplicate)senderreceiverrcv pkt1send ack0rcv ack0send pkt1send pkt0rcv pkt0(d) premature timeout/ delayed ACK
Transport Layer
Try writing rdt 3.0 receiver?Use rdt_rcv(), isCorrupt(), udt_send(pkt), extract(.), deliver(.), make_pkt(.), isAck(.), hasSeq(.)Transport Layer3-*
Transport Layer
Transport Layer3-*Performance of rdt3.0rdt3.0 is correct, but performance stinkse.g.: 1 Gbps link, 15 ms prop. delay, 8000 bit packet:
U : utilization fraction of time sender busy sendingif RTT=30 msec, 1KB pkt every 30 msec: 33kB/sec thruput over 1 Gbps linknetwork protocol limits use of physical resources!
Transport Layer
0.00027
L / R
RTT + L / R
=
30.008
.008
=
U
=
Transport Layer3-*rdt3.0: stop-and-wait operationfirst packet bit transmitted, t = 0senderreceiverRTT last packet bit transmitted, t = L / Rfirst packet bit arriveslast packet bit arrives, send ACKACK arrives, send next packet, t = RTT + L / R
Transport Layer
0.00027
L / R
RTT + L / R
=
30.008
.008
=
U
=
Transport Layer3-*Pipelined protocolspipelining: sender allows multiple, in-flight, yet-to-be-acknowledged pktsrange of sequence numbers must be increasedbuffering at sender and/or receivertwo generic forms of pipelined protocols: go-Back-N, selective repeat
Transport Layer
Transport Layer3-*Pipelining: increased utilizationfirst packet bit transmitted, t = 0senderreceiverRTT last bit transmitted, t = L / Rfirst packet bit arriveslast packet bit arrives, send ACKACK arrives, send next packet, t = RTT + L / Rlast bit of 2nd packet arrives, send ACKlast bit of 3rd packet arrives, send ACK3-packet pipelining increases utilization by a factor of 3!
Transport Layer
.0024
3L / R
0.00081
RTT + L / R
=
30.008
=
U
=
Q1: Reliable data transferWhich of the following are needed for reliable data transfer with only packet corruption (and no loss or reordering)? Use only as much as is strictly needed.ChecksumsChecksums, ACKs, NACKsChecksums, ACKsChecksums, ACKs, sequence numbersChecksums, ACKs, NACKs, sequence numbersTransport Layer3-*
Transport Layer
Q2: Reliable data transferIf packets (and ACKs and NACKs) could be lost, which of the following is true of rdt 2.1 (or 2.2)?Reliable, in-order delivery is still achieved.The protocol will get get stuck.The protocol will continue making progress but may skip delivering some messages.Transport Layer3-*
Transport Layer
Q3: Reliable data transferWhich of the following are needed for reliable data transfer to handle packet corruption and loss? Use only as much as is strictly needed.Checksums, timeouts, and fries with thatChecksums, ACKs, sequence numbersChecksums, ACKs, timeouts, pipelined protocolChecksums, ACKs, sequence numbers, timeoutsChecksums, ACKs, NACKs, sequence numbers, timeoutsTransport Layer3-*
Transport Layer
Q4: Reliable data transferrdt 3.0 handles corruption and loss but not reordering. True or false?TrueFalseTransport Layer3-*
Transport Layer
Transport Layer3-*Pipelined protocols: overviewGo-back-N:sender can have up to N unacked packets in pipelinereceiver only sends cumulative ackdoesnt ack packet if theres a gapsender has timer for oldest unacked packetwhen timer expires, retransmit all unacked packetsSelective Repeat:sender can have up to N unacked packets in pipelinercvr sends individual ack for each packet
sender maintains timer for each unacked packetwhen timer expires, retransmit only that unacked packet
Transport Layer
Transport Layer3-*Go-Back-N: senderk-bit seq # in pkt headerwindow of up to N, consecutive unacked pkts allowed
ACK(n): ACKs all pkts up to, including # n - cumulative ACKmay receive duplicate ACKs (see receiver)timer for oldest in-flight pkttimeout(n): retransmit packet n and all higher seq # pkts in window
Transport Layer
Transport Layer3-*GBN: sender extended FSMstart_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 restart_timerrdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt) && corrupt(rcvpkt)
L
Transport Layer
Transport Layer3-*ACK-only: always send ACK for correctly-received pkt with highest in-order seq #may generate duplicate ACKsneed only remember expectedseqnumout-of-order pkt: discard (dont buffer): no receiver buffering!re-ACK pkt with highest in-order seq #Waitudt_send(sndpkt)default
rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum) extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(expectedseqnum,ACK,chksum)udt_send(sndpkt)expectedseqnum++expectedseqnum=1sndpkt = make_pkt(expectedseqnum,ACK,chksum)
LGBN: receiver extended FSM
Transport Layer
Transport Layer3-*GBN in actionsend pkt0send pkt1send pkt2send pkt3(wait)senderreceiverreceive pkt0, send ack0receive pkt1, send ack1 receive pkt3, discard, (re)send ack1rcv ack0, send pkt4rcv ack1, send pkt5
pkt 2 timeoutsend pkt2send pkt3send pkt4send pkt5Xlossreceive pkt4, discard, (re)send ack1receive pkt5, discard, (re)send ack1rcv pkt2, deliver, send ack2rcv pkt3, deliver, send ack3rcv pkt4, deliver, send ack4rcv pkt5, deliver, send ack5ignore duplicate ACKsender window (N=4)0 1 2 3 4 5 6 7 8
Transport Layer
Transport Layer3-*Selective repeatreceiver individually acknowledges all correctly received pktsbuffers pkts, as needed, for eventual in-order delivery to upper layersender only resends pkts for which ACK not receivedsender timer for each unACKed pktsender windowN consecutive seq #slimits seq #s of sent, unACKed pkts
Transport Layer
Transport Layer3-*Selective repeat: sender, receiver windows
Transport Layer
Transport Layer3-*Selective repeatdata from above:if next available seq # in window, send pkttimeout(n):resend pkt n, restart timerACK(n) in [sendbase,sendbase+N]:mark pkt n as receivedif n smallest unACKed pkt, advance window base to next unACKed seq #
pkt n in [rcvbase, rcvbase+N-1]send ACK(n)out-of-order: bufferin-order: deliver (also deliver buffered, in-order pkts), advance window to next not-yet-received pktpkt n in [rcvbase-N,rcvbase-1]ACK(n)otherwise: ignore
Transport Layer
Q: what happens when ack2 arrives?Transport Layer3-*Selective repeat in actionsend pkt0send pkt1send pkt2send pkt3(wait)senderreceiverreceive pkt0, send ack0receive pkt1, send ack1 receive pkt3, buffer, send ack3rcv ack0, send pkt4rcv ack1, send pkt5
pkt 2 timeoutsend pkt2Xlossreceive pkt4, buffer, send ack4receive pkt5, buffer, send ack5rcv pkt2; deliver pkt2,pkt3, pkt4, pkt5; send ack2record ack3 arrivedsender window (N=4)0 1 2 3 4 5 6 7 8 record ack4 arrivedrecord ack4 arrived
Transport Layer
Transport Layer3-*Selective repeat:dilemmaexample: seq #s: 0, 1, 2, 3window size=3receiver window(after receipt)sender window(after receipt)receiver cant see sender side.receiver behavior identical in both cases!somethings (very) wrong!receiver sees no difference in two scenarios!duplicate data accepted as new in (b)
Q: what relationship between size of seq # space and window size to avoid problem in (b)?
Transport Layer
Q1: RDT pipeliningConsider a path of bottleneck capacity C, round-trip time T, and maximum segment size S. If a pipelined rdt protocol maintains a window of N outstanding packets, how much does it improve throughput compared to a stop-and-wait rdt protocol (when no losses are actually happening)? Assume NS/C < T.NNS/(CT+S)(NS/C)/(T+NS/C)NTC/S
Transport Layer3-*
Transport Layer
Q2: RDT pipeliningConsider a path of bottleneck capacity C, round-trip time T, and maximum segment size S. What is the greatest throughput improvement factor that an ideal pipelined protocol (assuming corruptions and loss are negligible) can provide compared to a stop-and-wait protocol?(CT+S)/S2S/(CT+S)(S/C)/(T+S/C)(TC/S)^2
Transport Layer3-*
Transport Layer
Q3 UDP & TCPWhich of the following is true?UDP does not maintain connection state and does not have error detectionTCP is a connectionless protocol with reliable, in-order delivery and error detectionUDP has error detection but no connection stateUDP only has error detection but TCP also has error correctionTransport Layer3-*
Transport Layer
Q4 Go-back-N, selective repeat Which of the following is not true?GBN uses cumulative ACKs, SR uses individual ACKsBoth GBN and SR use timeouts to address packet lossGBN maintains a separate timer for each outstanding packetSR maintains a separate timer for each outstanding packetNeither GBN nor SR use NACKsTransport Layer3-*
Transport Layer
Q5 Go-back-N, selective repeat Suppose a receiver that has received all packets up to and including sequence number 24 and next receives packet 27 and 28. In response, what are the sequence numbers in the ACK(s) sent out by the GBN and SR receiver respectively?[27,28], [28][24,24], [27,28][27,28], [27,28][25], [25][nothing], [27, 28]Transport Layer3-*
Transport Layer
Q6 Go-back-NConsider a GBN protocol with a sender window of 6 and a large sequence # space. Suppose the next in-order sequence number the receiver is expecting is M. At this time instant, which of the following sequence #s can not be part of the senders window? Assume no reordering.MM+1M+5M-6M-7Transport Layer3-*
Transport Layer
Q7 Go-back-NConsider a GBN protocol with a sender window of 6 and a large sequence # space. Suppose the next in-order sequence number the receiver is expecting is M. At this instant, which of the following can not be the sequence # in an in-flight ACK from the receiver? Assume no reordering.M-1M-6M-7M-8M-11Transport Layer3-*
Transport Layer
Transport Layer3-*3. Transport Layer: Outline3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data transfer3.5 connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 principles of congestion control3.7 TCP congestion control
Transport Layer
Transport Layer3-*TCP: Overview RFCs: 793,1122,1323, 2018, 2581full duplex data:bi-directional data flow in same connectionMSS: maximum segment sizeconnection-oriented: handshaking (exchange of control msgs) inits sender, receiver state before data exchangeflow controlled:sender will not overwhelm receiverpoint-to-point:one sender, one receiver reliable, in-order byte steam:no message boundariespipelined:TCP congestion and flow control set window size
Transport Layer
Transport Layer3-*TCP segment structuresource port #dest port #32 bitsapplicationdata (variable length)sequence numberacknowledgement numberreceive windowUrg data pointerchecksumFSRPAUheadlennotusedoptions (variable length)URG: urgent data (generally not used)ACK: ACK #validPSH: push data now(generally not used)RST, SYN, FIN:connection estab(setup, teardowncommands)# bytes rcvr willingto acceptcountingby bytes of data(not segments!)Internetchecksum(as in UDP)
Transport Layer
Transport Layer3-*TCP seq. numbers, ACKssequence number:byte stream # of first byte in segments dataacknowledgement number:seq # of next byte expected from other sidecumulative ACKQ: how receiver handles out-of-order segmentsA: TCP spec doesnt say, - up to implementorsent ACKedsent, not-yet ACKed(in-flight)usablebut not yet sentnot usablewindow size Nsender sequence number space
Transport Layer
Transport Layer3-*TCP seq. numbers, ACKsUsertypesChost ACKsreceipt of echoedChost ACKsreceipt ofC, echoesback Csimple character echo applicationHost BHost ASeq=42, ACK=79, data = CSeq=79, ACK=43, data = CSeq=43, ACK=80
Transport Layer
Transport Layer3-*TCP round trip time, timeoutQ: how to set TCP timeout value?longer than RTTbut RTT variestoo short: premature timeout, unnecessary retransmissionstoo long: slow reaction to segment lossQ: how to estimate RTT?SampleRTT: measured time from segment transmission to ACK receiptignore retransmissionsSampleRTT will vary, want estimated RTT smootheraverage several recent measurements, not just current SampleRTT
Transport Layer
Transport Layer3-*SmoothedRTTi = (1- )*SmoothedRTTi-1 + *SampleRTTiexponential weighted moving averageinfluence of past sample decreases exponentially fasttypical value: = 0.125TCP round trip time, timeoutRTT (milliseconds)RTT: gaia.cs.umass.edu to fantasia.eurecom.frsampleRTTEstimatedRTT
Transport Layer
Transport Layer3-*timeout interval: SmoothedRTT plus safety marginlarge variation in SmootedRTT larger safety marginestimate SampleRTT deviation from SmoothedRTT: DevRTTi = (1-)*DevRTTi-1 + *|SampleRTTi-SmoothedRTTi|TCP round trip time, timeout(typically, = 0.25)TimeoutInterval = SmoothedRTT + 4*DevRTTaverage RTTsafety margin
Transport Layer
Transport Layer3-*Upon ACK receipt timeout SmoothedRTT + 4*DevRTTUpon a timeout:timeout 2*timeoutdoubling provides a limited form of congestion control (more later)TCP timeout summary
Transport Layer
Transport Layer3-*3. Transport Layer: Outline3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data transfer3.5 connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 principles of congestion control3.7 TCP congestion control
Transport Layer
Transport Layer3-*TCP reliable data transferTCP creates rdt service on top of IPs unreliable servicepipelined segmentscumulative acks selective acks often supported as an optionsingle retransmission timer retransmissions triggered by:timeout eventsduplicate acks
lets initially consider simplified TCP sender:ignore duplicate acksignore flow control, congestion control
Transport Layer
Transport Layer3-*TCP sender events:data rcvd from app:create segment with seq # (= byte-stream number of first data byte in segment)start timer (for oldest unacked segment) if not already running TimeOutInterval = smoothed_RTT + 4*deviation_RTTtimeout:retransmit segment that caused timeoutrestart timer ack rcvd:if ack acknowledges previously unacked segmentsupdate what is known to be ACKed(re-)start timer if still unacked segments
Transport Layer
Transport Layer3-*TCP sender (simplified)waitfor eventNextSeqNum = InitialSeqNumSendBase = InitialSeqNumL
Transport Layer
Transport Layer3-*TCP: retransmission scenarioslost ACK scenarioHost BHost ASeq=92, 8 bytes of dataACK=100Seq=92, 8 bytes of dataXtimeoutACK=100premature timeoutHost BHost ASeq=92, 8 bytes of dataSeq=92, 8bytes of datatimeoutACK=120SendBase=100SendBase=120SendBase=120SendBase=92
Transport Layer
Transport Layer3-*TCP: retransmission scenariosXcumulative ACKHost BHost ASeq=92, 8 bytes of dataSeq=120, 15 bytes of data
Transport Layer
Transport Layer3-*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
Transport Layer
Transport Layer3-*TCP fast retransmittime-out period often relatively long:long delay before resending lost packetdetect lost segments via duplicate ACKs.sending many segments back-to-back plus occasional segment loss duplicate ACKs
if sender receives 3 ACKs for same data(triple duplicate ACKs), resend unacked segment with smallest seq #likely that unacked segment lost, so dont wait for timeoutTCP fast retransmit(triple duplicate ACKs),
Transport Layer
Transport Layer3-*Xfast retransmit after sender receipt of triple duplicate ACKHost BHost ASeq=92, 8 bytes of dataTCP fast retransmitSeq=100, 20 bytes of dataSeq=100, 20 bytes of data
Transport Layer
Transport Layer3-*3. Transport Layer: Outline3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data transfer3.5 connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 principles of congestion control3.7 TCP congestion control
Transport Layer
Transport Layer3-*TCP flow controlapplicationprocessTCPcodeIPcodereceiver protocol stackapplication may remove data from TCP socket buffers . slower than TCP receiver is delivering(sender is sending)from sender
Transport Layer
Transport Layer3-*TCP flow controlrwndRcvBufferTCP segment payloadsto application processreceiver advertises free buffer space by including rwnd value in TCP header of rcvr-to-sndr segmentsRcvBuffer size can be set via socket options most operating systems auto-adjust RcvBuffer
sender limits amount of unacked (in-flight) data to receivers rwnd value to ensure receive buffer will not overflowreceiver-side buffering
Transport Layer
Transport Layer3-*3. Transport Layer: Outline3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data transfer3.5 connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 principles of congestion control3.7 TCP congestion control
Transport Layer
Transport Layer3-*Connection Managementbefore exchanging data, sender/receiver handshake:agree to establish connection (each knowing the other willing to establish connection)agree on connection parametersconnection state: ESTABconnection variables:seq # client-to-server server-to-clientrcvBuffer size at server,client applicationnetworkconnection state: ESTABconnection Variables:seq # client-to-server server-to-clientrcvBuffer size at server,client applicationnetworkSocket clientSocket = newSocket("hostname","port number");Socket connectionSocket = welcomeSocket.accept();
Transport Layer
Transport Layer3-*Q: will 2-way handshake always work in network?variable delaysretransmitted messages (e.g. req_conn(x)) due to message lossmessage reorderingcant see other side2-way handshake:Lets talkOKESTABESTABchoose x
req_conn(x)ESTABESTABacc_conn(x)Agreeing to establish a connection
Transport Layer
Transport Layer3-*Agreeing to establish a connection2-way handshake failure scenarios:
Transport Layer
Transport Layer3-*TCP 3-way handshakeESTAB
Transport Layer
Transport Layer3-*TCP 3-way handshake: FSMclosedLlistenSYNrcvdSYNsentESTABSocket clientSocket = newSocket("hostname","port number");SYN(seq=x)Socket connectionSocket = welcomeSocket.accept();SYN(x)
SYNACK(seq=y,ACKnum=x+1)create new socket for communication back to client
SYNACK(seq=y,ACKnum=x+1)
ACK(ACKnum=y+1)
ACK(ACKnum=y+1)
L
Transport Layer
Transport Layer3-*TCP: closing a connectionclient and server should each close their side of connectionby sending FIN (TCP segment with FIN flag = 1)should respond to received FIN with ACKon receiving FIN, ACK can be combined with own FINsimultaneous FIN exchanges should be handled
Transport Layer
Transport Layer3-*TCP: closing a connectionclient state
server state
ESTABESTABsocket.close()
Transport Layer
TCP: Overall state machineTransport Layer3-*
Transport Layer
Q1 TCP sequence numbers A TCP sender is just about to send a segment of size 100 bytes with sequence number 1234 and ack number 436 in the TCP header. What is the highest sequence number up to (and including) which this sender has received all bytes from the receiver?12334364351334536Transport Layer3-*
Transport Layer
Q2 TCP sequence numbers A TCP sender is just about to send a segment of size 100 bytes with sequence number 1234 and ack number 436 in the TCP header. Is it possible that the receiver has received byte number 1335?YesNoTransport Layer3-*
Transport Layer
Q3 TCP timeoutA TCP sender maintains a SmoothedRTT of 100ms. Suppose the next SampleRTT is 108ms. Which of the following is true of the sender?Will increase SmoothedRTT but leave the timeout unchangedWill increase timeoutWhether it increases SmoothedRTT depends on the deviation.Whether it increases the timeout depends on the deviationWill chomp on fries left over from the rdt question earlierTransport Layer3-*
Transport Layer
Q4 TCP timeoutA TCP sender maintains a SmoothedRTT of 100ms and DevRTT of 8ms. Suppose the next SampleRTT is 108ms. What is the new value of the timeout in milliseconds? (Numerical question)Transport Layer3-*
Transport Layer
Q5 TCP header fieldsWhich is the purpose of the receive window field in a TCP header?ReliabilityIn-order deliveryFlow controlCongestion controlPipelining
Transport Layer3-*
Transport Layer
Q6 TCP connection mgmtRoughly how much time does it take for both the TCP sender and receiver to establish connection state since the connect() call?RTT1.5RTT2RTT3RTT
Transport Layer3-*
Transport Layer
Q7 TCP reliabilityTCP uses cumulative ACKs like Go-back-N, but does not retransmit the entire window of outstanding packets upon a timeout. What mechanism lets TCP get away with this?Per-byte sequence and ack numbersTriple duplicate ACKsReceive window-based flow controlUsing a better timeout estimation methodKetchup (for the fries)
Transport Layer3-*
Transport Layer
Transport Layer3-*3. Transport Layer: Outline3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data transfer3.5 connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 principles of congestion control3.7 TCP congestion control
Transport Layer
Transport Layer3-*congestion:informally: too many sources sending too much data too fast for network to handledifferent from flow control!manifestations:lost packets (buffer overflow at routers)long delays (queueing in router buffers)a top-10 problem!
Principles of congestion control
Transport Layer
Transport Layer3-*Causes/costs of congestion: scenario 1 two senders, two receiversone router, infinite buffers output link capacity: Rno retransmission
maximum per-connection throughput: R/2unlimited shared output link buffersHost Aoriginal data: lin Host Bthroughput: loutlarge delays as arrival rate, lin, approaches capacity
Transport Layer
Transport Layer3-*one router, finite buffers sender retransmission of timed-out packetapp-layer input = app-layer output: lin = louttransport-layer input includes retransmissions : lin lin
finite shared output link buffersHost Alin : original dataHost Bloutl'in: original data, plus retransmitted dataCauses/costs of congestion: scenario 2
Transport Layer
Transport Layer3-*idealization: perfect knowledgesender sends only when router buffers available
finite shared output link bufferslin : original dataloutl'in: original data, plus retransmitted datacopyfree buffer space!Causes/costs of congestion: scenario 2 Host BA
Transport Layer
Transport Layer3-*lin : original dataloutl'in: original data, plus retransmitted datacopyno buffer space!Idealization: known loss packets can be lost at router with full buffersender only resends if packet known to be lost
Causes/costs of congestion: scenario 2 AHost B
Transport Layer
Transport Layer3-*lin : original dataloutl'in: original data, plus retransmitted datafree buffer space!Causes/costs of congestion: scenario 2 Idealization: known loss packets can be lost at router with full buffersender only resends if packet known to be lost
AHost B
Transport Layer
Transport Layer3-*Alinloutl'incopyfree buffer space!R/2R/2loutHost BRealistic: duplicates packets can be lost at routers with full bufferssender times out prematurely, sending two copies, both of which are delivered
Causes/costs of congestion: scenario 2
Transport Layer
Transport Layer3-*R/2loutcosts of congestion: more work for same goodputunnecessary retransmission (link carries multiple copies of packet) decreases goodput
R/2Causes/costs of congestion: scenario 2 Realistic: duplicates packets can be lost at routers with full bufferssender times out prematurely, sending two copies, both of which are delivered
Transport Layer
Transport Layer3-*Congestion collapse: dramatic reduction in throughput (how?)
Causes/costs of congestion: scenario 3 C/2C/2loutlinHistory: In the late 80s, we learned this lesson the hard way.
Transport Layer
Transport Layer3-*four sendersmultihop pathstimeout/retransmit
Q: what happens as lin and lin increase ?finite shared output link buffersHost AloutCauses/costs of congestion: scenario 3 Host BHost CHost Dlin : original datal'in: original data, plus retransmitted dataA: as red lin increases, all arriving blue pkts at upper queue are dropped, blue throughput g 0
Transport Layer
Transport Layer3-*most important cost of congestion: when packet dropped, any upstream bandwidth used for that packet wasted. wastage can ripple into a collapse!Causes/costs of congestion: scenario 3 C/2C/2loutlin
Transport Layer
Transport Layer3-*Approaches towards congestion controltwo broad approaches towards congestion control:end-end congestion control:no explicit feedback from networkcongestion inferred from end-system observed loss, delayapproach taken by TCPnetwork-assisted congestion control:routers provide feedback to end systemssingle bit indicating congestion (SNA, DECbit, TCP/IP ECN, ATM)explicit rate for sender to send at
Transport Layer
Transport Layer3-*Case study: ATM ABR congestion controlABR: available bit rate:elastic service if senders path underloaded: sender should use available bandwidthif senders path congested: sender throttled to minimum guaranteed rateRM (resource management) cells:sent by sender, interspersed with data cellsbits in RM cell set by switches (network-assisted) NI bit: no increase in rate (mild congestion)CI bit: congestion indicationRM cells returned to sender by receiver, with bits intact
Transport Layer
Transport Layer3-*Case study: ATM ABR congestion controltwo-byte ER (explicit rate) field in RM cellcongested switch may lower ER value in cellsenders send rate thus max supportable rate on pathEFCI bit in data cells: set to 1 in congested switchif data cell preceding RM cell has EFCI set, receiver sets CI bit in returned RM cellRM celldata cell
Transport Layer
Transport Layer3-*3. Transport Layer: Outline3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data transfer3.5 connection-oriented transport: TCPsegment structurereliable data transferflow controlconnection management3.6 principles of congestion control3.7 TCP congestion control
Transport Layer
TCP congestion controlCongestion avoidance using AIMDSlow start upon a timeoutFast recovery to patch occasional lossTransport Layer3-*
Transport Layer
Transport Layer3-*Congestion avoidance: AIMDapproach: sender increases transmission rate (window size), probing for usable bandwidth, until loss occursadditive increase: increase cwnd by 1 MSS every RTT until loss detectedmultiplicative decrease: cut cwnd in half after loss
cwnd: TCP sender congestion window sizeAIMD saw toothbehavior: probingfor bandwidthadditively increase window size . until loss occurs (then cut window in half)time
Transport Layer
Transport Layer3-*TCP congestion control windowsender limits transmission:
cwnd is dynamic, function of perceived congestion
TCP sending rate:roughly: send cwnd bytes, wait RTT for ACKS, then send more byteslast byteACKedsent, not-yet ACKed(in-flight)last byte sentcwndLastByteSent -LastByteAckedcwndsender sequence number space ratebytes/sec
Transport Layer
Transport Layer3-*TCP Slow Start when connection begins, increase rate exponentially until first loss event:initially cwnd = 1 MSSdouble cwnd every RTTdone by incrementing cwnd upon every ACKsummary: initial rate is slow but ramps up exponentially fastHost Aone segmentRTTHost Btwo segmentsfour segments
Transport Layer
Transport Layer3-*TCP: detecting, reacting to lossloss indicated by timeout:cwnd set to 1 MSS; window then grows exponentially (as in slow start) to threshold, then grows linearlyloss indicated by 3 duplicate ACKs: TCP RENOdup ACKs indicate network capable of delivering some segments cwnd is cut in half window then grows linearlyTCP Tahoe always sets cwnd to 1 (timeout or 3 duplicate acks)
Transport Layer
Transport Layer3-*Q: when should the exponential increase switch to linear? A: when cwnd gets to 1/2 of its value before timeout.
Implementation:variable ssthresh on loss event, ssthresh is set to 1/2 of cwnd just before loss eventTCP: slow start cong. avoidance
Transport Layer
Transport Layer3-*Summary: TCP Congestion Control
Transport Layer
Transport Layer3-*TCP throughput: Simplistic modelavg. TCP thruput as function of window size, RTT?ignore slow start, assume always data to sendW: window size (measured in bytes) where loss occursavg. window size (# in-flight bytes) is Wavg. throughput is 3/4W per RTTIn practice, W not known or fixed, so this model is too simplistic to be useful
Transport Layer
Transport Layer3-*TCP throughput: More practical modelThroughput in terms of segment loss probability, L, round-trip time T, and maximum segment size M [Mathis et al. 1997]:
Transport Layer
Transport Layer3-*TCP futures: TCP over long, fat pipesexample: 1500 byte segments, 100ms RTT, want 10 Gbps throughputrequires W = 83,333 in-flight segments as per the throughput formula to achieve 10 Gbps throughput, need a loss rate of L = 210-10 an unrealistically small loss rate!new versions of TCP for high-speed
Transport Layer
TCP throughput wrap-upSuppose sender window cwnd, receiver window rwndbottleneck capacity C round-trip time T path loss rate L max segment size MSS
Instantaneous TCP throughput = min(C, cwnd/T,rwnd/T)Steady-state TCP throughput = min(C, 1.22M/(TL))Throughput (of course) application sending rateTransport Layer3-*
Transport Layer
Transport Layer3-*fairness goal: if K TCP sessions share same bottleneck link of bandwidth R, each should have average rate of R/KTCP connection 1bottleneckroutercapacity RTCP FairnessTCP connection 2
Transport Layer
Transport Layer3-*Why is TCP fair?two competing sessions:additive increase gives slope of 1, as throughout increasesmultiplicative decrease decreases throughput proportionally RRequal bandwidth shareConnection 1 throughputConnection 2 throughputcongestion avoidance: additive increaseloss: decrease window by factor of 2congestion avoidance: additive increaseloss: decrease window by factor of 2
Transport Layer
Transport Layer3-*Fairness (more)Fairness and UDPmultimedia apps often do not use TCPrate throttling by congestion control can hurt streaming qualityinstead use UDP:send audio/video at constant rate, tolerate packet loss
Fairness, parallel TCP connectionsapplication can open many parallel connections between two hostsweb browsers do this e.g., link of rate R with 9 existing connections:new app asks for 1 TCP, gets R/10new app asks for 11 TCPs, gets R/2
Transport Layer
Q1 TCP congestion controlIn the figure, how many congestion avoidance intervals can you identify?01234Transport Layer3-*
Transport Layer
Q2 TCP congestion controlIn the figure, how many slow start intervals can you identify?01234Transport Layer3-*
Transport Layer
Q3 TCP congestion controlIn the figure, after the 16th transmission round, is segment loss detected by a triple duplicate ACK or timeout?Triple-dupTimeoutTransport Layer3-*
Transport Layer
Q4 TCP congestion controlIn the figure, after the 22nd transmission round, is segment loss detected by a triple duplicate ACK or timeout?Triple-dupTimeoutTransport Layer3-*
Transport Layer
Q5 TCP congestion controlIn the figure, what is the initial value of ssthresh?032644228Transport Layer3-*
Transport Layer
Q6 TCP congestion controlIn the figure, what is the value of ssthresh at the 18th round?Transport Layer3-*
Transport Layer
Q7 TCP congestion controlIn the figure, during what transmission round is the 70th segment sent?Transport Layer3-*
Transport Layer
Q8 TCP congestion controlIn the figure, if a loss is detected via a triple-duplicate ACK in the 26th round, what is the new value of the congestion window?Transport Layer3-*
Transport Layer
Q9 Congestion controlIn a network where the bottleneck links capacity strictly exceeds the combined sending rates of all applications, is congestion control still necessary?YesNoTransport Layer3-*
Transport Layer
Transport Layer3-*3. Summaryprinciples behind transport layer services:multiplexing, demultiplexingreliable data transferflow controlcongestion controlinstantiation, implementation in the InternetUDPTCPnext:leaving the network edge (application, transport layers)into the network core
Transport Layer
*******************Kurose and Ross forgot to say anything about wrapping the carry and adding it to low order bit**********************************************************************************************************