Katz, Stoica F04
EE122: Error Detection and Reliable Transmission
November 19, 2003
Katz, Stoica F04
EECS 122: Introduction to Computer Networks
Error Detection and Reliable Transmission
Computer Science Division
Department of Electrical Engineering and Computer Sciences
University of California, Berkeley
Berkeley, CA 94720-1776
3Katz, Stoica F04
Today’s Lecture: 24
Network (IP)
Application
Transport
Link
Physical
2
7, 8, 9
10,11
14, 15, 16
21, 22
23
6
17,18
19, 20
24
4Katz, Stoica F04
High Level View
Goal: transmit correct information Problem: bits can get corrupted
- Electrical interference, thermal noise
Solution- Detect errors
- Recover from errors
• Correct errors
• Retransmission already done this
5Katz, Stoica F04
Overview
Error detection & recovery Reliable Transmission
6Katz, Stoica F04
Error Detection
Problem: detect bit errors in packets (frames) Solution: add extra bits to each packet Goals:
- Reduce overhead, i.e., reduce the number of redundancy bits
- Increase the number and the type of bit error patterns that can be detected
Examples:- Two-dimensional parity
- Checksum
- Cyclic Redundancy Check (CRC)
- Hamming Codes
7Katz, Stoica F04
Two-dimensional Parity
Add one extra bit to a 7-bit code such that the number of 1’s in the resulting 8 bits is even (for even parity, and odd for odd parity)
Add a parity byte for the packet Example: five 7-bit character packet, even parity
0110100
1011010
0010110
1110101
1001011
1
0
1
1
0
1000110 1
8Katz, Stoica F04
How Many Errors Can you Detect?
All 1-bit errors Example:
0110100
1011010
0000110
1110101
1001011
1
0
1
1
0
1000110 1
error bitodd number of 1’s
9Katz, Stoica F04
How Many Errors Can you Detect?
All 2-bit errors Example:
0110100
1011010
0000111
1110101
1001011
1
0
1
1
0
1000110 1
error bits
odd number of 1’s on columns
10Katz, Stoica F04
How Many Errors Can you Detect?
All 3-bit errors Example:
0110100
1011010
0000111
1100101
1001011
1
0
1
1
0
1000110 1
error bits
odd number of 1’s on column
11Katz, Stoica F04
How Many Errors Can you Detect?
Most 4-bit errors Example of 4-bit error that is not detected:
0110100
1011010
0000111
1100100
1001011
1
0
1
1
0
1000110 1
error bits
How many errors can you correct?
12Katz, Stoica F04
Checksum
Sender: add all words of a packet and append the result (checksum) to the packet
Receiver: add all words of a packet and compare the result with the checksum
Can detect all 1-bit errors Example: Internet checksum
- Use 1’s complement addition
13Katz, Stoica F04
1’s Complement Revisited
Negative number –x is x with all bits inverted When two numbers are added, the carry-on is
added to the result Example: -15 + 16; assume 8-bit representation
15 = 00001111 -15 = 11110000
16 = 00010000
+
00000000 1+
1
00000001
-15+16 = 1
14Katz, Stoica F04
Cyclic Redundancy Check (CRC)
Represent a (n+1)-bit message as an n-degree polynomial M(x)
- E.g., 10101101 M(x) = x7 + x5 + x3 + x2 + x0
Choose a divisor k-degree polynomial C(x) Compute reminder R(x) of M(x)*xk / C(x), i.e., compute A(x)
such thatM(x)*xk = A(x)*C(x) + R(x), where degree(R(x)) < k
Let T(x) = M(x)*xk – R(x) = A(x)*C(x)
Then- T(x) is divisible by C(x)- First n coefficients of T(x) represent M(x)
15Katz, Stoica F04
Cyclic Redundancy Check (CRC)
Sender: - Compute and send T(x), i.e., the coefficients of T(x)
Receiver: - Let T’(x) be the (n+k)-degree polynomial generated from the received
message
- If C(x) divides T’(x) no errors; otherwise errors
Note: all computations are modulo 2
16Katz, Stoica F04
Arithmetic Modulo 2
Like binary arithmetic but without borrowing/carrying from/to adjacent bits
Examples:
Addition and subtraction in binary arithmetic modulo 2 is equivalent to XOR
101 +010111
101 +001100
1011 +01111100
1011 -01111100
101 -010111
101 -001100
a b a b
0 0 0
0 1 1
1 0 1
1 1 0
17Katz, Stoica F04
Some Polynomial Arithmetic Modulo 2 Properties
If C(x) divides B(x), then degree(B(x)) >= degree(C(x))
Subtracting/adding C(x) from/to B(x) modulo 2 is equivalent to performing an XOR on each pair of matching coefficients of C(x) and B(x)
- E.g.:
B(x) = x7 + x5 + x3 + x2 + x0 (10101101)
C(x) = x3 + x1 + x0 (00001011)
B(x) - C(x) = x7 + x5 + x2 + x1 (10100110)
18Katz, Stoica F04
Example (Sender Operation)
Send packet 110111; choose C(x) = 101- k = 2, M(x)*xK 11011100
Compute the reminder R(x) of M(x)*xk / C(x)
Compute T(x) = M(x)*xk - R(x) 11011100 xor 1 = 11011101 Send T(x)
101) 11011100 101 111 101 101 101 100 101 1 R(x)
19Katz, Stoica F04
Example (Receiver Operation)
Assume T’(x) = 11011101 - C(x) divides T’(x) no errors
Assume T’(x) = 11001101- Reminder R’(x) = 1 error!
101) 11001101 101 110 101 111 101 101 101 1 R’(x)
Note: an error is not detected iff C(x) divides T’(x) – T(x)
20Katz, Stoica F04
CRC Properties
Detect all single-bit errors if coefficients of xk and x0 of C(x) are one
Detect all double-bit errors, if C(x) has a factor with at least three terms
Detect all number of odd errors, if C(x) contains factor (x+1)
Detect all burst of errors smaller than k bits
21Katz, Stoica F04
Code words
Combination of the n payload bits and the k check bits as being a n+k bit code word
For any error correcting scheme, not all n+k bit strings will be valid code words
Errors can be detected if and only if the received string is not a valid code word- Example: even parity check only detects an odd number of
bit errors
22Katz, Stoica F04
Hamming Distance
Given code words A and B, the Hamming distance between them is the number of bits in A that need to be flipped to turn it into B- E.g., H(011101,000000) = 4
If all code words are at least d Hamming distance apart, then up to d-1 bit errors can be detected
23Katz, Stoica F04
Error Correction
If all the code words are at least a hamming distance of 2d+1 apart then up to d bit errors can be corrected- Just pick the codeword closest to the one received!
How many bits are required to correct d errors when there are n bits in the payload?
Example: d=1: Suppose n=3. Then any payload can be transformed into 3 other payload strings (e.g., 000 into 001, 010 or 100).- Need at least two extra bits to differentiate between 4 possibilities- In general need at least k ≥ log2(n+1) bits- A scheme that is optimal is called a perfect parity code
24Katz, Stoica F04
Perfect Parity Codes
Consider a codeword of n+k bits- b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11…
Parity bits are in positions 20, 21, 22 ,23 ,24…- b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11…
A parity bit in position 2h, checks all data bits bp such that if you write out p in binary, the hth place in p’s binary representation is a one
25Katz, Stoica F04
Example: (7,4)-Parity Code
n=4, k=3- Corrects one error- log2(1+n) = 2.32
k = 3, perfect parity code
data payload = 1010- For each error
there is a unique combination of checks that fail
- E.g., 3rd bit is in error,:1000 both b2 and b4 fail (single case in which only b2 and b4 fail)
b1 b2 b3 b4 b5 b6 b7
Position 1 10 11 100 101 110 111
Check:b1x x x x
Check:b2x x x x
Check:b4x x x x
b1 b2 1 b40 1 0
Position 1 10 11 100 101 110 111
Check:b11 1 0 0
Check:b20 1 1 0
Check:b41 0 1 0
26Katz, Stoica F04
Overview
Error detection & recovery Reliable transmission
27Katz, Stoica F04
Reliable Transmission
Problem: obtain correct information once errors are detected
Solutions:- Use error correction codes
• E.g. perfect parity codes, erasure codes (see next)
- Use retransmission (we have studied this already)
Algorithmic challenges: - Achieve high link utilization, and low overhead
28Katz, Stoica F04
Error correction or Retransmission?
Error Correction requires a lot of redundancy- Wasteful if errors are unlikely
Retransmission strategies are more popular- As links get reliable this is just done at the transport
layer
Error correction is useful when retransmission is costly (satellite links, multicast)
29Katz, Stoica F04
Content
Erasure Codes
n blocks
Encoding
Encoding
n+k blocks
Received
Transmission>= n blocks
Content
Decoding
original n blocks
(*Michael Luby slide)
30Katz, Stoica F04
Example: Digital Fountain
Intuition: - Goal is to fill the cup - Full cup = content recovered
Use erasure codesfor reliable data distribution
(*Michael Luby slide)
31Katz, Stoica F04
Erasure Coding Approaches
Reed-Solomon codes-Complex encoding/decoding algorithm and analysis
Tornado codes-Simple encoding/decoding algorithm
-Complexity and theory in design and analysis
LT codes-Simpler design and analysis
(*Michael Luby slide)
32Katz, Stoica F04
2
Content
Insert header, and sendDegree Prob
1 0.055
0.0004
0.32
0.13
0.084
100000
Degree Dist.
XOR content symbols
Choose degree
Choose 2 random content symbols
LT encoding
(*Michael Luby slide)
33Katz, Stoica F04
1
Content
Insert header, and sendDegree Prob
1 0.055
0.0004
0.32
0.13
0.084
100000
Degree Dist.
Copy contentsymbol
Choose degree
Choose 1 randomcontent symbol
LT Encoding
(*Michael Luby slide)
34Katz, Stoica F04
4
Content
Insert header, and sendDegree Prob
1 0.055
0.0004
0.32
0.13
0.084
100000
Degree Dist.
XOR contentsymbols
Choose degree
Choose 4 randomcontent symbols
LT Encoding
(*Michael Luby slide)
35Katz, Stoica F04
1. Collect enough encoding symbols and set up graph between encoding symbols and content symbols to be recovered
3. Copy value of encoding symbol into unique neighbor, XOR value of newly recovered content symbol into encoding symbol neighbors and delete edges emanating from content symbol
2. Identify encoding symbol of degree 1. STOP if none exists
4. Go to Step 2.
Content (unknown)
LT Decoding
(*Michael Luby slide)
36Katz, Stoica F04
LT Encoding Properties
Encoding symbols generated independently of each other Any number of encoding symbols can be generated on the
fly Reception overhead independent of loss patterns
- The success of the decoding process depends only on the degree distribution of received encoding symbols.
- The degree distribution on received encoding symbols is the same as the degree distribution on generated encoding symbols.
(*Michael Luby slide)
37Katz, Stoica F04
What Do You Need To Know?
Understand- 2-dimensional parity
- CRC
- Hamming codes
Tradeoff between achieving reliability via retransmission vs. error correction