Transkript
1 Hazırlayan: Barış Şimşek Bitirme Çalışması Sunumu Ocak 2001, Trabzon KTÜ
2 Stanford Üniversitesi nde bir öğrenci olan Steve Deering, 1988'de bir proje üzerinde çalışırken multicast'i buldu. Deering bu konudaki fikirlerini, IP yönlendiriciler üzerine yaptığı tez çalışmasında geliştirmiştir. Deering son tasarımını IETF, RFC 1112 dokümanında tanımladı.
3 IPv4 Standardı ile 3 tür adresleme sağlanmaktadır: Unicast Broadcast Multicast Broadcast ve multicast yalnızca UDP ile kullanılabilir. Çünkü TCP iki uç arasında haberleşme için kullanılır.
4 Unicast Tek bir alıcıya paket gönderilmesine Unicast denir. Bir IEEE Ethernet Ağında Unicast
5 Broadcast Bir paketin ağdaki bütün hostlara gönderilmesine Broadcast denir. Bir IEEE Ethernet Ağında Broadcast
6 Multicast Bir paketin üyelik sistemi ile çalışan bir gruptaki bütün hostlara gönderilmesine Multicast denir.
7 Neden Multicast? Aynı veri birden fazla alıcıya gönderilirken Daha iyi bant genişliği kullanımı Daha az host/router işlem yükü Alıcı adresler bilinmez Uygulamalar Video/ses konferansı Stok dağıtımı Reklam tanıtımı
8 IP Multicast Servis Modeli RFC 1112 Her bir multicast grubu D sınıfı bir IP ile tanımlanır. Grup üyeleri internetin herhangi bir yerinde olabilir. Üyeler gruba dahil olur veya ayrılır. Bunu router a bildirirler. Gönderici ve alıcı birbirinden farklıdır: Gönderici grubun üyesi olmak zorunda değildir. Alıcı, grup üyesi olmak zorundadır. Router lar bütün multicast adresleri dinler ve grupları yönetmek için multicast yönlendirme algoritmalarını kullanır.
9 IP Multicast Adresleme Modeli Bir multicast adresin biçimi şöyledir: Multicast adres aralığı: IANA tarafından arası saklanmıştır. Yönlendiriciler bu aralığı yönlendirmez subnetteki tüm hostlar subnetteki tüm yönlendiriciler bütün DVRMP yönlendiriciler OSPF yönlendiriciler AUIDONEWS
10 Multicast Adresin Fiziksel Adrese Dönüştürülmesi IP adresin en anlamsız 23 biti, IEEE adresin en anlamsız bitine map edilir. En anlamlı 24 bit olarak IANA nın belirlediği 01005e hexal adresi kullanılır. Bu ikisi arasında kalan 1 bit ise multicast anlamında setlenir. Ethernet ve FDDI bu mekanizmayı kullanır. Token Ring başka adresleme kullanır.
11
12 IGMP IP hostları tarafından, host grup üyeliklerini en yakın multicast router'lara bildirmek için kullanılır. ICMP gibi IGMP de IP paketi olarak paketlenir. Bütün IGMP paketlerinin biçimi şöyledir: Version Type Unused Checksum Group Address IGMP paketler iki tür olabilir: Type 1=Host üyelik sorgusu Type 2=Host üyelik raporu
13 Bir host grubunun içinde bulundukları yerel network teki üyelerini tespit için multicast router lar Host Membership Query mesajları gönderir. Query mesajları bütün hostlar anlamında olarak adreslenir ve TTL değerleri 1'dir. Hostlar Query mesajlarına Host Membership Report mesajları üreterek cevap verir.
14 1. Bir host, Query aldığı zaman; hemen Report göndermek yerine, her bir grup üyeliği için bir rapor timer'ı başlatır. Her bir timer random olarak seçilen bir değere setlenir. Bir timer'ın süresi bittiği zaman, ilişikte olunan host grubu için bir Rapor üretilir. 2. Bir rapor hedef IP adresi olarak rapor edilecek host grup adresi ile gönderilir. Ve TTL değeri 1'dir. Aynı networkteki aynı grubun diğer üyeleri Rapor'lara kulak misafiri olabilir. Eğer bir host bir grup için bir rapor işitirse, host bu grup için olan timer'ını durdurur ve bu grup için rapor üretmez. Böylece normal durumlarda bir grup için yalnızca bir rapor üretilmesi sağlanır.
15 > Non-Member < leave group join group leave group (stop timer) (send report, start timer) < < query received Delaying Member (start timer) Idle Member > report received (stop timer) > timer expired (send report)
16
17 Multicast, UDP haberleşmedir. Multicast uygulamalarının iki çeşit rolü vardır: 1. Göndericilik 2. Alıcık Bu roller kullanılarak oluşturulacak multicast uygulamaları iki şekilde modelleyebiliriz: 1. Tekten çoğa uygulama 2. Çoktan çoğa uygulama
18 Çeşitli platformlar için yazılmış IP Multicast API leri vardır. Bu API ler hemen hemen birbirinin aynısıdır. Microsoft Windows altında program yazmak için Winsock 2+ kullanılır. Steeve Deering in modeli Berkeley Soketleri için yazılmış API ile aynıdır. Standart Multicast API leri 1. BSD UNIX (BSD Soketleri) 2. Microsoft Windows (Winsock 2+) 3. Apple Macintosh (Open Transport)
19 Bütün Berkeley Multicast API leri işlemlerini başlatmak için setsockopt() fonksiyonunu kullanır. Buna karşın geçerli soket seçeneklerini öğrenmek için getsockopt() fonksiyonunu kullanır. Bu fonksiyonlar için tanımlanan komutlar şunlardır: IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_MULTICAST_IF IP_MULTICAST_LOOP IP_MULTICAST_TTL özel bir arayüz üzerinden multicast gruba girmek için Multicast guruptan ayrılmak için Multicast send ile kullanmak için geçerli multicast arayüzünü setlemek veya öğrenmek için Giden datagramlar için loopback i devre dışı bırakmak Giden multicast datagramları için time-to-live setlemek için
20 Bir alıcı uygulama: UDP soket açar, socket() Soketi port ile ilişiklendirir, bind() Multicast adres grubuna üye olur, WSAJoinLeaf() Veri alır, recvfrom() Soketi kapatır. Bir gönderici uygulama: UDP soket açar, socket() Soketi port ile ilişiklendirir, bind() TTL değerini setler, setsockopt() Veri gönderir Soketi kapatır
21 Multicast Datagram Paketi Gönderme Açılacak soket AF_INET ailesinden SOCK_RAW veya SOCK_DGRAM olmalıdır. Gönderilecek paket için uygun TTL değeri seçilir. Yerel ağda multicast yapmak için TTL=0 alınır. Veri göndermek için UDP datagram gönderen sendto () gibi komutlar kullanılır. TTL in setlenmesi u_char ttl = 1; setsockopt(sock, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl));
22 Multicast Datagram Paketi Alma Bir host un datagram paketi alabilmesi için öncelikle grubun üyesi olması gerekir. Gruba katılma isteği şöyle iletilebilir: struct ip_mreq; setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)); ip_mreq yapısının açılımı: struct ip_mreq { struct in_addr imr_multiaddr; struct in_addr imr_interface; }
23 - SON - Hazırlayan: Barış Şimşek KTÜ Bilgisayar Mühendisliği Ocak 2001