cps 114: introduction to computer networks lecture 4: reliable transmission xiaowei yang...

39
CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang [email protected]

Upload: everett-kelman

Post on 15-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

CPS 114: Introduction to Computer Networks

Lecture 4: Reliable Transmission

Xiaowei Yang

[email protected]

Page 2: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Overview

• Link layer functions– Encoding– Framing– Error detection– Reliable transmission

Page 3: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Clock-based Framing

• Synchronous Optical Network (SONET)– A complex protocol

• Each frame is 125 us long, 810bytes = 125 us * 51.84Mbps– 9 rows of 90 bytes each– First 3 bytes are overhead– First two bytes of each frame has a special pattern marking the start of a frame

• When the special pattern turns up in the right place enough times (every 810B), a receive concludes it’s in sync.

• STS-1/OC-1 frame

• 51.840Mbps

• The slowest SONET link

Page 4: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Synchronized timeslots as placeholder

• Real frame data may float inside

Page 5: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Overview

• Link layer functions– Encoding– Framing– Error detection– Reliable transmission

Page 6: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Error detection

• Error detection code adds redundant information to detect errors– Analogy: sending two copies of the same message– Parity– Checksum– CRC

• Error correcting code: more sophisticated code that can correct errors

Page 7: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Two-dimensional parity

• Even parity bit– Make an even number of 1s in each row and column

• Detect all 1,2,3-bit errors, and most 4-bit errors

A sample frame of six bytes

Page 8: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Internet checksum algorithm

• Basic idea– Add all the words transmitted and then send the sum. – Receiver does the same computation and compares the

sums

• IP checksum– Adding 16-bit short integers using 1’s complement

arithmetic– Take 1’s complement of the result

Page 9: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

1’s complement

• -x is each bit of x inverted• If there is a carry bit, add 1 to the sum• Example: 4-bit integer

– -3: 1100 (invert of 0011)– -4: 1011 (invert of 0100)– -3 + -4 = 0111 + 1 = 1000 (invert of 0111 (-7))

Page 10: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

IP checksum implementation (used in labs)

• uint16_t cksum (const void *_data, int len) { const uint8_t *data = _data; uint32_t sum;

 for (sum = 0;len >= 2; data += 2, len -= 2)   sum += data[0] << 8 | data[1]; if (len > 0)   sum += data[0] << 8; while (sum > 0xffff)   sum = (sum >> 16) + (sum & 0xffff); sum = htons (~sum); return sum ? sum : 0xffff;}

Page 11: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Remarks

• Can detect 1 bit error• But not all two-bits

– One increases the sum, and one decreases it

• Efficient for software implementation– Needs to be done for every packet inside a router!

Page 12: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Cyclic Redundancy Check

• A branch of finite fields

• High-level idea:– Represent an n+1-bit message with an n degree polynomial

M(x)– Divide the polynomial by a k-bit divisor C(x)– k-bit CRC: remainder after divided by a degree-k divisor

polynomial– Send Message + CRC that is dividable by C(x)

Page 13: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Polynomial arithmetic modulo 2

– B(x) can be divided by C(x) if B(x) has higher degree

– B(x) can be divided once by C(x) if of same degree– Remainder of B(x)/C(x) = B(x) – C(x)– Substraction is done by XOR each pair of

matching coefficients

Page 14: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

CRC algorithm

1. Multiply M(x) by x^k. Add k zeros to Message. Call it T(x)

2. Divide T(x) by C(x) and find the remainder

3. Send P(x) = T(x) – remainder• Append remainder to T(x)

• P(x) dividable by C(x)

Page 15: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

An example

• 8-bit msg– 10011010

• Divisor (3bit CRC)– 1101

Page 16: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

How to choose a divisor

• Complicated• Intuition: unlikely to be divided evenly by an

error• Find C(x) by looking it up in a book

Page 17: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Hardware implementation

• Very efficient: XOR operations• 0 to k-1 registers (k-bit shift registers)• If nth (n < k) term is not zero, places an XOR

