深入探討IP多播路由協議的實際應用
了解一些關于IP多播路由協議的知識還是非常有用的,這里我們主要介紹IP多播路由協議,多播路由的一種常見的思路就是在多播組成員之間構造一棵擴展分布樹。在一個特定的“發送源,目的組”對上的IP多播路由協議流量都是通過這個擴展樹從發送源傳輸到接受者的,這個擴展樹連接了該多播組中所有主機。不同的IP多播路由協議使用不同的技術來構造這些多播擴展樹,一旦這個樹構造完成,所有的多播流量都將通過它來傳播。
根據網絡中多播組成員的分布,總的說來IP多播路由協議可以分為以下兩種基本類型。***種假設多播組成員密集地分布在網絡中,也就是說,網絡大多數的子網都至少包含一個多播組成員,而且網絡帶寬足夠大,這種被稱作“密集模式”(Dense-Mode)的多播路由協議依賴于廣播技術來將數據“推”向網絡中所有的路由器。密集模式IP多播路由協議包括距離向量IP多播路由協議(DVMRP:Distance Vector Multicast Routing Protocol)、多播開放最短路徑優先協議(MOSPF:Multicast Open Shortest Path First)和密集模式獨立多播協議(PIM-DM:Protocol-Independent Multicast-Dense Mode)等。
多播路由的第二種類型則假設多播組成員在網絡中是稀疏分散的,并且網絡不能提供足夠的傳輸帶寬,比如Internet上通過ISDN線路連接分散在許多不同地區的大量用戶。在這種情況下,廣播就會浪費許多不必要的網絡帶寬從而可能導致嚴重的網絡性能問題。于是稀疏模式IP多播路由協議必須依賴于具有路由選擇能力的技術來建立和維持多播樹。稀疏模式主要有基于核心樹的多播協議(CBT:Core Based Tree)和稀疏模式獨立協議多播(PIM-SM:Protocol-Independent Multicast-Sparse Mode)。
密集模式協議
(1)距離向量IP多播路由協議 (DVMRP)
***個支持多播功能的路由協議就是距離向量IP多播路由協議。它已經被廣泛地應用在多播骨干網MBONE上。DVMRP為每個發送源和目的主機組構建不同的分布樹。每個分布樹都是一個以多播發送源作為根,以多播接受目的主機作為葉的最小擴展分布樹。這個分布樹為發送源和組中每個多播接受者之間提供了一個最短路徑,這個以“跳數”為單位的最短路徑就是DVMRP的量度。當一個發送源要向多播組中發送消息時,一個擴展分布樹就根據這個請求而建立,并且使用“廣播和修剪”的技術來維持這個擴展分布樹。
擴展分布樹構建過程中的選擇性發送多播包的具體運作是:當一個路由器接收到一個多播包,它先檢查它的單播路由表來查找到多播組發送源的最短路徑的接口,如果這個接口就是這個多播包到達的接口,那么路由器就將這個多播組信息記錄到它的內部路由表(指明該組數據包應該發送的接口),并且將這個多播包向除了接受到該數據包的路由器以外的其他臨近路由器繼續發送。如果這個多播包的到達接口不是該路由器到發送源的最短路徑的接口,那么這個包就被丟棄。這種機制被稱為“反向路徑廣播”(Reverse-Path Broadcasting)機制,保證了構建的樹中不會出現環,而且從發送源到所有接受者都是最短路徑。對子網中密集分布的多播組來說DVMRP能夠很好的運作,但是對于在范圍比較大的區域上分散分布的多播組來說,周期性的廣播行為會導致嚴重的性能問題。DVMRP不能支持大型網絡中稀疏分散的多播組。
(2)多播開放最短路徑優先 (MOSPF)
開放最短路徑優先(OSPF)是一個IP多播路由協議,它將數據包在最小開銷路徑上進行路由傳送,這里的開銷是表示鏈路狀態的一種量度。除了路徑中的跳數以外,其他能夠影響路徑開銷的網絡性能參數還有負載平衡信息、應用程序需要的QoS等。MOSPF是為單播路由多播使用設計的。MOSPF依賴于OSPF作為單播路由協議,就象DVMRP也包含它自己的單播協議一樣。在一個OSPF/MOSPF網絡中每個路由器都維持一個***的全網絡拓撲結構圖。這個“鏈路狀態”信息被用來構建多播分布樹。
每個MOSPF路由器都通過IGMP協議周期性的收集多播組成員關系信息。這些信息和這些鏈路狀態信息被發送到其路由域中的所有其他路由器。路由器將根據它們從臨近路由器接收到的這些信息更新他們的內部連接狀態信息。由于每個路由器都清楚整個網絡的拓撲結構,就能夠獨立的計算出一個最小開銷擴展樹,將多播發送源和多播組成員分別作為樹的根和葉。這個樹就是用來將多播流從發送源發送到多播組成員的路徑。
(3)獨立多播密集模式協議(PIM-DM)
獨立多播協議(PIM)是一種標準的IP多播路由協議,并能夠在Internet上提供可擴展的域間多播路由而不依賴于任何單播協議。PIM有兩種運行模式,一種是密集分布多播組模式,另一個是稀疏分布多播組模式,前者被稱為獨立多播密集模式協議(PIM-DM),后者被稱為獨立多播稀疏模式協議(PIM-SM)。PIM-DM有點類似于DVMRP,這兩個協議都使用了反向路徑多播機制來構建分布樹。它們之間的主要不同在于PIM完全不依賴于網絡中的單播路由協議而DVMRP依賴于某個相關的單播路由協議機制,并且PIM-DM比DVMRP簡單。
PIM-DM協議和所有的密集模式IP多播路由協議一樣也是數據驅動的。但是既然PIM-DM不依賴于任何單播路由協議,路由器某個接收端口(就是返回到源的最短路徑的端口)接收到的多播數據包被發送到所有下行接口直到不需要的分枝從樹中被修剪掉。DVMRP在樹構建階段能夠使用單播協議提供的拓撲數據有選擇性的向下行發送數據包,PIM-DM則更加傾向于簡單性和獨立性,甚至不惜增加數據包復制引起的額外開銷。
稀疏模式多播路由協議
當多播組在網絡中集中分布或者網絡提供足夠大帶寬的情況下,密集模式IP多播路由協議是一個有效的方法,當多播組成員在廣泛區域內稀疏分布時,就需要另一種方法即稀疏模式IP多播路由協議將多播流量控制在連接到多播組成員的鏈路路徑上,而不會“泄漏”到不相關的鏈路路徑上,這樣既保證了數據傳輸的安全,又能夠有效的控制網絡中的總流量和路由器的負載。
(1)基于核心樹的多播協議 (CBT)
和DVMRP和MOSPF為每個“發送源、目的組”對構建最短路徑樹不同的是,CBT協議只構建一個樹給組中所有成員共享,這個樹也就被稱為共享樹。整個多播組的多播通信量都在這個共享樹上進行收發而不論發送源有多少或者在什么位置。這種共享樹的使用能夠極大的減少路由器中的多播狀態信息。
CBT共享樹有一個核心路由器用來構建這個樹。要加入的路由器發送加入請求給這個核心路由器。核心路由器接收到加入請求后,沿反路徑返回一個確認,這樣就構成了樹的一個分枝。加入請求數據包在被確認之前不需要一直被傳送到核心路由器。如果加入請求包在到達核心路由器之前先到達樹上的某個路由器,該路由器就接收下這個請求包而不繼續向前發送并確認這個請求包。發送請求的路由器就連接到共享樹上了。 CBT將多播流量集中在最少數量的鏈路而不是在一個基于發送源的共享樹上。集中在核心路由器上的流量可能會引起多播路由的某些問題。某些版本的CBT支持多個多播核心的使用,和單個多播核心相比多核心更能達到負載平衡。
(2)獨立多播稀疏模式協議 (PIM-SM)
和CBT相似,PIM-SM被設計成將多播限制在需要收發的路由器上。PIM-SM圍繞一個被稱為集中點(RP:Rendezvous Point)的IP多播路由協議構建多播分布樹。這個集中點扮演著和CBT核心路由器相同的角色,接收者在集中點能查找到新的發送源。但是PIM-SM比CBT更靈活,CBT的樹通常是多播組共享樹,PIM-SM中的獨立的接收者可以選擇是構建組共享樹還是最短路徑樹。PIM-SM協議最初先為多播組構建一個組共享樹。這個樹由連接到集中點的發送者和接收者共同構建,就像CBT協議圍繞著核心路由器構建的共享樹一樣。這共享樹建立以后,一個接受者(實際上是最接近這個接收者的路由器)可以選擇通過最短路徑樹改變到發送源的連接。這個操作的過程是通過向發送源發送一個PIM加入請求完成的。一旦從發送源到接收者的最短路徑建立了,通過RP的外部分枝就被修剪掉了。