Multicast

Multicast用途:
當網路上的資料要傳輸給部份設備時,若用multicast送資料,交換器僅會將資料傳輸給部份設備,因此頻寬不會被浪費,因此multicast對多媒體傳輸時的網路效能很重要
ps
當網路上的資料要傳輸給部份設備時,若用broadcast送資料,交換機會將這些資料不經過濾地發給所有設備,因此很浪費頻寬,

Multicast挑戰
如何識別multicast的接收者
如何定址multicast的接收者

Multicast運作原理
單一識別碼會用來代表一群接收者, 定址到使用該群組識別碼的封包, 可送資料到該群組的接收者
ex: 假設有一群節點,但有部份節點擁有群播位置,則擁有此位置的節點會接收到該群播的資訊

Multicast運作元件
IGMP:
 運作在主機與相連route間
 讓主機能通知相連router,主機上的應用程式想加入特定的群播群組
Multicast routing protocol:
 運作在router之間
 將群播資料傳到目地

………………………………………………………………

Multicast routing protocol

兩種multicast routing protocol做法:
group-shared:
 一個群播群組共用一個以tree為基礎的傳播路徑
 實做技術常見的有minimal spanning (Steiner),center-based trees,…etc
source-specific:
 不同的傳送端有專屬的tree為基礎的傳播路徑
 實做技術常見的有shortest path trees,reverse path forwarding,…etc
 

常見multicast routing protocol
DVMRP(distance vector multicast routing protocol,距離向量群播繞送協定)
PIM(protocol independent multicast routing protocol,協定獨立群播繞送協定)

………………………………………………………………

IGMP

Internet(Internet Group Management Protocol,群組管理協定)
用於multicast的協定
用來決定那些主機要加入multicast group,以及和mutlicast group內主機通訊

IGMP版本
IGMP V1(RFC1112定義)
IGMP V2(RFC2236定義)
IGMP V3(RFC 3376定義)

IGMP組成元件
IGMP查詢路由器:用來發送Membership Query到224.0.0.1的角色,每60秒送一次
IGMP成員/receiver:加入群組的電腦,只有這些電腦會收到特定的資料

成員加入multicast組方式
方法1
 從其中一台支援IGMP的網路設備中找一台做IGMP查詢路由器
 IGMP查詢路由器每隔60秒週期性地發送Membership Query給224.0.0.1
 啟用群播的所有成員(主機)監聽該位址並接收,然後以Membership Report回覆
 IGMP查詢路由器就會知道該群播群組有那些成員
方法2
 成員可主動送Membership Report表明要加入那個multicast群組

成員離開multicast組方式
成員可透過不回應membership query而離開multicast群組

IGMP Version 1 封包
 Membership Query:用於查詢有那些成員(0x11) 
 Membership Report:成員用來回應membership query(0x12)

IGMP Version 2 封包
 Membership Query:用於查詢有那些成員(0x11)
Membership Report:成員用來回應membership query:分為v1(0x12)和v2(0x16)
 Leave Group:成員用來宣告離開群組(0x17)
ps:
v2主要增加以下功能:
支援離開機制
支援特定群組查詢功能
最大回應時間欄位,v1預設10秒

IGMP version 3
v3主要增加以下功能
IGMP封包新增 Membership Report v3
增加過濾來源的機制,允許系統選擇想要接收的特定群播源或者排除不想接收的特定群播源

refer
http://ithelp.ithome.com.tw/question/10067356

………………………………………………………………………………….

其他補充

群播位置
Reserved link local(保留鏈結區域):
 範圍:224.0.0.0-224.0.0.255
 功能:網路協定常用
 ex:
 224.0.0.1負責處理所有的IP群播主機
 224.0.0.2處理所有群播的角色
 224.0.0.5和224.0.0.6被OSPF使用,
 224.0.0.10被EIGRP使用
globally scoped(全域範圍):
 範圍:224.0.1.0-238.255.255.255
 功能:群播應用程式常用
SSM(source-specific multicast,特定來源群播位置):
 範圍:232.0.0.0-232.255.255.255
 功能:用於IGMPv3
GLOP:
 範圍:233.0.0.0-233.255.255.255
 功能:常用於AS
limited scope(限制範圍):
 範圍:239.0.0.0-239.255.255.255
 功能:類似privite IP

ps:
群播ip轉換群播mac
[01-00-5e-0] + [IP的後23bit]
ex:
以224.1.10.10為例
224.1.10.10=11100000.00000001.00001010.00001010
224.1.10.10的後23bit=0000001.00001010.00001010=1-0a-0a
[01-00-5e-0] + [1-0a-0a]=01-00-5e-01-0a-0a
所以224.1.10.10的群播mac=01-00-5e-01-0a-0a