Selasa, 16 Juni 2009

TRANSMISSION ERROR CONTROL


Teknik deteksi error menggunakan error-detecting-code, yaitu tambahan bit yang ditambah oleh transmitter. Dihitung sebagai suatu fungsi dari transmisi bit-bit lain. Pada receiver dilakukan perhitungan yang sama dan membandingkan kedua hasil tersebut, dan bila tidak cocok maka berarti terjadi deteksi error. Dan Apabila sebuah frame ditransmisikan ada 3 kemungkinan klas yang dapat didefinisikan pada penerima, yaitu :

1. Klas 1 (P1) : Sebuah frame datang dengan tidak ada bit error (jadi tidak berarti dalam mendeteksi error, karena nggak ada error!)

2. Klas 2 (P2) : Sebuah frame datang dengan 1 atau lebih bit error yang tidak terdeteksi

3. Klas 3 (P3) : Sebuah frame datang dengan 1 atau lebih bit error yang terdeteksi dan tidak ada bit error yang tidak terdeteksi. (nggak berarti juga, semua error udah terdeteksi)

Ada dua pendekatan untuk deteksi kesalahan :

1. Forward Error Control

Dimana setiap karakter yang ditransmisikan atau frame berisi informasi tambahan (redundant) sehingga bila penerima tidak hanya dapat mendeteksi dimana error terjadi, tetapi juga menjelaskan dimana aliran bit yang diterima error.

2. Feedback (backward) Error Control

Dimana setiap karakter atau frame memilki informasi yang cukup untuk memperbolehkan penerima mendeteksi bila menemukan kesalahan tetapi tidak lokasinya. Sebuah transmisi kontro digunakan untuk meminta pengiriman ulang, menyalin informasi yang dikirimkan.

Feedback error control dibagi menjadi 2 bagian, yaitu :

1. Teknik yang digunakan untuk deteksi kesalahan

2. Kontrol algoritma yang telah disediakan untuk mengontrol transmisi ulang.

Metode Deteksi Kesalahan :

1. Echo

Metode sederhana dengan sistem interaktif. Operator memasukkan data melalui terminal dan mengirimkan ke komputer. Komputer akan menampilkan kembali ke terminal, sehingga dapat memeriksa apakah data yang dikirimkan dengan benar.

2. Error Otomatis / Parity Check

Penambahan parity bit untuk akhir masing-masing kata dalam frame. Tetapi problem dari parity bit adalah impulse noise yang cukup panjang merusak lebih dari satu bit, pada data rate yang tinggi.

Jenis Parity Check :

a. Even parity (paritas genap), digunakan untuk transmisi asynchronous. Bit parity ditambahkan supaya banyaknya ‘1’ untuk tiap karakter / data adalah genap

b. Odd parity (paritas ganjil), digunakan untuk transmisi synchronous. Bit parity ditambahkan supaya banyaknya ‘1’ untuk tiap karakter / data adalah ganjil

Dengan bit pariti dikenal 3 deteksi kesalahan, yaitu :

a. Vertical Redundancy Check / VRC

Setiap karakter yang dikirimkan (7 bit) diberi 1 bit pariti. Bit pariti ini diperiksa oleh penerima untuk mengetahui apakah karakter yang dikirim benar atau salah. Cara ini hanya dapat melacak 1 bit dan berguna melacak kesalahan yang terjadi pada pengiriman berkecepatan menengah, karena kecepatan tinggi lebih besar kemungkinan terjadi kesalahan banyak bit.

Kekurangan : bila ada 2 bit yang terganggu ia tidak dapat melacaknya karena paritinya akan benar.

Contoh :

ASCII huruf "A" adalah 41h

100 0001 ASCII 7 bit

1100 0001 ASCII dengan pariti ganjil

0100 0001 ASCII dengan pariti genap

Akibatnya huruf "A" kode ASCII dalam Hex :

- 41 bilamana pariti genap

- A1 bilamana pariti ganjil

b. Longitudinal Redundancy Check / LRC

