120 likes | 130 Views
Understand key principles of reliable data transfer protocols, including rdt1-3 variations, ARQ protocol, and pipelining for increased utilization in networking. Explore lossy channels, error detection, and receiver feedback mechanisms.
E N D
CS 5565Network Architecture and Protocols Godmar Back Lecture 17
Announcements • Problem Set 1 graded • Project 1A feedback by Monday • Project 1B due March 17, 11:59pm • Will put code online this evening • Problem Set 2 due Mar 4 12:20pm • Reading Assignment: Chapter 3 • 3.1-3.3 already covered • 3.4 now CS 5565 Spring 2006
important in app., transport, link layers top-10 list of important networking topics! characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt) Principles of Reliable Data Transfer CS 5565 Spring 2006
Evolution of Assumptions perfect channel error detection: checksums, receiver feedback: acknowledgements; retransmissions Automatic Repeat reQuest (ARQ protocol) • rdt1-3 are stop-and-waitprotocols rdt1.0 bit errors rdt2.0 (redundant) retransmissions duplicates sequence numbers 0/1: “alternating bit” protocol corrupted acks rdt2.1 eliminate NAK: use ACK+seq num ---- rdt2.2 timeouts lossy channel rdt3.0 lossy channel with bit errors CS 5565 Spring 2006
New assumption:underlying channel can also lose packets (data or ACKs) checksum, seq. #, ACKs, retransmissions will be of help, but not enough Approach: 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 use of seq. #’s already handles this receiver must specify seq # of pkt being ACKed requires countdown timer rdt3.0: Channels w/ Errors and Loss CS 5565 Spring 2006
Wait for ACK0 Wait for ACK1 Wait for call 1 from above Wait for call 0 from above rdt3.0 Sender FSM rdt_send(data) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer L rdt_rcv(rcvpkt) L timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) stop_timer stop_timer timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) L rdt_send(data) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,0) ) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) start_timer L CS 5565 Spring 2006
rdt3.0 in action CS 5565 Spring 2006
rdt3.0 in action (2) CS 5565 Spring 2006
rdt3.0 works, but performance stinks example: 1 Gbps link, 15 ms e-e prop. delay, 1KB packet: Performance of rdt3.0 L (packet length in bits) 8kb/pkt T = = = 8 microsec transmit R (transmission rate, bps) 10**9 b/sec • U sender: utilization – fraction of time sender busy sending • 1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link • network protocol limits use of physical resources! CS 5565 Spring 2006
rdt3.0: stop-and-wait operation sender receiver first packet bit transmitted, t = 0 last packet bit transmitted, t = L / R first packet bit arrives RTT last packet bit arrives, send ACK ACK arrives, send next packet, t = RTT + L / R CS 5565 Spring 2006
Pipelining: 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 (“GBN”), Selective Repeat (“SR”) Pipelined Protocols CS 5565 Spring 2006
Pipelining: Increased Utilization sender receiver first packet bit transmitted, t = 0 last bit transmitted, t = L / R first packet bit arrives RTT last packet bit arrives, send ACK last bit of 2nd packet arrives, send ACK last bit of 3rd packet arrives, send ACK ACK arrives, send next packet, t = RTT + L / R Increase utilization by a factor of 3! CS 5565 Spring 2006