張瀟男 石湘
摘要:在任意源組播(ASM)網絡環境的基礎上,對因PIM-SM協議構建組播路由過程中自動對組播共享樹向最短路徑樹(SPT)切換時所導致的組播數據丟失問題進行了分析。針對目前主流網絡設備避免SPT切換的幾種方法的優缺點進行了介紹,并指出在專網應用時的不合理性。通過原理分析和模擬環境試驗,提出了一種通過添加靜態組播組構建穩定組播路由,避免SPT切換的新方法。
關鍵詞:任意源組播;最短路徑樹;丟包
中圖分類號:TP393文獻標志碼:A文章編號:1008-1739(2020)09-57-3

0引言
組播較單播傳輸更節省網絡帶寬,而且廣播傳輸安全性高,因此組播已逐漸在網絡中得到較大規模應用。組播根據源和目的的不同,可分為ASM、源過濾組播(SFM)和指定源組播(SSM)三種模型。目前組播技術應用較為廣泛的是ASM模型,此模型假設不知道發送者和接收者的位置,因此需要在網絡中選取一個設備來當作橋梁去收集組播源和接收者的信息,這個設備就是匯聚點(RP),它為二者建立共享路徑樹(RPT)。因此RP即使不在最優路徑上,數據也要經過RP進行轉發。為了減少RP的負荷,接收者收到組播數據后會根據數據包的源地址重新建立接收者到發送者的最短路徑并進行切換,這就會導致數據在切換過程中瞬間丟失。本文對ASM的轉發機制進行了分析,依據分析結果提出了解決問題的措施。
1任意源組播路由的建立機制
ASM的實現方法是:①在網絡中維護一臺重要的PIM路由器,也稱組播RP,網絡中所有的PIM路由器都知道RP的位置;②當網絡中出現組成員時,最后一跳路由器向RP發送Join報文,逐跳創建(*,G)表項,生成一棵以RP為根的RPT;③當網絡中出現活躍的組播源時,第一跳路由器將組播數據封裝在Register報文中單播發往RP,在RP上創建(S,G)表項,注冊源信息,從而生成基于RP的SPT表項。
1.1 PIM-SM RPT構建
PIM-SM(ASM模型)RPT是一棵以RP為根,以PIM路由器為葉子的組播分發樹。
當網絡中出現組成員時,組成員端DR向RP發送Join報文,在通向RP的路徑上逐跳創建(*,G)表項,生成一棵以RP為根的RPT。加入報文從組成員端DR開始逐跳發送,直到RP,RPT構建如圖1所示。

1.2 PIM-SM組播源注冊
組播源注冊如圖2所示,在PIM-SM網絡中,任何一個新出現的組播源都必須首先在RP處注冊,繼而才能將組播報文傳輸到組成員。
具體過程如下:①組播源將組播報文發給源端DR;②源端DR接收到組播報文后,將其封裝在Register報文中,發送給RP;③RP接收到Register報文,將其解封裝,建立(S,G)表項,并將組播數據沿RPT發送到組成員。

1.3 PIM-SM SPT切換
在PIM-SM網絡中,一個組播組只對應一個RP,只構建一棵RPT。
在未進行SPT切換的情況下,所有發往該組的組播報文都必須先封裝在注冊報文中發往RP,RP解封裝后,再沿RPT分發。RP是所有組播報文必經的中轉站,當組播報文速率逐漸變大時,對RP形成巨大的負擔。
為了解決此問題,PIM-SM允許RP或組成員端DR通過觸發SPT切換來減輕RP的負擔。
(1)RP觸發SPT切換
RP收到源端DR的注冊報文后,將封裝在Register報文中的組播報文沿RPT轉發給組成員,同時RP會向源端DR逐跳發送Join報文。發送過程中在PIM路由器創建(S,G)表項,從而建立了RP到組播發送者的源路徑樹。
(2)組成員端DR觸發SPT切換
組成員端DR觸發SPT切換如圖3所示,組成員端DR周期性檢測組播報文的轉發速率,一旦發現(S,G)報文的轉發速率超過閾值,則觸發SPT切換。