LRC untuk data dikirim secara blok. Cara ini seperti VRC hanya saja penambahan bit pariti tidak saja pada akhir karakter tetapi juga pada akhir setiap blok karakter yang dikirimkan. Untuk setiap bit dari seluruh blok karakter ditambahkan 1 bit pariti termasuk juga bit pariti dari masing-masing karakter. Tiap blok mempunyai satu karakter khusus yang disebut Block Check Character (BCC) yang dibentuk dari bit uji. dan dibangkitkan dengan cara sebagai berikut :

"Tiap bit BCC merupakan pariti dari semua bit dari blok yang mempunyai nomor bit yang sama. Jadi bit 1 dari BCC merupakan pariti genap dari semua bit 1 karakter yang ada pada blok tersebut, dan seterusnya"

Kerugian : terjadi overhead akibat penambahan bit pariti per 7 bit untuk karakter.

c. Cyclic Redundancy Check / CRC

Digunakan pengiriman berkecepatan tinggi, sehingga perlu rangkaian elektronik yang sukar. Cara CRC mengatasi masalah overhead dan disebut pengujian berorientasi bit, karena dasar pemeriksaan kemungkinan kesalahan adalah bit / karakter dan menggunakan rumus matematika khusus.


Contoh menggunakan paritas genap :

VRC

1

0

1

1

0

1

1

1

‘1’=5

1

1

0

1

0

1

1

1

‘1’=5

0

0

1

1

1

0

1

0

‘1’=4

1

1

1

1

0

0

0

0

‘1’=4

1

0

0

0

1

0

1

1

‘1’=3

0

1

0

1

1

1

1

1

‘1’=5

0

1

1

1

1

1

1

LRC

‘1’=4

‘1’=3

‘1’=3

‘1’=5

‘1’=3

‘1’=3

‘1’=5

Satu blok informasi dilihat sebagai sederetan bit yang ditransmisikan. Bit yang ditransmisikan dimasukkan kedalam register geser siklis yang disebut generator CRC. Operasi ini didasarkan atas pembagian deretan bit dengan sebuah fungsi khusus.

Hasil bagi pembagian diabaikan. Sisanya disalurkan sebagai BCS (Block Check Sequence). Fungsi khusus tersebut disebut generator polynominal.

Realisasi Generator CRC / Penguji

Data dimasukkan kedalam register geser pada berbagai titik melalui gerbang XOR yang mempunyai hubungan langsung dengan generator polynominal yaitu rumus matematika untuk membagi bit data. Lebih baik dari VRC / LRC, 99% error dapat terdeteksi.

Contoh hasil pada register geser 16 bit dengan gerbang XOR, dimana input pada bit 0, 5, 12 dan output pada bit 15, maka :

¨ CRC-CCITTT = X16 + X12 + X5 + 1

¨ CRC-16 = X16 + X15 + X2 + 1

¨ CRC-12 = X12 + X11 + X3 + X2 + 1

¨ LRC = X8 + 1

¨ RC-32 = X32 + X26 + X23 + X22 + X16

+ X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X1 + 1

3. Framing Check

Dipakai pada transmisi asinkron dengan adanya bit awal dan akhir. Data berada diantara bit awal dan bit akhir. Dengan memeriksa kedua bit ini dapat diketahui apakah data dapat diterima dengan baik atau tidak. Transmisi asinkron mempunyai bentuk bingkai sesuai dengan ketentuan yang dipergunakan

Pendekatan yang umum dipakai adalah data link layer memecah aliran bit menjadi frame-frame diskrit dan menghitung checksum setiap framenya. Ketika sebuah frame tiba di tujuan, checksum dihitung kembali. Bila hasil perhitungan ulang checksum tersebut berbeda dengan yang terdapat pada frame, maka data link layer akan mengetahui bahwa telah terjadi error dan segera akan mengambil langkah tertentu sehubungan dengan adanya error tersebut (misalnya, membuang frame yang buruk dan mengirimkan kembali laporan error).

Salah satu cara untuk melaksanakan pembuatan frame ini adalah dengan cara menyisipakn gap waktu di antara dua buah frame, sangat mirip seperti spasi antara dua buah katan dalam suatu teks. Akan tetapi, jaringan jarang memberikan jaminan tentang pewaktuan. Karena itu, mungkin saja gap ini dibuang, atau diisi oleh gap lainnya selama proses transmisi, karena sangat besar risikonya dalam menghitung pewaktuan untuk menandai awal dan akhir frame, telah dibuat metode lainnya, yaitu 4 buah metoda :

