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

SIP協(xié)議中業(yè)務(wù)創(chuàng )建機制的研究

江興烽 2002/09/30

  摘要:隨著(zhù)網(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 )建的兩種機制:呼叫處理語(yǔ)言CPL和SIP CGI規范。

  關(guān)鍵字:CPL、SIP、CGI、Service Creation

  1 簡(jiǎn)介

  隨著(zhù)網(wǎng)絡(luò )協(xié)議的發(fā)展,如SIP、RTP/RTCP、RSVP、H.323等的出現和部署,INTERNET逐漸成為語(yǔ)音、數據、視頻等多種業(yè)務(wù)的承載網(wǎng)絡(luò ),成為了提供多種業(yè)務(wù)的統一的網(wǎng)絡(luò )平臺。

  傳統的電話(huà)網(wǎng)絡(luò )使用智能網(wǎng)技術(shù)(IN:Intelligence Network)以方便網(wǎng)絡(luò )運營(yíng)商添加業(yè)務(wù)而無(wú)需變動(dòng)承載業(yè)務(wù)的電話(huà)網(wǎng)絡(luò )。與之相對應的INTERNET必須有相應的機制來(lái)保證新的業(yè)務(wù)能夠被很快的生成和部署。本文將介紹在SIP協(xié)議環(huán)境下業(yè)務(wù)創(chuàng )建的相關(guān)機制:呼叫控制語(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í)現的要求,隨后在草案draft-ietf-iptel-cpl-06.txt定義了CPL語(yǔ)言的細節。用戶(hù)可以通過(guò)CPL編寫(xiě)腳本文件,并上傳到信令服務(wù)器(signaling server)。在用戶(hù)發(fā)起或接收呼叫的過(guò)程中,信令服務(wù)器根據CPL腳本文件運行的結果動(dòng)態(tài)為用戶(hù)提供呼叫轉移、遇忙前轉等服務(wù)。

  CPL腳本運行的網(wǎng)絡(luò )模型由兩部分組成:端系統(end system)和信令服務(wù)器(signaling server)。端系統(end system)指的是發(fā)起和接收信令信息和媒體流的設備,包括電話(huà)設備,PC電話(huà)客戶(hù)端,自動(dòng)語(yǔ)音系統等等。信令服務(wù)器是指中繼和控制信令信息的設備。在SIP協(xié)議構建的網(wǎng)絡(luò )中,指的是代理服務(wù)器,重定向服務(wù)器,注冊服務(wù)器。

  2.1 CPL的特點(diǎn)

  CPL是用來(lái)控制和描述IP電話(huà)業(yè)務(wù)的語(yǔ)言。CPL的設計者并沒(méi)有將CPL與某個(gè)信令協(xié)議緊密的關(guān)聯(lián)起來(lái),因此CPL是與底層的信令協(xié)議無(wú)關(guān)的腳本語(yǔ)言,可以與任何的底層協(xié)議配合使用,如H.323和本文側重介紹的SIP協(xié)議等。

  另外CPL在設計中還有下列的一些特點(diǎn):

* 描述業(yè)務(wù)(service)能力強;

* CPL腳本通常在信令服務(wù)器上運行,有時(shí)也會(huì )在高級的客戶(hù)端運行;

* 由于CPL腳本在服務(wù)器上運行,為了服務(wù)器的安全,對它的表述能力又有所限制,例如沒(méi)有提供循環(huán)和遞歸的機制;

