Lecture 10: Transpor Layer Principles of Reliable Data Transfer

Similar documents
Chapter 3 Transport Layer

CS 3516: Computer Networks

Chapter 3 outline. 3.5 connection-oriented transport: TCP segment structure reliable data transfer flow control connection management

CSC 401 Data and Computer Communications Networks

CSCE 463/612 Networks and Distributed Processing Spring 2018

Chapter 3 Transport Layer

CS 3516: Advanced Computer Networks

Last time. Mobility in Cellular networks. Transport Layer. HLR, VLR, MSC Handoff. Introduction Multiplexing / demultiplexing UDP 14-1

CSC358 Week 4. Adapted from slides by J.F. Kurose and K. W. Ross. All material copyright J.F Kurose and K.W. Ross, All Rights Reserved

CSC 4900 Computer Networks: Reliable Data Transport

CMSC 332 Computer Networks Reliable Data Transfer

COSC4377. Useful Linux Tool: screen

CMPE 150/L : Introduction to Computer Networks. Chen Qian Computer Engineering UCSC Baskin Engineering Lecture 8

Internet transport-layer protocols. Transport services and protocols. Sending and receiving. Connection-oriented (TCP) Connection-oriented

CC451 Computer Networks

Data Communications & Networks. Session 6 Main Theme Reliable Data Transfer. Dr. Jean-Claude Franchitti

Chapter III: Transport Layer

Rdt2.0: channel with packet errors (no loss!)

Transport layer: Outline

Transport layer. Our goals: Understand principles behind transport layer services: Learn about transport layer protocols in the Internet:

CSCD 330 Network Programming

Chapter 3 Transport Layer

rdt2.0 has a fatal flaw!

Transport services and protocols. Chapter 3 outline. Internet transport-layer protocols Chapter 3 outline. Multiplexing/demultiplexing

TDTS06: Computer Networks

Lecture 11: Transport Layer Reliable Data Transfer and TCP

Computer Networks & Security 2016/2017

Announcement. Homework 1 due last night, how is that? Will discuss some problems in the lecture next week

Lecture 07 The Transport Layer (TCP & UDP) Dr. Anis Koubaa

CS 655 System and Network Architectures and Implementation. Module 3 - Transport

Chapter 2: outline. 2.1 principles of network applications app architectures app requirements

CSC 8560 Computer Networks: Transport Layer

Chapter 3 outline. TDTS06 Computer networks. Principles of Reliable data transfer. Reliable data transfer: getting started

Distributed Systems. 5. Transport Protocols

Chapter 3 Transport Layer

Distributed Systems. 5. Transport Protocols. Werner Nutt

CSE 3214: Computer Network Protocols and Applications Transport Layer (Part 2) Chapter 3 outline. UDP checksum. Port numbers

Chapter III: Transport Layer

Lecture 9: Transpor Layer Overview and UDP

CMPE 150/L : Introduction to Computer Networks. Chen Qian Computer Engineering UCSC Baskin Engineering Lecture 7

Course on Computer Communication and Networks. Lecture 4 Chapter 3; Transport Layer, Part A

Course on Computer Communication and Networks. Lecture 4 Chapter 3; Transport Layer, Part A

CSC 401 Data and Computer Communications Networks

Chapter 3: Transport Layer

Chapter 3 outline. Chapter 3: Transport Layer. Transport vs. network layer. Transport services and protocols. Internet transport-layer protocols

Lecture 5. Transport Layer. Transport Layer 1-1

Chapter 3: Transport Layer Part A

Transport Layer. CMPS 4750/6750: Computer Networks

Chapter 3 Transport Layer

The Transport Layer Reliability

Chapter 3 Transport Layer

COMP211 Chapter 3 Transport Layer

Chapter 3: Transport Layer

Chapter 3: Transport Layer

The Transport Layer Multiplexing, Error Detection, & UDP

Chapter 3 Transport Layer

Reliable Transport : Fundamentals of Computer Networks Bill Nace

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Transport Layer. Chapter 3. Computer Networking: A Top Down Approach

Chapter 3: Transport Layer. Chapter 3 Transport Layer. Chapter 3 outline. Transport services and protocols

CSCE 463/612 Networks and Distributed Processing Spring 2018

Chapter 3 Transport Layer

Chapter 3: Transport Layer

3.4 Principles of Reliable Data Transfer

Chapter 3: Transport Layer

Chapter 3 Transport Layer. Chapter 3: Transport Layer. Chapter 3 outline. Our goals: understand principles behind transport layer services:

Computer Networks. Transport Layer

Chapter 3 Transport Layer

Chapter 3: Transport Layer

