Algoritma Nagle untuk Komunikasi Rangkaian TCP

Algoritma Nagle , dinamakan selepas jurutera John Nagle, direka untuk mengurangkan kesesakan rangkaian yang disebabkan oleh "masalah paket kecil" dengan aplikasi TCP . Pelaksanaan UNIX mula menggunakan algoritma Nagle pada tahun 1980-an, dan ia tetap menjadi ciri piawai TCP hari ini.

Bagaimana Algoritma Nagle berfungsi

Algoritma Nagle memproses data pada sisi penghantaran aplikasi TCP dengan kaedah yang disebut nagling . Ia mengesan mesej bersaiz kecil dan menumpuknya ke dalam paket TCP yang lebih besar sebelum menghantar data ke seluruh wayar, dengan itu mengelakkan penjanaan bilangan kecil paket kecil yang tidak perlu. Spesifikasi teknikal untuk algoritma Nagle telah diterbitkan pada tahun 1984 sebagai RFC 896. Keputusan untuk banyak data yang terkumpul dan berapa lama menunggu di antara penghantaran adalah penting untuk prestasi keseluruhannya.

Nagling boleh menggunakan jalur lebar sambungan rangkaian dengan cekap dengan menambah penangguhan ( latency ). Contoh yang diterangkan dalam RFC 896 menggambarkan manfaat jalur lebar yang berpotensi dan sebab penciptaannya:

Aplikasi mengawal penggunaan algoritma Nagle dengan pilihan pengaturcapan TCP_NODELAY. Sistem Windows, Linux, dan Java biasanya membolehkan Nagle secara lalai, jadi aplikasi yang ditulis untuk persekitaran tersebut perlu menentukan TCP_NODELAY apabila hendak mematikan algoritma.

Had

Algoritma Nagle hanya boleh digunakan dengan TCP. Protokol lain termasuk UDP tidak menyokongnya.

Aplikasi TCP yang memerlukan sambutan rangkaian cepat, seperti panggilan telefon Internet atau permainan penembak orang pertama, mungkin tidak berfungsi dengan baik apabila Nagle diaktifkan. Kelewatan itu disebabkan sementara algoritma mengambil masa tambahan untuk memasang lebih banyak data kecil bersama-sama boleh mencetuskan ketinggian visual secara visual pada skrin atau dalam aliran audio digital. Aplikasi ini biasanya melumpuhkan Nagle.

Algoritma ini pada asalnya dibangunkan pada masa rangkaian komputer menyokong lebar jalur yang jauh lebih sedikit dari yang mereka lakukan hari ini. Contoh yang diterangkan di atas adalah berdasarkan pengalaman John Nagle di Ford Aerospace pada awal tahun 1980-an, di mana keruntuhan perdagangan di rangkaian jarak jauh yang lambat dan banyak dimakan masuk akal. Terdapat keadaan yang semakin sedikit di mana aplikasi rangkaian boleh mendapat manfaat daripada algoritmanya hari ini.