畢業(yè)設(shè)計(jì)(論文)基于SIP業(yè)務(wù)模擬器工具設(shè)計(jì)和研究_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于SIP業(yè)務(wù)模擬器工具設(shè)計(jì)和研究_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于SIP業(yè)務(wù)模擬器工具設(shè)計(jì)和研究_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于SIP業(yè)務(wù)模擬器工具設(shè)計(jì)和研究_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于SIP業(yè)務(wù)模擬器工具設(shè)計(jì)和研究_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 本科生畢業(yè)設(shè)計(jì)(論文)題 目: sip業(yè)務(wù)模擬器工具的 設(shè)計(jì)與研究 姓 名: 學(xué) 號(hào): 學(xué) 院: 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 專(zhuān) 業(yè): 信息與計(jì)算科學(xué) 年 級(jí): 2007級(jí) 指導(dǎo)教師: (簽名)2011 年 06 月16 日 sip業(yè)務(wù)模擬器工具設(shè)計(jì)和研究中文摘要本文討論了關(guān)于下一代網(wǎng)絡(luò)(ngn)的應(yīng)用開(kāi)發(fā)的問(wèn)題,它是基于sip業(yè)務(wù)的開(kāi)發(fā),sip(會(huì)話初始化協(xié)議)的開(kāi)發(fā)目的是用來(lái)幫助提供跨越因特網(wǎng)的高級(jí)電話業(yè)務(wù)。本文設(shè)計(jì)了一個(gè)sip呼處理的模擬器。開(kāi)始描述了sip基本術(shù)語(yǔ),所需要的基本原理以及模擬器工具的系統(tǒng)架構(gòu),并使用mfc開(kāi)發(fā)出相關(guān)的界面。接著對(duì)于呼處理的模塊設(shè)計(jì),其需要兩部分完成,一個(gè)是si

2、p消息本身的解析模塊設(shè)計(jì),另一個(gè)是sip消息腳本的解析模塊設(shè)計(jì)。對(duì)于sip消息本身的解析模塊設(shè)計(jì),采用了按行的解析算法思想以及c+實(shí)現(xiàn),和按字節(jié)的解析算法思想相比,即保證了消息的完整性又具有整體直觀性,也提高了程序的運(yùn)行效率。而sip消息腳本通過(guò)xml編寫(xiě),故是實(shí)現(xiàn)xml腳本的解析,此解析算法思想是采用串行解析技術(shù),并通過(guò)形成鏈表和樹(shù)形結(jié)構(gòu),完成對(duì)關(guān)鍵字的提取。此模擬器工具是在window 使用visual c+ 6.0來(lái)實(shí)現(xiàn),在winsock的編程原理基礎(chǔ)上,即客戶機(jī)-服務(wù)器的通信模式,采用改進(jìn)的流套接字編程方法,實(shí)現(xiàn)sip基本呼叫建立過(guò)程。最后通過(guò)對(duì)此模擬器工具的進(jìn)行了性能測(cè)試來(lái)說(shuō)明其對(duì)驗(yàn)

3、證大量的準(zhǔn)正常和異常case的效果。關(guān)鍵字:sip消息、解析算法、呼處理 the development of simulative tool based on sip professional work abstract目 錄中文摘要iiabstractiii第1章 緒論11.1 背景知識(shí)11.2 sip協(xié)議簡(jiǎn)介11.3 工具開(kāi)發(fā)概要31.4 本文主要研究?jī)?nèi)容3第2章 系統(tǒng)架構(gòu)及界面開(kāi)發(fā)42.1 系統(tǒng)架構(gòu)42.2 主界面及子界面5第3章 sip消息解析模塊設(shè)計(jì)93.1 sip消息引言93.2 sip消息解析策略及初步模型103.3 sip解析模型改進(jìn)11第4章 xml腳本解析模塊設(shè)計(jì)134.

4、1 解析技術(shù)134.2 腳本格式及特點(diǎn)134.3 腳本解析模型及特點(diǎn)17第5章 模擬器測(cè)試及結(jié)果分析195.1 模擬器呼叫模塊及結(jié)果195.2 性能測(cè)試及結(jié)果205.3 結(jié)果分析21結(jié)論21謝辭22參考文獻(xiàn)23第1章 緒論1.1 背景知識(shí)隨著voip(網(wǎng)絡(luò)電話)的迅猛發(fā)展,通訊技術(shù)數(shù)字化已成為現(xiàn)代通信技術(shù)的基本特征和最突出的發(fā)展趨勢(shì)。而網(wǎng)絡(luò)的下一個(gè)發(fā)展目標(biāo)就是ngn,ngn是下一代網(wǎng)絡(luò),又稱(chēng)為次世代網(wǎng)絡(luò),它使得新一代網(wǎng)絡(luò)上語(yǔ)音、視頻、數(shù)據(jù)等綜合業(yè)務(wù)成為了可能。而sip協(xié)議是ngn中的重要協(xié)議,sip稱(chēng)為會(huì)話初始化協(xié)議,它的開(kāi)發(fā)目的是用來(lái)幫助提供跨越因特網(wǎng)的高級(jí)電話業(yè)務(wù)。因特網(wǎng)電話正在向一種正式

