Bölüm 40: Kuyruk Yönetimi
Ağlar'a “Sen”i Katmak kitabının bir bölümü: adres çubuğuna yazdığın tek bir isteğin peşinden bakırla fiberin fiziğine inip karşı taraftan geri dönen uzun bir teknik yolculuk.
Kısım 6: Router'dan Router'a (Bölüm 37-44)
Tüm bölümler
- Giriş
- Adres Çubuğundan İsteğe
- Paket Anahtarlamalı Yol
- İsimden Adrese
- DNS Kayıtları
- Önbellek, Tazelik ve Güven
- Port Numarası ve Soket
- Bağlantısız Taşıma: UDP
- Üç Adımlı El Sıkışma
- Simetrik Şifreleme
- Açık Anahtarlı Kriptografi
- TLS El Sıkışması
- Sertifika Zinciri
- HTTP Mesajının Anatomisi
- Durum, Çerez ve Oturum
- HTTP/2'den HTTP/3'e
- İçerik Dağıtım Ağları
- Diğer Uygulama Protokolleri
- Katmanlı Mimari
- Hizmet ve Protokol
- Encapsulation ve Başlıklar
- Paket Yakalama ve Çözümleme
- Ağ Interface Kartı
- Fiziksel Adresleme
- Hata Sezme ve CRC
- Adres Çözümleme: ARP
- Ortam Erişimi: CSMA/CD
- Switch'ler
- Ağ Topolojileri
- Sanal Yerel Ağlar
- Kablosuz Erişim: 802.11
- Radyo Kanalı ve Kapasite
- Kablosuz Ağ Güvenliği
- Hücresel Ağlar
- Spektrum ve Kuşaklar
- Hareketlilik ve Aktarma
- Adres Kiralama: DHCP
- Adresin Anatomisi
- Adres Tükenmesi ve IPv6
- Router Mimarisi
- Kuyruk Yönetimi
- Cihaz Yapılandırma
- Routing Protokolleri
- Kontrol Düzlemi ve SDN
- Ağ İzleme ve Yönetimi
- Alanlar Arası Routing
- Adres Çevirisi
- Ara Kutular
- Tünelleme ve IPsec
- Firewall'lar
- Ağ Saldırıları
- Operatör ve Metro Ağları
- Bitten Sinyale
- Sembol Hızı ve Kanal Kapasitesi
- Multiplexing Teknikleri
- İletim Ortamları
- Bakır Kablo Sonlandırma
- Fiber Sonlandırma
- Fiber Optik İletim
- Bakır Erişim Ağı: DSL
- DSL'de Hız ve Mesafe
- Pasif Optik Ağlar
- Kablo Erişim Ağları
- Kablo Modem ve CMTS
- Denizaltı Kabloları
- Veri Merkezi Ağları
- Encapsulation Çözme
- Güvenilir Aktarım
- Tıkanıklık Denetimi
- Trafik Çözümleme
- Gecikme Bütçesi
- Soket Programlama
- Eşten Eşe ve Protokol Tasarımı
- Uyarlanır Video Akışı
- Gerçek Zamanlı Ses ve Görüntü
- Kablosuz Sensör Ağlarının Mimarisi
- Sensör Ağlarında Ortam Erişimi
- Sensör Ağlarında Yönlendirme ve IP
- Zaman Eşitleme ve Konum Bulma
- Sensör Ağı Uygulamaları
- Mobil Kablosuz Sensör Ağları
- Son Söz
Router çıkış hattını seçti. Paket şimdi o hattın önünde bekliyor ve önünde başkaları var.
Hangisinin önce gideceğini kablo belirlemiyor. Sırayı bir politika kuruyor, kararı da o politikayı işleten küçük bir zamanlayıcı veriyor. Peki hangi politika?
Kuyruk ne zaman büyüyor?
Bir hattın önünde kuyruk oluşmasının tek bir sebebi var ve kulağa fazla basit geliyor: gelen bit hızı, o hattın gönderebildiği bit hızını bir süre boyunca aşıyor. Fark biriktikçe kuyruk uzuyor. Varış hızı geri düşünce kuyruk boşalıyor. Kuyruk kalıcı bir hâl değil; geçici bir taşkının deposu.
2. bölümde bir düğümdeki gecikmeyi dört kaleme ayırmıştım: işleme, kuyruk, iletim ve yayılma. Bunlardan yalnızca kuyruk kalemi trafikle birlikte değişiyor. İşleme gecikmesi, yani bit hatası denetimi ile çıkış hattının belirlenmesi, mikrosaniyenin altında kalıyor. Bunu aklında tut: router’da harcanan zamanın büyük kısmı sırada beklemekten geliyor, hesaplamadan değil.
Kuyruğun ne kadar büyüyeceğini tek bir oranda toplayabiliyorsun; adı trafik yoğunluğu. Paket uzunluğu ile ortalama varış hızını çarpıp hattın bit iletim hızına bölüyorsun. Oran sıfıra yakınken ortalama kuyruk gecikmesi küçük kalıyor. Ama 1’e yaklaştıkça gecikmenin düz bir çizgi izlemediğini, keskin biçimde tırmandığını göreceksin; 1’i geçtiği yerde gelen iş hizmet edilebilenden fazla oluyor ve ortalama gecikme sonsuza gidiyor.
Hesabı bir örnek üzerinden yürütelim. 1.500 baytlık paketler 100 Mbit/s’lik bir hatta saniyede 8.000 kez geliyor. Paket başına 12.000 bit demek, tek paketin iletimi ise 120 µs sürüyor. Bu girdilerle oran 0,96 çıkıyor. Hat teknik olarak yetiyor, kâğıt üstünde kapasitenin %4’ü bile boşta; ama kuyruk çoktan tırmanmaya başlamış oluyor. Rastgele varışlar varsayan en basit modelde ortalama bekleme, tek paketin iletim süresinin oran / (1 − oran) katı. Oran 0,5’teyken bu bir paket süresi; 0,96’da 24 paket süresi, yani yaklaşık 2,9 ms. Kapasite planlamasında “yetiyor” ile “rahat” arasındaki fark burada.
Kuyruğun kapasitesi de sonlu olduğu için sonu belli: dolu kuyruğa varan paket düşürülüyor. O paketi bir önceki düğüm ya da kaynak uç yeniden gönderebiliyor ya da hiç göndermiyor. Otoyol benzetmesinde giriş rampasındaki bekleme kuyruk gecikmesine karşılık geliyordu; ama rampada sıkışan araç eninde sonunda geçer, silinen paket geçmez.
Tampon ne kadar olmalı?
Çıkış kuyruğunun sebebi, dokunun hattan hızlı olmasıydı. Tamponun boyu işte o farkın ne kadarını soğurabildiğini söylüyor.
Boyutunu uzun yıllar tek bir pratik kural belirledi ve hâlâ karşına çıkıyor. RFC 3439 ortalama tamponu, tipik bir RTT (gidiş-dönüş süresi) ile hat kapasitesinin çarpımı kadar seçmeyi öneriyor. Kuralın örnek olarak aldığı RTT 250 ms; 10 Gbit/s’lik bir hat için bu 312,5 MB tampon demek. 2004’teki bir çalışma aynı çarpımın flow sayısının kareköküne bölünebileceğini gösterdi. Aynı hatta 100 flow varsa gereken tampon onda birine iniyor, çünkü flow’ların tepe noktaları aynı ana düşmüyor.
Fazla tamponu bir iyilik sanma. Hiç boşalmayan uzun bir kuyruk RTT’yi büyütüyor, gerçek zamanlı uygulamaların başarımını düşürüyor ve TCP’nin tepkisini ağırlaştırıyor. Adı bufferbloat ve en çok ev router’larında göze çarpıyor. Evde büyük bir dosya yüklerken görüntülü görüşmenin donmasının sık rastlanan sebebi bu: yükleme, modemin şişkin tamponunu doldurup herkesin paketini yüzlerce milisaniye bekletiyor.
Kuyruk hesabının iki girdisi soyut da kalmıyor; bir router’ın interface durum çıktısında ikisini yan yana görebilirsin:
Serial0/1/0 is up, line protocol is up
MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec,
...
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/40 (size/max)Çıkış kuyruğu 40 paketlik, giriş kuyruğu 75 paketlik. Hattın kapasitesi 1.544 Kbit/s ve interface’in MTU’su 1.500 bayt. MTU bir data link layer kararıydı; burada aynı sayı kuyruk hesabının girdisi oluyor. Kuyruk tam dolduğunda içinde 60.000 bayt, yani 480.000 bit bekliyor. Bu hattın onu boşaltması yaklaşık 311 ms sürüyor. Sıranın sonuna eklenen paket bunu peşinen kabul ediyor. Bu interface’te FIFO elle seçilmiş; Cisco bu hızdaki seri hatlarda varsayılan olarak birazdan göreceğimiz ağırlıklı adil kuyruğu açıyor.
Kimi atmalı, kime haber vermeli?
Çıkış portunun vermesi gereken iki ayrı karar var. Yer kalmadığında hangi paketin düşürüleceği bir karar; sırada bekleyenlerden hangisinin gönderileceği bambaşka bir karar. Birincisi düşürme politikası, ikincisi zamanlama disiplini.
En basit düşürme politikasına kuyruk sonu düşürme deniyor: tampon doluyken gelen paket atılıyor, kuyrukta bekleyenlere dokunulmuyor. İki alternatifi var: paketleri önceliğe göre atmak ya da kuyrukta bekleyen birini geri çıkarmak.
Üçüncü seçenek kuyruk dolmadan davranmak. RED (Random Early Detection), kuyruk uzadıkça artan bir olasılıkla paketleri erkenden atıyor ya da ECN (Explicit Congestion Notification) açıksa atmak yerine işaretliyor. Soru böylece değişiyor: kimi atayım değil, kime haber vereyim. IETF’in tavsiyesi de bu yönde. RFC 7567 ağ cihazlarının kuyruk uzunluğunu yönetmek ve uçtan uca gecikmeyi düşürmek için bir etkin kuyruk yönetimi (AQM) mekanizması uygulamasını istiyor.
Yaygın uygulamalarından biri RFC 8290’da tanımlı FQ-CoDel. Flow kuyruklamayı CoDel etkin kuyruk yönetimiyle birleştiriyor; varsayılan hedef gecikmesi 5 ms, ölçüm aralığı 100 ms. Farklı flow’ların paketlerini birbirine karıştırdığı için ani trafiğin ürettiği baş engellemesinin etkisini de azaltıyor. Linux dağıtımlarının çoğunda varsayılan kuyruk disiplini bugün bu. Daha yeni bir adım da atıldı: 2023’te yayımlanan L4S (RFC 9330-9332) ECN işaretini çok daha erken ve sık kullanarak kuyruk gecikmesini milisaniye düzeyine indirmeyi hedefliyor ve operatörler onu 2025’te sahada açmaya başladı.
İşaretin duracağı yer ise IP başlığında hazır bekliyor. Oradaki 8 bitlik hizmet türü baytı ikiye bölünmüş: ilk 6 bit ayrımlaştırılmış hizmet kod noktası (DSCP), son 2 bit ECN. RFC 2474 o alanı, paketin her düğümde göreceği davranışı seçen bir kod noktası olarak tanımlıyor ve 64 ayrı değer taşıyabiliyor. Öncelik sınıfı ile tıkanıklık işareti, 20 baytlık IP başlığında yan yana duruyor.
İşaretleme şöyle yürüyor. Router o iki biti kuruyor, işaret hedefe kadar taşınıyor, hedef de dönüş onayında ECE bitini kurup göndereni yavaşlatıyor. Hangi durumda işaretleneceğine ağ işletmecisi karar veriyor. Bildirimin neden gerektiği klasik TCP ile CUBIC’e bakınca anlaşılıyor. İkisi de gönderme hızını kayıp oluşana kadar artırıyor ve darboğazda neredeyse hiç boşalmayan bir kuyruk bırakıyor.
Sıradaki paketi kim seçiyor?
Zamanlama disiplininin dört klasik cevabı var. Varsayılanı ilk gelen ilk gider, diğer adıyla FIFO. Paketler çıkış portuna varış sırasına göre iletiliyor ve hiçbir sınıflandırma yapılmıyor; yukarıdaki interface çıktısında kuyruk stratejisi satırının yazdığı da buydu.
Kalan üç politika ise tek kuyrukla çalışmıyor. Gelen trafik önce sınıflara ayrılıyor ve her sınıf kendi kuyruğuna giriyor. Sınıflandırmada başlığın herhangi bir alanı kullanılabiliyor. Öncelikli zamanlayıcı, bekleyen paketi olan en yüksek öncelikli kuyruktan gönderiyor; aynı sınıfın içinde yine ilk gelen ilk gider kuralı işliyor.
Dönüşümlü tarama (round robin) ise sınıf kuyruklarını sırayla dolaşıyor. Sırası gelen her sınıftan tam bir paket gönderiyor ve boş kuyruğu atlıyor. Hiçbir sınıf diğerini aç bırakamıyor. Ağırlıklı adil kuyruk bunun genelleştirilmiş hâli: her sınıfın bir ağırlığı var ve her turda ağırlığı oranında hizmet alıyor. Bir sınıfın aldığı pay, kendi ağırlığının bütün ağırlıklar toplamına oranı. Garanti mutlak bir hız değil, kapasitenin bir oranı.
Zamanlayıcının sırayı nasıl dağıttığını tur tur izleyelim:
- Altı paket aynı sırayla varıyor. Çıkış portuna dördü yedekleme, ikisi ses olmak üzere altı paket geliyor. Bundan sonrası tek bir soruya bakıyor: bu altı paket hattan hangi sırayla çıkacak?
- Trafik iki sınıfa ayrılıyor. İlk gelen ilk gider dışındaki politikalar tek kuyrukla çalışmıyor. Paketler başlıktaki bir alana bakılarak sınıflara bölünüyor ve her sınıf kendi kuyruğunda bekliyor.
- FIFO sırayı hiç bozmuyor. İlk gelen ilk gider hiçbir sınıflandırma yapmıyor. Çıkış sırası varış sırasının aynısı kalıyor; ses paketleri önlerindeki yedekleme paketleri bitene kadar bekliyor.
- Öncelik ses sınıfını öne alıyor. Öncelikli zamanlayıcı, bekleyen paketi olan en yüksek öncelikli kuyruktan gönderiyor. Ses kuyruğu boşalınca sıra aşağı geçiyor, boşalmazsa yedekleme hiç sıra alamıyor.
- Ağırlık payı orana çeviriyor. Ağırlıklı adil kuyrukta her sınıf turda ağırlığı oranında hizmet alıyor. Buradaki iki bir ağırlıkla yedekleme iki paket geçirirken ses bir paket geçiriyor.
Sırayı değil hızı sınırlamak
Zamanlama disiplinleri sıraya karar veriyor: kuyrukta bekleyenlerden hangisi önce çıkacak? Ama bir de ikinci soru var: bir flow saniyede kaç bit gönderebilir? Bu ikincisinin mekanizması ayrı ve adı jeton kovası.
Fikir tek bir resimle anlaşılıyor. Her flow için bir kova düşün. Kovaya sabit bir hızla, saniyede r bit değerinde jeton damlıyor. Kovanın derinliği b; taştığı anda fazla jeton kayboluyor. Bir paket çıkabilmek için boyu kadar jeton harcamak zorunda. Jeton yoksa paket ya bekliyor ya düşüyor.
İki parametre iki ayrı söz veriyor:
uzun vadeli ortalama hız = r
tek seferde çıkabilecek en büyük patlama = b
T süresi boyunca çıkabilecek en çok veri = r · T + bİkinci satır kritik. Kova doluyken bir anda b kadar veri çıkabiliyor; yani sınırlayıcı flow’u boğmuyor, kısa süreli patlamalara izin veriyor. Sessiz kalan bir flow “kredi biriktirmiş” oluyor. Kovanın derinliği bu yüzden bir hoşgörü ayarı: küçük b düzgün ama katı, büyük b esnek ama darboğazda daha çok kuyruk üretiyor.
Jetonu olmayan pakete ne yapılacağı ayrı bir karar ve iki ad taşıyor. Ölçüm-cezalandırma (policing) fazlayı ya düşürüyor ya da düşük öncelikli diye işaretleyip yola devam ettiriyor; hızlı ve ucuz, ama kayıp üretiyor. Şekillendirme (shaping) fazlayı bir kuyrukta bekletip jeton biriktikçe salıyor; kayıp üretmiyor, karşılığında gecikme ekliyor. Aynı kova, iki farklı sonuç: biri bant genişliğini, öteki gecikmeyi ödüyor.
Bunu her gün görüyorsun. Tarifende yazan “100 Mbit/s” bir kablonun fiziksel hızı değil, operatörün kenar cihazına koyduğu jeton kovasının r değeri. Hat gerçekte 1 Gbit/s taşıyabiliyor olabilir. Bulut sağlayıcılarının API kotaları, mobil tarifelerdeki “adil kullanım” sonrası yavaşlatma ve bir dosya indirirken ilk birkaç saniyenin daha hızlı gitmesi; üçü de aynı kovanın farklı ayarları. O ilk hızlı saniyelerde harcanan şey, kovada birikmiş b.
Sırayla adil olmak throughput bakımından adil olmak anlamına gelmiyor, çünkü her sırada geçen paketin taşıdığı bit sayısı eşit olmayabiliyor. İnternetin network layer servis modeli de hâlâ best effort. Datagramın hedefe ulaşacağına, sırasına, zamanlamasına ve flow’a ayrılacak bant genişliğine dair söz verilmiyor.
Garanti veren alternatifler tanımlandı ama varsayılan olmadı. Intserv garantili bant genişliği, kayıpsızlık ve sıra vaat ediyordu; Diffserv aynı şeyleri mümkün düzeyinde bıraktı. Hücresel tarafta ise aynı fikir bir sınıf tablosuna dönüşmüş durumda. 3GPP’nin hizmet kalitesi sınıf göstergesi ses için 100 ms, gerçek zamanlı oyun için 50 ms, arabelleğe alınan video ile web gezinme için 300 ms azami gecikme hedefi tanımlıyor. 5G bu tabloya endüstriyel denetim ve araç haberleşmesi için 5 ms’ye kadar inen sınıflar ekledi. Ses sınıfının telefon görüşmesinde nasıl kullanıldığını 74. bölümdeki VoLTE’de göreceksin.
Adalet hedefi de basit yazılıyor: aynı darboğazı K oturum paylaşıyorsa her biri ortalama R/K almalı. Ama kimse dayatmıyor. Paralel bağlantı açan uygulama payını büyütüyor; hâlihazırda dokuz bağlantı varken bir bağlantı isteyen onda bir alıyor, on bir bağlantı isteyen yarıyı alıyor. Sabit hızda gönderip kaybı kabullenen bir UDP uygulamasını denetleyen merci de yok. Bir sağlayıcının kendi kaynağını nasıl paylaştırdığı sorusunun mekanizması bu ikisi: paket zamanlama ve tampon yönetimi.
DerinleşmeAğ tarafsızlığı teknik bir kural mı, hukuki bir kural mı?
Mekanizmanın kendisi tarafsız. Öncelikli zamanlayıcı bir sınıfa neden öncelik verildiğini sormuyor, ağırlıklı adil kuyruk da ağırlıkları kimin yazdığını umursamıyor. Tartışma bu yüzden mekanizmanın değil, mekanizmayı kimin hangi gerekçeyle ayarladığının tartışması.
ABD’de 2015 tarihli FCC kararı üç açık ve net çizgi kuralı koydu: yasal içeriği engelleme yok, yasal trafiği kasten yavaşlatma yok, ücretli önceliklendirme yok. Üçü de makul ağ yönetimi kaydıyla sınırlandı. Yani teknik gerekçeyle yapılan ayrım kuralın dışında bırakıldı; bu kaydın sınırının nerede olduğu tartışmanın asıl yeri hâline geldi.
Sonrası daha da öğretici. Aynı kural 2017’de geri alındı, 2024’te geri alma geri alındı. Ocak 2025’te ise bir federal temyiz mahkemesi 2024 kuralını iptal etti ve geniş bant erişimin telekomünikasyon değil bilgi hizmeti olduğuna hükmetti. Hukuki çerçeve on yılda dört kez değişti. Avrupa Birliği ise tarafsızlığı 2016’dan beri yürürlükte olan bir tüzükle yasaya bağladı.
Hukuki eksen tek bir tanımda düğümleniyor: bir sağlayıcı ne sayılıyor? Telekomünikasyon hizmeti sayılırsa ortak taşıyıcı yükümlülükleri doğuyor: makul ücret, ayrım gözetmeme ve düzenlemeye tabi olma. Bilgi hizmeti sayılırsa doğmuyor. Aynı kutu, aynı kuyruk, aynı zamanlayıcı, farklı hukuki sınıf.
Ülkelerin tutumu da birbirinden farklı, çünkü tartışmanın dayandığı gerekçeler teknik değil toplumsal: ifade özgürlüğünün korunması, yeniliğin ve rekabetin teşvik edilmesi.
Özet
- Kuyruk geçici bir taşkının deposu: varış hızı çıkış hattının kapasitesini aştığı sürece uzuyor, düştüğünde boşalıyor; taştığında hem gecikme hem kayıp üretiyor.
- Tampon iki yönlü bir bedel: azı kayıp, fazlası gecikme demek; fazlasının faturası, bufferbloat, en çok ev router’larında ödeniyor.
- Düşürmek tek seçenek değil: etkin kuyruk yönetimi tıkanıklığı işaretleyerek haber veriyor ve o haber hizmet türü baytındaki iki bite sığıyor.
- Zamanlayıcı bir politika taşıyor: FIFO hiç sınıflandırmıyor, öncelik bir sınıfı öne alıyor, ağırlıklı adil kuyruk ise kapasitenin bir oranını garanti ediyor.
- Hızı jeton kovası sınırlıyor: r uzun vadeli ortalamayı, b patlamayı belirliyor; tarifendeki hız çoğu zaman bir r değeri.
Çıkış hattının önündeki sırayı bir politikanın kurduğunu artık biliyorsun. Ama paketi o hatta yollayan şey hâlâ bir tablodaki tek satırdı. O satırı oraya kim yazdı?
41. bölüme devam et: Cihaz Yapılandırma