1. Karakter penghitung

2. Pemberian karakter awak dan akhir, dengan pengisian karakter

3. Pemberian flag awal dan akhir, dengan pengisian bit

4. Pelanggaran pengkodean physical layer.

Metoda framing pertama menggunakan sebuah field pada header untuk menspesifikasikan jumlah karakter di dalam frame. Ketika data link layer pada mesin yang dituju melihat karakter penghitung, maka data link layer akan mengetahui jumlah karakter yang mengikutinya, dan kemudian juga akan mengetahui posisi ujung frame-nya. Masalah yang dijumpai dalama algoritma ini adalah bahwa hitungan dapat dikacaukan oleh error transmisi. Misal bila hitungan karakter 5 frame menjadi 7, maka tempat yang dituju akan tidak sinkron dan tidak dapat mengetahui awal frame berikutnya.

Bahkan bila cheksum tidak benar sehingga tempat yang dituju mengetahui bahwa frame yang bersangkutan buruk, maka tidak mungkin untuk menentukan awal frame berikutnya. Pengiriman kembali sebuah frame ke sumber untuk meminta pengiriman ulangpun tidak akan menolong, karena tempat yang dituju tidak mengetahui jumlah karakter yang terlewat untuk mendapatkan awal transmisi. Untuk alasan ini, metoda hitungan karakter ini sudah jarang digunakan lagi.

Metode framing yang kedua mengatasi masalah resinkronisasi setelah terjadi suatu error dengan membuat masing-masing frame diawali dengan sederetan karakter DLE STX ASCII dan diakhiri dengan DLE ETX (DLE=Data Link Escape, STX=Start Of Text, ETX=End Of Text). Dalam metoda ini, bila tempat yang dituju kehilangan track batas-batas frame, maka yang perlu dilakukan adalah mencari karakter-karakter DLE STX dan DLE ETX. Masalah serius yang terjadi pada metoda ini adalah ketika data biner, seperti program object, atau bilangan floating point, ditransmisikan. Karakter-karakter DLE STX dan DLE ETX yang terdapat pada data mudah sekali menganggu framing. Satu cara untuk mengatasi masalah ini adalah dengan membuat data link pengirim menyisipkan sebuah karakter DLE ASCII tepat sebelum karakter DLE "insidentil" pada data. Data link layer pada mesin penerima membuang DLE sebelum data diberikan ke network layer. Teknik ini disebut character stuffing (pengisian karakter). DLE-DLE pada data selalu digandakan. Kerugian penting dalam memakai metoda framing ini sangat berkaitan erat dengan karakter 8-bit secara umum dan kode karakter ASCII pada khususnya. Dengan berkembangnya jaringan, kerugian dari melekatkan kode karakter dalam mekanisma framing menjadi semakin jelas, sehingga suatu teknik baru perlu dibuat untuk memungkinkan pemakaian karakter berukuran sembarang.

Teknik baru memungkinkan frame data berisi sembarang sejumlah bit dan mengijinkan kode karakter dengan sembarang jumlah bit per karakter. Teknik ini bekerja seperti berikut, setiap frame diawali dan diakhiri oleh pola bit khusus, 01111110 yang disebut flag. Kapanpun data link layer pada pengirim menemukan lima buah flag yang berurutan pada data, maka data link layer secara otomatis mengisikan sebuah bit 0 ke aliran bit keluar. Pengisian bit ini analog dengan pengisian karakter, dimana sebuah DLE diisikan ke aliran karakter keluar sebelum DLE pada data. Ketika penerima melihat 5 buah bit 1 masuk yang berurutan, yang diikuti oleh sebuah bit 0, maka penerima secara otomatis mengosongkan (menghapus) bit 0 tersebut. Seperti halnya pengisian karakter transparan sepenuhnya bagi network layer pada kedua buah komputer, demikian pula halnya dengan pengisian bit. Bila data pengguna berisi pola flag 01111110, maka flag ini akan ditransmisikan kembali sebagai 011111010 tapi akan disimpan di memory penerima sebagai 01111110. Dengan pengisian bit, maka batas antara dua frame dapat dikenal jelas oleh pola flag. Jadi bila penerima mengalami kehilangan track frame tertentu, yang perlu dilakukan adalah menyisir input deretan flag, karena flag tersebut hanya mungkin terdapat pada batas frame saja dan tidak pernah berada pada data.

