曹雪峰, 于萬國, 蔡永華, 朱會卿, 陳日升
(河北民族師范學院 數學與計算機系, 河北 承德 067000)
基于虛擬網絡的IP多播原理實驗設計
曹雪峰, 于萬國, 蔡永華, 朱會卿, 陳日升
(河北民族師范學院 數學與計算機系, 河北 承德 067000)
采用GNS3中整合的IOU和VirtualBox構建虛擬網絡實驗環境,設計了IP多播原理實驗方案。利用Wireshark協議分析軟件捕獲報文,通過對報文的分析闡述了IGMP協議加入、離開多播組的工作過程,PIM-SM協議共享樹和最短路徑樹的加入、剪枝過程,多播源注冊過程,共享樹和最短路徑樹之間的切換過程。驗證了IGMP和PIM-SM協議的工作過程,使學生從理論和實踐兩方面更好地理解IP多播的工作原理。
虛擬網絡; IP多播; PIM-SM; 共享樹; 最短路徑樹
隨著數據通信技術的發展,IP多播技術支持下的視頻點播、網絡電視和視頻會議等點到多點業務已經被廣泛應用[1-2],成為計算機網絡教學的一個重要內容。而學習計算機網絡協議的最好方法,就是通過對網絡中捕獲報文的分析,理解協議的報文格式、協議的工作原理和交互過程[3-4]。思科模擬軟件GNS3是一款開源的網絡模擬軟件[5-7],適用于多種操作系統,其整合的IOU占用物理機資源非常少,配合GNS3中集成的VirtualBox虛擬機,能夠完成一些非常復雜的網絡環境模擬配置,然后利用Wireshark分析虛擬網絡中捕獲的報文,以輔助學習計算機網絡協議。
1.1 因特網組管理協議
因特網組管理協議(internet group management protocol,IGMP)是一個組成員關系管理協議,主機通過此協議告訴本地路由器希望加入某個特定多播組的信息[8-11]。同時,路由器通過此協議周期性地查詢局域網內是否仍有屬于某個多播組的成員,實現所連網絡組成員關系的收集與維護。
主機發送組成員報告報文請求加入多播組,此報文有時也用于響應本地路由器發出的組成員查詢報文。當主機退出組時,向組地址224.0.0.2發送離開組報文,通知本地網絡中的所有路由器。
路由器只發送IGMP查詢報文,包括General Query和Group-Specific Query。路由器通過General Query報文向與其連接的所有網絡進行輪詢,來檢測網絡中有沒有組成員的情況。
通過上述機制,在多播路由器里建立起一張表,其中包含路由器的各個端口以及端口所對應的子網上都有哪些組的成員。當路由器接收到某個組G的多播報文后,只向那些有組G成員的端口上轉發多播報文。
1.2 多播路由選擇協議
協議無關多播稀疏模式(PIM-SM)是常用的多播路由選擇協議[12-14],適用于組成員分布相對分散而且范圍較廣,或者網絡帶寬資源有限等情況。運行PIM-SM協議的路由器周期性地發送Hello報文,用以發現鄰接的PIM-SM路由器,維護鄰居關系,并且負責在多路訪問網絡中進行指定路由器(DR)的選舉,通過建立多播分發樹來進行多播報文的轉發。多播分發樹包括以組G的匯聚點RP(RP可以通過手工指定或利用自舉機制動態選舉)為根的共享樹(RPT)和以多播源為根的基于源的樹,也稱為最短路徑樹(SPT)。
當主機加入一個多播組G 時,就發送組成員報告報文給DR,DR在多播路由表中生成了(*,G)表項,將接收到多播報文的接口IP地址加入該多播組的出站接口列表,并向該組所對應的RP方向發送join/prune加入報文。上游路由器如果沒有加入RPT,先在轉發表中生成(*,G)表項,將接收到加入報文的接口IP地址加入多播組的出站接口列表,并向該組的RP方向繼續發送加入報文,否則只需將收到加入報文的接口IP地址加入多播組的出站接口列表。重復此操作直到到達RP。這樣從DR到RP所經過的路由器就形成了RPT。當有多播組G的多播報文到達RP時,就會沿著已建立好的RPT到達DR,進而到達接收者。
當組成員離開多播組G時,與其直連的DR會逆著RPT向該組的RP方向逐跳發送join/prune剪枝報文;上游節點收到該報文后,在其出站接口列表中刪除與下游節點相連的接口,并檢查自己是否擁有該多播組的接收者,如果沒有,則繼續向其上游轉發該剪枝報文。另外,RPT建立后,路由器周期性向上游鄰居發送join/prune報文,以保持激活。如果在保持時間內沒有收到下游鄰居的join/prune加入報文,則將下游鄰居從其多播組的出站接口列表中刪除,從而完成剪枝。
多播源通過多播源注冊向RP通知多播源的存在。當多播源S向多播組G發送第一個多播報文時,連接多播源的DR就將收到的多播報文封裝成注冊報文,并以單播方式發送給對應的RP。RP收到該報文解封裝后,將其中的多播報文沿著RPT轉發給組成員,同時向多播源逐跳發送源為S的組G的join/prune加入報文,這樣從RP到多播源所經過的路由器就構建了SPT。然后,多播源沿著已建立好的SPT,在發送源注冊報文的同時也直接轉發對應的多播報文。RP收到直接轉發來的多播報文后,向與多播源直連的DR單播發送注冊停止報文,多播源注冊過程結束。此后,多播源沿SPT只轉發多播報文,不再封裝發送源注冊報文。
當連接接收者的DR發現從RP發往多播組G的多播報文速率超過了一定的閾值時,將由其發起從RPT向SPT的切換。首先是連接接收者的DR向多播源S逐跳發送(S,G)加入報文,并最終送達連接多播源的DR,沿途經過的所有路由器在其多播路由表中都生成了(S,G)表項和出站接口列表,從而建立了SPT;然后連接接收者的DR向RP逐跳發送包含RP位的剪枝報文。如果只有一個接收者,這時RP收到該報文后會向多播源方向繼續發送剪枝報文,從而最終實現從RPT向SPT的切換。從RPT切換到SPT后,多播報文直接從多播源發送到接收者。
1.3 多播高層協議
RTP是針對多媒體數據流的一種傳輸協議,位于UDP協議之上來傳輸單播或多播數據流,允許應用傳送音頻和視頻的實時負載,主要提供了時間信息和實現流同步。RTCP屬于RTP協議的一部分,它提供了流量控制和擁塞控制服務。
2.1 實驗拓撲結構
按圖1所示拓撲結構搭建基于虛擬網絡的IP多播原理實驗網絡[14-15]。其中7臺路由器是IOU Router,4臺主機是安裝了Windows XP操作系統的VirtualBox虛擬機,設備端口IP地址分配見表1。

