組播MVPN技術白皮書
本文檔介紹了邁普通信技術股份有限公司路由器產品支持的組播MVPN功能的基本原理及其關鍵技術。當您需要了解學習組播MVPN技術的時候,可參考本章節的內容。對本章節提及的MPLS/BGP等相關技術,請參閱相關文檔。
1概述
IP組播的應用越來越廣泛,很多行業開始將其作為應用的解決方案。同時VPN技術在企業網中的應用也越來越普及,在目前的電子政務網、電力數據等企業網絡中,幾乎都是基於BGP/MPLS IP VPN的架構,通過將不同部門划分到不同的VPN中以實現部門間的數據隔離。同樣地,對部門內部的視頻會議、數據共享等組播業務也需要實現VPN隔離,因此就有了組播VPN日益緊迫的需求。如何在VPN環境中應用組播技術,成為需要解決的重要問題之一。
在BGP/MPLS IP VPN網絡內開展組播業務需要解決以下幾方面的問題:
(1) 公網支持組播功能。
私網組播數據除了在私網內進行組播轉發外,如果在公網中也能進行組播轉發,將使公網的數據負載大大減少,從而節約帶寬。
(2) 在公網對私網組播數據進行RPF 檢查。
組播數據的轉發模式與單播不同,要根據組播源地址和入接口對組播數據進行RPF 檢查,只有通過檢查才能被轉發。而在BGP/MPLS IP VPN 網絡中,由於公網中的P 設備無法獲得私網路由,因此不能直接對私網組播數據進行轉發。
(3) 私網地址空間重疊。
由於BGP/MPLS IP VPN 網絡允許各VPN 的私網地址空間重疊,因此不同VPN 用戶所使用的組播源和組播組地址可能是重疊的,PE 需要能夠將私網組播數據正確地轉發給同一VPN 內的用戶。
(4) 私網組播數據實現按需發送。
一個VPN 由多個Site 構成,每個Site 連接到不同的PE,但並非每個Site 都需要組播數據,因此如果私網組播數據通過公網時只流向那些有需求的PE,將會減少PE 的負荷。
2技術簡介
2.1MVPN基本原理
在BGP/MPLS提供的IP VPN業務中,單播路由在骨干網中是最優的,P路由器不維護任何VPN 相關的單播路由狀態。與單播不同,為了節約骨干網中的帶寬,需要在骨干網中運行組播路由協議。骨干網中將會為每個Multicast VPN保留一棵或者多棵組播分發樹。
SP確定某個VPN是否使能了組播。如果它使能了組播,那么它就對應一個Multicast Domain(組播域)。連接到某個使能了組播VPN的PE路由器被稱為屬於相應的Multicast Domain。對於每個Multicast Domain, 在骨干網中都要建立一棵組播分發樹,用來連接所有屬於該Multicast Domain的PE路由器。一個給定的PE路由器,它可以在多個Multicast Domain中,只要它連接了多個VPN。但是,每個Multicast Domain都有自己的MDT。MDT是在骨干網中運行PIM來創建的,它可以包含PE路由器之間的位於組播路徑上的P路由器。同一般的組播樹建立過程不同的是,Default MDT是在域內PE路由器啟動之后,自動建立起來。Default MDT的建立不需要依賴域內存在組播流,它在組播流存在之前就已經建立完成。
在BGP/MPLS模式下提供的IP VPN業務中,某個CE路由器和與之相連的PE路由器是單播路由鄰接,但分屬不同站點的CE路由器相互不能成為單播路由鄰接。這個重要特征在Multicast VPN中也保留了下來。CE路由器和與之相連的PE路由器成為PIM鄰接,但是不同站點的CE路由器不能成為PIM鄰接。
來自某個VPN的組播業務流將會由Ingress(輸入) PE路由器從CE路由器那里收到。Ingress PE路由器將封裝這些組播業務報文,並且開始沿着Default MDT轉發它們到連接了指定VPN站點的所有Egress(輸出) PE路由器。如果Egress PE路由器沒有接收者,那么丟棄收到的組播業務報文。否則,Egress PE路由器將組播報文解除封裝后,轉發給CE路由器。
為了減少使用Default MDT時,沒有接收者的PE路由器將會收到並不需要的組播業務流的問題,骨干網中可以使用DATA MDT。DATA MDT只會將組播業務流轉發給那些有接收者的Egress PE路由器。使用DATA MDT將會有兩個優點。第一,減少了骨干網中的組播業務總的流量;第二,減少了某些PE路由器上的負載。但也有一個缺點,DATA MDT將會增加P路由器上維護的組播路由狀態的數目。SP可以在這兩者之間找到一個比較好的平衡點。
2.2術語
MD:是指能夠互相發送和接收組播報文的所有設備組成的集合。
MTI(Multicast Tunnel Interface):在 PE 上的私網 PIM 實例看來,組播隧道是一個虛擬的物理接口,稱為MTI。PE上的每個私網PIM實例都具有一個MTI。當用戶在 VPN 實例中配置了Default-MDT后, MTI 實際上是 PE 上公網 PIM 實例和私網 PIM 實例進行交互的“通道”,是 PE 上私網實例之間建立 PIM 鄰居的接口。通過共享組播隧道Default-MDT連通之后的各個PE上的MTI,相當於被連接到了共享網段上,各個PE上屬於該MD的C-Instances 就在 MTI 上建立PIM鄰居關系。在共享網段上的這些 MTI,進行正常的 DR 選舉,產生 ASSERT 等。
Default-MDT: PE 上的公網 PIM 實例加入到根據 default mdt建立的組播分發樹,用於將 VPN 內的 PIM 協議報文和低速數據報文分發給其他同屬於一個 VPN 的 PE 路由器,這個組播分發樹我們稱之為 Default-MDT。
Data-MDT: 為了避免數據流向不必要的 PE 路由器,在建立起 Default-MDT 后,所有私網接收者的PE路由器加入到一個用 Data MDT Group 組而建立起來的按需發送的組播分發樹,用於將 VPN 的高速數據報文分發給其他同屬於一個 VPN 的PE 路由器。
P-Instance:表示 PE 上公網 VRF 中的 PIM 實例,P-Group、P-Source類似。
C-Instance:表示 PE 上私網 VRF 中的 PIM 實例,C-Group、C-Source類似。
3關鍵技術
3.1組播VRF
MVRF(Multicast VRF,組播VRF)擴展了單播VRF,它不僅包含單播路由狀態,而且還包含組播路由狀態。對於每個MVRF,它維護自己的一套組播路由狀態,而且在進行組播路由的時候,也僅在自己的組播路由狀態中進行組播選路。
在PE路由器上,有多少個MVRF,那么就運行多少個PIM實例。這些PIM實例被成為VPN相關的PIM實例。在PE路由器上只運行一個提供商有關(Provider-wide)的PIM實例,被稱為PIM的P實例。在VPN相關的PIM實例中,PE路由器和CE路由器建立PIM的鄰居關系。而在PIM的P實例中,PE路由器只和P路由器建立PIM鄰接。PE路由器不和CE路由器建立PIM鄰接關系,也不和其他的PE路由器建立PIM鄰接關系(除非,其他PE路由器碰巧和它在SP網絡中相連)。P路由器只運行一個PIM的P實例,只和PE或者P路由器建立PIM鄰接。
PIM的P實例和PIM的VPN相關實例有各自的組播地址空間,它們的組播地址可以相互覆蓋。P實例的組播地址前加一個P(Provider,提供商)前綴表示,例如P實例的組播源地址稱為P-Source(P源地址)。PIM的VPN相關實例的組播地址前加一個C(Client, 客戶)前綴表示。
3.2組播隧道
Multicast Domain就是能夠相互進行組播通信的MVRF集合。如下圖所示,路由器PE_S連接的VRF_B和路由器PE_R連接的VRF_A被配置成為能夠通過骨干網按照Multicast VPN的方式進行組播通信,那么它們就屬於同一個Multicast Domain。
為了達到VRF_A和VRF_B能夠進行組播通信的目的,那么在PE_S路由器上要建立一個MT(Multicast Tunnel組播隧道)接口 ,同樣,PE_R路由器上也要建立一個MT接口。通過這條虛擬的隧道,PE_S和PE_R就能建立PIM鄰接關系,就能在VRF_B和VRF_A之間進行正常的組播通信了。MT是組播隧道,它和一般的單播隧道不同,它的目的地址是一個組播地址。
3.3PE路由器自動發現
如果骨干網中使用PIM SSM組播路由協議,那么必須使用一種帶外機制來進行PE路由器的相互發現。只有完成了PE路由器的相互發現,那么才能建立Default MDT分發樹。為此,BGP路由協議增加了一個更新的路由屬性,這就是MDT SAFI NLRI (MDT的網絡層次可達信息)屬性。這些更新消息包含PE的IP地址,Default MDT的組地址,RD(Router Distinguisher)。一旦某個VRF配置了加入某個Default MDT的組地址,那么BGP就會向對等發送MDT SAFI NLRI可達的更新消息,那么PE通過這種方式完成了相互的發現。如果骨干網中使用PIM SM協議,雖然不需要該BGP屬性來建立Default MDT,但也需要它來完成屬於同一Multicast Domain的PE路由器的自動發現。
3.4組播報文的封裝
C網絡和SP網絡的組播地址空間是完全隔離的,因此,如上圖所示C網絡的組播報文(控制消息和數據報文)在進入SP網絡之前都需要進行封裝。封裝的使用的地址是Default MDT或者DATA MDT的組播組地址,源地址使用的是SP網絡中某個接口(圖中使用的Lo0接口的IP地址)的源地址,這樣組播報文才能通過正常的組播路由到達那些Egress PE路由器。封裝的方式有很多種,包含GRE、IP-IP、MPLS封裝,這同具體的實現相關。實現至少需要支持GRE的封裝模式,並且默認啟動的就是GRE封裝模式。
3.5DATA MDT
如果在骨干網中只使用Default MDT,那么有可能會出現帶寬浪費的情況。例如,對於某個高速的組播流,而且所有的加入Default MDT的Egress PE都沒有接收者,但是所有的Egress PE路由器都將收到多余的組播業務流,然后丟棄這些組播業務報文。作為組播路由狀態來講,這種情況就不是最優的,而且高速的組播流將會占用骨干網很大的帶寬,而且增加那些沒有接收者的Egress PE路由器的負載。作為一種優化的措施,SP將可以根據一定的條件,為這些高速的組播源建立DATA MDT。只有那些具有接收者的Egress PE路由器才需要加入到這個DATA MDT。組播業務流不會再發送到那些不需要它們的Egress PE路由器。這解決了前面所說的兩個問題,但是這增加了P路由器維護的組播路由狀態。控制消息(PIM 的協議報文)仍然是通過Default MDT來進行傳送,所有的PE路由器都將收到並且處理這些控制消息。具體建立DATA MDT的處理過程簡述如下,當Ingress PE發現某個VPN的組播業務流已經達到了切換到DATA MDT條件之后,那么它開始向所有的PE鄰居發送MDT Join TLV(MDT 加入)消息,表示它將在DATA MDT分發樹上進行對應組播流的轉發。Ingress PE路由器在延遲一小段時間后,將使用DATA MDT的封裝地址封裝對應的VPN 組播業務流,在DATA MDT上進行組播業務流的轉發。而有接收者的Egress PE路由器在收到MDT Join TLV消息之后,它將加入到DATA MDT。一旦Ingress PE切換到DATA MDT,那么Egress PE路由器將從DATA MDT上接收到對應VPN的組播業務流。而沒有接收者的Egress PE路由器,將不加入DATA MDT,因此將不再接收到對應的組播業務流。
4典型應用
4.1單AS內MVPN部署
如上圖所示,在同一AS中,VPN a存在組播源和接收者。公網中運行OSPF和MPLS,各PE與CE之間運行RIP,並在各PE間建立BGP對等體連接以傳遞私網路由。
開展AS內的VPN組播業務,需要在所有設備的公網實例和VPN實例中分別使能IP組播路由;在PE和CE連有接收者的接口上使能IGMP;在各設備的所有公、私網接口上均使能PIM-SM,並分別為公網和各VPN選取合適的C-BSR和C-RP。此外,還需要為VPN a選取合適的default MDT 地址以及data MDT的地址池。