gate• x3 + x2 + 1

Page 18: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Overview

• Link layer functions– Encoding– Framing– Error detection– Reliable transmission

Page 19: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Reliable transmission• What to do if a receiver detects bit errors?• Two high-level approaches

– Forward error correction (FEC): the correction of errors handled in advance by sending

– Retransmission (lab 1) • Acknowledgements: a small piece of control

information sent back to its peer acknowledging the receipt of a frame

– Can be “piggybacked” on data packets• Timeouts: if a sender does not receive an ack after some

time, retransmit the original frame• Also called Automatic repeat request (ARQ)

Page 20: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Stop-and-wait

• Send one frame, wait for an ack, and send the next

• Retransmit if times out

• Note in the last figure (d), there might be confusion: a new frame, or a duplicate?

Page 21: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Sequence number

• Add a sequence number to each frame to avoid the ambiguity

Page 22: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Stop-and-wait drawback

• Revisiting bandwidth-delay product– Total delay/latency = transmission delay +

propagation delay + queuing• Queuing is the time packet sent waiting at a router’s

buffer• Will revisit later (no sweat if you don’t get it now)

Page 23: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Delay * bandwidth product

• For a 1Mbps pipe, it takes 8 seconds to transmit 1MB. If the link latency is less than 8 seconds, the pipe is full before all data are pumped into the pipe

• For a 1Gbps pipe, it takes 8 ms to transmit 1MB.

Page 24: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Stop-and-wait drawback

• A 1Mbps link with a 100ms two-way delay (round trip time, RTT)

• 1KB frame size• Throughput = 1KB/ (1KB/1Mbps + 100ms) =

74Kbps << 1Mbps• Delay x bandwidth = 100Kb• So we could send ~12 frames before the pipe is full!• Throughput = 100Kb/(1KB/1Mbps + 100ms) =

926Kbps

Page 25: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Sliding window

• Key idea: allowing multiple outstanding (unacked) frames to keep the pipe full

Page 26: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Sliding window on sender• Assign a sequence number (SeqNum) to each

frame• Maintains three variables

– Send window size (SWS) that bounds the number of unacked frames the sender can transmit

– Last ack received (LAR) that denotes the sequence number of the last ACK received

– Last frame sent (LFS) that denotes the sequence number of the last frame sent

• Invariant: LFS – LAR ≤ SWS

Page 27: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

• Sender actions– When an ACK arrives, moves LAR to the right,

opening the window to allow the sender to send more frames

– If a frame times out before an ACK arrives, retransmit

Slide window this way when an ACK arrives

Page 28: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Sliding window on receiver• Maintains three window variables

– Receive window size (RWS) that bounds the number of out-of-order frames it’s willing to receive

– Largest acceptable frame (LAF) denotes the sequence number of that frame

– Last frame received (LFR) denotes the sequence number of last frame received

• Invariant– LAF – LFR ≤ RWS

Page 29: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

• When a frame with SeqNum arrives– Discards it if out of window

• Seq ≤ LFR or Seq > LAF– If in window, decides what to ACK

• Cumulative ack: a variable SeqNumToAck denotes the largest sequence number not acked but all frames with a sequence number smaller than it have been acked

• Acks SeqNumToAck even if higher-numbered packets have been received

• Sets LFR = SeqNumToAck, LAF = LFR + RWS• Updates SeqNumToAck

Page 30: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Finite sequence numbers

• Things may go wrong when SWS=RWS, SWS too large

• Example– 3-bit sequence number, SWS=RWS=7– Sender sends 0, …, 6; receiver acks, expects (7,0, …, 5),

but all acks lost– Sender retransmits 0,…,6; receiver thinks they are new

• SWS < (MaxSeqNum+1)/2– Alternates between first half and second half of sequence

number space as stop-and-wait alternates between 0 and 1

Page 31: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Sliding window protocol (SWP) implementation

typedef u_char SwpSeqno;