Lecture 13: Transport Layer Flow and Congestion Control

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Chapter 3: Transport Layer. Computer Networks. Transport Layer. Transport services and protocols. Chapter 3 outline. Bu-Ali Sina University, Hamedan

ELEN Network Fundamentals Lecture 15

Computer Networks 1 (Mạng Máy Tính 1) Lectured by: Dr. Phạm Trần Vũ

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Transport services and protocols. Chapter 3 Transport Layer. Chapter 3: Transport Layer. Transport vs. network layer

EC441 Fall 2018 Introduction to Computer Networking Chapter 3: Transport Layer

Chapter 3: Transport Layer. Chapter 3 Transport Layer. Chapter 3 outline. Transport services and protocols

Architettura di Reti

Chapter 3 Transport Layer

Chapter 3 Transport Layer

CS/ECE 438: Communication Networks Fall Transport Layer

Chapter 3 Transport Layer. Chapter 3: Transport Layer. Chapter 3 outline

Chapter 3 Transport Layer

Chapter 3 Transport Layer

internet technologies and standards

Protocoles et Interconnexions

Chapter 3: Transport Layer. Chapter 3 Transport Layer. Chapter 3 outline. Transport services and protocols

Chapter 3 Transport Layer

Chapter 3. Transport Layer. Computer Networking: A Top Down Approach 5th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009.

Chapter 3: Transport Layer. Chapter 3 Transport Layer. Transport Services and Protocols. Chapter 3 Outline

Lecture 15: Transport Layer Congestion Control

Chapter 3. Kultida Rojviboonchai, Ph.D. Dept. of Computer Engineering Faculty of Engineering Chulalongkorn University

CSCI Computer Networks Spring 2017

CSCI Computer Networks Fall 2016

Chapter 3 Transport Layer

Transcription:

Lecture 10: Transpor Layer Principles of Reliable Data Transfer COMP 332, Spring 2018 Victoria Manfredi Acknowledgements: materials adapted from Computer Networking: A Top Down Approach 7 th edition: 1996-2016, J.F Kurose and K.W. Ross, All Rights Reserved as well as from slides by Abraham Matta at Boston University, and some material from Computer Networks by Tannenbaum and Wetherall.

1. Announcements homework 4 extension until Thursday at 11:59p comments on how coding will be graded homework 5 posted 2. Headers and payloads recap 3. Reliable data transport NAKs and ACKs coping with garbled ACKs and NAKs NAK-free protocol channels with errors and loss pipelined protocols go-back-n and selective repeat Why are we looking at? To help you understand why TCP operates the way it does (we ll cover next week) seq #s in practice 2

Headers and Payloads vumanfredi@wesleyan.edu 3

Link layer header Link data (i.e., payload) Network layer header Network data (i.e., payload) Transport (e.g., TCP) header Transport data (i.e., payload) App layer header App data (i.e., payload) Each layer only looks at the header associated with that layer vumanfredi@wesleyan.edu 4

Reliable Data Transport vumanfredi@wesleyan.edu 5

Our plan incrementally develop sender, receiver sides of reliable data transfer protocol (rdt) consider only unidirectional data transfer but control info will flow in both directions! use finite state machines (FSM) to specify sender, receiver Event causing state transition Actions taken on state transition State: when in this state, next state is uniquely determined by next event state 1 Event Actions state 2 vumanfredi@wesleyan.edu 6

Reliable Data Transport vumanfredi@wesleyan.edu 7

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 call from above rdt_send(data) packet = make_pkt(data) udt_send(packet) call from below rdt_rcv(packet) extract (packet,data) deliver_data(data) sender receiver Unreliable data transfer protocol would look the same 8

Reliable Data Transport vumanfredi@wesleyan.edu 9

Underlying channel may flip bits in packet checksum to detect bit errors Q: how to recover from errors? How do humans recover from errors during conversation? vumanfredi@wesleyan.edu 10

Problem: underlying channel may flip bits in packet how to detect and recover from errors? Solution Checksum to detect bit errors Acknowledgements (ACKs) receiver explicitly tells sender that pkt received OK Negative acknowledgements (NAKs) receiver explicitly tells sender that pkt had errors sender retransmits pkt on receipt of NAK New mechanisms in rdt2.0 (beyond rdt1.0) error detection feedback: control msgs (ACK,NAK) from receiver to sender vumanfredi@wesleyan.edu 11

rdt_send(data) sndpkt = make_pkt(data, checksum) call from above rdt_rcv(rcvpkt) && isack(rcvpkt) L sender ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) Stop and wait Sender sends one packet, then waits for receiver response receiver rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) vumanfredi@wesleyan.edu 12

