1 概述
1.1 產生背景
傳統的IP通信有兩種方式:一種是在源主機與目的主機之間點對點的通信,即單播;另一種是在源主機與同一網段中所有其它主機之間點對多點的通信,即廣播。如果要將信息發送給多個主機而非所有主機,若采用廣播方式實現,不僅會將信息發送給不需要的主機而浪費帶寬,也不能實現跨網段發送;若采用單播方式實現,重復的IP包不僅會占用大量帶寬,也會增加源主機的負載。所以,傳統的單播和廣播通信方式不能有效地解決單點發送、多點接收的問題。
組播是指在IP網絡中將數據包以盡力傳送的形式發送到某個確定的節點集合(即組播組),其基本思想是:源主機(即組播源)只發送一份數據,其目的地址為組播組地址;組播組中的所有接收者都可收到同樣的數據拷貝,並且只有組播組內的主機可以接收該數據,而其它主機則不能收到。
1.2 技術優點
組播技術有效地解決了單點發送、多點接收的問題,實現了IP網絡中點到多點的高效數據傳送,能夠大量節約網絡帶寬、降低網絡負載。作為一種與單播和廣播並列的通信方式,組播的意義不僅在於此。更重要的是,可以利用網絡的組播特性方便地提供一些新的增值業務,包括在線直播、網絡電視、遠程教育、遠程醫療、網絡電台、實時視頻會議等互聯網的信息服務領域。
2 組播技術實現
組播技術的實現需要解決以下幾方面問題:
l 組播源向一組確定的接收者發送信息,而如何來標識這組確定的接收者?——這需要用到組播地址機制;
l 接收者通過加入組播組來實現對組播信息的接收,而接收者是如何動態地加入或離開組播組的?——即如何進行組成員關系管理;
l 組播報文在網絡中是如何被轉發並最終到達接收者的?——即組播報文轉發的過程;
l 組播報文的轉發路徑(即組播轉發樹)是如何構建的?——這是由各組播路由協議來完成的。
2.1 組播地址機制
2.1.1 IP組播地址
IP組播地址用於標識一個IP組播組。IANA把D類地址空間分配給組播使用,范圍從224.0.0.0到239.255.255.255。
圖1 IP組播地址格式
如圖1所示,IP組播地址前四位均為“1110”,而整個IP組播地址空間的划分則如圖2所示。
圖2 IP組播地址划分
l 224.0.0.0到224.0.0.255被IANA預留,地址224.0.0.0保留不做分配,其它地址供路由協議及拓撲查找和維護協議使用。該范圍內的地址屬於局部范疇,不論TTL為多少,都不會被路由器轉發;
l 224.0.1.0到238.255.255.255為用戶可用的組播地址,在全網范圍內有效。其中232.0.0.0/8為SSM組地址,而其余則屬於ASM組地址。有關ASM和SSM的詳細介紹,請參見“2.5 組播模型分類”一節;
l 239.0.0.0到239.255.255.255為本地管理組播地址,僅在特定的本地范圍內有效,也屬於ASM組地址。使用本地管理組地址可以靈活定義組播域的范圍,以實現不同組播域之間的地址隔離,從而有助於在不同組播域內重復使用相同組播地址而不會引起沖突。
說明:
224.0.1.0/24網段內的一些組播地址也被IANA預留給了某些組播應用。譬如,224.0.1.1被預留給NTP(Network Time Protocol,網絡時間協議)所使用。
2.1.2 IP組播地址到鏈路層的映射
說明:
本文只討論以太網鏈路層協議的組播實現,其它鏈路層協議的組播實現並不作為本文討論的重點。
IANA將MAC地址范圍01:00:5E:00:00:00~01:00:5E:7F:FF:FF分配給組播使用,這就要求將28位的IP組播地址空間映射到23位的組播MAC地址空間中,具體的映射方法是將組播地址中的低23位放入MAC地址的低23位,如圖3所示。
圖3 IP組播地址到組播MAC地址的映射
由於IP組播地址的后28位中只有23位被映射到組播MAC地址,這樣會有32個IP組播地址映射到同一組播MAC地址上。
2.2 組成員關系管理
組成員關系管理是指在路由器/交換機上建立直聯網段內的組成員關系信息,具體說,就是各接口/端口下有哪些組播組的成員。
2.2.1 IGMP
IGMP運行於主機和與主機直連的路由器之間,其實現的功能是雙向的:一方面,主機通過IGMP通知路由器希望接收某個特定組播組的信息;另一方面,路由器通過IGMP周期性地查詢局域網內的組播組成員是否處於活動狀態,實現所連網段組成員關系的收集與維護。通過IGMP,在路由器中記錄的信息是某個組播組是否在本地有組成員,而不是組播組與主機之間的對應關系。
目前IGMP有以下三個版本:
l IGMPv1(RFC 1112)中定義了基本的組成員查詢和報告過程;
l IGMPv2(RFC 2236)在IGMPv1的基礎上添加了組成員快速離開的機制等;
l IGMPv3(RFC 3376)中增加的主要功能是成員可以指定接收或拒絕來自某些組播源的報文,以實現對SSM模型的支持。
以下着重介紹IGMPv2的原理。
圖4 IGMPv2的工作原理
如圖4所示,當同一個網段內有多個IGMP路由器時,IGMPv2通過查詢器選舉機制從中選舉出唯一的查詢器。查詢器周期性地發送普遍組查詢消息進行成員關系查詢,主機通過發送報告消息來響應查詢。而作為組成員的路由器,其行為也與普通主機一樣,響應其它路由器的查詢。
當主機要加入組播組時,不必等待查詢消息,而是主動發送報告消息;當主機要離開組播組時,也會主動發送離開組消息,查詢器收到離開組消息后,會發送特定組查詢消息來確定該組的所有組成員是否都已離開。
通過上述機制,在路由器里建立起一張表,其中記錄了路由器各接口所對應子網上都有哪些組的成員。當路由器收到發往組G的組播數據后,只向那些有G的成員的接口轉發該數據。至於組播數據在路由器之間如何轉發則由組播路由協議決定,而不是IGMP的功能。
2.2.2 IGMP Snooping
IGMP是針對IP層設計的,只能記錄路由器上的三層接口與IP組播地址的對應關系。但在很多情況下,組播報文不可避免地要經過一些交換機,如果沒有一種機制將二層端口與組播MAC地址對應起來,組播報文就會轉發給交換機的所有端口,這顯然會浪費大量的系統資源。
IGMP Snooping的出現就可以解決這個問題,其工作原理為:主機發往IGMP查詢器的報告消息經過交換機時,交換機對這個消息進行監聽並記錄下來,為端口和組播MAC地址建立起映射關系;當交換機收到組播數據時,根據這樣的映射關系,只向連有組成員的端口轉發組播數據。
2.3 組播報文轉發
2.3.1 組播轉發樹
組播報文在網絡中沿着樹型轉發路徑進行轉發,該路徑稱為組播轉發樹。它可分為源樹(Source Tree)和共享樹(RPT)兩大類:
1. 源樹
源樹是指以組播源作為樹根,將組播源到每一個接收者的最短路徑結合起來構成的轉發樹。由於源樹使用的是從組播源到接收者的最短路徑,因此也稱為最短路徑樹(SPT)。對於某個組,網絡要為任何一個向該組發送報文的組播源建立一棵樹。
源樹的優點是能構造組播源和接收者之間的最短路徑,使端到端的延遲達到最小。但付出的代價是,在路由器中必須為每個組播源保存路由信息,這樣會占用大量的系統資源,路由表的規模也比較大。
2. 共享樹
以某個路由器作為路由樹的樹根,該路由器稱為匯集點(RP),共享樹就是由RP到所有接收者的最短路路徑所共同構成的轉發樹。使用共享樹時,對應某個組網絡中只有一棵樹。所有的組播源和接收者都使用這棵樹來收發報文,組播源先向樹根發送數據報文,之后報文又向下轉發到達所有的接收者。
共享樹的最大優點是路由器中保留的路由信息可以很少,缺點是組播源發出的報文要先經過RP,再到達接收者,經由的路徑通常並非最短,而且對RP的可靠性和處理能力要求很高。
2.3.2 組播報文轉發機制
當路由器收到組播數據報文時,根據組播目的地址查找組播轉發表,對報文進行轉發。與單播報文的轉發相比,組播報文的轉發相對復雜:在單播報文的轉發過程中,路由器並不關心報文的源地址,只關心報文的目的地址,通過其目的地址決定向哪個接口轉發;而組播報文是發送給一組接收者的,這些接收者用一個邏輯地址(即組播地址)標識,路由器在收到組播報文后,必須根據報文的源地址確定其正確的入接口(指向組播源方向)和下游方向,然后將其沿着遠離組播源的下游方向轉發——這個過程稱為逆向路徑轉發(RPF)。
在RPF執行過程中會利用原有的單播路由表確定上、下游的鄰接節點,只有報文從上游節點所對應的接口(稱為RPF接口,即路由器上通過單播方式向該地址發送報文的出接口)到達時,才向下游轉發。RPF的主體是RPF檢查,通過RPF檢查除了可以正確地按照組播路由的配置轉發報文外,還可以避免可能出現的環路。路由器收到組播報文后先對其進行RPF檢查,只有檢查通過才執行轉發。
RPF檢查的過程為:路由器在單播路由表中查找組播源或RP對應的RPF接口(使用SPT時查找組播源對應的RPF接口,使用RPT時查找RP對應的RPF接口),如果組播報文是從RPF接口接收下來的,則RPF檢查通過,報文向下游接口轉發;否則,丟棄該報文。
2.4 組播路由協議
與單播路由一樣,組播路由協議也分為域內和域間兩大類:
l 域內組播路由協議:根據IGMP協議維護的組成員關系信息,運用一定的組播路由算法構造組播分發樹,在路由器中建立組播路由狀態,路由器根據這些狀態進行組播數據包轉發;
l 域間組播路由協議:根據網絡中配置的域間組播路由策略,在各自治系統間發布具有組播能力的路由信息以及組播源信息,使組播數據能在域間進行轉發。
2.4.1 域內組播路由協議
在眾多域內組播路由協議中,PIM是目前較為典型的一個。按照轉發機制的不同,PIM可以分為DM(Dense Mode,密集模式)和SM(Sparse Mode,稀疏模式)兩種模式。
1. PIM-DM
在PIM-DM域中,運行PIM-DM的路由器周期性地發送PIM Hello消息,以發現鄰接的PIM路由器,進行葉子網絡、葉子路由器的判斷,並負責在多路訪問網絡中選舉DR——盡管PIM-DM本身並不需要DR,但如果PIM-DM域中的共享網絡上運行了IGMPv1,則需要選舉出DR來充當共享網絡上的IGMPv1查詢器。
PIM-DM屬於密集模式的組播路由協議,使用“推”模式傳送組播數據,通常適用於組播組成員相對比較密集的小型網絡,其基本原理如下:
PIM-DM假設網絡中的每個子網都存在至少一個組播組成員,因此組播數據將被擴散到網絡中的所有節點。然后,PIM-DM對沒有組播數據轉發的分支進行剪枝,只保留包含接收者的分支。這種“擴散—剪枝”現象周期性地發生,被剪枝的分支也可以周期性地恢復成轉發狀態。
當被剪枝分支的節點上出現了組播組的成員時,該節點通過主動向其上游發送嫁接報文,從而由剪枝狀態恢復成轉發狀態,以恢復對組播數據的轉發。
2. PIM-SM
在PIM-SM域中,運行PIM-SM的路由器周期性地發送PIM Hello消息,以發現鄰接的PIM路由器,並負責在多路訪問網絡中選舉DR。這里,DR負責為與其直連的組成員向組播樹根節點的方向發送加入/剪枝消息,或是將直連組播源的數據發向組播分發樹。
PIM-SM屬於稀疏模式的組播路由協議,使用“拉”模式傳送組播數據,通常適用於組播組成員分布相對分散、范圍較廣的大中型網絡,其基本原理如下:
l PIM-SM假設所有主機都不需要接收組播數據,只向明確提出需要組播數據的主機轉發。PIM-SM實現組播轉發的核心任務就是構造並維護RPT,RPT選擇PIM域中某台路由器作為公用的根節點RP,組播數據通過RP沿着RPT轉發給接收者;
l 連接接收者的路由器向某組播組對應的RP發送加入報文,該報文被逐跳送達RP,所經過的路徑就形成了RPT的分支;
l 組播源如果要向某組播組發送組播數據,首先由與組播源側DR負責向RP進行注冊,把注冊報文通過單播方式發送給RP,該報文到達RP后觸發建立SPT。之后組播源把組播數據沿着SPT發向RP,當組播數據到達RP后,被復制並沿着RPT發送給接收者。
2.4.2 域間組播路由協議
域間組播路由用來實現組播信息在AS之間的傳遞,目前比較成型的解決方案有:
l MBGP:用於在自治域之間交換組播路由信息;
l MSDP:用於在ISP之間交換組播源信息。
1. MBGP
域間路由的首要問題是路由信息(或者說可達信息)如何在自治系統之間傳遞,由於不同的AS可能屬於不同的運營商,因此除了距離信息外,域間路由信息必須包含運營商的策略,這是與域內路由信息的不同之處。
組播的網絡拓撲和單播拓撲有可能不同,這里既有物理方面的原因,也有策略方面的原因。網絡中的一些路由器可能只支持單播不支持組播,也可能按照策略配置不轉發組播報文。為了構造域間組播路由樹,除了要知道單播路由信息外,還要知道網絡中哪些部分是支持組播的,即組播的網絡拓撲情況。簡而言之,域間的組播路由信息交換協議應該滿足下面的要求:
l 能對單播和組播拓撲進行區分;
l 有一套穩定的對等和策略控制方法。
目前使用最多的域間單播路由協議是BGP-4,由於BGP-4已滿足后一個條件,而且已被證明是一個有效的、穩定的單播域間路由協議,因此為了實現域間組播路由信息的傳遞,合理的解決方案就是對BGP-4協議進行增強和擴展,而不是構建一套全新的協議。在RFC 2858中規定了對BGP進行多協議擴展的方法,擴展后的BGP協議(即MP-BGP,也寫作BGP-4+)不僅能攜帶IPv4單播路由信息,也能攜帶其它網絡層協議(如組播、IPv6等)的路由信息,攜帶組播路由信息只是其中一個擴展功能,稱為組播BGP(MBGP)。
有了MBGP之后,單播和組播路由信息可以通過同一個進程交換,但是存放在不同的路由表里。由於MBGP是BGP-4協議的一個增強版,因此BGP-4所支持的常見的策略和配置方法都可以用到組播里。
2. MSDP
在基本的PIM-SM模式下,組播源只向本PIM-SM域內的RP注冊,且各域的組播源信息是相互隔離的,因此RP僅知道本域內的組播源信息,只能在本域內建立組播分發樹,將本域內組播源發出的組播數據分發給本地用戶。而對於ISP來說,不希望依靠其它ISP的RP轉發組播流量,但同時又要求無論組播源的RP在哪里,都能從組播源獲取信息發給自己內部的成員。
MSDP就是為了解決多個PIM-SM域之間的互連而開發的一種域間組播解決方案,用來發現其它PIM-SM域內的組播源信息。MSDP通過將某個域內的RP與其它域內的RP建立MSDP對等體關系,以連通各PIM-SM域的RP,並利用這些對等體關系交換組播源信息。
盡管MSDP是為域間組播開發的,但它在PIM-SM域內還有着一項特殊的應用——Anycast RP(任播RP)。Anycast RP是指在同一PIM-SM域內通過設置兩個或多個具有相同地址的RP,並在這些RP之間建立MSDP對等體關系,以實現域內各RP之間的負載分擔和冗余備份。
2.5 組播模型分類
根據接收者對組播源處理方式的不同,組播模型分為以下兩大類:
l ASM模型:即任意源組播模型。在ASM模型中,任一發送者都可作為組播源向某組播組地址發送組播信息,接收者通過加入由該組播組地址標識的組播組以獲得發往該組播組的組播信息。在ASM模型中,接收者無法預先知道組播源的位置,但可以在任意時間加入或離開組播組。
l SSM模型:即指定信源組播模型。在現實生活中,用戶可能只對某些組播源發送的組播信息感興趣,而不願接收其它源發送的信息。SSM模型為用戶提供了一種能夠在客戶端指定組播源的傳輸服務。
上一節所描述的組播路由協議構架主要針對ASM模型。在ASM模型下,接收者無法選擇組播源,只能被動地接收所有組播源的信息,而SSM模型的提出則為指定源組播提供了解決方案。
SSM模型要求使用與ASM模型不同的組地址,通過PIM-SM直接在接收者與組播源之間建立專用的組播轉發路徑。由於接收者可通過其它渠道(如廣告咨詢等)事先了解組播源的地址,因此SSM模型無需RP,無需構建RPT,無需組播源注冊過程,也無需通過MSDP來發現其它PIM-SM域內的組播源。同時,SSM模型還要求在接收者主機所在的網段,路由器能夠了解主機加入組播組時所指定的組播源:
l 如果接收者主機運行的是IGMPv3,可以在IGMPv3的報告報文中直接指定組播源的地址;
l 如果某些接收者主機只能運行IGMPv1/v2,由於IGMPv1/v2的報告報文中無法指定組播源的地址,因此可以通過在路由器上配置SSM Mapping靜態映射規則,將IGMPv1/v2報告報文中所包含的(*,G)信息映射為(G,INCLUDE,(S1,S2…))信息。
3 典型組網應用
3.1 單域組播組網應用
目前,PIM-SM是域內組播的公認標准。對於由一個自治域組成的網絡,或者組播僅在域內進行時,僅需在網絡中運行PIM-SM即可。為了增強PIM-SM中RP的可靠性,以及對網絡中的組播流量進行分擔,可在網絡中選取若干RP,運行Anycast RP,達到冗余備份及負載分擔的目的。
使用PIM-SM協議的單域組播組網如圖5所示。
圖5 PIM-SM單域組播組網
3.2 跨域組播組網應用
3.2.1 PIM-SM/MBGP/MSDP方案
域間組播目前比較成型的解決方案是PIM-SM/MBGP/MSDP組合方案,它要求所有的自治域都支持PIM-SM、MBGP和MSDP。如圖6所示,在全網各自治域都運行PIM-SM,域間運行MBGP和MSDP。
該方案實際上是PIM-SM在域間環境下的擴展,如果把整個PIM-SM/MBGP/MSDP組合方案機制看作PIM-SM,則所有域的RP的集合就是PIM-SM協議中的“RP”,而該方案無非是增加了以下兩個過程:
(1) 組播源信息在RP集合中的泛濫,以實現組播源和成員在“RP”點的會合;
(2) 域間組播路由信息的傳遞,目的是保證組播報文在域間的順利轉發。在上述過程中,一個AS中的RP和接收端向另一個AS中的遠端建立逆向路徑的過程中都需要用到MBGP傳遞的組播拓撲信息。
在該方案中,自治域邊界路由器之間配置外部MBGP對等體,RP之間配置外部MSDP對等體;自治域內部路由器之間根據需要配置內部MBGP對等體,內部RP之間配置內部MSDP對等體,運行Anycast RP;所有的自治域都運行PIM-SM。域內的組播路由和組播源信息收集工作由PIM-SM完成,域間則由MBGP傳播組播拓撲信息、MSDP傳播組播源信息。
3.2.2 PIM-SM/隧道(MBGP&MSDP)方案
如圖7所示,在骨干網不支持或不運行組播的情況下,在城域網內部運行PIM-SM,各個城域網的RP與其它城域網RP之間通過隧道構成虛擬網絡,在此虛擬網絡中運行PIM-SM、MBGP和MSDP。這種方案的優勢是不要求骨干支持PIM-SM、MBGP和MSDP,組播流量對骨干網絡來說是透明的,可以避免組播報文轉發對設備性能造成的影響。缺點是要求RP之間既要支持PIM-SM,還要支持MBGP和MSDP隧道,配置和管理繁瑣、對設備要求較高。
圖7 PIM-SM/隧道(MBGP&MSDP)方案
3.2.3 PIM-SM/隧道(PIM-DM)方案
如圖8所示,在骨干網不支持或不運行組播的情況下,城域網內部運行PIM-SM,各個城域網的RP與其它城域網的RP之間通過隧道構成虛擬網絡,在此虛擬網絡中運行PIM-DM。這種方案的優勢是不要求骨干支持PIM-SM、MBGP和MSDP,組播流量對骨干網絡透明,因此也不需要在骨干上保存大量的組播路由狀態;缺點是RP之間運行PIM-DM,組播流量定期擴散可能會造成骨干網的帶寬浪費。
圖8 PIM-SM/隧道(PIM-DM)方案
3.3 組播穿越防火牆組網應用
如圖9所示,當多個組播網段之間跨越一個不支持組播的網絡(如Internet),或者防火牆上配置了NAT或IPSec VPN時,防火牆不能與對端設備建立PIM鄰居關系並生成組播路由。在這種情況下,通過配置GRE隧道可以將各分離的組播網段連接成起來,實現組播的應用。
4 總結和展望
組播技術從1988年提出至今已經歷了20年的發展,許多國際組織對組播的技術研究和業務開展進行了大量的工作。在IP網絡中多媒體業務日漸增多的情況下,組播技術為多媒體業務的開展提供了傳輸基礎。
組播技術涵蓋了從地址方案、成員管理和路由建立等各個方面,其中組播地址的分配方式、域間組播路由以及組播安全等仍是研究的熱點。從目前的情況看,組成員管理技術普遍采用IGMPv2;PIM-SM因其良好的擴展性以及從RPT向SPT切換的能力而成為域內組播路由技術的首選;域間組播路由協議現階段普遍采用PIM-SM/MBGP/MSDP的組合方案。
組播技術可以提供包括流媒體、視頻會議、IPTV等在內的各種寬帶增值業務,但這些業務的順利開展還依賴於有效的業務管理、監控及安全控制。結合在業務運營管理方面的理解和經驗積累,H3C公司提供不斷完善的可運營、可管理的組播解決方案,我們將繼續致力於推動組播技術的發展、組播業務的普及和功能的完善。