馬 躍, 柴安穎,2, 于碧輝, 于 波
1(中國科學院 沈陽計算技術研究所,沈陽 110168)
2(中國科學院大學,北京 100049)
隨著全球經濟的不斷發展,互聯網不斷融入人們的生活,視頻通話越來越受人們青睞,多方音視頻通信成為一種很受歡迎的通信方式. 在各通信系統的媒體流傳輸中,存在兩種網絡傳輸方式: 一種是星狀網絡拓撲,另一種是網狀網絡拓撲. 但現有的通信方案往往只選取其中一種方法作為媒體流傳輸方式,沒有充分融合兩種方式的各自優勢來提高系統對媒體流的處理能力.
實驗室現有視頻會議系統方案采用星狀網絡拓撲這種傳統傳輸方式,系統客戶端采用WebRTC技術[1]進行音視頻處理,服務端通過SIP信令集中模式對視頻會議進行會議控制,并運用WebRTC與SIP的轉換網關實現雙方互通,使視頻會議系統音視頻通話質量有所保障,同時能夠更容易對接到IMS網絡[2],滿足融合通信的基本要求. 本系統雖然能夠正常提供音視頻通話,但當會議組遇到網絡擁塞或系統負載過重時,系統本身無法改變媒體流轉發方式,更不能自適應調整媒體流控制方式,使部分通話無法正常進行[3].
本文通過對當前音視頻通話方案所存在的問題進行研究與分析,并基于實驗室現有視頻會議系統進行改進,提出了一種多方通話動態控制技術,充分運用會議組網絡中星狀拓撲和網狀拓撲的各自優點,一方面在網絡通暢并且用戶數量較低情況下,發揮網狀拓撲的便捷性,減輕服務器壓力; 另一方面當系統發生網絡擁塞時,充分利用星狀拓撲中服務器集中收發媒體流的優勢,節省網絡帶寬并保持通話暢通.
SIP(會話初始化協議)是IETF提出的一種支持多媒體會話的信令控制協議,在IP網絡中以其簡單、易擴展的特性被廣泛應用,具體工作流程如圖1.

圖1 SIP工作流程圖
SIP采用文本編碼方式,其獨立于傳輸層,屬于應用層控制協議,主要由SIP服務器和SIP用戶代理兩個組件構成,SIP服務器包括代理服務器、注冊服務器以及重定向服務器[4]. 在消息會話過程中,各系統以SDP(會話描述協議)傳遞消息內容,各部分協同工作,讓會話更為流暢和高效[5].
MCU全稱為Multi Control Unit,即多點控制單元,主要功能為協調和控制多個終端間的音視頻傳輸,為用戶提供群組會議服務. 如圖2.

圖2 MCU傳輸方式圖
MCU將各終端的信息流同步分離,分析并提取音視頻數據和信令等信息,然后將信息送入各模塊進行處理,完成相應的音視頻混合與交換、路由選擇和會議控制等過程,最后將各會議場點所需的各種信息重新組合,發送給各客戶端.
SIP會議系統模型[6]分為松耦合模式和緊耦合模式. 在緊耦合模式中存在兩種網絡拓撲形式,分別為網狀拓撲和星狀拓撲.
在一個全聯通的網狀網絡中,存在N*(N-1)個連接,各端點之間相互連通能夠直接進行數據通信,如圖3. 這種網絡的優點在于各端點之間不需要媒體中繼服務器進行媒體分發與管理,即可實現多方通信. 但缺點在于無法為大型會議系統提供通信服務,系統的音視頻轉碼和混合在終端完成,且隨著網絡中參與者的增加,將大量消耗終端的CPU、內存以及帶寬等資源.

圖3 4用戶全聯通網狀網絡圖
星狀網絡最廣泛的應用是通過一個多點控制單元集中整合各終端媒體流,然后發送到每個端點,如圖4.此類網絡對于網絡中任意客戶端,只需傳輸單個流,節省了帶寬并且減輕了CPU負載[7]. 但當更多客戶端進入會議后,服務器將對更多路媒體流進行整合與轉發,大量消耗服務端資源,因此服務器承載能力會成為此類網絡擴展的瓶頸.