5、的商業(yè)電話模式演進(jìn),sip就是用來(lái)確保這種演進(jìn)實(shí)現(xiàn)而需要的ngn序列協(xié)議中重要的一員。目前,單一的業(yè)務(wù)已經(jīng)無(wú)法滿足人們的需求了,而轉(zhuǎn)變?yōu)橐环N綜合的業(yè)務(wù),它融合了文本數(shù)據(jù)業(yè)務(wù)、語(yǔ)音數(shù)據(jù)業(yè)務(wù)、多媒體視頻數(shù)據(jù)業(yè)務(wù)。為了建設(shè)投資小、效益高、可共享的網(wǎng)絡(luò),以電話網(wǎng)為代表的電信網(wǎng)和以因特網(wǎng)為代表的數(shù)據(jù)網(wǎng)絡(luò)的互通和融合進(jìn)程正在快速發(fā)展。加上以前被我們視為瓶頸的帶寬和服務(wù)質(zhì)量問(wèn)題已得到解決,大大推動(dòng)了 ip 技術(shù)的發(fā)展,帶動(dòng)各種應(yīng)用向 ip靠攏。sip (session initiation protocol,會(huì)話初始協(xié)議)是由 ietf ( the internet engi2neering task fo

6、rce,互聯(lián)網(wǎng)工程任務(wù)組) 于1999 年提出的一個(gè)基于 ip 網(wǎng)絡(luò)的一種實(shí)時(shí)通信應(yīng)用信令協(xié)議1。因?yàn)?sip協(xié)議具有internet協(xié)議簡(jiǎn)單、靈活、擴(kuò)展性好等特點(diǎn),目前已得到越來(lái)越廣泛的應(yīng)用。因此,對(duì)基于 sip業(yè)務(wù)的應(yīng)用軟件工具進(jìn)行相關(guān)的開(kāi)發(fā)及測(cè)試也就十分重要。1.2 sip協(xié)議簡(jiǎn)介sip(session initiation protocol)會(huì)話初始協(xié)議是ietf制定的,用于多方多媒體的通信。sip是一個(gè)基于文本的應(yīng)用層控制協(xié)議,獨(dú)立于底層傳輸協(xié)議tcp/udp/sctp,用于建立、修改和終止ip網(wǎng)上的雙方或者多方多媒體會(huì)話。sip協(xié)議借鑒了http、smtp等協(xié)議,支持代理、重定向及

7、登記定位用戶等功能,支持用戶移動(dòng)。通過(guò)與rtp/rtcp、sdp、rtsp等協(xié)議及dns配合,sip支持語(yǔ)音、視頻、數(shù)據(jù)、e-mail、狀態(tài)、im、聊天、游戲等。sip 可以用來(lái)對(duì)會(huì)話進(jìn)行初始化, 也可以邀請(qǐng)成員加入經(jīng)其他手段建立或公布的會(huì)話。sip 支持建立和終止多媒體通信方面的功能有:l 用戶端定位( user locat ion):對(duì)在通信中使用的端系統(tǒng)的位置的確定。l 用戶能力( user capabilties):決定在通信中要使用的媒體和媒體參數(shù)。l 用戶可行性( user availability ):確定被呼叫方是否愿意加入通信。l 呼叫建立( call setup):呼叫方和

8、被呼叫方雙方建立呼叫參數(shù)。l 呼叫處理( call handling):包括轉(zhuǎn)移和結(jié)束呼叫。sip的終端系統(tǒng)稱(chēng)為用戶代理(user agent,簡(jiǎn)稱(chēng)ua),含用戶代理客戶機(jī)uac(user agent client)以及用戶代理服務(wù)器uas(user agent server)兩部分,呼叫過(guò)程即是uac和uas通信的過(guò)程。一個(gè)呼叫建立過(guò)程如圖1.1。用戶代理客戶端(uac)用戶代理服務(wù)器(uas)invite180200ackbye200圖1.1 sip業(yè)務(wù)模擬器基本呼叫建立過(guò)程sip協(xié)議把一個(gè)呼叫分為三個(gè)階段:呼叫建立,呼叫保持,呼叫釋放。圖1.1所示的是一個(gè)呼叫建立的信令過(guò)程。首先要建立呼

9、叫信令信道,即一個(gè)udp或者tcp連接。則,由服務(wù)器的ip地址和端口號(hào)建立客戶端和服務(wù)器端之間的呼叫信令信道。然后,客戶端向服務(wù)器端發(fā)送invite消息,如果服務(wù)器端同意建立呼叫,發(fā)送180、200消息,其中180狀態(tài)碼表示請(qǐng)求已經(jīng)收到,正在處理中,200表示請(qǐng)求已經(jīng)成功。此時(shí),如果客戶端突然不想?yún)⒓哟舜螘?huì)話,可以向服務(wù)器端發(fā)送bye消息,此次呼叫結(jié)束;如果客戶端仍然想?yún)⒓哟舜螘?huì)話,就向服務(wù)器端發(fā)送ack消息,確認(rèn)客戶端已經(jīng)收到了對(duì)invite請(qǐng)求的最終響應(yīng)(200),經(jīng)過(guò)三次握手機(jī)制后,基本呼叫建立完成,進(jìn)入呼叫保持階段。當(dāng)雙方通信一段時(shí)間后,任何一方可以發(fā)送bye消息來(lái)結(jié)束此次會(huì)話的呼叫。

10、1.3 工具開(kāi)發(fā)概要sipserver呼處理相關(guān)業(yè)務(wù)測(cè)試過(guò)程中需要驗(yàn)證大量的準(zhǔn)正常和異常case,這些case在設(shè)備正常呼叫過(guò)程中很難出現(xiàn),測(cè)試的難度較大。需要一種測(cè)試業(yè)務(wù)模擬工具,它實(shí)現(xiàn)了uac(用戶代理客戶端)功能,能夠根據(jù)用戶配置的腳本,自動(dòng)生成相應(yīng)的呼叫流程,發(fā)送和接收相應(yīng)的sip消息,并報(bào)告執(zhí)行結(jié)果。1.4 本文主要研究?jī)?nèi)容很多的sip測(cè)試工具器是基于dos命令并在linux下的,本文設(shè)計(jì)了一個(gè)在windows下的sip業(yè)務(wù)模擬器工具,是一個(gè)呼叫處理工具,該工具和dos命令下的界面相比,更簡(jiǎn)潔直觀,優(yōu)化了命令的傳輸形式。一開(kāi)始描述了系統(tǒng)構(gòu)架并完成相關(guān)的界面;其次研究了sip消息解析模

11、塊的設(shè)計(jì),提出一中按行解析的新思路,而其編碼是基于擴(kuò)展的巴基科范式(abnf)2;而后對(duì)腳本解析的設(shè)計(jì)和實(shí)現(xiàn),在原有的xml解析算法流程進(jìn)行擴(kuò)展,以達(dá)到滿足項(xiàng)目需求;最后通過(guò)visual c+6.0 實(shí)現(xiàn)模擬器工具以及采用winsock的原理實(shí)現(xiàn)基本呼叫的過(guò)程。最后一章通過(guò)實(shí)驗(yàn)數(shù)據(jù)來(lái)表明該模擬器工具的性能。第2章 系統(tǒng)架構(gòu)及界面開(kāi)發(fā)2.1 系統(tǒng)架構(gòu)數(shù)據(jù)對(duì)象腳本文件對(duì)象類(lèi)sip消息對(duì)象類(lèi)配置參數(shù)對(duì)象類(lèi)統(tǒng)計(jì)數(shù)據(jù)對(duì)象類(lèi)。呼處理控制腳本解析呼處理控制sip消息解析統(tǒng)計(jì)數(shù)據(jù)收集。界面和數(shù)據(jù)展示消息窗口統(tǒng)計(jì)窗口案例展示窗口配置窗口。 圖2.1 系統(tǒng)架構(gòu)圖2.2 主界面及子界面 圖2.2 主界面圖2.2.1

12、 工具欄工具欄上有4個(gè)功能按鈕,每個(gè)按鈕需求說(shuō)明如下:1) start test:?jiǎn)?dòng)測(cè)試,默認(rèn)狀態(tài):disabled ,只有scenario被選擇,狀態(tài)才轉(zhuǎn)為enabled2) stop test:停止測(cè)試,默認(rèn)狀態(tài):disabled,只有start test開(kāi)始了,狀態(tài)才轉(zhuǎn)為enabled3) select scenario:選擇測(cè)試方案,點(diǎn)擊后彈出文件選擇框,選擇 scenario,在scenario window 顯示4) option:設(shè)置測(cè)試選項(xiàng),點(diǎn)擊后彈出測(cè)試選項(xiàng)對(duì)話框,完成后選項(xiàng)配置要保存到配置文件中。2.2.2 scenario window情景窗口(圖2.3)需要實(shí)現(xiàn)的內(nèi)容

13、為:1) 允許編輯,修改2) 提供右鍵彈出菜單,來(lái)保存用戶修改3) 腳本的格式參考sipp的腳本格式 圖2.3 情景窗口:顯示腳本內(nèi)容2.2.3 message window消息窗口(圖2.4)需要實(shí)現(xiàn)的內(nèi)容為:1) 顯示當(dāng)前接收發(fā)送的消息2) 提供右鍵彈出菜單,來(lái)保存log功能 圖2.4 消息顯示窗口2.2.4 statistic window統(tǒng)計(jì)窗口(圖2.5)顯示測(cè)試的統(tǒng)計(jì)信息:測(cè)試方案執(zhí)行次數(shù),成功次數(shù),失敗次數(shù),預(yù)期消息,未預(yù)期的消息 圖2.5 消息統(tǒng)計(jì)窗口2.2.5 option window軟件的運(yùn)行參數(shù)配置如圖2.6:該配置提供本地ip和本地端口以及遠(yuǎn)程ip和遠(yuǎn)程端口。 圖2.

14、6軟件運(yùn)行參數(shù)配置如下內(nèi)容將自動(dòng)保存到配置文件中:option.iniproduct_infomulticalls=1rip=rport=5060lip=lport=5060maxcallnum=1000log=1第3章 sip消息解析模塊設(shè)計(jì)3.1 sip消息引言sip采用c/s結(jié)果的消息機(jī)制,分布式控制。sip消息分為兩大類(lèi):從客戶端到服務(wù)器的請(qǐng)求(request)和從服務(wù)器到客戶端的響應(yīng)(response)。sip基于http,是一中文本型請(qǐng)求響應(yīng)吸引:客戶端發(fā)起請(qǐng)求,服務(wù)器端回送響應(yīng)。一次sip事務(wù)處理包括一個(gè)客戶端的請(qǐng)求、沒(méi)有多個(gè)臨時(shí)響應(yīng),以及一個(gè)來(lái)自服務(wù)

15、器端的最終響應(yīng)。sip消息 = 開(kāi)始行消息頭crlf消息體開(kāi)始行 = 請(qǐng)求行/狀態(tài)行 圖3.1 sip消息格式圖3.1顯示了sip消息格式,它以起始行開(kāi)始,請(qǐng)求消息中稱(chēng)為請(qǐng)求行,響應(yīng)消息中稱(chēng)狀態(tài)行。起始行后面是一些標(biāo)題區(qū)域,包括格式name:value以及一個(gè)空行將標(biāo)題區(qū)域和可選信息實(shí)體分隔開(kāi)。消息頭由域名和域值并加上中間的”:”組成的,例如:from:。消息體由sdp消息構(gòu)成,sdp消息是文本信息,采用utf-8編碼中的iso10646字符集,但sip消息中不一定都有sdp消息。一個(gè)由uac發(fā)出的合法sip請(qǐng)求必須包含的最小頭字段如下:to,from,cseq,call-id,max-for

16、wards,via所有這些頭字段在sip請(qǐng)求中都是強(qiáng)制的。這六個(gè)域是構(gòu)成sip消息的基本塊,它們聯(lián)合提供大多數(shù)的消息路由服務(wù),包括消息尋址、響應(yīng)路由、限制消息傳播、消息定制、唯一性鑒定事務(wù)。這些頭字段還追加了一些強(qiáng)制請(qǐng)求行包括方法、請(qǐng)求地址、sip版本。3.2 sip消息解析策略及初步模型sip消息是采用c+面向?qū)ο髞?lái)實(shí)現(xiàn)的,根據(jù)c+面向?qū)ο蟮奶攸c(diǎn),以及sip協(xié)議自身的特點(diǎn),提出了一種按行解析的新思路產(chǎn)生sip協(xié)議棧來(lái)保存sip消息。 按行解析式是相對(duì)于按字節(jié)解析的,一個(gè)字節(jié)、一個(gè)字節(jié)讀取時(shí)按照字節(jié)解析的;而所謂按行解析,是把sip消息中的每個(gè)行當(dāng)作一個(gè)整體來(lái)處理,通過(guò)逐行解析,來(lái)完成整個(gè)消息

17、的解析。但是sip消息每一行的格式和類(lèi)型又是不盡相同,不可能用一個(gè)函數(shù)解析到底,針對(duì)這一點(diǎn),結(jié)合c+語(yǔ)言的繼承性和多態(tài)性可以完全解決這個(gè)問(wèn)題。繼承性使得能夠?qū)ip消息看作一個(gè)整體來(lái)對(duì)待,多態(tài)性則將其中請(qǐng)求消息與相應(yīng)消息的不同的細(xì)節(jié)問(wèn)題解決得比較完善,通過(guò)建立在繼承性和多態(tài)性的基礎(chǔ)上,完成按行解析的過(guò)程。解析模塊完成兩大功能:第一是正向消息解析,完成文本(字符串)到協(xié)議規(guī)定的消息格式的轉(zhuǎn)換,主要是在接收消息時(shí)候調(diào)用。第二是逆向消息編碼,完成消息到字符串的轉(zhuǎn)換,主要在發(fā)送消息時(shí)候調(diào)用。基于單線程的解析模型算法流程圖如圖3.1。解析起始行開(kāi)始收到消息解析頭字段解析sip版本號(hào)狀態(tài)碼和解釋信息解析請(qǐng)

18、求方法請(qǐng)求uri和版本解析消息體sip消息?消息體? 結(jié)束圖3.1 sip消息解析流程圖有是無(wú)否sip消息解析算法描述:當(dāng)ua接收到一個(gè)sip消息后,首先對(duì)字符串形式的消息進(jìn)行整體的判斷和分解。當(dāng)對(duì)行結(jié)束符以及回車(chē)換行的識(shí)別,判斷消息是否合法。如果合法,再將消息分成三個(gè)部分分別進(jìn)行判斷和解析。先是對(duì)開(kāi)始行進(jìn)行分析判斷,判斷收到的消息是請(qǐng)求還是響應(yīng),而后對(duì)其進(jìn)行解析,同時(shí)提取相關(guān)信息(sip uri和版本號(hào));隨后對(duì)各個(gè)頭字段進(jìn)行解析,提取相關(guān)信息;當(dāng)遇到空行(crlf)后,調(diào)用對(duì)消息體的解析函數(shù);最后完成消息的解析。3.3 sip解析模型改進(jìn)在實(shí)現(xiàn)單線程解析的基礎(chǔ)上,采用abnf語(yǔ)法規(guī)則2。我

19、們可以設(shè)計(jì)一個(gè)多線程的消息處理模型來(lái)提高解析效率,即系統(tǒng)解析sip消息時(shí),可以同時(shí)從開(kāi)始行、頭字段、消息體解析。在消息頭種類(lèi)比較多時(shí),可以快速匹配到對(duì)應(yīng)的消息頭解析函數(shù)。在詞法解析算法中3,標(biāo)準(zhǔn)lr算法是可以同時(shí)處理多個(gè)進(jìn)程,系統(tǒng)可能會(huì)并行地存在幾組樹(shù)結(jié)構(gòu)棧,大大縮減計(jì)算量;在解析過(guò)程中采用共享子樹(shù)結(jié)構(gòu)來(lái)表現(xiàn)局部分析結(jié)果,節(jié)省空間開(kāi)銷(xiāo);通過(guò)節(jié)點(diǎn)合并,壓縮局部歧義。sip消息解析時(shí),解析模塊從輸入消息的句首順次“移入”sip消息的開(kāi)始行、頭字段、消息體,并根據(jù)語(yǔ)法中的重寫(xiě)規(guī)則逐級(jí)向上按條件“規(guī)約”,直到構(gòu)造出表示sip消息結(jié)構(gòu)的整個(gè)推到樹(shù)。在移入和歸約過(guò)程中sip信息以棧的形式存放,棧中存放解析

20、過(guò)程的有關(guān)“歷史”信息,在解析時(shí)根據(jù)這些歷史信息和當(dāng)前正在處理的符合來(lái)決定究竟是移入還是歸約3。sip算法解析過(guò)程:1) 從輸入消息的左端將一個(gè)未處理過(guò)的終結(jié)符移入棧頂,并等待更多的信息到了之后再做決定;2) 根據(jù)上下文無(wú)關(guān)語(yǔ)法的abnf規(guī)則,用該規(guī)則左邊的符合來(lái)取代棧頂?shù)呐c規(guī)則右邊相匹配的符合;3) 對(duì)棧中符合和輸入符合串進(jìn)行處理,輸入串處理完成,且棧中只剩下一個(gè)符號(hào)s,分析成功,然后結(jié)束;4) 若棧中并非只有一個(gè)符合s或者輸入的字符串中的符號(hào)沒(méi)有處理完成,也不能進(jìn)行任何的規(guī)約操作,分析失敗結(jié)束。sip解析改進(jìn)算法流程如圖4所示5。開(kāi) 始輸入abnf規(guī)則輸入sip消息i = 1取第i個(gè)條件的

21、信息電子詞典lr分析表i+按lr分析表處理,如果出現(xiàn)多種操作,啟動(dòng)多線程是否出錯(cuò)?是否接受?是否歸約?移 進(jìn)打印出錯(cuò)信 息打印出錯(cuò)信 息輸出分析樹(shù)結(jié) 束合一算法生成子樹(shù)成功否?是否否否是是否是圖3.2 改進(jìn)sip解析算法流程圖第4章 xml腳本解析模塊設(shè)計(jì)4.1 解析技術(shù)xml解析技術(shù)分為串行解析技術(shù)和并行解析技術(shù)。其中串行解析技術(shù)是指解析xml文檔過(guò)程中采用單線程方式,即解析相關(guān)操作按照順序執(zhí)行的解析技術(shù)。而本文的xml解析模塊的設(shè)計(jì)采用串行解析技術(shù)的原理,在此基礎(chǔ)上通過(guò)基于預(yù)處理技術(shù),可以提高解析性能,同時(shí)可以保持應(yīng)用程序編程接口的兼容性。4.2 腳本格式及特點(diǎn)腳本實(shí)際上是一個(gè)sipp的x

22、ml配置文件,xml腳本不但提供了sip消息本身,而且通過(guò)xml元素的屬性提供了對(duì)這些消息的處理控制信息,這些處理控制信息包括重傳時(shí)間、是否是必須的消息、及時(shí)開(kāi)始和結(jié)束等。目前ph1階段我們只支持其中一部分功能,可以認(rèn)為我們的腳本文件是sipp的一個(gè)子集。格式:所有的腳本都是以下方式開(kāi)始以結(jié)束。一個(gè)客戶機(jī)(uac)的腳本結(jié)構(gòu)內(nèi)容是以“send”關(guān)鍵字開(kāi)始的,在“”和“”之間的內(nèi)容稱(chēng)為關(guān)鍵字,如下: !cdata invite sip:serviceremote_ip:remote_port sip/2.0 via: sip/2.0/transport local_ip:local_port f

23、rom: sipp ;tag=call_number to: sut call-id: call_id cseq: 1 invite contact: sip:sipplocal_ip:local_port max-forwards: 70 subject: performance test content-type: application/sdp content-length: len v=0 o=user1 53655765 2353687637 in iplocal_ip_type local_ip s=- t=0 0 c=in ipmedia_ip_type media_ip m=a

24、udio media_port rtp/avp 0 a=rtpmap:0 pcmu/8000 一個(gè)服務(wù)器(uas)的腳本結(jié)構(gòu)內(nèi)容如下: !cdata sip/2.0 180 ringing last_via: last_from: last_to:;tag=call_number last_call-id: last_cseq: contact: content-length: 0 在“send”命令中,我們把sip的消息封裝到“”標(biāo)簽之間。在這兩個(gè)標(biāo)簽里的內(nèi)容將會(huì)被發(fā)送到遠(yuǎn)程系統(tǒng)。這些關(guān)鍵字是用來(lái)說(shuō)明sipp該做什么事情。關(guān)鍵字列表說(shuō)明如表1: 表1 sip消息關(guān)鍵字說(shuō)明關(guān)鍵字默認(rèn)值說(shuō)明se

25、rviceservice服務(wù)字段,通過(guò)命令 s service_name傳遞remote_ip-遠(yuǎn)程ip地址,通過(guò)命令行傳遞remote_port5060遠(yuǎn)程ip端口,通過(guò)命令行傳遞。你可以增加一個(gè)已經(jīng)計(jì)算過(guò)的偏移量remote_port + 3 來(lái)賦給這個(gè)值。transportudp取決于t 參數(shù)的值,將獲得值“udp”或者“tcp”local_ipprimary host ip address獲得-i參數(shù)的值local_ip_type-取決于-i參數(shù)地址類(lèi)型(ipv4或ipv6),local_ip_type 的值若是4則為ipv4,若為6則為ipv6local_portrandom獲得-p

26、參數(shù)的值,你可以增加一個(gè)已經(jīng)經(jīng)過(guò)計(jì)算的偏移量(localport+3)賦給這個(gè)值。len-計(jì)算sip消息體的長(zhǎng)度。用在“content-length”字段中,你可以增加一個(gè)已經(jīng)經(jīng)過(guò)計(jì)算的偏移量(len+3) 賦給這個(gè)值。call_number-索引。從1開(kāi)始,每出現(xiàn)一個(gè)呼叫增加一。cseq-該值是自動(dòng)生成的,初始值是1,可以通過(guò)使用-base_cseq命令行選擇來(lái)改變它。call_id-sipp每一個(gè)新的呼叫就會(huì)產(chǎn)生一個(gè)call-id,一個(gè)這個(gè)值識(shí)別一個(gè)呼叫。在客戶模塊中,它通過(guò)sipp中的call-id字段值的形成來(lái)強(qiáng)制使用。否者,由于成為一個(gè)已經(jīng)存在的呼叫的一部分使得sipp無(wú)法識(shí)別該應(yīng)答

27、哪一個(gè)消息的發(fā)送。注:call-id可以通過(guò)三斜杠字符串/來(lái)識(shí)別。如:call-id:abcdefghij/call_id,則sipp仍然可以識(shí)別并當(dāng)作是同一個(gè)呼叫部分。media_ip-取決于-mi參數(shù)的值,它是本地ip地址對(duì)rtp的回應(yīng)值。media_ip_type-取決于-mi參數(shù)的地址類(lèi)型(ipv4或ipv6),media_ip_type 的值若是4則為ipv4,若為6則為ipv6media_port-取決于-mp參數(shù)的值,它設(shè)置了本地rtp回聲值。rtp/udp包接收它們的發(fā)送者。你可以增加一個(gè)已經(jīng)經(jīng)過(guò)計(jì)算的偏移量(media_port +3) 賦給這個(gè)值。auto_media_po

28、rt-僅使用在pcap中。從-mp參數(shù)的值開(kāi)始來(lái)設(shè)置它的端口,使用含10000組建(為pcap_play限制10000個(gè)當(dāng)前rtp會(huì)話)的周期系統(tǒng)來(lái)改變每個(gè)呼叫。last_*-如果接收的消息是最后一個(gè),則last_*關(guān)鍵字會(huì)被自動(dòng)的加到這個(gè)當(dāng)前消息的特定字段中(除了復(fù)傳送的消息外)。如果這個(gè)頭字段不是當(dāng)前的或者該消息已經(jīng)被接收,則該關(guān)鍵字被丟棄,且是值到最后一行的所有字節(jié)都會(huì)被丟棄。若一個(gè)消息中出現(xiàn)該頭字段多次,所有該情況連續(xù)使用last_*關(guān)鍵字來(lái)代替。field0-n-從外部csv文件寫(xiě)入該值。$n-用于寫(xiě)入呼叫變量數(shù)n值。authentication-用于設(shè)置鑒別字段,該字段可以有參數(shù),

29、如下:authentication username=myusernamepassword=mypassword.如果username沒(méi)有提供,則從-s命令行參數(shù)中取得。如果password沒(méi)有提供,則從-ap命令行參數(shù)中取得。pid-提供sipp主線程的進(jìn)程id號(hào)routes-如果“rrs”屬性在recv命令中被設(shè)置成“true”,則接收消息中的“record-route”頭字段被存儲(chǔ)并可以使用該關(guān)鍵字進(jìn)行重呼叫。next_url-如果“rrs”屬性在recv命令中被設(shè)置成“true”,則該字段含有cantact字段的文本內(nèi)容(該內(nèi)容在cantact中使用包含)。branch-提供一個(gè)分支值

30、,它在情景中由一串z9hg4bk+呼叫數(shù)+消息索引組成。msg_index-為情景提供消息數(shù)量cseq-提供最后請(qǐng)求接收的cseq值。這個(gè)值可以增大(如:cseq+1,為最后請(qǐng)求的cseq值增一)。在xml腳本中,元素的屬性表示對(duì)此消息的處理控制的方法。例如:optional屬性說(shuō)明這個(gè)消息是否是必需的。xml的cdata部分表示了sip消息的一個(gè)框架,可以看到在方括號(hào)中的內(nèi)容代表了一個(gè)變量,這些變量由用戶配置文件中給出,如remote_ip、local_ip、transport等,或者由模擬器工具自己生成,如call_id、call_number、tag等。通過(guò)這種方式,用戶可以方便地編寫(xiě)出

31、針對(duì)某類(lèi)系統(tǒng)具有普遍適用性的測(cè)試實(shí)例。4.3 腳本解析模型及特點(diǎn)4.3.1 串行解析技術(shù) 根據(jù)對(duì)xml實(shí)例進(jìn)行驗(yàn)證的模式,可以將串行解析技術(shù)進(jìn)一步分為獨(dú)立解析和解析與驗(yàn)證集兩種解析模式。獨(dú)立解析的模式指將解析過(guò)程與驗(yàn)證過(guò)程彼此獨(dú)立、驗(yàn)證過(guò)程處于解析過(guò)程之后的處理模式。文檔對(duì)象模型dom6是獨(dú)立解析模式的一種,是w3c推薦的一種獨(dú)立于語(yǔ)言和平臺(tái)的標(biāo)準(zhǔn),并且是一種基于樹(shù)型的解析技術(shù),其目標(biāo)是提供一個(gè)可以通用于各種程序語(yǔ)言、操作系統(tǒng)和應(yīng)用程序的編程接口。dom模型在解析xml文檔時(shí)先將整個(gè)xml文檔掃描一遍,得到獨(dú)立的元素、屬性和注釋等然后以節(jié)點(diǎn)樹(shù)的形式在內(nèi)存中創(chuàng)建xml文檔的表示,是以層次結(jié)構(gòu)組織

32、的節(jié)點(diǎn)或信息片段的集合,每個(gè)節(jié)點(diǎn)代表一個(gè)可以與之交互的對(duì)象,用戶可以通過(guò)結(jié)點(diǎn)樹(shù)訪問(wèn)文檔內(nèi)容。 此模型的優(yōu)點(diǎn)是在內(nèi)存中保留整個(gè)文檔的所有信息,用戶可以隨意訪問(wèn)任意位置的節(jié)點(diǎn)信息或是對(duì)之進(jìn)行修改,開(kāi)發(fā)人員可以方便編寫(xiě)程序。4.3.2 解析模型描述在串行技術(shù)的基礎(chǔ)上,又根據(jù)sip腳本的內(nèi)容特點(diǎn),對(duì)有些特定的字符串進(jìn)行預(yù)處理,預(yù)過(guò)濾技術(shù)根據(jù)一定的規(guī)則、機(jī)制,在解析之前對(duì)xml文檔進(jìn)行預(yù)處理,將用戶真正需要的部分過(guò)濾出來(lái)然后執(zhí)行解析,從而降低了解析的工作量,提高了解析的性能。在解析xml文檔dom解析技術(shù)的基礎(chǔ)上,采用c+面向?qū)ο蟮姆椒▽?shí)現(xiàn)對(duì)xml的解析,其定義了一系列的對(duì)象和方法對(duì)dom樹(shù)的節(jié)點(diǎn)進(jìn)行各

33、種隨機(jī)操作:1) cxmldocument對(duì)象:作為樹(shù)的最高節(jié)點(diǎn),是解析xml文檔的入口。2) cxmlattrlist對(duì)象和cxmlattrelement對(duì)象:這些節(jié)點(diǎn)對(duì)象都是文檔某一部分的映射,節(jié)點(diǎn)的定級(jí)層次恰好反映了文檔的結(jié)構(gòu)。3) cxmlnode對(duì)象是節(jié)點(diǎn)類(lèi),用于保存信息;而cxmlutil對(duì)象是內(nèi)部轉(zhuǎn)換封裝類(lèi),用于對(duì)有用信息轉(zhuǎn)換。以下描述在解析過(guò)程中對(duì)節(jié)點(diǎn)和屬性的遍歷,先獲取腳本的內(nèi)容:在解析過(guò)程中,腳本文件的內(nèi)容通過(guò)節(jié)點(diǎn)的遍歷會(huì)保存到子節(jié)點(diǎn)的標(biāo)簽值中,則可以先獲得根節(jié)點(diǎn)的地址,在找出相應(yīng)的子節(jié)點(diǎn)的地址,最后通過(guò)子節(jié)點(diǎn)中的gettagvalue()獲取腳本的內(nèi)容。在遍歷xml的節(jié)點(diǎn)

34、:通過(guò)解析,可以生成根節(jié)點(diǎn),而根節(jié)點(diǎn)下會(huì)有相應(yīng)的子節(jié)點(diǎn),通過(guò)循環(huán)會(huì)生成子節(jié)點(diǎn)鏈表;故可以通過(guò)定義根節(jié)點(diǎn),找到子節(jié)點(diǎn)的頭節(jié)點(diǎn),再通過(guò)鏈表的遍歷,尋找出相應(yīng)的節(jié)點(diǎn)。最后可獲取xml的屬性值:解析過(guò)程中,通過(guò)cxmlattrelement類(lèi)的setattrname()和setattrvalue()來(lái)保存相應(yīng)的屬性,若成功,則會(huì)通過(guò)cxmlattrlist:addattrelement()函數(shù)添加到屬性鏈表中,故可以在節(jié)點(diǎn)下的屬性鏈表中獲取相應(yīng)元素屬性的地址,從而可以獲取屬性值。 對(duì)得到的屬性和屬性值進(jìn)行擴(kuò)展解析,與滿足用戶的需求,由于sip消息是封包在“”之間,故需要獲得相關(guān)的值,再進(jìn)行對(duì)其進(jìn)一步解