* 基于XML語(yǔ)言,語(yǔ)言分析比較簡(jiǎn)單,有很多現成的工具可以使用;

  2.2 CPL語(yǔ)言的體系結構

  眾所周知,XML是一種元語(yǔ)言(metalanguage)。CPL正是在XML的基礎上附加一些文本類(lèi)型描述(DTD:Document Type Description)構造而成。因此,與XML表示一樣,CPL語(yǔ)言呈樹(shù)型結構,也使用標簽,以及標簽的屬性來(lái)表示呼叫處理過(guò)程中的動(dòng)作和參數等。

  一個(gè)CPL腳本主要由兩部分信息組成:腳本有關(guān)的輔助信息和呼叫處理動(dòng)作(action).。腳本有關(guān)的輔助信息主要用于服務(wù)器正確的處理腳本,但在目前的規范中并沒(méi)有任何的定義,有待擴展。呼叫處理動(dòng)作則有分為兩種:頂層的處理動(dòng)作和子動(dòng)作(subaction)。頂層的處理動(dòng)作由標簽和表示,分別表示對來(lái)話(huà)(incoming call)和去話(huà)(outgoing call)時(shí)服務(wù)器所應采取的動(dòng)作。而子動(dòng)作(subaction)則類(lèi)似于c語(yǔ)言的函數的概念,是可以在其他的動(dòng)作中調用的動(dòng)作,而且使用subaction也增強了CPL腳本的模塊性和重用性。

  CPL語(yǔ)言主要是通過(guò)兩個(gè)頂層的呼叫處理動(dòng)作和子動(dòng)作來(lái)對呼叫進(jìn)行處理,從而為用戶(hù)提供不同的業(yè)務(wù)。從抽象的角度來(lái)看,呼叫處理動(dòng)作是由一組節點(diǎn)(Node)組成,每個(gè)節點(diǎn)(Node)包含幾個(gè)參數和輸出。其中參數描述了節點(diǎn)的精確的行為,也即一些匹配條件;而輸出則是指在參數匹配的前提下節點(diǎn)將要做出的判定或采取的動(dòng)作。CPL語(yǔ)言定義了如下的四種節點(diǎn):

* switches:表示CPL腳本做出的選擇,其中包括address-switch、string-switch、language-switch、time-switch、priority-switch;分別根據地址、字符、語(yǔ)言、時(shí)間、優(yōu)先級做出選擇;

* location modifier:從位置集合中添加或輸出記錄;其中包括location、lookup、remove-location;

* 信令操作:引發(fā)底層信令協(xié)議的信令事件;其中包括proxy、redirect和reject;分別引發(fā)底層協(xié)議的轉發(fā)、重定向和拒絕操作;

* 非信令操作:引發(fā)一些與底層協(xié)議無(wú)關(guān)的動(dòng)作;其中包括mail、log;

  2.3 CPL腳本的例子

  CPL腳本具有與XML相同的語(yǔ)法和表示方法。若有用戶(hù)呼叫SIP URL 為sip:jones@jonespc.example.com的用戶(hù)。當請求到達該用戶(hù)所在代理服務(wù)器時(shí),代理服務(wù)器根據相應的機制調用圖二所示的腳本并加以執行。首先代理服務(wù)器發(fā)出代理轉發(fā)(proxy)操作,超時(shí)值設為8秒。如果在超時(shí)值超時(shí)之前,代理服務(wù)器沒(méi)有接收到應答,根據應答的狀態(tài)碼來(lái)確定該用戶(hù)是busy還是noanswer,并采取相應的動(dòng)作。本例的處理方式比較的簡(jiǎn)單,對兩種情況均采取了呼叫該用戶(hù)服務(wù)提供商的語(yǔ)音郵件設備的動(dòng)作,再次進(jìn)行代理轉發(fā)(proxy)的操作。該語(yǔ)音郵件設備的SIP URL為sip:jones@voicemail.example.com。通過(guò)腳本,服務(wù)提供商為用戶(hù)提供了遇忙/無(wú)應答呼叫前轉業(yè)務(wù)。顯然,使用CPL語(yǔ)言編寫(xiě)更加復雜的腳本,服務(wù)提供商可以提供更加高級的業(yè)務(wù)。

  2.4 CPL有待研究的課題

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

  3 SIP CGI規范

  眾所周知,CGI并不是一項新的技術(shù)。它最初的出現是和HTTP協(xié)議一起,使靜態(tài)網(wǎng)頁(yè)具有了與瀏覽者交互的功能,極大的推動(dòng)了web技術(shù)的發(fā)展。CGI技術(shù)提供了一種在web環(huán)境下創(chuàng )建新業(yè)務(wù)的機制。從web的發(fā)展來(lái)看,無(wú)疑CGI技術(shù)又是非常成功的。它具有以下的一些特點(diǎn):

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

