国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于策略的SIP終端實(shí)現(xiàn)方法

2015-06-01 13:20:37韓可玉王振濤張紹星
軟件導(dǎo)刊 2015年5期
關(guān)鍵詞:實(shí)現(xiàn)方法

韓可玉 王振濤 張紹星

摘 要:在“狀態(tài)機(jī)-軟總線-媒體管理器”軟件體系結(jié)構(gòu)的基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)一種基于策略的SIP終端軟件。探討軟件實(shí)現(xiàn)中的注冊(cè)及策略定制、實(shí)時(shí)通信、多線程設(shè)計(jì)與處理等功能的具體實(shí)現(xiàn)方法。

關(guān)鍵詞:基于策略;統(tǒng)一通信;SIP終端;實(shí)現(xiàn)方法

中圖分類號(hào):TP301

文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2015)005-0054-03

作者簡(jiǎn)介:韓可玉(1972-),男,河南南陽人,碩士,71352部隊(duì)高級(jí)工程師,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)與信息安全;王振濤(1976-),男,河南新鄉(xiāng)人,71336部隊(duì)工程師,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)安全與指揮自動(dòng)化;張紹星(1977-),男,河南漯河人,碩士,71352部隊(duì)工程師,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)與指揮自動(dòng)化。

0 引言

建設(shè)基于SIP的統(tǒng)一通信系統(tǒng)是應(yīng)對(duì)現(xiàn)代企業(yè)管理所面臨的工作位置不定性、移動(dòng)性、響應(yīng)及時(shí)性、改善客戶滿意度和費(fèi)用支出最優(yōu)化等主要挑戰(zhàn)的有效措施之一。其目標(biāo)是建立在任何時(shí)間,任何地點(diǎn),使用任何設(shè)備都能進(jìn)行通信的多媒體通信系統(tǒng),以幫助商業(yè)人員應(yīng)對(duì)上述挑戰(zhàn)[1-2]。SIP終端作為客戶端軟件,基于SIP統(tǒng)一通信系統(tǒng)用戶功能,對(duì)系統(tǒng)可用性發(fā)揮著重要作用。本文在“狀態(tài)機(jī)-軟總線-媒體管理器”軟件體系結(jié)構(gòu)[2]的基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)一種基于策略的SIP終端軟件,經(jīng)過與現(xiàn)有SIP統(tǒng)一通信系統(tǒng)軟件進(jìn)行聯(lián)試,初步實(shí)現(xiàn)了基于SIP統(tǒng)一通信端系統(tǒng)的主要功能。

1 軟件系統(tǒng)實(shí)現(xiàn)方法

終端軟件實(shí)現(xiàn)是在“狀態(tài)機(jī)-軟總線-媒體管理器”軟件體系結(jié)構(gòu)的基礎(chǔ)上對(duì)各組件進(jìn)行細(xì)化設(shè)計(jì)和具體實(shí)現(xiàn),按照業(yè)務(wù)特點(diǎn),通過注冊(cè)及策略管理狀態(tài)機(jī)、PA狀態(tài)機(jī)、即時(shí)消息狀態(tài)機(jī)、實(shí)時(shí)通信狀態(tài)機(jī)等實(shí)現(xiàn)各終端功能。其結(jié)構(gòu)如圖1所示。

終端軟件作為用戶終端,需要有與用戶交互的機(jī)制,軟件實(shí)現(xiàn)時(shí)設(shè)計(jì)了用戶界面及消息處理器。用戶界面用于接收用戶操作并顯示系統(tǒng)信息;消息管理器接收系統(tǒng)信息,并提供給界面進(jìn)行顯示,是系統(tǒng)向用戶界面?zhèn)鬟f信息的橋梁。

狀態(tài)機(jī)、軟總線和媒體管理器的設(shè)計(jì)與實(shí)現(xiàn)方法筆者曾在《基于SIP的統(tǒng)一通信端系統(tǒng)設(shè)計(jì)》一文中進(jìn)行了闡述,本文主要對(duì)軟件的其它關(guān)鍵內(nèi)容進(jìn)行具體實(shí)現(xiàn)。

