李衛平, 黨 琦
(1.西北工業大學航天學院,西安 710069;2.西安衛星測控中心,西安 710043)
隨著網絡帶寬以及多媒體業務的發展,組播(Multicasting)技術越來越受到用戶的青睞。采用組播技術,能有效節省帶寬,控制網絡流量,減輕服務器負荷,降低網絡負載,避免資源的無謂浪費[1]。
目前廣泛使用的任意源組播(Any-Source Multicast,ASM)模型對于組播源沒有特別要求和限制,支持一對多和多對多的通信。該模型一般采用組成員管理協議IGMPv2和PIM-SM(PIM-稀疏模式)。主機使用IGMP告知路由器加入或離開一個組,路由器將組成員變化情況通告給匯聚點(Rendezvous Point,RP),RP是PIM-SM協議運行的核心,同時維護組成員表(*,G)和有關發送源的表(S,G),并據此形成共享樹和最短路徑樹,從而實現組播數據的轉發。但ASM 存在諸如訪問控制缺乏、RP單點瓶頸風險、組播轉發不經濟等缺點[2],所以在一些組播源已知的專用網絡中,指定源組播(Specified Source Multicast,SSM)模型逐漸發展起來。
SSM模型的網絡相對于傳統的ASM網路來說,具有非常突出的優越性。SSM使用組播源地址和組播組地址對(S,G)[3]來標識一個組播會話,不需要RP的幫助,直接建立由(S,G)標識的一個組播最短路徑樹(Shortest Path Tree,SPT),減少了源的發現過程,跳過了RP和共享樹規程。由于網絡中不再需要匯聚點,也不再需要共享樹或RP的映射,提高了網絡對組播業務轉發的效率,另外SSM仍保留了主機顯式加入組播組的高效性。但是,為了成功實施SSM組播業務,除了要求網絡端到端地支持網絡組播和SSM模式外,同時還要求網絡和應用支持IGMPv3協議。IGMP協議用于主機向鄰接的多播路由器報告它們的組成員關系。IGMPv3對v1/v2進行了兼容和改進,增加了關于組播源的過濾模式(Include或Exclude),使主機不僅可以指定要加入的組播組,還能明確要求接收或拒絕從某特定組播源發出的組播信息[4]。
SSM通過IGMPv3來維護主機與路由器之間的關系,但并非所有操作系統都支持IGMPv3。本文通過對靜態映射方法、程序實現方法以及IGMPv3模擬方法的論述,以支持 IGMPv3的 Windows XP和不支持IGMPv3的 Windows 2000操作系統為例,說明了在Windows平臺下主機實現對SSM模型的支持方法。
SSM模型要求在接收者主機所在的網段,路由器能夠了解主機加入組播組時所指定的組播源。如果接收者主機上運行的是IGMPv3,則可以在IGMPv3的報告報文中直接指定組播源的地址。Windows XP以上版本提供了對IGMPv3的支持,可在應用程序中利用IP_ADD_SOURCE_MEMBERSHIP增加對Include和Exclude的通告,利用 IP_DROP_SOURCE_MEMBERSHIP實現源組播的退出通告,這樣即可實現主機對SSM的支持。
例如在圖1中,網絡中存在Source1和Source2兩個組播源,均向組播組G發送組播報文。HostB僅對從Source1發往G的信息感興趣,而對來自Source2的信息沒有興趣。當主機與路由器之間運行了IGMPv3之后,HostB就可以要求加入Source1所對應的組播組G,或要求退出Source2所對應的組播組G,這樣就只有來自Source1的組播信息才能傳遞給HostB了。XP下VC程序示例如圖2、圖3所示。

圖1 指定源組的組播流路徑Fig.1 Path of multi-membership

圖2 加入源組播Fig.2 Joining the source membership

圖3 退出源組播Fig.3 Exit from the source membership
并非所有的主機都支持 IGMPv3,例如 Windows 2000以下版本。這些接收者主機只能運行IGMPv2,IGMPv2的報告報文中無法指定組播源的地址。這種情況下可通過在路由器(或三層交換機)上配置SSM Mapping功能,將IGMPv2報告報文中所包含的(*,G)信息映射為(S,G)信息,從而為運行IGMPv2的接收者主機提供對SSM模型的支持。
當路由器收到來自主機的IGMPv2報告報文時,首先檢查該報文中所攜帶的組播組地址G,然后根據檢查結果的不同分別進行處理。
1)如果G不在SSM組地址范圍內,則提供ASM組播服務。
2)如果G在SSM組地址范圍內:
①若路由器上沒有G對應的SSM Mapping規則,則丟棄該報文,不提供該組播的SSM服務;
②若路由器上有G對應的SSM Mapping規則,則依據規則將報告報文中所包含的(*,G)信息映射為(S,G)信息,并提供SSM服務。
以華為三層交換機配置示例,如圖4所示。

