9 Ocak 2010 Cumartesi

Broadcast (Toplu Yayın) Yönlendirme Algoritmaları

İyi akşamlar arkadaşlar. Bugün yine bilgisayar ağlarından bir konu hakkında yazacağım. Broadcasting.. Öncelikle bu konuyu seçme sebebim, taa Almanya'dan mesaj atan Filiz arkadaşımın istediği konulardan birisi olması. Onun dışında, 2-3 kayıt girme fikrim sekteye uğradı çünkü Beşiktaş'ın maçı vardı. :D

Üstten bir tanımla belirtmek gerekirse: broadcast, bir kaynak düğümün, ağdaki diğer tüm düğümlere paketi iletmesidir. Ama bunun birçok yolu var. Sırayla bunları ele alalım.


Yukarıdaki şekile dikkat buyurun. Paintte çizdim, her tarafından beceriksizlik fışkırıyor. :D Gönderen düğüm, paketin kopyalarını yaratıyor. 3 tane düğüme gönderebilir, şekildeki ağa bakarsak. Dolayısıyla da paketinin 3 tane kopyasını oluşturur. Her kopyanın hedef adresi farklı olur. Böylece sanki unicast yönlendirme(noktadan noktaya) yapıyormuş gibi, 3 paketi 3 ayrı hedefe iletir. Ancak her hedef adres için bir kopya üretmek, ağa oldukça fazla yük bindirir. Üstelik performansı da çok kötü olur. Niye diyeceksiniz..
Şimdi 1.düğümden 2-3-4'e paket gidecek. 3'e giden paket de, 4'e giden paket de 2 numaralı düğümden geçecek. Daha doğrusu 1-2 arasındaki yolu kullanacak. Bu da biraz saçma ve gereksiz kaçacak. Bunun yerine, tüm kopya paketin geçtiği ortak yol bulunur. 1-2 arasındaki yol, mecburi yol(az önce açıkladım, 3 hedefe de gitmek için buradan geçeriz). O zaman şöyle yapalım: 1 numaralı düğüm, yani kaynak, bir adet kopya üretsin. O kopya da 2 numaralı düğüme gitsin. Bu arada az önce penaltılarda kaybettik. 'Hamburger'ciler de ne şanslıymış yahu. Top resmen ısrarla içeri girdi çoğu topta. Neyse konuya dönelim. :) 2 numaralı düğüme gelen kopyadan, 2 tane daha oluşturalım. Onları da 3 ve 4 numaralı düğüme gönderelim. Böylece ağın da performansı artmış olur. Aynı yolu tekrar tekrar kullanmamış olduk.

Bir diğer yöntem de Kontrolsüz Taşma yöntemi. Bunun mantığı çok basit: kaynak düğüm, paketin kopyalarını komşularına gönderir. Sonra o komşu da paket alır, kopyalar ve o da kendi komşularına gönderir(paketi temin ettiği komşusu hariç). Ancak hal böyle olunca ortalık paketten geçilmez. Sürekli paket alır düğümler. Bu da network'ü çökertir. Bir diğer olumsuzluk da şu: yukarıdaki şekilde 2.düğüm, 1.düğümden paket almış olsun. Aldığı paketi 3. düğüme verir haliyle(tabi 4'e de). 3 de gelen paketi 4'e verir. 4 de onu 2. düğüme geri verir. Keza 2 numaralı düğüm paketi tekrar 3'e verir vs vs. Bu böyle sürer gider. :) Yani sonsuz döngüye girer. Akıbeti malum. :)

Kontrolsüz taşmanın, adı üstünde, kontrol altına laınmış versiyonu da var: Kontrollü Taşma. Bu yöntem, network'ün çökmemesi için, ortada paket fazlalığı oluşmasın diye önlem almış. Öyle alengirli birşey değil ama işe yarıyor. Pakete hedef adresle birlikte, bir numara koyuyor. Ve her düğüm kendi muhasebesini yapıyor. Atıyorum: 2 numaralı düğüm, 1'den paket alınca kendi listesine bakıyor. Daha önce bu paketi ben almış mıyım diyor. Eğer paketi daha öncede bir şekilde almışsa, paketi almıyor. Eğer listesinde yoksa paketi alıyor. Bu kadar.

Bu arada Candan Erçetin'in son albümünü çıktığı günden beri dinliyorum ve gerçekten muhteşem yine. Hayır alışığız buna ama, böyle değerli sanatçılar varken, yılbaşı programlarına Allah'ın to??şlarını çıkarıyorlar. Çakma megastarlar boy boy ekranda. Güzel bir deyim var ama biraz argoya giriyor, neyse. :D

Gelelim bir diğer Kontrollü yönteme: Ters Yolda İletme. Ne berbat çevirdim yalnız. :D Reverse Path Forwarding, orijinali. :)


Şekli nette buldum, renkleri falan önemsemeyin. Şimdi her iki düğüm arası mesafeyi, en kısa yol gibi düşünün. Yani A'dan B'ye gitmek için en az maliyet: direkt gitmektir. Bunu tüm düğümler için düşünün. Fantazi yollar deneyip de ana konudan uzaklaşmayalım değil mi. :)