組成員端DR向源端DR逐跳發送Join報文并創建(S,G)表項,建立源端DR到組成員DR的SPT。SPT建立后,組成員端DR會沿著RPT逐跳向RP發送剪枝報文,刪除(*,G)表項中相應的下游接口。剪枝結束后,RP不再沿RPT轉發組播報文到組成員端。
如果SPT不經過RP,RP會繼續向源端DR逐跳發送剪枝報文,刪除(S,G)表項中相應的下游接口。剪枝結束后,源端DR不再沿“源端DR-RP”的SPT轉發組播報文到RP。RP或者組成員端DR在接收到第一份組播報文時都會觸發各自的SPT切換。
2丟包分析與避免措施
2.1 SPT切換過程中造成丟包的分析
組成員端DR收到來自源端的第一份組播報文后便已得知發送端的源IP地址,接收端DR通過單播路由表向源端逐跳建立組播路由,組播路由完成后SPT建立。此時DR會對舊的轉發路徑進行清理,這就是組播的剪枝。剪枝完成后組播數據沿著SPT重新轉發切換才算全部完成。
可是這一切復雜過程發送者全然不知,組播數據傳輸不會中斷,剪枝完成前為了避免組播數據通過SPT和RPT同時轉發而造成數據重報,在剪枝過程中必然會出現轉發的瞬間中斷,當完成剪枝后組播數據才將會沿著最新的SPT繼續轉發,所以SPT切換過程中的丟包將不可避免。
2.2尋找避免路徑切換機制
通過上述分析得知,SPT切換是造成數據丟包的主要原因,避免丟包的思路應該是圍繞建立一個穩定的組播路由展開。目前避免路徑切換的主要方式是配置組成員DR的SPT不進行切換,通過強制改變設備默認配置從而保持組播的路由穩定。但在這種情況下,組播數據都會通過RP進行傳播,即使RP不是最優路徑。這種方法下組播路由雖得到穩定,但無法減輕RP設備的負擔。選擇一種通過接收端DR直接向組播源端建立一個穩定的SPT才是解決問題的最好方法。
在工程應用中有一種手動牽引組播數據流量的技術,即在接收端DR相應接口上配置靜態組播組??稍陟o態組播組加入中通過配置組播源地址的方式強行構建接收者到組播數據發送者的SPT,從而避免路徑切換。這種方式不僅可以實現路由的穩定,還可以減輕RP的負擔。
2.3確定組播源地址
要完成上述設置首先應確定組播發送者的地址(源地址)。獲取源地址是進行配置前的必要步驟,可通過Wireshark抓包軟件在接收端抓組播報文,并對組播數據報文流進行分析。
(1)配置端口鏡像
①配置抓包口:observe-port N interfacegigabitethernet;
②進入被觀察端口:Quidway-GigabitEthernetx/x/x;
③將此端口收到的數據復制到抓包口:port-mirroring to observe-port 1 inbound。端口配置完成后將裝有Wireshark軟件的計算機通過網口連接至配置好的抓包口,打開Wireshark準備進行抓包。
(2)確定特定組
首先確定任意源組播地址,任意源組播地址段一般為:224.0.1.0~231.255.255.255;233.0.0.0~238.255.255.255
抓包完成后在Wireshark中點擊需要設置的組播數據報文,在數據包IP層中找到IP的源地址即組播發送者的IP地址并進行記錄。
2.4配置組播組加入
靜態組播組加入應在組播接收端的DR路由器上進行使用,從而使接收端DR通過此命令建立長久穩定的SPT路徑。
①首先在交換機中打開組播路由功能:multicast routing-enable;
②找到接收者所在VLAN(N),然后進入3層vlanif(N)中:interface vlanif N;
③完成靜態組播組加入配置:igmp tatic-group;[group-address][source-address]。
2.5建立穩定SPT路徑
靜態組播組加入相當于在網絡中手動添加了穩定的組播組成員,可以實現組播數據的快速、穩定轉發,在用戶側接口配置靜態組播組并指定源地址后,接收端DR將按照組播源地址查找自身單播路由表并逐跳建立SPT。SPT隨著命令的存在而長期存在,組播路徑中的每跳路由器都會針對此組數據生成(S.G)表項,并明確上下行轉發端口,如圖4所示。

3應用效果
上述措施完成之后,在路由器A,D上進行組播路由查詢可以發現,從接收者R2到組播源S的每跳路由器都產生了(S.G)組播路由表項,如表1所示。

實際應用中,接收者R完整地接收了組播數據并未產生丟包。此時無論源端是否發送組播,接收者R2到組播源S的SPT仍然穩定建立,組播數據傳輸時,省去了組播路由建立的過程,靜態組播組加入后穩定了組播路徑,提高了轉發效率,避免了ASM模型中的SPT切換,從而避免了丟包的產生。
4結束語
上述分析以及提供的丟包避免措施可解決對于丟包率要求較高且使用組播ASM模型構建的專網之中,從原理出發找到問題根源,應用一些看似不相關的技術去彌補不好解決的機理問題。
參考文獻
[1]朱仕耿.HCNP路由交換學習指南[M].北京:人民郵電出版社,2017.
[2]武忠,于紅增.同源同宿SSM組播路由控制技術研究[J].計算機與網絡,2014,40(7):64-66.
[3]徐俊,陳雪軍,趙乾宏,等.航天測控通信IP網中可控組播的實現[J].遙測遙控,2012,33(4):61-63,68.
[4]李乃振.專網組播應用設計與安全策略[J].四川兵工學報, 2015,36(7):113-116,124.
[5]狄彩云,張英,狄衛國,等.航天測控通信中指定源組播的技術研究[J].無線電工程,2014,44(9):5-7.
[6]方山,李華.指定源組播原理分析與應用研究[J].中國新通信,2016,18(23):90.