專利名稱:多端口虛擬局域網(wǎng)系統(tǒng)中的組播數(shù)據(jù)轉(zhuǎn)發(fā)方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及網(wǎng)絡(luò)通信技術(shù),特別涉及一種用于在多端口虛擬局域網(wǎng)(Vlan)系統(tǒng)中實(shí)現(xiàn)組播數(shù)據(jù)轉(zhuǎn)發(fā)的方法。
背景技術(shù):
傳統(tǒng)的互聯(lián)網(wǎng)應(yīng)用都是用點(diǎn)對點(diǎn)的IP傳輸(單播技術(shù)),而點(diǎn)對多點(diǎn)的IP傳輸(廣播技術(shù))只限于局域網(wǎng)內(nèi)部應(yīng)用,組播技術(shù)則是在廣域網(wǎng)內(nèi)實(shí)現(xiàn)點(diǎn)到多點(diǎn)的IP傳輸技術(shù)。
20世紀(jì)80年代,斯坦福大學(xué)的博士生Steve Deering開始了三層組播技術(shù)的研究并于1991年12月發(fā)表了其博士論文——《在一種數(shù)據(jù)報網(wǎng)絡(luò)里的組播》。在該論文中描述了組播組管理IGMP協(xié)議(互聯(lián)網(wǎng)組管理協(xié)議)和組播路由DVMRP協(xié)議(距離矢量組播路由協(xié)議)的基礎(chǔ),它成功地把組播技術(shù)推進(jìn)到IP層。關(guān)于IP組播技術(shù)的探索一直在進(jìn)行,在Deering博士的基礎(chǔ)上,人們陸續(xù)完成了PIM(協(xié)議無關(guān)組播協(xié)議)等組播路由協(xié)議,把組播協(xié)議推向整個互聯(lián)網(wǎng)。組播路由技術(shù)的基本思想是在離接收者最近的地方才復(fù)制組播數(shù)據(jù),所以可以大大節(jié)省大量重復(fù)數(shù)據(jù)傳輸時的網(wǎng)絡(luò)帶寬,因而越來越多的人相信,在今后的寬帶互聯(lián)網(wǎng)應(yīng)用中,組播技術(shù)將成為多媒體數(shù)據(jù)通信的主要路由協(xié)議之一。
另一方面,為了解決IP地址日益短缺的情況,人們在三層交換機(jī)上越來越傾向于使用多端口虛擬局域網(wǎng)的技術(shù),這樣就帶來一個不可避免的矛盾——原來的路由協(xié)議是基于單端口的路由器設(shè)計的,一個擁有IP地址的邏輯接口與實(shí)際物理端口是唯一對應(yīng)的,由于原來的路由協(xié)議沒有考慮到三層交換機(jī)下一個虛擬局域網(wǎng)邏輯接口可能要和多個物理端口相對應(yīng)的情況,因而必須對其進(jìn)行適當(dāng)修改來適應(yīng)這種變化,這一點(diǎn)對組播路由協(xié)議更為明顯。
與單播路由協(xié)議不同,當(dāng)收到一份數(shù)據(jù)報文后,組播路由協(xié)議不僅關(guān)心報文要向哪些接口轉(zhuǎn)發(fā),還要關(guān)心數(shù)據(jù)報文是否從正確的接口到來。當(dāng)數(shù)據(jù)報文是從錯誤的接口到來時,要觸發(fā)協(xié)議完成相應(yīng)的組播路由改變。在使用多端口虛擬局域網(wǎng)接口作為組播路由表項的入接口或出接口時,組播協(xié)議就必須考慮接口與端口的對應(yīng)關(guān)系,因為在組播協(xié)議中明確規(guī)定,組播數(shù)據(jù)不能向路由表項的入接口轉(zhuǎn)發(fā),故在入接口中包括多個物理端口的情況下,當(dāng)數(shù)據(jù)從其中的一個端口到來時,必須進(jìn)行特殊處理以向其他端口轉(zhuǎn)發(fā)數(shù)據(jù)。
目前主要有兩種技術(shù)方案來實(shí)現(xiàn)組播對多端口虛擬局域網(wǎng)的支持。第一種技術(shù)方案是采用多端口虛擬局域網(wǎng)內(nèi)各端口間二層組播數(shù)據(jù)和協(xié)議報文廣播。
圖1是多端口虛擬局域網(wǎng)內(nèi)各個端口間的二層組播數(shù)據(jù)和協(xié)議報文廣播的示意圖。如圖1所示,該技術(shù)把多端口虛擬局域網(wǎng)徹底看作一個Hub(集線器)使用,從任何端口收到的數(shù)據(jù)報文和協(xié)議報文都在其他端口廣播發(fā)送,因此,圖1中的兩種組網(wǎng)方式是等同的。由于組播協(xié)議本身能夠處理與Hub類似的共享網(wǎng)段的路由情況,所以這種方案的實(shí)現(xiàn)過程非常簡單,只需要在設(shè)備的數(shù)據(jù)平面做改動即可,原來的組播協(xié)議處理部分無需任何改動。這種方法簡單易用,但是它也存在著如下缺點(diǎn)1)對于網(wǎng)絡(luò)層次比較高的設(shè)備或容量比較大的設(shè)備,二層廣播性能比較差,且易造成廣播風(fēng)暴,大多數(shù)設(shè)備為了安全原因,都設(shè)置了廣播數(shù)據(jù)限流功能;2)由于數(shù)據(jù)在所有端口轉(zhuǎn)發(fā),因此帶來大量的無效數(shù)據(jù)流;3)二層數(shù)據(jù)廣播缺乏靈活的控制機(jī)制。
現(xiàn)有技術(shù)中第二種技術(shù)方案采用了使組播路由與端口相對應(yīng)的方法。該方案是通過對原有基于路由器的協(xié)議平臺做徹底的改造,這樣組播路由協(xié)議中每個路由表項對應(yīng)的就不再是三層邏輯接口,而是一個邏輯接口和物理端口的二元組,組播數(shù)據(jù)報文的轉(zhuǎn)發(fā)將根據(jù)這種基于端口的路由進(jìn)行,同時協(xié)議報文將負(fù)責(zé)維護(hù)端口與接口的對應(yīng)關(guān)系。采用組播路由與端口相對應(yīng)的方法解決多端口虛擬局域網(wǎng)下的組播路由問題是一個比較徹底的做法,但是它的適用環(huán)境有限。如果在原有的平臺上進(jìn)行改造升級,則需要對原來的協(xié)議體系進(jìn)行很大的修改,需要投入較高的成本。另外,由于協(xié)議本身的復(fù)雜性,所以這種修改所帶來的系統(tǒng)穩(wěn)定性風(fēng)險在多數(shù)情況下是不能夠被接受的。
發(fā)明內(nèi)容
因此,本發(fā)明就是針對現(xiàn)有技術(shù)中所存在的上述問題而做出的,其目的是提供一種多端口虛擬局域網(wǎng)系統(tǒng)中的組播數(shù)據(jù)轉(zhuǎn)發(fā)方法,該方法的中心思想是利用組播數(shù)據(jù)的三層轉(zhuǎn)發(fā)功能來模擬組播數(shù)據(jù)的二層廣播功能,從而通過在IP層上實(shí)現(xiàn)組播數(shù)據(jù)的轉(zhuǎn)發(fā)以提高轉(zhuǎn)發(fā)表項的可控能力。在經(jīng)過這樣的改造之后,就可使多端口虛擬局域網(wǎng)像一個處于IP層的虛擬組播數(shù)據(jù)可控集線器,它既能夠仿照共享網(wǎng)段的組播路由功能來實(shí)現(xiàn)多端口虛擬局域網(wǎng)對組播路由的支持,又能對同一接口內(nèi)不同端口之間的組播數(shù)據(jù)實(shí)現(xiàn)三層控制功能,提高了系統(tǒng)的業(yè)務(wù)控制能力和靈活性。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種多端口虛擬局域網(wǎng)系統(tǒng)中的組播數(shù)據(jù)轉(zhuǎn)發(fā)方法,該方法包括以下步驟1)當(dāng)有組播轉(zhuǎn)發(fā)表項需要創(chuàng)建時,由所述系統(tǒng)中的一個控制模塊從組播路由表中讀出所有的出接口數(shù)據(jù),并將這些接口組成一個報文的出接口集合;2)所述控制模塊查找出所述出接口集合中的各個出接口中所包含的端口,并將這些端口組成為一個報文轉(zhuǎn)發(fā)的出端口集合;3)所述控制模塊取出組播路由表項中的入接口中的所有端口,并將其中報文的入端口去除,把這些端口與步驟2)中取出的出接口中的端口進(jìn)行合并,以形成組播數(shù)據(jù)報文的轉(zhuǎn)發(fā)出端口集,并根據(jù)這些信息生成組播轉(zhuǎn)發(fā)表;以及4)所述控制模塊將上述組播轉(zhuǎn)發(fā)表項下發(fā)到微碼,用以指導(dǎo)數(shù)據(jù)的轉(zhuǎn)發(fā)或直接用于指導(dǎo)數(shù)據(jù)的轉(zhuǎn)發(fā)。
所述步驟2)進(jìn)一步包括從所述出端口集合中除去處于斷言(Assert)狀態(tài)的端口的步驟。
另外,在上述方法中,所述控制模塊為所述虛擬局域網(wǎng)系統(tǒng)中的轉(zhuǎn)發(fā)控制模塊。
本發(fā)明的有益效果在于,與按照端口實(shí)現(xiàn)組播路由的方法相比較,本發(fā)明處理簡單,不需要修改原來協(xié)議的處理流程,改動風(fēng)險小,特別適用與從現(xiàn)有路由器平臺移植組播路由功能的三層交換機(jī)使用。另外,與二層組播數(shù)據(jù)廣播實(shí)現(xiàn)方式相比較,該方法具有轉(zhuǎn)發(fā)性能好,避免多余組播數(shù)據(jù)流產(chǎn)生,防止了組播數(shù)據(jù)風(fēng)暴的產(chǎn)生,安全性、靈活性和可控制性好,從而使三層交換機(jī)能夠在IP層上提供更豐富的業(yè)務(wù)功能和控制手段。
附圖的簡要說明通過以下結(jié)合附圖做出的文字說明,本發(fā)明的上述目的、優(yōu)點(diǎn)及特征將變得更加清楚。在以下的附圖中
圖1是根據(jù)一個現(xiàn)有技術(shù)方案所述的多端口虛擬局域網(wǎng)內(nèi)各個端口間的二層組播數(shù)據(jù)和協(xié)議報文廣播的示意圖;圖2是常規(guī)組播轉(zhuǎn)發(fā)表項創(chuàng)建的流程示意圖;圖3是根據(jù)本發(fā)明一個實(shí)施例所述的組播轉(zhuǎn)發(fā)表項創(chuàng)建的流程示意圖;圖4的示意圖用于說明斷言過程;圖5是根據(jù)本發(fā)明另一個實(shí)施例所述的組播轉(zhuǎn)發(fā)表項創(chuàng)建的流程示意圖。
具體實(shí)施例方式
組播數(shù)據(jù)轉(zhuǎn)發(fā)是通過轉(zhuǎn)發(fā)控制部分創(chuàng)建轉(zhuǎn)發(fā)表項實(shí)現(xiàn)的。通過對常規(guī)的轉(zhuǎn)發(fā)表項創(chuàng)建流程進(jìn)行一些改進(jìn),就可以實(shí)現(xiàn)本發(fā)明的目的。為了便于對本發(fā)明的理解,有必要先對常規(guī)的創(chuàng)建流程進(jìn)行簡要說明。在常規(guī)的創(chuàng)建流程中,轉(zhuǎn)發(fā)控制模塊僅查詢路由表項的出接口中的端口,把出接口的端口添加到組播數(shù)據(jù)的轉(zhuǎn)發(fā)控制表項中。圖2是常規(guī)組播轉(zhuǎn)發(fā)表項創(chuàng)建的流程示意圖。由于這個流程對于本領(lǐng)域的普通技術(shù)人員來說是公知的,因此不再贅述。
而在本發(fā)明中,為了實(shí)現(xiàn)多端口虛擬局域網(wǎng)的組播數(shù)據(jù)轉(zhuǎn)發(fā),故此對數(shù)據(jù)的轉(zhuǎn)發(fā)制定了如下基本原則1)當(dāng)三層交換機(jī)收到一份組播數(shù)據(jù)的時候,它將查找組播路由表,如果找到對應(yīng)的路由表項,則先向該路由表項中的入接口內(nèi)除入端口以外的其他端口都轉(zhuǎn)發(fā)一份該報文,然后遍歷該路由表項的出接口,向出接口中的所有需要該組播數(shù)據(jù)的端口都轉(zhuǎn)發(fā)一份;2)如果出接口中某端口存在斷言狀態(tài)(Assert狀態(tài),以下均稱為端口Assert狀態(tài)),則在向出接口中的端口轉(zhuǎn)發(fā)數(shù)據(jù)時排除該端口。注意,這里所述的斷言狀態(tài)是組播PIM協(xié)議中定義的一種特殊狀態(tài),它用來保證在共享網(wǎng)段中只有一個上游路由器會向下游路由轉(zhuǎn)發(fā)數(shù)據(jù)。組播PIM協(xié)議中的斷言狀態(tài)僅發(fā)生在三層接口上,但本發(fā)明中對該功能做了引申,在端口上也引入了Assert狀態(tài),即,處在Assert狀態(tài)的端口不向下游轉(zhuǎn)發(fā)組播數(shù)據(jù);3)為了避免不必要的數(shù)據(jù)轉(zhuǎn)發(fā),組播數(shù)據(jù)只向有PIM協(xié)議鄰居路由器的端口轉(zhuǎn)發(fā),或者有IGMP(Internet組管理協(xié)議)加入的組的端口轉(zhuǎn)發(fā)。
因為協(xié)議報文相對較少,為簡化處理,故組播協(xié)議報文的轉(zhuǎn)發(fā)原則是在同一虛擬局域網(wǎng)內(nèi)各端口廣播發(fā)送。
為了實(shí)現(xiàn)以上數(shù)據(jù)轉(zhuǎn)發(fā)原則,在路由表項的入接口模仿二層數(shù)據(jù)轉(zhuǎn)發(fā)功能,故本發(fā)明在圖2所示流程上增加了一個處理流程。圖3是根據(jù)本發(fā)明一個實(shí)施例所述的組播轉(zhuǎn)發(fā)表項創(chuàng)建過程的流程示意圖。如圖3所示,當(dāng)組播路由表創(chuàng)建或更新后,需要立即更新組播轉(zhuǎn)發(fā)表,以保證組播數(shù)據(jù)能按照更新后的組播路由表來完成正確的轉(zhuǎn)發(fā)。具體的組播轉(zhuǎn)發(fā)表更新過程如下首先,由三層交換設(shè)備的轉(zhuǎn)發(fā)控制模塊從組播路由表中讀出所有的出接口數(shù)據(jù),把這些接口組成一個報文的出接口集合。然后,轉(zhuǎn)發(fā)控制模塊根據(jù)上述出接口集合,查找接口中包含的端口(注意每個出接口中可能包括多個端口),并把這些端口組成為一個報文轉(zhuǎn)發(fā)的出端口集合。接下來,轉(zhuǎn)發(fā)控制模塊取出組播路由表項中的入接口中所有端口,并把其中報文的入端口去除,把這些端口與前面取出的入接口中的端口進(jìn)行合并,以形成組播數(shù)據(jù)報文的轉(zhuǎn)發(fā)出端口集,并根據(jù)這些信息生成組播轉(zhuǎn)發(fā)表。例如,假設(shè)接口A包含端口1、2、3,當(dāng)組播數(shù)據(jù)從端口1到達(dá)三層交換機(jī)的時候,轉(zhuǎn)發(fā)控制模塊把入接口中的三個端口1、2和3取出,然后把入端口1去掉,把剩余的端口2、3添加到組播轉(zhuǎn)發(fā)表的下游中,從而創(chuàng)建出一個新的組播轉(zhuǎn)發(fā)表。在組播轉(zhuǎn)發(fā)表生成之后,轉(zhuǎn)發(fā)控制模塊將把該組播轉(zhuǎn)發(fā)表項下發(fā)到微碼中,用以指導(dǎo)數(shù)據(jù)的轉(zhuǎn)發(fā)或直接使用該轉(zhuǎn)發(fā)表指導(dǎo)數(shù)據(jù)轉(zhuǎn)發(fā)。
簡單的實(shí)現(xiàn)組播數(shù)據(jù)向入接口內(nèi)其他端口轉(zhuǎn)發(fā)并不能完全實(shí)現(xiàn)對多端口虛擬局域網(wǎng)下組播路由的所有功能支持,組播PIM路由協(xié)議中的Assert過程需要特殊處理過程。圖4的示意圖用于說明斷言過程。如圖4所示,交換機(jī)C與B相連的端口和與組G2相連的端口同在一個虛擬局域網(wǎng)中。當(dāng)組播數(shù)據(jù)從源S發(fā)送后,交換機(jī)C上可能收到來自B和A的兩份重復(fù)的數(shù)據(jù),故在B與C相連的接口上會發(fā)生Assert競選過程,以保證交換機(jī)C只接受一份數(shù)據(jù)。當(dāng)該C上的虛擬局域網(wǎng)在Assert競選中失敗后,要剪枝下游接口,故交換機(jī)C在Assert失敗后,G2就無法收到數(shù)據(jù)。
圖5是根據(jù)本發(fā)明另一個實(shí)施例所述的組播轉(zhuǎn)發(fā)表項創(chuàng)建的流程示意圖。如圖5所示,為了保證Assert剪枝過程中組播數(shù)據(jù)的正常轉(zhuǎn)發(fā),我們需要對原協(xié)議做必要的修改,在原協(xié)議中規(guī)定“如果接口在Assert過程中競選失敗,要向上發(fā)送剪枝報文,剪除該出接口”,但由于該方案是用三層數(shù)據(jù)轉(zhuǎn)發(fā)功能模擬的二層數(shù)據(jù)廣播功能,故需要在Assert過程中實(shí)現(xiàn)有限的端口剪枝功能,在發(fā)生Assert剪枝后并不刪除Assert失敗的路由表項下游端口,而是記錄剪枝端口的信息,在下發(fā)轉(zhuǎn)發(fā)表項的時候把Assert端口去除,保證數(shù)據(jù)不再向發(fā)生Assert剪枝的端口轉(zhuǎn)發(fā),我們把接口的這種狀態(tài)稱為“端口Assert狀態(tài)”。因此,如圖3所示,在存在端口Assert狀態(tài)的情況下,組播轉(zhuǎn)發(fā)表項的創(chuàng)建流程如下首先,利用三層交換設(shè)備的轉(zhuǎn)發(fā)控制模塊從組播路由表中讀出所有的出接口數(shù)據(jù),并將這些接口組成一個報文的出接口集合。然后,轉(zhuǎn)發(fā)控制模塊然后根據(jù)出接口集合,查找接口中包含的端口(每個出接口中可能包括多個端口),把這些端口組成一個報文轉(zhuǎn)發(fā)的出端口集合,然后從這些出端口接口中查找那些處在端口Assert狀態(tài)的端口并將其去除。之后,轉(zhuǎn)發(fā)控制模塊取出組播路由表項中的入接口中所有端口,并把其中報文的入端口去除,把這些端口與前面取出的入接口中的端口進(jìn)行合并,以形成組播數(shù)據(jù)報文的轉(zhuǎn)發(fā)出端口集,并根據(jù)這些信息生成組播轉(zhuǎn)發(fā)表。例如,假設(shè)接口B在組播轉(zhuǎn)發(fā)表的下游,其中包括端口1、2、3這三個端口,當(dāng)端口2發(fā)生Assert競選并失敗,這樣轉(zhuǎn)發(fā)表中就把端口2刪除,只保留端口1和3。而在常規(guī)情況下,如果沒有端口Assert功能,那么在發(fā)生Assert的時候,整個接口B將被從轉(zhuǎn)發(fā)表中刪除,這樣原來連接在端口1和3下的用戶將都不能接收組播數(shù)據(jù)。
最后,轉(zhuǎn)發(fā)控制模塊將組播轉(zhuǎn)發(fā)表項下發(fā)到微碼中,用以指導(dǎo)數(shù)據(jù)的轉(zhuǎn)發(fā)或直接使用轉(zhuǎn)發(fā)表指導(dǎo)數(shù)據(jù)轉(zhuǎn)發(fā)。
應(yīng)該注意的是,雖然以上對本發(fā)明的說明是參考其具體實(shí)施例進(jìn)行的。但是,本發(fā)明領(lǐng)域的普通技術(shù)人員可以理解,在不背離本發(fā)明的精神和范圍的情況下,可以對其做出各種修改和變換。而這些修改和變換都涵蓋于由附帶權(quán)利要求所定義的本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種多端口虛擬局域網(wǎng)系統(tǒng)中的組播數(shù)據(jù)轉(zhuǎn)發(fā)方法,該方法包括以下步驟1)當(dāng)有組播轉(zhuǎn)發(fā)表項需要創(chuàng)建時,由所述系統(tǒng)中的一個控制模塊從組播路由表中讀出所有的出接口數(shù)據(jù),并將這些接口組成一個報文的出接口集合;2)所述控制模塊查找出所述出接口集合中的各個出接口中所包含的端口,并將這些端口組成為一個報文轉(zhuǎn)發(fā)的出端口集合;3)所述控制模塊取出組播路由表項中的入接口中的所有端口,并將其中報文的入端口去除,把這些端口與步驟2)中取出的出接口中的端口進(jìn)行合并,以形成組播數(shù)據(jù)報文的轉(zhuǎn)發(fā)出端口集,并根據(jù)這些信息生成組播轉(zhuǎn)發(fā)表;以及4)所述控制模塊將上述組播轉(zhuǎn)發(fā)表項下發(fā)到微碼,用以指導(dǎo)數(shù)據(jù)的轉(zhuǎn)發(fā)或直接用于指導(dǎo)數(shù)據(jù)的轉(zhuǎn)發(fā)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟2)進(jìn)一步包括從所述出端口集合中除去處于斷言(Assert)狀態(tài)的出端口的步驟。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述控制模塊為所述系統(tǒng)中的三層交換機(jī)的轉(zhuǎn)發(fā)控制模塊。
全文摘要
本發(fā)明公開了一種多端口虛擬局域網(wǎng)系統(tǒng)中的組播數(shù)據(jù)轉(zhuǎn)發(fā)方法,該方法的中心思想是利用組播數(shù)據(jù)的三層轉(zhuǎn)發(fā)功能來模擬組播數(shù)據(jù)的二層廣播功能,進(jìn)而通過在IP層上實(shí)現(xiàn)組播數(shù)據(jù)的轉(zhuǎn)發(fā)以提高轉(zhuǎn)發(fā)表項的可控能力。在經(jīng)過這樣的改造之后,就可使多端口虛擬局域網(wǎng)像一個處于IP層的虛擬組播數(shù)據(jù)可控集線器,它既能夠仿照共享網(wǎng)段的組播路由功能來實(shí)現(xiàn)多端口虛擬局域網(wǎng)對組播路由的支持,又能對同一接口內(nèi)不同端口之間的組播數(shù)據(jù)實(shí)現(xiàn)三層控制功能,從而提高了系統(tǒng)的業(yè)務(wù)控制能力和靈活性。
文檔編號H04L12/28GK1571379SQ03146670
公開日2005年1月26日 申請日期2003年7月11日 優(yōu)先權(quán)日2003年7月11日
發(fā)明者趙文鵬 申請人:華為技術(shù)有限公司