Deteksi & Koreksi Error
• Deteksi: mendeteksi jika terjadi error
• Koreksi: secara aktual memperbaiki error
• Contoh: parity bit
– Dapat mendeteksi satu (single bit-flip) error;
tidak ada koreksi error
– Diberikan frame dg n – 1 bit frame, tambahkan bit ke-n shg jumlah 1 pd frame genap (even parity).
– Di penerima: hitung jumlah 1 pd frame; jika ganjil, error telah terjadi
0111011100011100 1
0111011101011100 1
Forward Error Correction
• Banyak protokol bekerja dg deteksi error dan retransmisi
• Round trip delay utk retransmisi bisa terlalu lama utk bbrp kondisi/aplikasi
• Transmit redundansi data yg cukup utk memungkinkan penerima memperbaiki error
• Contoh: data dg m n bit:
Row parity
d1,1 … d1,m–1 d1,m
d2, 1 … d2,m–1 d2,m
… … …
dn–1, 1 … dn–1,m–1 dn–1,m
Col. parity dn, 1 … dn,m–1 dn,m
data checksum
(n–1)(m–1) bits m + n – 1 bits
Forward Error Correction - Contoh
1 0 1 0 1 0 error
1 1 1 1 0 0 ok
0 1 1 1 0 1 ok
1 0 1 0 1 1 ok
error ok ok ok ok ok
• Even parity: tiap baris & kolom harus mempunyai jumlah 1 genap:
• Baris & kolom secara bersama mengindikasikan dimana dimana satu (single) error terjadi
• Skim ini dp mengkoreksi satu buah error, dan mendeteksi bbrp kombinasi error lainnya
• Error correcting codes yg lebih powerfull tersedia
• Teknik lain: kirim redundansi, atau redundansi data secara partial
Check Sums
• Gunakan suatu register dg k = 16 atau 32 bits sbg check sum:
– Inisialisasi k bit ke bit 0
– Tiap blok dari k bit pd frame ditambahkan ke check sum register, dg carry bit juga
ditambahkan
– Hasilnya, k ditambahkan (dikirimkan) dg message
• Penerima mengkalkulasi sum dg cara yg sama, dan
membandingkan dg check sum yg diterima
Check sums (2)
• Kalkulasi Checksum
4865 + 6C6C + 6F20 + 776F + 726C + 642E = 271FA 71FA + 2 = 71FC
48 65 6C 6F 20 77 6F 72 6C 64 2E h
6C
e l l o w o r l d .
check sum
carry
Keuntungan /Kerugian
• Mudah dihitung
• Ukuran kecil (overhead 1 atau 2 octet)
• Bbrp error tidak terdeteksi:
0001 1 0010 2 0011 3 0001 1 total 7
0011 3
0000 0
0001 1
0011 3
total 7
Cyclic Redundancy Check (CRC)
• Misalkan M adalah k bit message yg akan dikirimkan, dan n bit error check field F ditambahkan pd akhir message
• T adalah total frame yg ditransmisikan, termasuk check field, yaitu (k + n) bit
– Maka, T = 2n M + F
– Cat: 2n M adalah message M digeser n bit ke kiri, dg
ekstra 0 bit ditambahkan di kanan. Menambahkan F akan mengganti nol ini dg F.
• Mis. G adalah pola bit yg sdh ditentukan dari n + 1 bit
• Objektif: T dibagi dg G dlm arithmetic modulo 2 arithmetic sehingga tdk ada sisa
– Kita menggunakan sisa setelah pembagian, dan bukan penjumlahan
Cyclic Redundancy Check (CRC)
Cyclic Redundancy Check (CRC)
• Bagaimana kita menghitung R (check bits)?
– Pilih suatu generator string G dg panjang r+1 bits
– Pilih R sedemikian shg T kelipatan G (T = A*G, utk sembarang A) – Sekarang jika T dibagi dg G tdk akan ada sisa no errors
– Semuanya dilakukan dg mod 2 arithmetic
T = M 2r + R = A*G => M 2r = A*G + R (mod 2 arithmetic)
R = sisa dari M 2r/G dan T akan berupa kelipatan G
• Pemilihan G merupakan parameter yg kritis utk performansi suatu CRC
Contoh
Transmisi: 110101011
G = x3 + 1
M = x5 + x4 + x2
+ 1
Checking utk Error
• Misal T’ adalah deretan bit yg diterima
• Bagi T’ dg G
– Jika sisa = 0, asumsi tidak ada error – Jika sisa tidak nol terjadi error
Contoh:
Kirim T = 110101011 Terima T’ = 110101011
(tdk ada error)
Tdk ada cara utk mengetahui brp bit yg error dan yg mana
Performansi CRC
• Utk r check bit per frame dan panjang frame kurang dari 2
r-1, berikut ini dp dideteksi
1) Semua pola dari 1,2, atau 3 error (d > 3)
2) Semua bursts errors dari r bit atau lebih kecil 3) Random dg jumlah error yg besar dg prob. 1-2-r
• Standard DLC menggunakan CRC dg r = 16 dg option r = 32
– CRC-16, G = X16 + X15 + X2 +1 = 11000000000000101
Format Message
• Macam-macam format frame dimungkinkan:
SOH data CRC EOT
M F
T
sep data CRC
M F
T
sep
14
Memilih G
• Bentuk Polynomial:
G (17 bits): 10001000000100001
G(X) = 1 X 16 + 0 X 15 + 0 X 14 + 0 X 13 + 1 X 12 + 0 X 11 + 0 X 10 + 0 X 9 + 0 X 8 + 0 X 7 + 0 X 6 + 1 X 5 + 0 X 4 + 0 X 3 + 0 X 2 + 0 X 1 + 1 X 0
= X 16 + X 12 + X 5 + 1
• Standard polynomial 16 bit:
– Amerika Utara: X 16 + X 15 + X 5 + 1 – Internasional: X 16 + X 12 + X 5 + 1
• Standard polynomial 32 bit:
X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
Komputasi CRC
• menggunakan shift dan XOR register utk menealisasikan pembagian mod 2
– Inputkan semua bit message spt terlihat
– Pengirim: isi register yg lengkap saat message selesai adalah field CRC
– Penerima: isi register yg lengkap saat message selesai harus 0 (jika tidak ada error)
– Keuntungan: dp dilakukan cepat dg hardware
• Contoh: k = 16 bit CRC, G = X16 + X12 + X5 + 1
15141312 11109 8 7 6 5 4 3 2 1 0
Message bits XOR single bit shift left register
X
12X
5X
016
Hamming Codes
• Data untuk dikirimkan:
• Transmisi:
dimana:
– p1 is even parity for 1, 3, 5, 7, 9, 11 – p2 is even parity for 2, 3, 6, 7, 10, 11 – p3 is even parity for 4, 5, 6, 7, 12 – p4 is even parity for 8, 9, 10, 11, 12
m1 m2 m3 m4 m5 m6 m7 m8
p1 p2 m1 p3 m2 m3 m4 p4 m5 m6 m7 m8 1 2 3 4 5 6 7 8 9 10 11 12
Koreksi Error
• Kode di set up shg:
akan :
– bernilai 0 jika tdk ada error
– Indikasi posisi bit dimana single-bit error terjadi
– 1001 (9) berarti bhw mengalami error – 0010 (2) berarti bhw mengalami error
p4r p3r p2r p1r
m5 p2
p4c p3cp2cp1c
XOR
p4r parity bit 4, p4c
Diterima dlm message
parity bit 4, dikalkulasi
Multiple-bit Error Correction
• Berdasarkan konsep dari “distance” antara code word
– Pola berikut mempunyai jarak/ distance 3 karena tiga bit diperlukan utk mengubahnya ke dlam code word yg lain
• Contoh: gunakan 12 bit utk kirim 8 bit dari data user
– Perlu memilih 256 pola bit yg dipakai dari 4096 yg tersedia
• Objektif: dua code word yg dibolehkan akan memunyai jarak minimum (minimum distance) d
– Dapat mendeteksi sampai dg d – 1 error – Dapat mengkoreksi sampai dg d/2 error
0 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 1 1
Hamming Distance
Utk deteksi d-bit error: HD > d Utk koreksi d-bit error: HD > 2d
HD = min (d
ij)
4 3
1 d 2
23ij Set dari code
HD = Jarak min suatu code adalah jumlah error terkecil yg dp memetakan satu codeword ke yg lainnya
Koreksi Error
Untuk Hamming Distance = d
dp koreksi (d-1)/2 error Contoh: Hamming (7,4) Code
Informasi Codeword
0000 0000000
0001 0001111
0010 0010101
0011 0011010
0100 0100011
0101 0101100
0110 0110110
0111 0111001
1000 1000110
1001 1001001
1010 1010011
1011 1011100
1100 1100101
1101 1101010
1110 1110000
1111 1111111
Koreksi Error
Code umum digunakan: Bose-Chaudhuri-Hocquenghem (BCH) M
R BCH (R + M, M, t)
mis. BCH (1023, 923, 10)
Dp deteksi semua “t”bit error
Deteksi atau Koreksi?
Keuntungan Deteksi Error
Memerlukan jumlah lebih kecil bits/overhead
Memerlukan pemrosesan lebih sederhana
Keuntungan Koreksi Error
Mengurangi Jumlah retransmisi
Kebanyakan jaringan data saat ini menggunakan deteksi error,
Bukan koreksi error
Deteksi atau Koreksi: Contoh
Asumsi: 1. Panjang paket 923 bit 2. PER = 10-5
Overhead Koreksi Error:
Asumsi kita gunakan: BCH (1023, 923, 10) Krnnya, kita kirim 923 data bit sbg 1023 bit
Overhead Deteksi Error:
Asumsi gunakan: 32-bit CRC; satu retransmisi per error Krnnya, kita kirim 923 data bit sbg 955 bit
Overhead Transmisi = ~= 10%
Overhead Transmisi = ~= 3%
923100
(923 + 32) 10-5 + 32 923