首頁(yè)>>>技術(shù)>>>信令

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ù)而無(wú)需變動(dòng)承載業(yè)務(wù)的電話網(wǎng)絡(luò)。與之相對(duì)應(yīng)的INTERNET必須有相應(yīng)的機(jī)制來(lái)保證新的業(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é)。用戶可以通過(guò)CPL編寫(xiě)腳本文件,并上傳到信令服務(wù)器(signaling server)。在用戶發(fā)起或接收呼叫的過(guò)程中,信令服務(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是用來(lái)控制和描述IP電話業(yè)務(wù)的語(yǔ)言。CPL的設(shè)計(jì)者并沒(méi)有將CPL與某個(gè)信令協(xié)議緊密的關(guān)聯(lián)起來(lái),因此CPL是與底層的信令協(xié)議無(wú)關(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ì)它的表述能力又有所限制,例如沒(méi)有提供循環(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ǔ)言呈樹(shù)型結(jié)構(gòu),也使用標(biāo)簽,以及標(biāo)簽的屬性來(lái)表示呼叫處理過(guò)程中的動(dòng)作和參數(shù)等。

  一個(gè)CPL腳本主要由兩部分信息組成:腳本有關(guān)的輔助信息和呼叫處理動(dòng)作(action).。腳本有關(guān)的輔助信息主要用于服務(wù)器正確的處理腳本,但在目前的規(guī)范中并沒(méi)有任何的定義,有待擴(kuò)展。呼叫處理動(dòng)作則有分為兩種:頂層的處理動(dòng)作和子動(dòng)作(subaction)。頂層的處理動(dòng)作由標(biāo)簽和表示,分別表示對(duì)來(lái)話(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ǔ)言主要是通過(guò)兩個(gè)頂層的呼叫處理動(dòng)作和子動(dòng)作來(lái)對(duì)呼叫進(jìn)行處理,從而為用戶提供不同的業(yè)務(wù)。從抽象的角度來(lái)看,呼叫處理動(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é)議無(wú)關(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ù)器沒(méi)有接收到應(yīng)答,根據(jù)應(yīng)答的狀態(tài)碼來(lá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。通過(guò)腳本,服務(wù)提供商為用戶提供了遇忙/無(wú)應(yīng)答呼叫前轉(zhuǎn)業(yè)務(wù)。顯然,使用CPL語(yǔ)言編寫(xiě)更加復(fù)雜的腳本,服務(wù)提供商可以提供更加高級(jí)的業(yè)務(wù)。

  2.4 CPL有待研究的課題

  對(duì)于CPL,到目前為止還有一些領(lǐng)域沒(méi)有草案和相關(guān)的標(biāo)準(zhǔn)出現(xiàn)。例如用戶如何將腳本安全地傳送到信令服務(wù)器上;信令服務(wù)器如何將請(qǐng)求或應(yīng)答消息與用戶上傳的腳本對(duì)應(yīng)起來(lái)等等。

  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ā)展來(lái)看,無(wú)疑CGI技術(shù)又是非常成功的。它具有以下的一些特點(diǎn):

* 語(yǔ)言的獨(dú)立性;CGI技術(shù)定義的是接口而非具體的編程語(yǔ)言,它可以與perl, C, VisualBasic, tcl等語(yǔ)言一起工作使用;

* CGI技術(shù)允許CGI 的應(yīng)用程序?qū)ο⒌念^部(header)具有訪問(wèn)權(quán)限;

* 產(chǎn)生應(yīng)答的方式與其他的一些技術(shù),如Java servlets不同;CGI處理應(yīng)答的所有部分,包括頭部、應(yīng)答碼、消息體;

  SIP協(xié)議在發(fā)展的過(guò)程中很大程度上借鑒了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é)議沒(méi)有。這些不同點(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),通過(guò)一些機(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ī)制來(lái)使用戶能夠運(yùn)行服務(wù)器上的應(yīng)用程序。服務(wù)提供商可以使用C、visual Basic、perl等語(yǔ)言來(lái)開(kāi)發(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ī)制來(lái)傳遞消息的頭部信息。RFC3050定義了超過(guò)20個(gè)的環(huán)境變量,例如AUTH_TYPE,REMOTE_USER等。而對(duì)于消息體,服務(wù)器則采用標(biāo)準(zhǔn)輸入文件描述符stdin來(lái)傳遞。

  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。

  第一行告訴通過(guò)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)用程序。通過(guò)這種機(jī)制,應(yīng)用程序可以無(wú)狀態(tài)的運(yùn)行,但同時(shí)CGI 依然跟蹤這次事務(wù)(transaction)的進(jìn)度。

  4 其他的業(yè)務(wù)創(chuàng)建機(jī)制

  迄今為止,已經(jīng)開(kāi)發(fā)了很多種的SIP 應(yīng)用編程接口API,包括SIP servelets和JAIN(Java Integrated Network)。與CPL和SIP CGI技術(shù)比起來(lái),SIP API的創(chuàng)建業(yè)務(wù)的開(kāi)銷要更低一些。然而,它們的主要缺陷是依賴于開(kāi)發(fā)語(yǔ)言,如Java。

  5 總結(jié)

  本文主要介紹了兩種SIP協(xié)議環(huán)境下創(chuàng)建業(yè)務(wù)的機(jī)制,呼叫處理語(yǔ)言CPL和SIP CGI規(guī)范。通過(guò)這些機(jī)制的實(shí)現(xiàn),服務(wù)提供商可以很方便和快速地部署新地業(yè)務(wù),同時(shí)用戶也可以對(duì)自己的通信根據(jù)實(shí)際情況進(jìn)行個(gè)性化的定制。

注:本文略有刪節(jié)。

中國(guó)通信網(wǎng)(www.c114.net)


相關(guān)鏈接:
OpenVox:7號(hào)信令也開(kāi)源 2009-09-23
基于ATCA和MicroTCA的獨(dú)立信令網(wǎng)關(guān)設(shè)計(jì) 2009-07-17
使用Dialogic分布式信令接口結(jié)合SMSC和SME功能 2009-03-05
軟交換端局A口信令提取方案及應(yīng)用研究 2009-02-26
梁江通信宋樹(shù)成:信令引擎—通信網(wǎng)發(fā)展的新動(dòng)力 2009-01-09

分類信息:     技術(shù)_信令_文摘
长垣县| 苍梧县| 温宿县| 沙河市| 锡林郭勒盟| 行唐县| 定安县| 嘉荫县| 合肥市| 东丽区| 济宁市| 阿克陶县| 瓦房店市| 营山县| 汉川市| 林州市| 潮州市| 木兰县| 伊通| 伊吾县| 桐梓县| 绥滨县| 磴口县| 开平市| 彭泽县| 旬邑县| 珠海市| 沅陵县| 岑巩县| 呈贡县| 军事| 遂溪县| 肃南| 南投市| 宣武区| 图们市| 贵德县| 徐闻县| 乐平市| 固始县| 鄂伦春自治旗|