Trafik Sıkışıklığından Kaçınma ( Congestion Avoidance )

Nizam-ı Alem

Malato psichico
Altın Üye
Katılım
15 May 2013
Konular
972
Mesajlar
6,656
Online süresi
2ay 11g
Reaksiyon Skoru
5,350
Altın Konu
314
Başarım Puanı
319
TM Yaşı
12 Yıl 11 Ay 13 Gün
MmoLira
22,230
DevLira
15

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

Tıkanıklık Önleme, TCP bağlantılarında kullanılan belirli paketleri proaktif olarak atarak ağ tıkanıklığını en aza indirmeyi amaçlayan (adından da anlaşılacağı gibi) bir QoS tekniğidir. İşlevselliğini anlamak için öncelikle TCP'nin pencerelemeyi nasıl ele aldığını bilmek ve ardından tıkanıklık önleme mekanizmalarının bu TCP sürecinden nasıl yararlandığını incelemek önemlidir.

TCP Pencereleme

TCP pencereleme, protokolün gönderici ve alıcı arasındaki veri akışını yönetmek için kullandığı bir mekanizmadır. Göndericinin alıcıdan bir onay beklemeden önce ne kadar veri gönderebileceğini kontrol eder. Bu işlem, göndericinin alıcıyı veya ağı aynı anda çok fazla veriyle boğmamasını sağlar.

Gönderici, verileri TCP segmentleri olarak iletirken, onay bekler. Her onay, alıcının verileri başarıyla aldığını ve daha fazlasına hazır olduğunu gösterir. Aşağıdaki diyagramı kullanarak süreci basitleştirilmiş bir şekilde açıklayalım.



Başlangıçta, gönderici alıcıya kadar olan ağ bant genişliğini veya alıcının kapasitesini bilmez. Bu nedenle gönderici önce çok az miktarda veri gönderir—genellikle bir TCP segmenti (adım 1). Bu işleme TCP Yavaş Başlangıç denir.

Gönderici her veri gönderdiğinde ve bir onay aldığında, segment sayısını ikiye katlayarak daha fazla veri göndermeye çalışır (adım 2 ve 3). Bu işleme Yükselme denir.

Sonunda, bu veri iletim süreci, göndericinin ağın kaldırabileceğinden veya alıcının işleyebileceğinden daha fazla veri gönderdiği noktaya ulaşır. Her iki durumda da, gönderici aşağıdaki şemada gösterildiği gibi TCP segmentlerinin kaybolduğunu tespit eder.



TCP, bir segmentin kaybolduğunu tespit ettiğinde, gönderici gönderdiği veri miktarını yarıya indirir. Birden fazla segment kaybolmuşsa, gönderici gönderdiği veri miktarını birçok kez yarıya indirir. Ardından, gönderici başarılı onaylar aldığında gönderilen segment sayısını ikiye katlayarak tekrar artırmaya başlar.

Unutmayın ki bu, sürecin basitleştirilmiş bir açıklamasıdır. Düşük seviyede çok daha karmaşıktır ve ek parametreler içerir. Ayrıca, TCP protokolünün birden fazla farklı uygulaması vardır. Bununla birlikte, hatırlanması gereken en önemli nokta, bir gönderici ve alıcı arasındaki TCP veri iletiminin düz bir çizgi olmadığıdır. Aşağıdaki diyagramda gösterildiği gibi, mevcut tüm bant genişliğini ve alıcının kapasitesini kullanmaya çalışan dinamik bir süreçtir.



TCP pencereleme sürecini yüksek seviyede anlamak özellikle önemlidir çünkü QoS tıkanıklık önleme bu TCP sürecinden yararlanır.

Kuyruk Düşürmeleri

Tıkanıklık önleme tekniklerine geçmeden önce bağlam olarak ele almamız gereken bir şey daha var.

Kuyruk düşürmeleri, bir kuyruk daha fazla paketi barındıramadığı için paketlerin atılması durumunda meydana gelir. Bu, kuyruk maksimum kapasitesine ulaştığında olur. Bir kuyruğun paketleri düşürdüğü farklı senaryoları ele alalım.

Son Düşürmeler

Paketler bir kuyruğun sonuna gelir. Kuyrukta yeni paketler için yer varsa, paketler kuyruğa girer ve iletim için planlanana kadar orada kalır. Ancak, kuyruk dolarsa, yeni paketler eklenemez ve düşürülür. Buna "son düşürme" denir çünkü kuyruğun "sonunda" gelen paketler düşürülenlerdir.



Yukarıdaki diyagram kuyruk sonu düşme sürecini göstermektedir. Bireysel bir kuyruk içinde, kuyruklama mekanizmasının her zaman FIFO (İlk Giren İlk Çıkar) olduğunu fark edin. Dersleri sırayla takip etmiyorsanız ve FIFO'nun ne olduğunu bilmiyorsanız, Kuyruklama ve Planlama hakkındaki önceki dersimize göz atın.

Baş Düşürme

Bir paket bir kuyruğa girdiğinde otomatik olarak iletileceği anlamına gelmez. Bir kuyruk ayrıca paketleri başından da düşürebilir. Kuyruk bir süre planlama slotu almazsa, paketler eskimeye başlar ve aşağıdaki diyagramda gösterildiği gibi kuyruğun başından düşürülür.