rdt_send(data) snkpkt = make_pkt(data, checksum) call from above rdt_rcv(rcvpkt) && isack(rcvpkt) L sender ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) receiver rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) vumanfredi@wesleyan.edu 13

rdt_send(data) snkpkt = make_pkt(data, checksum) call from above rdt_rcv(rcvpkt) && isack(rcvpkt) L sender ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) receiver rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) vumanfredi@wesleyan.edu 14

What if ACK/NAK corrupted? NAK corrupted to ACK sender may not retransmit when actually needed new packet seen as duplicate ACK corrupted to NAK sender may retransmit packet when not needed duplicate seen as new packet ACK/NAK just corrupted (no seq #s on pkt/ack just yet, using only for clarity) NAK corrupted to ACK sender receiver rcv 1, error rcv 1, no error ack1 rcv 1, no error What do you do? Just assume NAK and resend? vumanfredi@wesleyan.edu 15 0 1 2 pkt0 ack0 pkt1 X nak1 pkt2 rcv 0, no error ACK corrupted to NAK sender receiver 0 0 ack1 nak1 pkt0 X ack0 pkt0 rcv 0, no error

Reliable Data Transport vumanfredi@wesleyan.edu 16

Problems underlying channel may flip bits in packet packets, ACKs, NAKs may be garbled Solution Checksum for both packets and ACKs/NAKs to detect bit errors Acknowledgements (ACKs) receiver explicitly tells sender that pkt received OK Negative acknowledgements (NAKs) receiver explicitly tells sender that pkt had errors sender retransmits pkt on receipt of NAK Sender retransmits current pkt if ACK/NAK corrupted adds sequence # to each pkt receiver discards duplicate pkt vumanfredi@wesleyan.edu 17

Only 2 seq #s: 0, 1 No channel reordering of pkts rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt) L rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isnak(rcvpkt) ) rdt_send(data) sndpkt = make_pkt(0, data, checksum) call 0 from above ACK or NAK 1 rdt_send(data) ACK or NAK 0 call 1 from above rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isnak(rcvpkt) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt) sndpkt = make_pkt(1, data, checksum) L vumanfredi@wesleyan.edu 18

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) sndpkt = make_pkt(ack, chksum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) 0 from below 1 from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) sndpkt = make_pkt(ack, chksum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) vumanfredi@wesleyan.edu 19

Sender Seq # added to pkt 2 seq # s (0,1) suffice Q: Why? Stop-and-wait protocol Checks if received ACK/NAK corrupted Twice as many states state must remember whether expected pkt should have seq # 0 or 1 Checks Receiver if received packet is corrupted or duplicate state indicates whether 0 or 1 is expected pkt seq # Note receiver cannot know if its last ACK/NAK received OK at sender vumanfredi@wesleyan.edu 20

Reliable Data Transport vumanfredi@wesleyan.edu 21

Same functionality as rdt2.1, using ACKs only instead of NAK, receiver sends ACK for last pkt received OK receiver must explicitly include seq # of pkt being ACKed Duplicate ACK at sender results in same action as NAK: retransmit current pkt vumanfredi@wesleyan.edu 22

rdt_rcv(rcvpkt) && (corrupt(rcvpkt) has_seq1(rcvpkt)) rdt_send(data) sndpkt = make_pkt(0, data, checksum) call 0 from above 0 from below ACK 0 sender FSM fragment receiver FSM fragment rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,1) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,0) L rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack1, chksum) 23

Reliable Data Transport vumanfredi@wesleyan.edu 24

Problems underlying channel may flip bits in packet both data and ACKs may be garbled underlying channel can also lose packets both data and ACKs checksum, seq. #, ACKs, retransmissions will be of help but not enough Solution: add countdown timer sender waits reasonable amount of time for ACK retransmits if no ACK received in this time if pkt (or ACK) just delayed (not lost) retransmission will be duplicate, but seq # s already handles this receiver must specify seq # of pkt being ACKed vumanfredi@wesleyan.edu 25

rdt_rcv(rcvpkt) L call 0from above rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,1) stop_timer timeout start_timer rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,0) ) L Why do nothing? Why not resend pkt0? Because sender doesn t know whether ack1 means pkt 0 garbled or pkt 1 duplicate received. By not resending pkt 0, sender doesn t introduce potentially unnecessary (even if valid) traffic: saves bandwidth Wait for ACK1 rdt_send(data) sndpkt = make_pkt(0, data, checksum) start_timer rdt_send(data) Wait for ACK0 call 1 from above sndpkt = make_pkt(1, data, checksum) start_timer rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,1) ) L timeout start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,0) stop_timer rdt_rcv(rcvpkt) L vumanfredi@wesleyan.edu 26

