專利名稱:一種gmrp協(xié)議兼容igmp點(diǎn)播客戶端的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)通訊領(lǐng)域,特別涉及一種GMRP協(xié)議兼容IGMP點(diǎn)播客戶端的方法。
背景技術(shù):
隨著流媒體、視頻等業(yè)務(wù)在hternet上的相繼開(kāi)展,IP組播技術(shù)和應(yīng)用開(kāi)始得到快速發(fā)展。IP組播技術(shù)實(shí)現(xiàn)了 IP網(wǎng)絡(luò)中點(diǎn)到多點(diǎn)的高效數(shù)據(jù)傳送,它是利用一種協(xié)議將 IP數(shù)據(jù)包從一個(gè)組播源傳送到多個(gè)目的地,只在網(wǎng)絡(luò)的最遠(yuǎn)分支處將信息進(jìn)行拷貝,最終到達(dá)接收者處。因此IP組播技術(shù)能夠有效地節(jié)約網(wǎng)絡(luò)帶寬、降低網(wǎng)絡(luò)負(fù)載,在實(shí)時(shí)數(shù)據(jù)傳送、多媒體會(huì)議、數(shù)據(jù)拷貝、游戲和仿真等諸多方面都有廣泛的應(yīng)用。在路由層面,路由器可以對(duì)組播報(bào)文的轉(zhuǎn)發(fā)進(jìn)行控制。但是在很多情況下,組播報(bào)文要不可避免地經(jīng)過(guò)一些二層交換設(shè)備,尤其是在局域網(wǎng)環(huán)境里。如果不對(duì)二層設(shè)備進(jìn)行相應(yīng)的配置,則組播報(bào)文就會(huì)轉(zhuǎn)發(fā)給二層交換設(shè)備的所有接口,在二層進(jìn)行廣播,這顯然會(huì)浪費(fèi)大量的系統(tǒng)資源,如圖1所示,非點(diǎn)播組成員也能收到組播流量,網(wǎng)絡(luò)帶寬被大大浪費(fèi)。因此,在二層交換設(shè)備需要開(kāi)啟一種可以限制組播流量盲目擴(kuò)散的二層組播協(xié)議,GMRP(GARP Multicast Registration Protocol,GARP 組播注冊(cè)協(xié)議)就是這樣一種二層組播協(xié)議。GMRP 是 GARP (Generic Attribute Registration Protocol,通用屬性注冊(cè)協(xié)議)的一種應(yīng)用,主要提供一種類似于IGMPGnternet Group Management Protocol,互聯(lián)網(wǎng)組管理協(xié)議)探查技術(shù)的受限組播擴(kuò)散功能。GMRP和GARP都是由IEEE 802. IP定義的工業(yè)標(biāo)準(zhǔn)協(xié)議。GARP協(xié)議提供了一種屬性擴(kuò)散傳播的機(jī)制,GMRP協(xié)議基于GARP實(shí)現(xiàn)交換機(jī)中的動(dòng)態(tài)組播注冊(cè)。支持GMRP協(xié)議的交換機(jī)能接收來(lái)自其他交換機(jī)的組播注冊(cè)信息,并動(dòng)態(tài)更新本地的組播注冊(cè)信息,同時(shí)也能將本地的組播注冊(cè)信息向其它交換機(jī)傳播,這樣組播注冊(cè)信息傳播至整個(gè)橋接局域網(wǎng)。GMRP在二層網(wǎng)絡(luò)的典型應(yīng)用如圖2所示,終端A、B、C、D通過(guò)二層網(wǎng)絡(luò)交換機(jī)與組播源相連,其中終端A和終端B加入了組播源的組播組中,圖2中設(shè)備均在同一 VLAN(虛擬局域網(wǎng))中。當(dāng)終端和交換機(jī)沒(méi)有開(kāi)啟GMRP時(shí),組播源想發(fā)送組播數(shù)據(jù),由于交換機(jī)沒(méi)有相應(yīng)組播MAC地址信息,只能以廣播方式轉(zhuǎn)播,如圖3所示。當(dāng)終端和交換機(jī)均開(kāi)啟了 GMRP時(shí),當(dāng)網(wǎng)絡(luò)中有設(shè)備申請(qǐng)注冊(cè)了組播源,例如圖4 中的終端A和終端B申請(qǐng)注冊(cè)了組播源,則能使二層網(wǎng)絡(luò)中的所有交換機(jī)都能注冊(cè)該信息, 組播源想發(fā)送組播數(shù)據(jù)時(shí),交換機(jī)就能把數(shù)據(jù)轉(zhuǎn)發(fā)到注冊(cè)了該組播組的端口出口,如圖4 所示。實(shí)際用戶應(yīng)用環(huán)境中,并不是所有的點(diǎn)播客戶端均支持GMRP協(xié)議,很多僅支持 IGMP協(xié)議。這樣GMRP就面臨一個(gè)問(wèn)題如果鏈路上既有支持GMRP協(xié)議的點(diǎn)播者,又有支持IGMP協(xié)議的點(diǎn)播者,GMRP無(wú)法處理點(diǎn)播者發(fā)送的IGMP報(bào)文,這樣僅支持IGMP協(xié)議的點(diǎn)播者就無(wú)法收到組播報(bào)文。如果考慮IGMP Snooping和GMRP同時(shí)開(kāi)啟,可以解決該問(wèn)題,但這兩個(gè)模塊同時(shí)運(yùn)行需要考慮的交互太多,實(shí)現(xiàn)比較復(fù)雜,另外IGMP Snooping的開(kāi)啟會(huì)加重二層交換機(jī)的CPU負(fù)擔(dān),對(duì)于一些低端交換機(jī),一般都會(huì)導(dǎo)致癱瘓。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種GMRP協(xié)議兼容IGMP客戶端的方法,可以在保持與現(xiàn)有的GMRP協(xié)議完全兼容的情況下讓GMRP兼容IGMP客戶端。使用本發(fā)明的技術(shù)方案,能夠在運(yùn)行GMRP協(xié)議的二層交換機(jī)兼容僅支持IGMP協(xié)議的點(diǎn)播客戶端。具體的技術(shù)方案是增加一個(gè)IGMP代理模塊協(xié)助GMRP模塊處理IGMP相關(guān)報(bào)文,其具體步驟如下步驟A,確認(rèn)收到包括IGMP Report或IGMP Leave的IGMP報(bào)文,將IGMP報(bào)文交由 IGMP代理模塊處理;步驟B,所述IGMP代理模塊將收到的IGMP Report或IGMP Leave報(bào)文轉(zhuǎn)化為GMRP Join或GMRP Leave報(bào)文,傳送至GMRP模塊處理;步驟C,所述GMRP模塊發(fā)送GMRP LeaveAl 1報(bào)文時(shí),原有流程不變的同時(shí)將該報(bào)文復(fù)制一份送至所述IGMP代理模塊處理;步驟D,所述IGMP代理模塊將收到的所述GMRP LeaveAl 1報(bào)文轉(zhuǎn)化為IGMPQuery 報(bào)文發(fā)送給點(diǎn)播客戶端;步驟E,所述GMRP模塊根據(jù)收到的GMRP報(bào)文及當(dāng)前狀態(tài)機(jī)狀態(tài),向外發(fā)送GMRP報(bào)文。進(jìn)一步,所述步驟B中,轉(zhuǎn)化報(bào)文具體包括以下步驟a)獲取 IGMP Report 或 IGMP Leave 報(bào)文中源 / 目的 MAC 地址和 IGMP Header 的 type 值;b)根據(jù) IGMP Header 的 type 值,選擇構(gòu)造 GMRP Join 報(bào)文或 GMRP Leave 報(bào)文。進(jìn)一步,所述步驟b)中,構(gòu)造GMRP Join或GMRP Leave報(bào)文包括其目的MAC地址取值相同;源MAC地址取值為IGMP R印ort或IGMP Leave報(bào)文的源MAC地址;Attribute Type取值相同;Attribute Value均取值為IGMP R印ort或IGMP Leave報(bào)文的目的MAC地址;構(gòu)造GMRP Join 報(bào)文,Attribute Event 取值為 0x02 ;構(gòu)造GMRP Leave 報(bào)文,Attribute Event取值為0x04 ;其它值按GMRP協(xié)議規(guī)定的默認(rèn)值進(jìn)行取值。進(jìn)一步,所述步驟E,具體包括以下步驟a) GMRP模塊收到GMRP Join報(bào)文后,如果GMRP請(qǐng)求狀態(tài)機(jī)處于VA、VP、AA、AP四個(gè)狀態(tài)之一,當(dāng)join定時(shí)器到期后發(fā)送GMRP Join報(bào)文;b) GMRP模塊收到GMRP Leave報(bào)文后,如果GMRP請(qǐng)求狀態(tài)機(jī)處于LA狀態(tài),當(dāng)join 定時(shí)器到期后發(fā)送GMRP Leave報(bào)文。 上述方案中不對(duì)GMRP協(xié)議作任何修改,僅增加一個(gè)輕量級(jí)的IGMP代理功能,該功能僅需要監(jiān)聽(tīng)并處理IGMP Report/Leave和GMRP LeaveAll報(bào)文,而無(wú)需對(duì)所有的組播報(bào)文進(jìn)行監(jiān)聽(tīng)和解讀,降低了 CPU的負(fù)擔(dān)。IGMP代理功能與GMRP之間交互關(guān)系簡(jiǎn)單,容易實(shí)現(xiàn)。具體實(shí)現(xiàn)時(shí)可以考慮在VLAN上實(shí)現(xiàn)IGMP代理功能,給用戶提供更靈活的選擇。綜上所述,本發(fā)明的優(yōu)點(diǎn)在于1)解決了 GMRP兼容IGMP點(diǎn)播客戶端的問(wèn)題;2)不對(duì)GMRP協(xié)議作任何修改,不需要額外進(jìn)行兼容性處理;
3)簡(jiǎn)單增加輕量級(jí)IGMP代理功能,只增加了少量的交換機(jī)處理負(fù)擔(dān)且用戶可以根據(jù)實(shí)際需要隨時(shí)隨地的開(kāi)啟或關(guān)閉該功能。
圖1為現(xiàn)有技術(shù)組播數(shù)據(jù)在二層交換設(shè)備中廣播示意圖;圖2為現(xiàn)有技術(shù)GMRP在二層網(wǎng)絡(luò)的典型應(yīng)用示意圖;圖3為現(xiàn)有技術(shù)當(dāng)沒(méi)有開(kāi)啟GMRP時(shí),組播數(shù)據(jù)在二層交換設(shè)備中廣播示意圖;圖4為現(xiàn)有技術(shù)當(dāng)開(kāi)啟GMRP時(shí),組播數(shù)據(jù)在二層交換設(shè)備中廣播示意圖;圖5為本發(fā)明的IGMP代理與GMRP協(xié)議交互過(guò)程示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。由于不確定客戶端是否可以發(fā)出GMRP Join報(bào)文,但是一般都能發(fā)出IGMPi^port 報(bào)文,所以可以考慮增加IGMP報(bào)文代理功能收到點(diǎn)播客戶端發(fā)送的IGMP報(bào)文時(shí),先通過(guò)IGMP報(bào)文代理功能模塊進(jìn)行處理, IGMP報(bào)文代理功能模塊根據(jù)收到的IGMP報(bào)文構(gòu)建出一個(gè)相應(yīng)GMRP報(bào)文送給GMRP功能模塊處理,這樣一來(lái)GMRP就可以間接處理IGMP點(diǎn)播客戶端所發(fā)送的IGMP報(bào)文。反之,GMRP需要向當(dāng)前鏈路發(fā)送IeaveAll報(bào)文,需要拷貝一份給IGMP代理功能模塊處理,IGMP報(bào)文代理功能模塊根據(jù)收到的GMRP IeaveAll報(bào)文構(gòu)造出一個(gè)相應(yīng)IGMP Query報(bào)文發(fā)送至當(dāng)前鏈路,以查詢當(dāng)前鏈路支持IGMP協(xié)議點(diǎn)播者的情況。圖5為本發(fā)明的IGMP代理與GMRP協(xié)議交互過(guò)程示意圖,如圖5所示,按照下述 IGMP代理與GMRP協(xié)議交互的過(guò)程,本發(fā)明即可以實(shí)現(xiàn)在保持與現(xiàn)有的GMRP協(xié)議完全兼容的情況下,能夠在運(yùn)行GMRP協(xié)議的二層交換機(jī)兼容僅支持IGMP協(xié)議的點(diǎn)播客戶端,具體實(shí)現(xiàn)方法如下1)確認(rèn)收到IGMP協(xié)議點(diǎn)播客戶端發(fā)送的IGMP報(bào)文,主要是IGMP Report和IGMP Leave報(bào)文,將此類報(bào)文交由IGMP代理模塊處理;2) IGMP代理模塊根據(jù)收到的IGMP Report或IGMP Leave報(bào)文構(gòu)造出GMRP Join 或GMRP Leave報(bào)文再送GMRP模塊處理,具體構(gòu)造過(guò)程如下a)獲取 IGMP Report 或 IGMP Leave 報(bào)文中源 / 目的 MAC 地址和 IGMP Header 的 type 值;b)如果IGMP Header的type值為0x16,則構(gòu)造GMRP Join報(bào)文;如果值為0x17, 則構(gòu)造GMRP Leave報(bào)文;c)構(gòu)造GMRP Join或GMRP Leave報(bào)文,其目的MAC地址均取值為 01-80-C2-00-00-20 ;源MAC地址取值為IGMP R印ort或IGMP Leave報(bào)文的源MAC地址;構(gòu)造 GMRP Join 報(bào)文,其 Attribute Event 取值為 0x02 ;構(gòu)造 GMRP Leave 報(bào)文則 Attribute Event取值為0x04 ;構(gòu)造GMRP Join或GMRP Leave報(bào)文,其Attribute Type均取值為0x01, 其Attribute Value均取值為IGMP R印ort或IGMP Leave報(bào)文的目的MAC地址;其它值按 GMRP協(xié)議規(guī)定的默認(rèn)值進(jìn)行取值。
3)GMRP向IGMP協(xié)議點(diǎn)播客戶端發(fā)送GMRP LeaveAll報(bào)文時(shí),原有流程不變的同時(shí)將該報(bào)文發(fā)送一份給IGMP代理模塊處理;4) IGMP代理模塊收到的GMRP LeaveAl 1報(bào)文后,發(fā)送普遍組IGMP Query查詢報(bào)文給IGMP協(xié)議點(diǎn)播客戶端;5)GMRP模塊根據(jù)收到的GMRP報(bào)文和GMRP請(qǐng)求狀態(tài)機(jī)當(dāng)前所處狀態(tài)向與收到 IGMP報(bào)文端口處于同VLAN內(nèi)的其它端口發(fā)送GMRP報(bào)文,報(bào)文發(fā)送細(xì)節(jié)如下a) GMRP模塊收到GMRP Join報(bào)文后,如果GMRP請(qǐng)求狀態(tài)機(jī)處于VA、VP、AA、AP四個(gè)狀態(tài)之一,當(dāng)join定時(shí)器到期后發(fā)送GMRP Join報(bào)文;b) GMRP模塊收到GMRP Leave報(bào)文后,如果GMRP請(qǐng)求狀態(tài)機(jī)處于LA狀態(tài),當(dāng)join 定時(shí)器到期后發(fā)送GMRP Leave報(bào)文。本發(fā)明能在針對(duì)GMRP標(biāo)準(zhǔn)協(xié)議狀態(tài)機(jī)不做改動(dòng)的基礎(chǔ)上增加了輕量級(jí)IGMP代理模塊,不但與原有狀態(tài)機(jī)完全兼容,并且與GMRP交互簡(jiǎn)單,容易實(shí)現(xiàn);本發(fā)明克服了傳統(tǒng) GMRP協(xié)議無(wú)法兼容IGMP點(diǎn)播客戶端的缺點(diǎn),使GMRP適用于同時(shí)存在支持IGMP或GMRP點(diǎn)播客戶端的組播環(huán)境,而且可以根據(jù)實(shí)際需要隨時(shí)隨地的開(kāi)啟或關(guān)閉該功能。上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍的內(nèi)。
權(quán)利要求
1.一種GMRP協(xié)議兼容IGMP點(diǎn)播客戶端的方法,其特征在于,增加一個(gè)IGMP代理模塊協(xié)助GMRP模塊處理IGMP相關(guān)報(bào)文,其具體步驟如下步驟A,確認(rèn)收到包括IGMP Report或IGMP Leave的IGMP報(bào)文,將IGMP報(bào)文交由IGMP 代理模塊處理;步驟B,所述IGMP代理模塊將收到的IGMP R印ort或IGMP Leave報(bào)文轉(zhuǎn)化為GMRP Join 或GMRP Leave報(bào)文,傳送至GMRP模塊處理;步驟C,所述GMRP模塊發(fā)送GMRP LeaveAl 1報(bào)文時(shí),原有流程不變的同時(shí)將該報(bào)文復(fù)制一份送至所述IGMP代理模塊處理;步驟D,所述IGMP代理模塊將收到的所述GMRP LeaveAll報(bào)文轉(zhuǎn)化為IGMPQuery報(bào)文發(fā)送給點(diǎn)播客戶端;步驟E,所述GMRP模塊根據(jù)收到的GMRP報(bào)文及GMRP請(qǐng)求狀態(tài)機(jī)當(dāng)前所處狀態(tài)向與收到IGMP報(bào)文端口處于同VLAN內(nèi)的其它端口發(fā)送GMRP報(bào)文。
2.根據(jù)權(quán)利要求1所述的GMRP協(xié)議兼容IGMP點(diǎn)播客戶端的方法,其特征在于,所述步驟B中,轉(zhuǎn)化報(bào)文具體包括以下步驟a)獲取IGMPRepor t或IGMP Leave報(bào)文中源/目的MAC地址和IGMP Header的type值;b)根據(jù)IGMPHeader的type值,選擇構(gòu)造GMRP Join報(bào)文或GMRP Leave報(bào)文。
3.根據(jù)權(quán)利要求2所述的GMRP協(xié)議兼容IGMP點(diǎn)播客戶端的方法,其特征在于,所述步驟b)中,構(gòu)造GMRP Join或GMRP Leave報(bào)文包括目的MAC地址取值相同;源MAC地址取值為 IGMP R印ort 或 IGMP Leave 報(bào)文的源MAC地址;Attribute Type 取值相同;Attribute Value均取值為IGMP Report或IGMPLeave報(bào)文的目的MAC地址;構(gòu)造GMRP Join報(bào)文, Attribute Event 取值為 0x02 ;構(gòu)造 GMRP Leave 報(bào)文,Attribute Event 取值為 0x04 ;其它值按GMRP協(xié)議規(guī)定的默認(rèn)值進(jìn)行取值。
4.根據(jù)權(quán)利要求1所述的GMRP協(xié)議兼容IGMP點(diǎn)播客戶端的方法,其特征在于,所述步驟E具體包括以下步驟a)所述GMRP模塊收到GMRPJoin報(bào)文后,如果所述GMRP請(qǐng)求狀態(tài)機(jī)處于VA、VP、AA、 AP四個(gè)狀態(tài)之一,當(dāng)join定時(shí)器到期后發(fā)送GMRP Join報(bào)文;b)所述GMRP模塊收到GMRPLeave報(bào)文后,如果所述GMRP請(qǐng)求狀態(tài)機(jī)處于LA狀態(tài),當(dāng) join定時(shí)器到期后發(fā)送GMRP Leave報(bào)文。
全文摘要
本發(fā)明公開(kāi)了一種GMRP協(xié)議兼容IGMP點(diǎn)播客戶端的方法,包括將IGMP報(bào)文交由IGMP代理模塊處理;IGMP代理模塊將收到的IGMP報(bào)文轉(zhuǎn)化為GMRPJoin或GMRP Leave報(bào)文,傳送至GMRP模塊處理;GMRP模塊發(fā)送GMRP LeaveAll報(bào)文時(shí),將該報(bào)文復(fù)制一份送至IGMP代理模塊;IGMP代理模塊將該報(bào)文轉(zhuǎn)化為IGMP Query報(bào)文發(fā)送給客戶端;GMRP模塊根據(jù)收到的GMRP報(bào)文及當(dāng)前狀態(tài)機(jī)狀態(tài),向外發(fā)送GMRP報(bào)文。本發(fā)明增加了輕量級(jí)IGMP代理模塊,克服了傳統(tǒng)GMRP協(xié)議無(wú)法兼容IGMP點(diǎn)播客戶端的缺點(diǎn),使GMRP適用于同時(shí)存在支持IGMP或GMRP點(diǎn)播客戶端的組播環(huán)境。
文檔編號(hào)H04L12/56GK102394884SQ20111034966
公開(kāi)日2012年3月28日 申請(qǐng)日期2011年11月7日 優(yōu)先權(quán)日2011年11月7日
發(fā)明者張鵬 申請(qǐng)人:神州數(shù)碼網(wǎng)絡(luò)(北京)有限公司