Bu durum, kullanılan zamanlama mekanizmasına bağlı olarak, tıkanıklık zamanlarında düşük öncelikli bir kuyrukta meydana gelebilir. Bununla birlikte, bu bırakma işlemi, LLQ ve CBWFQ gibi modern zamanlama tekniklerinde genellikle gerçekleşmez.

Aşırı tıkanıklık durumlarında, trafik tıkanıklığını ve diğer kaynak aşırı kullanım sorunlarını önlemek için kuyruk tamamen boşaltılabilir.



Ancak, kuyruk düşmeleri, arayüzün tıkanıklık sırasında karşılaştığı en yaygın kuyruk düşmeleridir.

Neden Tıkanıklık Önleme'ye ihtiyacımız var?

TCP'nin yüksek seviyede nasıl çalıştığını ve bir kuyruğun tıkanıklık zamanlarında trafiği nasıl yönettiğini anlamak, QoS tıkanıklık önleme tekniklerini anlamanın ön koşuludur.

Aşağıdaki diyagram, kuyrukların kuyruk düşme davranışının grafiksel bir gösterimini göstermektedir. Dikey eksen, bir paketin düşme olasılığını temsil eder. Yatay eksen, gelen paketler bağlamında kuyruk doluluk seviyesini gösterir.



Açıkça görüldüğü gibi, kuyruk tamamen dolana kadar bir paketin düşme olasılığı sıfır yüzdedir. Kuyruk dolduktan sonra, düşme olasılığı %100 olur; yani yeni gelen paketlerin düşme olasılığı %100'dür.

Bu davranış oldukça basittir. Ağ açısından bu davranışın istenmeyen iki senaryosu vardır:

Birden fazla TCP bağlantısı aynı anda paket kaybı yaşadığında, TCP pencere boyutları aynı anda yarıya iner. Ardından tekrar artmaya başlarlar. Daha geniş bir perspektiften bakıldığında, bu durum ağ yolunun büyük ölçüde yetersiz kullanımına ve ardından aşırı kullanımına yol açar. Bu süreç, TCP bağlantıları aktif hale gelene kadar genellikle birkaç kez tekrarlanır.

İkinci sorun ise, bir kuyruğun genellikle birden fazla farklı trafik türünü tutmasıdır. Kuyruk, en sondaki trafiği düşürdüğünde, paketler arasında ayrım yapmaz. Sadece yeni gelenleri düşürür. Bu durum, istenmeyen bir durum olan iş açısından kritik uygulamaları etkileyebilir.
Bu nedenle, bir kuyruğun tamamen dolmasını ve paketlerin düşmeye başlamasını önlemek için WRED adı verilen bir hizmet kalitesi (QoS) aracı tanıtılmıştır.

Ağırlıklı Rastgele Erken Algılama (WRED) nedir?
Ağırlıklı Rastgele Erken Algılama veya WRED, TCP pencereleme mekanizmasından yararlanarak tıkanıklığı ve kuyruk düşmelerini önleyen bir yöntemdir. Kuyruk dolmadan ve kuyruk düşmeleri yaşanmadan önce paketleri seçici olarak düşürerek çalışır. Aşağıdaki diyagram, WRED'in çalışma mantığını grafiksel olarak göstermektedir. Yatay eksen, kuyruk doluluk seviyesi bağlamında gelen paketlerin akışını temsil eder. Dikey eksen, bir paketin düşme olasılığını temsil eder.



WRED, zaman içinde kuyruk doluluk seviyesini izler. Kuyruk boş olduğunda veya minimum eşik değerinin altında olduğunda, gelen paketlerin düşme olasılığı %0'dır. Ancak, kuyruk dolmaya başladığında, paketlerin düşme olasılığı artar. Buradaki kilit nokta, kuyruğun tamamen dolmadan önce paketleri düşürmeye başlayacak olmasıdır.

WRED'in birincil amacı, TCP oturumlarının yavaşlamasını tetiklemektir. TCP'nin genel olarak nasıl çalıştığını hatırlayalım. Protokol paket kaybını algıladığında, TCP penceresi yarıya iner ve tekrar artmaya başlar. Bu nedenle, WRED bazı paketleri düşürdüğünde, TCP trafik hızı düşer ve kuyruğun dolmasını ve kuyruk düşmelerinin yaşanmasını önler.

Ayrıca, "Ağırlıklı" kelimesi, WRED'in farklı trafik akışları arasında ayrım yapabileceği ve farklı trafik türlerine farklı düşme olasılığı ağırlıkları atayabileceği anlamına gelir. Örneğin, kuyrukta hem işle ilgili hem de işle ilgisiz trafik olabilir. Mantıksal olarak, WRED'in düşük öncelikli paketleri, iş açısından önemsiz paketlerden daha agresif bir şekilde düşürmesini istersiniz. WRED, ancak kuyruk dolmaya başladığında iş açısından önemli paketleri düşürmeye başlar.

Unutmayın ki, TCP paketlerini düşürmek mutlaka kötü bir şey değildir ve protokolün yeniden iletim mekanizması olduğu için uygulama düzeyinde paket kaybına neden olmaz.

Şimdi, Ağırlıklı Rastgele Erken Algılama (WRED)'nin pratik bir uygulamasını görelim.​
 
Eline sağlık
 
Eline sağlık
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)