Multicast 101 – Multicast Nedir

Merhabalar,
Bu yazimda sizlere “Multicast nedir?” , neden kullanilir , genel olarak çalisma mantigi ve terminolojisinden bahsedecegim. Ister internette canli yayin üzerinden maç izliyor olun , ya da kurumsal bir networkün daha optimize çalismasi için bir planlama yapiyor olun. “Multicast” sizin için büyük önem arzeden bir kelime haline geliyor. Basitçe özetlemek gerekirse IP multicast bir göndericinin birden fazla aliciya tek bir kopya olmak üzere veri göndermesi olarak özetleyebiliriz.

Multicast

Tipki Broadcast’te oldugu gibi Multicast’e özel bazi adresler vardir ve bunlardan bazilari internet üzerinde kullanilabilir ve route edilebilir. 224.0.0.0/4 multicast uzayi IANA tarafindan ayrilmistir.
Bilindigi üzere broadcast paketleri lokal link üzerindeki bütün hostlar tarafindan alinir ve bu durumda isletim sistemi tarafindan bir paket inspection ve veri kopyalama islemleri yapmasina sebep oluyor. Aslinda konu ile alakasiz olan hostlarda bir sekilde trafikten etkilenmis oluyorlar. Multicastte ise hostlarimizin ethernet kartlari(NIC) multicast paketlerini biz aksini söylemedigimiz sürece yoksayar.
NIC kartlari varsayilanda genellikle multicast aktif olarak gelir ve 224.0.0.1 adresini dinler. Bu adress “Bu subnetteki bütün sistemleri dinle “ anlamina gelir. Bilgisayarinizda komut satirinda “netsh interface ip show joins” komutunu isleterek çiktida ilgili Ethernet kartinda hangi multicast IP lerinin dinlendigini görebilirsiniz. “Bu subnetteki bütün sistemler” broadcasti çagristiriyor diye düsünüyor olabilirsiniz. Zaten çogu kaynakta multicastin broadcastin içerisinde spesifik bir konsept oldugu belirtilir dolayisiyla böyle düsünmeniz çok da yanlis degil. 🙂

C:\Users\chappiE>netsh interface ip show joins

Interface 6: Yerel Ag Baglantisi* 

Scope       References  Last  Address
----------  ----------  ----  ---------------------------------
0                    0  Yes   224.0.0.1
0                    0  Yes   224.0.0.251
0                    0  Yes   224.0.0.252

Lokal link tarafi için multicast paketlerinin kimlere gidecegi konusunda seçici oldugu ve hostlarin network kartlarinin bazi gereksiz paketleri yoksayabildigini söyleyebiliriz. Lokal taraf için durum böyle Internet gibi derya deniz bir ortamda nasil yürüyor? , Internet üzerinden biri maç yayini yaptiginda bunun internet üzerindeki bütün routerlarda yönlendirilmesini ve bandwitdh kullanmasini istemeyiz. Ayni NIC üzerinde yaptigimiz; bazi multicast paketleri yoksayabildigimiz gibi, internet üzerindeki routerlarda da spesifik subnetleri “prune” etmek adina gelistirilmis olan bazi multicast routing mekanizmalari vardir. Kisacasi Networkünüzdeki herhangi bir ilgili multicast adresini görmek istemiyorsa, bu adresi networkünüzde bir o yana bir bu yana salinmasininda pek bi anlami yoktur.

Peki bu yayinlari görmek isteyen kisi ne yapiyor? Aslinda yayini izlemek için kullandigi uygulamanin yaptigi kullanicinin NIC kartina multicast grubuna katilmasi gerektigini söyler. NIC kartimiz bu noktada Internet Group Management Protocol(IGMP) kullanarak lokallerindeki multicast routerlarina spesifik bir multicast yayinina katilamak istedigini söyler. IGMP paketlerini inceledigimizde en az ICMP kadar basit bir paket yapisina sahip oldugunu söyleyebiliriz. IGMP de ICMP gibi IP katmaninda çalisir Header içerisinde versiyon, tip, checksum, ve group yani katinilmak istenen multicast adresini içermektedir. IGMP paketi router a ulastiginda lokaldeki en az bir kullanicinin belirli bir multicast yayini almak istedigini anlar ve istenilen dataya ulasabilmek için diger routerlar ile multicast routing üzerinden iletisim kurmasi gerekir.

Bu noktada devreye multicast routing mekanizmalari devreye girer. 1990larin basinda gelistirilmis olan M-Bone(Multicast Backbone) yapisi yalnizca multicast routing yapilan ayri bir backbone olusturulmustu ve kullanicilar bu backbone a IPIP (IP encapsulated in IP) tünelleri ile baglaniyorlardi ve DVMRP ve IGMP den anlayan “mrouted” uygulamasini kullaniyolardi. Routerlarin üzerindeki firmware degisiklikleri ve gelistirmeler sayesinde multicast routing yapabilmeleri multicast trafiginin internet üzerinde yönlendirilebilmesini saglamistir. Günümüzde karsimiza çogunlukla çikan multicast routing protokolleri DVMRP ve PIM dir.

