# Lecture 12 Layer 2 – Data Link Layer Protocols

## Presentation on theme: "Lecture 12 Layer 2 – Data Link Layer Protocols"— Presentation transcript:

Lecture 12 Layer 2 – Data Link Layer Protocols
CS 453 Computer Networks Lecture 12 Layer 2 – Data Link Layer Protocols

Error Detection There are two forms of error control
Error Correction Both involve adding extra bits to the communication stream Error detection - sensing and handling errors – resend, drop, … Error correction – sensing and correcting errors with available information

What is the simplest way to detect errors in transmitted frames? Send each frame twice Compare, if different – probable error Is this efficient? Why? Is it fool-proof? What kind of errors could slip by?

Error Detection You’re right (I hope) It is not efficient
It reduces effective data rate in half Repetitive errors to the same bit sequences would slip through Consistently dropping the first five bits

Error Detection Parity bits Simple form of error detection
Even or odd parity For 7 bits add an 8th bit such that the number of 1 bits is an even number (even parity).. …or odd (odd parity) If parity is even and the receiver gets a byte with an odd number of 1s, then error 1 1 1 1 Parity bit Data bits

Error Detection Parity bits Very efficient – adds one bit per 7 bits
Not very powerful – can detect 1 bit errors

Error Detection Two Dimensional Parity Imagine data stream as matrix
6 byte data stream Add parity bit per byte (simple parity) Add a parity byte where each bit is a parity bit for that bit position across the bytes in the frame From Peterson & Davie (2003) pg. 90

Error Detection Two Dimensional Parity Fairly efficient
Add 14 bits of redundant information to a 42 bit data stream Fairly powerful Can detect all 1, 2 and 3 bit errors Can detect some 4 bit errors Why can it detech multibit errors Can 2D parity be used to correct errors?

Error Detection Internet Checksum Add the words in a data stream
Suppose you have a stream of 16 bit integers Add them using ones complement arithmetic Sender calculates checksum …then sends data stream+checksum Receiver receives data stream+checksum Receive calculates new checksum on received data stream Compares it to the received checksum If match – probably no error If no match – probably error

Error Detection Internet Checksum Very efficient Fairly weak
Only a few bits for a very long data stream Fairly weak For example, a dropped bit in one word and a spuriously added bit in another word would not be detected - would result in same ckecksum Easy to implement in hardware or software

Error Detection CRC – Cyclic Redundancy Check
More generally knows an polynomial code CRC data stream… d bits r bits D: data bit from sender R: CRC bit

Error Detection CRC – Cyclic Redundancy Check
Sender and Receiver must agree on a r+1 bit pattern – referred to as G Some things to consider CRC calculations are done with base 2 arithmetic addition/subtraction done with XOR multiplication/division done with left/right register shifts

Error Detection CRC – Cyclic Redundancy Check What to use for R
D * 2r XOR R = nG says that D * 2r XOR R is an even multiple of G …or divisible with no remainder If we XOR R to both sides of above D * 2r = nG XOR R If we divide D * 2r by G the remainder is R R = remainder(D * 2r /G) Based on Kurose & Ross, Computer Networking: a top down structured approach using the Internet (2005) pg. 428

from: Peterson & Davie (2003) pg.95
Error Detection CRC – Cyclic Redundancy Check consider – original message D D = left shift 3 bit positions (multiply) Divide by G Remainder = R for CRC check if R is subtracted from D… D-R is evenly divisible by G If receiver gets D,R where (D-R ) /G has remainder there is an error from: Peterson & Davie (2003) pg.95

Error Detection CRC – Cyclic Redundancy Check CRC is very powerful
Can detect multibit errors Can detect burst errors < r+1 bits So where does G come from? Mathematics There are lots of codes, predetermined For example- CRC IEEE