1
play

1 Two-Dimensional Parity Internet Checksum Use 1-dimensional - PDF document

Error Coding Parity 1-bit error detection with parity Transmission process may introduce errors into a message. Add an extra bit to a code to ensure an even (odd) number of 1s Single bit errors versus burst errors Every


  1. Error Coding Parity 1-bit error detection with parity Transmission process may introduce errors into a   message. Add an extra bit to a code to ensure an even (odd) number  of 1s Single bit errors versus burst errors  Every code word has an even (odd) number of 1s  Detection:  Requires a convention that some messages are invalid  Hence requires extra bits  An (n,k) code has codewords of n bits with k data bits and  111 011 r = (n-k) redundant check bits 01 11 010 110 Parity Correction Valid  Encoding: code Forward error correction: many related code words map to words  00 White – invalid 000 10 100 the same data word (error) 001 101 Detect errors and retry transmission  Basic Concept: Voting Hamming Distance Hamming distance of two bit  1-bit error correction with voting 1 0 1 1 0  HD=2 strings = number of bit 1 1 0 1 0 Every codeword is transmitted n times  positions in which they differ. If the valid words of a code  have minimum Hamming distance D, then D-1 bit errors can be detected. 111 If the valid words of a code 011  Voting: 010 110 have minimum Hamming Valid White – correct to 1 code 0 1 distance D, then [(D-1)/2] bit words 000 Blue - correct to 0 100 errors can be corrected. 001 101 Digital Error Detection Examples Techniques Two-dimensional parity  Parity  Detects up to 3-bit errors  111 011 Good for burst errors  01 11 010 110 Parity IP checksum Valid  Encoding: code Simple addition  words Simple in software 00 10 White – invalid 000 100  (error) Used as backup to CRC 001 101  Cyclic Redundancy Check (CRC)  Powerful mathematics  Voting  Tricky in software, simple in hardware  Used in network adapter  111 011 Voting: 010 110 Valid White – correct to 1 code 0 1 words 000 Blue - correct to 0 100 001 101 1

  2. Two-Dimensional Parity Internet Checksum Use 1-dimensional parity Idea   Add up all the words Add one bit to a 7-bit code to ensure an   Parity even/odd number of 1s Transmit the sum  Bits Internet Checksum Add 2nd dimension   0101001 1 Use 1’s complement addition on 16bit codewords Add an extra byte to frame   1101001 0 Example Bits are set to ensure even/odd number of   Codewords: -5 -3 1s in that position across all bytes in frame  Data 1011110 1 1’s complement binary: 1010 1100  Comments  1’s complement sum 1000  0001110 1 Catches all 1-, 2- and 3-bit and most 4-bit  Comments  errors 0110100 1 Small number of redundant bits  Easy to implement  1011111 0 Not very robust  1111011 0 Parity Byte Cyclic Redundancy Check IP Checksum (CRC) u_short cksum(u_short *buf, int count) { Goal  register u_long sum = 0; Maximize protection, Minimize extra bits  while (count--) { Idea  sum += *buf++; Add k bits of redundant data to an n-bit message  if (sum & 0xFFFF0000) { N-bit message is represented as a n-degree polynomial with each bit in  /* carry occurred, so wrap around */ the message being the corresponding coefficient in the polynomial sum &= 0xFFFF; Example  sum++; Message = 10011010  } Polynomial  } = 1 ∗ x 7 + 0 ∗ x 6 + 0 ∗ x 5 + 1 ∗ x 4 + 1 ∗ x 3 + 0 ∗ x 2 + 1 ∗ x + 0 return ~(sum & 0xFFFF); = x 7 + x 4 + x 3 + x } CRC CRC - Sender Steps Select a divisor polynomial C(x) with degree k   T(x) = M(x) by x k (zero extending)  Example with k = 3:  Find remainder, R(x), from T(x)/C(x)  C(x) = x 3 + x 2 + 1  P(x) = T(x) – R(x) ⇒ M(x) followed by R(x)  Transmit a polynomial P(x) that is evenly divisible  Example  by C(x) M(x) = 10011010 = x 7 + x 4 + x 3 + x  C(x) = 1101 = x 3 + x 2 + 1  P(x) = M(x) + k bits  T(x) = 10011010000  R(x) = 101  P(x) = 10011010101  2

  3. CRC - Receiver CRC – Example Encoding C(x) = x 3 + x 2 + 1 = 1101 Generator Receive Polynomial P(x) + E(x)  M(x) = x 7 + x 4 + x 3 + x = 10011010 Message E(x) represents errors  1101 10011010000 Message plus k E(x) = 0, implies no errors  1101 zeros Divide (P(x) + E(x)) by C(x)  1001 k + 1 bit check 1101 If result = 0, either sequence c,  equivalent to a 1000 No errors (E(x) = 0, and P(x) is evenly divisible by C(x)) Result:  1101 degree-k (P(x) + E(x)) is exactly divisible by C(x), error will not be  polynomial 1011 detected Transmit message 1101 followed by 1100 1101 remainder: 1000 1101 Remainder 10011010101 101 m mod c CRC – Example Decoding – CRC – Example Decoding – No Errors with Errors C(x) = x 3 + x 2 + 1 = 1101 Generator C(x) = x 3 + x 2 + 1 = 1101 Generator P(x) = x 10 + x 7 + x 6 + x 4 + x 2 + 1 = 10011010101 Received Message P(x) = x 10 + x 7 + x 5 + x 4 + x 2 + 1 = 10010110101 Received Message Received 1101 10010110101 1101 10011010101 Received 1101 message 1101 message, no errors 1000 1001 k + 1 bit check Two bit errors k + 1 bit check 1101 1101 sequence c, sequence c, equivalent to a 1011 equivalent to a 1000 Result: Result: 1101 1101 degree-k degree-k polynomial 1101 polynomial 1011 CRC test is passed CRC test failed 1101 1101 0101 1100 1101 1101 1101 Remainder Remainder 0 m mod c m mod c CRC Error Detection CRC Error Detection Odd number of bit errors can be detected if C(x) contains the factor (x + 1) Properties   Characterize error as E(x)  Proof: Error detected unless C(x) divides E(x)  C(x) = (x + 1) C’(x)  ( i.e. , E(x) is a multiple of C(x))  => C(1) = 0 (  C(x) has an even number of terms) What errors can we detect?  P(x) = C(x) f(x) = (x + 1) C’(x) f(x) All single-bit errors, if x k and x 0 have non-zero coefficients   => P(1) = 0 (  P(x) has an even number of terms) All double-bit errors, if C(x) has at least three terms  E(x) has an odd number of terms (odd number of error bits)  All odd bit errors, if C(x) contains the factor (x + 1)   E(1) = 1 Any bursts of length < k, if C(x) includes a constant term => P(1) + E(1) = 0 + 1 = 1 …………………………….. (1)  Most bursts of length ≥ k  Assume E(x) cannot be detected by CRC with C(x)   P(x) + E(x) = C(x)g(x) => P(1) + E(1) = C(1)g(1) = 0 ………………………………(2) (1) contradicts (2) => E(x) must be detected by C(x) 3

  4. CRC Error Detection Common Polynomials for C(x) Any error bursts of length < k will be detected if C(x) includes a  CRC C(x) constant term x 8 + x 2 + x 1 + 1 CRC-8 Proof: E(x) = x i (x k-1 + ... + 1), where i >= 0 CRC-10 x 10 + x 9 + x 5 + x 4 + x 1 + 1  C(x) = x f(x) + 1  x 12 + x 11 + x 3 + x 2 + x 1 + 1 CRC-12 No power of x can be factored out of C(x)  => C(x) is not a factor of x i …………………….(1) CRC-16 x 16 + x 15 + x 2 + 1 C(x) has a degree of k: it cannot be a factor of polynomial with  smaller degree (up to k-1) x 16 + x 12 + x 5 + 1 CRC-CCITT => C(x) is not a factor of x k-1 + ... + 1 …………………….(2) CRC-32 x 32 + x 26 + x 23 + x 22 + x 16 + x 12 + x 11 + x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x 1 + 1 (1) (2) => C(x) cannot be a factor of E(x) Cyclic Redundancy Codes Error Detection vs. Error (CRC) Correction Detection  Commonly used codes that have good error Pro: Overhead only on messages with errors   detection properties. Con: Cost in bandwidth and latency for retransmissions  Can catch many error combinations with a small  number or redundant bits Correction  Based on division of polynomials. Pro: Quick recovery   Con: Overhead on all messages Errors can be viewed as adding terms to the   polynomial What should we use? Should be unlikely that the division will still work   Correction if retransmission is too expensive Can be implemented very efficiently in   Correction if probability of errors is high hardware.  Examples:  CRC-32: Ethernet  CRC-8, CRC-10, CRC-32: ATM  4

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend