馬曉娟 宋金平
摘要:在《電腦知識(shí)與技術(shù)》2016年9月刊《SIP協(xié)議的分層TCPN建模》一文中,作者論述了SIP協(xié)議的分層TCPN建模,本文結(jié)合若干模型分析技術(shù)驗(yàn)證了此協(xié)議的正確性。經(jīng)分析,指出可能出現(xiàn)死鎖,并分析了死鎖原因。最后針對(duì)協(xié)議的設(shè)計(jì)又提出了相應(yīng)的優(yōu)化措施。
關(guān)鍵詞:驗(yàn)證;觸發(fā);死鎖;優(yōu)化
1概述
基于《SIP協(xié)議的分層TCPN建?!分兴⒌腟IP協(xié)議,本文首先驗(yàn)證了此模型能否滿足協(xié)議里對(duì)時(shí)間的條件約束,而后結(jié)合路徑分析狀態(tài)空間分析、模型模擬等技術(shù),對(duì)此模型能否達(dá)到協(xié)議功能進(jìn)行了檢驗(yàn),并提出設(shè)計(jì)中可能進(jìn)入死鎖這一不足。
2分層TCPN模型下SIP協(xié)議的驗(yàn)證
2.1驗(yàn)證時(shí)間約束條件
因TCPN建模下定時(shí)規(guī)律是時(shí)間約束的重要體現(xiàn),為保障模型對(duì)SIP協(xié)議的正確模擬,必需對(duì)其準(zhǔn)確性做驗(yàn)證。下文以模型中UAC端定時(shí)器A與定時(shí)器B為例,闡述通過(guò)模型模擬方式驗(yàn)證定時(shí)規(guī)律的過(guò)程。觸發(fā)定時(shí)器6次后,T1時(shí)間(往返時(shí)延)之后若還未接收到應(yīng)答,定時(shí)器B就會(huì)被觸發(fā),也就是說(shuō)Calling狀態(tài)下的UAC,定時(shí)器A最多被觸發(fā)6次,定時(shí)器B最多被觸發(fā)1次。
為查看模型模擬的執(zhí)行結(jié)果,需要設(shè)定精確的觸發(fā)定時(shí)器的時(shí)間值予以比對(duì)。如果所設(shè)比對(duì)值與實(shí)際執(zhí)行結(jié)果相同,表明對(duì)此定時(shí)器的定時(shí)規(guī)律建模正確。為精確描述兩定時(shí)器的觸發(fā)時(shí)機(jī),首先將T1的初始值設(shè)為5(發(fā)出INVITE請(qǐng)求T1時(shí)間后,定時(shí)器A第1次被觸發(fā)),協(xié)議執(zhí)行時(shí)間設(shè)為0;0時(shí)刻發(fā)送INVITE請(qǐng)求,定時(shí)器A第一次被觸發(fā)的時(shí)間是5,第二次被觸發(fā)的時(shí)間是2*T1+5,即15,第三次被觸發(fā)的時(shí)間是4*T1+15,即35,第四次被觸發(fā)的時(shí)間是8*T1+35,即75,第五次被觸發(fā)的時(shí)間是16*T1+75,即155,第六次被觸發(fā)的時(shí)間是32*T1+155,即315,這樣定時(shí)器B被觸發(fā)的時(shí)間為315+T1,即320。如此即得出觸發(fā)時(shí)間序列為5,15,35,75,155,315,320,將此序列看作參照值和實(shí)際模型模擬結(jié)果做比對(duì)。
在《SIP協(xié)議的分層TCPN建模》中所建的模型中定時(shí)器觸發(fā)次數(shù)隨機(jī),定時(shí)器A觸發(fā)次數(shù)是[0,6]間隨機(jī)整數(shù)。假設(shè)定時(shí)器A觸發(fā)次數(shù)為m(0 如表1所示,使得兩個(gè)SUCCESS函數(shù)維持假值不變。對(duì)于變遷TransErr而言,導(dǎo)致TransErr始終都不發(fā)生,從而可避免因發(fā)生傳輸層錯(cuò)誤引起的協(xié)議狀態(tài)轉(zhuǎn)移,進(jìn)而無(wú)從驗(yàn)證僅在Calling狀態(tài)下才有效的兩定時(shí)器的定時(shí)規(guī)律。對(duì)于變遷CTOS而言,導(dǎo)致CTOS始終不會(huì)觸發(fā),等效于模擬出一條0可靠率的鏈路,從而不斷激活定時(shí)器的超時(shí)事件,這有助于我們驗(yàn)證定時(shí)器的觸發(fā)規(guī)律。 調(diào)整參數(shù)后,模擬模型的運(yùn)行結(jié)果截圖如圖1所示。圖中庫(kù)所CollectorCTS附近的幾個(gè)值體現(xiàn)了每個(gè)消息被觸發(fā)的時(shí)間,INVITE@O意為在初始狀態(tài)下UAC發(fā)送出去的INVITE請(qǐng)求,余下的INVITE均由定時(shí)器A所觸發(fā)。因定時(shí)器A控制重傳消息,故其觸發(fā)時(shí)間可由重傳消息所附帶的時(shí)間值進(jìn)行提取。而觸發(fā)定時(shí)器B可轉(zhuǎn)移UAC狀態(tài),故其觸發(fā)時(shí)間可由用以描述UAC狀態(tài)的庫(kù)所Scenec進(jìn)行提取。由圖l可知兩定時(shí)器的觸發(fā)規(guī)律與本文前面所提到的比對(duì)值一致,從而對(duì)定時(shí)器建模是否正確做出了驗(yàn)證。 2.2驗(yàn)證協(xié)議的正確性 下文采用狀態(tài)空間分析技術(shù),從模型是否存在死變遷、活鎖和死鎖這三個(gè)角度對(duì)協(xié)議進(jìn)行更深入的驗(yàn)證。死變遷即模型中從來(lái)沒(méi)有被點(diǎn)火的變遷,說(shuō)明模型建模時(shí)存在冗余。活鎖指的是環(huán)狀狀態(tài)空間,一旦進(jìn)人就不能離開,如此循環(huán)往復(fù)。對(duì)SIP的INVlTE而言,正常終結(jié)狀態(tài)是UAS與UAC均處于終結(jié)狀態(tài),若與此不符則陷入死鎖。 表2是TCPN模型下SIP協(xié)議的狀態(tài)空間分析結(jié)果,表中反映出狀態(tài)空間和與之對(duì)應(yīng)的強(qiáng)連通圖所含的弧與節(jié)點(diǎn)數(shù)等值,說(shuō)明不可靠鏈路下的INVITE事務(wù)不存在活鎖,也不存在死變遷和活變遷。