Tcp Tıkanıklık Kontrolü ve Slow Start - Congestion Avoidance Safhaları
 

Tcp Tikaniklik Kontrolü ve Slow Start - Congestion Avoidance Algorimatalari 
MSS(Maximum Segment Size) ve RTT (Round Trip Time)Kavrami

Tikaniklik kontrolü haberlesen dügümler için degil , iletim ortami için yapilmaktadir. Ve bu kontrolü gönderici taraf yapmaktadir. Gönderici taraf agi (iletim ortamini) ne kadar yükleyebilirim kontrolü , için tikaniklik kontrolü yapmaktadir .

TCP her bir baglanti için bir yeniden iletim zamanlayicisi kullanir .Bu deger round-trip time(RTT)  ölçümlerine dayalidir.

-Her bir TCP baglantisi bir segmentin iletimi ile ilgili segmente karsilik alinan ACK arasindaki zaman farkini ölçer .Ve burasi çok önemli herhangi bir zaman diliminde yalnizca bir ölçüm vardir.

Sik kullanilan bir paket analiz programi olan Wireshark programi her gönderilen ve kabulu gelen segment için RTT degerini ölçer bu yüzden Wireshark ile analiz ederken bu durumu karsilasirsaniz sasirmayin.Fakat isletim sistemimiz bir RTT ölçümü bitmeden yeni bir RTT ölçümü yapmaz. .Bu nedenle herhangi bir zamanda yalnizca bir ölçüm vardir. Bunu asagidaki sekilde daya iyi anlayabiliriz ;

 

Peki round-trip-time ölçümünün tikanik kontrolü ile iliskisi nedir ?
Tikaniklik kontrolünde 2 algoritma beraber kullanilmaktadir. Bir modda bir algoritma diger moda diger algoritma kullanilmaktadir.

Ilk modda Slow Start algoritmasi , ikinci modda ise Congestin Avoidance algoritmasi kullanilmaktadir.

Bir istemci bir sunucu ile baglanti kurup veri alisverisi Tcp ile baslarken , baglanti kurulumunda istemcinin SYN bayraginin set edilip gönderiligi ve sunucunun göndermis oldugu SYN + ACK bayraginin set edilip gönderildigi segmentler incelendiginde Tcp baslik boyutlarinin 20 byte'dan büyük oldugunu görürüz .

Asagidaki sekildeki gibi genellikle Options alanindan da 12 byte eklenerek 32 byte'lik basliklardir bu segmentler , Istemcinin ilk syn bayragi set edip gönderdigi tcp segmenti ile göndericinin syn + ack bayraginin set dip gönderdigi segmentleridir . Burada bir takim ekstra özellikler belirtilmektedir.



Yukaridaki sekilde Opions alaninda belirtilen kisimlardan su anda konumuzla ilgili olan ekstra belirtilen özellik MSS - Maximum Segment Size  kismidir. Burada istemci ve sunucu birbirlerine MSS boyutlarini bildirmektedirler.

Simdi bu MSS ile round-trip-time(RTT) ölçümüne ve slow start , congestion avoidance iliskisine deginelim .

Tcp'de congestion window (cwnd) diye bir deger vardir. Bu deger baslangiçta 1MSS'dir.Ve Slow Start , Congestion Avoidance 'daki durumlarina göre artmakta veya azalmaktadir.
Tcp tikaniklik kontrolünde ilk olarak slow start modda çalistigini söylemistik.

Simdi RTT , MSS ve Slow Start kavramini iliskilendirelim .

Slow Start  mod için ,

Sunucu bir segment gönderdi cwnd=1MSS 'dir. Segmentin ACK onayini aldiktan sonra cwnd=cwnd+1MSS  yani  cwnd=2MSS olur . Yani segment gönderir ve onayi gelir bu süreçte RTT ölçümü  baslayip bitmedigi bir süre ise cwnd  1MSS seklinde artis gösterir.

