唐文萱 劉星宇 楊雪芹 梁勇



摘要:隨著互聯網視頻組播業務需求以及結合SDN網絡的優越性,設計并仿真了面向SDN網絡視頻組播系統。本系統采用模塊化設計思想,并結合一種跳數、帶寬和鏈路狀態相結合的組播路由控制策略,實現了系統的組播系統模塊的搭建過程以及視頻流媒體的播放過程。最后驗證組播路由控制策略和SDN在視頻組播系統上的結合,不僅能夠提高系統組播的流暢性和穩定性,而且也克服由于網絡擁塞、丟包等原因造成的視頻通信效果不穩定的問題。
Abstract: With the demand of Internet video multicast service and the superiority of SDN network, SDN network video multicast system is designed and simulated. This system adopts modular design idea, and combines a multicast routing control strategy that combines the number of jumps, bandwidth, and link state, and realizes the construction process of the multicast system module and the video streaming media playback process. Finally, the combination of multicast routing control strategy and SDN on video multicast system can not only improve the fluency and stability of system multicast, but also overcome the instability of video communication due to network congestion and packet loss.
關鍵詞:SDN;Ryu控制器;流媒體;組播;路由選擇
Key words: SDN;Ryu controller;streaming media;multicast;routing selection
中圖分類號:TP393.1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文章編號:1006-4311(2019)23-0234-04
0 ?引言
多媒體業務的快速普及使網絡中視頻應用的數量呈爆炸性增長,視頻通信正成為多媒體業務中發展最為迅速的領域。隨著新興的網絡架構軟件定義網絡(SDN)的出現,在SDN網絡架構下有許多以高帶寬網絡資源為需求的多媒體業務,這就需要SDN網絡中能提供組播業務,解決傳統IP挽留過由于網絡擁塞、丟包等原因造成的視頻通信效果不穩定的問題。
SDN架構為視頻組播提供的許多優勢,目前已經有了很多基于SDN的組播相關研究。如向熊研究在組播中實現基于流量的負載均衡,來避免鏈路擁塞;高強研究在控制層支持路由動態選擇,來達到明顯提升分層視頻流媒體傳輸質量的效果。陳亮研究設計具備IP組播功能的控制器,來生成多棵組播樹;張凱琳研究利用SDN中SVC組播實現的視頻會議架構,來滿足不同終端設備對于視頻會議系統的需求;這些文獻研究雖然是基于SDN網絡,但都是考慮影響組播路由的單一參數,并沒有綜合考慮多個因素(如組播的路由的跳數、時延、帶寬、負載均衡等),文章是根據SDN架構特點,設計并實現SDN網絡視頻組播系統,采用了跳數、帶寬和鏈路狀態相結合的路由控制策略,實現系統的多個模塊,并通過視頻播放效果驗證了該系統能克服的由于網絡擁塞、丟包等原因造成的視頻通信效果不穩定的問題。
1 ?SDN的架構
SDN的核心思想在于轉發平面與控制平面的分離,不再將紛繁復雜的軟件代碼與網絡硬件設備綁定,取而代之的是集中控制,網絡硬件設備只完成接收控制器指令并根據要求進行轉發的工作,從而達到控制器在上層視角,對網絡進行全局性控制的目的。基本的SDN 的三層式模型自下而上分別為設備層、控制層和應用層,如圖1所示。
2 ?面向SDN網絡視頻組播系統設計
2.1 SDN視頻組播系統架構設計
對應于SDN三層架構,基于SDN實現的流媒體組播系統架構如圖2所示,也分為三層,第一層設備層是基礎的網絡轉發設備,如OVS交換機、可以作為客戶端(組播成員)的虛擬用戶主機以及可以作為視頻服務器(組播源)的虛擬主機;第二層控制層是一個Ryu控制器,它提供與下層設備層和上層應用層進行通信的南向接口和北向接口;第三層應用層,主要包括了要實現路由功能的最重要的兩個部分,組播管理程序以及根據實際需求給出的路由控制策略,并將這個策略用于組播網絡設備上,實現對整個網絡路由的控制。
在圖2中,具體的視頻組播系統架構模塊完成功能如下:
①控制器:本組播系統選擇使用開源控制器Ryu作為控制層設備,RYU控制器作為整個系統的控制中心,完成組成員管理、信息維護、流表下發、組表下發、路由策略通知下發等工作。同時通過北向接口向應用層調用兩個主要組播管理程序(igmplib管理庫[15])以及組播路由控制策略,組播管理程序提供實現組播所需要的組表管理、流表管理、組管理、組成員管理等功能,并進行流媒體傳輸,而組播路由控制策略是所有組播內的成員按照此策略進行路由選擇。
②交換機:交換機指支持Openflow1.3版本協議的OVS交換機。交換機與上層Ryu控制器直接通過Openflow協議進行下發流表項與組表項信息,所有的信息管理全部在控制層中完成,OVS交換機負責接收并按照要求進行數據轉發即可。
③設備層:主要有視頻服務器(組播源)和客戶端(組播組成員),在視頻發送端,利用VLC播放器制作用于網絡流媒體數據。當一個客戶端(組播成員)想要加入進本次組播組內時,需要程序加入組播地址。
2.2 SDN視頻組播系統模塊功能設計
根據圖2中SDN視頻組播系統架構和功能,本文采用模塊化方法,將系統分為組播網絡拓撲模塊、組播管理模塊、路由控制策略模塊、視頻傳輸發送和接收模塊以及控制器監控模塊。
2.2.1 系統網絡拓撲模塊設計
首先通過Mininet建立實現組播系統的網絡拓撲如圖3所示,其中 c0為Ryu控制器,s1-s10是三層結構,s1-s2為核心交換機,s3-s6為匯聚交換機,s7-s10為邊緣交換機,均為OVS交換機,h1-h8是8個虛擬主機,虛擬主機h1為視頻播放源,h2-h8為組播組內成員, h3、h6、h8作為用戶依次加入組播組,從視頻服務器h1獲取視頻流媒體的傳輸。
2.2.2 系統組播管理模塊設計
本系統的控制器是Ryu,而igmplib庫是由Ryu研發公司開發的一款組播管理庫,主要完成組管理、組成員管理、流表管理等組播功能。
系統在igmplib庫的組管理的流表項的進行設置,當有主機在加入組播組時會發送report消息,離開組的時候會發送leave消息。一旦控制器收到report消息后,首先把接口加入到組里面,如果是第一次收到report消息就會下發流表項和組表項;如果在收到leave消息之后,因為不能確定是否有組成員連接到這個交換機,所以對流表項和組表項的操作查詢組成員接口,先刪除或者修改相關接口的流表項,然后修改或者刪除現有組表項。如果igmplib庫組管理的流表項設置成功,控制器直接可以通過app調用。
2.2.3 組播路由控制模塊設計
應用層的組播路由控制模塊是設計組播路由選擇算法。本系統采用帶寬、跳數和鏈路狀態綜合考慮的策略,組播路由控制的基本思想是,假如有一個數據流需要從S1交換機發送到S2交換機,首先在路徑空閑的狀態下,選取所有可能的達到路徑n條;接著,在所有的路徑下選取可能最小跳數的路徑,最后計算每一條最小跳數路徑的最小帶寬,然后比較路徑的最小帶寬的最大值,選取最大的帶寬的路徑進行數據傳輸,同時這條路徑標注為忙,并記錄到網絡拓撲視圖表。如果選取的路徑標狀態為忙,則選取狀態為空閑的次優路徑。
如圖4中S1到S2交換機的可能路徑為上、中、下三條,上路為3跳,每跳帶寬為2,5,8;中路為4跳,每跳帶寬為3,4,6,3;下路為3跳,每跳帶寬為4,5,6;先選取最短跳數的路徑上路和下路;接著選取最短路徑中最小帶寬值,即就是上路和下路的每一段帶寬的最小值,上路為2,下路為4;比較最小帶寬的最大值,上路為2小于下路的4,所以選出路徑為下路,同時標注所選取路徑的狀態為1,并記錄到網絡拓撲視圖中。
2.2.4 視頻傳輸發送和接收模塊
①視頻服務器(組播源)。在視頻發送端,利用VLC播放器制作用于網絡流媒體數據,同時在視頻發送端程序中,設置了IP網關地址(10.0.0.X),本系統SDN實現組播采用原IP網絡的D類組播地址,設置為224.1.1.1,進程端口號為1234,同時設置發送視頻的屬性。
②客戶端(組播組成員)。當一個客戶端(組播成員)想要加入進本組播組時,在該主機的終端接收端文件中只需指明其想要加入的組播地址和端口號224.1.1.1:1234。
2.2.5 控制器監控模塊
前4個模塊設計好之后,組播客戶端也能正常播放視頻,那么可以通過Ryu控制器端查看組播測試結果,不僅包括組播成員的加入,組播成員的變化情況,組播成員的離開等信息,而且還能查看中間交換機的流表項的狀態以及行為。
3 ?SDN視頻組播系統實現步驟
文章的仿真環境采用的是仿真軟件為Mininet(用來模擬網絡拓撲)、Ryu(控制器)和Python語言,同時在Ryu控制器中用igmplib庫來實現組播,并進行流媒體傳輸。根據設計的5個功能模塊,SDN視頻組播系統實現按照啟動控制器、啟動拓撲網絡(設備層各基礎網絡設備)、啟動組播源服務器、啟動客戶端接收、系統視頻播放結果以及控制器的監控的步驟進行,如圖5所示。
3.1 啟動控制器組播模塊
開啟Ryu控制器時控制器終端的進程如圖6所示,其中第1行multiple.py為組播路由控制策略模塊算法(路由算法的調用函數已寫進multiple.py,啟動時一并開啟),第2行ryu.controller.ofp_handler代表正在加載負責處理交換機管理以及基礎的Openflow事件管理的線程,例如下發流表、組表以及上下層信息通信的實現就依賴于這個進程。緊接著的兩行代表已經可以使用igmplib庫,后兩行代表著加載的前兩個進程已經加載完畢。此時只是控制器開啟了,還并未連通圖3系統拓撲網絡(未連通設備層)。
3.2 啟動拓撲網絡
啟動圖3設計的拓撲網絡時,Mininet的終端顯示內容如圖7所示,其中通過Adding controller、Adding host、Adding switches、Adding link的形式表現拓撲。其中的h1-h8為主機信息,s1-s10為交換機信息,(h1,s7)…(s8,s4)為鏈路連接信息,c0代表啟動控制器c0,Starting CLI出現以后可以進行命令行操作。
3.3 連通拓撲網絡
針對圖3的網絡拓撲圖,圖8的交換機與控制器之間已經連通,控制器終端信息更新,c0為Ryu控制器,s1-s10為OVS交換機,h1-h8是虛擬主機。其中顯示交換機s1-s10已連接(例如Switch 1 connected!),并開始產生正常的query問詢行為。
3.4 組播源發送和客戶端接收
接下來是組播源發送和客戶端接收,本系統選取主機h1作為組播源,則在h1的終端,發送視頻流過程如圖9所示。首先設置了網關,隨后的內容是生成流媒體的控制代碼,其中sout意為串行輸出,vcodec=h264是視頻轉碼要求,acodec=mpga為音頻轉碼要求,字符串長度128,采用雙工通信方式,采樣頻率為44100Hz,sout-keep代表持續性串流傳輸。h3、h6、h8加入組播組進行接收如圖10所示,只需把D類地址224.1.1.1:1234加入組播組即可。
3.5 系統視頻播放結果
若組播源為h1,客戶端h3、h6、h8需要加入組播組,h3、h6、h8接收到視頻的畫面如圖11和圖12所示。
圖11中組播源h1是黑屏、沒有圖像和聲音,是因為組播源視頻文件在源端被采樣、壓縮、編碼而變成數據包流,所以在源端的視頻文件是已經經過處理的,因而無法播放;圖11黃色方框①處,因為源端擁有完整的流媒體文件,因此在源端有視頻總時長,并可以顯示進度條;而在方框②處,接收端因為是實時流式接收,并不能得知視頻的總時長,所以并沒有進度顯示;在方框③處,客戶端通過D類組播地址加入組播組,h8的視頻播放器標題抬頭即為組播組地址以及相應進程端口號。
圖12是當h1作為組播源,每隔一段時間分別有一個、兩個、三個客戶端加入組播組時,整個視頻播放流暢,網絡穩定性高。這是因為基于SDN網絡,不會隨著客戶端的增多影響播放效果。同時,通過圖12的播放進度表明,源端h1播放進度都不會由其成員加入的時間早晚決定,而是不論何時加入的組播組,都是以組播源的播放進度為準。這就是實時流媒體傳輸。
由此可見實時流媒體傳播時,客戶端的接收具有實時性,當前接收的數據流不會因為成員新加入而從頭開始播放,始終以組播源的播放情況為準。
3.6 控制器監控信息
在實現組播的過程中,在控制器的終端不僅可以查看組播測試結果,而且可以看到組成員的信息變更如圖13所示,其中第1行為有新成員加入(Added),加入的地址為224.1.1.1,首次收到該信息,組播組成員數量暫時不明確,hosts[ ]為空;第2行為組播組成員變動,有新成員加入,加入的地址為224.1.1.1,首次收到該信息,目前組播組成員為3個(不包括組播源),hosts[3]為3;第3行為組播組成員變動,有組內成員離開(removed),離開的地址為224.1.1.1,首次收到該信息,目前組播組成員數量有待于確定,hosts[ ]為空;第4行為問詢網絡鏈路狀況,交換機s2的第3端口報告IGMP報文信息并被控制器接收成功;第5行為問詢網絡鏈路狀況,控制器向交換機的第2端口下發問詢消息并被交換機接收成功。至此整個面向SDN網絡的視頻組播系統仿真完成。
4 ?結論
本文研究面向SDN網絡視頻組播系統的設計與仿真,闡述了該系統的設計思想,模塊組成,同時,結合一種跳數、帶寬和鏈路狀態相結合的路由控制策略,最終展現了該系統搭建的過程以及最終的演示效果。該系統驗證了路由控制策略和SDN在視頻組播系統上的結合,能夠提高整個系統組播播放流暢度和網絡穩定性,而且也克服由于網絡擁塞、丟包等原因造成的視頻通信效果不穩定的問題。
參考文獻:
[1]黎亮,王彥昱,黎明.SDN分層組播視頻會議系統的實現與技術分析[J].通訊世界,2019,26(03):229-230.
[2]向熊.基于SDN網絡的流媒體阻比實現[J].信息技術,2018(10):121-125.
[3]陳量,瞿輝.基于SDN思路的組播實現[J].微處理機,2016,37(02):31-36,40.
[4]尤子揚.P2P流媒體視頻點播系統設計和研究[D].蘭州理工大學,2017.
[5]謝永斌,張宸.基于SDN的IP組播研究[J].信息通信,2015(02):202-203.
[6]高永順.面向SDN網絡組播路由問題研究[D].西南交通大學,2017.
[7]孫超.軟件定義網絡中流媒體QoE控制技術研究[D].山東大學,2018.