圖4 5用戶星狀網絡圖
本系統采用SIP信令集中處理模式,實現視頻會議的會議控制功能,并支持SIP和WebRTC兩種類型客戶端,其中SIP客戶端可直接連接會議服務器進行會話控制,而WebRTC客戶端在連接到WebRTC服務器后,通過WebRTC與SIP轉換網關實現雙方會議控制信息的轉換,再與會議服務器進行交互[8]. MCU主要用來控制終端媒體流收發,建立流暢的會議通話. 系統總體結構如圖5.

圖5 系統總體結構圖
系統利用終端采集本地網絡數據以及終端資源占用情況,并對SIP消息進行擴展,以擴展后的SIP消息為載體向會議控制服務器發送各終端數據.
SIP客戶端直接與會議服務器進行連接,WebRTC客戶端則需要經由網關轉換信息后才能上傳到會議服務器[9].
會議服務器包含SIP通信控制器和動態控制器兩部分,SIP通信控制器用來進行會議控制,同時解析各終端數據,并將其會話信息存入數據庫中. 動態控制器用來對終端提供的數據進行計算和處理,建立系統終端連接狀態圖,并對各會議組成員進行網絡和資源評估,分析會議組媒體流控制方式的各種條件,決定會議組媒體流由MCU進行集中管理還是通過各終端自行分發.
多方通話的動態控制技術以服務器為基礎,實現媒體流控制變換,該系統的會議服務器由SIP通信控制器和動態控制器兩部分組成,圖6為服務器總體架構圖.

圖6 服務器總體架構圖
SIP通信控制器分為用戶代理模塊[10]、注冊服務模塊、重定向服務模塊和數據寫入模塊: 1) 用戶代理模塊,主要作用是根據目標用戶的位置信息將SIP信令代理轉發給目標用戶. 2) 注冊服務模塊,實現對用戶進行認證并登記用戶的位置信息. 3) 重定向服務模塊,作用為向用戶代理返回最新訪問地址列表,讓用戶代理與新的訪問地址進行通信. 4) 數據寫入模塊,作用是將客戶端傳來的SIP消息進行提取,從中解析出SWIT CHINFO消息內容,并存入數據庫.
動態控制器包含數據讀取模塊、圖分析模塊和動態調整模塊3部分: 1) 數據讀取模塊,主要作用為提取數據庫中存放的通話信息,并傳遞給圖分析模塊. 2) 圖分析模塊,將數據讀取模塊傳來的信息分析處理,進行系統會話連接圖的還原操作,掌握系統現存會話狀態及各終端網絡數據,并結合終端CPU和內存資源使用狀況,采用基于帶寬估計的擁塞檢測方法實現對終端擁塞情況的計算與評估. 3) 動態調整模塊,根據終端網絡狀況以及MCU資源占用情況,對系統現存會議組網絡最終作出評估,決策各會議組媒體流控制方式是否做出調整.
多方通話動態控制技術通過終端向服務器發送各用戶網絡狀況和資源占用情況等數據,因此需要一種消息載體實現終端和服務器之間的數據傳遞. 針對以上問題,系統對SIP消息進行擴展,增加SWITCHINFO消息,由終端每5 s采集數據,通過SWITCHINFO消息為服務器傳遞實時數據.
SWITCHINFO消息內包含sip_id,conference_id,contact_points,conference_type,和network_condition五種數據. sip_id為各客戶端在服務器中的唯一標識,conference_id 為多方通話中各會議唯一標識,contact_points 為各客戶端媒體流分發時連接的所有端點,內部數據存儲為各連接端點的sip_id. conference_type 為通話類別,此類別分為“focus”和“dispersion”兩種,根據客戶端之間媒體流連接狀況,當終端檢測到沒有其他端點與自己連接時,將conference_type賦值為“focus”,代表該會議組利用MCU為每個客戶端收發媒體流,選擇了集中控制的方式; 當檢測本終端與若干通話終端有媒體流交互時,conference_type被賦值為“dispersion”,表明該終端媒體流處理方式為基于網狀網絡的分散處理模式.
network_condition則包含了各端點網絡狀況及CPU、內存的使用情況,此消息中所包含字符串較多,由SIP通信服務器解析后會有以下參數存入數據庫,分別為max_bandwidth、time_interval、consumption_send、consumption_receive、num_package、time_delay、cpu_alltime、cpu_freetime、ram_maxcapacity和ram_usedcapacity. 以上各參數會分別應用于圖分析模塊和動態調整模塊中.
下面給出SWITCHINFO方法工作流程,User A向SIP Server發送SWITCHINFO消息,向服務器傳遞各終端網絡信息,SIP Server響應并返回200 OK,表明系統服務器已經接收到了來自User A的SWITCHINFO消息,如圖7.