A düğümü, kaynak düğüm olsun. A paketi broadcast yaparak B ve C'ye gönderir. B paketi alır. Gelen paketi C ve D'ye de gönderir. Burada duralım, şimdi olaya C'nin tarafından bakalım.
C paketi A'dan alır. Gelen paketi B,E ve F'ye de gönderir. B düğümü paketi C'ye de göndermişti. B'den gelen paketi almaz. Kilit noktası da bu arkadaşlar. Niye almaz? Gelen paket A'nın paketi. Bunu biliyoruz. Geldiği yer neresi:C. Bunu da biliyoruz. O zaman şu soruyu soralım: A'nın paketi, yani dolayısıyla A düğümü, C'ye en kısa hangi yoldan geliyor? Ve B düğümü, bu en kısa yolun üzerinde mi?
En kısa yolun direkt düğümler arasındaki bağlantılar olduğunu bu yüzden belirttim az önce. A'dan paket C'ye direkt geldiğinde en az masraflı oluyor. O halde bu güzergahta B yok. En az masraflı yolun güzergahında olmayan düğümden paket kabul edilmez. Mantık bu. Eğer C'nin A'ya en az masraflı gidiş güzergahı B üzerinde olsaydı(C-B-A), o zaman B'den gelen paketi alacaktı. Ama bu sefer de A'dan demin aldığını söylediğim paketi alamazdı. Biraz karmaşık mı oldu ne. :) Yani her halükarda 1 paket alınmış olur. Dikkatlice okursanız burayı, çözersiniz. Çözemezseniz posta falan atın veya yorumda yazın. Başka örnekte açıklarım.

Bir diğer broadcast şekline geçelim: Yayılan Ağaç Toplu Yayını. Neden bunları bizimkiler bulmamış ki. :@ Türkçe'ye çevirmekle uğraşmaz, ismi biz yapıştırırdık. Gerçi bu şartlarda ne beklenir ki. Korn da başladı, ben konudan kopmak üzereyim. Yazıyı hızlandırmam lazım. :) Bu son iki yöntemde dikkat ettiyseniz network daha verimli kullanılıyor, ama iletilmese de paket alımı falan son sürat devam ediyor. Bu ağaçlı modelde bu da engelleniyor.
Beceriksizim abi, çizemiyorum işte. Zaten resim dersleri de eziyet gibiydi okuldayken. Yukarıdaki şaheseri ben çizdim. :) Şimdi gel de konuyu anlat. :) Arkadaşlar, 1'den 2'ye bir ok, 1'den 3'e bir ok, 2'den 4 ve 5'e birer ok, 3'den 6'ya ve 6'dan 7'ye birer ok düşünün. Çizemeyeceğimi görünce ellemedim bile. :D Bu okların önemi de büyük bu arada. :) Mesela 2 ve 3 arasına ok(-->) demedim. Bunun anlamı:aralarında bağ bulunsa da, 2 ve 3 komşu değil. Bir paket gönderimi olduğunda, 2'den 3'e veya 3'den 2'ye birşey gitmez. Bu ağaçtaki komşuluklara göre, paketi alan, komşularına kopyalarını gönderir. Mantık yine aynı ama yapı farklı işte. O yüzden yapıyı ele alalım. Mantığı zaten biliyorsunuz artık. Ağaç nasıl oluşuyor? Ana soru bu.. Önümdeki okuldan kalma slaytıma göre gideceğim yine. Orada bu şekilde 5 numaralı düğümü merkez düğüm seçmiş. Yani ağacın oluşması için bir tane ana düğüm belirliyoruz. Bundan sonrakiler ağaca katılabilmek için 5'e mesaj atmalılar. 4 numaralı düğüm 5'e mesajı çakar, ve ağaca beni de al der. Ağaç artık 4-5 şeklindedir. Ardından 3 numara 5'e mesaj atar. Ama mesajı atması için 6'dan da geçmek zorunda(başka bir yol da olurdu. Zorunda falan değil, varsaydım sadece olayı anlatabilmek için). Bir anda ne oluyoruz diyeceksiniz ama ağaç şu hale geldi: 4-5-6-3. Katılmak isteyen 3 numaraydı. Ancak 3'ün katılabilmesi için 6'nın da olaya dahil olması lazımdı. Zorla ağaca soktuk yani. :)
Diyelim ki 1 numaralı düğüm ağaca katılacak. 5'e mesaj atacak ya normalde.. 5'e ulaşmak için de 3'ün üzerinden geçeceğini varsayın. O zaman 1 numaranın mesajı 3 numaraya gider gitmez, o da artık ailenin bir parçasıdır. Çünkü 3-6-5 hattı zaten ağacın sınırlarında. 5'e kadar gitmeye gerek yok yani. Kafa karışmasın sakın, demin 3 numara 6'ya ulaştığında ağaca katılamamıştı. Çünkü 6 numaranın kendisi de ağaçtan değildi. ;)

Broadcast'in bir de adresleme olayı var. Onu da diğer yazıma saklayayım. Konu biraz daha farklı. Birazdan görüşürüz tekrar..

1 yorum:

Adsız dedi ki...

çok gevşek ve gereksiz bir anlatım...