專利名稱::管理組播組的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)據(jù)網(wǎng)絡(luò)中的組播
技術(shù)領(lǐng)域:
。更具體地說,本發(fā)明涉及管理數(shù)據(jù)網(wǎng)絡(luò)中的組播流量的方法,在所述數(shù)據(jù)網(wǎng)絡(luò)中,源發(fā)送以至少一個組播組為目的地的數(shù)據(jù),多個主機(jī)從路由器接收由在所述組播組中進(jìn)行發(fā)送的一個或幾個所述源發(fā)送的數(shù)據(jù),所述主機(jī)和所述路由器借助允許組播主機(jī)-路由器通信的通信協(xié)議,比如IGMP協(xié)議(因特網(wǎng)組管理協(xié)議)或MLD(組播偵聽者發(fā)現(xiàn))協(xié)議相互通信,通過組播主機(jī)-路由器通信,對于所述組播組,所述主機(jī)能夠定義包含源列表和排除源列表,所述包含源列表指示所述主機(jī)希望接收由所述列表的源發(fā)送的數(shù)據(jù),所述排除源列表指示所述主機(jī)希望接收來自所述組播組的除所述列表的源之外的所有源的流量。本發(fā)明還涉及應(yīng)用所述方法的設(shè)備。
背景技術(shù):
:組播技術(shù)使得能夠通過數(shù)據(jù)網(wǎng)絡(luò),從單個源向許多接收器發(fā)送數(shù)據(jù),而不必建立單播通信,即,源和每個接收器之間的一對一的單獨(dú)通信。為此,源以數(shù)據(jù)分組形式向與組播組相關(guān)的單一地址發(fā)送數(shù)據(jù),有興趣成為所述數(shù)據(jù)發(fā)送的接收器的設(shè)備能夠訂閱所述組播組。稱為組播地址,也稱為組播組地址的該地址是在為組播應(yīng)用保留的范圍內(nèi)選擇的IP(網(wǎng)際協(xié)議)地址。由源發(fā)給組播地址的數(shù)據(jù)分組隨后在不同的網(wǎng)絡(luò)路由器中被復(fù)制,以致它們能夠到達(dá)加入組播組的接收器。組播組中的數(shù)據(jù)發(fā)送接收器通常是借助代理或路由器與數(shù)據(jù)網(wǎng)絡(luò)連接的設(shè)備。下面,將使用常見的術(shù)語"主機(jī)"來表示所述設(shè)備。例如,主機(jī)可以是計(jì)算機(jī)或者與電視機(jī)連接的機(jī)頂盒。當(dāng)主機(jī)想要接收由組播組的一個或幾個源發(fā)送的信息時,它向最近的路由器,或者向中間代理發(fā)送訂閱所述組播組的訂閱消息,以致路由器將由組播組的源發(fā)送,并通過數(shù)據(jù)網(wǎng)絡(luò)到達(dá)的數(shù)據(jù)傳送給所述主機(jī)。同樣地,當(dāng)主機(jī)希望停止接收組播組中的數(shù)據(jù)發(fā)送時,它向路由器或者向代理發(fā)送停止接收數(shù)據(jù)發(fā)送的取消訂閱消息。在主機(jī)和最近的路由器之間交換的管理組播組的成員資格的消息按照路由器是利用IP協(xié)議(網(wǎng)際協(xié)議)的版本4(IPv4)還是版本6(IPv6),分別使用IGMP協(xié)議(因特網(wǎng)組管理協(xié)議)或者M(jìn)LD(組播偵聽者發(fā)現(xiàn))協(xié)議。當(dāng)在主機(jī)和路由器之間存在代理時,該代理也使用IGMP/MLD協(xié)議與主機(jī)、最近的路由器或者其它中間代理交換組播組成員資格消息。在這些情況下,該代理能夠從不同的主機(jī)接收訂閱或者取消訂閱組播組的請求,該代理組裝所述請求,從而減少它發(fā)給路由器的IGMP/MLD消息流量。另外,路由器相互交換信息,以便定義允許高效地把數(shù)據(jù)從源路由到已訂閱組播組的主機(jī)的路由。為此,路由器使用特定的協(xié)議,包括眾所周知的PIM-SM(協(xié)議獨(dú)立組播_稀疏模式)??傊?,路由器以IGMP/MLD消息的形式,從主機(jī)接收指定它們想要從哪些組播組接收流量的信息,并且它們借助例如PM-SM協(xié)議與其它路由器通信,以便設(shè)定把主機(jī)請求的流量傳送到這種主機(jī)的路由。所有提及的協(xié)議都由因特網(wǎng)工程任務(wù)組(IETF)定義和文檔化。目前使用的IGMP協(xié)議版本是在由IETF在線公布的RFC3376規(guī)范(B.Cain等,EngineeringTaskForce,NetworkWorkingGroup,RequestforComments3376,October2002;目前可從因特網(wǎng)地址http:〃tools.ietf.org/html/rfc3376獲得)中描述的IGMPv3。就MDL協(xié)議來說,目前使用的版本是在由IETF在線公布的RFC3810規(guī)范(R.Vida等,EngineeringTaskForce,NetworkWorkingGroup,RequestforComments3810,June2004;目前可從因特網(wǎng)地址http:〃tools.ietf.org/html/rfc3810獲得)中描述的MLDv2。在由IETF在線公布的RFC4605規(guī)范(B.Fenner等,EngineeringTaskForce,NetworkWorkingG麗p,RequestforComments4605,August2006;目前可從因特網(wǎng)地址http:〃tools.ietf.org/html/rfc4605獲得)中,描述了使用IGMP/MLD協(xié)議的IGMP代理的操作。在由IETF在線公布的RFC4601規(guī)范(B.Fenner等,EngineeringTaskForce,NetworkWorkingG麗p,RequestforComments4601,August2006;目前可從因特網(wǎng)地址http:〃tools.ietf.org/html/rfc4601獲得)中,描述了用于路由器之間的通信的PM-SM協(xié)議。最初實(shí)現(xiàn)組播技術(shù)主要是為了應(yīng)用于多對多通信模式,稱為ASM(任意源組播),其中許多用戶相互通信,他們中的任意一個能夠發(fā)送數(shù)據(jù),也能夠從每個其它用戶接收數(shù)據(jù)。典型的ASM應(yīng)用是借助因特網(wǎng)的多方呼叫。隨后實(shí)現(xiàn)組播技術(shù)是為了應(yīng)用于一對多通信模式,稱為SSM(特定源組播),其中單一源為許多接收器發(fā)送數(shù)據(jù)。借助因特網(wǎng)的無線電廣播和電視是SSM應(yīng)用。這是SSM目前非常引入注意的原因。在IGMP協(xié)議的早期版本中,主機(jī)不能選擇組播組內(nèi)它不希望訂閱的數(shù)據(jù)發(fā)送源,相反,主機(jī)只能關(guān)于所有源訂閱或取消訂閱組播組。主機(jī)發(fā)給路由器的消息非常簡單從組播組G接收流量的加入Join(G)和停止從組播組G接收流量的離開Leave(G)。于是,IGMP協(xié)議的早期版本不允許SSM。在IGMP協(xié)議的IGMPv3版本中提出了主機(jī)可在組播組內(nèi)選擇源的可能性,以允許SSM。為此,主機(jī)可發(fā)送兩種IGMP消息-INCLUDE(包含)消息,由指示主機(jī)希望從其接收數(shù)據(jù)發(fā)送的源IP地址組成。按照RFC3376規(guī)范的術(shù)語學(xué),這些被包含源的IP地址被稱為INCLUDE源。-EXCLUDE(排除)消息,由指示主機(jī)不希望從其接收數(shù)據(jù)發(fā)送的源IP地址組成。這種情況下,認(rèn)為主機(jī)希望接收由除在消息中排除地指示的源之外的所有源發(fā)送的數(shù)據(jù)。另外,按照RFC3376規(guī)范的術(shù)語學(xué),這些被排除源的IP地址被稱為EXCLUDE源。為了節(jié)約存儲器、數(shù)據(jù)流量或者由于其它原因,在IGMPv3版本中決定每個網(wǎng)絡(luò)接口和組播組只按照下述兩種模式之一工作,能夠從一種模式切換到另一種模式其中網(wǎng)絡(luò)接口定義INCLUDE源列表的INCLUDE模式,或者其中網(wǎng)絡(luò)接口定義EXCLUDE源列表的EXCLUDE模式。網(wǎng)絡(luò)接口可接收對每個組播組G1的幾個不同請求。對于相同的組播組,每個請求包含INCLUDE源列表或者EXCLUDE源列表。為了解決這種情況,并保持每個網(wǎng)絡(luò)接口只能按照INCLUDE模式或EXCLUDE模式工作的限制,IGMPv3協(xié)議規(guī)定網(wǎng)絡(luò)接口必須應(yīng)用下述規(guī)則規(guī)則1.如果組播組Gl的任意數(shù)據(jù)源是EXCLUDE,那么對于組播組Gl,網(wǎng)絡(luò)接口按EXCLUDE模式工作,網(wǎng)絡(luò)接口的源列表是EXCLUDE源列表減去INCLUDE源列表的交集。規(guī)則2.如果所有源都是INCLUDE源,那么對于組播組Gl,網(wǎng)絡(luò)接口按INCLUDE模式工作,網(wǎng)絡(luò)接口的源列表是所有INCLUDE源的并集。下面根據(jù)本發(fā)明的幾個實(shí)施例的描述,顯然這些規(guī)則使通信顯著變復(fù)雜。在ASM組播中,當(dāng)主機(jī)希望從特定的組播組G接收流量時,必須解決下述技術(shù)問題主機(jī)只知道組播組G的地址,不知道組播組G的正在發(fā)送數(shù)據(jù)的源IP地址。存在路由器之間的以不同方式解決該問題的不同組播通信協(xié)議。目前,主要應(yīng)用PIM-SM協(xié)議,它通過指定稱為Rendez-vousPoint的路由器(下面稱為RP路由器)作為負(fù)責(zé)了解單一組播域的所有源(使用相同RP路由器的路由器組)的路由器,來解決該問題。為了找出源IP地址,每個路由器與RP路由器建立第一組播通信,以致RP路由器向其發(fā)送所請求的組播流量。當(dāng)路由器收到第一組播流量數(shù)據(jù)時,它發(fā)現(xiàn)源IP地址。隨后,最后的路由器,即直接從主機(jī)接收IGMP消息的路由器設(shè)法通過使用SPT樹(最短路徑樹)直接從源接收數(shù)據(jù),所述SPT樹建立通過網(wǎng)絡(luò)的最短路徑,稱為SPT路徑。當(dāng)路由器開始既通過RP路由器又直接通過SPT路徑以副本形式接收數(shù)據(jù)時,它切斷與RP路由器的通信,只保持通過SPT路徑的直接通信。在SSM中,并不存在找出組播組的源IP地址的問題,因?yàn)檫x擇希望從其接收組播流量的源的是用戶。于是,主機(jī)能夠向路由器或者向代理指示源IP地址。從而,在SSM中能夠消除ASM特有的許多技術(shù)復(fù)雜性。特別地,能夠消除與查明源IP地址相關(guān)的技術(shù)復(fù)雜性。例如,在SSM中,不必使用RP路由器,因?yàn)槁酚善髂軌蛑涝碔P地址,當(dāng)主機(jī)訂閱組播組時,主機(jī)指出所述源IP地址。于是,在SSM中,能夠應(yīng)用與目前使用的算法相比更高效的算法。前面提及的關(guān)于IGMPv3協(xié)議的規(guī)則使得不能利用SSM系統(tǒng)的這些優(yōu)點(diǎn)。當(dāng)網(wǎng)絡(luò)接口按EXCLUDE模式工作時,它不知道源IP地址,于是被迫通過RP路由器查找所述IP地址,如前關(guān)于ASM所述,缺點(diǎn)在于ASM的路由過程更復(fù)雜。IETF最近公布了一種新的提案,該提案修改IGMP協(xié)議和MDL協(xié)議的IGMPv3和MLDv2版本規(guī)范,以設(shè)法解決上面提及的缺陷,在由IETF在線公布的RFC4604規(guī)范(H.Holbrook等,EngineeringTaskForce,NetworkWorkingGroup,RequestforComments4604,August2006;目前可從因特網(wǎng)地址http:〃tools.ietf.org/html/rfc4604獲得)中,描述了該提案。提出的修改主要包括為SSM組播地址保留一定的范圍,并禁止SSM組播系統(tǒng)中的主機(jī)發(fā)送EXCLUDE消息。這種限制不必要地對SSM的充分發(fā)展設(shè)置障礙,因?yàn)樗怪鳈C(jī)不能偵聽相同組播組內(nèi)的其它新的源。已知目的在于改進(jìn)組播通信的許多專利或?qū)@暾垺?yīng)指出下述專利或?qū)@暾圲S6434622B1,US6785294B1,US6977891B1,US2003/0067917A1,US2005/0207354A1,US2006/0120368,US2006/0182109A1和W02006/001803A1。不過,它們都沒有解決上面提及的問題。
發(fā)明內(nèi)容本發(fā)明的主要目的是提供一種管理數(shù)據(jù)網(wǎng)絡(luò)中的組播通信,尤其是適用于SSM通信的改進(jìn)系統(tǒng)。本發(fā)明的一個目的是提高數(shù)據(jù)發(fā)送源和請求接收所述數(shù)據(jù)發(fā)送的主機(jī)之間的路由效率。本發(fā)明的另一個目的在于通過利用現(xiàn)有協(xié)議作為基礎(chǔ),并按照與這些現(xiàn)有協(xié)議的早期版本兼容的方式,以改進(jìn)的組播主機(jī)_路由器通信協(xié)議的形式實(shí)現(xiàn)本發(fā)明。為此,提出了一種管理在最初指出的那種數(shù)據(jù)網(wǎng)絡(luò)中的組播流量的方法,其特征在于按照允許組播主機(jī)_路由器通信的所述通信協(xié)議_對于每個組播組和網(wǎng)絡(luò)接口,主機(jī)保存兩個獨(dú)立的記錄含有包含源列表的包含源記錄,和含有排除源列表的排除源記錄;-每個主機(jī)的網(wǎng)絡(luò)接口向所述路由器發(fā)送消息,所述消息包含關(guān)于單一組播組的所述主機(jī)的包含源記錄的源列表的信息,和/或所述主機(jī)的排除源記錄的源列表的信息;-對于每個組播組,路由器保存兩個獨(dú)立的記錄含有包含源列表的信息的包含源記錄,和含有排除源列表的信息的排除源記錄;-當(dāng)所述路由器通過其網(wǎng)絡(luò)接口從主機(jī)收到含有關(guān)于包含源列表的信息,和/或關(guān)于排除源列表的信息的消息時,對每個組播組,所述路由器更新它的包含源記錄和/或它的排除源記錄。本發(fā)明設(shè)想每個主機(jī)的網(wǎng)絡(luò)接口發(fā)給所述路由器的所述消息是含有所述主機(jī)的包含源記錄的源列表和所述主機(jī)的排除源記錄的源列表的狀態(tài)消息。本發(fā)明還設(shè)想每個主機(jī)的網(wǎng)絡(luò)接口發(fā)給所述路由器的所述消息是當(dāng)所述主機(jī)檢測到它的包含源記錄的變化,或者它的排除源記錄的變化時,發(fā)送的狀態(tài)消息的變化,狀態(tài)消息的所述變化包含每個組播組的一個或兩個數(shù)據(jù)塊,其中每個所述數(shù)據(jù)塊含有和包含源記錄的源列表的修改有關(guān)的信息,或者和排除源記錄的源列表的修改有關(guān)的信息,其中每個所述數(shù)據(jù)塊包含指示該數(shù)據(jù)塊是否與包含源列表的修改,或者與排除源列表的修改相關(guān)的字段。有利的是,路由器使用包含在它接收的所述消息中的包含源列表的信息來請求所述包含源發(fā)送的數(shù)據(jù)流量。當(dāng)網(wǎng)絡(luò)接口是主機(jī)的網(wǎng)絡(luò)接口時,為使用所述網(wǎng)絡(luò)接口的每個套接字和每個組播組,保持包含源記錄和排除源記錄,為所述網(wǎng)絡(luò)接口保持分別根據(jù)套接字的所述包含源記錄的內(nèi)容和根據(jù)套接字的所述排除源記錄更新的包含源記錄和排除源記錄。在一個有利的實(shí)施例中,到達(dá)路由器的網(wǎng)絡(luò)接口的所述狀態(tài)消息包含和為了建立從所述包含源到所述路由器的路由樹,所述路由器必須應(yīng)用的方法有關(guān)的指令。最好,為了把所述指令包含在狀態(tài)消息中,所述狀態(tài)消息指示在為組播地址保留的范圍之外的組播地址;路由器檢測到指示的組播地址在范圍之外,認(rèn)為所述組播地址包含所述指令,并讀取包含在所述組播地址中的呈數(shù)字代碼形式的所述指令。路由器和主機(jī)之間的通信協(xié)議最好是某一版本的IGMP協(xié)議(因特網(wǎng)組管理協(xié)議)或MLD(組播偵聽者發(fā)現(xiàn))協(xié)議,其中由網(wǎng)絡(luò)接口或者由設(shè)備接口發(fā)送的狀態(tài)消息能夠把包含源列表和排除源列表包含在同一消息中。本發(fā)明還涉及一種與按照本發(fā)明的方法相適合的網(wǎng)絡(luò)設(shè)備,所述網(wǎng)絡(luò)設(shè)備包含網(wǎng)絡(luò)接口,并且適合于在所述主機(jī)和所述路由器之間的交換線路中工作,其特征在于它保存可執(zhí)行指令,所述可執(zhí)行指令用于-為每個組播組,保持包含源記錄和排除源記錄;-向朝向所述路由器的附近網(wǎng)絡(luò)接口發(fā)送消息,所述消息包含關(guān)于一個組播組的、所述包含源記錄的源列表的信息和/或所述排除源記錄的源列表的信息;-當(dāng)所述網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)接口從另一個網(wǎng)絡(luò)接口收到含有關(guān)于包含源列表的信息,和/或關(guān)于排除源列表的信息的消息時,對每個組播組,更新所述包含源記錄和/或所述排除源記錄。本發(fā)明還涉及一種與按照本發(fā)明的方法相適合的設(shè)備,所述設(shè)備包含網(wǎng)絡(luò)接口,并且適合于起主機(jī)作用,其特征在于它保存可執(zhí)行指令,所述可執(zhí)行指令用于為使用所述網(wǎng)絡(luò)接口的每個套接字和為每個組播組,保持包含源記錄和排除源記錄,為所述網(wǎng)絡(luò)接口保持分別根據(jù)套接字的所述包含源記錄的內(nèi)容和根據(jù)套接字的所述排除源記錄更新的包含源記錄和排除源記錄。本發(fā)明還涉及一種與按照本發(fā)明的方法相適合的路由器,其特征在于它保存可執(zhí)行指令,所述可執(zhí)行指令用于_為每個組播組保持兩個獨(dú)立的記錄包含源記錄和排除源記錄;禾口-當(dāng)所述路由器通過其網(wǎng)絡(luò)接口收到含有關(guān)于包含源列表的信息,和/或關(guān)于排除源列表的信息的消息時,對每個組播組,更新所述包含源記錄和/或所述排除源記錄。所述路由器最好使用包含在路由器接收的所述消息中的包含源列表的信息向其它路由器請求由所述包含源發(fā)送的數(shù)據(jù)流量。為了請求由所述包含源發(fā)送的所述數(shù)據(jù)流量,所述路由器最好使用PIM-SM(協(xié)議獨(dú)立組播-稀疏模式)協(xié)議。在一個優(yōu)選實(shí)施例中,當(dāng)收到告知主機(jī)不再希望接收來自特定組播組和特定包含源的流量的消息時,所述路由器檢查是否存在所述組播組的排除源記錄,如果所述記錄存在,并且不包含和所述包含源具有相同IP地址的排除源,那么所述路由器繼續(xù)傳送所述特定組播組和所述特定包含源的所述流量,而不發(fā)送IGMP協(xié)議中的Group-And-SourceSpecific查詢(組和源特定查詢)式消息以檢查是否存在仍然希望接收所述流量的另一個主機(jī)。另外在一個優(yōu)選實(shí)施例中,當(dāng)收到更新排除源記錄的信息的消息時,其中所述消息請求封鎖來自特定源和組播組的流量,所述路由器檢查是否存在所述組播組的包含源記錄,如果所述記錄存在,并且包含和所述消息請求封鎖的源具有相同IP地址的包含源,那么所述路由器繼續(xù)傳送所述特定組播組和所述特定包含源的所述流量,而不發(fā)送IGMP協(xié)議中的Group-And-SourceSpecific查詢式消息以檢查是否存在仍然希望接收所述流量的另一個主機(jī)。在下面的結(jié)合附圖描述本發(fā)明的優(yōu)選實(shí)施例的說明中,能夠了解本發(fā)明的其它優(yōu)點(diǎn)和特征,所述說明不是對本發(fā)明的限制。附圖中圖1表示數(shù)據(jù)網(wǎng)絡(luò)中的組播系統(tǒng)的基本例子;圖2表示數(shù)據(jù)網(wǎng)絡(luò)中的組播系統(tǒng)的更詳細(xì)例子;圖3表示在IGMPv3協(xié)議中,在IGMPv3協(xié)議和在按照本發(fā)明的改進(jìn)的IGMP協(xié)議這兩者中,由路由器發(fā)給主機(jī)的MembershipQuery(成員資格查詢)消息的格式;圖4表示在IGMPv3協(xié)議和在按照本發(fā)明的改進(jìn)的IGMP協(xié)議這兩者中,由主機(jī)發(fā)給路由器的MembershipR印ort(成員資格報(bào)告)消息的格式;圖5表示在IGMPv3協(xié)議中,包含在MembershipQuery消息或者M(jìn)embershipR印ort消息中的GroupRecord(組記錄)數(shù)據(jù)塊的內(nèi)部格式;圖6表示當(dāng)應(yīng)用按照本發(fā)明的改進(jìn)的IGMP協(xié)議時,與圖2中的系統(tǒng)中由DSLAM240發(fā)給路由器260的消息對應(yīng)的MembershipR印ort消息的格式。具體實(shí)施例方式圖l表示數(shù)據(jù)網(wǎng)絡(luò)中的組播系統(tǒng)的基本例子。在本例中,三個主機(jī)101、102、103通過CPE104、105(CPE:用戶駐地設(shè)備)與數(shù)據(jù)網(wǎng)絡(luò)連接。CPE是位于用戶接入線路一端的用于連接網(wǎng)絡(luò)的終端,它例如借助DSL(數(shù)據(jù)用戶線路)調(diào)制解調(diào)器通信。主機(jī)101與用戶線路的CPE104連接,而兩個主機(jī)102和103與另一條用戶線路的另一個CPE105連接。CPE104U05與DSLAM106(DSLAM:數(shù)字用戶線接入復(fù)用器)連接,DSLAM106把來自不同CPE104、105的流量經(jīng)交換機(jī)107導(dǎo)引到路由器108,路由器108又與IP(網(wǎng)際協(xié)議)網(wǎng)絡(luò)109連接。另一個路由器110連接在IP網(wǎng)絡(luò)109的另一點(diǎn)處,路由器IIO集中由組播組的幾個源111U12發(fā)送的數(shù)據(jù)分組。為了清楚起見,圖1表示了由與路由器107連接的幾個主機(jī)101、102、103形成的一個組,和與路由器IIO連接的源111U12的一個組。當(dāng)然,組播系統(tǒng)實(shí)際上由許多這些組合體和組構(gòu)成。圖1還表示了IGMP和PIM-SM協(xié)議中的每一個的范圍IGMP協(xié)議應(yīng)用于接收主機(jī)和路由器之間經(jīng)CPE和DSLAM的通信,而PIM-SM協(xié)議應(yīng)用于不同路由器之間經(jīng)IP網(wǎng)絡(luò)的通信。本例中假定路由器利用IP協(xié)議的IPv4版本操作,于是,系統(tǒng)使用IGMP協(xié)議。不過,所陳述的原因也適用于利用MLD協(xié)議(IP協(xié)議的IPv6版本)的系統(tǒng)。CPE和DSLAM是能夠?qū)崿F(xiàn)IGMP代理功能的設(shè)備,IGMP代理功能由接收幾個IGMP請求,并組裝所述幾個IGMP請求,以減小發(fā)給路由器的IGMP消息的量組成。在開始提及的IETF的RFC4605規(guī)范中說明了該操作。圖1中表示的組播系統(tǒng)的基本操作如下所示。主機(jī)101、102、103向CPE104、105發(fā)送幾個IGMP消息,其中它們識別組的組播地址,和它們希望從其接收數(shù)據(jù)發(fā)送的源地址。和圖1的例子中的CPE105的情況一樣,從不同主機(jī)接收幾個IGMP消息的CPE組裝這些IGMP消息,從而向DSLAM發(fā)送單一的IGMP消息。對DSLAM來說,DSLAM106從不同的CPE(這種情況下是CPE104、105)接收IGMP消息,并組裝它們,從而通過交換機(jī)107向路由器108發(fā)送其中對于每個組播組,只指示INCLUDE或EXCLUDE源的IGMP消息。路由器108通過交換機(jī)107接收DSLAM106發(fā)送的IGMP消息,并利用PM-SM協(xié)議與其它IP網(wǎng)絡(luò)路由器通信,以建立通過IP網(wǎng)絡(luò)的路由,從而使由在路由器108接收的IGMP消息中指定的源發(fā)送的數(shù)據(jù)到達(dá)路由器108。如下面的更詳細(xì)例子中所述,在現(xiàn)有技術(shù)中,路由器108不總是知道由主機(jī)指定的源IP地址,因?yàn)楫?dāng)網(wǎng)絡(luò)接口組裝最初由主機(jī)發(fā)送的IGMP消息時,該信息已丟失。于是,路由器108必須通過應(yīng)用復(fù)雜并且相當(dāng)?shù)托У倪^程,查明源IP地址。^照見蹄細(xì)誠(IGMPv3協(xié)、i"白娜番碰附藥飾仔圖2更詳細(xì)地表示組播系統(tǒng),和該組播系統(tǒng)進(jìn)行工作所必需的不同通信。為了基于圖2的示圖證明本發(fā)明的原理和優(yōu)點(diǎn),首先解釋按照現(xiàn)有技術(shù)的應(yīng)用IGMPv3協(xié)議的操作。然后參考圖2的相同示圖解釋按照本發(fā)明的操作。主機(jī)200是其中執(zhí)行能夠請求組播流量的兩個應(yīng)用程序201、202的個人計(jì)算機(jī)PC。計(jì)算機(jī)200配有連接到CPE208的網(wǎng)卡203,CPE208又與DSLAM240連接。主機(jī)220和225是都配有連接到單一CPE228的網(wǎng)卡222、223的兩臺個人計(jì)算機(jī)PC,所述CPE228又與DSLAM240連接。在每臺計(jì)算機(jī)220、225中分別執(zhí)行能夠請求組播流量的單一應(yīng)用程序221、226。主機(jī)231是與電視機(jī)230連接的STB(機(jī)頂盒)解碼器,它允許經(jīng)因特網(wǎng)接收電視頻道。解碼器231配有與CPE229連接的網(wǎng)卡232,CPE229又與DSLAM240連接。DSLAM240通過交換機(jī)250與路由器260連接。路由器260與由其它路由器形成的IP網(wǎng)絡(luò)連接,在本例中,所述其它路由器是路由器261、262、263、264、265、266、267和268。路由器264是RP(Rendez-vousPoint)路由器,即,PIM-SM協(xié)議用于建立組播組的發(fā)送源和當(dāng)其不知道發(fā)送源的IP地址時,希望從這些源接收發(fā)送的主機(jī)之間的路由的路由器。在圖2的例子中,存在屬于單一組播組G1的五個發(fā)送源295、296、297、298、299。為了簡化說明,下面的描述通過其相應(yīng)的IP地址表示這些源,如圖2中所示,它們分別為Sl、S2、S3、S4禾PS5。源Sl、S2和S3通過路由器266與IP網(wǎng)絡(luò)連接,而源S4和S5通過路由器262被連接。在主機(jī)200中執(zhí)行的應(yīng)用程序201和202希望接收組播組G1中的數(shù)據(jù)發(fā)送,但是每個應(yīng)用程序希望從不同的源接收發(fā)送-應(yīng)用程序201希望從源S1和S2接收發(fā)送,為此,它將產(chǎn)生INCLUDE({Sl,S2};Gl)式請求;_應(yīng)用程序202希望從除S4之外的所有源接收發(fā)送,為此,它將產(chǎn)生EXCLUDE({S4};G1)式請求。網(wǎng)卡203是必須通過應(yīng)用IGMPv3協(xié)議規(guī)則,組合與應(yīng)用程序201和202相關(guān)的不同套接字的狀態(tài)的網(wǎng)絡(luò)接口。由于套接字之一按EXCLUDE模式工作,因此,網(wǎng)絡(luò)接口203將只按EXCLUDE模式工作,并將向CPE208發(fā)送下述消息EXCLUDE({S4};G1)。理論上,看起來發(fā)送EXCLUDE({S4};G1)消息會使得不必發(fā)送INCLUDE({Sl,S2};Gl)消息,因?yàn)榈谝粭l消息暗中包括除S4之外的所有源,于是它包括源S1和S2。不過,通過按照這種方式工作,包含在由應(yīng)用程序201發(fā)送的IGMP消息中的有價值的信息被丟失源SI和S2的IP地址。網(wǎng)卡203發(fā)送的EXCLUDE({S4};G1)消息被傳送給DSLAM240,而不存在由CPE208修改的源的信息,因?yàn)镃PE208只從一個起源接收IGMP消息。在計(jì)算機(jī)220中執(zhí)行的應(yīng)用程序221產(chǎn)生INCLUDE({S5},Gl)式請求,指示它希望從源S5接收發(fā)送。網(wǎng)卡222不必組合幾個請求,因?yàn)樗粡呐c應(yīng)用程序221相關(guān)的套接字接收請求。于是,網(wǎng)卡222向CPE228發(fā)送包含和應(yīng)用程序221的請求,即,INCLUDE({S5},Gl)消息相同的信息的IGMP消息。在計(jì)算機(jī)225中執(zhí)行的應(yīng)用程序226產(chǎn)生INCLUDE({S3},Gl)式請求,指示它希望從源S3接收發(fā)送。網(wǎng)卡223不必組合幾個請求,因?yàn)樗粡呐c應(yīng)用程序226相關(guān)的套接字接收請求。于是,網(wǎng)卡223向CPE228發(fā)送包含和應(yīng)用程序226的請求,即,INCLUDE({S3},Gl)消息相同的信息的IGMP消息。CPE228充當(dāng)IGMP代理,應(yīng)用IGMPv3協(xié)議規(guī)則,以組合分別由網(wǎng)絡(luò)接口222和223發(fā)送的消息。由于所有接收的消息都是INCLUDE式消息,因此網(wǎng)絡(luò)接口228將只按照INCLUDE模式工作,并將向DSLAM240傳送下述消息INCLUDE({S3,S5};G1)。STB231發(fā)送INCLUDE({SI},Gl)消息,指示它希望從源SI接收發(fā)送。CPE229把該消息完整地傳送給DSLAM240,因?yàn)樗鼜膯我黄鹪唇邮誌GMP消息。于是,DSLAM240接收下述三種IGMP消息來自CPE208的EXCLUDE({S4};G1),來自CPE228的INCLUDE({S3,S5};G1),來自CPE229的INCLUDE({SI},Gl)。DSLAM240是必須通過應(yīng)用IGMPv3協(xié)議規(guī)則,組合這些不同消息的代理。由于接收的與組播組Gl相關(guān)的消息之一是EXCLUDE式消息,因此對于所述組播組Gl來說,網(wǎng)絡(luò)接口240將只按照EXCLUDE模式工作,并通過交換機(jī)250向路由器260傳送下述消息EXCLUDE({S4};G1),指示路由器260必須把來自組播組G1的除S4之外的所有源的發(fā)送傳給DSLAM240。路由器260隨后利用PIM-SM協(xié)議與其它IP網(wǎng)絡(luò)路由器通信,以接收由在IGMP消息中請求的源發(fā)送的數(shù)據(jù),所述在IGMP消息中請求的源是組播組G1的除源S4之外的所有源。PIM-SM協(xié)議是允許建立兩種路由樹使其中心位于RP路由器(這種情況下是路由器264)的RPT(Rendez-vousPointTree)樹,和建立最短路徑的STP(ShortestPathTree)的復(fù)合協(xié)議。RP路由器被PIM-SM協(xié)議指定為負(fù)責(zé)了解組播組的所有源的IP地址的路由器。路由器260最初總是通過RPT樹接收來自組播組的流量,因?yàn)橹挥蠷P路由器知道源IP地址。當(dāng)下面將說明的一些條件被滿足時,路由器260隨后使用SPT樹,并放棄通過RP樹的傳輸。在圖2的例子中,當(dāng)最初使用RPT樹時,路由器260通過用虛線指示的路徑281,接收來自源Sl、S2和S3的發(fā)送,并且通過用虛線指示的路徑282接收來自源S5的發(fā)送。于是,路由器260通過最長的路徑,而不是按照SPT樹的最短路徑接收數(shù)據(jù),按照SPT樹的最短路徑是用實(shí)線指示的路徑291和292。路由器260不知道被包含源的IP地址,因?yàn)樗鼉H僅從DSLAM240收到EXCLUDE({S4};G1)消息。于是,路由器260不能直接利用SPT樹向被包含源請求流量。如一開始所述,這是一個嚴(yán)重的缺陷。另一個缺陷在于如果路由器僅僅按照SSM組播模式工作,那么它將不接受EXCLUDE消息的事實(shí)。此外,如果路由器是只能夠直接與源連接的簡化路由器,那么如果它不知道源的IP地址,那么它不能直接與源連接。在RFC4601規(guī)范,具體地說在定義稱為CheckSwitchToSpt(S,G)的函數(shù)的4.2.1節(jié)"LastHopSwitchovertotheSPT"中詳細(xì)說明了由PIM-SM協(xié)議提供的關(guān)于特定通道(S,G),S卩,由組播組G中的源S定義的通道,從RPT樹轉(zhuǎn)換到SPT樹的條件voidCheckSwitchToSpt(S,G){if((pim—include(*,G)(_)pim—exclude(S,G)(+)pim_include(S,G)!=NULL)ANDSwitchToSptDesired(S,G)){#Note-RestartingtheKATwillresultin#theSPTswitchsetKe印aliveTimer(S,G)to#Keepalive_Period}}CheckSwitchToSpt(S,G)函數(shù)具有可配置部分,由可配置的"SwitchToSptDesired(S,G)"函數(shù)定義,和不可配置部分。當(dāng)這兩部分的條件都被滿足時,執(zhí)行從RPT樹到SPT樹的轉(zhuǎn)換。通常,可配置的"SwitchToSptDesired(S,G)"函數(shù)被用于確定來自源S的流量的數(shù)量閾值,以致如果所述閾值未被超過,那么不執(zhí)行從RPT樹到SPT樹的轉(zhuǎn)換。構(gòu)成PIM-SM協(xié)議編程代碼的一部分的不可配置部分如下所示(pim—include(*,G)(_)pim—exclude(S,G)(+)pim—include(S,G)!=亂U該不可配置條件規(guī)定如果存在收到INCLUDE(S,G)IGMP消息的路由器的網(wǎng)絡(luò)接口,或者如果存在收到指示希望從組播組G的所有源接收流量的IGMP式消息的路由器的網(wǎng)絡(luò)接口,并且所述網(wǎng)絡(luò)接口沒有收到EXCLUDE(S,G)IGMP消息,那么路由器僅僅關(guān)于特定通道(S,G)從RPT樹轉(zhuǎn)換到SPT樹。由于該不可配置條件只與IGMP消息相關(guān),因此能夠發(fā)起到SPT樹的轉(zhuǎn)換,以建立與通道(S,G)的輸入路由器的直接連接的唯一路由器是接收IGMP消息的路由器,即圖2的例子中的路由器260。在未通過其網(wǎng)絡(luò)接口直接收到IGMP消息的路由器中,該條件決不會被滿足,以致這些路由器決不會發(fā)起到SPT樹的轉(zhuǎn)換。在圖2的例子中,路由器260接收的唯一消息是EXCLUDE((S4);G1),從而所述不可配置的條件不被滿足。因此,路由器260不能從RPT樹轉(zhuǎn)換到SPT樹,流量將長時期地繼續(xù)通過經(jīng)RP路由器264的最長路徑281、282,而不是通過最短的路徑291、292。從而,流量是以相當(dāng)?shù)托У姆绞椒职l(fā)的,不必要地使RP路由器過載。總之,本例表明應(yīng)用IGMPv3協(xié)議組合INCLUDE式消息和EXCLUDE式消息的規(guī)則會不利地影響路由系統(tǒng)效率。本領(lǐng)域的技術(shù)人員易于明白在具有與圖2中所示組合不同的組合的其它組播系統(tǒng)中,也會發(fā)生這種情況。涯輛,g腦勺IGMP協(xié)必通過應(yīng)用改進(jìn)的IGMP協(xié)議,以致網(wǎng)絡(luò)接口能夠傳送由主機(jī)發(fā)送的消息,而不失去包含在所述消息中的信息,本發(fā)明解決了這些問題。按照本發(fā)明的改進(jìn)的IGMP協(xié)議和IGMPv3協(xié)議的不同之處在于網(wǎng)絡(luò)接口能夠按雙重模式工作它們獨(dú)立地保存和傳送包含在INCLUDE式IGMP消息中的信息,和包含在EXCLUDE式IGMP消息中的信息。下面說明按照本發(fā)明的改進(jìn)的IGMP協(xié)議。為了便于說明,將參考按照一開始提及的IETF的RFC3376規(guī)范的IGMPv3協(xié)議的描述,只詳細(xì)描述改進(jìn)的IGMP協(xié)議相對于所述IGMPv3協(xié)議的變化。未詳細(xì)描述的部分適應(yīng)于IGMPv3協(xié)議,于是在本領(lǐng)域的技術(shù)人員的能力范圍之內(nèi)。所述描述是按照下述章節(jié)組織的1)接口.狀態(tài)信息.組裝源的方式的描述2)刪除狀態(tài)記錄的方式3)得到網(wǎng)絡(luò)接口記錄的規(guī)則4)IGMP消息的描述5)當(dāng)記錄的信息變化時的行為6)當(dāng)主機(jī)收到MembershipQuery消息時的行為7)路由器用協(xié)議的描述8)與IGMPv3主機(jī)的兼容性9)改進(jìn)的IGMP代理1)接口.狀態(tài)信息.組裝源的方式的描述IGMPv3協(xié)議的RFC3376規(guī)范說明系統(tǒng)必須支持按照下述函數(shù)的IGMP消息,以允許主機(jī)選擇組播數(shù)據(jù)源IPMulticastListen(socket,interface,multicast-address,filter-mode,{source_list})其中"socket"是允許區(qū)分在系統(tǒng)中執(zhí)行的,調(diào)用IPMulticastListen函數(shù)的不同應(yīng)用程序的參數(shù)。例如,所述應(yīng)用程序可以是在與數(shù)據(jù)網(wǎng)絡(luò)連接的單一計(jì)算機(jī)中執(zhí)行的不同應(yīng)用程序。"interface"是其中指示將被接收的組播數(shù)據(jù)源的網(wǎng)卡或網(wǎng)絡(luò)接口的本地標(biāo)識符。"multicast-address"是組播組的地址。"filter-mode"是網(wǎng)絡(luò)接口模式,它可以是INCLUDE或EXCLUDE。在INCLUDE模式下,網(wǎng)絡(luò)接口把source-list定義為INCLUDE;這意味由列表上的所有源發(fā)送的流量都必須被發(fā)送。在EXCLUDE模式下,網(wǎng)絡(luò)接口把source-list定義為EXCLUDE;這意味除了列表上的源之外,來自組播組中進(jìn)行發(fā)送的所有源的流量都必須被發(fā)送。"source-list"是INCLUDE或EXCLUDE源列表。RFC3376規(guī)范明確說明對于特定的套接字,網(wǎng)絡(luò)接口和組播組組合,只能夠存在一種filter-mode,它可以是INCLUDE或EXCLUDE。系統(tǒng)為每個有效套接字保存一個狀態(tài)記錄。該記錄包含下述信息(interface,multicast-address,filter-mode,{source-list})對于每個套接字,該記錄的filter-mode只能夠是INCLUDE或EXCLUDE。系統(tǒng)還為每個網(wǎng)絡(luò)接口保存一個記錄。該記錄包含下述信息(multicast-address,filter-mode,{source-list})對于每個網(wǎng)絡(luò)接口和組播組,該記錄的fi1ter-mode只能夠是INCLUDE或EXCLUDE。每個網(wǎng)絡(luò)接口的記錄源自于套接字記錄。當(dāng)網(wǎng)絡(luò)接口的記錄必須源自于不同記錄的組合時,應(yīng)用一開始解釋的和在下面轉(zhuǎn)錄的規(guī)則規(guī)則1.如果組播組Gl的任意數(shù)據(jù)源是EXCLUDE,那么對于組播組Gl,網(wǎng)絡(luò)接口將具有EXCLUDEfilter-mode,網(wǎng)絡(luò)接口的源列表是EXCLUDE源列表減去INCLUDE源列表的交集。規(guī)則2.如果所有源都是INCLUDE式源,那么對于組播組G1,網(wǎng)絡(luò)接口將具有INCLUDEfilter-mode,源列表是所有INCLUDE源的并集。至此說明了按照RFC3376規(guī)范的IGMPv3協(xié)議的特性。按照本發(fā)明的改進(jìn)IGMP協(xié)議保持IGMPv3協(xié)議的IPMulticastListen函數(shù)的相同結(jié)構(gòu)。IPMulticastListen(socket,interface,multicast-address,filter-mode,{source_list})但是差別在于對于每個套接字和每個網(wǎng)絡(luò)接口,系統(tǒng)保存兩個記錄一個記錄用于EXCLUDEfilter-mode,另一個記錄用于INCLUDEfilter-mode。于是,系統(tǒng)保存每個套接字的兩個記錄INCLUDE記錄(interface,multicast-address,INCLUDE,{source-list})EXCLUDE記錄(interface,multicast-address,EXCLUDE,{source-list})和每個網(wǎng)絡(luò)接口和組播組的兩個記錄INCLUDE記錄(multicast-address,INCLUDE,{source-list})EXCLUDE記錄(multicast-address,EX(XUDE,{source-list})只要只存在INCLUDE源或只存在EXCLUDE源,系統(tǒng)就只需要一個記錄。不過,如果對于具有INCLUDE和EXCLUDE源信息的相同組播組,存在對IPMulticastListen函數(shù)的不同調(diào)用,那么系統(tǒng)把信息保存在兩個記錄中,而不是如同現(xiàn)有技術(shù)中的IGMPv3協(xié)議那樣混合所述信息。對IPMulticastListen函數(shù)的每個調(diào)用替換關(guān)于特定組播組的記錄的內(nèi)容,如果不存在記錄,那么它創(chuàng)建一個記錄(例如,當(dāng)首次為所述組播組調(diào)用該函數(shù)時,發(fā)生這種情況)。2)刪除記錄的方式為了刪除IGMPv3協(xié)議中特定組播組Gl的記錄,發(fā)送具有空的源列表的INCLUDE式消息INCLUDE(H,G1)。另外,在過去一定時間之后,特定組播組G1的EXCLUDE模式的記錄自動轉(zhuǎn)換到INCLUDE模式,而不需要發(fā)送任何消息。為此,IGMPv3協(xié)議中的記錄具有用于每個組播組的計(jì)時器,如果記錄狀態(tài)為EXCLUDE,那么所述計(jì)時器不等于0。當(dāng)計(jì)時器到達(dá)0時,記錄從EXCLUDE模式轉(zhuǎn)換成INCLUDE模式。15為了刪除按照本發(fā)明的改進(jìn)的IGMP協(xié)議中的特定組播組G1的INCLUDE記錄,使用和IGMPv3協(xié)議中相同的系統(tǒng)發(fā)送具有空的源列表的INCLUDE式消息INCLUDE({})。為了自動刪除特定組播組Gl的EXCLUDE記錄,和IGMPv3協(xié)議中一樣,在改進(jìn)的IGMP協(xié)議中EXCLUDE記錄也具有用于每個組播組的計(jì)時器,不過操作更簡單,因?yàn)椴槐貜腎NCLUDE模式轉(zhuǎn)換到EXCLUDE模式當(dāng)計(jì)時器達(dá)到0時,只是刪除EXCLUDE記錄??蛇x的是,改進(jìn)的IGMP系統(tǒng)增加用于更快速地刪除EXCLUDE狀態(tài)記錄的新系統(tǒng),所述新系統(tǒng)適用于-用IPMulticastListen函數(shù)更新的主機(jī)記錄;-借助IGMP消息更新的代理和路由器記錄。在改進(jìn)的IGMP協(xié)議中包含稱為Filter_Delete_Exclude的新的filter-mode參數(shù),以借助IPMulticastListen函數(shù)刪除EXCLUDE記錄。當(dāng)IPMulticastListen函數(shù)收到帶有該參數(shù)的調(diào)用時,它知道它必須從在組播地址中指示的組播組中刪除EXCLUDE記錄。為了借助IGMP消息從代理和路由器刪除EXCLUDE記錄,利用下面的精簡描述,在改進(jìn)的IGMP協(xié)議中定義了MembershipR印ort消息的GroupRecordType字段的新值7DELEX-TypeMODE_IS_DELETE_EXCLUDE該新值被增加到已存在于IGMPv3協(xié)議中的,具有下述精簡描述的GroupRecordType字段的值1-6(RFC3376規(guī)范的4.2.12節(jié))中l(wèi)IS_IN(x)_TypeM0DE_IS_INCLUDE2IS_EX(x)-TypeMODE—IS—EXCLUDE3T0_IN(x)-TypeCHANGE_TO_INCLUDE_MODE4T0_EX(x)-TypeCHANGE_TO_EXCLUDE_MODE5ALL0W(x)-TypeALLOW_NEW_SOURCES6BL0CK(x)-TypeBL0CK_0LD_S0URCES其中x是源IP地址的列表。3)得到網(wǎng)絡(luò)接口記錄的規(guī)則如1)節(jié)中所述,改進(jìn)的IGMP協(xié)議允許為每個網(wǎng)絡(luò)接口和組播組保存兩條記錄INCLUDE記錄(multicast-address,INCLUDE,{source-list})EXCLUDE記錄(multicast-address,EX(XUDE,{source-list})其中multicast-address是組播組的地址,source-list是源列表.和IGMPv3協(xié)議中一樣,網(wǎng)絡(luò)接口記錄得自于套接字記錄。不過,當(dāng)應(yīng)用改進(jìn)的IGMP協(xié)議時,過程更簡單,因?yàn)椴槐鼗旌蠁我唤M播組的INCLUDE源和EXCLUDE源。改進(jìn)的IGMP協(xié)議對每個網(wǎng)絡(luò)接口和組播組應(yīng)用下述規(guī)則規(guī)則1.對于每個組播組,網(wǎng)絡(luò)接口的每個INCLUDE記錄包含利用所述網(wǎng)絡(luò)接口的套接字的INCLUDE記錄的所有源的并集。規(guī)則2.對于每個組播組,網(wǎng)絡(luò)接口的每個EXCLUDE記錄包含利用所述網(wǎng)絡(luò)接口的套接字的EXCLUDE記錄的所有源的交集。4)IGMP消息的描述為了簡化說明,本節(jié)中在假定在路由器和主機(jī)之間不存在IGMP代理的情況下,說明路由器和主機(jī)之間的IGMP消息。IGMP代理的行為將在下面的章節(jié)9中說明。對于主機(jī)和路由器之間的通信,改進(jìn)的IGMP協(xié)議使用和在RFC3376規(guī)范的章節(jié)4中描述的IGMPv3協(xié)議相同的消息,不過具有下面說明的修改。圖3表示IGMPv3協(xié)議中由路由器發(fā)給主機(jī)的消息的格式。這些消息被稱為MembershipQuery消息。圖3中所示的格式既適用于IGMPv3協(xié)議,又適用于改進(jìn)的IGMP協(xié)議。圖4表示IGMPv3協(xié)議中由主機(jī)發(fā)給路由器的消息的格式。這些消息被稱為MembershipR印ort消息。圖4中所示的格式既適用于IGMPv3協(xié)議,又適用于改進(jìn)的IGMP協(xié)議。圖5表示包含在每個MembershipR印ort消息中的稱為GroupRecord的數(shù)據(jù)塊的內(nèi)部格式。GroupAddress字段包含組播組地址。SourceAddress字段包含和源有關(guān)的信息。NumberofSource字段指示存在于每個GroupRecord中的SourceAddress字段的數(shù)目。圖5中所示的格式適用于IGMPv3協(xié)議。在改進(jìn)的IGMP協(xié)議中,當(dāng)發(fā)送MembershipR印ort式消息時,和IGMPv3協(xié)議中一樣,使用相同的消息格式,不過當(dāng)對于相同的組播組來說,存在INCLUDE源并且還存在EXCLUDE源時,如下面討論的圖6中所示,發(fā)送兩個GroupRecord。由于源未被混合,因此對于每個網(wǎng)絡(luò)接口和組播組可存在兩個記錄,系統(tǒng)可傳送具有單一組播地址或組播組的兩個不同GroupRecord的消息GroupRecord之一傳送和INCLUDE源有關(guān)的信息,另一個GroupRecord傳送和EXCLUDE源有關(guān)的信息。在IGMPv3協(xié)議中,路由器發(fā)送GeneralQuery式MembershipQuery消息,以關(guān)于主機(jī)的狀態(tài)詢問主機(jī)。響應(yīng)該消息,主機(jī)發(fā)送Current-StateRecord式MembershipR印ort狀態(tài)消息。在改進(jìn)的IGMP協(xié)議中保持該系統(tǒng),不過主機(jī)發(fā)送的Current-StateRecord消息可包含單一組播組的兩個GroupRecord:INCLUDE模式的一個GroupRecord,和EXCLUDE模式的另一個GroupRecord。和IGMPv3協(xié)議中一樣,INCLUDE或EXCLUDE模式分別由RecordType字段的內(nèi)容識別RecordType=1=MODE—IS—INCLUDERecordType=2=MODE—IS—EXCLUDE從而,在單一的Current-StateRecord消息中傳送和所述兩個記錄有關(guān)的信息。在IGMPv3協(xié)議中,主機(jī)發(fā)送Source-List-ChangeRecord消息,以報(bào)告已存在于INCLUDE源和EXCLUDE源中的變化。不同于Current-StateRecord消息,Source-List-ChangeRecord消息不是響應(yīng)路由器發(fā)送的MembershipQuery消息而發(fā)送的,相反它們由主機(jī)發(fā)送,以指示在其源記錄中發(fā)生了變化。和IGMPv3協(xié)議中一樣,在改進(jìn)的IGMP協(xié)議中,主機(jī)也發(fā)送Source-List-ChangeRecord消息,不過具有下述差別由于對于單一的組播組可存在兩條不同的記錄(INCLUDE記錄和EXCLUDE記錄),因此Source-List-ChangeRecord消息必須指出它涉及的是這兩條記錄中的哪一個。為此,在改進(jìn)的IGMP協(xié)議中利用下面的精簡表達(dá)式定義了四種新的GroupRecordType:8ALL0WIN(x)-TypeALL0W_NEW_S0URCES_INCLUDE9BL0CKIN(x)-TypeBL0CK_0LD_S0URCES_INCLUDElOALLOWEX(x)-TypeALL0W_NEW_S0URCES_EXCLUDE17llBLOCKEX(x)-TypeBL0CK_0LD_S0URCES_EXCLUDE其中x是源IP地址的列表。新的GroupRecordType8禾口9,即,ALL0WIN(x)和BL0CKIN(x)表達(dá)式被用于發(fā)送分別向INCLUDE記錄中的源列表增加元素,或者從INCLUDE記錄中的源列表中除去元素的消息。新的GroupRecordType10禾P11,即,ALL0WEX(x)和BL0CKEX(x)表達(dá)式被用于發(fā)送消息,以致它分別允許或阻止由源x發(fā)送的流量。圖6表示當(dāng)應(yīng)用按照本發(fā)明的改進(jìn)的IGMP協(xié)議時,與圖2的圖中由DSLAM240發(fā)給路由器260的消息對應(yīng)的MembershipR印ort消息的例子。下面詳細(xì)說明該消息的內(nèi)容。DSLAM240充當(dāng)位于路由器260與主機(jī)200、220、225和231之間的IGMP代理。于是,這種情況下,通過用DSLAM240代替主機(jī),適用前面與路由器和所述主機(jī)之間的IGMP消息有關(guān)的說明。在其與IGMP路由器的通信中,IGMP代理充當(dāng)主機(jī),在其與主機(jī)的通信中,IGMP代理充當(dāng)IGMP路由器。下面示出當(dāng)應(yīng)用按照本發(fā)明的改進(jìn)的IGMP協(xié)議時,保存在圖2的每個設(shè)備中的記錄。在PC200中,如果應(yīng)用程序201和202分別使用socketl和socket2時,socketl和socket2狀態(tài)記錄分別如下所示INCLUDE記錄:(Interface203,GroupGl,INCLUDE,{Sl,S2})EXCLUDE記錄(Interface203,GroupGl,EXCLUDE,{S4})與CPE208的網(wǎng)絡(luò)接口的狀態(tài)相符的PC200的網(wǎng)絡(luò)接口203的狀態(tài)記錄如下所示INCLUDE記錄:(GroupGl,INCLUDE,{Sl,S2})EXCLUDE記錄(GroupGl,EXCLUDE,{S4})在PC220中,如果應(yīng)用程序221使用socketl,那么socketl狀態(tài)記錄如下INCLUDE記錄:(GroupGl,INCLUDE,{S5})在PC225中,如果應(yīng)用程序226使用socketl,那么socketl狀態(tài)記錄如下INCLUDE記錄:(GroupGl,INCLUDE,{S3})在組裝源之后,起IGMP代理作用的CPE228的網(wǎng)絡(luò)接口的狀態(tài)記錄如下所示INCLUDE記錄:(GroupGl,INCLUDE,{S3,S5})在STB231中,與CPE229的網(wǎng)絡(luò)接口的狀態(tài)相符的網(wǎng)絡(luò)接口232的狀態(tài)記錄如下所示INCLUDE記錄:(GroupGl,INCLUDE,{SI})每個CPE208、228和229把它的IGMP消息發(fā)給DSLAM240,DSLAM240再次組裝所述IGMP消息,但是不混合INCLUDE源和EXCLUDE源。在組裝源之后,起IGMP代理作用的DSLAM240的網(wǎng)絡(luò)接口的狀態(tài)記錄如下所示INCLUDE記錄:(GroupGl,INCLUDE,{Sl,S2,S3,S5})EXCLUDE記錄(GroupGl,EXCLUDE,{S4})響應(yīng)路由器260發(fā)送的GeneralQuery消息,DSLAM240向路由器260發(fā)送下面分析的圖6中所示的消息。,NumberofGroupRecords=2指示對于相同的組播組G1發(fā)送兩個數(shù)據(jù)塊或GroupRecord。GroupRecord之一包含和INCLUDE源有關(guān)的信息,另一個GroupRecord包含和EXCLUDE源有關(guān)的信息。第一個GroupRecord具有等于l的RecordType。這意味它是M0DE_IS_INCLUDE式記錄,即,它包含和INCLUDE源有關(guān)的信息。在該數(shù)據(jù)塊中,NumberofSources等于4,意味將要發(fā)送四個INCLUDE源的信息。在MulticastAddress字段中指出組播組G1。四個SourceAddress[1]-SourceAddress[4]字段包含和四個INCLUDE源Sl、S2、S3和S5有關(guān)的信息。下面示出RecordType等于2的第二個GroupRecord。這意味它是M0DE_IS_EXCLUDE式記錄,S卩,它包含和EXCLUDE源有關(guān)的信息。NumberofSources等于1,意味將要發(fā)送和一個EXCLUDE源有關(guān)的信息。在MulticastAddress字段中指出組播組Gl。SourceAddress[l]字段包含和EXCLUDE源S4有關(guān)的信息。路由器260已收到所有源的完整信息。現(xiàn)在由PM-SM協(xié)議規(guī)定的關(guān)于從RPT樹轉(zhuǎn)換到SPT樹的要求被滿足,如下所述。默認(rèn)配置PIM-SM協(xié)議的SwitchToSptDesired(S,G)條件(它是關(guān)于通道(S,G),從RPT樹轉(zhuǎn)換到SPT樹的轉(zhuǎn)換條件的可配置部分),以致當(dāng)?shù)谝粩?shù)據(jù)分組從源S經(jīng)SPT樹到達(dá)時,該條件被滿足。當(dāng)應(yīng)用改進(jìn)的IGMP協(xié)議時,所述轉(zhuǎn)換條件的不可配置條件總是被滿足,因?yàn)橛信d趣從源S接收流量的路由器將會總是收到INCLUDE(S,G)IGMP消息,或者會收到指示它希望從組播組G的所有源接收流量的IGMP式消息,而不是會收到EXCLUDE(S,G)IGMP消息。于是,當(dāng)應(yīng)用改進(jìn)的IGMP協(xié)議時,已收到關(guān)于某一源的流量請求的所有路由器能夠轉(zhuǎn)到SPT樹,并通過最短路徑從所述源接收流量。于是,在圖2的例子中,由源S1、S2和S3發(fā)送的流量將通過最短路徑291,由源S5發(fā)送的流量將通過最短路徑292。可選的是,路由器260從最初起就能夠直接與每個源Sl、S2、S3和S5的SPT樹連接,因?yàn)樗肋@些源的IP地址,于是能夠直接使用SPT樹。為此,足以使SwitchToSptDesired(S,G)函數(shù)始終為真。此外,可選的是,每個主機(jī)能夠在實(shí)際的IGMP消息中向路由器260指出按照每個源,它何時必須開始從RPT樹到SPT樹的轉(zhuǎn)換。為此,按照本發(fā)明,使用在組播地址的范圍之外的組播地址字段,其中放入消息而不是組播地址。例如,組播地址的前兩個字節(jié)被設(shè)為O,通過使下述含意與接下來的兩個字節(jié)相聯(lián)系,接下來的這兩個字節(jié)被用于向路由器發(fā)送消息100=借助SPT樹直接連接200=使用路由器的默認(rèn)配置,并評估SwitchToSptDesired(S,G)函數(shù),以決定轉(zhuǎn)換到STP樹300=總是使用RPT樹,決不轉(zhuǎn)換到SPT樹。路由器檢測該地址在組播地址的范圍之外,并把這4個字節(jié)解釋成之后包括在相同GroupRecord中的組播地址中的指示它必須從RPT樹轉(zhuǎn)換到SPT樹的方式的消息。5)當(dāng)記錄的信息變化時的行為在改進(jìn)的IGMP協(xié)議中,當(dāng)關(guān)于特定組播組的網(wǎng)絡(luò)接口的狀態(tài)記錄變化時,系統(tǒng)必須通過發(fā)送Source-List-ChangeRecord消息,簡單地傳送所述變化,如在前面的章節(jié)中所示。在IGMPv3協(xié)議中,該過程更復(fù)雜,因?yàn)橄到y(tǒng)必須考慮filter-mode和其中的可能變化。在改進(jìn)的IGMP協(xié)議中不存在這種復(fù)雜性,因?yàn)镮NCLUDE源和EXCLUDE源的信息被分別保存和傳送。6)當(dāng)主機(jī)收到MembershipQuery消息時的行為在IGMPv3協(xié)議中和在改進(jìn)的IGMP協(xié)議中,路由器向主機(jī)發(fā)送稱為MembershipQuery消息的消息,以致主機(jī)告知它們希望接收的組播組和通道。在改進(jìn)的IGMP協(xié)議中,主機(jī)向路由器發(fā)送和它們在IGMPv3協(xié)議中發(fā)送的響應(yīng)消息類似的響應(yīng)消息,不過差別在于關(guān)于INCLUDE源和EXCLUDE源的信息是分別發(fā)送的。使用幾個計(jì)時器來防止主機(jī)同時作出響應(yīng),所述計(jì)時器延遲主機(jī)的響應(yīng),以便考慮到在MembershipQuery消息中規(guī)定的時隙分配它們。在改進(jìn)的IGMP協(xié)議中和在IGMPv3協(xié)議中,其操作是相同的。存在三禾中MembershipQuery消息GeneralQuery,Group—SpecificQuery禾口Group_and_Source_SpecificQuery。每隔一定時間(默認(rèn)125秒),路由器發(fā)送GeneralQuery式消息,以致所有主機(jī)通過發(fā)送被稱為Current-StateRecord的MembershipR印ort消息,告知它們希望接收的組播組和通道。主機(jī)借以響應(yīng)GeneralQuery請求的消息包括被稱為GroupRecord的數(shù)據(jù)塊,GroupRecord可以是下述兩種RecordType=1MODE—IS_INCLUDERecordType=2M0DE—IS—EXCLUDE如上所示,在如圖4中所示的單一消息或者M(jìn)embershipR印ort中發(fā)送如圖5中所示的稱為GroupRecord的幾個數(shù)據(jù)塊。圖5的第一個字段,即,GroupRecord的第一個字段是指示每個數(shù)據(jù)塊的含意的RecordType字段(在圖5的例子中,RecordType字段是表示成Type的字段)。在IGMPv3協(xié)議中,由于每個組播組只能夠或者處于INCLUDE狀態(tài),或者處于EXCLUDE狀態(tài),因此對于每個組播組,每個主機(jī)只發(fā)送一個GroupRecord,同時RecordType分別具有與INCLUDE或EXCLUDE組的狀態(tài)相應(yīng)的值1或值2。在改進(jìn)的IGMP協(xié)議中,由于INCLUDE源和EXCLUDE源的信息被分別保存和發(fā)送的事實(shí),對于單一組播組,主機(jī)可能需要發(fā)送兩個GroupRecord:RecordType=1的告知INCLUDE源的第一個GroupRecord,和RecordType=2的告知EXCLUDE源的第二個GroupRecord。這可從圖6中看出,其中存在關(guān)于相同組播組Gl的兩個GroupRecord。對于Group-SpecificQuery禾口Group_and_Source_SpecificQuery式消息,存在上面說明的相同差異當(dāng)主機(jī)應(yīng)答這些消息時,它們能夠利用兩個GroupRecord,分別地發(fā)送來自INCLUDE源和EXCLUDE源的信息。7)路由器用協(xié)議的描述按照改進(jìn)的IGMP協(xié)議的操作與IGMPv3協(xié)議和MLDv2協(xié)議的操作非常類似。于是,下面使用與在一開始提及的RFC3376規(guī)范(IGMPv3協(xié)議)和RFC3810規(guī)范(MLDv2協(xié)議)中使用的術(shù)語相同的術(shù)語,以幫助理解。相對于本領(lǐng)域的現(xiàn)有技術(shù)的IGMPv3協(xié)議和MLDv2協(xié)議的主要差別在于在改進(jìn)的IGMP協(xié)議中,對于每個組播組,路由器具有兩個狀態(tài)記錄INCLUDE記錄和EXCLUDE記錄。由于路由器從主機(jī)接收關(guān)于INCLUDE源和EXCLUDE源的詳細(xì)信息的事實(shí),改進(jìn)的IGMP協(xié)議使路由器可以更好地利用路由算法。路由器在它們直接連接的所有網(wǎng)絡(luò)中執(zhí)行IGMP協(xié)議。如果組播路由器具有與相同網(wǎng)絡(luò)連接的多于一個的網(wǎng)絡(luò)接口,那么它只需要在與所述網(wǎng)絡(luò)連接的網(wǎng)絡(luò)接口之一中執(zhí)行該協(xié)議。不同于IGMPv3協(xié)議,在改進(jìn)的IGMP協(xié)議中,對于每個組播組和網(wǎng)絡(luò)接口,路由器不再排他地按INCLUDE模式或EXCLUDE模式工作。于是,它不再需要允許它從INCLUDE模式變換到EXCLUDE模式,和從EXCLUDE模式變換到INCLUDE的所有機(jī)制。對于每個網(wǎng)卡或者網(wǎng)絡(luò)接口,以及組播組,利用改進(jìn)的IGMP協(xié)議的路由器把分別來自組播INCLUDE源和EXCLUDE源的信息保存在兩個記錄中INCLUDE記錄(multicast-address,INCLUDE,{sourcelistandtimers})EXCLUDE記錄(multicast-address,group-timer,EXCLUDE,{sourcelistandtimers})其中{sourcelistandtimers}是兀素(source-address,source-timer)的列表,其中source-address是源IP地址,source-timer是與所述源相關(guān)白勺計(jì)時器。計(jì)時器是存儲器中的變量,它包含隨著時間的過去而有規(guī)律地減小,直到達(dá)到O為止的值。于是,保存在路由器中的這兩個INCLUDE記錄和EXCLUDE記錄包含與每個source-address相關(guān)的一個source-timer。如上在涉及刪除記錄的方式的細(xì)目2中所述,與組播組相關(guān)的每個EXCLUDE記錄還包含當(dāng)過去特定的時間而路由器沒有收到具有EXCLUDE式流量請求的報(bào)告時,用于消除EXCLUDE狀態(tài)記錄的group-timer。如上所述,路由器定期向主機(jī)發(fā)送如圖3中所示的稱為MembershipQuery消息的消息,以致主機(jī)答復(fù)與它們希望從其接收組播流量的組播組和源有關(guān)的信息。主機(jī)還能夠向路由器發(fā)送消息,以請求組播流量,而不等待主機(jī)發(fā)送MembershipQuery消息。路由器使用計(jì)時器來保證在發(fā)送了GroupSpecificQuery消息或者GroupandSourceSpecificQuery消息之后,所有主機(jī)都具有足夠的時間來答復(fù)所述消息。計(jì)時器的值隨著時間的過去而逐漸減小,如果路由器從主機(jī)收到MembershipR印ort消息,那么路由器再次重新啟動對應(yīng)的計(jì)時器。INCLUDE記錄中的計(jì)時器按照下述方式工作對于特定的網(wǎng)絡(luò)接口、特定的組播組和特定的被包含源地址,只要source-timer大于O,路由器將繼續(xù)從通道(源,組播組)通過所述網(wǎng)絡(luò)接口傳送組播流量;當(dāng)source-timer達(dá)到0時,路由器將停止傳送所述流量,并將從該組播組的INCLUDE源列表中刪除該源。EXCLUDE記錄中的計(jì)時器按照類似的方式工作,不過差別在于EXCLUDE源被分成兩個列表被稱為RequestedList的第一個列表包含其source-timer的值大于0的源,被稱為ExcludeList的第二個列表包含其source-timer的值為0的源。對于每個組播組Gi,路由器傳送INCLUDE源所請求的所有流量。如果對于所述組播組Gi另外存在一個EXCLUDE記錄,那么路由器還傳送除出自EXCLUDEList的EXCLUDE存在RequestedList的原因在于在具有向一個路由器發(fā)送消息的幾個主機(jī)的網(wǎng)絡(luò)中,在不同主機(jī)的請求之間可能存在沖突。例如,當(dāng)一個主機(jī)請求來自特定源的流量,另一個主機(jī)請求除所述源之外的流量時會發(fā)生所述沖突。例如,主機(jī)l把第一個EXCLUDE({SI},Gl)消息,相同以太網(wǎng)中的另一個主機(jī)2隨后把第二個EXCLUDE({Sl,S2,S3},G1)消息發(fā)給相同的路由器。當(dāng)收到第二個消息時,如果路由器把第二個消息的源{S1,S2,S3}放入ExcludeList中,那么主機(jī)1會停止接收由于它曾希望接收除來自源SI的流量之外的所有流量,因而主機(jī)1曾經(jīng)想要接收的來自源S2和S3的流量。為了避免這種問題,路由器只把新消息的一組源與在接收新消息之前已在ExcludeList中的一組源的交集放入ExcludeList中。剩余的EXCLUDE源轉(zhuǎn)到RequestedList中,可選的是,路由器向主機(jī)發(fā)送Group-And-SourceSpecificQuery消息,以詢問是否存在仍然有興趣接收來自組播組Gl的源S2和S3的流量的任何主機(jī)。按照source-timer的值,把EXCLUDE源分成兩個列表,RequestedList和ExcludeList的原理與在IGMPv3協(xié)議和MLDv2協(xié)議中應(yīng)用的原理類似。在最初提及的RFC3810規(guī)范(MLDv2協(xié)議)包含該原理的說明。表l(在本說明書的結(jié)尾)表示應(yīng)用按照本發(fā)明的改進(jìn)的IGMP協(xié)議的改進(jìn)路由器的操作。在其初始狀態(tài)下,對于特定的組播組G,該路由器具有所述組播組G的兩個狀態(tài)記錄,因?yàn)樗哂蠭NCLUDE源,還具有EXCLUDE源。在表1中,第一列Statel表示路由器的INCLUDE記錄和EXCLUDE記錄的初始狀態(tài);第二列Message表示路由器接收的MembershipR印ort消息的內(nèi)容;第三列State2表示在收到MembershipR印ort消息之后,路由器的所述記錄的狀態(tài);第四列也是最后一列Actions表示在收到所述MembershipR印ort消息之后,路由器執(zhí)行的動作。表l包含用虛線分開的六行。表1的每一行是路由器的基于初始狀態(tài)并且取決于它所收到消息的操作的例子。表1獨(dú)立地涉及每個組播組G。每個組播組G將具有它自己的INCLUDE狀態(tài)記錄和EXCLUDE狀態(tài)記錄,所述INCLUDE狀態(tài)記錄和EXCLUDE狀態(tài)記錄將受該路由器涉及所述G組播組接收的消息影響。表1中使用了下述術(shù)語-(A+B)意味源的集合A和源的集合B的并集。-(A*B)意味源的集合A和源的集合B的交集。-(A-B)意味源的集合A減去集合A的也存在于集合B中的源。-INCLUDE(A)指示該路由器具有INCLUDE記錄,所述INCLUDE記錄包含稱為A的一組源。-EXCLUDE(X,Y)指示該路由器具有EXCLUDE狀態(tài)記錄,因?yàn)榇嬖贓XCLUDE源。-X是RequestedList。-Y是ExcludeList。-GMI是包含時間值的稱為GroupMembership間隔的參數(shù)。默認(rèn)使用250秒的值。-LMQT是包含時間值的稱為LastMemberQueryTime的參數(shù)。它是主機(jī)必須答復(fù)Group-And-SourceSpecificQuery式消息的時間。在該時間之后,如果沒有主機(jī)答復(fù)對該數(shù)據(jù)感興趣,那么路由器停止傳送所述數(shù)據(jù)。-T(S)是源S的源計(jì)時器。-GT是"組計(jì)時器",即,所有組播組的EXCLUDE記錄的計(jì)時器。-SENDQ(G,S)意味路由器向主機(jī)發(fā)送Group-And-SourceSpecificQuery消息,以檢查是否仍然存在對組播組G的源S感興趣的主機(jī)。當(dāng)執(zhí)行該動作時,路由器還把源S的計(jì)時器減小到LMQT值。如果作為響應(yīng),路由器收到表示對任意源S感興趣的消息,那么它隨后把存在感興趣主機(jī)的所述源的計(jì)時器的值初始化為等于GMI的初始值。改進(jìn)的IGMP協(xié)議的另一優(yōu)點(diǎn)在于它允許路由器在發(fā)送"Source-And-GroupSpecificQuery"式消息,并從消息的源列表中除去某些源之前,咨詢所述兩個INCLUDE記錄和EXCLUDE記錄,以致如果所有源都被除去,消息甚至也能夠被清除。為此,當(dāng)如在表1的行4中所示的例子中一樣,路由器收到BLOCKIN(B)式消息時,在進(jìn)行動作SENDQ(G,A*B)之前,它能夠檢查對于相同組播組G是否存在EXCLUDE記錄,并從消息Q(G,A*B)中除去未包括在ExcludeList中的所有源,因?yàn)檫@意味某人已借助EXCLUDE消息請求了它們。按照相同的方式,當(dāng)類似于在表1的行6中所示的例子中一樣,路由器收到BLOCKEX(B)式消息時,路由器能夠咨詢INCLUDE記錄的源列表,并使用該信息從消息Q(G,B-Y)中清除在INCLUDE記錄中的源。這兩種檢查能夠消除大量的Group-And-SourceSpecificQuery消息,減少網(wǎng)絡(luò)中的流量,及主機(jī)和路由器不得不處理的消息的數(shù)目。8)與IGMPv3主機(jī)的兼容性使用改進(jìn)的IGMP協(xié)議的路由器(下面稱為改進(jìn)路由器)能夠利用IGMPv3協(xié)議與主機(jī)通信。例如,以太網(wǎng)可具有與之連接的使用IGMPv3協(xié)議的主機(jī),和使用按照本發(fā)明的改進(jìn)的IGMP協(xié)議的主機(jī)。為此,能夠處理改進(jìn)的IGMP協(xié)議的新消息的改進(jìn)路由器也能夠處理由IGMPv3協(xié)議和MLDv2協(xié)議使用而未在改進(jìn)的IGMP協(xié)議中使用的消息。當(dāng)改進(jìn)路由器收到ALLOW(B)式消息時,路由器表現(xiàn)為好像它已收到關(guān)于在INCLUDE記錄中的集合B上的源的ALLOWIN(B)消息,并且路由器表現(xiàn)為好像它已收到關(guān)于具有EXCLUDE狀態(tài)記錄的集合B上的源的ALLOWEX(B)消息。如果ALLOW(B)消息的集合B上的源同時在路由器的INCLUDE記錄和EXCLUDE記錄中,那么路由器的操作可被配置成以致該路由器表現(xiàn)為好像它已收到所述兩個ALLOWIN(B)消息和ALLOWEX(B)消息,或者表現(xiàn)為好像它只收到所述兩個消息之一。在路由器配置中可在這兩種選項(xiàng)之間進(jìn)行選擇。按照相同的方式處理路由器接收BLOCK(B)式消息的情況路由器的操作可被配置成以致該路由器表現(xiàn)為好像它已收到兩個BLOCKIN(B)和/或BLOCKEX(B)消息。當(dāng)路由器收到T0_IN(B)消息時,它把該消息看作好像是IS_IN(B)消息,因?yàn)橛捎诼酚善髂軌虬凑针p重模式工作,路由器不必從INCLUDE模式變換成EXCLUDE模式,和從EXCLUDE模式變換成INCLUDE模式。按照相同的方式,當(dāng)路由器收到T0_EX(B)消息時,它把該消息看作好像是IS_EX(B)消息。9)改進(jìn)的IGMP代理按照本發(fā)明的改進(jìn)的IGMP代理和在最初提及的RFC4605規(guī)范中定義的IGMP代理的不同之處在于它分別保存和傳送關(guān)于INCLUDE源和EXCLUDE源的信息。改進(jìn)的IGMP代理能夠?yàn)槊總€網(wǎng)絡(luò)接口和組播組保存兩個記錄INCLUDE記錄(multicast-address,INCLUDE,{sourcelist})EXCLUDE記錄(multicast-address,EX(XUDE,{sourcelist})IGMP代理的功能是組裝它從其與主機(jī)連接的網(wǎng)絡(luò)接口接收的消息,從而發(fā)送由連接該IGMP代理與IGMP路由器或者另一個IGMP代理的網(wǎng)絡(luò)接口組裝或總結(jié)的消息。所述面對IGMP路由器的網(wǎng)絡(luò)接口通常被稱為上游接口。為此,IGMP代理應(yīng)用和上面在章節(jié)3中解釋的規(guī)則類似的規(guī)則,以根據(jù)套接字記錄推斷來自主機(jī)的網(wǎng)絡(luò)接口的記錄,不過差別在于由于存在兩個獨(dú)立的記錄,一個是關(guān)于INCLUDE源的記錄,另一個是關(guān)于EXCLUDE源的記錄,因此從EXCLUDE源記錄推斷源列表就不必考慮關(guān)于INCLUDE源的信息,因?yàn)樗鲂畔ㄔ贗NCLUDE源記錄中。改進(jìn)的IGMP代理對每個網(wǎng)絡(luò)接口和組播組應(yīng)用的這些規(guī)則是下述規(guī)則規(guī)則1.對每個組播組,每個INCLUDE記錄包含在代理的所有網(wǎng)絡(luò)接口中接收的與所述組播組相關(guān)的INCLUDE消息的所有INCLUDE源的并集。規(guī)則2.對每個組播組,每個EXCLUDE記錄包含在代理的所有網(wǎng)絡(luò)接口中接收的與所述組播組相關(guān)的EXCLUDE消息的所有EXCLUDE源的交集。為了獨(dú)立地把和既包含INCLUDE源又包括EXCLUDE源的組播組有關(guān)的信息傳送給路由器,使用和在細(xì)目4中所述同樣的具有兩個"GroupRecord"的消息系統(tǒng)。改進(jìn)的IGMP代理能夠同時與利用IGMPv3協(xié)議的主機(jī)一道工作,和與利用按照本發(fā)明的改進(jìn)IGMP協(xié)議的主機(jī)一道工作。表l24<table>tableseeoriginaldocumentpage25</column></row><table>權(quán)利要求一種管理數(shù)據(jù)網(wǎng)絡(luò)中的組播流量的方法,在所述數(shù)據(jù)網(wǎng)絡(luò)中,源(295、296、297、298、299)發(fā)送以至少一個組播組為目的地的數(shù)據(jù),多個主機(jī)(200、220、225、230)從路由器(260)接收由在所述組播組中進(jìn)行發(fā)送的一個或幾個所述源(295、296、297、298、299)發(fā)送的數(shù)據(jù),所述主機(jī)(200、220、225、230)和所述路由器(260)借助允許組播主機(jī)-路由器通信的通信協(xié)議相互通信,通過組播主機(jī)-路由器通信,主機(jī)(200、220、225、230)能夠?yàn)樗鼋M播組定義包含源列表和排除源列表,所述包含源列表表示主機(jī)(200、220、225、230)希望接收由所述包含源列表上的源發(fā)送的數(shù)據(jù),所述排除源列表表示主機(jī)(200、220、225、230)希望接收除所述排除源列表上的源之外,來自所述組播組的所有源的流量;其特征在于按照所述通信協(xié)議-主機(jī)(200、220、225、230)為每個組播組和網(wǎng)絡(luò)接口,保存兩個獨(dú)立的記錄含有包含源列表的包含源記錄,和含有排除源列表的排除源記錄;-每個主機(jī)(200、220、225、230)的網(wǎng)絡(luò)接口向所述路由器(260)發(fā)送消息,所述消息包含關(guān)于單一組播組的所述主機(jī)(200、220、225、230)的包含源記錄的源列表的信息,和/或所述主機(jī)(200、220、225、230)的排除源記錄的源列表的信息;-路由器(260)為每個組播組保存兩個獨(dú)立的記錄含有包含源列表的信息的包含源記錄,和含有排除源列表的信息的排除源記錄;-當(dāng)所述路由器(260)通過其網(wǎng)絡(luò)接口從主機(jī)(200、220、225、230)收到含有關(guān)于包含源列表的信息,和/或關(guān)于排除源列表的信息的消息時,對每個組播組,所述路由器(260)更新它的包含源記錄和/或它的排除源記錄。2.按照權(quán)利要求1所述的方法,其特征在于每個主機(jī)(200、220、225、230)的網(wǎng)絡(luò)接口發(fā)給所述路由器(260)的所述消息是含有所述主機(jī)(200、220、225、230)的包含源記錄的源列表和所述主機(jī)(200、220、225、230)的排除源記錄的源列表的狀態(tài)消息。3.按照權(quán)利要求l所述的方法,其特征在于每個主機(jī)(200、220、225、230)的網(wǎng)絡(luò)接口發(fā)給所述路由器(260)的所述消息是當(dāng)所述主機(jī)(200、220、225、230)檢測到它的包含源記錄的變化,或者它的排除源記錄的變化時,發(fā)送的狀態(tài)消息的變化,狀態(tài)消息的所述變化包含每個組播組的一個或兩個數(shù)據(jù)塊,其中每個所述數(shù)據(jù)塊含有和包含源記錄的源列表的修改有關(guān)的信息,或者和排除源記錄的源列表的修改有關(guān)的信息,其中每個所述數(shù)據(jù)塊包含指示該數(shù)據(jù)塊是否與包含源列表的修改,或者與排除源列表的修改相關(guān)的字段。4.按照權(quán)利要求l-3任意之一所述的方法,其特征在于所述路由器(260)使用包含在它接收的所述消息中的包含源列表的信息來請求所述包含源發(fā)送的數(shù)據(jù)流量。5.按照權(quán)利要求l-4任意之一所述的方法,其特征在于按照所述通信協(xié)議,對于主機(jī)(200、220、225、230)的網(wǎng)絡(luò)接口(203、222、223、232),對于使用所述網(wǎng)絡(luò)接口(203、222、223、232)的每個套接字和對于每個組播組,保持包含源記錄和排除源記錄,對于所述網(wǎng)絡(luò)接口(203、222、223、232)保持分別根據(jù)套接字的所述包含源記錄的內(nèi)容和根據(jù)套接字的所述排除源記錄的內(nèi)容更新的包含源記錄和排除源記錄。6.按照權(quán)利要求l-5任意之一所述的方法,其特征在于到達(dá)路由器(260)的網(wǎng)絡(luò)接口的所述狀態(tài)消息包含和為了建立從所述包含源到所述路由器(260)的路由樹,所述路由器(260)必須應(yīng)用的方法有關(guān)的指令。7.按照權(quán)利要求6所述的方法,其特征在于為了把所述指令包含在狀態(tài)消息中,在所述狀態(tài)消息中指示在為組播地址保留的范圍之外的組播地址;路由器(260)檢測到指示的組播地址在范圍之外,認(rèn)為所述組播地址包含所述指令,并讀取包含在所述組播地址中的呈數(shù)字代碼形式的所述指令。8.按照權(quán)利要求l-7中的任意一個所述的方法,其特征在于路由器(260)和主機(jī)(200、220、225、230)之間的所述通信協(xié)議是某一版本的IGMP協(xié)議(因特網(wǎng)組管理協(xié)議)或MLD(組播偵聽者發(fā)現(xiàn))協(xié)議,其中由網(wǎng)絡(luò)接口或者由設(shè)備接口發(fā)送的狀態(tài)消息能夠把包含源列表和排除源列表包含在同一消息中。9.一種與按照權(quán)利要求1所述的方法相適合的網(wǎng)絡(luò)設(shè)備(203、208、222、223、232、208、228、229、240),所述網(wǎng)絡(luò)設(shè)備包含網(wǎng)絡(luò)接口,并且適合于在所述主機(jī)(200、220、225、230)和所述路由器(260)之間的交換線路中工作,其特征在于它保存可執(zhí)行指令,所述可執(zhí)行指令用于_為每個組播組,保持包含源記錄和排除源記錄;_向面對所述路由器(260)的附近網(wǎng)絡(luò)接口發(fā)送消息,所述消息包含關(guān)于一個組播組的所述包含源記錄的源列表的信息,和/或所述排除源記錄的源列表的信息;-當(dāng)所述網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)接口從另一個網(wǎng)絡(luò)接口收到含有關(guān)于包含源列表的信息,和/或關(guān)于排除源列表的信息的消息時,對每個組播組,更新所述包含源記錄和/或所述排除源記錄。10.—種與按照權(quán)利要求5所述的方法相適合的設(shè)備(200、220、225、230),所述設(shè)備包含網(wǎng)絡(luò)接口(203、222、223、232),并且適合于起主機(jī)作用,其特征在于它保存可執(zhí)行指令,所述可執(zhí)行指令用于為使用所述網(wǎng)絡(luò)接口(203、222、223、232)的每個套接字和為每個組播組,保持包含源記錄和排除源記錄,為所述網(wǎng)絡(luò)接口(203、222、223、232)保持分別根據(jù)套接字的所述包含源記錄的內(nèi)容和根據(jù)套接字的所述排除源記錄的內(nèi)容更新的包含源記錄和排除源記錄。11.一種與按照權(quán)利要求l所述的方法相適合的路由器(260),其特征在于它保存可執(zhí)行指令,所述可執(zhí)行指令用于_為每個組播組保持兩個獨(dú)立的記錄包含源記錄和排除源記錄;禾口-當(dāng)所述路由器(260)通過其網(wǎng)絡(luò)接口收到含有關(guān)于包含源列表的信息,和/或關(guān)于排除源列表的信息的消息時,對每個組播組,更新所述包含源記錄和/或所述排除源記錄。12.按照權(quán)利要求ll所述的路由器(260),其特征在于所述路由器(260)使用與包含在路由器(260)接收的所述消息中的包含源列表有關(guān)的信息向其它路由器請求由所述包含源發(fā)送的數(shù)據(jù)流量。13.按照權(quán)利要求12所述的路由器(260),其特征在于為了請求由所述包含源發(fā)送的所述數(shù)據(jù)流量,所述路由器(260)使用PIM-SIM(協(xié)議獨(dú)立組播-稀疏模式)協(xié)議。14.按照權(quán)利要求ll所述的路由器(260),其特征在于當(dāng)收到告知主機(jī)不再希望接收來自特定組播組和特定包含源的流量的消息時,所述路由器檢查是否存在所述組播組的排除源記錄,如果所述記錄存在,并且不包含和所述包含源具有相同IP地址的排除源,那么所述路由器(260)繼續(xù)傳送所述特定組播組和所述特定包含源的所述流量,而不發(fā)送IGMP協(xié)議中的Group-And-SourceSpecificQuery式消息以檢查是否存在仍然希望接收所述流量的另一個主機(jī)。15.按照權(quán)利要求ll所述的路由器(260),其特征在于當(dāng)收到更新與排除源記錄有關(guān)的信息的消息時,其中所述消息請求封鎖來自特定源和組播組的流量,所述路由器(260)檢查是否存在所述組播組的包含源記錄,如果所述記錄存在,并且包含和所述消息請求封鎖的源具有相同IP地址的包含源,那么所述路由器(260)繼續(xù)傳送所述特定組播組和所述特定源的所述流量,而不發(fā)送IGMP協(xié)議中的Group-And-SourceSpecificQuery式消息以檢查是否存在仍然希望接收所述流量的另一個主機(jī)。全文摘要本發(fā)明涉及管理數(shù)據(jù)網(wǎng)絡(luò)中的組播流量的方法,和使用所述方法的設(shè)備。主機(jī)(200、220、225、230)為每個組播組保存包含源記錄和排除源記錄,主機(jī)的網(wǎng)絡(luò)接口向路由器(260)發(fā)送消息,所述消息含有關(guān)于包含源記錄的信息,和/或關(guān)于排除源記錄的信息。路由器(260)也為每個組播組保存包含源記錄和排除源記錄,并且當(dāng)路由器(260)通過其網(wǎng)絡(luò)接口從主機(jī)(200、220、225、230)收到含有關(guān)于包含源列表的信息,和/或關(guān)于排除源列表的信息的消息時,更新所述包含源記錄和/或排除源記錄。所述設(shè)備是與所述方法相適合的路由器、主機(jī)設(shè)備和網(wǎng)絡(luò)設(shè)備。文檔編號H04L12/18GK101766000SQ200780100049公開日2010年6月30日申請日期2007年10月5日優(yōu)先權(quán)日2007年6月26日發(fā)明者A·費(fèi)爾南德斯古鐵雷斯申請人:傳媒專利有限公司