圖7 SWITCHINFO工作流程圖
動態控制器每5 s向數據庫讀取數據,進行會話分析及終端網絡評估,并以30 s為時間段檢測終端和MCU資源占用情況,在此時間段中得出6次處理結果,并根據這6次統計結果綜合判斷會話媒體流控制方式是否做出調整.
在媒體流控制方式調整過程中,圖分析模塊獲得最新數據后,立即執行系統圖分析及還原操作,并采用基于帶寬估計的擁塞檢測方法計算各終端的可用帶寬及資源占用情況,得出其擁塞程度指標.
數據讀取模塊將SIP會議控制器存儲在數據庫中的各項數據進行提取,發送給圖分析模塊進行系統的圖還原操作. 圖分析模塊以conference_id作為會議群組區分,如果contact_points不為空且conference_type值為“dispersion”,控制器將各端點 contact_points內包含的端點解析出來并存儲在鄰接鏈表中,以無向圖構造算法還原各點連接狀況,并計算正在進行的各會議組內終端數量participant_ count,以4端點連接為例,相關結構如圖8和圖9.
圖分析模塊對各終端network_condition解析出的10種參數進行轉換和計算,利用基于帶寬估計的擁塞檢測方法,求取擁塞程度指標Q. 采用基于帶寬估計的擁塞檢測方法可實時估計終端帶寬使用情況,并將終端CPU使用率和內存占用率一起納入終端擁塞判定標準,以加權形式得到最終計算值Q,具體原理如下.

圖8 4端點連接圖

圖9 4端點鄰接鏈表圖
檢測終端最大帶寬表示為B,終端由于排隊延遲所占用的帶寬表示為Bi,外部應用占用網絡帶寬為Be,則終端可用帶寬為.
Be所表示占用帶寬為接收占用帶寬和發送占用帶寬的總和,設T為采樣時間間隔,Tr為間隔內接收數據消耗時間,Ts為間隔內發送數據消耗時間,由公式(1)可以得出一個采樣間隔內網絡占用帶寬計算值.

同時系統采用指數加權平均算法對實時網絡占用帶寬Be進行計算,α為常數且.
排隊延遲造成的占用帶寬Bi可通過來表示,其中m代表隊列存在的數據包,n代表采樣數據包數量,Ti代表第i個包的傳輸延遲,B代表終端最大帶寬. 已知Bi與Be便可計算出Ba,進一步求得終端帶寬使用率.
檢測終端CPU在T1到T2時間段內,總使用時間表示為T,空閑使用時間表示為Ta,可估計出CPU即時利用率. 根據從數據庫提取的參數可知終端最大內存空間為R,已使用內存空間為Re,可計算出內存使用率. 由公式(2)計算得出終端擁塞程度指標Q,β和γ均為加權系數,.

圖分析模塊以5 s為時間單位對數據讀取模塊傳來的更新數據進行處理,重構系統端點連接圖并重新對各終端網絡進行評估,并將計算出的各終端擁塞程度指標Q連同系統連接圖一并交給動態調整模塊進行下一步操作.
動態調整模塊接收由圖分析模塊傳來的數據,同時向MCU發出消息請求,獲取MCU的CPU使用率、內存使用率和通化路數等數據. 并通過MCU資源占用的綜合評估法,得出MCU資源占用指標M,具體方法如下.
動態控制器將MCU所傳遞數據進行解析,獲得CPU即時利用率Ec,內存使用率Er和通化路數He. 已知MCU最大支持通話路數H,已存在通話路數為He可得通話線路使用率. 系統為更全面衡量MCU資源占用情況,將3個參數進行加權處理,綜合評估當前MCU負載能力,得出MCU資源占用指標M,具體公式為
動態調整模塊以conference_id作為通話組區分,利用各通話組連接圖尋找各組成員,并以各終端擁塞程度指標Q和MCU資源占用指標M作為標準,對各會議群組的媒體流控制方式進行評估,采用公式得出綜合評判指標Z.
當 conference_type值為“dispersion”時,表明會議組網絡為網狀網絡,若會議組內所有終端存在participant_count/2以上數目綜合評判指標Z>0.8,表明會議組內多數終端出現網絡擁塞狀況,則該會議組必須做出調整. 若會議組內存在participant_count/2以上數目終端綜合評判指標0.6<Z<0.8,判斷會議組網絡將要發生擁塞,此時系統對本會議組進行標記,進入觀察狀態. 若會議組內存在participant_count/2以上數目終端綜合評判指標Z<0.6,則表明會議組無需進行調整.
當 conference_type 值為“focus”時,若會議組participant_count<=5且MCU資源占用指標M>0.6,則適合會議組媒體流控制方式進行調整.
動態控制器每5 s對各會議組進行評估并記錄,以30 s為時間段所得到的6次評估結果作為最終決策標準.
若會議組6次評估結果中存在3次及以上符合調整條件,動態調整模塊向SIP會議控制器發送調整消息,由SIP會議控制器對該會議組進行媒體流控制方式的調整,實現網狀網絡與星狀網絡之間的切換,如圖10為媒體流控制方式切換過程圖.

