30 Kasım 2009 Pazartesi

Leaky Bucket vs. Token Bucket

Bir kez daha merhaba herkese. Az önce Avrupa Yakası'nın bomba bir bölümünün gösterileceğini öğrendim ve o gazla bir yazı daha yazayım dedim. :)

Leaky Bucket Algorithm(Sızdıran Kova Algoritması) ile başlayalım.
Leaky Bucket Algoritması
Resimde de gördüğünüz üzere ortada bir kova olduğunu düşünün. Su, kovanın altındaki delikten sabit bir hızla akmakta. Buradaki önemli nokta, ne kadar su olursa olsun, veya network diliyle konuşalım, ne kadar paket gelirse gelsin, sabit hızda paket aşağı geçer.
Sağdaki resme bakarsanız, istasayondan(host computer) gelen paketler son derece düzensiz bir şekilde akmakta. Ancak kovaya gelen paketler, yukarıda da belirttiğim üzere, sabit hızla akacağından, kovanın altındaki paketlerin akışının son derece düzenli olduğunu görmektesiniz.
Kova doluyken ne olacak peki? Evet, orada patlıyor bu algoritma. :) Kova dolu olduğunda paket gelirse, o gelen paketler eşekler cennetini boylar. :) Kaybolur o veriler artık.
Host computer, her bir saat vuruşunda [veya Ahmet Sertbaş hocamızın deyimiyle, her clock cycle'da :) ], ağa 1 paket gönderebilir. Ağda paketler kuyruk mantığındadır. Ancak paketin boyu büyükse örneğin, her saat vuruşunda belli miktarda veri gönderilir, komple paket gönderilemez.

Token Bucket Algorithm(Jeton[Halka] Tutan Kova Algoritması) ise daha farklı mantıktadır. Bunda hiç veri kaybı olmadan, akış miktarının arttırılması suretiyle işleyiş sağlanıyor. Resme bakın siz önce en iyisi. :)
Token Bucket Algoritması
Token nedir peki? Bunu anladığınızda olayın büyük kısmı bitiyor. :) Token'ı, kovanın içinde açılan bir alan gibi düşünün arkadaşlar. 1 token varsa, o kova 1 paketi alabilir demektir. Yani kova, token sayısı kadar paketi bünyesinde barındırabiliyor.
Her bir saat vuruşunda kovaya bir token ekleniyor. Yani bu sayede bir paket daha alabilecek kapasiteye geliyor. Resme bakın tekrar(sol tarafa). 4 paket geliyor kovaya. 3 token'ı var kovanın. Haliyle 1'ini alamayacak. Sağ tarafa dikkat buyurun şimdi de, 3 paket kovadan çıkmış ancak diğer paket hala kuyrukta bekliyor. Bu arada kova paketi atarken, token da yok ediliyor. Kullanılan token'ı yok ediyor yani. Bunda hız sabit falan olmadığından, host, birçok paketi aynı anda gönderebilir.
Token sıfır olursa ne olacak peki? Haliyle paket alamaz. Token'ı azalınca, kova host'a haber salar. Böylece gönderimi durdurmasını sağlar. Eğer bunu host'a değil de, router'a bildirseydi ne olurdu? Haber vermesinden evvel yola çıkan paketler kaybolurdu, pek tabidir ki.

Bu konu da burada bitti. Bugün yazmadığım günlerin acısını çıkarıyorum.
Bu arada Los Galacticos'a ne olduu? :D Top oynamadan 2. sıraya kadar çıktık. Haftaya da lideriz, yazın bir yere. :D Fena gaza geldik. :)
Görüşürüz..

4 yorum:

Mesut dedi ki...

Açıklayıcı anlatım için teşekkür ederim.

Gürkan Alkan dedi ki...

Rica ederim.

Unknown dedi ki...

Sayılı olarak bulunabilecek Türkçe kaynaklardan açık ara en iyisi

cansu dedi ki...

merhabalar gürkan bey ben yönetim bilişim sistemlerinde okuyorum ve şu anda token bucket algoritması ile ilgili bir makale yazmaktayım rica etsem bana biraz daha yardımcı olabilir misiniz