1.1 注冊(cè)及策略定制功能實(shí)現(xiàn)

統(tǒng)一通信的特點(diǎn)之一是基于策略的通信,系統(tǒng)之所以能夠透明地進(jìn)行跨設(shè)備、跨網(wǎng)絡(luò)的多種媒體通信,關(guān)鍵在于通信過程中設(shè)備及網(wǎng)絡(luò)選擇是由策略驅(qū)動(dòng)的。統(tǒng)一通信策略服務(wù)是由相應(yīng)的服務(wù)器處理的,個(gè)人通信策略制定由用戶完成。統(tǒng)一通信用戶終端需提供策略定制及管理的能力,提供用戶注冊(cè)功能。在實(shí)現(xiàn)終端軟件時(shí),將用戶注冊(cè)及策略管理結(jié)合起來,用注冊(cè)及策略管理狀態(tài)機(jī)來實(shí)現(xiàn)。

注冊(cè)及策略管理狀態(tài)機(jī)是一個(gè)簡(jiǎn)單的狀態(tài)機(jī),只有一個(gè)注冊(cè)狀態(tài),最小事件集為用戶注冊(cè),是策略上載、策略下載、策略刪除和用戶注銷4個(gè)設(shè)備事件的集合。由于用戶注冊(cè)具有有效期,超過有效期服務(wù)器會(huì)自動(dòng)注銷該用戶,所以注冊(cè)消息需要定期進(jìn)行失效重傳,注冊(cè)狀態(tài)機(jī)需要有失效重傳機(jī)制。失效重傳對(duì)用戶應(yīng)是透明的,不能影響用戶其它工作,必須與其它狀態(tài)機(jī)并發(fā)工作[3]。在注冊(cè)狀態(tài)機(jī)中用一個(gè)狀態(tài)機(jī)私有隊(duì)列保存該狀態(tài)機(jī)所要發(fā)送的消息,對(duì)該私有隊(duì)列中消息的發(fā)送用一個(gè)線程單獨(dú)處理,私有隊(duì)列提供延遲消息及普通消息兩種存儲(chǔ)機(jī)制。

用戶注冊(cè)及策略管理均通過regist方法實(shí)現(xiàn),且均使用一個(gè)隊(duì)列存儲(chǔ)消息事件,一個(gè)處理過程進(jìn)行消息發(fā)送。注冊(cè)消息需要重傳,而策略管理及注銷消息不需要重傳,這就要求有一種處理機(jī)制來保證各種消息都能得到正確處理。為此,需要增加一個(gè)注冊(cè)鏈表用于存儲(chǔ)需要發(fā)送的消息,將從隊(duì)列中取出的消息與該鏈表中的消息進(jìn)行比較,如果消息在鏈表中則發(fā)送,否則不發(fā)送。

當(dāng)狀態(tài)機(jī)接收到注冊(cè)及策略相關(guān)設(shè)備事件時(shí),根據(jù)事件生成相應(yīng)的消息,對(duì)于重新注冊(cè)事件和注銷注冊(cè)事件,首先刪除鏈表中源地址和目標(biāo)地址中與該消息相同的注冊(cè)消息,將新生成的消息同時(shí)加入到注冊(cè)隊(duì)列和注冊(cè)鏈表中,加入注冊(cè)隊(duì)列時(shí)不加延遲時(shí)間,如圖2所示。

發(fā)送時(shí)對(duì)取出的消息進(jìn)行判斷,只有策略管理消息和鏈表中存在的注冊(cè)消息才能發(fā)送,如圖3所示。

