22-EDACRelTrans.ppt

advertisement
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
Katz, Stoica F04
Today’s Lecture: 24
2
17,18
6
19
,
20
10,11
7, 8, 9
Application
14, 15,
16
2
4
21, 22
23
Transport
Network (IP)
Link
Physical
Katz, Stoica F04
3
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
Katz, Stoica F04
4
Overview


Error detection & recovery
Reliable Transmission
Katz, Stoica F04
5
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
Katz, Stoica F04
6
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
1
1011010
0
0010110
1
1110101
1
1001011
0
1000110
1
Katz, Stoica F04
7
How Many Errors Can you Detect?


All 1-bit errors
Example:
0110100
1
1011010
0
0000110
1
1110101
1
1001011
0
1000110
1
odd number of 1’s
error bit
Katz, Stoica F04
8
How Many Errors Can you Detect?


All 2-bit errors
Example:
0110100
1
1011010
0
0000111
1
1110101
1
1001011
0
1000110
1
error bits
odd number of 1’s on columns
Katz, Stoica F04
9
How Many Errors Can you Detect?


All 3-bit errors
Example:
0110100
1
1011010
0
0000111
1
1100101
1
1001011
0
1000110
1
error bits
odd number of 1’s on column
Katz, Stoica F04 10
How Many Errors Can you Detect?


Most 4-bit errors
Example of 4-bit error that is not detected:
0110100
1
1011010
0
0000111
1
1100100
1
1001011
0
1000110
1
error bits
How many errors can you correct?
Katz, Stoica F04
11
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
Katz, Stoica F04 12
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
-15+16 = 1
1 00000000
+
1
00000001
Katz, Stoica F04 13
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 that
M(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)
Katz, Stoica F04 14
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
Katz, Stoica F04 15
Arithmetic Modulo 2


Like binary arithmetic but without borrowing/carrying
from/to adjacent bits
Examples:
101 +
010
111

101 +
001
100
1011 +
0111
1100
101 010
111
101 001
100
1011 0111
1100
Addition and subtraction in binary arithmetic modulo
2 is equivalent to XOR
a
0
0
1
1
b
0
1
0
1
a
b
0
1
1
0
Katz, Stoica F04 16
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
B(x) - C(x) = x7
+ x5 + x3 + x2
+ x0
C(x) = x3
+ x1 + x0
(10101101)
+ x5
(10100110)
+ x2 + x1
(00001011)
Katz, Stoica F04 17
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)
101) 11011100
101
111
101
101
101
100
101
1


R(x)
Compute T(x) = M(x)*xk - R(x)  11011100 xor 1 = 11011101
Send T(x)
Katz, Stoica F04 18
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)
Katz, Stoica F04 19
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
Katz, Stoica F04 20
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
Katz, Stoica F04 21
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
Katz, Stoica F04 22
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
Katz, Stoica F04 23
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
Katz, Stoica F04 24
Example: (7,4)-Parity Code

n=4, k=3
- Corrects one error
- log2(1+n) = 2.32 
k = 3, perfect parity
code
b1
b2
b3
Position
1
10
11 100 101 110 111
Check:b1
x
Check:b2

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)
x
x
b1
b2
Position
1
10
Check:b1
1
Check:b4
1
b6
x
b7
x
x
x
x
x
x
x
b4
0
1
0
11 100 101 110 111
1
0
b5
x
Check:b4
Check:b2
b4
0
1
1
0
0
1
0
1
0
Katz, Stoica F04 25
Overview


Error detection & recovery
Reliable transmission
Katz, Stoica F04 26
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
Katz, Stoica F04 27
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)
Katz, Stoica F04 28
Erasure Codes
n blocks
Content
Encoding
n+k blocks
Encoding
Transmission
>= n blocks
Received
Decoding
Content
(*Michael Luby slide)
original n blocks
Katz, Stoica F04 29
Example: Digital Fountain
Use erasure codes
for reliable data
distribution
Intuition:
- Goal is to fill the cup
- Full cup = content
recovered
(*Michael Luby slide)
Katz, Stoica F04 30
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)
Katz, Stoica F04 31
LT encoding
Content
Choose 2 random
content symbols
XOR content
symbols
2
Choose degree
Insert header, and send
Degree Dist.
Degree
(*Michael Luby slide)
Prob
1
0.055
2
0.3
3
0.1
4
0.08
100000
0.0004
Katz, Stoica F04 32
LT Encoding
Content
Choose 1 random
content symbol
Copy content
symbol
1
Choose degree
Insert header, and send
Degree Dist.
Degree
(*Michael Luby slide)
Prob
1
0.055
2
0.3
3
0.1
4
0.08
100000
0.0004
Katz, Stoica F04 33
LT Encoding
Content
Choose 4 random
content symbols
XOR content
symbols
4
Choose degree
Insert header, and send
Degree Dist.
Degree
(*Michael Luby slide)
Prob
1
0.055
2
0.3
3
0.1
4
0.08
100000
0.0004
Katz, Stoica F04 34
LT Decoding
Content (unknown)
1. Collect enough encoding symbols and set up graph between
encoding symbols and content symbols to be recovered
2. Identify encoding symbol of degree 1. STOP if none exists
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
4. Go to Step 2.
(*Michael Luby slide)
Katz, Stoica F04 35
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)
Katz, Stoica F04 36
What Do You Need To Know?

Understand
- 2-dimensional parity
- CRC
- Hamming codes

Tradeoff between achieving reliability via
retransmission vs. error correction
Katz, Stoica F04 37
Download