Algoritma Nagle untuk Komunikasi Jaringan TCP

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 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.