收到本狀態(tài)機(jī)發(fā)出消息的狀態(tài)碼后,如果為錯(cuò)誤狀態(tài),則進(jìn)行相應(yīng)的錯(cuò)誤處理,生成新的消息并加入隊(duì)列中,不設(shè)延遲時(shí)間。如果是成功狀態(tài),則判斷是否是注冊(cè)消息,如果不是則從注冊(cè)鏈表中刪除相應(yīng)的消息,任務(wù)完成。否則,根據(jù)注冊(cè)有效時(shí)間設(shè)置消息延遲發(fā)送時(shí)間,將消息序號(hào)加1,并用延遲的方法加入到注冊(cè)隊(duì)列中,以便規(guī)定延遲時(shí)間后進(jìn)行消息重傳,解決注冊(cè)失效問題,如圖4所示。

1.2 實(shí)時(shí)通信功能實(shí)現(xiàn)

實(shí)時(shí)通信是通過實(shí)時(shí)通信狀態(tài)機(jī)實(shí)現(xiàn)的,通信功能不同的狀態(tài)機(jī)其復(fù)雜程度也不同。復(fù)雜實(shí)時(shí)通信狀態(tài)機(jī)是一種具有各種實(shí)時(shí)通信增值服務(wù)功能的狀態(tài)機(jī),它實(shí)現(xiàn)了現(xiàn)有實(shí)時(shí)通信中絕大部分增值服務(wù)功能。本文以實(shí)現(xiàn)三方通話功能的實(shí)時(shí)通信狀態(tài)機(jī)為例闡述實(shí)時(shí)通信功能的實(shí)現(xiàn)方法。

具有三方通話功能的實(shí)時(shí)通信狀態(tài)機(jī)是在簡(jiǎn)單實(shí)時(shí)通信狀態(tài)機(jī)的基礎(chǔ)上增加了三方通話及會(huì)議相關(guān)狀態(tài)。除基本通信功能外,還具有三方通話、呼叫保持等能力。圖5為該狀態(tài)機(jī)去除錯(cuò)誤狀態(tài)后的狀態(tài)轉(zhuǎn)換圖。

實(shí)時(shí)通信實(shí)現(xiàn)過程。終端軟件作為主叫方,實(shí)時(shí)通信狀態(tài)機(jī)接收到用戶發(fā)出呼叫的設(shè)備事件后處理過程如下:

(1)從媒體參數(shù)變量中取出用戶本次呼叫所要使用的媒體及編碼格式,調(diào)用媒體管理器能力查詢接口查詢本終端的媒體能力。

(2)檢查所要使用的媒體及格式是否是終端軟件媒體能力的子集,若不是則向界面返回不支持媒體的信息并結(jié)束此次事件處理;否則,生成能力協(xié)商SDP,能力協(xié)商SDP與會(huì)話SDP的區(qū)別是SDP中的IP地址及PORT都設(shè)為0[4]。

(3)生成能力協(xié)商INVITE呼叫請(qǐng)求消息,其消息體是能力協(xié)商SDP,發(fā)送該消息。

(4)收到peer應(yīng)答消息后,檢查對(duì)端的能力,如果peer的能力和所請(qǐng)求的能力交集不為空,則調(diào)用媒體管理器進(jìn)行資源分配和NAT處理,并生成會(huì)話請(qǐng)求SDP。如果所請(qǐng)求的媒體peer不支持則向界面發(fā)送相應(yīng)信息;如果所請(qǐng)求的媒體能力peer都不支持則呼叫事件處理結(jié)束。

(5)調(diào)用媒體管理器的媒體調(diào)度接口,實(shí)例化經(jīng)過協(xié)商的媒體,并啟動(dòng)所用媒體的相應(yīng)線程。

(6)生成會(huì)話請(qǐng)求INVITE消息,消息體為會(huì)話SDP,并發(fā)送該消息。

(7)根據(jù)peer的應(yīng)答建立通信連接。

如果終端軟件是被叫端,實(shí)時(shí)通信狀態(tài)機(jī)建立通信過程如下:

