組播概述
在網(wǎng)絡(luò)中,存在著三種發(fā)送報(bào)文的方式:單播、廣播、組播。數(shù)據(jù)采用單播(Unicast)方式傳輸時,服務(wù)器會為每一個接收者單獨(dú)傳輸一份信息,如果有多個接收者存在,網(wǎng)絡(luò)上就會重復(fù)地傳輸多份相同內(nèi)容的信息,這樣將會大量占用網(wǎng)絡(luò)資源。數(shù)據(jù)采用廣播(Broadcast)方式傳輸時,系統(tǒng)會把信息一次性的傳送給網(wǎng)絡(luò)中的所有用戶,不管他們是否需要,任何用戶都會接收到廣播來的信息。
當(dāng)前,諸如視頻會議和視頻點(diǎn)播等單點(diǎn)發(fā)送、多點(diǎn)接收的多媒體業(yè)務(wù)正在成為信息傳送的重要組成部分。在一點(diǎn)發(fā)送多點(diǎn)接收的前提下,單播方式適合用戶較少的網(wǎng)絡(luò),而廣播方式適合用戶稠密的網(wǎng)絡(luò),當(dāng)網(wǎng)絡(luò)中需求某信息的用戶量不確定時,單播和廣播方式效率很低。這時組播(multicast)應(yīng)運(yùn)而生,它實(shí)現(xiàn)了網(wǎng)絡(luò)中單點(diǎn)到多點(diǎn)的高效數(shù)據(jù)傳送,能夠節(jié)約大量網(wǎng)絡(luò)帶寬,降低網(wǎng)絡(luò)負(fù)載。組播傳輸信息的方式如圖所示。
組播的特點(diǎn)是:
服務(wù)對象不固定,通常是一對多的關(guān)系;
把服務(wù)對象看成一個組,發(fā)送端只需要發(fā)送一次數(shù)據(jù)到相關(guān)網(wǎng)絡(luò)設(shè)備即可;
每個用戶可以隨時加入或退出組播組;
實(shí)時性要求較高,允許一定的丟幀現(xiàn)象發(fā)生。
組播地址
組播IP地址:
根據(jù)IANA(Internet Assigned Numbers Authority,因特網(wǎng)編號授權(quán)委員會)規(guī)定,組播報(bào)文的IP地址使用D類IP地址,組播IP地址范圍是224.0.0.0~239.255.255.255。其中,幾個特殊組播IP地址段的范圍及說明如下:
組播MAC地址:
以太網(wǎng)傳輸單播IP報(bào)文的時候,目的MAC地址使用的是接收者的MAC地址。但是在傳輸組播報(bào)文時,傳輸目標(biāo)不再是一個具體的接收者,而是一個成員不確定的組,所以需要使用組播MAC地址作為目的地址,組播MAC地址是一個邏輯的MAC地址。
IANA規(guī)定,組播MAC地址的高24bit位是以01-00-5E開頭,低23bit為組播IP地址的低23bit,映射關(guān)系如圖所示:
由于IP組播地址的高4bit是1110,標(biāo)識了組播組,而低28bit中只有23bit被映射到組播MAC地址上,這樣IP組播地址中就會有5bit沒有使用,從而出現(xiàn)了32個IP組播地址映射到同一MAC地址上的結(jié)果。
組播地址表
交換機(jī)在轉(zhuǎn)發(fā)組播數(shù)據(jù)時是根據(jù)組播地址表來進(jìn)行的。由于組播數(shù)據(jù)不能跨越VLAN傳輸,因此組播地址表的第一部分是VLAN ID,當(dāng)交換機(jī)收到組播數(shù)據(jù)包時,數(shù)據(jù)包只能在接收端口所在的VLAN內(nèi)轉(zhuǎn)發(fā)。組播地址表對應(yīng)的出口端口不是一個,而是一組端口列表。轉(zhuǎn)發(fā)數(shù)據(jù)時,交換機(jī)根據(jù)組播數(shù)據(jù)的目的組播地址查找組播地址表,如果在組播地址表中查不到相應(yīng)的條目,則把該組播數(shù)據(jù)廣播,即向接收端口所在VLAN內(nèi)的所有端口上轉(zhuǎn)發(fā);如果能查找到對應(yīng)的條目,則目的地址應(yīng)該是一組端口列表,于是交換機(jī)把這個組播數(shù)據(jù)復(fù)制成多份,每份轉(zhuǎn)發(fā)到一個端口,從而完成組播數(shù)據(jù)的交換。組播地址表一般格式如圖所示。
IGMP偵聽
網(wǎng)絡(luò)中的主機(jī)通過發(fā)送IGMP(Internet Group Management Protocol,互聯(lián)網(wǎng)組管理協(xié)議)報(bào)文向臨近的路由器申請加入(或離開)組播組,當(dāng)上層路由設(shè)備將組播數(shù)據(jù)轉(zhuǎn)發(fā)下來后,交換機(jī)負(fù)責(zé)將組播數(shù)據(jù)轉(zhuǎn)發(fā)給主機(jī)。IGMP偵聽(IGMP Snooping)是組播約束機(jī)制,交換機(jī)用他來完成組播組的動態(tài)注冊,運(yùn)行IGMP偵聽的交換機(jī)通過偵聽和分析主機(jī)與組播路由器之間交互的IGMP報(bào)文來管理和控制組播組,從而可以有效抑制組播數(shù)據(jù)在網(wǎng)絡(luò)中擴(kuò)散。
IGMP偵聽的工作過程
交換機(jī)偵聽用戶主機(jī)與路由器之間的交互IGMP報(bào)文,跟蹤組播信息及其申請的端口。當(dāng)交換機(jī)偵聽到主機(jī)向路由器發(fā)出報(bào)告報(bào)文(IGMP Report)時,交換機(jī)便把該端口加入組播地址表中;當(dāng)交換機(jī)偵聽到主機(jī)發(fā)送的離開報(bào)文(IGMP Leave)時,路由器會發(fā)送該端口的特定組查詢報(bào)文(Group-Specific Query),若還有其它主機(jī)需要該組播,則將回應(yīng)報(bào)告報(bào)文,若路由器收不到任何主機(jī)的回應(yīng),交換機(jī)便把該端口從組播地址表中刪除。路由器會定時發(fā)查詢報(bào)文(IGMP Query),交換機(jī)收到查詢報(bào)文后,如果在一定的時間段內(nèi)沒有收到主機(jī)的報(bào)告報(bào)文,便把該端口從組播表中刪除。