* CGI技術(shù)允許CGI 的應用程序對消息的頭部(header)具有訪(fǎng)問(wèn)權限;

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

  SIP協(xié)議在發(fā)展的過(guò)程中很大程度上借鑒了HTTP協(xié)議,比如消息的格式、消息請求/應答的交互方式,用文本格式對消息進(jìn)行編碼等。所以CGI規范的特點(diǎn)也特別適合SIP協(xié)議。因此可以采用CGI作為SIP的一種業(yè)務(wù)創(chuàng )建(Service Creation)的機制。

  3.1 SIP CGI與HTTP CGI的區別

  盡管SIP與HTTP具有相似的語(yǔ)法和請求/應答的模型,但是它們還是有一些關(guān)鍵的不同點(diǎn)。如代理服務(wù)器在SIP協(xié)議中起著(zhù)重要的作用,而在HTTP協(xié)議中則不是很重要;SIP協(xié)議提供了注冊的機制,而HTTP協(xié)議沒(méi)有。這些不同點(diǎn)也反映到了SIP CGI 和HTTP CGI的下列的區別上。

*SIP CGI主要運行在代理服務(wù)器、重定向服務(wù)器、注冊服務(wù)器上;而HTTP CGI則主要運行在用戶(hù)代理(user agent)上;

* SIP CGI允許腳本執行代理轉發(fā)、重定向等操作;而HTTP CGI則不支持;

* SIP CGI支持持續性模型(persistence model),通過(guò)一些機制使得允許腳本在SIP事務(wù)所包含的所有消息中保持狀態(tài);而HTTP CGI并不支持該模型;

  3.2 SIP CGI網(wǎng)絡(luò )模型

  3.3 SIP CGI規范

  與HTTP CGI類(lèi)似,SIP CGI規范主要定義了一些機制來(lái)使用戶(hù)能夠運行服務(wù)器上的應用程序。服務(wù)提供商可以使用C、visual Basic、perl等語(yǔ)言來(lái)開(kāi)發(fā)應用程序,實(shí)現不同的業(yè)務(wù)。

  3.3.1 SIP CGI 腳本如何從服務(wù)器獲取數據?

  SIP CGI對于SIP請求或者應答消息的頭部和消息體采用了不同的方式。服務(wù)器采用操作系統環(huán)境變量的機制來(lái)傳遞消息的頭部信息。RFC3050定義了超過(guò)20個(gè)的環(huán)境變量,例如AUTH_TYPE,REMOTE_USER等。而對于消息體,服務(wù)器則采用標準輸入文件描述符stdin來(lái)傳遞。

  3.3.2 CGI應用程序處理結果的輸出格式

  CGI腳本應用程序輸出有一些消息組成,這些消息分別對應了腳本要求服務(wù)器將要執行的動(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ù)器代理轉發(fā)請求到指定的URL。第二行則告訴服務(wù)器在轉發(fā)的請求中添加Organization頭部。需要注意的是,對于SIP協(xié)議在每個(gè)網(wǎng)絡(luò )節點(diǎn)通常都會(huì )處理的頭部,如Via、Max-forwards,服務(wù)器則會(huì )正常處理。第四行告訴服務(wù)器向主叫方發(fā)送一個(gè)100 Trying的臨時(shí)應答。第六行則告訴服務(wù)器存儲cookie信息。當這次呼叫所構成的事務(wù)(transaction)中的請求或應答再次觸發(fā)該腳本應用程序時(shí),這個(gè)cookie將會(huì )傳遞給CGI 應用程序。通過(guò)這種機制,應用程序可以無(wú)狀態(tài)的運行,但同時(shí)CGI 依然跟蹤這次事務(wù)(transaction)的進(jìn)度。

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

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

  5 總結

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

注:本文略有刪節。

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


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

分類(lèi)信息:     技術(shù)_信令_文摘
亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 道孚县| 永济市| 渝北区| 花莲县| 伊春市| 泰顺县| 渭南市| 上高县| 西充县| 南涧| 寿阳县| 石楼县| 多伦县| 拜城县| 象州县| 渭南市| 化德县| 且末县| 望谟县| 麻城市| 台江县| 镇坪县| 长海县| 东明县| 虞城县| 福州市| 中江县| 富民县| 云南省| 永州市| 罗源县| 苏尼特右旗| 松原市| 京山县| 洪洞县| 浪卡子县| 怀远县| 房产| 高安市| 莲花县| 岳阳县| http://444 http://444 http://444 http://444 http://444 http://444