①收到peer的能力協(xié)商INVITE,調(diào)用媒體管理器能力查詢接口,檢查本端是否支持peer所請(qǐng)求的媒體能力,并根據(jù)peer所請(qǐng)求的能力及自身能力生成能力協(xié)商SDP;

②生成能力協(xié)商INVITE的應(yīng)答消息,其消息體為能力協(xié)商SDP,并發(fā)送該應(yīng)答消息;

③當(dāng)收到peer的呼叫請(qǐng)求INVITE時(shí),生成本端會(huì)話SDP,并用此SDP生成180響應(yīng)消息,同時(shí)發(fā)送該消息;

④調(diào)用媒體管理器實(shí)例化會(huì)話所要用到的媒體能力,并啟動(dòng)相應(yīng)線程;

⑤生成200消息并發(fā)送,建立通信連接。

在通信過程中,增加媒體時(shí)首先檢查媒體的狀態(tài),如果所要增加的媒體本來就是活躍狀態(tài)則丟棄該事件。如果是掛起狀態(tài)則直接發(fā)送REINVITE,將其重新激活;否則,進(jìn)行與建立呼叫過程大致相同的處理,不同的是能力協(xié)商時(shí)只協(xié)商要加入的媒體,請(qǐng)求消息是REINVITE而不是INVITE。后兩種情況通信雙方的SDP都會(huì)改變。

在通信過程中刪除媒體直接發(fā)送REINVITE消息,在通信雙方將所要?jiǎng)h除的媒體掛起,并對(duì)SDP進(jìn)行修改。

1.3 多線程設(shè)計(jì)與處理

為提高系統(tǒng)并發(fā)處理能力,采用多線程編程技術(shù)。當(dāng)用于處理信令的狀態(tài)機(jī)及用于實(shí)現(xiàn)媒體通信功能的媒體構(gòu)件發(fā)生變化時(shí),可以根據(jù)實(shí)際需要決定是否使用或啟動(dòng)新的線程,同時(shí)這些線程間還要共享事件數(shù)據(jù)和實(shí)現(xiàn)同步。圖6為系統(tǒng)中的主要線程以及交互方法。

界面線程用于接收用戶操作和系統(tǒng)反饋信息,并將接收到的用戶操作信息寫入共享緩沖區(qū)中,將接收到的反饋信息進(jìn)行顯示。

設(shè)備線程用來監(jiān)視用戶操作,并將操作轉(zhuǎn)化成相應(yīng)的事件加入到事件隊(duì)列中。界面線程和設(shè)備線程分開設(shè)計(jì)的原因在于:一是滿足不同設(shè)備的部署環(huán)境,如在PDA等存儲(chǔ)器比較小的設(shè)備上部署時(shí)可能不希望有用戶界面;二是系統(tǒng)功能獨(dú)立于用戶界面,滿足用戶的個(gè)性化界面需求,方便界面更換。

工作線程是對(duì)事件進(jìn)行處理的線程,它從事件隊(duì)列中接收事件,對(duì)事件進(jìn)行預(yù)處理并分類,將與注冊(cè)有關(guān)的事件加入到注冊(cè)隊(duì)列中,將與PA有關(guān)的事件加入到PA事件隊(duì)列中,對(duì)其余事件進(jìn)行處理并形成信令消息交給SIP協(xié)議棧進(jìn)行發(fā)送。在處理實(shí)時(shí)通信事件時(shí),需要與媒體線程交互,將生成的SDP提交給媒體線程。SIP線程接收SIP消息,進(jìn)行必要的處理后形成SIP事件加入到總事件隊(duì)列中。

注冊(cè)線程處理注冊(cè)事件及策略管理事件,PA線程處理與PA有關(guān)的事件。它們之所以設(shè)計(jì)成單獨(dú)的線程,是因?yàn)樽?cè)和PA事件均有有效期,為了使其不失效需要進(jìn)行定時(shí)重傳操作,并且這些重傳操作是并發(fā)執(zhí)行的,各自維護(hù)自身的重傳隊(duì)列。

