Project 4 Project 4 Supplemental Lecture Joe Mongeluzzi Jason Zhao Cornell CS 4411, October 26, 2012.

Slides:



Advertisements
Similar presentations
Introduction 1 Lecture 13 Transport Layer (Transmission Control Protocol) slides are modified from J. Kurose & K. Ross University of Nevada – Reno Computer.
Advertisements

1 Transport Protocols & TCP CSE 3213 Fall April 2015.
Transportation Layer (2). TCP full duplex data: – bi-directional data flow in same connection – MSS: maximum segment size connection-oriented: – handshaking.
IS333, Ch. 26: TCP Victor Norman Calvin College 1.
Transport Layer3-1 TCP. Transport Layer3-2 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r full duplex data: m bi-directional data flow in same connection.
Data Communications and Computer Networks Chapter 3 CS 3830 Lecture 16 Omar Meqdadi Department of Computer Science and Software Engineering University.
UDP & TCP Where would we be without them!. UDP User Datagram Protocol.
1 Transport Layer Lecture 9 Imran Ahmed University of Management & Technology.
1 TCP - Part I Relates to Lab 5. First module on TCP which covers packet format, data transfer, and connection management.
Transport Layer3-1 Summary of Reliable Data Transfer Checksums help us detect errors ACKs and NAKs help us deal with errors If ACK/NAK has errors sender.
Week 9 TCP9-1 Week 9 TCP 3 outline r 3.5 Connection-oriented transport: TCP m segment structure m reliable data transfer m flow control m connection management.
Flow and Error Control. Flow Control Flow control coordinates the amount of data that can be sent before receiving acknowledgement It is one of the most.
1 TCP CSE May TCP Services Flow control Connection establishment and termination Congestion control 2.
Reliable Networking Tom Roeder CS sp. Last minute questions on Part II?
Cs4411 – Operating Systems Practicum November 4, 2011 Zhiyuan Teo Supplementary lecture 4.
EEC-484/584 Computer Networks Lecture 7 Wenbing Zhao (Part of the slides are based on Drs. Kurose & Ross ’ s slides for their Computer.
CSCE 515: Computer Network Programming Chin-Tser Huang University of South Carolina.
CS415 Minithreads Project 4 Overview Adrian Bozdog (Adi)
Transport Layer3-1 Data Communication and Networks Lecture 7 Transport Protocols: TCP October 21, 2004.
EEC-484/584 Computer Networks Lecture 13 Wenbing Zhao (Part of the slides are based on Drs. Kurose & Ross ’ s slides for their Computer.
EEC-484/584 Computer Networks Lecture 16 Wenbing Zhao (Part of the slides are based on Drs. Kurose & Ross ’ s slides for their Computer.
WXES2106 Network Technology Semester /2005 Chapter 8 Intermediate TCP CCNA2: Module 10.
1 Transport Layer Computer Networks. 2 Where are we?
Transport Layer3-1 TCP sender (simplified) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum loop (forever) { switch(event) event: data received from.
Computer & Information Sciences University of Delaware
3: Transport Layer3b-1 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r full duplex data: m bi-directional data flow in same connection m MSS: maximum.
2: Transport Layer 21 Transport Layer 2. 2: Transport Layer 22 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r full duplex data: m bi-directional data.
CS332, Ch. 26: TCP Victor Norman Calvin College 1.
TCP1 Transmission Control Protocol (TCP). TCP2 Outline Transmission Control Protocol.
SELECTIVE ACKNOWLEDGEMENT (SACK) DUPLICATE SELECTIVE ACKNOWLEDGMENT
1 TCP: Reliable Transport Service. 2 Transmission Control Protocol (TCP) Major transport protocol used in Internet Heavily used Completely reliable transfer.
CSE679: Computer Network Review r Review of the uncounted quiz r Computer network review.
Chapter 5 Peer-to-Peer Protocols and Data Link Layer PART I: Peer-to-Peer Protocols ARQ Protocols and Reliable Data Transfer Flow Control.
Copyright © Lopamudra Roychoudhuri
1 TCP - Part II Relates to Lab 5. This is an extended module that covers TCP data transport, and flow control, congestion control, and error control in.
1 CS 4396 Computer Networks Lab TCP – Part II. 2 Flow Control Congestion Control Retransmission Timeout TCP:
1 TCP Timeout And Retransmission Chapter 21 TCP sets a timeout when it sends data and if data is not acknowledged before timeout expires it retransmits.
Transport Layer3-1 Transport Layer Our lives begin to end, the day we become silent about things that matter.
Today’s topic: UDP Reliable communication over UDP.
Internet Networking recitation #11
TCP as a Reliable Transport. How things can go wrong… Lost packets Corrupted packets Reordered packets …Malicious packets…
IT 424 Networks2 IT 424 Networks2 Ack.: Slides are adapted from the slides of the book: “Computer Networking” – J. Kurose, K. Ross Chapter 3: Transport.
CIS679: TCP and Multimedia r Review of last lecture r TCP and Multimedia.
TCP/IP1 Address Resolution Protocol Internet uses IP address to recognize a computer. But IP address needs to be translated to physical address (NIC).
Transmission Control Protocol (TCP) TCP Flow Control and Congestion Control CS 60008: Internet Architecture and Protocols Department of CSE, IIT Kharagpur.
DATA LINK CONTROL. DATA LINK LAYER RESPONSIBILTIES  FRAMING  ERROR CONTROL  FLOW CONTROL.
Computer Networking Lecture 16 – Reliable Transport.
NET 222: COMMUNICATIONS AND NETWORKS FUNDAMENTALS ( NET 222: COMMUNICATIONS AND NETWORKS FUNDAMENTALS (PRACTICAL PART) Tutorial 4 : Chapter 7 Data & computer.
Data Link Layer.
Chapter 3: The Data Link Layer –to achieve reliable, efficient communication between two physically connected machines. –Design issues: services interface.
Chapter 9: Transport Layer
09-Transport Layer: TCP Transport Layer.
Chapter 3 Transport Layer
TCP - Part II.
DMET 602: Networks and Media Lab
Fast Retransmit For sliding windows flow control we waited for a timer to expire before beginning retransmission of a packet TCP uses an additional mechanism.
Introduction to Networks
Instructor Mazhar Hussain
Review: UDP demultiplexing TCP demultiplexing Multiplexing?
Introduction of Transport Protocols
TCP - Part II Relates to Lab 5. This is an extended module that covers TCP flow control, congestion control, and error control in TCP.
Flow and Error Control.
CS4470 Computer Networking Protocols
CSS432 (Link Level Protocols) Reliable Transmission Textbook Ch 2.5
CS4470 Computer Networking Protocols
The Transport Layer Reliability
Chapter 5 Peer-to-Peer Protocols and Data Link Layer
Lecture 4 Peer-to-Peer Protocols and Data Link Layer
Process-to-Process Delivery: UDP, TCP
Selective Repeat.
Presentation transcript:

Project 4 Project 4 Supplemental Lecture Joe Mongeluzzi Jason Zhao Cornell CS 4411, October 26, 2012

Project 4 Today’s Lecture  Administrative Information  Sequence and ACK Numbers  Handling Lost and Duplicated Messages  Project 4 FAQ  Discussion

Project 4 Administrative Information  Project 3 is being graded  Feedback is unlikely before Project 4 Deadline  See a TA if you need help fixing up your P3 before working on P4  Project 4 deadline is November 4th, 11:59 PM.  Miniproject is NOT required for CS4411 students  Yay, however doing miniproject 2 will not negatively affect your grade in CS4410

Project 4 Seq and ack numbers Every message, regardless of type, contains a seq and ack number Seq in a packet tells the remote about the order of this packet. Ack in a packet tells the remote

Project 4 Sequence numbers  counter to keep track of how many retransmissable packets have left the socket.  What kinds of packets are eligible for retransmissions?  SYN  SYNACK  FIN  Data Messages  Increment the sequence number when sending packets that are eligible for retransmission.

Project 4 Why do we need sequence numbers?  For a window of size 1, the next packet isn’t sent until the previous packet has been acknowledged.  What is wrong with this argument? Arguments against the need for sequence numbers: 1. Packets cannot be skipped, so out-of-order packets are impossible. 2. Dropped packets are automatically retransmitted after a timeout. 3. Once an ACK is received, the next packet can be transmitted.

Project 4 Why do we need sequence numbers?  Consider what happens if the network has a very high latency. AB 100ms “ABC” Result: ABC or ABCABC?

Project 4 Why do we need sequence numbers?  Without sequence numbers, you cannot tell the difference between a fresh packet and a retransmitted one.  With sequence numbers, the remote system can discard duplicated packets.

Project 4 Acknowledgement numbers  A counter that keeps track of the sequence number of the last accepted packet.  “I have seen your packet X and everything before that.”  A packet is accepted if its sequence number is contiguous with the last accepted packet.  if the packet’s seq == local ack number+1, accept.  once a packet is accepted, update the ack number.  For a window of size 1, seq numbers will never skip, so ack numbers will never skip either.

Project 4 ACK packets  Respond to every non-ACK packet from the remote with an ACK packet.  The ACK tells the remote you got the packet and it should stop trying to retransmit that.  An ACK packet reports the current seq/ack state of the socket.  Sending an ACK packet does not perturb the state of the socket.  Do not cache ACK packets.  ACK packets are not subject to retransmission.

Project 4 Initial seq and ack numbers  Regardless of endpoint, the first packet to emerge must have a sequence number of 1.  Both endpoints initially have an ack number of 0.  Each endpoint has not seen any messages from the remote yet.  The first packet will be accepted since ack number+1 == packet seq.  “I have seen every packet up till packet 0” (and thus I am waiting for packet 1)  Counting begins when a minisocket is created.  SYN must be seq=1 ack=0.  SYNACK must be seq=1 ack=1.

Project 4 Handshaking example AB SYN (1,0) SYNACK (1,1) ACK (1,1) Observe:ACK seq=1 ack=1 not seq=2 ack=1

Project 4 Handshaking: SYN lost AB SYN (1,0) SYNACK (1,1) ACK (1,1) SYN (1,0) SYN is retransmitted on timeout. Retransmission simply sends an old packet; it does not increment seq number. SYN (1,0) 100ms 200ms

Project 4 Handshaking: SYNACK lost AB SYN (1,0) SYNACK (1,1) ACK (1,1) SYNACK retransmission may be triggered because of a server-side timeout… SYNACK (1,1) 100ms

Project 4 Handshaking: SYNACK lost AB SYN (1,0) ACK (1,1) …or in response to another SYN sent by the same client. (ie, client-side timeout) SYNACK (1,1) SYN (1,0) SYNACK (1,1) 100ms

Project 4 Data exchange AB data (10,30) ACK (10,31) ACK (30,10) data (31,10) ACKs report the current state of the socket. They do not alter the state. last sent seq=30 last sent seq=9

Project 4 Concurrent data exchange AB data (10,30) ACK (10,31) data (31, 9) ACK (31,10) Both ends can send simultaneously. This does not require special handling. last sent seq=30last sent seq=9

Project 4 Data exchange: data lost AB data (10,30) A data loss is automatically handled by the retransmission timer. last sent seq=30last sent seq=9 data (10,30) ACK (30,10) 100ms

Project 4 Data exchange: ACK lost AB If B does not get A’s ACK, it will timeout and resend the data packet until the ACK makes it back to B… last sent seq=30last sent seq=9 data (10,30) ACK (30,10) data (10,30) ACK (30,10) 100ms

Project 4 Data exchange: ACK lost AB …or if another packet sent by A happens to carry the required ack number. The dropped ACK does not have to be retransmitted. last sent seq=30last sent seq=9 data (10,30) ACK (30,10) ACK (10,31) data (31,10) 100ms

Project 4 Handling duplicate messages AB If receipt of the message typically requires an ACK reply, send an ACK reply. last sent seq=30 last sent seq=9 data (10,30) ACK (30,10) data (10,30)

Project 4 Project 4 FAQ  minisocket_* functions.  These functions are called by the user program.  You should not call these functions from within your minisocket code.  Sending to a minisocket for which there are no readers.  Send does not require a receiver to be in minisocket_receive() in order to work.  The data should be buffered unattended at the receiver’s minisocket.  Any number of sends can be done even if the receiver does not read.

Project 4 minisocket_receive()  Threads should block until some data is available for reading.  Use a semaphore, initial count set to 0.  Once unblocked, the number of bytes given to the thread can be variable, but must be < max_len  max_len is size of the user’s buffer, which may be smaller than the number of bytes available in the socket buffer.  As long as you return between 1 and max_len bytes, your function will be considered correct, but try to be efficient.  Users that want more data will have to call receive() multiple times.

Project 4 minisocket_receive()  Sockets are stream based, this is different semantics compared to datagrams  User has no notion of what packets are  The OS must transparently turn received packets into a stream of bytes for the receiver  Can you use a counting semaphore to keep track of the number of packets?  What if receive buffer is > # of packets?  What if multiple threads called received concurrently?

Project 4 Implementation hints - sending  minisocket_send must transform the input stream into a series of packets  Sender thread must block on some semaphore.  It must wake up after max retransmissions OR receipt of an ACK.  Receiving an ACK has to stop retransmissions and allow sending thread to progress.

Project 4 Implementation hints – closing socket  When a socket encounters an error or is about to close, all waiting threads must wake up and fail.  All threads blocked on send/receive must wake up.  Future calls to these functions must also fail.  You would like the ‘broadcast’ functionality of a condition variable.  But threads are blocked on semaphores.

Project 4 Questions? Questions