圖1 IP多播原理實驗網絡拓撲結構圖

表1 虛擬機及路由器端口IP地址分配表
2.2 設備配置
R2路由器主要配置如下[15]:
R2#configure terminal R2(config)#interface ethernet 0/0 R2(config-if)#ip address 172.16.20.1 255.255.255.0 R2(config-if)#ip pim sparse-mode ! 配置PIM的模式為稀疏模式 R2(config-if)#no shutdown R2(config-if)#interface ethernet 0/1 R2(config-if)#ip address 172.16.21.1 255.255.255.0 R2(config-if)#ip pim sparse-mode R2(config-if)#no shutdown R2(config-if)#interface ethernet 0/2 R2(config-if)#ip address 172.16.22.1 255.255.255.0 R2(config-if)#ip pim sparse-mode R2(config-if)#no shutdown R2(config-if)#exit R2(config)#router ospf 1 R2(config-router)#network 172.16.11.0 0.0.0.255 area 0R2(config-router)#network 172.16.12.0 0.0.0.255 area 0R2(config-router)#network 172.16.13.0 0.0.0.255 area 0 R2(config)#ip multicast-routing !啟用多播路由功能 R2(config)#ip pim rp-address 1.1.1.1 !指定RP地址
其他路由器參考R2路由器進行配置。在4臺虛擬機上安裝VLC播放器,配置PC1為多播源。在VLC的“流輸出”對話框中,添加要播放的媒體文件,“新目標”選擇“RTP/MPEG Transport Stream”,設置地址為225.0.0.1,基本端口為5004。
在各鏈路段上執行捕獲報文命令,啟用Wireshark軟件開始抓包。在PC3虛擬機上選擇“打開網絡串流”選項,輸入地址RTP://225.0.0.1:5004,準備接收多播視頻。在虛擬機PC4、PC2上依序執行相同的操作。在虛擬機PC1上播放視頻,在另外3臺虛擬機上都能接收多播視頻后,按PC3、PC4、PC2和PC1的順序依次退出虛擬機上的VLC程序,并停止抓包。把各鏈路段上捕獲報文的文件進行合并,通過設置顯示過濾規則,可以只顯示與多播工作原理分析相關協議的報文。
3.1 IGMP協議工作過程分析
主機PC3發送9171號組成員報告報文,請求加入組地址為225.0.0.1的多播組,如圖2所示。路由器R5和R3發送9175、6132和6308號普通組成員查詢報文;當PC3離開多播組時,發送10796號離開組報文,連接PC3的R5發送10797號特殊組查詢報文,以確定在地址為225.0.0.1的多播組中是否還有其他的組成員。因此IGMP是用來在主機和與其直接相連的多播路由器之間建立、維護多播組成員關系的。

