陳志輝,王 俊,丁 銳,袁 靜
(中國(guó)電子科技集團(tuán)公司第三十研究所,四川成都610041)
會(huì)話初始協(xié)議 SIP(Session Initiation Protocol)[1]是IETF提出的應(yīng)用層會(huì)話控制協(xié)議,用于建立、修改和終結(jié)實(shí)時(shí)多媒體會(huì)話。具有可擴(kuò)展性、靈活性、互操作性、可重用性、簡(jiǎn)單高效等特點(diǎn)。SIP是下一代網(wǎng)絡(luò)NGN的核心協(xié)議,在互聯(lián)網(wǎng)以及固定、移動(dòng)IP 網(wǎng)絡(luò)得到了成功應(yīng)用[2-4]。
無(wú)線自組網(wǎng)(Wireless Ad hoc networks)不依賴固定基礎(chǔ)設(shè)施,具有無(wú)中心、自組織、多跳路由、動(dòng)態(tài)拓?fù)涞忍攸c(diǎn),網(wǎng)絡(luò)抗毀性和靈活性較強(qiáng),尤其適合災(zāi)難救助、偏遠(yuǎn)地區(qū)、緊急突發(fā)、作戰(zhàn)戰(zhàn)場(chǎng)等場(chǎng)合,具有廣泛的用途和前景。
隨著無(wú)線自組網(wǎng)發(fā)展,其網(wǎng)絡(luò)IP化、無(wú)線傳輸帶寬增加、質(zhì)量保障能力提高,使其具備了提供實(shí)時(shí)多媒體業(yè)務(wù)的能力,無(wú)線自組網(wǎng)提供實(shí)時(shí)多媒體業(yè)務(wù)成為重要的應(yīng)用需求。SIP已經(jīng)在互聯(lián)網(wǎng)、固定IP網(wǎng)絡(luò)、移動(dòng)IP網(wǎng)絡(luò)(有固定基礎(chǔ)設(shè)施)得到了成功應(yīng)用,在更靈活、有著廣泛用途的無(wú)線自組網(wǎng)中推廣應(yīng)用成為SIP應(yīng)用需求。兩個(gè)方面的需求,促使進(jìn)行SIP協(xié)議(下一代網(wǎng)絡(luò)NGN提供多媒體業(yè)務(wù)的核心協(xié)議)應(yīng)用到無(wú)線自組網(wǎng)的研究。IP是無(wú)線自組網(wǎng)和SIP結(jié)合的基本條件,無(wú)線傳輸帶寬增加、質(zhì)量保障能力提高是結(jié)合的重要保障,提供實(shí)時(shí)多媒體業(yè)務(wù)是結(jié)合的目標(biāo)。
無(wú)線自組網(wǎng)極易受到天氣、地形、電磁干擾、節(jié)點(diǎn)移動(dòng)等方面的影響,導(dǎo)致有時(shí)網(wǎng)絡(luò)很不可靠,甚至網(wǎng)絡(luò)不可用。最初針對(duì)固定IP網(wǎng)絡(luò)設(shè)計(jì)的SIP協(xié)議,雖然在移動(dòng)IP網(wǎng)絡(luò)應(yīng)用中進(jìn)行了許多改進(jìn)。同時(shí)作為應(yīng)用層協(xié)議,SIP也設(shè)計(jì)了較完整的可靠性機(jī)制,如應(yīng)答確認(rèn)機(jī)制、重傳機(jī)制、超時(shí)機(jī)制等,并支持低層不可靠傳輸,但仍然難以適應(yīng)無(wú)線自組網(wǎng)的網(wǎng)絡(luò)不可用情況。SIP協(xié)議如何成功地延伸應(yīng)用到無(wú)線自組網(wǎng),提供多媒體業(yè)務(wù)支持,發(fā)揮其統(tǒng)一融合能力,簡(jiǎn)化應(yīng)用系統(tǒng)、增強(qiáng)終端智能,進(jìn)一步促進(jìn)無(wú)線自組網(wǎng)的靈活性、易部署性、易用性,成為當(dāng)前急需的、重要的研究?jī)?nèi)容。
文中分析標(biāo)準(zhǔn)SIP協(xié)議在無(wú)線自組網(wǎng)中應(yīng)用存在的問(wèn)題,設(shè)計(jì)了新的可靠性機(jī)制、引用并運(yùn)用已有的可靠性機(jī)制,形成完整的可靠性解決方案,提高了SIP協(xié)議在無(wú)線自組網(wǎng)中的適應(yīng)性。
SIP主要的可靠性機(jī)制有:
(1)周期性重注冊(cè)機(jī)制
終端注冊(cè)主要是通知服務(wù)器終端當(dāng)前的位置信息,服務(wù)器記錄、更新位置信息,確保終端位置信息的正確性。終端周期性重注冊(cè),確保了終端位置信息的有效性,服務(wù)器可以根據(jù)注冊(cè)是否超時(shí),判斷終端位置信息是否失效。
(2)請(qǐng)求應(yīng)答
SIP中的所有請(qǐng)求消息都要求應(yīng)答,使請(qǐng)求方可以確定接收方成功收到該請(qǐng)求。
(3)確認(rèn)機(jī)制
對(duì)重要的應(yīng)答消息,請(qǐng)求方發(fā)送 ACKPRACK[5]進(jìn)行確認(rèn)。如 INVITE請(qǐng)求的響應(yīng) 200 OK,需要請(qǐng)求方使用ACK進(jìn)行確認(rèn)。如果請(qǐng)求方?jīng)]有進(jìn)行確認(rèn),應(yīng)答方重復(fù)發(fā)送響應(yīng)。
(4)重傳機(jī)制
請(qǐng)求發(fā)送后,如果規(guī)定的時(shí)間內(nèi)沒(méi)有收到響應(yīng)消息,請(qǐng)求方會(huì)重發(fā)請(qǐng)求多次。
(5)超時(shí)機(jī)制
在重新發(fā)送請(qǐng)求或響應(yīng)后,一直沒(méi)有得到正確的響應(yīng)或確認(rèn),一定時(shí)間后,重發(fā)方終止會(huì)話。
(6)臨時(shí)可靠響應(yīng)機(jī)制[6]
一般情況下,臨時(shí)響應(yīng)都是不太重要的。但現(xiàn)在的很多臨時(shí)響應(yīng)非常重要,如支持資源預(yù)留的183響應(yīng)就非常重要,直接決定會(huì)話是否繼續(xù)建立。
無(wú)線自組織網(wǎng)的可靠性比較低,通常在96%[7]左右,遠(yuǎn)遠(yuǎn)低于有線網(wǎng)絡(luò)的可靠性。特別是戰(zhàn)場(chǎng)等復(fù)雜電磁環(huán)境下,無(wú)線自組織網(wǎng)的可靠性將進(jìn)一步降低,有時(shí)甚至達(dá)到不可用的程度。
宏觀上SIP可以分成非會(huì)話、會(huì)話建立中、會(huì)話建立三個(gè)狀態(tài)。其中標(biāo)準(zhǔn)SIP在會(huì)話建立中、會(huì)話建立后兩個(gè)狀態(tài)的可靠性機(jī)制還不完善,在無(wú)線自組網(wǎng)等可靠性降低到一定較低程度時(shí)(不可用時(shí)),存在如下問(wèn)題:
(1)撥號(hào)后長(zhǎng)時(shí)間無(wú)響應(yīng)
主叫發(fā)出INVITE,收到100臨時(shí)響應(yīng)后、收到180響應(yīng)前發(fā)生網(wǎng)絡(luò)不可用。主叫將一直停留在Proceeding狀態(tài),沒(méi)有超時(shí)處理機(jī)制。
(2)長(zhǎng)時(shí)間單邊振鈴
在被叫收到INVITE發(fā)出180響應(yīng)后、主叫收到180響應(yīng)前發(fā)生網(wǎng)絡(luò)不可用。被叫將長(zhǎng)時(shí)間單邊振鈴。
(3)振鈴后接續(xù)不成功
主叫收到180響應(yīng)后,發(fā)生網(wǎng)絡(luò)不可用,主被叫繼續(xù)振鈴,被叫摘機(jī)后,會(huì)話不能建立成功。
(4)終端長(zhǎng)時(shí)間無(wú)業(yè)務(wù)數(shù)據(jù)無(wú)提示
會(huì)話建立成功后通信期間,發(fā)生網(wǎng)絡(luò)不可用,主被叫長(zhǎng)時(shí)間無(wú)業(yè)務(wù)數(shù)據(jù)后,且沒(méi)有任何提示。
(5)服務(wù)器資源泄漏
會(huì)話建立成功后,發(fā)生網(wǎng)絡(luò)不可用,主被叫在沒(méi)有收到業(yè)務(wù)數(shù)據(jù)后,可以在用戶的干預(yù)下結(jié)束會(huì)話,并釋放本地資源。但服務(wù)器不能收到任何結(jié)束會(huì)話的信令,將一直保留此會(huì)話申請(qǐng)的資源,造成資源泄漏。
(1)撥號(hào)后長(zhǎng)時(shí)間無(wú)響應(yīng)
圖1是RFC3261中INVITE client transaction狀態(tài)圖。進(jìn)入狀態(tài)Proceeding后,只有收到200以上的響應(yīng)才能進(jìn)入下一個(gè)狀態(tài)。如果沒(méi)有收到任何消息,將長(zhǎng)時(shí)間停留在Proceeding狀態(tài),缺少一個(gè)無(wú)任何響應(yīng)超時(shí)進(jìn)入下一個(gè)狀態(tài)的機(jī)制。
圖1 INVITE客戶端事務(wù)Fig.1 INVITE client transaction
(2)長(zhǎng)時(shí)間單邊振鈴
標(biāo)準(zhǔn)SIP協(xié)議的振鈴指示消息180響應(yīng),沒(méi)有任何確認(rèn)措施。被叫發(fā)送180響應(yīng)后,開(kāi)始振鈴,無(wú)法知道主叫方是否接收到180響應(yīng)。這種機(jī)制上的缺陷導(dǎo)致主叫、被叫振鈴不同步情況。因此應(yīng)當(dāng)將180作為重要的臨時(shí)響應(yīng),進(jìn)行確認(rèn),確保主被叫同步。
(3)振鈴后接續(xù)不成功
標(biāo)準(zhǔn)SIP采用單次發(fā)送180響應(yīng)消息機(jī)制,被叫發(fā)出180響應(yīng)后、主叫收到180響應(yīng)后,雙方開(kāi)始振鈴。如果振鈴期間發(fā)生網(wǎng)絡(luò)不可用的異常,主被叫無(wú)法感知異常,錯(cuò)誤地繼續(xù)振鈴,導(dǎo)致用戶摘機(jī)時(shí)無(wú)法接通。因此,需要監(jiān)控振鈴期間的網(wǎng)絡(luò)可用情況,一旦網(wǎng)絡(luò)不可用,振鈴將停止,避免振鈴正常卻不能接通的情況。
(4)終端長(zhǎng)時(shí)間無(wú)業(yè)務(wù)數(shù)據(jù)無(wú)提示
通信過(guò)程中發(fā)生網(wǎng)絡(luò)不可用,終端收不到業(yè)務(wù)數(shù)據(jù)。由于缺少會(huì)話保持功能,將不能發(fā)現(xiàn)網(wǎng)絡(luò)不可用,無(wú)法給出提示。因此,在終端上需要增加會(huì)話保持機(jī)制。
會(huì)話保持是控制面的功能,其探測(cè)時(shí)間通常比較長(zhǎng)(幾十秒級(jí)),可以結(jié)合數(shù)據(jù)面業(yè)務(wù)數(shù)據(jù)的實(shí)時(shí)性,及時(shí)(幾十毫秒級(jí))發(fā)現(xiàn)異常,并在控制面通過(guò)確認(rèn)機(jī)制進(jìn)行確認(rèn)。
(5)服務(wù)器資源泄漏
服務(wù)器資源泄漏主要是服務(wù)器在會(huì)話建立、撤銷過(guò)程中,都是出于被動(dòng)的位置,缺少主動(dòng)監(jiān)控措施,對(duì)會(huì)話的有效性進(jìn)行鑒別,因此需要增加會(huì)話保持功能。
由于會(huì)話保持探測(cè)時(shí)間通常比較長(zhǎng),導(dǎo)致資源泄漏時(shí)間長(zhǎng),可以在資源緊缺的時(shí)候,啟動(dòng)主動(dòng)巡查機(jī)制,減少資源泄漏的時(shí)間。
針對(duì)標(biāo)準(zhǔn)SIP協(xié)議存在的問(wèn)題和分析,設(shè)計(jì)了以下幾種改進(jìn)措施:
(1)增加Proceeding超時(shí)機(jī)制
在RFC3261中INVITE client transaction狀態(tài)機(jī)(見(jiàn)圖1)的基礎(chǔ)上,新設(shè)計(jì)Proceeding狀態(tài)超時(shí)機(jī)制,如圖2中虛線所示。
圖2 新INVITE客戶端事務(wù)Fig.2 New INVITE client transaction
Proceeding狀態(tài)超時(shí)機(jī)制工作過(guò)程:①在收到100響應(yīng)進(jìn)入Proceeding狀態(tài)后,啟動(dòng)超時(shí)定時(shí)器;②如果收到180響應(yīng),復(fù)位超時(shí)定時(shí)器,并使用振鈴提示用戶;③如果主叫在超時(shí)時(shí)間內(nèi)沒(méi)有收到180響應(yīng),將超時(shí)退出Proceeding狀態(tài),(如果已經(jīng)振鈴,即收到過(guò)180響應(yīng),但在后續(xù)180響應(yīng)沒(méi)有收到,就先停止振鈴)并使用語(yǔ)音提示用戶掛機(jī)。
建議超時(shí)時(shí)間是重復(fù)發(fā)送180響應(yīng)間隔(見(jiàn)重復(fù)發(fā)送180機(jī)制)的倍數(shù)(如2倍)。重復(fù)發(fā)送180響應(yīng)間隔建議值為2T1(T1是往返估計(jì)時(shí)延,缺省值是500 ms),即Proceeding超時(shí)時(shí)間建議為4T1(缺省值是2 s)。
(2)對(duì)180臨時(shí)響應(yīng)進(jìn)行確認(rèn)機(jī)制
將180作為重要的臨時(shí)響應(yīng),并對(duì)其采用可靠臨時(shí)響應(yīng)機(jī)制,主叫在收到180機(jī)可靠性臨時(shí)響應(yīng)指示時(shí),應(yīng)該使用PRACK進(jìn)行確認(rèn)。主叫收到180后進(jìn)行振鈴,被叫在接收到PRACK后才振鈴。如果PRACK丟失,180響應(yīng)將重傳。
(3)重復(fù)發(fā)送180機(jī)制
從振鈴到用戶摘機(jī)的時(shí)間相對(duì)比較長(zhǎng),幾秒到幾十秒,這段時(shí)間網(wǎng)絡(luò)的可用狀態(tài)可能發(fā)生變化。采用單次發(fā)送180響應(yīng)提示已經(jīng)不能適應(yīng),可以以一定間隔重復(fù)發(fā)送180(建議間隔使用2T1,缺省值是1 s),主叫據(jù)此可判斷網(wǎng)絡(luò)是否正常,同時(shí)主叫對(duì)180響應(yīng)進(jìn)行確認(rèn)(發(fā)送PRACK),被叫可據(jù)此判斷網(wǎng)絡(luò)是否正常。
被叫停止發(fā)送和主叫停止檢測(cè)180響應(yīng):①被叫在用戶摘機(jī)后,發(fā)送200 OK響應(yīng),被叫停止發(fā)送180響應(yīng);②主叫在接收到被叫的200 OK響應(yīng)后,停止檢測(cè)180響應(yīng);③如果被叫用戶一直沒(méi)有摘機(jī)的話,主叫可以用戶主動(dòng)掛機(jī)或proceeding超時(shí)后,停止檢測(cè)180響應(yīng);④被叫在主叫掛機(jī)或INVITE事務(wù)超時(shí)后,停止發(fā)送180響應(yīng)。
(4)選用Session Timer會(huì)話保持機(jī)制[4]
Session Timer會(huì)話保持機(jī)制是RFC4028定義的,標(biāo)準(zhǔn)建議有狀態(tài)工作模式時(shí),使用Session Timer功能進(jìn)行會(huì)話保持?;驹硎峭ㄟ^(guò)在UAC和UAS之間協(xié)商會(huì)話刷新的發(fā)起者和刷新周期。發(fā)起者使用re-INVITE或UPDATE進(jìn)行刷新,接收者進(jìn)行響應(yīng)。如果長(zhǎng)時(shí)間連續(xù)沒(méi)有刷新請(qǐng)求或響應(yīng),表明網(wǎng)絡(luò)出現(xiàn)異常,雙方可以終止會(huì)話,釋放資源。
在標(biāo)準(zhǔn)SIP協(xié)議中,會(huì)話保持機(jī)制是可選機(jī)制(只有在有狀態(tài)服務(wù)器使用該機(jī)制)。在無(wú)線自組網(wǎng)中,傳輸資源有限,資源管理是有效運(yùn)行的基礎(chǔ),會(huì)話保持機(jī)制將作為資源釋放最重要的監(jiān)控觸發(fā)措施。建議將會(huì)話保持機(jī)制作為無(wú)線自組網(wǎng)SIP協(xié)議的必選機(jī)制。
(5)實(shí)時(shí)感知確認(rèn)機(jī)制
Session Timer會(huì)話保持的周期通常不能太短,導(dǎo)致難以即時(shí)發(fā)現(xiàn)問(wèn)題。在明確知道數(shù)據(jù)傳輸特征的情況下,如RTP數(shù)據(jù)包的間隔、靜音數(shù)據(jù)包的間隔等特征??梢越柚鷮?shí)時(shí)RTP數(shù)據(jù)包接收情況,及時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)異常,并啟動(dòng)類似會(huì)話刷新的動(dòng)作進(jìn)行確認(rèn),解決Session Timer會(huì)話保持機(jī)制實(shí)時(shí)性差的缺陷。
(6)緊急巡查機(jī)制
可以在SIP服務(wù)器使用的資源緊缺到一定門限時(shí),啟動(dòng)緊急巡查機(jī)制(發(fā)送 UPDATE、re-INVITE),對(duì)連續(xù)多次巡查沒(méi)有響應(yīng)的會(huì)話,服務(wù)器主動(dòng)終止,釋放資源。
將3.2節(jié)提出的可靠性機(jī)制實(shí)現(xiàn)后,分別部署在1臺(tái)SIP服務(wù)器和2臺(tái)終端上,連接到有線局域網(wǎng)上(由于這些機(jī)制的改進(jìn)是針對(duì)網(wǎng)路不可用的,可以在有線網(wǎng)絡(luò)進(jìn)行模擬),其中SIP服務(wù)器、終端設(shè)計(jì)成可以手動(dòng)控制部分消息的發(fā)送、轉(zhuǎn)發(fā),以便準(zhǔn)確配合模擬網(wǎng)路斷開(kāi)等操作。設(shè)置Proceeding超時(shí)時(shí)間為2 s(4T1,其中T1使用缺省值500 ms),180重復(fù)發(fā)送時(shí)間間隔是1 s(2T1)。Session Timer超時(shí)時(shí)間1 800 s,采用終端發(fā)起刷新方式。
緊急巡查采用動(dòng)態(tài)參數(shù),根據(jù)資源占用率的不同采用不同的參數(shù),原則上是資源使用率越高時(shí),巡查時(shí)間越短,最短可達(dá)500 ms(T1)。在無(wú)線自組織網(wǎng)絡(luò)環(huán)境進(jìn)行了初步的測(cè)試和驗(yàn)證,改進(jìn)前后試驗(yàn)結(jié)果如表1所示。
表1 測(cè)試結(jié)果Table 1 Test result
測(cè)試結(jié)果表明,提出的可靠性改進(jìn)機(jī)制解決了會(huì)話建立、會(huì)話過(guò)程中,網(wǎng)絡(luò)不可用引起的主叫撥號(hào)后長(zhǎng)時(shí)間無(wú)響應(yīng)、長(zhǎng)時(shí)間單邊振鈴、振鈴后接續(xù)不成功、服務(wù)器資源泄漏等問(wèn)題,能正確發(fā)現(xiàn)異常,進(jìn)行相應(yīng)的處理并提示用戶。但發(fā)現(xiàn)問(wèn)題的及時(shí)性較差,借助實(shí)時(shí)感知確認(rèn)機(jī)制,終端可以及時(shí)發(fā)現(xiàn)異常并處理。在呼叫保持能力的測(cè)試過(guò)程中,由于網(wǎng)絡(luò)不可用將引起資源不能正常釋放,只能通過(guò)Session Timer超時(shí)釋放,及時(shí)性很差,大大降低了呼叫保持能力。通過(guò)緊急巡查機(jī)制,可以確保呼叫資源出現(xiàn)緊缺時(shí),及時(shí)確認(rèn)會(huì)話有效性,并釋放無(wú)效會(huì)話的資源,確保呼叫保持能力。
總的說(shuō)來(lái),改進(jìn)后的SIP可靠性機(jī)制,將異常發(fā)現(xiàn)和處理控制在秒級(jí),并及時(shí)給用戶正確的提示,大大提升了用戶的體驗(yàn)。
文中針對(duì)標(biāo)準(zhǔn)SIP協(xié)議在無(wú)線自組網(wǎng)不可用時(shí)引起的問(wèn)題進(jìn)行了總結(jié)和分析,設(shè)計(jì)了新的可靠性機(jī)制,擴(kuò)展了原SIP協(xié)議中可靠性機(jī)制的應(yīng)用范圍,形成了無(wú)線組網(wǎng)下SIP協(xié)議較完整的可靠性機(jī)制。并經(jīng)過(guò)初步測(cè)試驗(yàn)證,改進(jìn)后的SIP協(xié)議能較好的適應(yīng)無(wú)線自組網(wǎng)網(wǎng)絡(luò)可靠性差、甚至不可用等情況?;具_(dá)到了將SIP協(xié)議延伸應(yīng)用到無(wú)線自組網(wǎng),在無(wú)線自組網(wǎng)中提供多媒體業(yè)務(wù)的預(yù)期目標(biāo)。
受無(wú)線自組網(wǎng)具體特性、用戶體驗(yàn)要求、帶寬占用、閃斷干擾等因素影響,各種可靠性機(jī)制的參數(shù)值的確定方法比較復(fù)雜,它們相互制約,難以統(tǒng)一。可靠性機(jī)制參數(shù)值的確定優(yōu)化有待進(jìn)行深入研究完善。
[1]ROSENBERG J,SCHULZRINNE H,CAMARILLO G,et al.RFC3261 - 2002,SIP:Session Initiation Protocol[S].[s.l.]:IETF,2005.
[2]黃育平,黃威.SIP協(xié)議在軟交換中應(yīng)用的研究[J].通信技術(shù),2012,45(07):45 -47.HUANG Yu -ping,HUANG Wei.Study on Applications of SIP Protocol in Soft Exchange[J].Communications Technology,2012,45(07):45 -47.
[3]汪陳伍,李廣華.HSIP:下一代無(wú)線網(wǎng)絡(luò)理想的選擇[J].2009,42(07):218 -219,228.WANG Chen-wu,LI Guang-h(huán)ua.HSIP:Ideal Choice for Next- Generation Wireless Network[J].2009,42(07):218 -219,228.
[4]孫旭輝,龍昭華,蔣貴全.基于SIP的VoWLAN的移動(dòng)性研究[J].2009,42(04):178 -179,182.SUN Xu-h(huán)ui,LONG Zhao-h(huán)ua,JIANG Gui-quan.Mobility of VoWLAN based on SIP[J].2009,42(04):178 -179,182.
[5]ROSENBERG J,SCHULZRINNE H.RFC3262 - 2002,Reliability of Provisional Responses in Session Initiation Protocol(SIP)[S].[s.l.]:IETF,2002.
[6]DONOVAN S,ROSENBERG J.RFC4028 -2005,Session Timers in the Session Initiation Protocol(SIP)[S].[s.l.]:IETF,2005.
[7]馬睿,朱建沖,楊美玲.基于抗毀性的軍事通信網(wǎng)可靠性和節(jié)點(diǎn)重要性分析[J].兵工自動(dòng)化,2012,31(10):44-47.MA Rui,ZHU Jian - chong,YANG Meiling.Analysis on Reliability and Nodal Importance of Military Communication Network based on Invulnerability[J].Ordnance Industry Automation,2012,31(10):44 -47.