摘 要:主要闡述組播的基本概念、IGMP協(xié)議及IGMP Snooping的原理,并對IPTV直播業(yè)務(wù)中的二層設(shè)備上的IGMP Snooping進行了實現(xiàn)研究。
關(guān)鍵詞:組播;IGMP Snooping;二層;IPTV
中圖分類號:TP393.07
隨著寬帶網(wǎng)絡(luò)的技術(shù)的快速發(fā)展,家庭寬帶用戶的逐漸普及,三網(wǎng)融合也已經(jīng)逐步開始實施。IPTV業(yè)務(wù)是三網(wǎng)融合的一個重大切入點,是一種利用寬帶IP網(wǎng)絡(luò),向家庭用戶提供包括數(shù)字電視在內(nèi)的多種交互式服務(wù)的嶄新技術(shù)。組播技術(shù)因為網(wǎng)絡(luò)利用率高、時性好成為IPTV直播業(yè)務(wù)中一項關(guān)鍵技術(shù)。本文主要著重于闡述基于IGMP協(xié)議上的IGMP Snooping(組播偵聽)二層組播技術(shù)在IPTV直播業(yè)務(wù)中的實現(xiàn)研究。
1 組播與IGMP
1.1 單播、廣播與組播
IP通信有三種方式:單播、廣播、組播。組播是一種單點到多點的協(xié)議體系,它將IP數(shù)據(jù)包從一個源地址傳送到多個目的地,但數(shù)據(jù)拷貝只傳輸一份。組播傳輸方式下,即使用戶數(shù)量成倍增長,主干帶寬不需要隨之增加。與單播相比,多播可以大大的節(jié)省網(wǎng)絡(luò)帶寬,提高了數(shù)據(jù)傳送效率;與廣播相比又減少了主干網(wǎng)出現(xiàn)擁塞的可能性,避免了廣播的“泛洪”。
1.2 組播報文中的組播IP與組播MAC
對于組播報文來說,其目的IP是組播IP地址,而目的MAC是組播MAC。在三層IP層中,組播報文的目的IP地址采用D類IP地址,范圍從224.0.0.0到239.255.255.255。組播MAC根據(jù)組播IP映射,強制MAC的頭25bit為01-00-5e,后23位對應(yīng)IP地址的后23bit,即IP地址前9個bit丟棄不用,前面加上01-00-5e得出的即是該組播IP地址對應(yīng)的MAC。
1.3 IGMP協(xié)議
IGMP具有三種版本,IGMP v1、v2和v3。本文主要以IGMP v2為實現(xiàn)對象,IGMP協(xié)議報文主要分為加入(Report)、離開(Leave)、查詢(Query)三種報文。主機可以向路由器或交換機請求加入(Report)或離開(Leave)某個組,網(wǎng)絡(luò)中的路由器和交換機有選擇的復(fù)制并傳輸數(shù)據(jù),即只將組內(nèi)數(shù)據(jù)傳輸給那些加入組的主機。主機加入某個組之后會定期收到查詢者發(fā)來的組播查詢(Query)報文,主機定期回復(fù)Report以維持該組的加入狀態(tài)。
2 IPTV直播業(yè)務(wù)中的IGMP Snooping
2.1 IGMP Snooping原理
IGMP Snooping是運行在二層設(shè)備上的組播約束機制,用于管理和控制組播組,是工作在二層的組播技術(shù)。簡單來說,IGMP Snooping是為了防止二層設(shè)備上組播報文的泛洪,監(jiān)聽IGMP協(xié)議包并提取相應(yīng)信息,形成組播轉(zhuǎn)發(fā)表,然后對組播業(yè)務(wù)根據(jù)組播轉(zhuǎn)發(fā)表將組播數(shù)據(jù)流轉(zhuǎn)發(fā)到正確的端口。
2.2 IGMP Snooping實現(xiàn)研究
2.2.1 IGMP與IPTV業(yè)務(wù)研究
IPTV業(yè)務(wù)中,對于作為終端的機頂盒,通過發(fā)送IGMP協(xié)議的加入(Report)報文通知IPTV媒體服務(wù)器自己希望加入某個組(頻道)并接收某個特定組播組的信息,服務(wù)器才會下發(fā)對應(yīng)頻道的組播流使用戶能收看到該頻道。機頂盒通過發(fā)送IGMP離開(Leave)報文通知服務(wù)器希望離開并不再接收某個組的信息,該頻道組播流就會不再下發(fā)給該機頂盒。IPTV媒體服務(wù)器來通過IGMP協(xié)議查詢(Query)報文周期性地查詢所有組或某個組的成員是否處于活動狀態(tài),機頂盒收到查詢報文(Query)時需要回復(fù)加入報文(Report)以維持加入狀態(tài)使頻道組播流一直持續(xù)。
2.2.2 框架
如下圖,將二層設(shè)備上的控制平面和轉(zhuǎn)發(fā)平面獨立開,以減少相互影響。二層設(shè)備處在機頂盒與媒體服務(wù)器之間,在控制平面監(jiān)聽、分析IGMP協(xié)議報文,提取信息配置到組播轉(zhuǎn)發(fā)表,而轉(zhuǎn)發(fā)平面根據(jù)組播轉(zhuǎn)發(fā)表對UDP組播數(shù)據(jù)流進行轉(zhuǎn)發(fā)。
圖1
對于Report加入和Leave離開報文,控制平面提取出報文中的目的IP(組播IP地址)、源端口(二層設(shè)備上從哪個端口收到這個報文)、源MAC(發(fā)出請求的設(shè)備源MAC地址),并將這些信息配置到組播轉(zhuǎn)發(fā)表中。此外,二層設(shè)備透明的轉(zhuǎn)發(fā)IGMP協(xié)議報文。
2.2.3 組播轉(zhuǎn)發(fā)表
組播轉(zhuǎn)發(fā)表的關(guān)鍵字為組播IP地址,一個組播地址對應(yīng)一條組播轉(zhuǎn)發(fā)條目,所有的組播條目可用哈希表或鏈表等形式組織起來。當一個下掛設(shè)備發(fā)來請求加入組播IP1,源端口為PortA,源MAC為Mac1,控制平面查看組播轉(zhuǎn)發(fā)表中如果沒有這個組播IP,則添加組播IP1到表中,并將源端口PortA掛到組播IP1下的端口鏈表中,再將源MAC地址Mac1掛到源端口下。如果另個下掛設(shè)備請求加入同一個組播組IP1,源端口PortB,源MAC為Mac2,因為IP1已經(jīng)存在,則找到組播IP1的條目,將PortB掛到組播IP1的端口鏈表中PortA后面,并將Mac2掛到PortB的Mac鏈表中。此時,這條組播轉(zhuǎn)發(fā)條目如下圖所示。
圖2
二層設(shè)備轉(zhuǎn)發(fā)數(shù)據(jù)包時,如果碰到目的MAC為01-00-5e開頭的報文,則認為是組播報文,進一步分析出目的組播IP地址,在組播轉(zhuǎn)發(fā)表中根據(jù)組播IP查找應(yīng)該往哪一個或哪些端口發(fā)送,如上圖中如果是組播IP1的數(shù)據(jù)流則發(fā)送到PortA和PortB,其他端口不會轉(zhuǎn)發(fā),避免了組播流在各個端口的泛洪。
另外,對于一些二層設(shè)備上如果存在無線端口,需要通過組播轉(zhuǎn)發(fā)表中記錄的MAC地址來替換組播流的目的組播MAC地址,將其替換為單播MAC地址,再發(fā)送到無線端口,才能使另一端的無線設(shè)備收到組播流。
3 結(jié)束語
IGMP Snooping解決了二層設(shè)備上組播報文的泛洪,大大提高了二層設(shè)備上對組播報文的轉(zhuǎn)發(fā)效率,并減少了網(wǎng)絡(luò)擁塞。本文基于三網(wǎng)融合下的IPTV業(yè)務(wù)環(huán)境,闡述了IGMP Snooping在二層設(shè)備上的原理及具體實現(xiàn),并通過實驗驗證了實現(xiàn)方案有效、可行。
參考文獻:
[1]杜旭,張連靖,余江.IGMP Snooping協(xié)議實現(xiàn)方案[J].計算機應(yīng)用,2004(z1):14-15.
[2]王軍,吳志美.交換式以太網(wǎng)上的多播協(xié)議[J].軟件學(xué)報,2003(03):496-502.
[3]W.Fenner.Internet Group Management Protocol,Version 2.RFC 2236.1997.
作者單位:貴州大學(xué)職業(yè)技術(shù)學(xué)院,貴州黔東南苗族侗族自治州 556000;黔東南民族職業(yè)技術(shù)學(xué)院,貴州黔東南苗族侗族自治州 556000