Apa itu TCP Retransmission ?
Transmisi ulang TCP berarti mengirim ulang paket-paket melalui jaringan yang hilang atau rusak. Di sini, transmisi ulang adalah mekanisme yang digunakan oleh protokol seperti TCP untuk menyediakan komunikasi yang andal. Di sini, komunikasi yang andal berarti protokol menjamin pengiriman paket meskipun paket data hilang atau rusak.
Jaringan tidak dapat diandalkan dan tidak menjamin penundaan atau pengiriman ulang paket yang hilang atau rusak. Jaringan yang menggunakan kombinasi pengakuan dan transmisi ulang paket yang rusak atau hilang menawarkan keandalan.
Mekanisme transmisi ulang
Di sini, transmisi ulang berarti paket data telah hilang, yang menyebabkan kurangnya pengakuan. Kurangnya pengakuan ini memicu pengatur waktu habis, yang menyebabkan pengiriman ulang paket data. Di sini, pengatur waktu berarti bahwa jika tidak ada pengakuan yang diterima sebelum pengatur waktu berakhir, paket data akan dikirim ulang.
Mari pertimbangkan skenario transmisi ulang berikut.PauseNextMute
Current Time 0:31
/
Duration 18:10
Loaded: 8.44%
 Fullscreen
Skenario 1: Ketika paket data hilang atau salah.
Dalam skenario ini, paket dikirim ke penerima, namun tidak ada pengakuan yang diterima dalam periode waktu habis tersebut. Ketika jangka waktu habis, maka paket dikirim ulang lagi. Ketika paket ditransmisikan ulang, pengakuan diterima. Setelah pengakuan diterima, transmisi ulang tidak akan terjadi lagi.
Skenario 2: Ketika paket diterima tetapi pengakuannya hilang.
Dalam skenario ini, paket diterima di sisi lain, tetapi pengakuannya hilang, yaitu, ACK tidak diterima di sisi pengirim. Setelah periode waktu habis, paket dikirim ulang. Ada dua salinan paket di sisi lain; meskipun paket diterima dengan benar, pengakuannya tidak diterima, jadi pengirim mengirimkan ulang paket tersebut. Dalam kasus ini, pengiriman ulang dapat dihindari, tetapi karena hilangnya ACK, paket tersebut dikirimkan ulang.
Skenario 3: Saat batas waktu awal terjadi.
Dalam skenario ini, paket dikirim, namun karena penundaan pengakuan atau batas waktu telah terjadi sebelum batas waktu sebenarnya, paket dikirimkan ulang. Dalam hal ini, paket telah dikirim kembali secara tidak perlu karena keterlambatan pengakuan atau batas waktu telah ditetapkan lebih awal dari batas waktu sebenarnya.
Dalam skenario di atas, skenario pertama tidak dapat dihindari, namun dua skenario lainnya dapat dihindari. Mari kita lihat bagaimana kita dapat menghindari situasi ini.
Berapa lama pengirim harus menunggu?
Pengirim menetapkan periode batas waktu untuk ACK. Periode batas waktu dapat berupa dua jenis:
- Terlalu pendek: Jika periode waktu habis terlalu pendek, transmisi ulang akan sia-sia.
- Terlalu lama: Jika jangka waktu habis terlalu lama, maka akan terjadi penundaan yang berlebihan saat paket hilang.
Untuk mengatasi kedua situasi di atas, TCP menetapkan timeout sebagai fungsi dari RTT (round trip time) dimana round trip time adalah waktu yang dibutuhkan paket untuk melakukan perjalanan dari sumber ke tujuan dan kemudian kembali lagi.
Bagaimana kita bisa memperoleh RTT?
RTT dapat bervariasi tergantung pada karakteristik jaringan, yaitu, jika jaringan padat, berarti RTT sangat tinggi. Kita dapat memperkirakan RTT hanya dengan mengamati ACK.
Mari kita lihat bagaimana kita dapat mengukur RTT.
Kami akan menggunakan algoritma asli untuk mengukur RTT.
Langkah 1: Pertama, kami mengukur SampleRTT untuk setiap segmen atau pasangan ACK. Saat pengirim mengirim paket, kami mengetahui waktu saat paket dikirim, dan juga, kami mengetahui waktu saat pengakuan diterima. Hitung waktu antara keduanya, dan itu menjadi SampleRTT .
Langkah 2: Kami tidak akan mengambil hanya satu sampel. Kami akan terus mengambil sampel yang berbeda dan menghitung rata-rata tertimbang dari sampel tersebut, dan ini menjadi EstRTT (Estimated RTT).
dimana, α+ β = 1
α terletak antara 0,8 dan 0,9
β terletak antara 0,1 dan 0,2
Langkah 3: Batas waktu ditetapkan berdasarkan EstRTT.
batas waktu = 2 * EstRTT.
Batas waktu diatur dua kali lipat dari perkiraan RTT. Ini adalah bagaimana faktor batas waktu sebenarnya dihitung.
Kelemahan pendekatan ini
Ada cacat pada algoritma aslinya. Mari kita pertimbangkan dua skenario.
Skenario 1.
Diagram di atas menunjukkan bahwa pengirim mengirimkan data yang dikatakan sebagai transmisi asli. Dalam periode waktu habis, tidak ada pengakuan yang diterima. Jadi, pengirim mengirimkan ulang datanya. Setelah mengirimkan ulang data, pengakuan diterima. Mari kita asumsikan bahwa pengakuan diterima untuk transmisi asli, bukan untuk transmisi ulang. Karena kita mendapatkan pengakuan dari transmisi asli, maka SampleRTT dihitung antara waktu transmisi asli dan waktu diterimanya pengakuan. Namun sebenarnya, SampleRTT seharusnya berada di antara waktu transmisi ulang dan waktu pengakuan.
Skenario 2.
Diagram di atas menunjukkan bahwa pengirim mengirimkan paket data asli yang juga menerima pengakuan. Namun, pengakuan diterima setelah data dikirimkan ulang. Jika kita berasumsi bahwa pengakuan termasuk dalam pengiriman ulang, maka SampleRTT dihitung antara waktu pengiriman ulang dan waktu pengakuan.
Dalam kedua skenario di atas, terdapat ambiguitas karena tidak mengetahui apakah pengakuan tersebut untuk transmisi asli atau untuk transmisi ulang.
Kesimpulan dari algoritma di atas.
- Di sini, ACK tidak berarti mengakui transmisi, tetapi sebenarnya mengakui penerimaan data.
- Jika kita mempertimbangkan skenario pertama, pengiriman ulang dilakukan untuk paket yang hilang. Dalam kasus ini, kita berasumsi bahwa ACK termasuk dalam transmisi asli sehingga SampleRTT menjadi sangat besar.
- Jika kita mempertimbangkan skenario kedua, dua paket yang sama dikirimkan sehingga duplikasi terjadi dalam kasus ini. Dalam kasus ini, kita berasumsi bahwa ACK termasuk dalam pengiriman ulang yang menyebabkan SampleRTT menjadi sangat kecil.
Untuk mengatasi masalah di atas, solusi sederhana diberikan oleh algoritma Karn/Partridge. Algoritma ini memberikan solusi sederhana yang mengumpulkan sampel yang dikirim pada satu waktu dan tidak mempertimbangkan sampel pada waktu pengiriman ulang untuk menghitung estimasi RTT.
Algoritma Karn/Partridge
Dalam dua skenario di atas, terjadi pengiriman ulang, dan kami telah mempertimbangkan Sample RTT. Namun, algoritme ini tidak mempertimbangkan Sample RTT saat pengiriman ulang. Karena pengiriman ulang telah terjadi, yang berarti bahwa sesuatu terjadi dalam waktu pulang-pergi ini atau beberapa kemacetan mungkin terjadi dalam suatu jaringan. Untuk mengatasi masalah ini, algoritme ini menggandakan batas waktu setelah setiap pengiriman ulang. Algoritme ini diimplementasikan dalam jaringan TCP.
Keterbatasan
Ia tidak mempertimbangkan varians dalam RTT.
- Jika variansnya kecil, EstimatedRTT menjadi akurat. Jika variansnya besar, EstimatedRTT tidak akurat.
Untuk mengatasi keterbatasan di atas, algoritma Jacobson/Karels dikembangkan yang memperkenalkan faktor varians dalam RTT.
Algoritma Jacobson/Karels
Algoritma ini dikembangkan untuk mengatasi keterbatasan algoritma Karn/Partridge . Ini menghitung perbedaan antara SampleRTT dan EstimasiRTT, dan meningkatkan RTT berdasarkan perbedaan tersebut.
Perhitungan untuk RTT rata-rata
- Pertama, kita hitung faktor perbedaannya.
Diff = SampleRTT – EstimatedRTT
- Sekarang, kita hitung EstimatedRTT, yang akan dihitung dengan cara yang sama seperti yang kita lakukan di atas.
EstRTT = EstRTT + (δ*Diff)
- Sekarang, kita menghitung rata-rata faktor selisihnya.
Dev = Dev + δ ( |Berbeda| – Dev)
Di sini, Dev adalah faktor deviasi, dan δ adalah faktor antara 0 dan 1. Dev adalah estimasi varians dari EstRTT .
- Kami akan mempertimbangkan varians sambil menghitung nilai batas waktu.
Batas Waktu = µ * EstRTT + ɸ * Dev
Dimana, µ =1 dan ɸ =4
Transmisi Ulang Cepat
Strategi berbasis batas waktu untuk transmisi ulang tidak efisien. TCP adalah jenis protokol jendela geser, jadi setiap kali transmisi ulang terjadi, TCP mulai mengirimkannya dari paket yang hilang dan seterusnya.
Misalkan saya mengirimkan paket 0, 1, 2, dan 3. Karena paket 0 dan paket 1 diterima di sisi lain, paket 2 hilang dalam jaringan. Saya sudah menerima acknowledgment paket 0 dan paket 1, jadi saya mengirimkan dua paket lagi yaitu paket 4 dan paket 5. Ketika paket 3, 4, dan 5 terkirim, maka saya akan mendapatkan acknowledgment paket 1 sebagai TCP acknowledgment bersifat kumulatif, sehingga ia mengakui hingga paket yang diterimanya secara berurutan. Saya belum menerima pengakuan paket 2, 3,4, dan 5 dalam jangka waktu habis, jadi saya transmisi ulang paket 2, 3, 4, dan 5. Karena paket 2 hilang, tetapi paket lain, yaitu 3, 4 ,5 diterima di sisi lain, mereka masih dikirim ulang karena mekanisme batas waktu ini.
Bagaimana cara menghilangkan ketidakefisienan batas waktu ini?
Solusi yang lebih baik di bawah jendela geser:
Misalkan n paket hilang, namun paket n+1, n+2, dan seterusnya masih diterima. Penerima terus menerima paket dan mengirimkan paket ACK yang menyatakan bahwa penerima masih menunggu paket ke-n. Penerima mengirimkan pengakuan berulang atau duplikat. Dalam kasus di atas, ACK paket 1 dikirim tiga kali karena paket 2 hilang. Paket ACK duplikat ini merupakan indikasi bahwa paket ke-n hilang, tetapi paket-paket berikutnya telah diterima.
Situasi di atas dapat diatasi dengan cara berikut:
- Pengirim dapat menganggap “ACK duplikat” sebagai petunjuk awal bahwa paket ke-n telah hilang sehingga pengirim dapat melakukan transmisi ulang sedini mungkin, yaitu pengirim tidak boleh menunggu hingga batas waktu terjadi.
- Pengirim dapat menerapkan strategi transmisi cepat di TCP. Dalam strategi transmisi cepat, pengirim harus mempertimbangkan triple duplikat ACK sebagai pemicu dan mengirimkannya kembali.
TCP menggunakan tiga ACK duplikat sebagai pemicu dan kemudian melakukan pengiriman ulang. Dalam kasus di atas, ketika tiga ACK dari paket 1 diterima, maka pengirim harus mengirimkan paket yang hilang, yaitu paket 2, tanpa menunggu periode batas waktu terjadi.
//AGR
Referensi : [1]