Skip to content

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

6 de Mayıs de 2021

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

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

Nagle algoritması, TCP uygulamalarının gönderen tarafındaki verileri nagling adı verilen bir yöntemle işler. Küçük boyutlu mesajları algılar ve kablo üzerinden veri göndermeden önce bu mesajları daha büyük TCP paketlerinde biriktirir. Bu işlem, gereksiz yere çok sayıda küçük paketlerin oluşmasını önler. Nagle algoritması için teknik şartname 1984 yılında RFC 896 olarak yayınlandı. Ne kadar veri biriktireceğine ve gönderimler arasında ne kadar bekleyeceğine ilişkin kararlar, genel performansı için kritik öneme sahiptir.

Nagling’in Faydaları

Nagling, gecikme veya gecikme eklenmesi pahasına bir ağ bağlantısının bant genişliğini verimli bir şekilde kullanabilir. RFC 896’da açıklanan bir örnek, potansiyel bant genişliği avantajlarını ve oluşturulma nedenini göstermektedir:

  • Klavye tuş vuruşlarını yakalayan bir TCP uygulaması, yazılan her karakteri bir alıcıya iletmek isterse, her biri 1 bayt veri içeren bir dizi mesaj oluşturabilir.
  • Bu mesajların ağ üzerinden gönderilmesinden önce, her birinin TCP / IP’nin gerektirdiği şekilde TCP başlık bilgileriyle paketlenmesi gerekir. Her başlığın boyutu 20 ile 60 bayt arasında değişir.
  • Rahatsız edilmeden, bu örnek uygulama, yüzde 95 veya daha fazla başlık bilgisinden (21 bayttan en az 20’si) ve gönderenin klavyesinden yüzde 5 veya daha az gerçek verilerden oluşan ağ mesajları üretecektir. Nagle algoritması kullanılarak, aynı veriler daha az mesaj kullanılarak iletilebilir ve bu da büyük bant genişliği tasarrufu sağlar.

Uygulamalar, Nagle algoritmasını kullanımlarını TCP_NODELA soket programlama seçeneği ile kontrol eder. Windows, Linux ve Java sistemleri normalde Nagle’ı varsayılan olarak etkinleştirir. Bu nedenle, bu ortamlar için yazılan uygulamaların algoritmayı kapatmak için TCP_NODELAY belirtmesi gerekir.

Lifewire / Bradley Mitchell

Sınırlamalar

Video görüşmeleri ve çevrimiçi oyunlar gibi hızlı bir ağ yanıtı gerektiren uygulamalar, Nagle etkinleştirildiğinde iyi çalışmayabilir. Algoritmanın daha küçük veri yığınlarını bir araya getirmesi ekstra zaman alırken ortaya çıkan gecikmeler, bir ekranda veya dijital bir ses akışında görsel olarak gözle görülür bir gecikmeyi tetikleyebilir. Bu tür uygulamalar genellikle Nagle’ı devre dışı bırakır. Bu algoritma başlangıçta, bilgisayar ağlarının bugün olduğundan daha az bant genişliğini desteklediği bir zamanda geliştirilmiştir. Yukarıda açıklanan örnek, John Nagle’ın 1980’lerin başında Ford Aerospace’teki deneyimlerine dayanıyordu; burada Ford’un yavaş, ağır yüklü, uzun mesafeli ağında nagling takasları mantıklıydı. Günümüzde ağ uygulamalarının algoritmasından yararlanabileceği daha az durum var. Nagle algoritması yalnızca TCP ile kullanılabilir. UDP gibi diğer protokoller bunu desteklemez.