1 VoIP簡(jiǎn)介
當(dāng)前Internet的應(yīng)用日益廣泛,隨著骨干網(wǎng)速率的高速增長(zhǎng),接入網(wǎng)速率的不斷提高,Internet上的業(yè)務(wù)正從窄帶走向?qū)拵?、從非?shí)時(shí)走向?qū)崟r(shí),VoIP(Voice over Internet Protocol)業(yè)務(wù)就是其中的一類(lèi)重要的業(yè)務(wù)。
VoIP是通過(guò)對(duì)語(yǔ)音信號(hào)進(jìn)行數(shù)字化編碼、壓縮處理成幀,然后轉(zhuǎn)換為IP數(shù)據(jù)包在IP網(wǎng)絡(luò)上進(jìn)行傳輸,來(lái)達(dá)到在IP網(wǎng)絡(luò)上進(jìn)行語(yǔ)音通信目的的技術(shù)。它最大的優(yōu)勢(shì)是能廣泛地利用Internet和全球IP互連的環(huán)境,非常廉價(jià)的提供語(yǔ)音、傳真、視頻和數(shù)據(jù)等業(yè)務(wù),如統(tǒng)一消息、虛擬電話(huà)、虛擬語(yǔ)音/傳真郵箱、查號(hào)業(yè)務(wù)、Internet呼叫中心、Internet呼叫管理、電視會(huì)議、電子商務(wù)、傳真存儲(chǔ)轉(zhuǎn)發(fā)和各種信息的存儲(chǔ)轉(zhuǎn)發(fā)等。
目前在VoIP領(lǐng)域有兩個(gè)完全獨(dú)立的信令協(xié)議:國(guó)際電聯(lián)電信標(biāo)準(zhǔn)化部(International Telecommunications Union—Telecommunication Standardization Sector,ITU-T)的H.323協(xié)議簇和因特網(wǎng)工程任務(wù)組(Internet Engineering Task Force,IETF)的SIP(Session Initiation Protocol)協(xié)議。
傳統(tǒng)的IP網(wǎng)絡(luò)主要是用來(lái)傳輸數(shù)據(jù)業(yè)務(wù),采用的是盡力而為的、無(wú)連接的數(shù)據(jù)技術(shù),因此沒(méi)有服務(wù)質(zhì)量保證,存在分組丟失、失序到達(dá)和時(shí)延抖動(dòng)等情況。數(shù)據(jù)業(yè)務(wù)對(duì)此要求不高,但話(huà)音屬于實(shí)時(shí)業(yè)務(wù),對(duì)時(shí)序、時(shí)延等有嚴(yán)格的要求。因此必須采取特殊措施來(lái)保障一定的業(yè)務(wù)質(zhì)量。VoIP的關(guān)鍵技術(shù)包括信令技術(shù)、編碼技術(shù)、實(shí)時(shí)傳輸技術(shù)、服務(wù)質(zhì)量保證(QoS)技術(shù)、以及網(wǎng)絡(luò)傳輸技術(shù)等。
2 SIP協(xié)議及其功能簡(jiǎn)介
2.1 會(huì)話(huà)初始協(xié)議SIP
會(huì)話(huà)初始協(xié)議(SIP)是IETF提出的在IP網(wǎng)上進(jìn)行多媒體通信的應(yīng)用層控制協(xié)議。SIP是IETF標(biāo)準(zhǔn)進(jìn)程的一部分,它是在諸如SMTP(簡(jiǎn)單郵件傳送協(xié)議)和HTTP(超文本傳送協(xié)議)基礎(chǔ)之上建立起來(lái)的。它用來(lái)建立、改變和終止基于IP網(wǎng)絡(luò)的用戶(hù)間的呼叫。為了提供電話(huà)業(yè)務(wù),它還需要結(jié)合不同的標(biāo)準(zhǔn)和協(xié)議,特別是需要確保傳輸(RTP),與當(dāng)前電話(huà)網(wǎng)絡(luò)的信令互連,能夠確保語(yǔ)音質(zhì)量(RSVP),能夠提供目錄(LDAP),能夠鑒權(quán)用戶(hù)(RADIUS)等等。以Internet協(xié)議(HTTP)為基礎(chǔ),遵循Internet的設(shè)計(jì)原則,基于對(duì)等工作模式。利用SIP可實(shí)現(xiàn)會(huì)話(huà)的連接、建立和釋放,并支持單播、多播和可移動(dòng)性。此外,SIP如果與SDP配合使用,可以動(dòng)態(tài)地調(diào)整和修改會(huì)話(huà)屬性,如通話(huà)帶寬、所傳輸?shù)拿襟w類(lèi)型及編解碼格式?! ?/font>
SIP大大優(yōu)于現(xiàn)有的一些協(xié)議,如將PSTN音頻信號(hào)轉(zhuǎn)換為IP數(shù)據(jù)包的媒體網(wǎng)關(guān)控制協(xié)議(MGCP)。因?yàn)镸GCP是封閉的純語(yǔ)音標(biāo)準(zhǔn),所以通過(guò)信令功能對(duì)其進(jìn)行增強(qiáng)比較復(fù)雜,有時(shí)會(huì)導(dǎo)致消息被破壞或丟棄,從而妨礙提供商增加新的服務(wù)。而使用SIP,編程人員可以在不影響連接的情況下在消息中增加少量新信息。例如,SIP 服務(wù)提供商可以建立包含語(yǔ)音、視頻和聊天內(nèi)容的全新媒體。如果使用 MGCP、H.323 或SS7標(biāo)準(zhǔn),則提供商必須等待可以支持這種新媒體的協(xié)議新版本。而如果使用SIP,盡管網(wǎng)關(guān)和設(shè)備可能無(wú)法識(shí)別該媒體,但在兩個(gè)大陸上設(shè)有分支機(jī)構(gòu)的公司可以實(shí)現(xiàn)媒體傳輸。而且,因?yàn)镾IP的消息構(gòu)建方式類(lèi)似于HTTP,開(kāi)發(fā)人員能夠更加便捷地使用通用的編程語(yǔ)言(如Java)來(lái)創(chuàng)建應(yīng)用程序。對(duì)于等待了數(shù)年希望使用SS7和高級(jí)智能網(wǎng)絡(luò)(AIN)部署呼叫等待、主叫號(hào)碼識(shí)別以及其他服務(wù)的運(yùn)營(yíng)商,現(xiàn)在如果使用SIP,只需數(shù)月時(shí)間即可實(shí)現(xiàn)高級(jí)通信服務(wù)的部署。
2.2 SIP協(xié)議的基本功能
SIP被描述為用來(lái)生成、修改和終結(jié)一個(gè)或多個(gè)參與者之間的會(huì)話(huà)。這些會(huì)話(huà)包括因特網(wǎng)多媒體會(huì)議,因特網(wǎng)(或任何IP網(wǎng)絡(luò))電話(huà)呼叫和多媒體發(fā)布。會(huì)話(huà)中的成員能夠通過(guò)多播或單播聯(lián)系的網(wǎng)絡(luò)來(lái)通信。SIP支持會(huì)話(huà)描述,它允許參與者在一組兼容媒體類(lèi)型上達(dá)成一致。它同時(shí)通過(guò)代理和重定向請(qǐng)求到用戶(hù)當(dāng)前位置來(lái)支持用戶(hù)移動(dòng)性。SIP不與任何特定的會(huì)議控制協(xié)議捆綁。本質(zhì)上,SIP提供以下功能。
名字翻譯和用戶(hù)定位:無(wú)論被呼叫方在哪里都確保呼叫達(dá)到被呼叫方。執(zhí)行任何描述信息到定位信息的映射。確保呼叫(會(huì)話(huà))的本質(zhì)細(xì)節(jié)被支持。
特征協(xié)商:它允許與呼叫有關(guān)的組(這可以是多方呼叫)在支持的特征上達(dá)成一致(注意:不是所有方都能夠支持相同級(jí)別的特征)。例如視頻可以或不可以被支持??傊?,存在很多需要協(xié)商的范圍。[Page]
呼叫參與者管理:呼叫中參與者能夠引入其他用戶(hù)加入呼叫或取消到其他用戶(hù)的連接。此外,用戶(hù)可以被轉(zhuǎn)移或置為呼叫保持。
呼叫特征改變:用戶(hù)應(yīng)該能夠改變呼叫過(guò)程中的呼叫特征。例如,呼叫可以被設(shè)置為“voice-only”,但是在呼叫過(guò)程中,用戶(hù)可以根據(jù)需要開(kāi)啟視頻功能。也就是說(shuō)一個(gè)加入呼叫的第三方為了加入該呼叫可以開(kāi)啟不同的特征。
2.3 SIP的消息整體描述
SIP消息用于會(huì)話(huà)連接的建立及修改。SIP消息有兩種:客戶(hù)機(jī)到服務(wù)器的請(qǐng)求(Request),服務(wù)器到客戶(hù)機(jī)的響應(yīng)(response)。
SIP消息包括三個(gè)部分:SIP消息由一個(gè)起始行(start-line)、一個(gè)或多個(gè)字段(field)組成的消息頭、一個(gè)標(biāo)志消息頭結(jié)束的空行(CRLF)以及作為可選項(xiàng)的消息體(message body)組成,其中描述消息體(message body)的頭稱(chēng)為實(shí)體頭(entity header)。起始行分請(qǐng)求行(Request-Line)和狀態(tài)行(status-line)兩種,其中請(qǐng)求行是請(qǐng)求消息的起始行,狀態(tài)行是響應(yīng)消息的起始行,起始行位于消息的最開(kāi)始。消息頭分通用頭(general-header)、請(qǐng)求頭(request-header)、響應(yīng)頭(response-header)和實(shí)體頭(entity-header)四種。消息頭,描述消息的屬性,類(lèi)似于HTTP消息頭的語(yǔ)法和語(yǔ)義,其中某些是完全照搬。消息體,消息體主要是對(duì)消息所要建立的會(huì)話(huà)的描述。典型的消息體為SDP(會(huì)話(huà)描述協(xié)議)格式,用來(lái)對(duì)所要建立的會(huì)話(huà)進(jìn)行描述,例如建立一個(gè)多媒體會(huì)話(huà)的消息體中包含音頻、視頻編碼及取樣頻率等信息的描述。消息體的類(lèi)型采用MIME(多目的互聯(lián)網(wǎng)郵件擴(kuò)展)所定義的代碼進(jìn)行標(biāo)識(shí),如SDP的類(lèi)型標(biāo)識(shí)為application/SDP。除了SDP,消息體也可以是其他各種類(lèi)型的文本或二進(jìn)制數(shù)據(jù)。
?。?)SIP請(qǐng)求消息
INVITE方法用于邀請(qǐng)用戶(hù)和服務(wù)參加一個(gè)會(huì)話(huà)。在INVITE請(qǐng)求的消息體中可對(duì)被叫方被邀請(qǐng)參加的會(huì)話(huà)作以描述。如主叫方能接收的媒體類(lèi)型、發(fā)出的煤體類(lèi)型及其一些參數(shù)。對(duì)INVITE請(qǐng)求的成功響應(yīng)必須在響應(yīng)的消息體中說(shuō)明被叫方愿意接收哪種媒體,或者說(shuō)明被叫方發(fā)出的媒體。服務(wù)器可以自動(dòng)地用200 OK響應(yīng)會(huì)議邀請(qǐng)。
ACK請(qǐng)求用于客戶(hù)機(jī)向服務(wù)器證實(shí)它已經(jīng)收到了對(duì)INVITE請(qǐng)求的最終響應(yīng)。ACK只和INVITE請(qǐng)求一起使用。對(duì)2xx最終響應(yīng)的證實(shí)由客戶(hù)機(jī)用戶(hù)代理發(fā)出,對(duì)其它最終響應(yīng)的證實(shí)由收到響應(yīng)的第一個(gè)代理或第一個(gè)客戶(hù)機(jī)用戶(hù)代理發(fā)出。ACK請(qǐng)求的To、From、Call-ID、Cseq字段的值由對(duì)應(yīng)的INIVITE請(qǐng)求的相應(yīng)字段的值復(fù)制而來(lái)。
OPTIONS用于向服務(wù)器查詢(xún)其能力。如果服務(wù)器認(rèn)為它能與用戶(hù)聯(lián)系,則可用一個(gè)能力集響應(yīng)OPTIONS請(qǐng)求;OPTIONS的From、To分91包含主被叫的地址信息,對(duì)OPTIONS請(qǐng)求的響應(yīng)中的From、To(可能加上tag參數(shù))、Call-ID字段的值由OPTIONS請(qǐng)求中響應(yīng)的字段值復(fù)制得到。
BYE用戶(hù)代理客戶(hù)機(jī)用BYE請(qǐng)求向服務(wù)器表明它想釋放呼叫。BYE請(qǐng)求可以像INVITE請(qǐng)求那樣被轉(zhuǎn)發(fā),可由主叫方發(fā)出也可以由被叫方發(fā)出。呼叫的一方在釋放(掛斷)呼叫前必須發(fā)出BYE請(qǐng)求,收到BYE請(qǐng)求的這方必須停止發(fā)媒體流給發(fā)出BYE請(qǐng)求的這方。
CANCEL請(qǐng)求用于取消一個(gè)Call-ID、To、From和Cseq(僅序列號(hào))字段值相同的正在進(jìn)行的請(qǐng)求,但取消不了已經(jīng)完成的請(qǐng)求(如果服務(wù)器返回一個(gè)最終狀態(tài)響應(yīng),則認(rèn)為請(qǐng)求己完成)。CANCEL請(qǐng)求中的Call- ID、To、Cseq的數(shù)字部分及From字段和原請(qǐng)求的對(duì)應(yīng)字段值相同,從而使CANCEL請(qǐng)求與它要取消的請(qǐng)求匹配。
REGISTER方法用于客戶(hù)機(jī)向SIP服務(wù)器注冊(cè)列在To字段中的地址信息。
INFO方法是對(duì)SIP協(xié)議的擴(kuò)展,用于傳遞會(huì)話(huà)中產(chǎn)生的與會(huì)話(huà)相關(guān)的控制信息,如:ISUP和ISDN信令消息,以及DTMF數(shù)字等。
其中INVITE和ACK用于建立呼叫,完成三次握手,或者用于建立以后改變會(huì)話(huà)屬性;BYE用以結(jié)束會(huì)話(huà);OPTIONS用于查詢(xún)服務(wù)器能力;CANCEL用于取消己經(jīng)發(fā)出但未最終結(jié)束的請(qǐng)求;REGISTER用于客戶(hù)機(jī)向注冊(cè)服務(wù)器注冊(cè)用戶(hù)位置等消息。
除了在建立會(huì)話(huà)時(shí)進(jìn)行各種消息交互外,SIP終端還可以在會(huì)話(huà)過(guò)程中,發(fā)出消息改變或添加會(huì)話(huà)的某些屬性。例如,用戶(hù)在進(jìn)行語(yǔ)音通話(huà)的過(guò)程中,想增加視頻通信,他可以在不中斷通話(huà)的情況下,發(fā)送新的INVITE消息,打開(kāi)雙方的視頻媒體,使通話(huà)變成可視電話(huà)。這為用戶(hù)的使用帶來(lái)很大的靈活性。
?。?)SIP響應(yīng)消息
SIP協(xié)議中用三位整數(shù)的狀態(tài)碼(status code)和原因值(reason code)來(lái)表示對(duì)請(qǐng)求做出回答,狀態(tài)碼用于機(jī)器識(shí)別操作,原因短語(yǔ)(reason-phrase)是對(duì)狀態(tài)碼的簡(jiǎn)單文字描述,用于人工識(shí)別操作。狀態(tài)碼的第一個(gè)數(shù)字定義響應(yīng)的類(lèi)別,在SIP/2. 0中第一個(gè)數(shù)字有6個(gè)值,定義如下:[Page]
lxx——暫時(shí)響應(yīng),表示請(qǐng)求已經(jīng)收到,正繼續(xù)處理請(qǐng)求。
2xx——成功地響應(yīng),表示行動(dòng)己經(jīng)成功地收到,理解和接收。
3xx——重定位響應(yīng),表示為完成呼叫請(qǐng)求,還必須采取進(jìn)一步的動(dòng)作。
4xx——客戶(hù)機(jī)錯(cuò)誤,屬于請(qǐng)求失敗響應(yīng),表示請(qǐng)求有語(yǔ)法錯(cuò)誤或不能被服務(wù)器執(zhí)行。客戶(hù)機(jī)需要修改請(qǐng)求,然后再重發(fā)請(qǐng)求。
5xx——服務(wù)器錯(cuò)誤,屬于服務(wù)器失敗響應(yīng),表示服務(wù)器出錯(cuò),不能執(zhí)行合法請(qǐng)求。
6xx——全局失敗響應(yīng),表示任何服務(wù)器都不能執(zhí)行請(qǐng)求。
3 SIP的呼叫建立
3.1 SIP的直接呼叫
?。?)首先,主叫向被叫發(fā)出INVITE請(qǐng)求。INVITE請(qǐng)求的作用是發(fā)起并建立呼叫,邀請(qǐng)被叫加入主叫建立的呼叫。
?。?)被叫收到請(qǐng)求后對(duì)主叫做出響應(yīng)。接受請(qǐng)求方對(duì)請(qǐng)求的響應(yīng)分為臨時(shí)響應(yīng)(狀態(tài)碼為1xx)和最終相應(yīng)(狀態(tài)碼為2xx)。主叫只對(duì)最終相應(yīng)做出回應(yīng)。被叫做出的臨時(shí)相應(yīng)有100Trying(嘗試連接),180 Ringing(被叫振鈴或進(jìn)入受到請(qǐng)求狀態(tài)),182 Queued(被叫可能有多個(gè)呼叫要處理,所以主叫請(qǐng)求需要排隊(duì)等待);被叫做出的最終響應(yīng)是200 OK,表示被叫接受并開(kāi)始處理呼叫請(qǐng)求。
(3)為了向被叫證實(shí)主叫收到了最終響應(yīng),主叫收到響應(yīng)后發(fā)送ACK請(qǐng)求。被叫收到主叫的ACK請(qǐng)求,標(biāo)志呼叫建立階段結(jié)束。
(4)主叫或被叫在呼叫建立后發(fā)起后續(xù)請(qǐng)求。后續(xù)請(qǐng)求可由參加呼叫的任一方發(fā)起。可發(fā)起INVITE請(qǐng)求,進(jìn)行交互操作,并對(duì)當(dāng)前呼叫進(jìn)行修改;也可發(fā)起B(yǎng)YE請(qǐng)求終止當(dāng)前呼叫。
3.2 SIP在系統(tǒng)中的呼出流程
當(dāng)基本呼叫進(jìn)程分析呼叫信息,它會(huì)發(fā)送請(qǐng)求路由消息給路由管理模塊,如果路由管理模塊發(fā)現(xiàn)是SIP路由,它會(huì)返回SIP地址給基本呼叫進(jìn)程,基本呼叫進(jìn)程會(huì)將SIP地址添加到SETUP消息中發(fā)給SIP模塊,當(dāng)SIP模塊收到從基本呼叫進(jìn)程發(fā)來(lái)的SETUP消息,它將分配呼叫資源,呼叫ID,然后向進(jìn)程發(fā)送消息。
3.3 SIP在系統(tǒng)中的呼入流程
當(dāng)SIP模塊從呼叫進(jìn)程收到了INVITE消息,它將分配呼叫資源并且將呼叫ID和呼叫資源綁定,返回100消息給進(jìn)程,發(fā)送SETUP消息給基本呼叫進(jìn)程。
3.4 SIP在系統(tǒng)中的放音流程
如果有該SIP用戶(hù)注冊(cè)有放音服務(wù),連接管理模塊將會(huì)發(fā)送放音命令給SIP—UA模塊,SIP—UA會(huì)向進(jìn)程發(fā)送INVITE,在對(duì)方返回200OK后,SIP模塊會(huì)發(fā)送放音命令回應(yīng)給連接管理模塊,然后進(jìn)入放音階段。
4 結(jié)論與展望
SIP協(xié)議作為NGN通信的核心協(xié)議將有著極大的市場(chǎng)潛力和應(yīng)用前景。協(xié)議是通信的基礎(chǔ),尤其是在3G和VoIP中,SIP的靈活性和可擴(kuò)展性都將得到體現(xiàn)并受到人們的歡迎??梢灶A(yù)見(jiàn)在不遠(yuǎn)的將來(lái),尤其是一些大的運(yùn)營(yíng)商,其中心平臺(tái)都會(huì)以SIP為核心。
SIP能夠連接使用任何IP網(wǎng)絡(luò)(有線(xiàn)LAN和 WAN、公共Internet骨干網(wǎng)、移動(dòng)2.5G、3G和Wi-Fi)和任何IP設(shè)備(電話(huà)、PC、PDA、移動(dòng)手持設(shè)備)的用戶(hù),從而出現(xiàn)了眾多利潤(rùn)豐厚的新商機(jī),改進(jìn)了企業(yè)和用戶(hù)的通信方式?;赟IP的應(yīng)用(如VoIP、多媒體會(huì)議、push-to-talk(按鍵通話(huà))、定位服務(wù)、在線(xiàn)信息和IM)即使單獨(dú)使用,也會(huì)為服務(wù)提供商、ISV、網(wǎng)絡(luò)設(shè)備供應(yīng)商和開(kāi)發(fā)商提供許多新的商機(jī)。不過(guò),SIP 的根本價(jià)值在于它能夠?qū)⑦@些功能組合起來(lái),形成各種更大規(guī)模的無(wú)縫通信服務(wù)。
使用SIP,服務(wù)提供商及其合作伙伴可以訂制和提供基于SIP的組合服務(wù),使用戶(hù)可以在單個(gè)通信會(huì)話(huà)中使用會(huì)議、Web控制、在線(xiàn)信息、IM等服務(wù)。實(shí)際上,服務(wù)提供商可以創(chuàng)建一個(gè)滿(mǎn)足多個(gè)最終用戶(hù)需求的靈活應(yīng)用程序組合,而不是安裝和支持依賴(lài)于終端設(shè)備有限特定功能或類(lèi)型的單一分散的應(yīng)用程序。通過(guò)在單一、開(kāi)放的標(biāo)準(zhǔn)SIP應(yīng)用架構(gòu)下合并基于IP的通信服務(wù),服務(wù)提供商可以大大降低為用戶(hù)設(shè)計(jì)和部署基于IP的新的創(chuàng)新性托管服務(wù)的成本。它是SIP可擴(kuò)展性促進(jìn)本行業(yè)和市場(chǎng)發(fā)展的強(qiáng)大動(dòng)力,是我們所有人的希望所在。但是,作為一種不能加密的協(xié)議,SIP協(xié)議的安全性也變得十分復(fù)雜,這也是我們?cè)谖磥?lái)不容忽略的一個(gè)問(wèn)題。