TCP Ağ İletişimi için Nagle Algoritması

Mühendis John Nagle adındaki Nagle algoritması , TCP uygulamaları ile "küçük paket sorunları" nın neden olduğu ağ tıkanıklığını azaltmak için tasarlanmıştır. UNIX uygulamaları, 1980'lerde Nagle'in algoritmasını kullanmaya başladı ve bugün TCP'nin standart bir özelliği olmaya devam ediyor.

Nagle Algoritması Nasıl Çalışır?

Nagle'nin algoritması, TCP uygulamalarının gönderme tarafındaki verileri nagling adı verilen bir yöntemle işler. Küçük boyutlu mesajları algılar ve tel üzerinden veri göndermeden önce bunları daha büyük TCP paketlerine biriktirir ve böylece gereksiz sayıda çok sayıda küçük paket oluşturulmasını engeller. Nagle'in algoritması için teknik şartname 1984 yılında RFC 896 olarak yayınlandı. Çok fazla veri toplanması için kararlar ve gönderiler arasında ne kadar süre beklemesi, genel performans açısından kritik öneme sahiptir.

Nagling, gecikme eklenmesi ( gecikme ) pahasına ağ bağlantısının bant genişliğini daha verimli bir şekilde kullanabilir. RFC 896'da açıklanan bir örnek potansiyel bant genişliği yararlarını ve yaratılışının nedenini göstermektedir:

Uygulamalar, TCP_NODELAY soket programlama seçeneğiyle Nagle algoritmasının kullanımını kontrol eder. Windows, Linux ve Java sistemleri normalde Nagle'yi varsayılan olarak etkinleştirir, bu yüzden bu ortamlar için yazılan uygulamalar, algoritmayı kapatmak istediğinde TCP_NODELAY'ı belirtmelidir.

Sınırlamalar

Nagle algoritması sadece TCP ile kullanılabilir. UDP dahil olmak üzere diğer protokoller desteklemez.

Nagle etkinleştirildiğinde, Internet telefonu araması veya birinci şahıs atıcı oyunları gibi hızlı ağ yanıtına ihtiyaç duyan TCP uygulamaları iyi çalışmayabilir. Algoritmanın daha küçük veri gruplarını bir araya getirmek için fazla zaman harcamasına neden olan gecikmeler, bir ekranda veya bir dijital ses akışında gözle görülebilir bir gecikmeyi tetikleyebilir. Bu uygulamalar genellikle Nagle'yi devre dışı bırakır.

Bu algoritma aslında bilgisayar ağlarının bugün olduğundan daha az bant genişliği desteklediği bir zamanda geliştirildi. Yukarıda anlatılan örnek, John Nagle'in 1980'li yılların başlarında Ford Aerospace'deki deneyimlerine dayanıyordu; burada ağır, ağır yüklü uzun mesafeli ağlarında çığır açan taarruzlar iyi bir anlam ifade ediyordu. Ağ uygulamalarının bugün algoritmasından faydalanabileceği giderek daha az durum vardır.