圖10 媒體流控制方式切換過程圖
本次實驗采用5臺相同配置WebRTC客戶端進行測試,選用10 Mbps網絡帶寬進行數據流傳輸,客戶端配置如表1.

表1 客戶端配置列表
多方通話建立之初,系統采用分散控制方式對媒體流在客戶端之間進行收發,網絡中則形成20條進行數據交互的數據通路. 5臺客戶端音視頻效果均能夠滿足通話需求,系統運行流暢.
然后在各客戶端運行筆者編寫的Python程序,提高客戶端內存和CPU占用比,將客戶端兩種資源占用率分別提高到70%和80%,同時使用WANem網絡模擬工具自定義網絡帶寬,將各客戶端可用帶寬比率控制在20%以下,此時發現客戶端音視頻通話出現卡頓現象,媒體流丟包嚴重. 后臺管理系統從圖分析模塊獲取實時數據,經過處理得到當前會議組網絡狀況圖,如圖11.

圖11 調整前媒體流傳輸圖
經過30秒后,系統服務器做出響應和決策,對會議組媒體流控制方式進行切換,將會議組網絡由網狀網絡切換為星狀網絡,控制臺輸出信息如圖12.

圖12 控制臺輸出信息圖
此時,后臺管理系統的會議組網絡狀況圖發生變化,具體如圖13,表明該會議組媒體流控制方式已經改變,并且通過分析端點顏色含義,說明各客戶端網絡狀況良好,系統音視頻通信運行流暢,達到用戶通話的滿意效果.

圖13 調整后媒體流傳輸圖
本文通過對SIP會議模型中網絡拓撲結構的深入研究,設計了一種基于多方通話的動態控制技術,將集中式和散布式兩種媒體流控制方式進行有效結合,并在實驗室現有視頻會議系統中予以實現. 通過最后的測試結果,驗證了該技術的可行性以及優越性,當終端發生網絡擁塞時系統能夠合理調整媒體流傳輸方式,使用戶獲得流暢通話體驗.
1Chiang CY,Chen YL,Tsai PS,et al. A video conferencing system based on webRTC for seniors. Proceedings of 2014 International Conference on Trustworthy Systems and Their Applications (TSA). Taichung,China. 2014. 51-56.
2Chen XQ,Jones HM,Jayalath ADS. Congestion-aware routing protocol for mobile ad hoc networks. Proceedings of the 66th Vehicular Technology Conference. Baltimore,MD,USA. 2007. 21-25.
3Rosenberg J. RFC 4353,A Framework for Conferencing with the Session Initiation Protocol (SIP). New York: IETF,2006.
4Rosenberg J,Schulzrinne H,Camarillo G,et al. RFC 3261,SIP: Session Initiation Protocol. New York: IETF,2002.
5竹洪濤. 一種基于SIP和WebRTC的實時可視對講方案設計[碩士學位論文]. 成都: 西南交通大學,2013.
6黎忠侃. 基于SIP的視頻會議控制服務器的設計與實現[碩士學位論文]. 廣州: 華南理工大學,2010.
7王森. SIP多方視頻會議應用服務器設計與實現[碩士學位論文]. 沈陽: 中國科學院研究生院(沈陽計算技術研究所),2008.
8李冬. 一種基于WebRTC的視頻會議系統的架構. 智能計算機與應用,2015,5(4): 39-41.
9胡敏,劉六程,劉鵬. 基于WebRTC的視頻會議系統的設計與實現. 電視技術,2013,37(1): 141-143,150.
10曲冠樺. 基于SIP協議的視頻會議系統實現[碩士學位論文].成都: 電子科技大學,2012.