210 likes | 240 Views
Delve into the principles and implementation of data link layer technologies, including error detection, correction, multiple access, and reliable data transfer. Learn about framing, link access, and error detection strategies in networking.
E N D
Our goals: understand principles behind data link layer services: error detection, correction sharing a broadcast channel: multiple access link layer addressing reliable data transfer, flow control: done! instantiation and implementation of various link layer technologies Chapter 5: The Data Link Layer Network Layer
5.1 Introduction and services 5.2 Error detection and correction 5.3Multiple access protocols 5.4 Link-layer Addressing 5.5 Ethernet 5.6 Link-layer switches 5.7 PPP 5.8 Link virtualization: ATM, MPLS Link Layer Network Layer
Link Layer Services • framing, link access: • encapsulate datagram into frame, adding header, trailer • channel access if shared medium • “MAC” addresses used in frame headers to identify source, dest • different from IP address! Network Layer
Link Layer Services (more) • error detection: • errors caused by signal attenuation, noise. • receiver detects presence of errors: • signals sender for retransmission or drops frame • error correction: • receiver identifies and corrects bit error(s) without resorting to retransmission Network Layer
Data link: usual approach • Usual approach • Data link • breaks the bit stream up into discrete frames • computes the checksum for each frame • This checksum is recomputed at the destination • Breaking bit stream up • Character count • Flag bytes with byte stuffing • Starting and ending flags with bit stuffing Network Layer
Framing • First method • Uses a field in the header specifying # characters • Trouble • Count can be garbled by a transmission error Network Layer
Framing (cont’d) • Starting and ending delimiters • => flag bytes • Flag byte pattern occurring in the data • => byte stuffing Network Layer
If an escape byte occurs in the middle of the data • A framing flag byte can be • Distinguished from one in the data • By the absence or presence of an escape byte before it • If an escape byte occurs in data • It is stuffed with an escape byte • Example of byte sequences after stuffing • Single escape byte => part of an escape sequence • Double one => a single escape occurred in the data • In all cases, delivered byte sequence same as original Network Layer
Bit stuffing • Frame begins and ends with 01111110 • If sender encounters 5 consecutive 1s • Sender stuffs a 0 bit into the outgoing bit stream • Receiver destuffs the 0 bit Network Layer
5.1 Introduction and services 5.2 Error detection and correction 5.3Multiple access protocols 5.4 Link-layer Addressing 5.5 Ethernet 5.6 Link-layer switches 5.7 PPP 5.8 Link Virtualization: ATM. MPLS Link Layer Network Layer
Error detection and correction • Transmission errors are common on local loops • transmission errors are going to be with us for years • => need for error correcting or detecting codes • Error correcting codes • include enough redundant information along with block of data • To enable receiver to deduce what transmitted data was • Suitable for channels that make many errors • Error detecting codes • include only enough redundancy to allow • Receiver to deduce that an error occurred, not which error • Suitable for highly reliable channels Network Layer
Error correcting and detecting codes: terminology • A frame consists of m data bits • And r redundant, or check, bits • => total length n = m + r • The n bit (data + check bits) => n-bit codeword • Hamming distance • The # bit positions in which 2 codewords differ • Example: given 1001001 and 10110001, • 3 bits differ => hamming distance = 3 Network Layer
Error correcting and detecting code: rules • To detect d errors, you need a distance d+1 code • Example: code in which single parity bit is appended • The parity bit is chosen so that # of 1 bits is even (or odd) • A code with single parity bit has a distance 2 • => it can be used to detect single errors • To correct d errors, you need a distance 2d+1 code • Example: 0000000000, 0000011111, 1111100000 • This code has a distance 5 => can correct double errors • If 0000000111 arrives => original must have been 0000011111 Network Layer
Lower limit on the number of check bits • We want to design a code • with m message bits and r check bits • Allowing all single errors to be corrected • This requirement becomes • This put a lower limit on the number of check bits • Needed to correct a single error Network Layer
Error correcting code: Hamming code • A data bit in position k • is checked by just those check bits occurring in its expansion Network Layer
Use of Hamming code to correct burst errors Network Layer
Error detecting codes • Cyclic Redundancy Check (CRC) • is in widespread use, and called polynomial code • treats bits as 0 and 1 coefficients of polynomials • For example: 110001 represents x5 +x4 + x0 • Sender and receiver agree • upon a generator polynomial G(x) • To compute the checksum for some frame of m bits M(x) • => append a checksum to the end of frame • such that polynomial is divisible by G(x) • Receiver divides check-summed frame by G(x) • If there is a remainder => there has been an error Network Layer
Checksumming: Cyclic Redundancy Check • view data bits, D, as a binary number • choose r+1 bit pattern (generator), G • goal: choose r CRC bits, R, such that • <D,R> exactly divisible by G (modulo 2) • receiver knows G, divides <D,R> by G. If non-zero remainder: error detected! • can detect all burst errors less than r+1 bits • widely used in practice (Ethernet, 802.11 WiFi, ATM) Network Layer
Algorithm for computing the checksum • Let r be the degree of G(x) • Append r zeros to the low-order end of the frame • => xr M(x) • Divide the bit string corresponding to G(x) • Into the bit string corresponding xr M(x) using • Modulo 2 division • Subtract the remainder from xr M(x) • The result is the checksumed frame to be transmitted Network Layer
Error detecting codes: example Calculation of the polynomial code checksum. Network Layer
CRC Example Want: D.2r XOR R = nG equivalently: D.2r = nG XOR R equivalently: if we divide D.2r by G, want remainder R D.2r G R = remainder[ ] Network Layer