圖2 捕獲的IGMP報文
3.2 加入RPT過程分析
路由器R5收到PC3發送加入組成員的報告報文后,因為自己不是RP,又沒在RPT上,所以先在多播路由表中創建(*,225.0.0.1)表項,將Ethernet0/0加入出站接口列表,然后向RP方向發送15615號join/prune加入報文,如圖3所示。組地址為225.0.0.1,RP地址為1.1.1.1。路由器R6收到此報文后,同樣先創建(*,225.0.0.1)表項,并將Ethernet0/3加入出站接口列表,再向上游發送6455號join/prune加入報文;此報文到達R3(RP)后,由于路由器中沒有225.0.0.1多播組的路由表項,先創建(*,225.0.0.1)表項,并將Ethernet0/2加入出站接口列表,構建了一條以R3為根的RPT分支。

圖3 捕獲的PIM-SM加入或剪枝報文
路由器R7收到PC4發送加入組成員報告報文后,創建(*,225.0.0.1)表項,將Ethernet0/0加入出站接口列表,向上游發送13486號join/prune加入報文;路由器R6收到此報文后,因為已經加入了共享樹,因此只將Ethernet0/2加入(*,225.0.0.1)表項的出站接口列表,不再向上游發送join/prune加入報文,RPT又增加了一個分支。路由器R4收到PC2發送加入組成員報告報文后,創建(*,225.0.0.1)表項,將Ethernet0/0加入出站接口列表,向RP方向發送6314號join/prune加入報文,R3收到此報文后,只將Ethernet0/1加入(*,225.0.0.1)表項的出站接口列表,至此構建了完整的RPT,如圖4所示。

圖4 構造RPT和SPT示意圖
3.3 多播源注冊過程分析
通過對捕獲報文分析可以看到,多播源PC1發送的RTP報文封裝在42號UDP報文中,其源IP地址為172.16.20.10,目的IP地址為225.0.0.1。R2路由器收到此報文后,先把它封裝在3206號多播源注冊報文中,此報文源IP地址為172.16.20.1,目的IP地址為1.1.1.1,如圖5所示。

