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