Algoritma Nagle , dinamakan setelah insinyur John Nagle, dirancang untuk mengurangi kemacetan jaringan yang disebabkan oleh "masalah paket kecil" dengan aplikasi TCP . Implementasi UNIX mulai menggunakan algoritma Nagle pada 1980-an, dan tetap menjadi fitur standar dari TCP hari ini.
Bagaimana Algoritma Nagle Bekerja
Algoritma Nagle memproses data di sisi pengiriman aplikasi TCP dengan metode yang disebut nagling . Ia mendeteksi pesan-pesan berukuran kecil dan mengumpulkannya ke dalam paket TCP yang lebih besar sebelum mengirim data melalui kabel, dengan demikian menghindari pembentukan sejumlah paket kecil yang tidak perlu. Spesifikasi teknis untuk algoritma Nagle diterbitkan pada 1984 sebagai RFC 896. Keputusan untuk mengumpulkan banyak data dan berapa lama menunggu di antara pengiriman sangat penting untuk kinerja keseluruhannya.
Nagling dapat lebih efisien menggunakan bandwidth koneksi jaringan dengan mengorbankan penambahan penundaan ( latensi ). Contoh yang dijelaskan dalam RFC 896 menggambarkan manfaat bandwidth potensial dan alasan pembuatannya:
- Aplikasi TCP yang memotong ketikan keyboard dan ingin mengkomunikasikan setiap karakter yang diketik ke penerima, dapat menghasilkan serangkaian pesan yang masing-masing berisi 1 byte data.
- Sebelum pesan-pesan ini dapat dikirim melalui jaringan, masing-masing harus dikemas bersama dengan informasi header TCP seperti yang dipersyaratkan oleh TCP / IP. Setiap header berkisar dalam ukuran antara 20 dan 60 byte.
- Tanpa nagling, aplikasi contoh ini akan menghasilkan pesan jaringan yang terdiri dari 95% atau lebih informasi header (setidaknya 20 dari 21 byte) dan 5% atau kurang data aktual dari keyboard pengirim. Dengan menggunakan algoritma Nagle, data yang sama bisa dikirimkan menggunakan banyak pesan yang lebih sedikit dan memiliki 95% dari konten yang menjadi informasi keyboard - penghematan bandwidth yang sangat besar.
Aplikasi mengontrol penggunaan mereka atas algoritma Nagle dengan opsi pemrograman soket TCP_NODELAY. Windows, Linux, dan sistem Java semuanya secara normal mengaktifkan Nagle secara default, sehingga aplikasi yang ditulis untuk lingkungan tersebut perlu menentukan TCP_NODELAY ketika ingin mematikan algoritma.
Keterbatasan
Algoritma Nagle hanya dapat digunakan dengan TCP. Protokol lain termasuk UDP tidak mendukungnya.
Aplikasi TCP yang membutuhkan respons jaringan cepat, seperti panggilan telepon internet atau permainan penembak orang pertama, mungkin tidak berfungsi dengan baik saat Nagle diaktifkan. Penundaan disebabkan sementara algoritma membutuhkan waktu ekstra untuk mengumpulkan potongan data yang lebih kecil bersama-sama dapat memicu jeda yang nyata secara visual di layar atau dalam aliran audio digital. Aplikasi ini biasanya menonaktifkan Nagle.
Algoritma ini awalnya dikembangkan pada saat jaringan komputer mendukung bandwidth jauh lebih sedikit daripada yang mereka lakukan saat ini. Contoh yang dijelaskan di atas didasarkan pada pengalaman John Nagle di Ford Aerospace pada awal 1980-an, di mana tawar-menawar yang berliku-liku pada jaringan jarak jauh mereka yang lambat dan penuh muatan masuk akal. Ada semakin sedikit situasi di mana aplikasi jaringan dapat memperoleh manfaat dari algoritmanya hari ini.