Ini merupakan tugas S1 saya di mata kuliah Komunikasi Data dimana tugasnya adalah menulis essai mengenai flow control, error detection & control, dan selective repeat ARQ. Selain saya kelompok ini terdiri dari I Gede Ariana, I Made Dwi Angga Pratama, I Putu Arie Pratama, Yulianti Murprayana, I Wayan Alit Wigunawan, I Gusti Made Widiarsana , I Nym Apriana Arta Putra, Muhammad Audy Bazly, I Kadek Agus Riki Gunawan, Muhamad Nordiansyah. Tugas ini tidak pernah dipublikasi dimanapun dan kami sebagai penulis dan pemegang hak cipta melisensi tugas ini customized CC-BY-SA dimana siapa saja boleh membagi, menyalin, mempublikasi ulang, dan menjualnya dengan syarat mencatumkan nama kami sebagai penulis dan memberitahu bahwa versi asli dan terbuka tersedia disini.
Perkembangan teknologi komputer meningkat dengan sangat cepat, hal ini terlihat pada era tahun 80-an jaringan komputer masih merupakan teka-teki yang ingin dijawab oleh kalangan akademisi, dan pada tahun 1988 jaringan komputer mulai digunakan di universitas-universitas, perusahaan-perusahaan, dan sekarang memasuki era milenium ini terutama WWW (World Wide Web) telah menjadi realitas sehari-hari jutaan manusia di muka bumi ini.
Selain itu, perangkat keras dan perangkat lunak jaringan telah benar-benar berubah, di awal perkembangannya hampir seluruh jaringan dibangun dari kabel koaxial, kini banyak telah diantaranya dibangun dari serat optik (fiber optics) atau komunikasi tanpa kabel.
Dengan berkembangnya teknologi komputer dan komunikasi suatu model komputer tunggal yang melayani seluruh tugas-tugas komputasi suatu organisasi kini telah diganti dengan sekumpulan komputer yang terpisah-pisah akan tetapi saling berhubungan dalam melaksanakan tugasnya, sistem seperti ini disebut jaringan komputer (computer network).
Dua buah komputer dikatakan terinterkoneksi bila keduanya dapat saling bertukar informasi. Betuk koneksinya tidak harus melalui kawat tembaga saja melainkan dapat menggunakan serat optik, gelombang mikro, atau satelit komunikasi.
Dalam suatu komunikasi data, pastinya dilakukan pengiriman paket data melalui suatu medium tertentu, akan selalu terjadi adanya perbedaan antara sinyal yang dikirim dengan sinyal yang diterima. Perbedaan tersebut dapat mengakibatkan adanya error atau kesalahan pada paket data yang dikirim tersebut sehingga data tersebut tidak dapat dibaca dengan baik oleh penerima. Untuk menghindari terjadinya error atau kesalahan pada paket data yang dikirim maka diperlukan adanya deteksi kesalahan (checking error), perbaikan kesalahan (correction error), dan pengendalian kesalahan (control error). Pada error control terdapat tiga metode yang sering dipakai dalam komunikasi data, yaitu stop and wait request, go back N request, dan selective request. Error control meliputi mekanisme-mekanisme sebagai berikut : ACK/NAK, timeout, dan sequence number. Pada error control terjadi prosesproses sebagai berikut: error detection, acknowledgment, etransmission after timeout, dan negative acknowledgment.
Adapun rumusan masalah yang diangkat dalam makalah ini, adalah sebagai berikut :
Adapun tujuan dari pembuatan makalah ini adalah, sebagai berikut:
Dalam makalah ini, ruang lingkup yang dibahas oleh penulis hanya sebatas mengenai permasalahan yang di bahas, yaitu sebatas Selective Repeat ARQ dalam suatu jaringan komunikasi data, dan juga untuk memberikan gambaran kepada para pembaca mengenai proses pengendalian kesalahan dalam komunikasi data.
Tujuan dilakukan pengontrolan terhadap error adalah untuk menyampaikan frame-frame tanpa error dalam urutan yang tepat ke lapisan jaringan. Teknik yang umum digunakan untuk error control berbasis pada dua fungsi, yaitu:
Sedangkan, error control dibagi menjadi tiga yaitu:
Flow control adalah suatu teknik untuk menjamin bahwa sebuah stasiun pengirim tidak membanjiri stasiun penerima dengan data. Stasiun penerima secara khas akan menyediakan suatu buffer data dengan panjang tertentu. Ketika data diterima, dia harus mengerjakan beberapa poses sebelum dia dapat membersihkan buffer dan mempersiapkan penerimaan data berikutnya.
Bentuk sederhana dari kontrol aliran dikenal sebagai stop and wait, dia bekerja sebagai berikut. Penerima mengindikasikan bahwa dia siap untuk menerima data dengan mengirim sebual poll atau menjawab dengan select. Pengirim kemudian mengirimkan data.
Flow control ini diatur/dikelola oleh Data Link Control (DLC) atau biasa disebut sebagai Line Protocol sehingga pengiriman maupun penerimaan ribuan message dapat terjadi dalam kurun waktu sesingkat mungkin. DLC harus memindahkan data dalam lalu lintas yang efisien. Jalur komunikasi harus digunakan sedatar mungkin, sehingga tidak ada stasiun yang berada dalam kadaan idle sementara stasiun yang lain saturasi dengan lalu lintas yang berkelebihan. Jadi flow control merupakan bagian yang sangat kritis dari suatu jaringan. Berikut ini ditampilkan Time Diagram Flow Control saat komunikasi terjadi pada kondisi tanpa error dan ada error. Mekanisme Flow control yang sudah umum digunakan adalah Stop and Wait dan Sliding window.
Gambar 2.1 Diagram waktu flow control saat transmisi tanpa kesalahan (a) dan saat terjadi kehilangan paket dan terjadi kesalahan (b)
Sebagai akibat proses-proses fisika yang menyebabkannya terjadinya error pada beberapa media (misalnya, radio) cenderung timbul secara meletup (burst) bukannya satu demi satu. Error yang meletup seperti itu memiliki baik keuntungan maupun kerugian pada error bit tunggal yang terisolasi. Sisi keuntungannya, data komputer selalu dikirim dalam bentuk blok-blok bit. Anggap ukuran blok sama dengan 1000 bit, dan laju error adalah 0,001 per bit. Bila error-errornya independen, maka sebagian besar blok akan mengandung error. Bila error terjadi dengan letupan 100, maka hanya satu atau dua blok dalam 100 blok yang akan terpengaruh, secara rata-ratanya. Kerugian error letupan adalah bahwa error seperti itu lebih sulit untuk dideteksi dan dikoreksi dibanding dengan error yang terisolasi.
Para perancang jaringan telah membuat dua strategi dasar yang berkenaan dengan error. Cara pertama adalah dengan melibatkan informasi redundan secukupnya bersama-sama dengan setiap blok data yang dikirimkan untuk memungkinkan penerima menarik kesimpulan tentang apa karakter yang ditransmisikan yang seharusnya ada. Cara lainnya adalah dengan hanya melibatkan redundansi secukupnya untuk menarik kesimpulan bahwa suatu error telah terjadi, dan membiarkannya untuk meminta pengiriman ulang. Strategi pertama menggunakan kode-kode pengkoreksian error (error-correcting codes), sedangkan strategi kedua menggunakan kode-kode pendeteksian error (error-detecting codes).
Untuk bisa mengerti tentang penanganan error, maka perlu melihat dari dekat tentang apa yang disebut error itu. Biasanya, sebuah frame terdiri dari m bit data (yaitu pesan) dan r redundan, atau check bits. Ambil panjang total sebesar n (yaitu, n = m + r). Sebuah satuan n-bit yang berisi data dan checkbit sering kali dikaitkan sebagai codeword n-bit.
Ditentukan dua buah codeword: 10001001 dan 10110001. Disini kita dapat menentukan berapa banyak bit yang berkaitan berbeda. Dalam hal ini, terdapat 3 bit yang berlainan. Untuk menentukannya cukup melakukan operasi EXCLUSIVE OR pada kedua codeword, dan menghitung jumlah bit 1 pada hasil operasi. Jumlah posisi bit dimana dua codeword berbeda disebut jarak Hamming (Hamming, 1950). Hal yang perlu diperhatikan adalah bahwa bila dua codeword terpisah dengan jarak Hamming d, maka akan diperlukan error bit tunggal d untuk mengkonversi dari yang satu menjadi yang lainnya.
Pada sebagian besar aplikasi transmisi data, seluruh 2m pesan data merupakan data yang legal. Tetapi sehubungan dengan cara penghitungan check bit, tidak semua 2n digunakan. Bila ditentukan algoritma untuk menghitung check bit, maka akan dimungkinkan untuk membuat daftar lengkap codeword yang legal. Dari daftar ini dapat dicari dua codeword yang jarak Hamming-nya minimum. Jarak ini merupakan jarak Hamming bagi kode yang lengkap.
Sifat-sifat pendeteksian error dan perbaikan error suatu kode tergantung pada jarak Hamming-nya. Untuk mendeteksi d error, anda membutuhkan kode dengan jarak d + 1 karena dengan kode seperti itu tidak mungkin bahwa error bit tunggal d dapat mengubah sebuah codeword yang valid menjadi codeword valid lainnya. Ketika penerima melihat codeword yang tidak valid, maka penerima dapat berkata bahwa telah terjadi error pada transmisi. Demikian juga, untuk memperbaiki error d, anda memerlukan kode yang berjarak 2d + 1 karena hal itu menyatakan codeword legal dapat terpisah bahkan dengan perubahan d, codeword orisinil akan lebih dekat dibanding codeword lainnya, maka perbaikan error dapat ditentukan secara unik.
Sebagai sebuah contoh sederhana bagi kode pendeteksian error, ambil sebuah kode dimana parity bit tunggal ditambahkan ke data. Parity bit dipilih supaya jumlah bit-bit 1 dalam codeword menjadi genap (atau ganjil). Misalnya, bila 10110101 dikirimkan dalam parity genap dengan menambahkan sebuah bit pada bagian ujungnya, maka data itu menjadi 101101011, sedangkan dengan parity genap 10110001 menjadi 101100010. Sebuah kode dengan parity bit tunggal mempunyai jarak 2, karena sembarang error bit tunggal menghasilkan sebuah codeword dengan parity yang salah. Cara ini dapat digunakan untuk mendeteksi erro-error tunggal.
Sebagai contoh sederhana dari kode perbaikan error, ambil sebuah kode yang hanya memiliki empat buah codeword valid: 0000000000, 0000011111, 1111100000 dan 1111111111. Kode ini mempunyai jarak 5, yang berarti bahwa code tersebut dapat memperbaiki error ganda. Bila codeword 0000011111 tiba, maka penerima akan tahun bahwa data orisinil seharusnya adalah 0000011111. Akan tetapi bila error tripel mengubah 0000000000 menjadi 0000000111, maka error tidak akan dapat diperbaiki.
Bayangkan bahwa kita akan merancang kode dengan m bit pesan dan r bit check yang akan memungkinkan semua error tunggal bisa diperbaiki. Masing-masing dari 2m pesan yang legal membutuhkan pola bit n + 1. Karena jumlah total pola bit adalah 2n, kita harus memiliki (n + 1)2m ≤ 2n. Dengan memakai n = m + r, persyaratan ini menjadi (m + r + 1) ≤ 2r. Bila m ditentukan, maka ini akan meletakkan batas bawah pada jumlah bit check yang diperlukan untuk mengkoreksi error tunggal.
Dalam kenyataannya, batas bawah teoritis ini dapat diperoleh dengan menggunakan metoda Hamming. Bit-bit codeword dinomori secara berurutan, diawali dengan bit 1 pada sisi paling kiri. Bit bit yang merupakan pangkat 2 (1,2,4,8,16 dan seterusnya) adalah bit check. Sisanya (3,5,6,7,9 dan seterusnya) disisipi dengan m bit data. Setiap bit check memaksa parity sebagian kumpulan bit, termasuk dirinya sendiri, menjadi genap (atau ganjil). Sebuah bit dapat dimasukkan dalam beberapa komputasi parity. Untuk mengetahui bit check dimana bit data pada posisi k berkontribusi, tulis ulang k sebagai jumlahan pangkat 2. Misalnya, 11 = 1 + 2 + 8 dan 29 = 1 + 4 + 8 + 16. Sebuah bit dicek oleh bit check yang terjadi pada ekspansinya (misalnya, bit 11 dicek oleh bit 1, 2 dan 8).
Ketika sebuah codeword tiba, penerima menginisialisasi counter ke nol. Kemudian codeword memeriksa setiap bit check, k (k= 1, 2, 4, 8,….) untuk melihat apakah bit check tersebut mempunyai parity yang benar. Bila tidak, codeword akan menambahkan k ke counter. Bila counter sama dengan nol setelah semua bit check diuji (yaitu, bila semua bit checknya benar), codeword akan diterima sebagai valid. Bila counter tidak sama dengan nol, maka pesan mengandung sejumlah bit yang tidak benar. Misalnya bila bit check 1,2, dan 8 mengalami kesalahan (error), maka bit inversinya adalah 11, karena itu hanya satu-satunya yang diperiksa oleh bit 1,2, dan 8. Gambar 2.2 menggambarkan beberapa karakter ASCII 7-bit yang diencode sebagai codeword 11 bit dengan menggunakan kode Hamming. Perlu diingat bahwa data terdapat pada posisi bit 3, 5, 6, 7, 9, 10, 11.
Gambar 2.2 Penggunaan kode Hamming untuk mengkoreksi burst error
Kode Hamming hanya bisa memperbaiki error tunggal. Akan tetapi, ada trick yang dapat digunakan untuk memungkinkan kode Hamming dapat memperbaiki error yang meletup. Sejumlah k buah codeword yang berurutan disusun sebagai sebuah matriks, satu codeword per baris. Biasanya, data akan ditransmisikan satu baris codeword sekali, dari kiri ke kanan. Untuk mengkoreksi error yang meletup, data harus ditransmisikan satu kolom sekali, diawali dengan kolom yang paling kiri. Ketika seluruh k bit telah dikirimkan, kolom kedua mulai dikirimkan, dan seterusnya. Pada saat frame tiba pada penerima, matriks direkonstruksi, satu kolom per satuan waktu. Bila suatu error yang meletup terjadi, paling banyak 1 bit pada setiap k codeword akan terpengaruh. Akan tetapi kode Hamming dapat memperbaiki satu error per codeword, sehingga seluruh blok dapat diperbaiki. Metode ini memakai kr bit check untuk membuat km bit data dapat immune terhadap error tunggal yang meletup dengan panjang k atau kurang.
Selective Repeat atau dikenal juga sebagai Selective-reject. Dengan selective reject ARQ, frame-frame yang akan dikirimkan hanya frame-frame yang mendapat balasan negatif, dalam hal ini disebut SREJ atau frame-frame yang waktunya sudah habis.
Cara selective-reject ARQ dalam memperbaiki kesalahan adalah dengan cara, mulanya bagian transmitter mengirim stream data kontinyu dari frame yang kontinyu, pada sisi penerima data tersebut disimpan dan dilakukan proses CRC. Tapi proses CRC ini berlangsung pada stream data yang kontinyu dari frame yang diterima. Ketika dijumpai frame yang error, penerima mengirim informasi pada sisi pengirim melalui “return channel”. Bagian pengirim kemudian mengambil frame tersebut dari tempat penyimpanan data, lalu dimasukkan dalam antrian transmisi. Ada beberapa poin penting bagi pembaca frame, yang pertama adalah harus ada cara untuk mengidentifikasi frame. Yang kedua adalah harus ada cara yang baik untuk mengetahui frame mendapat balasan positif atau balasan negatif.
Kedua poin penting tersebut bisa di atasi dengan menggunakan angka sekuensial yang dikirim dan yang diterima. Angka sekuensial yang dikirim ada pada pengirim, begitu juga dengan angka sekuensial yang diterima berada pada penerima. Angka sekuensial yang diterima yang dikirim kembali pada sisi pengirim adalah angka sekuensial yang dikirim oleh sisi pengirim dan mendapat balasan positif dari sisi penerima. Ketika sisi penerima mendeteksi kesalahan pada frame, maka sisi penerima akan mengirimkan angka sekuensial yang dikirim bersama frame yang dianggap error. Tentu daja pada akhirnya sisi penerima harus menata kembali frame sesuai urutannya seperti pada sisi pengirim sebelum data diteruskan ke pengguna akhir.
Selective-reject ARQ lebih efisien terhadap Go-Back-N karena mengurangi jumlah retransmisi. Namun selective-reject memerlukan kapasitas penyimpanan data yang lebih besar baik disisi pengirim dan penerima untuk menyimpan frame sampai frame yang rusak diretransmisi. Selain itu disisi penerima juga harus terdapat software yang dapat mengirim frame diluar urutan agar data bisa sampai secara urut pada pengguna akhir. Selective repeat dapat diimplementasikan dengan dua cara:
Dari kedua event tersebut kejadian frame diterima di luar sequence, S menahan frame ini di saluran penerima sampai sequence frame masuk berikutnya diterima. Pada kasus implicit retransmission dengan asumsi semua frame ACK diterima dengan benar dapat dijelaskan sebagai berikut (Gambar 2.3):
Gambar 2.3 Implicit Retransmission corrupted I-frame
Sedangkan pada implicit retransmission dengan asumsi bahwa semua I-frame diterima dengan benar kecuali ACK frame N dapat dijelaskan sebagai berikut.
Gambar 2.4 Implicit Retransmission corrupted ACK-frame
Operasi di atas bergantung pada penerimaan frame ACK yang berhubungan dengan frame-frame berikutnya untuk menginisiasi retransmisi frame sebelumnya yang rusak. Usaha yang lain adalah dengan menggunakan explicit negative acknowledgment frame untuk meminta trasnmisi ulang frame yang error. Negative acknowledgment tersebut dikenal dengan selective reject. Pada explicit request dengan asumsi bahwa acknowledgments hilang dalam perjalanan dapat dijelaskan sebagai berikut (lihat Gambar. 2.5 di bawah ini).
Gambar 2.5 Explicit Request Effect Correct Operation
Adapun kesimpulan yang dapat ditarik dari makalah ini, adalah sebagai berikut:
Setelah penulis membuat makalah ini, maka usul dan saran yang dapat penulis sarankan. Dalam pengiriman paket data melalui suatu medium tertentu, akan selalu terjadi adanya perbedaan antara sinyal yang dikirim dengan sinyal yang diterima. Perbedaan tersebut dapat mengakibatkan adanya error atau kesalahan pada paket data yang dikirim tersebut sehingga data tersebut tidak dapat dibaca dengan baik oleh penerima. Untuk menghindari terjadinya error atau kesalahan pada paket data yang dikirim maka diperlukan adanya deteksi kesalahan (checking error), perbaikan kesalahan (correction error), dan pengendalian kesalahan (control error). Maka hendaknya pembaca mampu mengenali serta mengetahui kesalahan-kesalahan yang sering terjadi dalam suatu komunikasi data.