新一代多媒體通信協(xié)議SIP及其實(shí)現(xiàn)
2008/07/29
一、引言
會(huì)話啟動(dòng)協(xié)議SIP(Session Initiation Protocol)是由IETF(Internet Engineering
Task Force)組織于1999年提出的多媒體通信框架的應(yīng)用層信令協(xié)議,是在諸如SMTP(簡(jiǎn)單郵件傳送協(xié)議)和HTTP(超文本傳送協(xié)議)基礎(chǔ)之上建立起來(lái)的,尤其適用于Internet中的實(shí)時(shí)通信應(yīng)用,其設(shè)計(jì)理念和協(xié)議結(jié)構(gòu)完全符合NGN的特性和要求,成為未來(lái)多媒體通信系統(tǒng)的主流發(fā)展方向。
SIP用來(lái)生成,修改和終結(jié)一個(gè)或多個(gè)參與者之間的會(huì)話。這些會(huì)話包括因特網(wǎng)多媒體會(huì)議,因特網(wǎng)(或任何IP網(wǎng)絡(luò))電話呼叫和多媒體發(fā)布。會(huì)話中的成員能夠通過(guò)多播或單播聯(lián)系的網(wǎng)絡(luò)來(lái)通信。
目前,SIP已廣泛地應(yīng)用在VoIP系統(tǒng)中,是VoIP系統(tǒng)的主要協(xié)議,實(shí)現(xiàn)VoIP的協(xié)議除了SIP以外主要還有H.323和媒體網(wǎng)關(guān)控制協(xié)議MGCP。MGCP能將眾多的IP電話網(wǎng)關(guān)連接成一個(gè)具備互操作性的整體,特別適用于配置大型應(yīng)用系統(tǒng),然而對(duì)于小型應(yīng)用系統(tǒng)來(lái)說(shuō)過(guò)于復(fù)雜。H.323是針對(duì)電路交換網(wǎng)的,協(xié)議相對(duì)復(fù)雜,采用H.323的VoIP服務(wù)對(duì)終端設(shè)備的要求較高。SIP則簡(jiǎn)單易行并且很容易與其他服務(wù)集成,優(yōu)勢(shì)明顯。
SIP協(xié)議用于發(fā)起會(huì)話,可以用來(lái)建立、修改以及終結(jié)多個(gè)參與者參加的多媒體會(huì)話進(jìn)程。參與會(huì)話的成員可以通過(guò)組播方式、單播連網(wǎng)或者兩者結(jié)合的形式進(jìn)行通信。為提供多媒體業(yè)務(wù),還需要結(jié)合不同的標(biāo)準(zhǔn)和協(xié)議,如需要RTP確保媒體傳輸,RSVP確保語(yǔ)音質(zhì)量,RADIUS鑒權(quán)用戶等。
論文研究SIP基本架構(gòu)及實(shí)現(xiàn)機(jī)制,基于開(kāi)放源代碼的VOCAL系統(tǒng),分析實(shí)現(xiàn)基于 宋體簡(jiǎn)介、圖名、表名及內(nèi)容、參考文獻(xiàn)均為小五號(hào)字,正文中除標(biāo)題SIP語(yǔ)音通信的方法,從而深入探討SIP實(shí)現(xiàn)結(jié)構(gòu)。
二、SIP協(xié)議架構(gòu)與實(shí)現(xiàn)機(jī)制
SIP的核心思想是邀請(qǐng)新成員加入一個(gè)已經(jīng)存在的會(huì)話或創(chuàng)建一個(gè)新的會(huì)話,各成員之間可以通過(guò)組播(multicast)、單播(unicast)或兩者結(jié)合的方式進(jìn)行交互。
1.SIP的基本功能及特點(diǎn)
SIP支持會(huì)話描述,它允許參與者在一組兼容媒體類(lèi)型上達(dá)成一致,同時(shí)通過(guò)代理和重定向請(qǐng)求到用戶當(dāng)前位置來(lái)支持用戶移動(dòng)性。SIP不與任何特定的會(huì)議控制協(xié)議捆綁。SIP提供以下功能:
- 名字翻譯和用戶定位:無(wú)論被呼叫方在哪里都確保呼叫達(dá)到被叫方。執(zhí)行任何描述信息到定位信息的映射。
- 特征協(xié)商:它允許與呼叫有關(guān)的組(這可以是多方呼叫)在支持的特征上達(dá)成一致。例如是否支持視頻等多種需要協(xié)商的特征。
- 呼叫參與者管理:呼叫中參與者能夠引入其它用戶,加入呼叫或取消到其它用戶的連接。
- 呼叫特征改變:用戶應(yīng)該能夠改變呼叫過(guò)程中的呼叫特征。
SIP既可以用于建立各種會(huì)話,也可以用來(lái)傳送即時(shí)消息和文件。能夠靈活、方便地提供業(yè)務(wù),具有多方面優(yōu)點(diǎn)。
協(xié)議可擴(kuò)展性:SIP協(xié)議具有強(qiáng)大的擴(kuò)充機(jī)制。SIP協(xié)議的擴(kuò)展性主要體現(xiàn)在其消息的擴(kuò)展上,SIP消息的三個(gè)基本部分:消息類(lèi)型、消息頭、消息體,都可以被不斷擴(kuò)充。SIP消息基于文本方式,使得各種擴(kuò)充工作都變得十分簡(jiǎn)潔。
開(kāi)放的業(yè)務(wù)生成環(huán)境:SIP網(wǎng)絡(luò)的業(yè)務(wù)提供主要由Proxy Server完成,生成一個(gè)業(yè)務(wù)就是設(shè)計(jì)一個(gè)業(yè)務(wù)邏輯從而對(duì)一個(gè)特定的消息流進(jìn)行控制,或?qū)ο⒄?qǐng)求做出相應(yīng)的響應(yīng)。
支持移動(dòng)性:SIP的動(dòng)態(tài)注冊(cè)機(jī)制,使用戶端移動(dòng)變得十分方便。
2.SIP協(xié)議的分層結(jié)構(gòu)
SIP是一個(gè)分層結(jié)構(gòu)協(xié)議,它的行為根據(jù)一組平等獨(dú)立的處理階段來(lái)描述,每一階段之間只是松耦合。
SIP的最底層是語(yǔ)法和編碼。它的編碼使用增強(qiáng)Backus-Nayr形式語(yǔ)法(BNF)來(lái)規(guī)定。
第二層是傳輸層,定義了網(wǎng)絡(luò)上客戶機(jī)與服務(wù)器發(fā)送請(qǐng)求和接收響應(yīng)的方式,所有的SIP元素包含傳輸層。
第三層是事務(wù)層。事務(wù)是SIP的基本元素。事務(wù)層具有客戶機(jī)組成部分(稱(chēng)為客戶機(jī)事務(wù))和服務(wù)器組成部分(稱(chēng)為服務(wù)器事務(wù)),一個(gè)事務(wù)由客戶機(jī)事務(wù)發(fā)送給服務(wù)器事務(wù)的請(qǐng)求(使用傳輸層),以及服務(wù)器事務(wù)發(fā)送對(duì)應(yīng)該請(qǐng)求的響應(yīng)組成。
事務(wù)層之上的層為事務(wù)用戶(TU)。當(dāng)一個(gè)TU希望發(fā)送請(qǐng)求時(shí),生成一個(gè)客戶機(jī)事務(wù)實(shí)例并向它傳遞請(qǐng)求和IP地址、端口和用來(lái)發(fā)送請(qǐng)求的傳輸機(jī)制。
3.SIP協(xié)議的消息機(jī)制
SIP采用C/S結(jié)構(gòu),通過(guò)消息機(jī)制來(lái)建立會(huì)話。SIP消息包括請(qǐng)求消息和響應(yīng)消息,二者具有相同的消息格式。
SIP消息是UAC和UAS之間通信的基本信息單元,采用的是基于UTF-8的文本編碼格式,語(yǔ)法信息以擴(kuò)展Backus-Naur形式(EBNF)描述,消息格式遵循RFC2822。
SIP消息的通用格式是:
Generic-message = start-line
*message-header
CRLF
[message-body]
start-line: SIP消息起始行。
*message-header:多個(gè)頭域。
CRLF:空行,表示消息頭域的結(jié)束
message-body:消息體部分。
SIP消息有兩種:客戶機(jī)到服務(wù)器的請(qǐng)求(Request), 服務(wù)器到客戶機(jī)的響應(yīng)(Response) .
4.SIP系統(tǒng)得功能實(shí)體及工作流程
SIP系統(tǒng)采用CS模式,利用消息機(jī)制建立并管理會(huì)話。按邏輯功能,SIP系統(tǒng)可分為四大功能實(shí)體:SIP用戶代理、SIP代理服務(wù)器、SIP重定向服務(wù)器和SIP注冊(cè)服務(wù)器,它們共同構(gòu)成了SIP系統(tǒng)的基本模型。
SIP用戶代理(SIP UA):又稱(chēng)為SIP終端,是SIP系統(tǒng)中的最終用戶,在RFC3261中將它們定義為一個(gè)應(yīng)用。根據(jù)它們?cè)跁?huì)話中扮演的角色的不同,又可分為用戶代理客戶機(jī)(UAC)和用戶代理服務(wù)器(UAS)兩種。其中前者用于發(fā)起呼叫請(qǐng)求,后者用于當(dāng)接到SIP請(qǐng)求時(shí)聯(lián)系用戶,并代表用戶返回響應(yīng)。
SIP代理服務(wù)器(SIP Proxy Server):是一個(gè)中間元素,它既是一個(gè)客戶機(jī)又是一個(gè)服務(wù)器,能夠代理前面的用戶向下一跳服務(wù)器發(fā)出呼叫請(qǐng)求。SIP代理服務(wù)器除了路由能力外,也可以集成防火墻、radius(AAA)等功能。
SIP重定向服務(wù)器(SIP Redirect Server):是一個(gè)規(guī)劃SIP呼叫路徑的服務(wù)器,在獲得了下一跳的地址后,立刻告訴前面的用戶,讓該用戶直接向下一跳地址發(fā)出請(qǐng)求而自己則退出對(duì)這個(gè)呼叫的控制。
SIP注冊(cè)服務(wù)器(SIP Register Server):用來(lái)完成對(duì)UAS的登錄,在SIP系統(tǒng)的網(wǎng)元中,所有UAS都要在某個(gè)登錄服務(wù)器中登錄,以便UAC通過(guò)服務(wù)器能找到它們。注冊(cè)服務(wù)并不做請(qǐng)求的身份認(rèn)證的判定。在SIP中授權(quán)和認(rèn)證可以通過(guò)建立在基于請(qǐng)求/應(yīng)答的模式上的上下文相關(guān)的請(qǐng)求來(lái)實(shí)現(xiàn),也可以使用更底層的方式來(lái)實(shí)現(xiàn)。
用戶Alice使用安裝了支持語(yǔ)音和視頻功能的客戶程序的PC,用戶Bob使用SIP電話。兩者都已經(jīng)向本域內(nèi)的SIP代理服務(wù)器注冊(cè)了他們的狀態(tài)和IP地址。用戶A發(fā)起呼叫;代理服務(wù)器收到A的請(qǐng)求后向注冊(cè)服務(wù)器查詢B的位置信息;向B發(fā)出代理呼叫;B通知代理服務(wù)器接受A的邀請(qǐng)并已作好接受數(shù)據(jù)的準(zhǔn)備;代理服務(wù)器通知A后SIP會(huì)話建立完畢。當(dāng)Bob要結(jié)束會(huì)話時(shí),直接向Alice發(fā)送結(jié)束請(qǐng)求,在Alice確認(rèn)這個(gè)請(qǐng)求以后會(huì)話結(jié)束。
三、用VOCAL系統(tǒng)實(shí)現(xiàn)基于SIP的語(yǔ)音通信
VOCAL(Vovida Open Communication Application Library)是一個(gè)開(kāi)源代碼通信軟件,以IP網(wǎng)為核心,在Linux或Solaris操作系統(tǒng)上運(yùn)行。提供VoIP電話服務(wù),支持基于SIP的通信設(shè)備。
1.VOCAL通信系統(tǒng)的組成
一個(gè)完整的VOCAL通信系統(tǒng)應(yīng)包含以下幾個(gè)部分:
- VOCAL系統(tǒng)電話軟件,是整個(gè)系統(tǒng)的核心,包含多種服務(wù)器。
- GUI:圖形用戶接口。
- IP電話:VOCAL支持多種電話設(shè)備,包括SIP電話和SIP用戶代理應(yīng)用軟件。
- 網(wǎng)關(guān):不僅提供網(wǎng)絡(luò)之間的接口,還能起到基于SIP網(wǎng)絡(luò)和其他類(lèi)型網(wǎng)絡(luò)之間消息翻譯器的功能。VOCAL包含兩種網(wǎng)關(guān):住宅網(wǎng)關(guān)和中繼網(wǎng)關(guān)。
Marshal server:是外部設(shè)備和VOCAL系統(tǒng)連接的唯一接口。提供了SIP協(xié)議中的SIP代理服務(wù)器和注冊(cè)服務(wù)器的邏輯功能。作用是SIP消息翻譯,用戶鑒定和保障安全性,計(jì)費(fèi)等。
重定向服務(wù)器:重定向服務(wù)器是SIP協(xié)議中重定向、注冊(cè)、定位服務(wù)器的組合實(shí)現(xiàn),存儲(chǔ)用戶的聯(lián)系和特征數(shù)據(jù)。
呼叫詳述記錄服務(wù)器:從Marshal server接受呼叫數(shù)據(jù),并把這些數(shù)據(jù)轉(zhuǎn)化為第三方計(jì)費(fèi)系統(tǒng)能夠識(shí)別的格式。
特征服務(wù)器:是SIP代理服務(wù)器的另外一種實(shí)現(xiàn)方式。
Provisioning Server:存儲(chǔ)系統(tǒng)所有用戶和服務(wù)器模塊的數(shù)據(jù)記錄,并把這些信息通過(guò)預(yù)定通報(bào)模塊發(fā)送到整個(gè)系統(tǒng)中去。
2.VOCAL系統(tǒng)的安裝與測(cè)試
VOCAL系統(tǒng)在Linux或Solaris操作系統(tǒng)下運(yùn)行,本文運(yùn)行在Red Hat 9.0之下,安裝與測(cè)試過(guò)程中解決的主要問(wèn)題包括:
。1)操作系統(tǒng)中必須要有X window系統(tǒng),gcc編譯器。
。2)主機(jī)名稱(chēng)和IP地址必須設(shè)定,不可以為127.0.0.1先檢查/etc/hosts文件,如果只有127.0.0.1一行,需要自行加入本機(jī)IP
及主機(jī)名,例如:
127.0.0.1 localhost.localdomain localhost
xxx.xxx.xxx.xxx our_hostname
。3)vocal server 必須要有java環(huán)境。如果沒(méi)有要自行下載支持Linux的j2re包來(lái)安裝。
VOCAL是由http://vovida.org提供的,http://vovida.org 提供兩種VOCAl安裝方式,一種是源碼安裝,一種是rpm安裝。在測(cè)試過(guò)程中要進(jìn)行兩點(diǎn)之間的語(yǔ)音通信,要在兩臺(tái)機(jī)器上安裝VOCAL,其中一臺(tái)選擇用源碼安裝整個(gè)系統(tǒng)做服務(wù)器和一個(gè)客戶端,另外一臺(tái)用rpm安裝一個(gè)客戶端:sipset。
服務(wù)器端集成了完整的VOCAL系統(tǒng),可以通過(guò)web方式登錄服務(wù)器,并建立用戶。建立兩個(gè)用戶1000和1001以備測(cè)試。
在兩臺(tái)機(jī)器上分別啟動(dòng)sipset,sipset提供了一個(gè)簡(jiǎn)單的圖形界面,用戶可以實(shí)現(xiàn)登錄、呼叫、掛機(jī)等操作,兩個(gè)終端先分別以用戶1000和1001登錄。讓1000用戶呼叫1001。當(dāng)呼叫發(fā)出以后1001端就會(huì)顯示有一個(gè)呼叫進(jìn)入,1001端選擇接聽(tīng),就建立了基于SIP的語(yǔ)音會(huì)話。
四、結(jié)論
論文詳細(xì)介紹了(SIP)的實(shí)現(xiàn)機(jī)制、消息結(jié)構(gòu)、功能實(shí)體以及呼叫建立流程,結(jié)合VOCAL系統(tǒng),介紹了如何在IP網(wǎng)絡(luò)中實(shí)現(xiàn)基于SIP協(xié)議的語(yǔ)音通信。要實(shí)現(xiàn)在IP網(wǎng)中基于SIP的視頻通信以及多方參與的多媒體會(huì)議系統(tǒng)等,還需要使用會(huì)話初始協(xié)議的一些擴(kuò)展功能,媒體協(xié)商、會(huì)話過(guò)程控制等。
ZDnet
(www.zdnet.com.cn)
相關(guān)鏈接: