SIP協(xié)議中業(yè)務(wù)創(chuàng)建機(jī)制的研究
江興烽 2002/09/30
摘要:隨著網(wǎng)絡(luò)和相關(guān)網(wǎng)絡(luò)協(xié)議的發(fā)展,如何方便和快速地創(chuàng)建新業(yè)務(wù)是擺在業(yè)務(wù)提供商面前的重要課題。本文主要介紹了在SIP協(xié)議網(wǎng)絡(luò)環(huán)境下業(yè)務(wù)創(chuàng)建的兩種機(jī)制:呼叫處理語(yǔ)言CPL和SIP
CGI規(guī)范。
關(guān)鍵字:CPL、SIP、CGI、Service Creation
1 簡(jiǎn)介
隨著網(wǎng)絡(luò)協(xié)議的發(fā)展,如SIP、RTP/RTCP、RSVP、H.323等的出現(xiàn)和部署,INTERNET逐漸成為語(yǔ)音、數(shù)據(jù)、視頻等多種業(yè)務(wù)的承載網(wǎng)絡(luò),成為了提供多種業(yè)務(wù)的統(tǒng)一的網(wǎng)絡(luò)平臺(tái)。
傳統(tǒng)的電話網(wǎng)絡(luò)使用智能網(wǎng)技術(shù)(IN:Intelligence Network)以方便網(wǎng)絡(luò)運(yùn)營(yíng)商添加業(yè)務(wù)而無需變動(dòng)承載業(yè)務(wù)的電話網(wǎng)絡(luò)。與之相對(duì)應(yīng)的INTERNET必須有相應(yīng)的機(jī)制來保證新的業(yè)務(wù)能夠被很快的生成和部署。本文將介紹在SIP協(xié)議環(huán)境下業(yè)務(wù)創(chuàng)建的相關(guān)機(jī)制:呼叫控制語(yǔ)言(CPL:
Call Processing Language)、SIP CGI(公共網(wǎng)關(guān)接口:Common Gateway Interface) 。
2 呼叫處理語(yǔ)言(CPL:Call Processing Language)
IETF的IPTEL工作組在RFC2824描述了CPL的框架以及實(shí)現(xiàn)的要求,隨后在草案draft-ietf-iptel-cpl-06.txt定義了CPL語(yǔ)言的細(xì)節(jié)。用戶可以通過CPL編寫腳本文件,并上傳到信令服務(wù)器(signaling
server)。在用戶發(fā)起或接收呼叫的過程中,信令服務(wù)器根據(jù)CPL腳本文件運(yùn)行的結(jié)果動(dòng)態(tài)為用戶提供呼叫轉(zhuǎn)移、遇忙前轉(zhuǎn)等服務(wù)。
CPL腳本運(yùn)行的網(wǎng)絡(luò)模型由兩部分組成:端系統(tǒng)(end system)和信令服務(wù)器(signaling server)。端系統(tǒng)(end system)指的是發(fā)起和接收信令信息和媒體流的設(shè)備,包括電話設(shè)備,PC電話客戶端,自動(dòng)語(yǔ)音系統(tǒng)等等。信令服務(wù)器是指中繼和控制信令信息的設(shè)備。在SIP協(xié)議構(gòu)建的網(wǎng)絡(luò)中,指的是代理服務(wù)器,重定向服務(wù)器,注冊(cè)服務(wù)器。
2.1 CPL的特點(diǎn)
CPL是用來控制和描述IP電話業(yè)務(wù)的語(yǔ)言。CPL的設(shè)計(jì)者并沒有將CPL與某個(gè)信令協(xié)議緊密的關(guān)聯(lián)起來,因此CPL是與底層的信令協(xié)議無關(guān)的腳本語(yǔ)言,可以與任何的底層協(xié)議配合使用,如H.323和本文側(cè)重介紹的SIP協(xié)議等。
另外CPL在設(shè)計(jì)中還有下列的一些特點(diǎn):
* 描述業(yè)務(wù)(service)能力強(qiáng);
* CPL腳本通常在信令服務(wù)器上運(yùn)行,有時(shí)也會(huì)在高級(jí)的客戶端運(yùn)行;
* 由于CPL腳本在服務(wù)器上運(yùn)行,為了服務(wù)器的安全,對(duì)它的表述能力又有所限制,例如沒有提供循環(huán)和遞歸的機(jī)制;
* 基于XML語(yǔ)言,語(yǔ)言分析比較簡(jiǎn)單,有很多現(xiàn)成的工具可以使用;
2.2 CPL語(yǔ)言的體系結(jié)構(gòu)
眾所周知,XML是一種元語(yǔ)言(metalanguage)。CPL正是在XML的基礎(chǔ)上附加一些文本類型描述(DTD:Document Type
Description)構(gòu)造而成。因此,與XML表示一樣,CPL語(yǔ)言呈樹型結(jié)構(gòu),也使用標(biāo)簽,以及標(biāo)簽的屬性來表示呼叫處理過程中的動(dòng)作和參數(shù)等。
一個(gè)CPL腳本主要由兩部分信息組成:腳本有關(guān)的輔助信息和呼叫處理動(dòng)作(action).。腳本有關(guān)的輔助信息主要用于服務(wù)器正確的處理腳本,但在目前的規(guī)范中并沒有任何的定義,有待擴(kuò)展。呼叫處理動(dòng)作則有分為兩種:頂層的處理動(dòng)作和子動(dòng)作(subaction)。頂層的處理動(dòng)作由標(biāo)簽和表示,分別表示對(duì)來話(incoming
call)和去話(outgoing call)時(shí)服務(wù)器所應(yīng)采取的動(dòng)作。而子動(dòng)作(subaction)則類似于c語(yǔ)言的函數(shù)的概念,是可以在其他的動(dòng)作中調(diào)用的動(dòng)作,而且使用subaction也增強(qiáng)了CPL腳本的模塊性和重用性。
CPL語(yǔ)言主要是通過兩個(gè)頂層的呼叫處理動(dòng)作和子動(dòng)作來對(duì)呼叫進(jìn)行處理,從而為用戶提供不同的業(yè)務(wù)。從抽象的角度來看,呼叫處理動(dòng)作是由一組節(jié)點(diǎn)(Node)組成,每個(gè)節(jié)點(diǎn)(Node)包含幾個(gè)參數(shù)和輸出。其中參數(shù)描述了節(jié)點(diǎn)的精確的行為,也即一些匹配條件;而輸出則是指在參數(shù)匹配的前提下節(jié)點(diǎn)將要做出的判定或采取的動(dòng)作。CPL語(yǔ)言定義了如下的四種節(jié)點(diǎn):
* switches:表示CPL腳本做出的選擇,其中包括address-switch、string-switch、language-switch、time-switch、priority-switch;分別根據(jù)地址、字符、語(yǔ)言、時(shí)間、優(yōu)先級(jí)做出選擇;
* location modifier:從位置集合中添加或輸出記錄;其中包括location、lookup、remove-location;
* 信令操作:引發(fā)底層信令協(xié)議的信令事件;其中包括proxy、redirect和reject;分別引發(fā)底層協(xié)議的轉(zhuǎn)發(fā)、重定向和拒絕操作;
* 非信令操作:引發(fā)一些與底層協(xié)議無關(guān)的動(dòng)作;其中包括mail、log;
2.3 CPL腳本的例子
CPL腳本具有與XML相同的語(yǔ)法和表示方法。若有用戶呼叫SIP URL 為sip:jones@jonespc.example.com的用戶。當(dāng)請(qǐng)求到達(dá)該用戶所在代理服務(wù)器時(shí),代理服務(wù)器根據(jù)相應(yīng)的機(jī)制調(diào)用圖二所示的腳本并加以執(zhí)行。首先代理服務(wù)器發(fā)出代理轉(zhuǎn)發(fā)(proxy)操作,超時(shí)值設(shè)為8秒。如果在超時(shí)值超時(shí)之前,代理服務(wù)器沒有接收到應(yīng)答,根據(jù)應(yīng)答的狀態(tài)碼來確定該用戶是busy還是noanswer,并采取相應(yīng)的動(dòng)作。本例的處理方式比較的簡(jiǎn)單,對(duì)兩種情況均采取了呼叫該用戶服務(wù)提供商的語(yǔ)音郵件設(shè)備的動(dòng)作,再次進(jìn)行代理轉(zhuǎn)發(fā)(proxy)的操作。該語(yǔ)音郵件設(shè)備的SIP
URL為sip:jones@voicemail.example.com。通過腳本,服務(wù)提供商為用戶提供了遇忙/無應(yīng)答呼叫前轉(zhuǎn)業(yè)務(wù)。顯然,使用CPL語(yǔ)言編寫更加復(fù)雜的腳本,服務(wù)提供商可以提供更加高級(jí)的業(yè)務(wù)。
2.4 CPL有待研究的課題
對(duì)于CPL,到目前為止還有一些領(lǐng)域沒有草案和相關(guān)的標(biāo)準(zhǔn)出現(xiàn)。例如用戶如何將腳本安全地傳送到信令服務(wù)器上;信令服務(wù)器如何將請(qǐng)求或應(yīng)答消息與用戶上傳的腳本對(duì)應(yīng)起來等等。
3 SIP CGI規(guī)范
眾所周知,CGI并不是一項(xiàng)新的技術(shù)。它最初的出現(xiàn)是和HTTP協(xié)議一起,使靜態(tài)網(wǎng)頁(yè)具有了與瀏覽者交互的功能,極大的推動(dòng)了web技術(shù)的發(fā)展。CGI技術(shù)提供了一種在web環(huán)境下創(chuàng)建新業(yè)務(wù)的機(jī)制。從web的發(fā)展來看,無疑CGI技術(shù)又是非常成功的。它具有以下的一些特點(diǎn):
* 語(yǔ)言的獨(dú)立性;CGI技術(shù)定義的是接口而非具體的編程語(yǔ)言,它可以與perl, C, VisualBasic, tcl等語(yǔ)言一起工作使用;
* CGI技術(shù)允許CGI 的應(yīng)用程序?qū)ο⒌念^部(header)具有訪問權(quán)限;
* 產(chǎn)生應(yīng)答的方式與其他的一些技術(shù),如Java servlets不同;CGI處理應(yīng)答的所有部分,包括頭部、應(yīng)答碼、消息體;
SIP協(xié)議在發(fā)展的過程中很大程度上借鑒了HTTP協(xié)議,比如消息的格式、消息請(qǐng)求/應(yīng)答的交互方式,用文本格式對(duì)消息進(jìn)行編碼等。所以CGI規(guī)范的特點(diǎn)也特別適合SIP協(xié)議。因此可以采用CGI作為SIP的一種業(yè)務(wù)創(chuàng)建(Service
Creation)的機(jī)制。
3.1 SIP CGI與HTTP CGI的區(qū)別
盡管SIP與HTTP具有相似的語(yǔ)法和請(qǐng)求/應(yīng)答的模型,但是它們還是有一些關(guān)鍵的不同點(diǎn)。如代理服務(wù)器在SIP協(xié)議中起著重要的作用,而在HTTP協(xié)議中則不是很重要;SIP協(xié)議提供了注冊(cè)的機(jī)制,而HTTP協(xié)議沒有。這些不同點(diǎn)也反映到了SIP
CGI 和HTTP CGI的下列的區(qū)別上。
*SIP CGI主要運(yùn)行在代理服務(wù)器、重定向服務(wù)器、注冊(cè)服務(wù)器上;而HTTP CGI則主要運(yùn)行在用戶代理(user agent)上;
* SIP CGI允許腳本執(zhí)行代理轉(zhuǎn)發(fā)、重定向等操作;而HTTP CGI則不支持;
* SIP CGI支持持續(xù)性模型(persistence model),通過一些機(jī)制使得允許腳本在SIP事務(wù)所包含的所有消息中保持狀態(tài);而HTTP
CGI并不支持該模型;
3.2 SIP CGI網(wǎng)絡(luò)模型
3.3 SIP CGI規(guī)范
與HTTP CGI類似,SIP CGI規(guī)范主要定義了一些機(jī)制來使用戶能夠運(yùn)行服務(wù)器上的應(yīng)用程序。服務(wù)提供商可以使用C、visual Basic、perl等語(yǔ)言來開發(fā)應(yīng)用程序,實(shí)現(xiàn)不同的業(yè)務(wù)。
3.3.1 SIP CGI 腳本如何從服務(wù)器獲取數(shù)據(jù)?
SIP CGI對(duì)于SIP請(qǐng)求或者應(yīng)答消息的頭部和消息體采用了不同的方式。服務(wù)器采用操作系統(tǒng)環(huán)境變量的機(jī)制來傳遞消息的頭部信息。RFC3050定義了超過20個(gè)的環(huán)境變量,例如AUTH_TYPE,REMOTE_USER等。而對(duì)于消息體,服務(wù)器則采用標(biāo)準(zhǔn)輸入文件描述符stdin來傳遞。
3.3.2 CGI應(yīng)用程序處理結(jié)果的輸出格式
CGI腳本應(yīng)用程序輸出有一些消息組成,這些消息分別對(duì)應(yīng)了腳本要求服務(wù)器將要執(zhí)行的動(dòng)作。每條消息由一個(gè)動(dòng)作(action)、多個(gè)CGI頭部和多個(gè)SIP頭部組成。RFC
3050中定義了Status、CGI-PROXY-REQUEST、CGI-FORWARD-RESPONSE、CGI-SET-COOKIE、CGI-AGAIN五種動(dòng)作,同時(shí)還定義了CGI-Request-Token和CGI-Remove兩種CGI頭部。消息中所涉及到的SIP頭部語(yǔ)法同RFC2543。
第一行告訴通過CGI-PROXY-REQUEST告訴服務(wù)器代理轉(zhuǎn)發(fā)請(qǐng)求到指定的URL。第二行則告訴服務(wù)器在轉(zhuǎn)發(fā)的請(qǐng)求中添加Organization頭部。需要注意的是,對(duì)于SIP協(xié)議在每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)通常都會(huì)處理的頭部,如Via、Max-forwards,服務(wù)器則會(huì)正常處理。第四行告訴服務(wù)器向主叫方發(fā)送一個(gè)100
Trying的臨時(shí)應(yīng)答。第六行則告訴服務(wù)器存儲(chǔ)cookie信息。當(dāng)這次呼叫所構(gòu)成的事務(wù)(transaction)中的請(qǐng)求或應(yīng)答再次觸發(fā)該腳本應(yīng)用程序時(shí),這個(gè)cookie將會(huì)傳遞給CGI
應(yīng)用程序。通過這種機(jī)制,應(yīng)用程序可以無狀態(tài)的運(yùn)行,但同時(shí)CGI 依然跟蹤這次事務(wù)(transaction)的進(jìn)度。
4 其他的業(yè)務(wù)創(chuàng)建機(jī)制
迄今為止,已經(jīng)開發(fā)了很多種的SIP 應(yīng)用編程接口API,包括SIP servelets和JAIN(Java Integrated Network)。與CPL和SIP
CGI技術(shù)比起來,SIP API的創(chuàng)建業(yè)務(wù)的開銷要更低一些。然而,它們的主要缺陷是依賴于開發(fā)語(yǔ)言,如Java。
5 總結(jié)
本文主要介紹了兩種SIP協(xié)議環(huán)境下創(chuàng)建業(yè)務(wù)的機(jī)制,呼叫處理語(yǔ)言CPL和SIP CGI規(guī)范。通過這些機(jī)制的實(shí)現(xiàn),服務(wù)提供商可以很方便和快速地部署新地業(yè)務(wù),同時(shí)用戶也可以對(duì)自己的通信根據(jù)實(shí)際情況進(jìn)行個(gè)性化的定制。
注:本文略有刪節(jié)。
中國(guó)通信網(wǎng)(www.c114.net)
相關(guān)鏈接:
感谢您访问我们的网站,您可能还对以下资源感兴趣:
欧美,精品,综合,亚洲,好吊妞视频免新费观看,免费观看三级吃奶,一级a片女人自慰免费看
老外毛片免费视频播放,人人狠狠综合久久亚洲,久艹在线视频,天天操夜操
婷婷激情在线,亚洲成a人片77777群色,狠狠躁天天躁,成年美女黄网站色大片免费看
黄色片aa,亚洲一区二区三区免费在线观看,久久青草精品一区二区三区,性感美女国产射精免费黄视频
日本一道本在线,视频二区三区国产情侣在线,国产精品色哟哟,青青草伊人
久久久久精品香蕉免费看,国产美女免费视频,成人免费xxx色视频,91精品国产综合久久消防器材