Tıkanıklık Kontrol Algoritmaları

Tıkanıklık Kontrol Algoritmaları
Bir subnette veya bir kısmında taşıma kapasiteden daha fazla sayıda
paket varsa tıkanıklık meydana gelir. Ağın kapasitesinden daha az paket
olduğunda az sayıdaki iletişim hatalı paket dışında yerine ulaştırılan ve
gönderilen paket sayısı hemen hemen aynıdır. Yük artmaya başladıkça
routerlar bu yükü kaldıramamaya ve paket kaybetmeye başlarlar. Kaybolan
paketler tekrar gönderileceği için yük gittikçe artar ve trafik çok arttığında ağ
çökebilir.
Tıkanıklığın başlıca sebepleri şunlardır;
Bir routera anlık olarak çok sayıda girişinden tek bir çıkışına gidecek
paketler gelmeye başladığında bir sıra oluşur. Eğer routerın hafızası bütün
paketleri almaya yeterli değilse paketler kaybolmaya başlar. Hafıza arttırılsa
bile bir noktadan sonra sıranın önüne gelmeye başlayan paketler çok uzun
zamandır bekledikleri için time-out vermeye başlarlar. Bu paketler tekrar
gönderilmeye başlanır ve sıra sonsuza doğru artar.
Routerın CPU'su gelen paketlerin düzenlenmesi (tampon bellek
işlemleri, tabloların düzenlenmesi vs.) gibi işleri yapmaya yetişemiyorsa
belirli bir yükten sonra router tıkanmaya başlar.
Benzer şekilde düşük kapasiteli iletişim hatları da tıkanmaya neden
olabilir.
Tıkanıklık kontrolü ve akış kontrolü arasında temel farklar
bulunmakta-dır. Tıkanıklık kontrolü subnette trafiğin kontrolüyle ilgilenir.
Dolayısıyla ağdaki bütün birimlerin ve routerların davranışları vs. gibi global
parametre-lerle ilgilenir. Öte yandan akış kontrolü iki birim arasındaki
noktadan-noktaya bağlantıyla ilgilenir, dolayısıyla yerel bir kontroldür.
Temel amacı hızlı göndericinin yavaş alıcıyı paketlere boğmasını
engellemektir.
Tıkanıklık Kontrolünün Genel Đlkeleri
Ağ problemleri iki temel kategoride toplanabilir; açık döngü ve
kapalı döngü sistemler.
Açık döngü sistemlerde sistem başlangıçta çok iyi ve hata
oluşmayacak şekilde tasarlanır. Trafiği düzenleme algoritmaları ağın o anki
durumundan/ yükünden habersiz olarak çalışır. Sistem çalışmaya başladıktan
sonra algorit-malar değiştirilmez.
Kapalı döngü sistemlerde ise bunun tam tersine trafik sürekli gözlenir
ve algoritmalar duruma göre yeni parametrelere göre çalışmaya devam
edebilir-ler. Temel bir kapalı döngü sistemde öncelikle tıkanıklığın ne zaman
ve ne-rede oluştuğu gözlenir. Daha sonra bu bilgi trafiği düzenleyen
birimlere ak-tarılır ve sistemin işleyişi problemi giderecek şekilde yeniden
düzenlenir.
Subnette tıkanıklığı anlamak için çeşitli parametreler kullanılır.
Bunlar tampon bellek yetersizliği nedeniyle kaybolan paket yüzdesi,
ortalama sıra uzunlukları, time-out olan ve yeniden gönderilen paket sayısı,
ortalama paket gecikme süresi, vs olabilir.
Kapalı döngüde bu parametreler gözlendikten sonra bu bilgi ilgili
yere iletilmelidir. Bu işlem ekstra paketler kullanılarak yapılabilir ancak bu
durum zaten tıkanık olan ağa yeni paketler verilmesi anlamına gelir.
Başka bir yöntem mevcut paketlerin içindeki bir bit veya alan içinde
bu bilginin taşınması olabilir.
Diğer bir yöntem routerlar tıkanıklık kontrolü için periyodik olarak
sisteme 'sonda' paketleri gönderirler. Bu şekilde tıkanıklık henüz oluşmaya
başladığında sezilebilir.
Tıkanıklığın meydana gelmesi subnette sistemin kaldırabileceğinden
fazla paket olması anlamına gelir. Bu iki şekilde çözülebilir; kaynaklar
arttırılabilir, paket sayısı azaltılabilir.
Örneğin ağda tıkanıklık sezildiğinde devreye yedek routerlar
sokularak fazla trafik bunlara aktarılabilir. Ancak elde yeterli kaynak
bulunmuyorsa yapılacak işlem paketlerin kaynağını durumdan haberdar edip
gönderdiği paket sayısını azaltmasını istemektir.
Tıkanıklık Engelleme Politikaları
Öncelikle açık döngü sistemleri inceleyelim.
Tıkanıklığı engellemek için öncelikle tıkanıklığın meydana geldiği
durumları bilmek gerekir. Her katmanda buna neden olacak çeşitli unsurlar
vardır. Bunlar aşağıdaki tabloda belirtilmektedir.
Veri bağlantı katmanından başlayalım. Paketleri çok çabuk time-out
veren tekrar gönderen bir kullanıcı özellikle 'n-geri git' algoritması kullanıyorsa ağa çok fazla yük bindiriyordur. Bunun yerine seçici tekrar algoritması
kullanılabilir. Alındı paketleri her gelen paket için ve ayrı gönderiliyorsa
yine ağı yükleyebilir. Halbuki bu alındılar veri paketlerinin üstüne bindirilirse bu ek trafik azaltılabilir. Ayrıca pencere boyutları küçültülerek paket akış
hızı kısıtlanabilir.
Ağ katmanında datagram veya sanal devre kullanılması tıkanıklığı
büyük ölçüde etkilemektedir.Çoğu tıkanıklık algoritması sanal devre
subnetlerde çalışmaktadır. Đyi bir routing algoritması trafik yükünü ağa eşit
miktarda dağıtırken, kötü bir algoritma ağın bir kısmının çok yüklenmesine
sebep olur.
Taşıma katmanında da veri bağlantı katmanına benzer sorunlar
bulunmakla birlikte time-out zamanının belirlenmesi çok daha zordur.
Bunun nedeni ağı baştan-sona katederken oluşacak gecikmenin iki router
arasındaki (bir PPP hattındaki) gecikmeden çok daha zor kestirilebilmesidir.
Sanal Devre Subnetlerde Tıkanıklık Kontrolü
Önceki yansıda değinilen problemler ve çözümleri temelde açık
döngü çözümlerdir. Tıkanıklığı daha oluşmadan uygun algoritma tasarımıyla
engellemeye yönelik yöntemlerdir. Bu bölümde ise sanal devre subnetlerde
oluşabilecek tıkanıklığın dinamik kontrolüne değinilecektir.
Var olan bir tıkanıklığın daha kötüleşmesini engellemek için kabul
kontrolü yöntemi kullanılabilir. Fikir basitce; eğer tıkanıklık oluşmaya
başladıysa durum düzelene kadar başka sanal devre kurulum isteklerini
reddettir. Dolayısıyla yeni taşıma katmanı bağlantı kurulumları gerçekleştirilemeyecektir. Telefon sistemlerin buna benzer bir algoritma kullanılır. Hatlar
dolu ise arama yapmak isteyen kullanıcılara çevir sesi verilmez.
Başka bir yaklaşımda ise yeni kurulacak sanal devreler problemli
bölgelerden geçirilmeden kurulur.
Takip eden yansıdaki örnekte A routerı , B ile bağlantı kurmak
istemektedir. Normalde yeni yolun tıkanıklık yaşayan routerlardan
geçirilmesi gerekirken, yeni yol başka bir rotadan açılabilir.
Diğer bir yöntem ise bağlantı ilk kurulurken subnet ile iletişim
yapacak taraflar bir servis kalitesi (tampon bellek veya tablo miktarı vs.)
üzerinde anlaşırlar ve iletişim süresince bu kaynaklar sadece o kullanıcılara
tahsis edilir. Bu şekilde tıkanıklık büyük ölçüde engellenir.
Datagram Subnetlerde Tıkanıklık Kontrolü
Bir router çıkışlarının kullanım miktarını kolaylıkla ölçebilir.
Eğer bu miktar belirli bir değerin üstüne çıkarsa router ‘uyarı’ durumuna
geçer ve örneğin aşağıdaki önlemlerden birisini almaya başlar.
Uyarı Biti
Router, kullanımının çok arttığını sezdiğinde üstünden geçen
paketlerin özel bir bitini yakarak yönlendirir. Alıcı paketi alıp biti
gördüğünde paketi gönderene geri göndereceği alındı paketindeki özel bir
alanda tıkanıklığı bildirir. Gönderici bu alındıyı aldıktan sonra iletişim hızını
başka tıkanıklık bildiren alındı gelmeyene kadar düşürür. Bu algoritmada
tıkanıklığın nerede olduğu belirlenemediği için bütün ağdaki tıkanıklık
giderilene kadar göndericiler hızlarını azaltırlar.
Boğma Paketi
Önceki yöntemde router tıkanıklığı göndericiye dolaylı yoldan
bildirir. Bunu doğrudan yapmak da mümkündür. Bir router tıkanmaya
başlayacağını sezdiği zaman paketleri gönderen bilgisayarlara bir boğma
paketi gönderir.
Kolay yöntemde bu paket sadece gönderen bilgisayarı etkiler. Trafik
paketin gönderilmesinden bir süre sonra azalır.
Diğer bir yöntemde ise paket yol üstündeki routerları da etkiler.
Trafik hemen azalır. Ancak paket ulaşana kadar bilgisayar aynı hızda paket
ileteceği için aradaki routlerların oluşacak birikmeyi kaldıracak büyüklükte
serbest tampon belleğe sahip olması gereklidir.
Yük Dökme
Önceki yöntemler tıkanıklığı gideremezse routerlar gelen paketleri
kabul etmeyebilirler. Böylece ağda paket kaybı başlar.
Burada hangi paketin kaybedileceği önemlidir. Örneğin bir
sıkıştırılmış video akışında genellikle periyodik olarak bütün resim çerçevesi
göderilir. Diğer zamanlarda ise sadece çerçeveler arasındaki fark bilgisi
gönderilir. Bu resim çerçevesini kaybetmek fark çerçevesini kaybetmekten
daha önemlidir.
Göndericiler paketlerini önemsiz, önemli, kesinlikle kaybedilmemeli
vs. gibi işaretleyebilirler. Bu durumda öncelik sırasına göre fazla paketler
düşürülebilir.
Ayrıca bir sanal devre bağlantısında taraflar anlaştıkları hızın üstüne
çıkıp routerların serbest kapasitesine göre iletim yapabilirler. Bu durumda bu
fazla kapasite paketleri önemsiz olarak işaretlenir ve gerektiğinde
düşürülebilirler. Bu şekilde routerların boş kaynakları daha verimli
kullanılabilir.
Jitter (Seğirme) Kontrolü
Ağ üzerinden özellikle ses ve görüntü iletimi sırasında paketlerin
genelde ne kadar geç geldikleri değil gelen paketler arasındaki süre
önemlidir. Birinci kavram ancak iki yönlü iletişimde (internet telefonu,
videoconferans) genel bir gecikmeye sebep olabilir ama tek yönlü iletişimde
kullanıcı tarafından hissedilmez. Öte yandan paketler arasındaki süre
oynamaları ses ve görüntü kalitesinde sürekli ve rahatsız edici bir kalite
değişimine sebep olur.
Bu durumu çözmek için router vaktinden önce gelen paketleri
bekletip, geç kalan paketleri diğerlerinin önüne koyarak bir an önce
iletilmesini sağlayabilir.
Video on demand gibi uygulamalarda ise ağdan gelen paketler
kullanıcıda online kullanılmak yerine belirli miktarda bir tampon bellekte
biriktirilip öyle oynatılabilir.
Servis Kalitesi
Ağ tarafından kullanıcılara sunulan hizmetlerin belirli bir kalitede
olması beklenebilir. Bu kalitenin en temel ölçütleri güvenilirlik, gecikme,
jitter ve bantgenişliğidir. Aşağıdaki tablo değişik uygulamaların ihtiyaç
duyduğu servis kalitelerini vermektedir.
Đyi bir Servis Kalitesi Sağlamak için Teknikler
Fazla Kaynak Sağlama
En basit yöntem budur. Trafiği kaldırmak için gerekli kaynakların
miktarından daha fazla kaynak sağlanırsa tüm kullanıcılara yeterli bir servis
kalitesi sunulabilir. Dezavantajı pahalı olmasıdır.
Tamponlama
Alıcı tarafında gelen paketler bir tampon bellekte toplanabilirler. Bu
yöntem batgenişliğini ve güvenilirliği etkilemez ancak gecikmeyi arttırabilir.
Fakat asıl yararı jitterı azaltma kapasitesine sahiptir. Özellikle video-ondemand gibi uygulamalarda ağdaki jitterı azaltmakta kullanılabilir.
Trafik Şekillendirme
Bir ağda kullanıcılar genellikle videokonferansın tersine sürekli
değişen bir patternde paketler üretirler. Bu değişim nedeniyle zaman zaman
ağda tıkanıklıklar meydana gelebilir. Eğer kullanıcı ve subnet iletişim
öncesinde kullanıcının ihtiyacı olan trafik şekli üzerinde anlaşabilirlerse ağın
tüm kullanıcılara sunduğu servis kalitesi iyileştirilebilir.
Örneğin subnet kullanıcıya paketlerini daha homojen aralıklarla
göndermesini söyleyebilir, veya kullanıcıların anlık trafik patternine göre
ağdaki routing işlemleri dinamik olarak yönetilebilir.
Sızdıran Kova Algoritması
Altındaki delikten su sızdıran bir kova düşünelim. Kovaya giren
suyun hızı ne olursa olsun, delikten akan suyun miktarı sabit kalacaktır. Eğer
giren su miktarı kovayı aşarsa su dışarı dökülecektir.
Paketleri ağa gönderen tarafta da aynı mantık yürütülebilir.
Bilgisayardaki çeşitli süreçler tarafından düzensiz olarak üretilen paketler bir
tampon bellekte toplanırlar. Bir saatin her tickinde ağa bir paket gönderilir.
Bu şekilde düzensiz gelen paketler ağa düzenli aralıklarla sunulurlar. Eğer
tampon bellek dolarsa yeni gelen paketler kaybolurlar.
Bu yöntem sabit uzunluktaki paketlerde çalışabilir. Eğer paket
boyutları değişken ise her saat tickinde bir paket yerine belirli sayıda byte
gönderilebilir. Örneğin bir tickte 1024 bytelık bir paket veya 256 bytelık 4
paket ağa gönderilebilir.
Sızdıran kova algoritmasına bir örnek sonraki yansıda verilmiştir. Bir
bilgisayar 25MBps (200Mbps) hızda paket üretebilmektedir. Ağ da aynı
hızda çalışabilmekle birlikte, routerlar bu hızı anlık olarak sağlayabilmekte,
tampon bellekleri dolmadan ise en çok 2MBps’de çalışabilmektedir.
Verinin 1 milyon-bitlik paketlerin (burst) saniyede bir 40ms’lik süre
boyunca üretildiğini varsayalım. Ortalama hızı 2MBps’e indirmek için bir
1MB kapasiteli delik kova kullanılıyor olsun.
Böyle bir sistemin çalışması sonraki yansıda (a) ve (b) şekillerinde
gösterilmektedir.
Jeton (Token, Andaç) Kovası Algoritması
Sızdıran kova algoritması kullanıcıların boş geçen zamanlarını ileride
kredi olarak kullanmasına izin vermez. Bu şekilde kullanıcıların çıkış hızları
üzerinde oldukça katı bir baskı uygular. Zaman zaman kullanıcılardan gelen
yüksek miktardaki burst’lerin daha çabuk işlenmesi (hatta kovayı
taşırmaması) için paket gönderme miktarının arttırılması daha esnek bir
çalışma sağlayabilir.
Jeton kovası algoritmasında kovaya ∆T sn’de bir, bir jeton bırakılır.
Eğer gönderilecek paket yoksa bu jetonlar kovada birikirler. Her paket
gönderilmeden önce kovadan bir jeton alır. Bu nedenle eğer kovada birikmiş
jeton varsa ve peşpeşe birkaç paket geliyorsa jeton miktarı kadar paket
kanala birlikte verilir. Sonraki yansıdaki şekilde kovada üç jeton varken
gelen beş paketten üçü ağa gönderilirken, kalan iki paket yeni jeton
üretilmesini bekler.
Ancak jeton sayısı kovanın alabileceği paket sayısından fazla olamaz.
Bu yöntem anlık olarak trafikte düzensizlik yaratabilir.
Bu algoritma küçük bir değişiklikle değişken boyutlardaki paketleri de
işlemeye uygun hale getirilebilir. Bu sefer her jeton başına n byte gönderilir.
Elbette bir paket ancak boyutuna yetecek miktarda jeton bulunduğunda
gönderilebilir.
Kaynak Ayırılması
Gönderilecek paketlerin ilk çıkış noktalarında trafik düzenlemesi
yapılması ağın yükünü büyük ölçüde rahatlatır. Ancak hala ağdaki
routerların ve hatların
- bantgenişliği
- tampon bellek boyutları
- CPU döngüleri
sistemin başarımını etkiler. Bu nedenle routerlardaki düzenleme bu
parametreler gözönüne alınarak yapılmalıdır. Örneğin 2Mbps kapasiteli bir
hattan üçüncü bir 1Mbps hızında iletim yapılmaya çalışılması tıkanıklığa
sebep verecektir.
Kabul Kontrolü
Şimdiye kadar anlatılan yöntemlerle routerlara gelen trafik hemen
hemen homojen hale sokulmuştur. Ancak hala routerlarda tıkanıklık olabilir.
Bu durumda en son yapılacak fakat sorunu çözecek şey gelen paketlerin
kabul edilmeyerek kaybolmalarına neden olmaktır. Bunun için hangi
paketlerin kaybedilebileceği ile ilgili çeşitli kriterler bulunabilir. Bazı
kullanıcılar gerek duydukları akış parametrelerini ağ ile paylaşırlar ve belirli
bir değer üzerinde ağ ile anlaşmaya varırlar. Bu parametrelere akış
tarifnamesi ismi verilir. Bir örnek sonraki yansıda verilmektedir.
Đlk iki parametre ağ göndericinin trafik şekli ile ilgili bilgi verir.
Peak data rate ağın kaldırabileceği anlık en yüksek veri hızını verir,
kullanıcı bunu kesinlikle aşmamalıdır.
Min. max paket boyutları ise ağ ve taşıma katmanı başlıkları da dahil
olmak üzere paket boyutlarını belirler (TCP ve IP gibi). Min. belirlemenin
amacı routerların ne kadar küçük olursa olsun her paket için bir miktar zaman
harcamasıdır. Örneğin bir router saniyede 1KB’lık 10,000 paket
işleyebilirken, 50 byte’lık 100,000 paketi ikincisinin daha az trafik
yaratmasına rağmen işleyemeyebilir. Max. boyut ise ağın birimleri üzerindeki
sınırlamalar nedeniyle getirilir (bellek boyutlar vs.).
Orantılı Routing
Çoğu routing algoritması en uygun rotayı bulup bütün trafiği oradan
akıtmak taraftarıdır. Fakat servis kalitesini arttırmak amacıyla bu trafik
birden fazla rotaya orantılı olarak dağıtılabilir. Ancak bunun
gerçekleştirilmesi için routerların bütün ağın topolojisini ve parameterlerini
biliyor olması gereklidir. Dolayısıyla böyle bir uygulama ancak yerel olarak
uygulanabilir.
Paket Çizelgeleme
Eğer bir router birden fazla akışı kontrol ediyorsa bir akışın bütün
kaynakları ele geçirip diğerlerini engelleme riski ortaya çıkar. Bir routerın
girişlerine gelen paketleri sırasıyla alıp çıkış tampon belleğine yerleştirmesi
agresif bir kullanıcının sürekli gönderdiği paketler yanında diğer daha sakin
kullanıcıların engellenmesi anlamına gelir.
Bunun bir çözümü adil sıralama algoritmasıdır. Routerdaki tampon
çıkışlarda değil girişlerdedir. Her giriş noktasından gelen paketler öncelikle
bu tampon belleklerde bekletilirler. Router sırasıyla her girişi tarayarak bir
paketi alır ve çıkışına yönlendirir. Buradaki sorun eğer paket boyutları
değişken ise uzun paket kullanan bir kullanıcının, kaynakları kısa paket
kullanan kullanıcıdan daha fazla tüketmesidir.
Bunun çözümü giriş tamponlarından okumanın paket paket değil
byte-byte yapılmasıdır. Aşağıda buna bir örnek gösterilmektedir.
Router her seferinde girişlerden bir byte okur ve çıkışa yönlendirir. Bu
örnekte C’nin routerdan iletilmesi için sekiz saat tick’ine, A için ise 20 saat
tick’ine ihtiyaç duyulmaktadır.
Bu algoritmalar bütün kullanıcılara aynı önceliği tanır. Ancak bazı
kullanıcıların daha yüksek önceliğe sahip olması gerekebilir. Bu durumda
örneğin bir saat tick’inde bir kullanıcıdan 2 byte birinden ise 1 byte
alınabilir. Bu algoritmaya değişiklik yapılmış adil sıralama ismi verilir.