CSE 123
Computer Networks
Fall 2009
Lecture 4:
Data--Link I: Framing
Data g and Errors
Some portions courtesy
Robin Kravets and Steve Lumetta
Administrative updates
I m out all next week – no lectures, but…
I’m
You will have work
HW #1: will be posted by 10pm tonight, will be due
next Wed (Frank will collect)
Project #1: will also be posted by 10pm tonight, will
b d
be due th
the M
Monday
d after
ft nextt ((electronic
l t i tturn-in
i
before class)
We’re
We re stuck with this room
Last time…
time
How to send a signal from here to there
Today: Data-
Data-link layer
Framing
Error detection/correction
Media Access
Bridging/Switching
Framing
Goal: separate
p bitstream into distinct units of transfer
(a frame)
Why?
Synchronization recovery
Link multiplexing
Efficient error detection
Challenges
How can we determine exactly what set of bits constitute a
frame?
How do we determine the beginning and end of a frame?
Framing
Approaches
pp
Sentinel (like C strings)
Length-based (like Pascal strings)
Clock based
Characteristics
Bit- or byte-oriented
Fixed or variable length
Data-dependent or data-independent length
Sentinel--Based Framing
Sentinel
Basic idea: identifyy start/end of frame with
special “marker”
Byte pattern, bit pattern, signal pattern
Challenge: what if marker is in data stream
Solution: “stuffing” recode data to prevent
marker from occurring
Byte--oriented Sentintels
Byte
STX – start of text
ETX – endd off text
Problem: what if ETX appears in the data portion of the frame?
Solution
If ETX appears in the data,
data introduce a special character DLE (Data
Link Escape) before it
If DLE appears in the text, introduce another DLE character before it
Efficiency can be only 50%
P t
Protocol
l examples
l
BISYNC, PPP, DDCMP
STX HEADER BODY ETX
0x48 ETX 0x69 0x48 DLE ETX 0x69
Consistent-Overhead Byte
Consistent-
Stuffing (COBS)
Run length encoding applied to byte stuffing
Add implied 0 to end of frame
Each 0 is replaced with (number of bytes to next 0) + 1
What if no 0 within 255 bytes? – 255 value indicates 254
bytes followed by no zero
Worst case – no 0’s in packet – 1/254 overhead
Appropriate for very low-bandwidth links
Code Followed by Meaning
0x00 (not applicable) (not allowed)
0x01 No data bytes A single zero byte
n (n-1) data bytes Data followed by 0
0xFF 254 data bytes Data, no following 0
Length--Based Framing
Length
End of frame
Calculated from length sent at start of frame
Challenge: Corrupt length markers
Examples
DECNET’s DDCMP:
» Byte-oriented, variable-length
RS-232 framing:
» Bit-oriented,
Bit oriented implicit fixed
fixed-length
length
LENGTH HEADER BODY
Clock--Based Framing
Clock
Continuous stream of fixed-length
g frames
Clocks must remain synchronized
No bit or byte stuffing
Example:
Synchronous Optical Network (SONET)
Problems:
Frame synchronization
Clock synchronization
SONET
All frames (STS formats) are 125 μsec long
Problem: how to recover frame synchronization
2-byte synchronization pattern starts each frame (unlikely in data)
Wait until pattern appears in same place repeatedly
Problem: how to maintain clock synchronization
NRZ encoding, data scrambled (XOR’d) with 127-bit pattern
Creates transitions
Al reduces
Also d chance
h off fifinding
di ffalse
l sync. pattern
tt
Overhead Payload
…
…
…
…
9 rows
s
…
…
…
…
…
90 bytes
SONET Multiplexing
FH STS-1
STS 1
FH STS-1 FH STS-3
FH STS-1
STS-3 has the payloads of three STS-1’s
STS-1 s byte-
wise interleaved.
For STS-N
STS N, frame size is always 125 microsec
STS-1 frame is 810 bytes
STS-3 frame is 810x3 =2430 bytes
y
SONET
STS-1 merged bytewise round-robin into STS-3
Unmerged (single-source) format called STS-3c
Problem: simultaneous synchronization of many distributed
clocks
not too difficult to
synchronize clocks
such that first byte
y of
all incoming flows
arrives just before
sending first 3 bytes
of outgoing flow
SONET
... but now try to
synchronize this
network’s
network s clocks
Error Detection
Goal: validate “correctness” of frame
Idea: send additional redundant data with frame to
check if it has been damaged
Checked at many layers
Physical (e.g. modulation)
Datalink (e.g. cyclic redundancy check)
Network/Transport (e.g. IP Checksum)
Application (e.g. MD5 hash)
Today: simple parity, redundancy w/voting, 2
dimensional p
parity,
y, IP checksum,, CRCs
Error Detection from 10
10,000
000 feet
• EDC= Error Detection bits (redundancy)
• D = Data protected by error checking
checking, may include header fields
• Error detection not 100% reliable!
• Protocol may miss some errors, but rarely
• Larger EDC field yields better detection
Parity
1-bit error detection with parity
p y
Add an extra bit to a code to ensure an even (odd)
number of 1s
Every code word has an even (odd) number of 1s
011 111
01 11 Parity 010 110
Valid
code Encoding:
words 00 10 White – invalid 000 100
(
(error)) 001 101
Voting
1-bit
1 bit error correction with voting
Every codeword is transmitted n times
011 111
Voting: 010 110
Valid
code 0 1 White – correct to 1
words Blue - correct to 0 000 100
001 101
Hamming Distance
The Hamming distance between two code words is the minimum
number of bit flips to move from one to the other
Example:
00101 and 00010
Hammingg distance of 3
The minimum Hamming distance of a code is the minimum
distance over all pairs of codewords
Minimum Hamming Distance for parity = 2
Minimum Hamming Distance for voting = 3
N-bit error detection
No code word changed into another code word
Requires Minimum Hamming Distance of N+1
Two--Dimensional Parity
Two
Use 1-dimensional parity
Parity
Bits
Add one bit to a 7-bit code to ensure an
even/odd number of 1s
0101001 1
Add 2nd dimension
1101001 0
Add an extra byte to frame
Data 1011110 1 » Bits are set to ensure even/odd number of
1s in that position across all bytes in
0001110 1
frame
0110100 1 Comments
1011111 0 Catches all 1-
1,22- and 3-bit
3 bit and most 4-bit
4 bit
errors
Parity 1111011 0
Byte
Internet Checksum
Idea
Add up allll th
the words
d
Transmit the sum
Internet Checksum
1 s complement of the 1’s
1’s 1 s complement sum on 16bit codewords
Example
» Message: e34f 2396 4427 99f3
» 2s complement sum is 1e4ff
» 1s complement sum is e4ff + 1 = e500
» Checksum is 1aff
Comments
VERY easy to implement, fast incremental updates
Not very robust
IP Checksum
u_short cksum(u_short *buf, int count) {
register u_long sum = 0;
while (count--) {
sum += *buf++;
if (sum & 0xFFFF0000) {
/* carry occurred, so wrap around */
sum &= 0xFFFF;
sum++;
}
}
return ~(sum & 0xFFFF);
}
Cyclic Redundancy Check
(CRC)
Polynomial code
Treat packet bits a coefficients of n-bit polynomial
» Message = 10011010
» Polynomial
= 1 x7 0 x6 0 x5 1 x4 1 x3 0 x2 1 x 0
= x7 x4 x3 x
Choose r+1 bit generator polynomial
(well known – chosen in advance)
Add r bits to packet such that message is divisible by
generator polynomial
Note: easy way to think of polynomial arithmetic mod 2
» Multiplication: binary addition without carries
» Division: binary subtraction without carries
Better loss detection properties than checksums
Error Detection – CRC
View data bits, D, as a binary number
Choose r+1 bit pattern (generator)
(generator), G
Goal: choose r CRC bits, R, such that
<D,R> exactly divisible by G (modulo 2)
Receiver knows G G, divides <D
<D,R>
R> by GG. If non
non-zero
zero remainder: error
detected!
Can detect all burst errors less than r+1 bits
Widely used in practice (Ethernet
(Ethernet, FDDI
FDDI, ATM)
Common Generator Polynomials
CRC-8 x8 x2 x1 1
CRC 10
CRC-10 x10 x9 x5 x4 x1 1
CRC-12 x12 x11 x3 x2 x1 1
CRC-16 x16 x15 x2 1
CRC-CCITT x16 x12 x5 1
CRC-32 x32 x26 x23 x22 x16 x12 x11 x10 x8 x7 x5 x4 x2
x1 1
CRC – Example Encoding
x3 x2 1 = 1101 Generator
x7 x4 x3 x = 10011010 Message
1101 10011010000 Message plus k
1101 zeros
k + 1 bit check 1001
sequence c, 1101
equivalent
q to a 1000
degree-k 1101 R
Result:
lt
polynomial 1011
1101 Transmit message
1100
1101
followed by
1000
remainder:
Remainder 1101
m mod c 101 10011010101
CRC – Example Decoding –
No Errors
x3 x2 1 = 1101 Generator
x10 x7 x6 x4 x2 1 = 10011010101 Received Message
1101 10011010101 Received
1101 message, no
k + 1 bit check 1001 errors
sequence c, 1101
equivalent to a 1000
degree-k 1101 R
Result:
lt
polynomial 1011
1101 CRC test is passed
1100
1101
1101
Remainder 1101
m mod c 0
CRC – Example Decoding –
with Errors
x3 x2 1 = 1101 Generator
x10 x7 x5 x4 x2 1 = 10010110101 Received Message
1101 10010110101 Received
1101 message
k + 1 bit check 1000 Two bit errors
sequence c, 1101
equivalent
q to a 1011
degree-k 1101 R
Result:
lt
polynomial 1101
1101 CRC test failed
0101
Remainder
m mod c
Summary
Framing
g
Bunching bits into distinct messages (frames)
Challenge is in finding where one frame starts and another
begins
Error detection
Determine if frame is corrupted by checking it against
redundant data
Next
e time e (o
(onee week
ee from
o next
e Monday):
o day) more
oeo on the
e
datalink layer
Media access
Read 2
2.6,
6 22.7,
7 22.8
8