Metode framing terakhir hanya bisa digunakan bagi jaringan yang encoding pada medium fisiknya mengandung beberapa redundansi (pengulangan). Misalnya, sebagian LAN melakukan encode bit 1 data dengan menggunakan 2 bit fisik. Umumnya, bit1 merupakan pasangan tinggi-rendah dan bit 0 adalah pasangan rendah-tinggi. Kombinasi pasangan tinggi-tinggi dan rendah-rendah tidak digunakan bagi data. Proses itu berarti bahwa setiap bit data memiliki transisi di tengah, yang memudahkan penerima untuk mencari batas bit. Manfaat kode fisik yang invalid merupakan bagian standard LAN 802.2.

Ketika data yang sedang ditransmisikan antara dua DTE, maka adalah hal yang umum jika data tersebut berubah, apalagi jika lingkungan dari jalur transmisi berada dalam lingkungan yang secara elektrik memiliki noise yang cukup tinggi.

Untuk aplikasi-aplikasi tertentu yang memiliki keterbatasan, misalnya jika aplikasi tersebut tidak memiliki return path atau round-trip delay yang berhubungan dengan retrun path sangat panjang jika dibandingkan dengan laju transmisi data dari link maka metode FEC lebih sering digunakan. Tulisan ini akan memperkenalkan penggunaan dari metode FEC tersebut dengan menggunakan convolutional codes.

Jika kesalahan dideteksi pada penerima maka ada dua cara untuk memperlakukan kesalahan tersebut:

1) Forward Error Control, dimana tiap karakter atau frame yang ditansmisikan mengandung informasi tambahan sehingga tidak hanya dapat mendeteksi jika terjadi kesalahan tetapi juga mampu untuk menentukan dimana kesalahan dari aliran bit yang diterima terjadi. Data yang benar kemudian diperoleh dengan menginversi bit yang salah tersebut.

2) Feedback (bacward) Error Control, dimana tiap karakter atau frame yang ditransmisikan diikutsertakan informasi tambahan secukupnya sehingga penerima dapat mendeteksi terjadinya kesalahan namun tidak dengan lokasinya. Pendekatan ini membutuhkan skema kendali retransmisi untuk memperoleh copy informasi yang salah tersebut.

Umumnya penanganan error transmisi dilakukan pada data link layer. Error control dapat pula dilakukan pada layer lain (physical/higher layer). Error dapat diperbaiki dan dideteksi dengan menggunakan data redundant/tambahan pada setiap pengiriman data Jenis error:

l Single bit error: hanya sebuah bit yang berubah. Disebabkan oleh white noise

l Burst error: sederetan bit-bit mengalami error. Disebabkan oleh impulse noise

l Makin tinggi data rate, makin besar efeknya

Ada 2 teknik yang digunakan:

l Error-Detecting Codes

l Error-Correcting Codes

Error correcting codes memerlukan data redundant lebih besar dibandingkan dengan error detecting codes. Menambahkan sebuah bit pada setiap pengiriman sejumlah bit, sehingga jumlah bit bernilai 1 selalu genap/ganjil. Parity bit dapat mendeteksi kesalahan 1 bit atau kesalahan bit dalam jumlah ganjil, namun tidak dapat mendeteksi kesalahan dalam jumlah genap

Cyclic redundancy check (CRC) adalah method yang umum digunakan untuk mendeteksi error. CRC beroperasi pada sebuah frame/block. Setiap block berukuran m bit yang akan dikirim akan dihitung CRC checksumnya (berukuran r bit), kemudian dikirim bersama-sama dengan frame (dengan ukuran m+r bit).

Pada sisi penerima, penerima akan menghitung CRC checksum pada frame yang diterima, dan dibandingkan dengan checksum yang diterima, jika berbeda, berarti frame rusak . CRC menggunakan prinsip modulo bilangan.

Data dianggap sebagai sebuah bilangan, dan untuk menghitung checksum, sama dengan menambahkan digit untuk data dengan digit untuk checksum (berisi 0) kemudian dibagi dengan pembilang tertentu, dan sisa pembagiannya menjadi checksum untuk data tsb