35、析,由uac結(jié)構(gòu)中可知我們需要提取的是關(guān)鍵字,因關(guān)鍵字的特殊性,可采用按字節(jié)解析的算法對(duì)其進(jìn)行提取。xml解析算法過(guò)程如下:1) 輸入xml文檔內(nèi)容;2) 進(jìn)行預(yù)處理,取得用戶所需要的信息;3) 解析開(kāi)始部分內(nèi)容,得到版本號(hào)和編碼代號(hào),如果失敗,則結(jié)束,否則進(jìn)入下一步;4) 進(jìn)行子內(nèi)容的解析,通過(guò)調(diào)用接口函數(shù)可獲得xml的節(jié)點(diǎn)和xml屬性值;5) 判斷是否有下一個(gè)字內(nèi)容,若有則返回上一步,否則結(jié)束。解析模型流程如圖4.1:輸入腳本內(nèi)容開(kāi)始解析版本號(hào)和編碼成功?解析消息內(nèi)容子消息?結(jié)束有無(wú)是否圖4.1 xml解析算法流程圖預(yù)處理第5章 模擬器測(cè)試及結(jié)果分析5.1 模擬器呼叫模塊及結(jié)果此模擬器呼叫

36、是單路呼叫,單路呼叫的運(yùn)行線程模擬一個(gè)sip用戶代理,單路呼叫模塊既可以動(dòng)態(tài)配置成uac,也可以配置成uas,通過(guò)sip服務(wù)器與其它的sip用戶代理進(jìn)行會(huì)話。與真正的用戶代理不同,單路呼叫模塊只進(jìn)行會(huì)話的信令交換,不進(jìn)行真實(shí)的會(huì)話媒體流的交換。單路呼叫模塊的結(jié)構(gòu)如圖5.1,由呼處理控制和sip消息解編碼器兩個(gè)子模塊組成。呼處理控制sip呼叫信息解碼編碼解編碼器圖5.1 模擬器呼叫模塊moni呼叫處理控制子模塊根據(jù)單路呼叫模塊的運(yùn)行線程在會(huì)話扮演的角色是uas還是uac,通過(guò)選擇相應(yīng)的呼叫流程對(duì)呼叫進(jìn)行控制,此模擬器只支持典型流程的呼叫。預(yù)期每次呼叫,都會(huì)有一定數(shù)量的準(zhǔn)正常和異常case,其指標(biāo)

37、由呼叫失敗率和忙時(shí)最高呼處理能力bhca(busy hour call attempt)值等來(lái)說(shuō)明。通過(guò)呼叫測(cè)試獲得的統(tǒng)計(jì)信息如表2所示。序號(hào)總呼叫次數(shù)成功呼叫次數(shù)失敗呼叫次數(shù)bhca(次/秒)失敗率110000800020002736020%27000600010002862014%3500042507502146015%440003600400956010%5.2 性能測(cè)試及結(jié)果通過(guò)sip業(yè)務(wù)模擬器對(duì)sip服務(wù)器性能的測(cè)試,是模擬通話高峰時(shí)的情況,對(duì)sip服務(wù)器施加話務(wù)壓力,監(jiān)測(cè)sip服務(wù)器此時(shí)的性能,而性能指標(biāo)一般包括呼叫高峰時(shí)呼損率和忙時(shí)最高呼處理能力bhca(busy hour ca

38、ll attempt)值等。測(cè)試的目標(biāo)是監(jiān)測(cè)sip模擬器工具實(shí)現(xiàn)的bhca值,呼叫高峰時(shí)呼損率,以及支持并發(fā)呼叫的能力。該軟交換設(shè)備的預(yù)期性能是bhca大于140萬(wàn),呼叫高峰時(shí)呼損率小于0.0034%,每秒鐘至少能夠同時(shí)支持200路并發(fā)呼叫。首先測(cè)試單臺(tái)pc作為呼叫器實(shí)施業(yè)務(wù)壓力的能力,單個(gè)呼叫器在30路并發(fā)時(shí)每小時(shí)能夠?qū)浗粨Q成功呼叫33萬(wàn)次。在實(shí)際的測(cè)試環(huán)境中利用1臺(tái)pc作為控制器,10臺(tái)pc作為呼叫器,這樣能夠確保測(cè)試系統(tǒng)本身能夠達(dá)到測(cè)試必需的性能。在測(cè)試中對(duì)軟交換四次呼叫,每次總呼叫次數(shù)為100萬(wàn),并發(fā)路數(shù)的依次為100,150,200,250,測(cè)試運(yùn)行結(jié)果如表3所示。 表3 sips

39、erver呼處理測(cè)試結(jié)果序號(hào)并發(fā)路數(shù) 單路呼叫次數(shù)時(shí)間(s)bhca(次/小時(shí))失敗數(shù)(呼損率)1100=1010100002442148萬(wàn)43(0.004%)2150=101566672363152萬(wàn)125(0.01%)3200=102050003084117萬(wàn)4285(0.4%)4250=10254000593961 萬(wàn)74356(7.4%)5.3 結(jié)果分析從表3 可以看出,在100路到150路并發(fā)的情況下,bhca值大于140萬(wàn)和呼損率小于0.0034%,待測(cè)系統(tǒng)的性能超過(guò)預(yù)期要求的性能。但是并發(fā)的路數(shù)增加達(dá)到200 路和250 路時(shí),軟交換的性能指標(biāo)下降,不能達(dá)到預(yù)期性能,并隨著并發(fā)路數(shù)增加bhca值越低,呼損率越高。對(duì)于200路和250路并發(fā)呼叫的測(cè)試情況,通過(guò)察看控制器記錄的呼叫失敗信

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論