Daha sonra bir segment gönderdi onay geldi cwnd=3MSS olur .
Daha sonra bir segment gönderdi ACK onayi geldi ve ayni zamanda segmenti gönderdigi ve onayini aldigi zaman içerisinde 1 RTT ölçümü yapilmis ise cwnd=2*cwnd 6MSS olur .

 Yani sonuç olarak , eger bir RTT ölçümü bitmeden segment gönderirse cwnd=cwnd+1MSS seklinde artar , eger bir RTT ölçümü yapilmissa segmentin gönderilmesi ve onayi arasinda gönderici  cwnd=cwnd*2  ikiser katlari seklinde artirir cwnd'yi .

Bu anlattigimiz durum asagidaki sekilde çok güzel bir biçimde izah edilmistir.

Simdi sorulmasi gereken soru Bu durum hep böylemi devam edecektir ?
Hayir .  Bu durum  cwnd<ssthresh olana kadar devam edecektir. cwnd>=ssthresh  oldugu andan itibaren cwnd herzaman  cwnd=cwnd+1MSS ;  seklinde artacaktir. Rtt ölçümü yapilsa dahi  yine de cwnd 1MSS'ser artacaktir her onay gelisinde.Iste bu durum yani  cwnd>=ssthresh  durumu 2.mod yani Congestion Avoidance durumudur .

Congestion Avoidance modunda bir segment için gönderim ve onay dahilinde RTT sayimi olsa dahi cwnd=cwnd+1MSS  seklinde artacaktir. Asagidaki sekilde çok güzel bir sekilde açiklamaktadir.



Peki ssthresh degeri baslangiçta nedir ? 
Ssthresh degeri baslangiçta yayinlanan pencere boyutuna (window size) esittir .

Congestion Avoidance algoritmasi isletilir bu modda.
Burada lineer bir artis ile gönderici aldigi her onay sonrasinda cwnd degerini cwnd=cwnd+1MSS seklinde artirmaktadir.

Peki sonuna kadar böyle artacak midir ? Hayir
Taki , Tcp bir paket kaybi sezene kadar. Tcp bir paket kaybi sezerse tikaniklik oldugunu varsayar .2 Durumda Tcp paket kaybi oldugunu anliyordu
1- Yeniden Iletim Zamanlayicisinin süreasimi
2 - Ayni degere sahip ACK paketlerinin alinmasi

Süre asimi meydana geldigi anda gönderici
- ssthresh degerini  ssthresh=ssthresh/2  yapar .
- cwnd degere tekrar  cwnd=1MSS yapilir .
Tekrar algoritma slow start modundan baslayarak isletilmeye devam eder . cwnd>=ssthresh oldugu anda Congestion Avoidance isletilir Daha sonra  tekrar tikaniklik oldugu anlisilir  ...  iste döngümüz bu sekilde devam etmektedir.

Slow Start , Congestion Avoidance ve Tikaniklik Durumunda yapilanlar asagidaki grafikte çok güzel bir biçimde özetlenmistir.

 

Author: Engin ATALAY
Date: 2.01.2013 20:32:00
View Count: 10180
 
 

COMMENTS
 
Resim Yüklenemedi
Hero
4 Şubat 2019 13:19
Çok güzel anlatmissiniz
 
 
 
 
 
Resim Yüklenemedi
ise 306 ikinci midterm
28 Nisan 2015 22:53
elit tayfa was here
 
 
 
 
 
Resim Yüklenemedi
bedirhan
24 Nisan 2014 02:19
Gerçekten çok yardimci oldu emeginize saglik
 
 
 
 
 
Resim Yüklenemedi
Yunus Onur Atasoy
26 Haziran 2013 00:09
Çok faydali bir yazi olmus gerçekten. Emeginize saglik
 
 
 
 
 
Resim Yüklenemedi
NoviceCoder
4 Haziran 2013 13:02
Allah razi olsun... Çok makbule geçti....
 
 
 
 
 
Resim Yüklenemedi
Maşaallah
3 Ocak 2013 00:13
Barakallah Subhanallah ne güzel
 
 
 
 
 
 
 
 
 
 
 
 
WRITE COMMENT
 
 
Your Name :
 
 
 
E-mail :
 
 
 
Your Message :
 
 
 
 
 
 
 
This project : ASP.NET MVC , RAZOR, Entity Framework , CSS , HTML , JQUERY(2.0.2) , AJAX the C# side-tier architecture was developed with logic.
 
Yukarı Çık