160 likes | 333 Views
CENG415 – Communication Networks. Lectures 8 Reliable Data Transfer – How?. Transport layer. We will cover Transport-layer services Multiplexing and demultiplexing Connectionless transport: UDP Principles of reliable data transfer Connection-oriented transport: TCP segment structure
E N D
CENG415 – Communication Networks Lectures 8 Reliable Data Transfer – How?
Transport layer We will cover • Transport-layer services • Multiplexing and demultiplexing • Connectionless transport: UDP • Principles of reliable data transfer • Connection-oriented transport: TCP • segment structure • reliable data transfer • flow control • connection management • Principles of congestion control • TCP congestion control
Rdt 3.0 Remember that packets are numbered 0, 1, 0, 1, …
Rdt 3.0 Receiver acknowledge the received message. Sender manage resending if needed
Performance of RDT 3.0 Example to understand performance: • Link: 1Gbps • 15 ms end-to-end propagation delay • Packet of 1KB • Usender : Utilization – Is the portion of time sender is busy sending • It is taking the sender 30msec to send 1kB packet (round trip) before being able to send another packet. • The sender can send 33kB/sec over a link with throughput of 1Gbps • The link is used at 0.027% of its capacity
rdt 3.0 stop and wait operation sender receiver first packet bit transmitted, t = 0 last packet bit transmitted, t = L / R first bit arrives RTT last bit arrives, send ACK ACK arrives, send next packet, t = RTT + L / R U is the efficiency OR channel utilization factor
Pipelined protocols Pipelining: sender can send more than one packet at a time In fact, sender can send as much as possible of packets. • Range of sequence numbers must be increased • All packets still to be acknowledged • buffering at sender and/or receiver (at the transportation layer) What we send to the application layer should be ordered. However, packets might not arrive in order buffering Two generic forms of pipelined protocols: • go-Back-N • Selective repeat
Pipelining: Increased utilization sender receiver first packet bit transmitted, t = 0 last bit transmitted, t = L / R • Window: Number of bits that can be sent before waiting for ACK first packet bit arrives RTT last packet bit arrives, send ACK 1 last bit of 2nd packet arrives, send ACK 2 last bit of 3rd packet arrives, send ACK 3 ACK arrives, send next packet, t = RTT + L / R If L/R << RTT and Window = 3L, then ThroughputRt = R*U = (Window/RTT)
Go-back-N Strategy to acknowledge packets Sender: • k-bit sequence number in packet header • “window” of up to N, consecutive unacknowledged packets allowed • ACK(n): ACKs all packets up to, including sequence number n • “cumulative ACK”. May receive duplicate ACKs (see receiver)
Go-back-N • Sender: • Define: • base: First packet in the window (all packets from 1 to base -1) • are received and acknowledged • Window: number of packets that can be transmitted at the same time without being acknowledged • timer for each packet sent • If received ACK correspond to base • update base = base + 1 • Slide the window • timeout(n): retransmit pkt n and all higher seq # pkts in window
Go-back-N • Receiver: • Deliver in order packets to the upper layer • Set lastdelivered to the sequence number of the last packet delivered to the upper layer • Set expectedseqnum= lastdelivered + 1 • Always send ACK for correctly-received packet with highest in-order sequence num (last packet delivered to the upper layer) • may generate duplicate ACKs • need only remember expectedseqnum • out-of-order packets: • discard (don’t buffer) -> no receiver buffering • Re-acknowledge packet with highest in-order sequence number
Selective repeat • Receiver individually acknowledges all correctly received 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 unACKedpkt • Sender window • N consecutive seq #’s • again limits seq #s of sent, unACKedpkts
Selective repeat • Receiver • pkt n in [rcvbase, rcvbase+N-1] • send ACK(n) • out-of-order: buffer • in-order: • deliver (also deliver buffered, in-order pkts), advance window to next not-yet-received pkt • pkt n in [rcvbase-N,rcvbase-1] • ACK(n) • otherwise: • ignore Sender data from above : • if next available seq # in window, send pkt timeout(n): • resend pkt n, restart timer ACK(n) in [sendbase,sendbase+N]: • mark pkt n as received • if n smallest unACKedpkt, advance window base to next unACKedseq #