typedef struct {

SwpSeqno SeqNum; /* sequence number of this frame */

SwpSeqno AckNum; /* ack of received frame */

u_char Flags; /* up to 8 bits' worth of flags */

} SwpHdr;

Your code will look very different!

Page 32: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

typedef struct {/* sender side state: */SwpSeqno LAR; /* seqno of last ACK received */SwpSeqno LFS; /* last frame sent */Semaphore sendWindowNotFull;SwpHdr hdr; /* preinitialized header */struct sendQ_slot {Event timeout; /* event associated with send-timeout */Msg msg;

} sendQ[SWS];

/* receiver side state: */SwpSeqno NFE; /* seqno of next frame expected */struct recvQ_slot {int received; /* is msg valid? */Msg msg;} recvQ[RWS];

} SwpState;

Page 33: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

static intsendSWP(SwpState *state, Msg *frame){

struct sendQ_slot *slot;hbuf[HLEN];/* wait for send window to open */semWait(&state->sendWindowNotFull);state->hdr.SeqNum = ++state->LFS;slot = &state->sendQ[state->hdr.SeqNum % SWS];store_swp_hdr(state->hdr, hbuf);msgAddHdr(frame, hbuf, HLEN);msgSaveCopy(&slot->msg, frame);slot->timeout = evSchedule(swpTimeout, slot,SWP_SEND_TIMEOUT);return sendLINK(frame);

}

Page 34: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

static intdeliverSWP(SwpState state, Msg *frame){ SwpHdr hdr; char *hbuf; hbuf = msgStripHdr(frame, HLEN); load_swp_hdr(&hdr, hbuf) if (hdr->Flags & FLAG_ACK_VALID) { /* received an acknowledgment---do SENDER side */ if (swpInWindow(hdr.AckNum, state->LAR + 1, state->LFS)) { do {

struct sendQ_slot *slot;slot = &state->sendQ[++state->LAR % SWS];evCancel(slot->timeout);msgDestroy(&slot->msg);semSignal(&state->sendWindowNotFull);

} while (state->LAR != hdr.AckNum); } }

Page 35: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

if (hdr.Flags & FLAG_HAS_DATA) {struct recvQ_slot *slot;/* received data packet---do RECEIVER side */slot = &state->recvQ[hdr.SeqNum % RWS];if (!swpInWindow(hdr.SeqNum, state->NFE, state->NFE + RWS - 1)) {/* drop the message */return SUCCESS;}msgSaveCopy(&slot->msg, frame);slot->received = TRUE;if (hdr.SeqNum == state->NFE) { Msg m; while (slot->received) { deliverHLP(&slot->msg); msgDestroy(&slot->msg); slot->received = FALSE;

slot = &state->recvQ[++state->NFE % RWS]; } /* send ACK: */ prepare_ack(&m, state->NFE - 1); sendLINK(&m); msgDestroy(&m); }} return SUCCESS; }

Page 36: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

static boolswpInWindow(SwpSeqno seqno, SwpSeqno min, SwpSeqno max){ SwpSeqno pos, maxpos; pos = seqno - min; /* pos *should* be in range [0..MAX)*/ maxpos = max - min + 1; /* maxpos is in range [0..MAX]*/ return pos < maxpos;}

Page 37: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Flow control with sliding window

• Remark: perhaps the best-known algorithm in computer networking

• Multiple functions– Reliable deliver frames over a link– In-order delivery to upper layer protocol– Flow control

• Not to overun a slow slower

– Congestion control (later)• Not to congest the network

Page 38: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Other ACK mechanisms• NACK: negative acks for packets not received

– unnecessary, as sender timeouts would catch this information

• SACK: selective ACK the received frames– + No need to send duplicate packets– - more complicated to implement– Newer version of TCP has SACK

Page 39: CPS 114: Introduction to Computer Networks Lecture 4: Reliable Transmission Xiaowei Yang xwy@cs.duke.edu

Conclusion

• A lot for today– CRC– Reliability

• FEC• Stop-and-Wait• Sliding window