張寬






摘要:隨著物聯網產業的發展,實時多媒體數據傳輸業務顯著增加。本文采用UDP-TCP混合機制實現傳輸速率控制和丟包重傳,提出了一種基于代理的應用層組播(ALMP)方法實現多媒體數據的并發傳輸。最后,測試了數據轉發節點在并發傳輸中的性能。結果表明,在用戶具有高度并發操作的情況下,數據轉發節點的工作是有效和可靠的,與傳統方法相比,本文提出的基于代理的應用層組播方法在優化數據轉發節點性能方面是有效的。
關鍵詞:實時多媒體;并發;傳輸控制;應用層組播
1. 引言
隨著物聯網產業的興起,越來越多的數據需要在異構網絡中傳輸。監控設備、手機等作為終端設備需要傳輸大量的多媒體數據。特別是由這些設備組成的監控系統需要實時傳輸多媒體數據,其典型的傳輸方式是:采集的多媒體數據經過壓縮編碼后實時發送到網絡。然后用戶從互聯網上接收數據,并對數據進行解碼回放。與傳統的FTP、E-mail等業務相比,這種傳輸方式在實時性、容錯性、媒體同步性等方面有著嚴格的要求。
物聯網的快速發展大大增加了終端設備的使用。多媒體數據業務的實時傳輸量呈爆炸式增長。當前的Internet是一個異構網絡,它以盡力而為的方式工作。它的終端接入、可用帶寬、時延抖動、損耗等因素都是動態的、不可預測的,因此單一的傳輸協議很難滿足實時多媒體數據傳輸的要求,特別是當終端和用戶數量達到一定水平時,關鍵節點的性能處于并發狀態傳播將是一個巨大的挑戰。如何在當前的Internet環境下實現多媒體數據傳輸的高并發性是一個亟待解決的問題。
2. 基于代理的應用層組播方法
基于代理的應用層組播(ALMP)策略性地在Internet上部署了一些高性能的服務器。這些服務器由代理服務器維護,并進行數據復制和傳輸。該方法不需要與IP組播相關的固定網絡設備,可以根據特定的網絡環境動態調整一些參數[1]。ALMP按其功能可分為兩個平面,一個是組播控制平面,另一個是組播數據轉發平面。
2.1 多播控制平面
組播控制平面的核心功能是構造和維護應用層組播樹。它負責每個節點的組成員合法地加入或退出組播樹。ALMP采用分層的思想構建整個組播樹。它將整個組播樹分為兩層,每層維護自己的組播組成員,其中一層的變化對另一層沒有影響,從而降低了整個組播控制平面的維護成本。代理作為組播的根節點,負責數據復制和傳輸的服務器作為第一級子節點,構成組播樹的第一層。提供源多媒體數據的設備是二級子節點,接收數據的用戶是最終葉節點。設備和用戶是多播樹的第二層。組播樹的整體結構如圖1所示。
在ALMP組播樹的第一層,代理節點是根節點r,相應的服務器是f(i)(i=1,2,3)。根節點根據每個子節點的負載狀態動態調整f(i)的數據轉發任務量。我們將轉發節點中提供源數據的設備數作為每個f(i)的負載指數。假設每個節點的負載限制為100。節點f(1)在某個時刻達到最大負載,此時有新的數據源要加入到f(1)的組播組中,因此代理將檢測其子節點的狀態,并找到負載最小的節點f(2)。然后代理將部分轉發任務從f(1)轉移到f(2))。該方法可以優化組播樹中第一級子節點的性能。該過程如圖2所示。
在ALMP組播樹的第二層中,每二級子節點都會自行維護其葉節點。用戶加入二級子節點的組播組時,需要遵守一定的規則。規則如下。
(1)每個用戶可以加入幾個不同的多播組。
(2)嘗試加入父節點加載較輕的第二級子節點。
(3)為了獲得更好的多媒體質量,嘗試選擇網絡條件較好的節點。
(4)加入多播組的用戶使用“keepalive”機制(即心跳機制)來確保用戶的在線狀態。
用戶離開第二級子節點時,有兩種狀態:葉節點:
1) 正常左:用戶在離開節點之前向代理發送消息。
2) 左不正確:異常發生,用戶突然下降。
在案例1中,在用戶向代理發送離開消息后,需要在整個組播樹中找到那些具有此葉節點的組播組,并刪除這些組播組中的葉節點。因此,我們利用深度優先算法找到葉子,然后搜索其直接前體,即它所屬的組。最后,我們刪除了這些組中的葉節點。假設我們需要刪除的葉節點是節點8。搜索此節點的順序是選擇最左邊的路徑,直到葉節點,然后訪問葉節點的所有兄弟節點。如果所有兄弟節點不是我們需要的節點,那么返回到葉節點的父節點。然后訪問右側父節點及其子節點的最近兄弟節點。重復此過程,直到找到我們需要的節點。在找到節點8后,我們反向搜索其直接前體7和9,刪除7和9組播組中8的信息[2]。該過程如圖3所示。
在第二種情況下,我們根據keepalive機制檢測葉節點。葉節點周期性地向其所屬的組播組發送心跳數據報。如果組播組節點長時間沒有接收到心跳數據報,則將該葉節點視為死節點,刪除該葉節點的信息。
2.2 多播數據轉發平面
組播數據轉發平面的主要功能是基于ALMP組播樹進行數據傳輸。在ALMP組播樹中,我們可以看到每個第二級子節點都有n個葉節點,即提供源數據的每個設備都有n個用戶。第一級子節點是數據復制轉發節點,負責將源組播數據傳輸給每個用戶[3]。
當數據源請求加入一級子節點的組播組時,服務器將為數據源打開一個信道,服務器和數據源之間的通信是單播的。當用戶請求數據源的多媒體時,服務器和用戶之間的通信也是單播的[4]。為了減少數據傳輸的延遲,我們不在服務器上設置緩沖區,即服務器在接收到任何數據時,根據組播組的信息立即傳輸數據。我們需要考慮服務器的上行帶寬、下行帶寬和CPU利用率。系統的性能特點是具有以下功能:
其中,fu是服務器的上行帶寬,fd是下行帶寬,sb(i)是CPU總利用率,sc(i)是數據源需要的帶寬,tc(j)是設備需要的CPU利用率,是用戶需要的CPU利用率。
3. 實驗結果
在并發傳輸過程中,代理只維護組播樹。由于單個數據源/用戶與數據轉發節點之間的通信是單播的,因此如果數據源和用戶有足夠的帶寬,則可以保證傳輸可用。但是數據轉發節點需要接收、復制和傳輸數據。通過UDP傳輸數據時,大量的多線程操作和socket文件描述符資源消耗了大量的CPU。因此在整個傳輸過程中,數據轉發節點承受的壓力最大。我們使用專業的性能測試工具LoadRunner對數據轉發節點進行測試,關鍵性能指標是節點在高并發條件下的CPU利用率。
我們使用LoadRunner來模擬200個用戶。首先,用戶同時要求多媒體。數據到達后,用戶切斷與數據轉發節點的連接等。這樣,數據轉發節點需要做大量的資源請求和釋放工作,此時CPU利用率最高。圖4示出了數據轉發節點在25分鐘內的CPU利用率。
從圖中可以看出,CPU利用率為21.6%,沒有明顯的波動。這說明在用戶具有高度并發操作的情況下,數據轉發節點的工作是有效和可靠的。
在第2節中,我們提到組播控制平面可以優化數據轉發節點的性能,其調度策略類似于分布式系統。為此,我們設計了一個實驗,通過兩種方法來測試不同CPU數的節點的響應時間:一種是像傳統的方法一樣提高節點的硬件性能,即將所有CPU放在一個節點上;另一種是增加節點數,將CPU分散到不同的節點上,因此我們在組播控制中采用了調度方法飛機。最后得到的結果如圖5所示。
從圖5可以看出,當CPU數為2時,兩種方式的節點響應時間沒有明顯差異。但是當CPU數量增加時,第二種方式的響應時間顯著減少。這表明,在優化數據轉發節點的性能時,提出的基于代理的應用層組播方法與傳統方法相比是有效的。
4. 結論
本文分析了實時多媒體并發傳輸的關鍵技術,研究了實時多媒體的分層傳輸過程。特別是在傳輸控制層,采用UDP-TCP混合機制實現速率控制和丟包重傳。在此基礎上,提出了一種基于代理的應用層組播方法來實現路由固定場景的并發傳輸。分析了數據轉發節點的性能。相信本文對實時多媒體的高并發傳輸具有一定的指導意義。
參考文獻:
[1] 谷冰. 試析多媒體技術中關鍵技術[J]. 計算機光盤軟件與應用, 2014, 17(24): 219-220.
[2] 陳小平. 基于移動互聯網多媒體實時傳輸技術研究與應用[J]. 數字技術與應用, 2014(06): 25-28.
[3] 吳進, 賀輝, 洪輝. 多媒體數據流實時傳輸技術研究[J]. 通信技術, 2009, 42(01): 342-344.
[4] 王再見, 萬婷, 吳丹丹, 等.一種嵌入式實時網絡多媒體數據傳輸方法[J]. 系統仿真學報, 2017, 29(04): 808-817.
西安工業大學