專利名稱:在三層交換機上實現(xiàn)組播轉(zhuǎn)發(fā)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,具體涉及一種在三層交換機上實現(xiàn)組播轉(zhuǎn)發(fā)的方法。
背景技術(shù):
隨著網(wǎng)絡(luò)的飛速發(fā)展以及網(wǎng)絡(luò)應(yīng)用的日益普及,在Internet(因特網(wǎng))上,多媒體業(yè)務(wù)諸如流媒體,視頻會議和視頻點播等,正在成為信息傳送的重要組成部分。點對點傳輸?shù)膯尾シ绞讲荒苓m應(yīng)這一類業(yè)務(wù)傳輸特性,即單點發(fā)送多點接收,因為服務(wù)器必須為每一個接收者提供一個相同內(nèi)容的IP(因特網(wǎng)協(xié)議)報文拷貝,同時網(wǎng)絡(luò)上也重復(fù)地傳輸相同內(nèi)容的報文,占用了大量資源。雖然IP廣播允許一個主機將一個IP報文發(fā)送給同一個網(wǎng)絡(luò)的所有主機,但是由于不是所有的主機都需要這些報文,因而浪費了網(wǎng)絡(luò)資源。在這種情況下組播應(yīng)運而生,它的出現(xiàn)解決了一個主機向特定的多個接收者發(fā)送消息的方法。
IP組播是指一個IP報文向一個“主機組”的傳送,這個包含零個或多個主機的主機組由一個單獨的IP地址標(biāo)識。主機組地址也稱為“組播地址”,或者D類地址。IP組播分組在互聯(lián)網(wǎng)上的轉(zhuǎn)發(fā)由支持組播的路由器來處理。主機發(fā)出的IP組播分組在本子網(wǎng)內(nèi)被所有主機組成員接收,同時與該子網(wǎng)直接相連的組播路由器會把組播報文轉(zhuǎn)發(fā)到所有包含該主機組成員的網(wǎng)絡(luò)上。組播傳輸可在數(shù)據(jù)鏈路層(第二層)和網(wǎng)絡(luò)層(第三層)實現(xiàn)。IP組播技術(shù)有效地解決了單點發(fā)送多點接收、多點發(fā)送多點接收的問題,實現(xiàn)了IP網(wǎng)絡(luò)中點到多點的高效數(shù)據(jù)傳送,能夠有效地節(jié)約網(wǎng)絡(luò)帶寬、降低網(wǎng)絡(luò)負載。
隨著組播業(yè)務(wù)的迅速發(fā)展,要求網(wǎng)絡(luò)設(shè)備也要能夠支持組播功能,目前的三層交換機不僅可以支持IGMP(互聯(lián)網(wǎng)組管理協(xié)議),而且可以支持PIM-SM/DM(協(xié)議無關(guān)組播-稀疏模式/密集模式)、DVMRP(距離向量組播路由協(xié)議)等組播路由協(xié)議,使得三層交換機既可以部署在網(wǎng)絡(luò)的邊緣,又可以在匯聚層或核心層提供組播業(yè)務(wù)的支持。
三層交換機是一種兼具三層轉(zhuǎn)發(fā)和二層交換功能的設(shè)備。三層轉(zhuǎn)發(fā)用于VLAN(虛擬局域網(wǎng))接口之間的報文轉(zhuǎn)發(fā),而二層交換用于VLAN內(nèi)部端口之間的報文轉(zhuǎn)發(fā)。
例如,圖1所示的典型組播組網(wǎng)中,路由器Rtr為DR(指定路由器),負責(zé)發(fā)起PIM協(xié)議的加入動作,通常由一個網(wǎng)段中IP地址最大的那臺路由器作為指定路由器。主機S1通過三層交換機L3Sw接入組網(wǎng)網(wǎng)絡(luò),三層交換機L3Sw的端口port1和port2同屬于vlan30。
當(dāng)主機S1想加入某一個組播組時,發(fā)送IGMP成員關(guān)系報告報文,該報文被三層交交換機L3Sw接收,同時會經(jīng)過L3Sw的vlan30從port1二層轉(zhuǎn)發(fā)到port2被路由器Rtr接收;由于此時路由器Rtr為DR,所以按照PIM協(xié)議的規(guī)定,作為DR的路由器會負責(zé)發(fā)起PIM加入,于是當(dāng)三層交交換機L3Sw接收到組播源S0發(fā)送的組播報文后,會出現(xiàn)下面兩種情況1、當(dāng)vlanif40所在邏輯鏈路的IP地址比vlanif30所在邏輯鏈路的IP地址大時,路由器Rtr會從vlanif40發(fā)送PIM加入報文,于是在三層交換機L3Sw上就會出現(xiàn)一條出接口為vlanif40的組播路由轉(zhuǎn)發(fā)表項,組播流會先經(jīng)過L3Sw經(jīng)鏈路vlanif40到Rtr,Rtr再將其從vlanif30轉(zhuǎn)發(fā)給L3Sw,然后經(jīng)L3Sw的vlan30從port2二層轉(zhuǎn)發(fā)到port1,從而傳遞給主機。
2、當(dāng)vlanif40所在邏輯鏈路的IP地址比vlanif30所在邏輯鏈路的IP地址小時,路由器Rtr會從vlanif30發(fā)送PIM加入報文,于是在三層交換機L3Sw上就會出現(xiàn)一條出接口為vlanif30的組播路由轉(zhuǎn)發(fā)表項,組播流會在vlan30內(nèi)的兩個端口轉(zhuǎn)發(fā),一份轉(zhuǎn)發(fā)給Rtr,另一份轉(zhuǎn)發(fā)給主機。
可見,在這類通用組網(wǎng)情況下即主機通過三層交換機接入組網(wǎng)網(wǎng)絡(luò),并且通過該三層交換機的一個具有三層接口并包含多個端口的vlan與多臺三層設(shè)備(包括該三層交換機)連接于一個共享網(wǎng)絡(luò)時,組播流由該三層交換機負責(zé)從上行網(wǎng)絡(luò)接收并往下行轉(zhuǎn)發(fā),但該共享網(wǎng)絡(luò)的DR卻不是該三層交換機。三層交換機收到組播流后,要么組播流需要從其他組播路由器繞一圈回來再從二層轉(zhuǎn)發(fā)給自己所連接的主機,要么除了轉(zhuǎn)發(fā)給自己所連接的主機外,還要發(fā)送一份不必要的組播流去沖擊其他組播路由器。這兩種方式均會造成對網(wǎng)絡(luò)帶寬的浪費。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種在三層交換機上實現(xiàn)組播轉(zhuǎn)發(fā)的方法,以克服現(xiàn)有技術(shù)中三層交換機對組播流轉(zhuǎn)發(fā)時會造成網(wǎng)絡(luò)帶寬浪費的缺點,有效地節(jié)省帶寬消耗,提高組播流轉(zhuǎn)發(fā)效率。
為此,本發(fā)明提供如下的技術(shù)方案一種在三層交換機上實現(xiàn)組播轉(zhuǎn)發(fā)的方法,包括以下步驟A、當(dāng)三層交換機收到互聯(lián)網(wǎng)組管理協(xié)議IGMP成員關(guān)系報告報文時,檢查收到該報文的端口屬性;B、如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則當(dāng)三層交換機收到該端口下組播組的組播數(shù)據(jù)流后,通過該端口將組播數(shù)據(jù)流直接轉(zhuǎn)發(fā)出去。
優(yōu)選地,所述方法進一步包括C、如果所述端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則三層交換機禁止轉(zhuǎn)發(fā)該端口下組播組的IGMP成員關(guān)系報告報文和IGMP離開報文。
優(yōu)選地,所述方法進一步包括D、如果所述端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則三層交換機向連接三層設(shè)備的各端口分別發(fā)送一份對應(yīng)所述端口下組播組的IGMP離開報文。
優(yōu)選地,所述方法還包括E、當(dāng)三層交換機收到IGMP離開報文時,檢查收到該報文的端口屬性;F、如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則向該端口發(fā)送至少一個IGMP指定組查詢報文。
所述步驟B包括B1、根據(jù)端口配置關(guān)系獲取收到IGMP成員關(guān)系報告報文的端口所屬的接口;B2、當(dāng)所述接口為其對應(yīng)組播組的組播轉(zhuǎn)發(fā)表項的反向路徑轉(zhuǎn)發(fā)RPF接口時,三層交換機將收到的所述端口下組播組的組播數(shù)據(jù)流在入虛擬局域網(wǎng)VLAN內(nèi)做二層轉(zhuǎn)發(fā);B3、否則,將所述接口作為其對應(yīng)組播組的組播轉(zhuǎn)發(fā)表項的出接口加入到組播轉(zhuǎn)發(fā)表中,三層交換機將收到的所述端口下組播組的組播數(shù)據(jù)流按照該組播轉(zhuǎn)發(fā)表進行三層轉(zhuǎn)發(fā)。
可選地,在所述步驟A前還包括在三層交換機保存的組播組表中增加接口屬性字段。
在所述步驟B1和步驟B2之間還包括如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則在所述組播組表中增加對應(yīng)表項的同時,將其接口屬性填寫為“非指定路由器連接IGMP接口”;如果該端口是連接其所屬接口網(wǎng)段上指定路由器的端口,則在所述組播組表中增加對應(yīng)表項的同時,將其接口屬性填寫為“指定路由器連接IGMP接口”。
優(yōu)選地,所述方法進一步包括
G、如果三層交換機在預(yù)定時間內(nèi)未收到該端口下組播組的IGMP成員關(guān)系報告報文,則刪除所述組播組表中的對應(yīng)表項。
一種在三層交換機上實現(xiàn)組播轉(zhuǎn)發(fā)的方法,包括以下步驟I.在三層交換機保存的組播組表中設(shè)置接口屬性;II.當(dāng)三層交換機收到互聯(lián)網(wǎng)組管理協(xié)議IGMP成員關(guān)系報告報文時,檢查收到該報文的端口的屬性;III.如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則當(dāng)三層交換機收到該端口下組播組的組播數(shù)據(jù)流后,通過該端口將組播數(shù)據(jù)流直接轉(zhuǎn)發(fā)出去。
在所述步驟I中接口屬性按照以下標(biāo)準(zhǔn)進行設(shè)置如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,其接口屬性為“非指定路由器連接IGMP接口”;如果該端口是連接其所屬接口網(wǎng)段上指定路由器的端口,其接口屬性為“指定路由器連接IGMP接口”。
由以上本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明在三層交換機收到IGMP成員關(guān)系報告時,通過檢查收到該報文的端口屬性來決定該端口下組播組的組播數(shù)據(jù)流的轉(zhuǎn)發(fā)方式。如果該端口不是連接其所屬接口網(wǎng)段上DR(指定路由器)的端口,當(dāng)三層交換機收到該端口下組播組的組播數(shù)據(jù)流后,通過該端口將組播數(shù)據(jù)流直接轉(zhuǎn)發(fā)出去;否則,即可按照現(xiàn)有的轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)。通過這種轉(zhuǎn)發(fā)方式,有效地避免了組播流繞行其他組播路由器的過程,以及對其他組播路由器造成的不必要的組播流沖擊,節(jié)省了網(wǎng)絡(luò)帶寬消耗,提高了轉(zhuǎn)發(fā)效率,而且無需對現(xiàn)有標(biāo)準(zhǔn)協(xié)議做任何修改,不會帶來兼容性問題。
圖1是組播組網(wǎng)示意圖;
圖2是本發(fā)明方法的第一實施例實現(xiàn)流程圖;圖3是IGMP報告和查詢報文示意圖;圖4是本發(fā)明方法的第二實施例實現(xiàn)流程圖。
具體實施例方式
本發(fā)明的核心是在三層交換機收到IGMP成員關(guān)系報告時,通過檢查收到該報文的端口屬性來決定該端口下組播組的組播數(shù)據(jù)流的轉(zhuǎn)發(fā)方式。如果該端口不是連接其所屬接口網(wǎng)段上DR(指定路由器)的端口,當(dāng)三層交換機收到該端口下組播組的組播數(shù)據(jù)流后,通過該端口將組播數(shù)據(jù)流直接轉(zhuǎn)發(fā)給主機;否則,即可按照現(xiàn)有的轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)。具體實現(xiàn)時,可以在三層交換機保存的組播組表中增加接口屬性字段,利用該字段標(biāo)明三層交換機收到IGMP成員報告關(guān)系報告報文的接口網(wǎng)段上并非DR,并且該IGMP成員關(guān)系報告不是來自連接DR的端口。當(dāng)三層交換機收到組播流后,對于具有這種接口屬性的接口,當(dāng)該接口為對應(yīng)組的組播轉(zhuǎn)發(fā)表項的RPF接口時,則直接將組播流在RPF接口內(nèi)作二層轉(zhuǎn)發(fā),當(dāng)該接口不是對應(yīng)組的組播轉(zhuǎn)發(fā)表項的RPF接口時,則將該接口作為組播轉(zhuǎn)發(fā)表項的出接口,通過三層轉(zhuǎn)發(fā)將組播流直接發(fā)送到該接口。
本技術(shù)領(lǐng)域人員知道,每個VLAN對應(yīng)一個IP網(wǎng)段,在二層上,VLAN之間是隔離的,不同IP網(wǎng)段之間的訪問要跨越VLAN,要使用三層轉(zhuǎn)發(fā)引擎提供的VLAN間路由功能。三層交換機的工作原理是假設(shè)兩個使用IP協(xié)議的站點A、B通過第三層交換機進行通信,發(fā)送站A在開始發(fā)送時,把自己的IP地址與B站的IP地址比較,判斷B站是否與自己在同一子網(wǎng)內(nèi),若目的站B與發(fā)送站A在同一子網(wǎng)內(nèi),則進行二層的轉(zhuǎn)發(fā),若兩個站點不在同一子網(wǎng)內(nèi),如發(fā)送站A要與目的站B通信,發(fā)送站A要向三層交換機的三層交換模塊發(fā)出ARP(地址解析)封包。當(dāng)發(fā)送站A對三層交換模塊的IP地址廣播出一個ARP請求時,如果三層交換模塊在以前的通信過程中已經(jīng)知道B站的MAC地址,則向發(fā)送站A回復(fù)B的MAC地址,否則三層交換模塊根據(jù)路由信息向B站廣播一個ARP請求,B站得到此ARP請求后向三層交換模塊回復(fù)其MAC地址,三層交換模塊保存此地址并回復(fù)給發(fā)送站A,同時將B站的MAC地址發(fā)送到二層交換引擎的MAC地址表中。從這以后,A向B發(fā)送的數(shù)據(jù)包便全部交給二層交換處理,信息得以高速交換。即所謂的一次選路,多次交換。
一個三層交換機的一個三層接口可能包含多個端口,由于每個VLAN對應(yīng)一個IP網(wǎng)段,因此這些端口中可能有多個端口屬于同個VLAN。
正因如此,所以當(dāng)三層交換機在組播組網(wǎng)中不是DR時,如果通過該三層交換機轉(zhuǎn)發(fā)組播流到與其相連的主機時會出現(xiàn)不必要的帶寬消耗,并且會對其他組播路由器產(chǎn)生不必要的組播流沖擊。為了避免這種情況,在本發(fā)明中,讓三層交換機收到組播流后,直接轉(zhuǎn)發(fā)給自己所連接的主機,并且不發(fā)送不必要的組播流流去沖擊其他路由器。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和實施方式對本發(fā)明作進一步的詳細說明。
參照圖2,圖2示出了本發(fā)明方法的實現(xiàn)流程,包括以下步驟步驟201三層交換機接收到IGMP(互聯(lián)網(wǎng)組管理協(xié)議)成員關(guān)系報告報文后,檢查并記錄收到該報文的端口屬性。
組播協(xié)議分為主機-路由器之間的組成員關(guān)系協(xié)議和路由器-路由器之間的組播路由協(xié)議。組成員關(guān)系協(xié)議包括IGMP(互連網(wǎng)組管理協(xié)議)。組播路由協(xié)議分為域內(nèi)組播路由協(xié)議及域間組播路由協(xié)議。域內(nèi)組播路由協(xié)議包括PIM-SM(協(xié)議無關(guān)組播-稀疏模式)、PIM-DM(協(xié)議無關(guān)組播-密集模式)、DVMRP(距離向量組播路由協(xié)議)等協(xié)議,域間組播路由協(xié)議包括MBGP(組播協(xié)議邊界網(wǎng)關(guān)協(xié)議)、MSDP(組播源發(fā)現(xiàn)協(xié)議)等協(xié)議。
其中IGMP負責(zé)建立并且維護路由器直聯(lián)網(wǎng)段的組成員關(guān)系信息。域內(nèi)組播路由協(xié)議根據(jù)IGMP維護的這些組播組成員關(guān)系信息,運用一定的組播路由算法構(gòu)造組播分發(fā)樹進行組播數(shù)據(jù)包轉(zhuǎn)發(fā)。域間組播路由協(xié)議在各自治域間發(fā)布具有組播能力的路由信息以及組播源信息,以使組播數(shù)據(jù)在域間進行轉(zhuǎn)發(fā)。
組播路由器使用IGMP報文來記錄與該路由器相連網(wǎng)絡(luò)中組成員的變化情況。使用規(guī)則如下1)當(dāng)?shù)谝粋€進程加入一個組時,對于IGMP v1的主機發(fā)送一個IGMP成員關(guān)系報告報文。如果一個主機的多個進程加入同一組,只發(fā)送一個IGMP成員關(guān)系報告報文。這個報告被發(fā)送到進程加入組所在的同一接口上。對于IGMPv2的主機會發(fā)送IGMP離開報文。
2)進程離開一個組時,主機不發(fā)送IGMP成員關(guān)系報告報文,即便是組中的最后一個進程離開。主機知道在確定的組中已不再有組成員后,在隨后收到的IGMP查詢中就不再發(fā)送報告報文。
3)組播路由器在收到IGMP離開報文后會發(fā)送IGMP特定組查詢報文來了解是否還有任何主機包含有屬于組播組的進程。組播路由器必須向每個接口發(fā)送一個IGMP特定組查詢報文。因為路由器希望主機對它加入的每個組播組均發(fā)回一個報告,因此IGMP特定組查詢報文中的組地址被設(shè)置為該組播組地址。
4)主機通過發(fā)送IGMP成員關(guān)系報告報文來響應(yīng)一個IGMP查詢,對每個至少還包含一個進程的組均要發(fā)回IGMP成員關(guān)系報告報文。
使用這些查詢和報告報文,組播路由器對每個接口保持一個表,表中記錄接口上至少還包含一個主機的組播組。當(dāng)路由器收到要轉(zhuǎn)發(fā)的組播數(shù)據(jù)流時,它只將該數(shù)據(jù)流轉(zhuǎn)發(fā)到擁有屬于那個組主機的接口上。
圖3示出了兩個IGMP報文,一個是主機發(fā)送的成員關(guān)系報告報文,另一個是路由器發(fā)送的特定組查詢報文。該路由器要求那個接口上的每個主機說明它加入的每個多播組。
在主機通過三層交換機接入組播組網(wǎng)絡(luò)時,向三層交換機發(fā)送IGMP成員關(guān)系報告報文,而且該三層交換機在收到IGMP成員關(guān)系報告報文的接口網(wǎng)段上并非DR(指定路由器)。如果按照現(xiàn)有技術(shù)的處理,則三層交換機不需要檢查該報文是否來自連接DR的端口,而是直接向DR轉(zhuǎn)發(fā)收到的IGMP成員關(guān)系報告報文,由DR向三層交換機發(fā)送PIM加入報文,三層交換機根據(jù)收到PIM加入報文的接口建立組播路由轉(zhuǎn)發(fā)表項,當(dāng)三層交換機收到組播流后,根據(jù)建立的組播路由表項進行組播流的轉(zhuǎn)發(fā)。而在本發(fā)明方法中,為了避免對網(wǎng)絡(luò)帶寬的浪費及對其他組播路由器產(chǎn)生不必要的組播流沖擊,當(dāng)三層交換機收到IGMP成員關(guān)系報告報文時,檢查收到該報文的端口屬性。然后根據(jù)該端口的屬性決定是否向DR轉(zhuǎn)發(fā)收到的IGMP成員關(guān)系報告報文,并建立相應(yīng)的組播路由轉(zhuǎn)發(fā)表項,使三層交換機收到相應(yīng)的組播流后,直接轉(zhuǎn)發(fā)出去,并且不會發(fā)送不必要的組播流去沖擊其他路由器。
步驟202判斷該端口是否為連接其所屬接口網(wǎng)段上指定路由器的端口。
如果是,則進到步驟203當(dāng)三層交換機收到該端口下組播組的組播數(shù)據(jù)流后,進行正常的轉(zhuǎn)發(fā)流程。然后,進到步驟205。
比如,可以建立一個接口屬性列表,在該表中,包含端口號、端口屬性等信息。當(dāng)三層交換機收到IGMP成員關(guān)系報告報文時,根據(jù)檢查結(jié)果將端口屬性信息填寫到該表項中。當(dāng)三層交換機收到組播流時,根據(jù)該端口屬性以及其保存的組播組表、組播轉(zhuǎn)發(fā)表項中的信息,建立相應(yīng)的轉(zhuǎn)發(fā)表項(可能是二層轉(zhuǎn)發(fā),也可能是三層轉(zhuǎn)發(fā)),完成組播數(shù)據(jù)流的轉(zhuǎn)發(fā)。
否則,進到步驟204當(dāng)三層交換機收到該端口下組播組的組播數(shù)據(jù)流后,通過該端口將組播數(shù)據(jù)流直接轉(zhuǎn)發(fā)出去。
根據(jù)現(xiàn)有協(xié)議,三層交換機收到主機發(fā)送的IGMP成員關(guān)系報告報文后,需要將其再轉(zhuǎn)發(fā)給DR。
當(dāng)三層交換機收到IGMP成員關(guān)系報告報文的端口不是連接其所屬接口網(wǎng)段上指定路由器的端口時,為了防止其他路由器再收到該IGMP成員關(guān)系報告報文,則三層交換機需要攔截其對應(yīng)組播組的IGMP成員關(guān)系報告報文和IGMP離開報文,也就是說,當(dāng)三層交換機收到這種端口發(fā)來的IGMP成員關(guān)系報告報文和IGMP離開報文后,不再對這些報文進行二層轉(zhuǎn)發(fā)。同時,因為已經(jīng)有IGMP成員關(guān)系報告報文經(jīng)過二層轉(zhuǎn)發(fā)給了其他三層設(shè)備,還需要往連接三層設(shè)備的端口發(fā)送一份對應(yīng)組播組的IGMP離開報文。如有多個端口連接三層設(shè)備,則每個端口都需要發(fā)送一份對應(yīng)組播組的IGMP離開報文。
步驟205三層交換機接收到IGMP離開報文時,檢查記錄的該報文的端口屬性。
步驟206判斷該端口是否為連接其所屬接口網(wǎng)段上指定路由器的端口。
如果是,則進到步驟207進行正常的轉(zhuǎn)發(fā)流程。通常,由DR負責(zé)組播數(shù)據(jù)流的轉(zhuǎn)發(fā)。
否則,進到步驟208向該端口發(fā)送至少一個IGMP指定組查詢報文。
步驟209如果在預(yù)定時間內(nèi)未收到該端口下組播組的IGMP成員關(guān)系報告報文,則刪除記錄的該端口及其對應(yīng)的屬性信息;否則,不刪除該端口及對應(yīng)的屬性信息。
通常,在三層交換機中保存有組播組表,在該表中,三層交換機將收到的IGMP成員關(guān)系報告報文中的組播組記錄在某個VLAN的端口下,以表明該端口是否有轉(zhuǎn)發(fā)某個組播組的必要。
在組播組表中,包含VLANif接口(VLAN三層接口)、該VLAN內(nèi)的端口號、該端口下組播組等信息。
在本發(fā)明中,也可以將滿足以下條件的接口定義為IGMP-NonDR接口如果三層交換機在收到IGMP成員關(guān)系報告報文的接口網(wǎng)段上并非DR,并且該IGMP成員關(guān)系報告報文不是來自連接DR的端口。則該端口所屬的VLANif接口為IGMP-NonDR接口。
在組播組表中增加IGMP-NonDR接口屬性字段。當(dāng)三層交換機從接口收到來自主機的IGMP成員關(guān)系報告報文時,首先判斷該接口是否滿足IGMP-NonDR接口的條件,如果不滿足,則在組播組表中添加相應(yīng)表項的同時,將IGMP-NonDR接口屬性字段填寫為“否”;如果滿足,則在組播組表中添加相應(yīng)表項的同時,將IGMP-NonDR接口屬性字段填寫為“是”。
當(dāng)三層交換機接收到該端口下組播組的組播數(shù)據(jù)流后,根據(jù)組播組表中對應(yīng)表項中的IGMP-NonDR接口屬性決定對組播數(shù)據(jù)流的轉(zhuǎn)發(fā)方式。
參照圖4,圖4示出了本發(fā)明方法的第二實施例的實現(xiàn)流程,包括以下步驟步驟401在組播組表中增加IGMP-NonDR接口屬性。
例如,下表1所示表1
在該表中,vlanif30這個接口屬于IGMP-NonDR接口,在vlan的端口port1下有225.1.1.1這個組播組。說明該端口所連接的主機曾經(jīng)發(fā)送過225.1.1.1的成員關(guān)系報告。
步驟402當(dāng)三層交換機收到IGMP成員關(guān)系報告報文后,在組播組表中添加相應(yīng)表項,并檢查接收IGMP成員關(guān)系報告報文的端口,根據(jù)檢查結(jié)果填寫組播組表項中的IGMP-NonDR接口屬性。
例如,圖1所示的組網(wǎng)方式中,L3Sw從接口vlanif30的端口port2收到226.1.1.1組播組的IGMP成員關(guān)系報告報文,但port2連接著DR,所以該接口并不滿足IGMP-NonDR接口的條件,則在組播組表中添加表項
三層交換機從接口vlanif30的端口port1收到組播組224.1.1.1的IGMP成員關(guān)系報告報文,由于port1沒連接DR,所以vlanif30滿足IGMP-NonDR接口的條件。則在組播組表中添加表項如下
步驟403當(dāng)組播組表中的IGMP-NonDR接口屬性不滿足IGMP-NonDR接口條件時,三層交換機收到該端口下組播組的組播流后,進行正常的轉(zhuǎn)發(fā)。
步驟404當(dāng)組播組表中的IGMP-NonDR接口屬性滿足IGMP-NonDR接口條件時,檢查該接口是否為對應(yīng)組的組播轉(zhuǎn)發(fā)表項的RPF(反向路徑轉(zhuǎn)發(fā))接口。
本技術(shù)領(lǐng)域人員知道,在三層交換機中,為了正確地對組播數(shù)據(jù)流進行轉(zhuǎn)發(fā),需要建立相應(yīng)的組播轉(zhuǎn)發(fā)表項,該表項通常包括組播流源地址、組地址、RPF接口、出接口等信息。
RPF是組播路由協(xié)議中組播數(shù)據(jù)轉(zhuǎn)發(fā)過程的基礎(chǔ),其工作機制是當(dāng)組播信息通過有源樹時,組播路由器檢查到達的組播數(shù)據(jù)包的組播源地址,以確定該組播數(shù)據(jù)包所經(jīng)過的接口是否在有源的分支上,如果在,則RPF檢查成功,組播數(shù)據(jù)包被轉(zhuǎn)發(fā);如果RPF檢查失敗,則丟棄該組播數(shù)據(jù)包。其中,RPF接口相當(dāng)于組播路由表項的入接口。三層交換機收到組播數(shù)據(jù)流后,查找相應(yīng)的表項,將組播數(shù)據(jù)流通過三層轉(zhuǎn)發(fā)到出接口下收到IGMP加入報文的端口中。
如果該接口為對應(yīng)組的組播轉(zhuǎn)發(fā)表項的RPF接口,則進到步驟405將組播數(shù)據(jù)流在入VLAN內(nèi)作二層轉(zhuǎn)發(fā)。
如果該接口不是對應(yīng)組的組播轉(zhuǎn)發(fā)表項的RPF接口,則進到步驟406將該接口作為組播轉(zhuǎn)發(fā)表項的出接口。在進行組播數(shù)據(jù)流轉(zhuǎn)發(fā)時,再根據(jù)組播組表將其轉(zhuǎn)發(fā)到該出接口下收到IGMP成員關(guān)系報告報文的端口中。
同樣,對于來自IGMP-NonDR接口的IGMP成員關(guān)系報告報文及IGMP離開報文,為了保證不再讓其他路由器收到這些報文,需要三層交換機不再對這些報文進行二層轉(zhuǎn)發(fā)。
即步驟407攔截該組播組的IGMP成員關(guān)系報告報文和IGMP離開報文,同時,往連接三層設(shè)備的端口發(fā)送一份對應(yīng)組播組的IGMP離開報文。
例如,該接口剛好是對應(yīng)組的組播轉(zhuǎn)發(fā)表項(例如,(1.1.1.1,224.1.1.1))的RPF接口,則將端口port1加入到vlan30的二層轉(zhuǎn)發(fā)表項的端口列表中,此時組播流從port2轉(zhuǎn)發(fā)到port1;如果該接口不是RPF接口,則將它作為對應(yīng)組的組播轉(zhuǎn)發(fā)表項例如(1.1.1.1,224.1.1.1)的出接口加入,這樣組播流就會由vlan30的端口port1直接轉(zhuǎn)發(fā)給主機,而不會由其他端口進行復(fù)制轉(zhuǎn)發(fā)。同時攔截來自主機的224.1.1.1的IGMP成員關(guān)系報告報文,使這些報文不會從port2轉(zhuǎn)發(fā)出去;此外,需要往port2發(fā)送組播組224.1.1.1的IGMP離開報文。
步驟408當(dāng)三層交換機收到IGMP離開報文時,查找組播組表。
步驟409判斷主機要離開的組是否存在于組播組表中對應(yīng)接口的對應(yīng)端口下。
如果不存在,則進到步驟410不進行處理。
如果存在,則進到步驟411進一步判斷該VLAN接口屬性是否為IGMP-NonDR。
如果不是,則進到步驟412按照現(xiàn)有的正常流程進行處理。通常,由DR負責(zé)向其他路由器轉(zhuǎn)發(fā)IGMP離開報文。
如果是,則進到步驟413向該端口發(fā)送多個IGMP指定組查詢報文,以查詢該端口連接的網(wǎng)絡(luò)中是否還有主機需要加入該組播組。
步驟414等待預(yù)定時間沒收到該組播組下的IGMP成員關(guān)系報告報文,從組播組表中刪除對應(yīng)表項。
例如三層交換機從vlan30的端口port1收到224.1.1.1的IGMP離開報文,需要往端口port1發(fā)送若干個IGMP指定組查詢報文,在一定時間內(nèi)沒收到224.1.1.1的IGMP成員關(guān)系報告報文,則將該表項從組播組表中刪除。若收到,則保留該表項。
可見,利用本發(fā)明,在圖1所示的網(wǎng)絡(luò)中,三層交換機可以控制組播流直接轉(zhuǎn)發(fā)到與其相連的主機上。
下面參照圖1所示網(wǎng)絡(luò),進一步說明本發(fā)明與現(xiàn)有技術(shù)的區(qū)別。
假如有一個組播轉(zhuǎn)發(fā)表項(1.1.1.1,224.1.1.1),其入接口為vlanifl0,此時L3Sw從vlan30的端口port1收到來自主機的IGMP成員關(guān)系報告(224.1.1.1)。
使用現(xiàn)有的技術(shù),由于Rtr為DR,所以需要由DR負責(zé)轉(zhuǎn)發(fā)組播流,IGMP成員關(guān)系報告從port1二層轉(zhuǎn)發(fā)到port2,Rtr收到IGMP成員關(guān)系報告后,向L3Sw發(fā)送PIM加入報文,于是就會出現(xiàn)前面提到的現(xiàn)有技術(shù)存在的問題a、如果vlanif40的網(wǎng)段地址比vlanif30的地址大,則從vlanif40接口往L3Sw發(fā)送PIM加入報文,LWSw則將vlanif40作為出接口加入到組播轉(zhuǎn)發(fā)表項(1.1.1.1,224.1.1.1)的出接口列表中去。于是L3Sw將組播流從vlanif40轉(zhuǎn)發(fā)給Rtr,Rtr再將組播流從vlanif30轉(zhuǎn)發(fā)給L3Sw,從L3Sw的vlan30的port2二層轉(zhuǎn)發(fā)給port1。
b、如果vlanif30的網(wǎng)段地址比vlanif40的地址大,則從vlanif30接口往L3Sw發(fā)送PIM加入報文,LWSw則將vlanif30作為出接口加入到組播轉(zhuǎn)發(fā)表項(1.1.1.1,224.1.1.1)的出接口列表中去。于是L3Sw將組播流從vlanif30的端口port2轉(zhuǎn)發(fā)給Rtr,也會從vlan30的port1轉(zhuǎn)發(fā)給主機。
利用本發(fā)明方案,L3Sw發(fā)現(xiàn)vlanif30是IGMP-NonDR接口,于是攔截了IGMP成員關(guān)系報告,自己直接作為出接口加入到組播轉(zhuǎn)發(fā)表項(1.1.1.1,224.1.1.1)的出接口列表中去。于是L3Sw將組播流從vlanif30的端口port1轉(zhuǎn)發(fā)給主機。Rtr則不會收到不必要的組播流。
本發(fā)明中對于報文的處理與標(biāo)準(zhǔn)協(xié)議相同,因此也不會帶來兼容性問題,可方便實現(xiàn)。
雖然通過實施例描繪了本發(fā)明,本領(lǐng)域普通技術(shù)人員知道,本發(fā)明有許多變形和變化而不脫離本發(fā)明的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本發(fā)明的精神。
權(quán)利要求
1.一種在三層交換機上實現(xiàn)組播轉(zhuǎn)發(fā)的方法,其特征在于,包括以下步驟A、當(dāng)三層交換機收到互聯(lián)網(wǎng)組管理協(xié)議IGMP成員關(guān)系報告報文時,檢查收到該報文的端口屬性;B、如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則當(dāng)三層交換機收到該端口下組播組的組播數(shù)據(jù)流后,通過該端口將組播數(shù)據(jù)流直接轉(zhuǎn)發(fā)出去。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法進一步包括C、如果所述端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則三層交換機禁止轉(zhuǎn)發(fā)該端口下組播組的IGMP成員關(guān)系報告報文和IGMP離開報文。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法進一步包括D、如果所述端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則三層交換機向連接三層設(shè)備的各端口分別發(fā)送一份對應(yīng)所述端口下組播組的IGMP離開報文。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括E、當(dāng)三層交換機收到IGMP離開報文時,檢查收到該報文的端口屬性;F、如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則向該端口發(fā)送至少一個IGMP指定組查詢報文。
5.根據(jù)權(quán)利要求1至4任一項所述的方法,其特征在于,所述步驟B包括B1、根據(jù)端口配置關(guān)系獲取收到IGMP成員關(guān)系報告報文的端口所屬的接口;B2、當(dāng)所述接口為其對應(yīng)組播組的組播轉(zhuǎn)發(fā)表項的反向路徑轉(zhuǎn)發(fā)RPF接口時,三層交換機將收到的所述端口下組播組的組播數(shù)據(jù)流在入虛擬局域網(wǎng)VLAN內(nèi)做二層轉(zhuǎn)發(fā);B3、否則,將所述接口作為其對應(yīng)組播組的組播轉(zhuǎn)發(fā)表項的出接口加入到組播轉(zhuǎn)發(fā)表中,三層交換機將收到的所述端口下組播組的組播數(shù)據(jù)流按照該組播轉(zhuǎn)發(fā)表進行三層轉(zhuǎn)發(fā)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在所述步驟A前還包括在三層交換機保存的組播組表中增加接口屬性字段。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在所述步驟B1和步驟B2之間還包括如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則在所述組播組表中增加對應(yīng)表項的同時,將其接口屬性填寫為“非指定路由器連接IGMP接口”;如果該端口是連接其所屬接口網(wǎng)段上指定路由器的端口,則在所述組播組表中增加對應(yīng)表項的同時,將其接口屬性填寫為“指定路由器連接IGMP接口”。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述方法進一步包括G、如果三層交換機在預(yù)定時間內(nèi)未收到該端口下組播組的IGMP成員關(guān)系報告報文,則刪除所述組播組表中的對應(yīng)表項。
9.一種在三層交換機上實現(xiàn)組播轉(zhuǎn)發(fā)的方法,其特征在于,包括以下步驟I.在三層交換機保存的組播組表中設(shè)置接口屬性;II.當(dāng)三層交換機收到互聯(lián)網(wǎng)組管理協(xié)議IGMP成員關(guān)系報告報文時,檢查收到該報文的端口的屬性;III.如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則當(dāng)三層交換機收到該端口下組播組的組播數(shù)據(jù)流后,通過該端口將組播數(shù)據(jù)流直接轉(zhuǎn)發(fā)出去。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,在所述步驟I中接口屬性按照以下標(biāo)準(zhǔn)進行設(shè)置如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,其接口屬性為“非指定路由器連接IGMP接口”;如果該端口是連接其所屬接口網(wǎng)段上指定路由器的端口,其接口屬性為“指定路由器連接IGMP接口”。
全文摘要
本發(fā)明公開了一種在三層交換機上實現(xiàn)組播轉(zhuǎn)發(fā)的方法,其特征在于,包括當(dāng)三層交換機收到與其相連主機發(fā)送的互聯(lián)網(wǎng)組管理協(xié)議IGMP成員關(guān)系報告報文時,檢查收到該報文的端口屬性;如果該端口不是連接其所屬接口網(wǎng)段上指定路由器的端口,則當(dāng)三層交換機收到該端口下組播組的組播數(shù)據(jù)流后,通過該端口將組播數(shù)據(jù)流直接轉(zhuǎn)發(fā)給所述主機。利用本發(fā)明,可以有效地節(jié)省帶寬消耗,提高組播流轉(zhuǎn)發(fā)效率。
文檔編號H04L29/06GK1777149SQ200510127649
公開日2006年5月24日 申請日期2005年12月6日 優(yōu)先權(quán)日2005年12月6日
發(fā)明者呂琳, 周迪 申請人:杭州華為三康技術(shù)有限公司