媒體線程負(fù)責(zé)通信媒體的采集及編解碼處理。

協(xié)議棧各線程負(fù)責(zé)信息發(fā)送與接收。

對(duì)于包含事件隊(duì)列這樣的類會(huì)在多個(gè)線程中使用,并且必須保證各線程使用的是同一個(gè)實(shí)例。為此,系統(tǒng)將這些需要在多個(gè)線程中使用同一個(gè)實(shí)例的類按照Single模式進(jìn)行實(shí)現(xiàn),并增加必要的互斥機(jī)制,從而保證該類實(shí)例在整個(gè)系統(tǒng)中的唯一性。

2 結(jié)語

本文利用“狀態(tài)機(jī)-軟總線-媒體管理器”軟件體系結(jié)構(gòu),設(shè)計(jì)實(shí)現(xiàn)了一種基于策略的SIP終端軟件,系統(tǒng)采用多線程模式進(jìn)行編程,利用相應(yīng)的狀態(tài)機(jī)實(shí)現(xiàn)相應(yīng)的通信及管理功能。經(jīng)過與現(xiàn)有SIP統(tǒng)一通信系統(tǒng)進(jìn)行聯(lián)試,通信效果良好,功能使用及轉(zhuǎn)換簡(jiǎn)便,初步實(shí)現(xiàn)了基于SIP統(tǒng)一通信端系統(tǒng)的主要功能。

參考文獻(xiàn):

[1]

[2] 韓可玉.商務(wù)環(huán)境下基于SIP的統(tǒng)一通信端系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京大學(xué),2005.

[3] 韓可玉,任安西.基于SIP的統(tǒng)一通信端系統(tǒng)設(shè)計(jì)[J] .軟件導(dǎo)刊,2013(6):90-93 .

[4] ROSENBERG J .A session initiation protocol (SIP) event package for registrations,RFC3680[Z] .2004.

[5] F ANDREASEN.Session description protocol (SDP) simple capability declaration RFC3407[Z] . 2002.

(責(zé)任編輯:陳福時(shí))

猜你喜歡
實(shí)現(xiàn)方法
初中政治課堂中的師生互動(dòng)
試論恒壓供水變頻控制系統(tǒng)的組成與實(shí)現(xiàn)方法
建造高精度環(huán)境條件實(shí)驗(yàn)室方法初探
高職英語教學(xué)價(jià)值定位及其實(shí)現(xiàn)
東方教育(2016年20期)2017-01-17 21:21:45
淺談業(yè)務(wù)連續(xù)性管理的實(shí)現(xiàn)方法
工程地質(zhì)在優(yōu)慕課教學(xué)資源平臺(tái)信息化教學(xué)案例
考試周刊(2016年25期)2016-05-26 01:16:33
關(guān)于通信網(wǎng)絡(luò)安傘維護(hù)方法的認(rèn)識(shí)及研究
科技傳播(2016年1期)2016-03-22 00:41:19
在學(xué)習(xí)型社會(huì)視角下觀察社區(qū)成人教育的功能及實(shí)現(xiàn)方法
ERP實(shí)現(xiàn)的探索與研究
建筑工程造價(jià)信息化管理實(shí)現(xiàn)方法探討
格尔木市| 潞西市| 东至县| 沿河| 海口市| 盐山县| 北流市| 民和| 和林格尔县| 红桥区| 常熟市| 安化县| 仁布县| 临夏市| 务川| 甘谷县| 曲周县| 五家渠市| 鄯善县| 平南县| 南靖县| 红桥区| 古蔺县| 东平县| 五大连池市| 清苑县| 鄄城县| 桑日县| 馆陶县| 平乐县| 磴口县| 新兴县| 靖江市| 眉山市| 嘉义县| 襄垣县| 饶平县| 从江县| 澄迈县| 德州市| 江源县|