史 建,毛新農,金東方,劉邦魁
(中國電子科技集團公司第三十研究所,成都 610000)
在使用UDP等無連接的傳輸協議的SIP網絡進行報文發送時,出現丟包后,SIP設計了對應的重傳機制。但是當重傳的請求較多時,會導致網絡的阻塞,降低網絡的性能。本文將設計一種隨機優化算法來避免網絡性能的降低,對網絡過載進行優化。
SIP(Session Initiation Protocol,會話初始協議)是一種應用層協議,在各種多媒體應用中維護各種會話,是諸如在線電話等應用的基礎。在一般的SIP交互中,用戶代理發出一個報文后申請建立一個會話;SIP代理服務器接到請求后轉發報文、檢查參數并且返回對應的信息,并維護會話通道的有效。一般而言,代理服務器需要接收至少7次報文,SIP協議類似于HTTP協議,可以提高應用服務的開發效率。
SIP 的一個重要特點是它不定義要建立的會話的類型,而只定義應該如何管理會話。有了這種靈活性,也就意味著SIP可以用于眾多應用和服務中,包括交互式游戲、音樂和視頻點播以及語音、視頻和 Web 會議。SIP消息是基于文本的,因而易于讀取和調試。同時針對SIP建立新的應用服務更加簡單,對于設計人員而言也更加直觀。SIP如同電子郵件客戶機一樣重用 MIME 類型描述,因此與會話相關的應用程序可以自動啟動。SIP 重用幾個現有的比較成熟的 Internet 服務和協議,如 DNS、RTP、RSVP等。不必再引入新服務對 SIP 基礎設施提供支持,因為該基礎設施很多部分已經到位或現成可用。
在SIP網絡中,代理服務器對各類SIP消息及數據進行轉發,承載了較大的壓力。隨著網絡負載的上升,代理服務器出現報文丟失的概率會增加,而這種情況又會引發SIP的重傳機制,導致更大的網絡阻塞,甚至影響整個網絡的服務。
為了解決這種問題,一般的處理辦法是使用503(Service Unavailable)報文返回給發送端,503報本代表服務端不可用,客戶端收到該報文后一般會阻止發送端重傳報文。通過這種方式雖然能夠降低網絡的負載,但這樣也會引起服務波動較為劇烈的情況出現,引發應用中斷,導致服務性能的波動較大。本文針對該問題設計一種隨機優化算法來平滑報文過載的處理效率,改善網絡的性能。
隨機優化算法的核心思想是在代理服務器上設置兩個緩沖隊列。Tmax和Tmin代表隊列的緩沖能力。而當數據達到代理服務器時,根據計算得到隊列的長度Q,根據當前的Q來判斷拒絕服務的概率P,如果P大于一定的值,則返回503報文,拒絕進行服務。當有新的數據包達到后,如果Q小于Tmin,代表服務器目前處于正常狀態,可以進行服務,從而將數據插入到緩沖隊列,等到轉發。而當Q大于Tmax時,代表服務器已經處于過載狀態,此時直接拒絕服務。而當Q位于Tmax和Tmin之間時,按照下式進行概率P的計算:

為了能夠平滑隊列的移動窗口,設置Q=Q(1-w)+wq。w是加權系數,用于動態調整隊列的長度。通過設置w參數,可以有效的對隊列進行平滑,改善網絡效率。P0為初始的概率大小,也就是當Q=Tmin的概率大小。算法的效率同Tmax和Tmin兩個參數也有一定的關系,Tmax較大則需要服務器提供較大的緩沖資源,而如果該值較小則可能導致過多報文被拒絕,最終降低服務的性能。Tmin較小的時候一旦報文到達服務器,則需要進行隨機概率的判斷,需要耗費一定的計算資源。而如果該值較大,緩沖隊列需要更多的存儲資源來提供服務。程序實現核心代碼如圖1所示:

圖1 核心算法代碼
當報文請求到達服務器后,根據當前的隊列情況進行判斷,如果隊列已經滿了,則拒絕該報文的服務,如果隊列相對空閑,則將報文加入處理隊列。如果隊列不為空,則計算拒絕的概率,根據計算得到的概率選擇不同的服務方式。
為對算法進行仿真,設置緩沖長度為100,將w的取值變為0.7,同時取P0為1.6,Tmax=80,Tmin=25。在n為1000個節點的網絡下進行仿真。為對比結果,采用堵塞時直接返回503報文的方式進行對比。可以看到在對任意單位時間的阻塞進行仿真以后,在隨機優化算法下阻塞狀態平均持續時間大概為0.09秒,而非阻塞狀態下的平均持續時間為0.26秒,連接較為穩定。而在進入阻塞狀態后,當報文數降到42后,SIP得以恢復,吞吐量有了明顯的改善。整個網絡的平均拒絕率為0.081,有效的提高了網絡的服務率。
改變Tmax=100,Tmin=15。在n為1000個節點的網絡下進行仿真。可以看到在對任意單位時間的阻塞進行仿真以后,在增加隊列長度的情況下下阻塞狀態平均持續時間大概為0.07秒,而非阻塞狀態下的平均持續時間為0.34秒,連接較為穩定。而在進入阻塞狀態后,當報文數降到50后,SIP得以恢復,吞吐量有了明顯的改善。整個網絡的平均拒絕率為0.061,有效的提高了網絡的服務率。但是網絡的資源的占比有了16%的上升。通過設置不同的緩沖隊列參數可以有效的對網絡的情況進行優化。不同參數設置下系統負載率和網絡時延的對比如下:

圖2 不同參數下網絡延時與負載率關系圖
如圖2所示,隨著隊列長度的不同,系統的表現有一定的差異,而且同緩沖隊列的長度相比系統的性能提升并非成正比增長,而是在Tmax與Tmin之間得到平衡。
為分析不同的P0參數對網絡性能的影響,并且為了比較原有算法和優化后的算法在不同隊列長度下的對比,本文使用不同的參數值進行仿真,得到下圖的仿真結果圖:

圖3 不同初始概率及算法對比效果圖
左圖是在不同的初始概率P0下,算法占用緩存與概率密度的關系圖。可以看到初始概率較大的情況下,占用緩存的分布較為平緩。根據概率密度分布可以算出,測試評價拒絕服務的概率大概為P=0.085。對于加權系數w進行仿真后發現,當w過小時,隊列增長較緩,負載率很難有效控制。而當w較大時,隊列增加較快,可能導致資源浪費,當w取值范圍在[0.4,0.8]之間時系統的穩定性較好。
右圖對比了優化后的算法,在不同的緩沖隊列下負載率的變化。可以看到隨著緩存隊列長度的增加,隨機優化算法的表現要優于原算法,隨著緩存長度的增加,優化效果的表現越來越好。
本文分析了SIP網絡出現擁塞的原因,由于代理服務器在丟失報文后會引發SIP的重傳服務,而在網絡擁堵的情況下,報文的重傳可能導致網絡的進一步擁堵。本文針對這種情況提出了一種基于隊列的緩沖隨機優化算法,來提升網絡的性能。通過緩沖隊列的設置,根據隊列的資源使用情況,使用隨機算法來決定是否拒絕服務,從而達到穩定網絡的服務效率,提升網絡性能的目的。通過對優化后的算法進行仿真,驗證了該算法的有效性。