DVMRP(Distance Vector Multicast Routing Protocol) IGMP sub-code 13 kullanir. Sub-code 13 ün diger adi ise dense floodingdir. Etkili ama fazla verimsiz olarak nitelendirebilecegimiz bu özellik, baslangiçta bütün multicast trafigini flood eder ve daha sonrasinda trafik ile ilgisi olmayan subnetler için pruning islemi yapar.

Baska bir multicast routing mekanizmasi olan PIM(Protocol-Independent Multicast) ise unicast routing mekanizmalarindan bagimsiz olarak çalisir. PIM çalistiran sistemler bir komsuluk kurarak adeta bir agaç yapisi olustururlar. Dense mod ve Sparse mod olmak üzere iki modu vardir. Dense modunda DVMRP ile çalisma mantigi açisindan büyük bir benzerlik göstermektedir. Tek farki IP protokol 103 kullanmasidir. PIM “join”, “prune” ve “graft” islemlerini yapar. “Join” ve “prune ” kavramlarindan yazimin önceki kisimlarinda halihazirda bahsetmistim bunlarin disindaki “graft” islemi prune isleminin tam tersi olarak düsünülebilir.

Dense mod kullanirken yapilan islemin DVMRP ile benzer oldugundan bahsetmistim. Ayni sekilde Dense mod multicast routing yapilirken gelen data flood edilir ve ardindan pruning islemi yapilir.

Sparse mod multicast routing kullanilirken ise bir randevu noktasi olarak tabir edebilecegimiz Rendezvous Point yada RP ye ihtiyaç duymaktayiz. Ismininden de anlasilacagi üzere artik “join” isteklerimiz RP noktamizin unicast adresine dogru olacaktir. Böyle bir senaryoda RP noktasinda erisimi saglamak multicast routing islemlerimizi yapmadan önceki ilk adimimiz olacaktir. Dense moda göre biraz daha akillica bir yaklasim gösteren Sparse mod paylasimli agaçlari kullanir. Bir router yayinin kaynagina daha kisa yoldan gidebildigini anlar ise upstream yönünde gerekli join islemlerini yaparak o kaynak için kaynak dagitim noktasi (source distribution point) olur ve böylelikle trafik en iyi noktadan baslatilmis olur.

Hepsi iyi güzel hos fakat küçük bir ayrinti söz konusu, Internet üzerinde tam olarak bir dikey agaç modeli göremeyiz. Yedeklilik adina yapilmis olan baglantilar büyük fiziksel looplara sebebiyet vermektedir. Tam da bu noktada daha önceki yazimda bahsettigim RPF(Reverse path forwarding) devreye girer ve bir loop engelleme mekanizmasi görevi görür. Basitçe anlatmak gerekirse multicast paketinin geldigi interface paketi gönderen kaynak IP ye giden en kisa unicast yol için kullanilan interface ise paket duplike edilir ve group içerisindeki herkese yollanir. Eger RPF check dedigimiz bu islem olumsuz sonuçlanirsa paket droplanir.

Son olarak özetlemek gerekirse,
• Multicast özel IP adresleri kullanarak tekil bir kaynaktan çok kisiye gönderim yapmamizi saglar. Göndericinin tek bir kopya yollamasi yeterlidir.
• Hostlar ve Routerlar multicast gruplarina IGMP protokolünü kullanarak katilirlar ve kendilerine bagli bu multicast grubu ile ilgilenen routerlara yine IGMP kullanarak bilgi verirler.
• Dense protokoller (DVMRP ve PIM dense mod) flooding ve prune islemleri yapar, Sparse mod ise bir RP noktasi olusturarak gereksiz flooding islemini ortadan kaldirarak bandwidth korunumu saglar.

Evet arkadaslar multicast 101 yani multicastin temelleri olarak tanimlayabilecegim bu yazimin sonuna gelmis bulunuyorum. Multicast yazilarim seri olarak devam edecektir. Bir sonraki yazimda daha çok konfigürasyonel olacak sekilde bir topoloji üzerinde anlatim yapiyor olacagim.
Konuyla ilgili olarak sormak istediginiz ya da yanlis görüp uyarmak istediginiz bir yer olursa lütfen bizimle iletisime geçin. Yazimi okudugunuz için simdiden tesekkürler. Esenlikle kalin.

Hüseyin Çapan

huseyin.capan@netoburus.com
Network Mühendisi – Netoburus Team