Deteksi & Koreksi Error
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 error 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 o w o r l d . 48 65 6C 6F 20 77 72 64 2E Kalkulasi Checksum 4865 + 6C6C + 6F20 + 776F + 726C + 642E = 271FA 71FA + 2 = 71FC carry check sum Transmisi: 71 48 65 6C 6F 20 77 72 64 2E FC Data Check Sum
Keuntungan /Kerugian Mudah dihitung Ukuran kecil (overhead 1 atau 2 octet) Bbrp error tidak terdeteksi: 0001 1 0011 3 0010 2 0000 0 0011 3 0001 1 0001 1 0011 3 total 7 total 7
Cyclic Redundancy Check (CRC) Cat: M.2r adalah message M digeser r bit ke kiri, dg ekstra 0 bit ditambahkan di kanan Menambahkan R akan mengganti nol ini dg R
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 G = x3 + 1 M = x5 + x4 + x2 + 1 Transmisi: 110101011 Data CRC
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) Dg CRC dk ada cara utk mengetahui brp bit yg error dan yg mana
Performansi CRC Utk r check bit per frame dan panjang frame kurang dari 2r-1, berikut ini dp dideteksi 1) Semua pola single bit error 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: T SOH data CRC EOT M R T sep data CRC sep M R
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
Hamming Codes m1 m2 m3 m4 m5 m6 m7 m8 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 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 p4r p3r p2r p1r XOR p4c p3c p2c p1c 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 m5 p2 parity bit 4, Diterima dlm message parity bit 4, dikalkulasi p4c p4r
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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Hamming Distance Set dari code HD = min (dij ) HD = Jarak min suatu code adalah jumlah error terkecil yg dp memetakan satu codeword ke yg lainnya Utk deteksi d-bit error: HD > d Utk koreksi d-bit error: HD > 2d HD = min (dij ) 4 3 1 2 d 23 ij Set dari code
Koreksi Error Contoh: Hamming (7,4) Code
Koreksi Error Code umum digunakan: Bose-Chaudhuri-Hocquenghem (BCH) 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 Transmisi = ~= 10% Overhead Deteksi Error: Asumsi gunakan: 32-bit CRC; satu retransmisi per paket error Overhead Transmisi = ~= 3% 100 923 (923 + 32) 10-5 + 32 923