圖4 華為三層交換機配置Fig.4 Huawei switch configuration
利用SSM-Mapping盡管可以實現對SSM的支持,但是網絡配置工作量較大,而且無論源或組地址更改都需要重新進行映射配置,給網絡維護帶來風險。
通過研究IGMPv3協議可以發現,該協議的核心實際是定義了主機與網絡設備的查詢和應答流程。所以,主機應用程序只需要按協議規定的流程以正確的格式對網絡設備的查詢進行應答,如圖5所示,即可實現對IGMPv3協議的支持。

圖5 IGMPv3成員關系查詢及上報Fig.5 IGMPv3 membership query and report
利用這個思路,結合IGMPv3協議的要求,以Windows 2000系統為例,可設計模擬IGMPv3協議的應用程序,流程如圖6所示。應用程序創建原始套接字[5],監聽路由器的成員關系查詢消息報文,當收到查詢時,根據本地接收組以及已知的源地址,按照IGMPv3規定的格式,加工組成員關系報告消息報文[6]并向網絡設備專用組發送,路由器收到該報文,即認為終端設備支持IGMPv3,從而實現了對SSM協議的支持。

圖6 主要程序流程Fig.6 Main program flow chart
按此方案開發的測試程序,在 Windows 2000、Windows XP以及Windows 2003系統下進行了測試,測試連接示意圖如圖7所示,網絡設備分別使用華為設備和CISCO設備。

圖7 Win 2000系統下測試連接示意圖Fig.7 Testing connection under Win 2000
圖8為網絡發送測試程序運行效果,發送端數據可設置為連續碼、固定55碼或固定AA碼,并在指定位置通過設置發送的幀速率可調節發送速率;圖9為指定源接收程序運行效果,通過判斷接收數據幀數是否連續,可以測定指定源接收是否存在丟幀、重幀的現象。測試結果說明,利用該方法編制的IGMPv3程序運行正常,功能正確,可以滿足指定源組播對終端設備的要求。值得說明的是,考慮到 Windows XP以及Windows 2003本身具備對IGMPv3協議的支持,所以使用此方法,可解決原有任意源組播的應用程序支持指定源組播的特殊需求。即增加IGMPv3模擬程序負責與網絡設備進行指定源組播的通告,而原程序版本不需更改。

圖8 Win2000系統下發送測試程序Fig.8 Sending program under Win 2000

圖9 Win2000系統下接收測試程序Fig.9 Receiving program under Win 2000
在已知組播源的專用網絡中,SSM相對于傳統的ASM,具有非常突出的優越性,系統網絡中不再需要匯聚點,不但效率高,而且簡化了網絡配置及組播地址分配。隨著指定源組播技術的發展和成熟,必將在實時數據傳輸等方面得到越來越廣泛的應用。
Windows平臺對SSM的支持有多種方法,對于支持IGMPv3協議的Windows XP以上版本,僅需采用終端應用程序進行(S,G)加入或退出的聲明即可。針對不支持IGMPv3的Windows 2000及以下版本,利用在三層交換機上配置SSM-Mapping可實現對SSM的支持。在終端運行外掛IGMPv3模擬軟件無疑是一個更好的解決途徑。即使對于Windows XP及以上版本,若要使原有支持任意源組播的應用程序具備SSM的支持能力,又不能對原有應用程序改動,也可利用外掛模擬協議的程序。
[1]華為技術有限公司.SSM技術白皮書[S].深圳:華為技術有限公司,2007.
[2]沈富可.特定源組播協議研究[J].西北大學學報,2004,34:21-24.
[3]BHATTACHA PYYA S.特定源組播概述[Z].The Internet Society,2003.
[4]Network Working Group B.RCF3376英特網組管理協議[Z].3版.The Internet Society,2002.
[5]羅軍舟,黎波濤,楊明,等.TCP/IP協議及網絡編程技術[M].北京:清華大學出版社,2004.
[6]BEHROUZ A,FOROUZAN S,CHUNG F.TCP/IP 協議族[M].謝希仁,等譯.北京:清華大學出版社,2006.