史 建,毛新農(nóng),金東方,劉邦魁
(中國(guó)電子科技集團(tuán)公司第三十研究所,成都 610000)
在使用UDP等無(wú)連接的傳輸協(xié)議的SIP網(wǎng)絡(luò)進(jìn)行報(bào)文發(fā)送時(shí),出現(xiàn)丟包后,SIP設(shè)計(jì)了對(duì)應(yīng)的重傳機(jī)制。但是當(dāng)重傳的請(qǐng)求較多時(shí),會(huì)導(dǎo)致網(wǎng)絡(luò)的阻塞,降低網(wǎng)絡(luò)的性能。本文將設(shè)計(jì)一種隨機(jī)優(yōu)化算法來(lái)避免網(wǎng)絡(luò)性能的降低,對(duì)網(wǎng)絡(luò)過載進(jìn)行優(yōu)化。
SIP(Session Initiation Protocol,會(huì)話初始協(xié)議)是一種應(yīng)用層協(xié)議,在各種多媒體應(yīng)用中維護(hù)各種會(huì)話,是諸如在線電話等應(yīng)用的基礎(chǔ)。在一般的SIP交互中,用戶代理發(fā)出一個(gè)報(bào)文后申請(qǐng)建立一個(gè)會(huì)話;SIP代理服務(wù)器接到請(qǐng)求后轉(zhuǎn)發(fā)報(bào)文、檢查參數(shù)并且返回對(duì)應(yīng)的信息,并維護(hù)會(huì)話通道的有效。一般而言,代理服務(wù)器需要接收至少7次報(bào)文,SIP協(xié)議類似于HTTP協(xié)議,可以提高應(yīng)用服務(wù)的開發(fā)效率。
SIP 的一個(gè)重要特點(diǎn)是它不定義要建立的會(huì)話的類型,而只定義應(yīng)該如何管理會(huì)話。有了這種靈活性,也就意味著SIP可以用于眾多應(yīng)用和服務(wù)中,包括交互式游戲、音樂和視頻點(diǎn)播以及語(yǔ)音、視頻和 Web 會(huì)議。SIP消息是基于文本的,因而易于讀取和調(diào)試。同時(shí)針對(duì)SIP建立新的應(yīng)用服務(wù)更加簡(jiǎn)單,對(duì)于設(shè)計(jì)人員而言也更加直觀。SIP如同電子郵件客戶機(jī)一樣重用 MIME 類型描述,因此與會(huì)話相關(guān)的應(yīng)用程序可以自動(dòng)啟動(dòng)。SIP 重用幾個(gè)現(xiàn)有的比較成熟的 Internet 服務(wù)和協(xié)議,如 DNS、RTP、RSVP等。不必再引入新服務(wù)對(duì) SIP 基礎(chǔ)設(shè)施提供支持,因?yàn)樵摶A(chǔ)設(shè)施很多部分已經(jīng)到位或現(xiàn)成可用。
在SIP網(wǎng)絡(luò)中,代理服務(wù)器對(duì)各類SIP消息及數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),承載了較大的壓力。隨著網(wǎng)絡(luò)負(fù)載的上升,代理服務(wù)器出現(xiàn)報(bào)文丟失的概率會(huì)增加,而這種情況又會(huì)引發(fā)SIP的重傳機(jī)制,導(dǎo)致更大的網(wǎng)絡(luò)阻塞,甚至影響整個(gè)網(wǎng)絡(luò)的服務(wù)。
為了解決這種問題,一般的處理辦法是使用503(Service Unavailable)報(bào)文返回給發(fā)送端,503報(bào)本代表服務(wù)端不可用,客戶端收到該報(bào)文后一般會(huì)阻止發(fā)送端重傳報(bào)文。通過這種方式雖然能夠降低網(wǎng)絡(luò)的負(fù)載,但這樣也會(huì)引起服務(wù)波動(dòng)較為劇烈的情況出現(xiàn),引發(fā)應(yīng)用中斷,導(dǎo)致服務(wù)性能的波動(dòng)較大。本文針對(duì)該問題設(shè)計(jì)一種隨機(jī)優(yōu)化算法來(lái)平滑報(bào)文過載的處理效率,改善網(wǎng)絡(luò)的性能。
隨機(jī)優(yōu)化算法的核心思想是在代理服務(wù)器上設(shè)置兩個(gè)緩沖隊(duì)列。Tmax和Tmin代表隊(duì)列的緩沖能力。而當(dāng)數(shù)據(jù)達(dá)到代理服務(wù)器時(shí),根據(jù)計(jì)算得到隊(duì)列的長(zhǎng)度Q,根據(jù)當(dāng)前的Q來(lái)判斷拒絕服務(wù)的概率P,如果P大于一定的值,則返回503報(bào)文,拒絕進(jìn)行服務(wù)。當(dāng)有新的數(shù)據(jù)包達(dá)到后,如果Q小于Tmin,代表服務(wù)器目前處于正常狀態(tài),可以進(jìn)行服務(wù),從而將數(shù)據(jù)插入到緩沖隊(duì)列,等到轉(zhuǎn)發(fā)。而當(dāng)Q大于Tmax時(shí),代表服務(wù)器已經(jīng)處于過載狀態(tài),此時(shí)直接拒絕服務(wù)。而當(dāng)Q位于Tmax和Tmin之間時(shí),按照下式進(jìn)行概率P的計(jì)算:
為了能夠平滑隊(duì)列的移動(dòng)窗口,設(shè)置Q=Q(1-w)+wq。w是加權(quán)系數(shù),用于動(dòng)態(tài)調(diào)整隊(duì)列的長(zhǎng)度。通過設(shè)置w參數(shù),可以有效的對(duì)隊(duì)列進(jìn)行平滑,改善網(wǎng)絡(luò)效率。P0為初始的概率大小,也就是當(dāng)Q=Tmin的概率大小。算法的效率同Tmax和Tmin兩個(gè)參數(shù)也有一定的關(guān)系,Tmax較大則需要服務(wù)器提供較大的緩沖資源,而如果該值較小則可能導(dǎo)致過多報(bào)文被拒絕,最終降低服務(wù)的性能。Tmin較小的時(shí)候一旦報(bào)文到達(dá)服務(wù)器,則需要進(jìn)行隨機(jī)概率的判斷,需要耗費(fèi)一定的計(jì)算資源。而如果該值較大,緩沖隊(duì)列需要更多的存儲(chǔ)資源來(lái)提供服務(wù)。程序?qū)崿F(xiàn)核心代碼如圖1所示:
圖1 核心算法代碼
當(dāng)報(bào)文請(qǐng)求到達(dá)服務(wù)器后,根據(jù)當(dāng)前的隊(duì)列情況進(jìn)行判斷,如果隊(duì)列已經(jīng)滿了,則拒絕該報(bào)文的服務(wù),如果隊(duì)列相對(duì)空閑,則將報(bào)文加入處理隊(duì)列。如果隊(duì)列不為空,則計(jì)算拒絕的概率,根據(jù)計(jì)算得到的概率選擇不同的服務(wù)方式。
為對(duì)算法進(jìn)行仿真,設(shè)置緩沖長(zhǎng)度為100,將w的取值變?yōu)?.7,同時(shí)取P0為1.6,Tmax=80,Tmin=25。在n為1000個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)下進(jìn)行仿真。為對(duì)比結(jié)果,采用堵塞時(shí)直接返回503報(bào)文的方式進(jìn)行對(duì)比。可以看到在對(duì)任意單位時(shí)間的阻塞進(jìn)行仿真以后,在隨機(jī)優(yōu)化算法下阻塞狀態(tài)平均持續(xù)時(shí)間大概為0.09秒,而非阻塞狀態(tài)下的平均持續(xù)時(shí)間為0.26秒,連接較為穩(wěn)定。而在進(jìn)入阻塞狀態(tài)后,當(dāng)報(bào)文數(shù)降到42后,SIP得以恢復(fù),吞吐量有了明顯的改善。整個(gè)網(wǎng)絡(luò)的平均拒絕率為0.081,有效的提高了網(wǎng)絡(luò)的服務(wù)率。
改變Tmax=100,Tmin=15。在n為1000個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)下進(jìn)行仿真??梢钥吹皆趯?duì)任意單位時(shí)間的阻塞進(jìn)行仿真以后,在增加隊(duì)列長(zhǎng)度的情況下下阻塞狀態(tài)平均持續(xù)時(shí)間大概為0.07秒,而非阻塞狀態(tài)下的平均持續(xù)時(shí)間為0.34秒,連接較為穩(wěn)定。而在進(jìn)入阻塞狀態(tài)后,當(dāng)報(bào)文數(shù)降到50后,SIP得以恢復(fù),吞吐量有了明顯的改善。整個(gè)網(wǎng)絡(luò)的平均拒絕率為0.061,有效的提高了網(wǎng)絡(luò)的服務(wù)率。但是網(wǎng)絡(luò)的資源的占比有了16%的上升。通過設(shè)置不同的緩沖隊(duì)列參數(shù)可以有效的對(duì)網(wǎng)絡(luò)的情況進(jìn)行優(yōu)化。不同參數(shù)設(shè)置下系統(tǒng)負(fù)載率和網(wǎng)絡(luò)時(shí)延的對(duì)比如下:
圖2 不同參數(shù)下網(wǎng)絡(luò)延時(shí)與負(fù)載率關(guān)系圖
如圖2所示,隨著隊(duì)列長(zhǎng)度的不同,系統(tǒng)的表現(xiàn)有一定的差異,而且同緩沖隊(duì)列的長(zhǎng)度相比系統(tǒng)的性能提升并非成正比增長(zhǎng),而是在Tmax與Tmin之間得到平衡。
為分析不同的P0參數(shù)對(duì)網(wǎng)絡(luò)性能的影響,并且為了比較原有算法和優(yōu)化后的算法在不同隊(duì)列長(zhǎng)度下的對(duì)比,本文使用不同的參數(shù)值進(jìn)行仿真,得到下圖的仿真結(jié)果圖:
圖3 不同初始概率及算法對(duì)比效果圖
左圖是在不同的初始概率P0下,算法占用緩存與概率密度的關(guān)系圖??梢钥吹匠跏几怕瘦^大的情況下,占用緩存的分布較為平緩。根據(jù)概率密度分布可以算出,測(cè)試評(píng)價(jià)拒絕服務(wù)的概率大概為P=0.085。對(duì)于加權(quán)系數(shù)w進(jìn)行仿真后發(fā)現(xiàn),當(dāng)w過小時(shí),隊(duì)列增長(zhǎng)較緩,負(fù)載率很難有效控制。而當(dāng)w較大時(shí),隊(duì)列增加較快,可能導(dǎo)致資源浪費(fèi),當(dāng)w取值范圍在[0.4,0.8]之間時(shí)系統(tǒng)的穩(wěn)定性較好。
右圖對(duì)比了優(yōu)化后的算法,在不同的緩沖隊(duì)列下負(fù)載率的變化??梢钥吹诫S著緩存隊(duì)列長(zhǎng)度的增加,隨機(jī)優(yōu)化算法的表現(xiàn)要優(yōu)于原算法,隨著緩存長(zhǎng)度的增加,優(yōu)化效果的表現(xiàn)越來(lái)越好。
本文分析了SIP網(wǎng)絡(luò)出現(xiàn)擁塞的原因,由于代理服務(wù)器在丟失報(bào)文后會(huì)引發(fā)SIP的重傳服務(wù),而在網(wǎng)絡(luò)擁堵的情況下,報(bào)文的重傳可能導(dǎo)致網(wǎng)絡(luò)的進(jìn)一步擁堵。本文針對(duì)這種情況提出了一種基于隊(duì)列的緩沖隨機(jī)優(yōu)化算法,來(lái)提升網(wǎng)絡(luò)的性能。通過緩沖隊(duì)列的設(shè)置,根據(jù)隊(duì)列的資源使用情況,使用隨機(jī)算法來(lái)決定是否拒絕服務(wù),從而達(dá)到穩(wěn)定網(wǎng)絡(luò)的服務(wù)效率,提升網(wǎng)絡(luò)性能的目的。通過對(duì)優(yōu)化后的算法進(jìn)行仿真,驗(yàn)證了該算法的有效性。