sender receiver sender receiver send pkt0 rcv ack0 send pkt1 rcv ack1 send pkt0 pkt0 ack0 pkt1 ack1 pkt0 ack0 (a) no loss rcv pkt0 send ack0 rcv pkt1 send ack1 rcv pkt0 send ack0 send pkt0 rcv ack0 send pkt1 timeout resend pkt1 rcv ack1 send pkt0 pkt0 ack0 pkt1 X loss pkt1 ack1 pkt0 ack0 rcv pkt0 send ack0 rcv pkt1 send ack1 rcv pkt0 send ack0 (b) packet loss vumanfredi@wesleyan.edu 27

sender receiver sender receiver send pkt0 rcv ack0 send pkt1 timeout resend pkt1 rcv ack1 send pkt0 pkt0 ack0 pkt1 ack1 X loss pkt1 ack1 pkt0 ack0 rcv pkt0 send ack0 rcv pkt1 send ack1 rcv pkt1 (detect duplicate) send ack1 rcv pkt0 send ack0 send pkt0 rcv ack0 send pkt1 timeout resend pkt1 rcv ack1 send pkt0 pkt0 ack0 pkt1 ack1 pkt1 pkt0 ack1 ack0 rcv pkt0 send ack0 rcv pkt1 send ack1 rcv pkt1 (detect duplicate) send ack1 rcv pkt0 send ack0 (c) ACK loss (d) premature timeout/ delayed ACK vumanfredi@wesleyan.edu 28

Channel problems Corrupted packets Duplicate packets Reordered packets (haven t talked explicitly about reordering yet) Delayed packets Dropped packets Checksum Acknowledgements Sequence #s Retransmissions and buffering Seq #s Protocol solutions Timeouts and timers Acknowledgements Retransmissions and buffering # of seq #s must be > 2x window size if reordering vumanfredi@wesleyan.edu 29

Reliable Data Transport vumanfredi@wesleyan.edu 30

rdt3.0 is correct, but awful performance e.g., 1 Gbps link, 15 ms prop. delay, 8000 bit (=1KB) packet D trans = L R 8000 bits = 10 9 = 8 µsec bits/sec U sender : utilization is fraction of time sender busy sending U sender = Time spent sending stuff L / R RTT + L / R = Total time we re considering.008 30.008 = 0.00027 If RTT=30 msec, 1KB pkt every 30 msec 33kB/sec thruput over 1 Gbps link network protocol limits use of physical resources! vumanfredi@wesleyan.edu 31

first packet bit transmitted, t = 0 last packet bit transmitted, t = L / R sender receive r RTT first packet bit arrives last packet bit arrives, send ACK ACK arrives, send next packet, t = RTT + L / R U sender = Time spent sending stuff L / R RTT + L / R = Total time we re considering.008 30.008 = 0.00027 Problem: Keeping the pipe full (i.e. maintain high link utilization) 32

How? get rid of stop-and-wait Instead: pipelining (also called sliding-window protocols) sender allows multiple, in-flight, yet-to-be-acknowledged pkts send up to N packets at a time: N packets in flight, unacked range of seq #s must be increased sender needs more memory to buffer outstanding unacked packets Achieves higher link utilization than stop-and-wait 33

3-packet pipelining example sender receiver first packet bit transmitted, t = 0 last bit transmitted, t = L / R Full duplex lin Can send and receive a RTT ACK arrives, send next packet, t = RTT + L / R first packet bit arrives last packet bit arrives, send ACK last bit of 2 nd packet arrives, send ACK last bit of 3 rd packet arrives, send ACK 3-packet pipelining increases utilization by a factor of 3! U sender = Time spent sending stuff 3L / R RTT + L / R = Total time we re considering.0024 30.008 = 0.00081 vumanfredi@wesleyan.edu 34

Sent N packets without receiving ACKs Q: How does receiver ACK packets now? 1. Cumulative ACKs: used in Go-Back-N protocol receiver only sends cumulative ack doesn t ack packet if there s a gap sender has timer for oldest unacked packet when timer expires, retransmit all unacked packets packets received correctly may be retransmitted 2. Selective ACKs: used in Selective Repeat protocol receiver sends individual ack for each packet sender has timer for each unacked packet when timer expires, retransmit only that unacked packet only corrupted/lost packets are retransmitted 35

Sliding window how sender keeps track of what it can send window: set of N adjacent seq #s only send packets in window If window large enough, will fully utilize link vumanfredi@wesleyan.edu 36