圖5 多播源注冊過程捕獲的報文
此注冊報文以單播方式傳送到R1,R1再通過6155號注冊報文轉發給R3。R3收到此報文后解封裝注冊報文,并將封裝在其中的多播報文沿著RPT轉發給R6和R4,這就是圖5中的6484和6331號報文。
R3收到6155號第一個注冊報文后,在沿著RPT轉發多播報文的同時,向多播源方向發送6156號join/prune加入SPT報文;R1收到此報文后,在多播路由表中創建(172.16.20.10,255.0.0.1)表項,將Ethernet0/1加入出站接口列表,同時R1向多播源方向發送3207號join/prune加入SPT報文;R2收到此報文后,向多播路由表中(172.16.20.10,255.0.0.1)表項的出站接口列表添加Ethernet0/1。至此,從RP到多播源所經過的路由器就構建了SPT。
此時R2收到PC1發送的第60號多播報文,既沿著SPT向R1發送3226號多播源注冊報文,同時也發送3227號直接轉發多播報文,R1收到這兩個報文后又轉發到R3,這就是圖5中的6176和6177號報文。R3在收到注冊報文的同時又收到了同一個UDP多播報文后,向與多播源直連的R2發送6179號多播源注冊停止報文,此報文的源IP地址是1.1.1.1,目的IP地址是172.16.21.1。R1收到此報文后向R2轉發,這就是圖5中的3229號多播源注冊停止報文。R2收到此報文后停止發送多播源注冊報文,多播源注冊過程結束,以后R2直接沿SPT轉發多播報文。
3.4 SPT切換過程分析
引起RPT向SPT切換的條件是DR發現從RP發往多播組G的多播報文速率超過了一定的閾值,在思科路由器上,這個值被默認設置為0,因此R5收到從R3轉發的第一個多播報文后,就向多播源方向的R2發送3390號join/prune加入SPT報文(見圖3),R2收到此報文,將Ethernet0/2加入(172.16.20.10,255.0.0.1)表項的出站接口列表。同樣,R7向多播源方向的R6發送13510號join/prune加入SPT報文。R6收到此報文,創建(172.16.20.10,255.0.0.1)表項,將Ethernet0/2加入出站接口列表,R6向R5發送15654號join/prune加入報文。R5收到此報文,將Ethernet0/1加入(172.16.20.10,255.0.0.1)表項的出站接口列表。R4向R6發送10891號join/prune加入報文,R6收到此報文后將Ethernet0/1加入(172.16.20.10,225.0.0.1)表項的出站接口列表。此時在R6路由器上顯示多播路由表內容如下:
R5#show ip mroute IP Multicast Routing Table Flags: D-Dense, S-Sparse, B-Bidir Group, s-SSM Group, C-Connected, L-Local, P-Pruned, R-RP-bit set, F-Register flag, T-SPT-bit set, J-Join SPT, M-MSDP created entry, E-Extranet, Outgoing interface flags: H-Hardware switched, A-Assert winner Timers: Uptime/Expires Interface state: Interface, Next-Hop or VCD, State/Mode (*, 225.0.0.1), 00:02:41/00:02:57, RP 1.1.1.1, flags: S Incoming interface: Ethernet0/0, RPF nbr 172.16.32.1 Outgoing interface list: Ethernet0/2, Forward/Sparse, 00:02:30/00:02:57 Ethernet0/3, Forward/Sparse, 00:02:41/00:02:47 (172.16.20.10, 225.0.0.1), 00:00:49/00:02:10, flags: T Incoming interface: Ethernet0/3, RPF nbr 172.16.63.2 Outgoing interface list: Ethernet0/1, Forward/Sparse, 00:00:49/00:02:40 Ethernet0/2, Forward/Sparse, 00:00:49/00:02:57
至此完成了從RPT向SPT切換后的SPT的構建。
但是這時RP還通過RPT向接收者轉發多播報文,造成接收者收到重復的多播報文,因此R4向R3發送6347號join/prune剪枝報文,通知R3不再通過Ethernet0/1接口轉發源地址為172.16.20.10的多播報文;同樣R5向R6發送15655號剪枝報文,R6繼續向R3方向發送6501號剪枝報文,R3收到該報文后向多播源方向的R1發送6192號剪枝報文,R1繼續向R2發送3242號剪枝報文,至此實現從RPT向SPT的切換。
當PC2、PC3和PC4離開多播組時,采用類似的join/prune剪枝報文剪枝SPT和RPT,在此不再贅述。
通過實驗,初步驗證了IGMP協議加入、離開多播組的工作過程,PIM-SM協議共享樹和最短路徑樹的加入、剪枝過程,多播源注冊過程,共享樹和最短路徑樹之間的切換過程等內容,體會了IP多播技術的實際應用,使學生從理論和實踐兩方面加深了對IP多播原理的理解。
References)
[1] 童文,許勇,胡雯.IP多播技術在遠程監控系統中的應用[J].計算機技術與發展,2013,23(9):174-177.
[2] 李亮,黃石平,臧勝鯤.組播技術高清數字電視直播系統在校園網中的應用[J].實驗室研究與探索,2015,34(1):118-121,237.
[3] Sanders C. Wireshark數據包分析實戰[M].諸葛建偉,陳琳,許偉林,譯.2版.北京:人民郵電出版社,2013.
[4] Orebaugh A, Ramirez G, Burke J, et al. Wireshark & Ethereal Network Protocol Analyzer Toolkit[M].Rockland:Syngress Publishing Inc,2007.
[5] 李林林,孫良旭,吳建勝.基于GNS3與VirtualBxo構建虛擬網絡工程實驗室研究[J].實驗技術與管理,2015,32(9):144-148.
[6] 顧春峰,李偉斌,蘭秀風.基于VMware、GNS3實現虛擬網絡實驗室[J].實驗室研究與探索,2012,31(1):73-75.
[7] Welsh C. GNS3 Network Simulation Guide[M]. Birmingham:Packt Publishing Ltd,2013.
[8] Williamson B.IP組播網絡設計開發:第1卷[M].顧金星,張擁軍,南親良,等譯.北京:電子工業出版社,2000.
[9] 謝希仁.計算機網絡[M].5版.北京:電子工業出版社,2008.
[10] 曹雪峰.計算機網絡原理:基于實驗的協議分析方法[M].北京:清華大學出版社,2014.
[11] Weinstein F. Internet Group Management Protocol: Version 2[J].Work in Progress,1997,17(6):241-243.
[12] Doyle J, Carroll J D.TCP/IP路由技術:第二卷[M].夏俊杰,譯.北京:人民郵電出版社,2009.
[13] Estrin D,Farinacci D,Helmy A,et al. Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification[S].IETF RFC 2362,1998.
[14] Fenner B,Handley M,Holbrook H,et al. Protocol Independent Multicast-Sparse Mode (PIM-SM):Protocol Specification (Revised)[S].IETF RFC 4601,2006.
[15] Solie K, Lynch L.CCIE實驗指南:第2卷[M].姚軍玲,顧彬,梅洪濤,等譯.北京:人民郵電出版社,2006.
Experimental design for principle of IP multicast based on virtual network
Cao Xuefeng, Yu Wanguo, Cai Yonghua, Zhu Huiqing, Chen Risheng
(Department of Mathematics and Computer,Hebei Normal University for Nationalities,Chengde 067000,China)
By using integrated IOU in GNS3 and VirtualBox software to build a virtual network experimental environment in a single computer, this paper designs the experimental scheme of IP multicast. Using Wireshark software to capture packets, through the analysis of packets, this paper expounds on the working processes of the IGMP protocol to join and leave the multicast group, the joining process and the pruning process of the PIM-SM(Protocol Independent Multicast-Sparse Mode) rendezvous point tree and the shortest path tree, the registration process of the multicast source, the switchover process between the rendezvous point tree and the shortest path tree. This paper verifies the IGMP protocol and the PIM-SM protocol’ working process, and can let students better understand the working principle of IP multicast from both theoretical and practical aspects.
virtual network; IP multicast; PIM-SM; rendezvous point tree; the shortest path tree
10.16791/j.cnki.sjg.2016.12.033
2016-06-28
國家民委高等教育教學改革研究項目(15114);河北民族師范學院科研項目(201406)
曹雪峰(1967—),男,河北隆化,碩士,副教授,主要研究方向為計算機網絡技術.
E-mail:cxf_cd@163.com
TP391.9
: A
: 1002-4956(2016)12-0132-05