Tıkanıklık Kontrolü İlkeleri
Tıkanıklık kontrolü, göndericilerin paylaşılan bir ağa veri enjekte etme hızını düzenleyerek, toplam talebin kapasiteye yakın kalmasını sağlamakta ve sunulan yükün ağın iletim kapasitesini aştığında meydana gelen tıkanıklık çöküşünü önlemektedir.
Tanım
Tıkanıklık kontrolü, göndericilerin ağ tıkanıklığı sinyallerine yanıt olarak iletim hızlarını ayarladığı mekanizmalar bütünüdür; bu sayede toplam yük, ağın kapasitesine yakın tutulurken, rekabet eden akışlar arasında adil bir şekilde paylaşılmaktadır.
Kapsam
Bu konu, tıkanıklık kontrolünün ilkelerini ve uygulamasını kapsamaktadır: akış kontrolünden ayrımı, tıkanıklığın nedenleri ve maliyetleri, uçtan uca yaklaşımlara karşı ağ destekli yaklaşımlar, eklemeli artış/çarpımsal azalış (AIMD) dinamiği ile bunun adalet ve kararlılık özellikleri ve TCP'nin somut algoritmaları — yavaş başlama (slow start), tıkanıklık önleme (congestion avoidance), hızlı kurtarma (fast recovery) — ayrıca açık tıkanıklık bildirimi (explicit congestion notification) rolü ve alternatif algoritmaların varlığı incelenmektedir. Ağ aşırı yüklenmesini değil, kayıp kurtarmayı ele alan bağlantı başına güvenilirlik mekanizmaları bu kapsamın dışındadır.
Temel sorular
- Tıkanıklık kontrolü, akış kontrolünden nasıl farklılaşmaktadır?
- Tıkanıklığa ne sebep olur ve tıkanıklık çöküşü nedir?
- AIMD dinamiği nedir ve neden adalet ile kararlılığa yol açmaktadır?
- TCP'nin yavaş başlama, tıkanıklık önleme ve hızlı kurtarma aşamaları nasıl çalışmaktadır?
- Uçtan uca (kayıp/gecikme) sinyalleri, ECN gibi ağ destekli sinyallerle nasıl karşılaştırılmaktadır?
Anahtar kavramlar
- tıkanıklık ve akış kontrolü
- tıkanıklık çöküşü
- eklemeli artış/çarpımsal azalış (AIMD)
- yavaş başlama (slow start)
- tıkanıklık önleme (congestion avoidance)
- hızlı yeniden iletim ve hızlı kurtarma (fast retransmit and fast recovery)
- tıkanıklık penceresi (congestion window)
- açık tıkanıklık bildirimi (ECN)
- adalet ve verimlilik
Temel kuramlar
- Eklemeli artış, çarpımsal azalış (AIMD)
- Tıkanıklık yokken gönderme penceresini doğrusal olarak artırmak ve bir tıkanıklık sinyalinde yarıya indirmek, rekabet eden akışları eşit ve verimli bir kapasite paylaşımına yönlendirmektedir; analizler, AIMD'nin adalet ve verimliliğe yakınsadığını göstermekte, bu nedenle TCP tarafından benimsenmektedir.
- TCP tıkanıklık kontrolü aşamaları
- TCP, üstel bir yavaş başlama (slow-start) ile bant genişliğini araştırmakta, tahmini kapasiteye yakın doğrusal tıkanıklık önlemeye (congestion avoidance) geçmekte ve yeniden başlatmaya gerek kalmadan izole kayıplara tepki vermek için hızlı yeniden iletim/hızlı kurtarma (fast retransmit/fast recovery) kullanmakta, tıkanıklığı öncelikli olarak paket kaybından çıkarmaktadır.
- Tıkanıklık çöküşünü önleme
- Hız kontrolü olmadan, aşırı yüklenme sırasındaki yeniden iletimler bir ağı verimin aniden düştüğü tıkanıklık çöküşüne sürükleyebilmektedir; 1980'lerin sonlarında tıkanıklık önleme mekanizmasının tanıtılması, İnternet'i tekrarlayan çöküşlerden kurtarmıştır.
Klinik önem
Tıkanıklık kontrolü, paylaşılan İnternet'in yoğun yük altında kullanılabilir kalmasını sağlayan temel unsurdur: 1980'lerin sonlarından bu yana sistemik çöküşü önlemiş ve milyarlarca akış için verim, gecikme ve adaleti sürekli olarak dengelemektedir. Tasarımı, indirme hızlarını, video akış kalitesini ve veri merkezi performansını doğrudan etkilemekte olup, CUBIC ve BBR gibi algoritmalar ve düşük gecikmeli kuyruk yönetimi üzerine yapılan aktif araştırmalar bu dengeyi geliştirmeye devam etmektedir.
Tarihçe
1986-1987 yıllarında erken İnternet'te yaşanan bir dizi tıkanıklık çöküşünün ardından, Van Jacobson'ın 1988 tarihli çalışması yavaş başlama (slow start) ve tıkanıklık önleme (congestion avoidance) mekanizmalarını tanıtarak modern TCP tıkanıklık kontrolünü kurmuştur. Chiu ve Jain'in 1989 tarihli analizi, AIMD'nin neden adalet ve verimlilik sağladığını açıklamıştır. Sonraki on yıllarda Reno, NewReno, CUBIC ve model tabanlı BBR gibi varyantlar ile RED ve ECN gibi yönlendirici tarafı mekanizmalar geliştirilmiştir.
Tartışmalar
- Kayıp tabanlıya karşı gecikme ve model tabanlı tıkanıklık kontrolü
- Kayıp tabanlı TCP, yalnızca arabellekler taştığında tepki vermekte, bu da yüksek gecikmeye (bufferbloat) ve hızlı uzun mesafeli bağlantıların yetersiz kullanımına neden olabilmekte, BBR gibi gecikme tabanlı ve model tabanlı şemaları teşvik etmektedir; tartışma, bunların geleneksel kayıp tabanlı akışlarla bir arada var olduğunda adalet üzerine odaklanmaktadır.
Öne çıkan isimler
- Van Jacobson
- Dah-Ming Chiu
- Raj Jain
- Sally Floyd
İlgili konular
Temel eserler
- jacobson1988
- chiu1989
- kurose2021
Sıkça sorulan sorular
- Akış kontrolü ile tıkanıklık kontrolü arasındaki fark nedir?
- Akış kontrolü alıcıyı korumaktadır: hızlı bir göndericinin yavaş bir alıcının arabelleğini aşmasını engellemektedir. Tıkanıklık kontrolü ağı korumaktadır: göndericilerin toplu olarak yönlendiricileri ve aralarındaki bağlantıları aşırı yüklemesini durdurmaktadır. TCP her ikisini de yapmakta, akış kontrolü için alıcı penceresini ve tıkanıklık kontrolü için tıkanıklık penceresini kullanmaktadır.
- TCP neden paket kaybı gördüğünde yavaşlamaktadır?
- Kayıp, TCP'nin ağın tıkalı olduğuna dair ana sinyalidir. Kayıp durumunda gönderme hızını keskin bir şekilde azaltarak ve aksi takdirde yalnızca kademeli olarak artırarak, TCP ağ aşırı yüklendiğinde geri çekilmekte ve aşırı yüklü olmadığında boş kapasiteyi araştırmaktadır; bu da toplam trafiği kapasiteye yakın tutmakta ve bant genişliğini kabaca adil bir şekilde paylaşmaktadır.