首頁>>>技術(shù)>>>VoIP

新一代多媒體通信協(xié)議SIP及其實現(xiàn)

2008/07/29

一、引言

  會話啟動協(xié)議SIP(Session Initiation Protocol)是由IETF(Internet Engineering Task Force)組織于1999年提出的多媒體通信框架的應(yīng)用層信令協(xié)議,是在諸如SMTP(簡單郵件傳送協(xié)議)和HTTP(超文本傳送協(xié)議)基礎(chǔ)之上建立起來的,尤其適用于Internet中的實時通信應(yīng)用,其設(shè)計理念和協(xié)議結(jié)構(gòu)完全符合NGN的特性和要求,成為未來多媒體通信系統(tǒng)的主流發(fā)展方向。

  SIP用來生成,修改和終結(jié)一個或多個參與者之間的會話。這些會話包括因特網(wǎng)多媒體會議,因特網(wǎng)(或任何IP網(wǎng)絡(luò))電話呼叫和多媒體發(fā)布。會話中的成員能夠通過多播或單播聯(lián)系的網(wǎng)絡(luò)來通信。

  目前,SIP已廣泛地應(yīng)用在VoIP系統(tǒng)中,是VoIP系統(tǒng)的主要協(xié)議,實現(xiàn)VoIP的協(xié)議除了SIP以外主要還有H.323和媒體網(wǎng)關(guān)控制協(xié)議MGCP。MGCP能將眾多的IP電話網(wǎng)關(guān)連接成一個具備互操作性的整體,特別適用于配置大型應(yīng)用系統(tǒng),然而對于小型應(yīng)用系統(tǒng)來說過于復(fù)雜。H.323是針對電路交換網(wǎng)的,協(xié)議相對復(fù)雜,采用H.323的VoIP服務(wù)對終端設(shè)備的要求較高。SIP則簡單易行并且很容易與其他服務(wù)集成,優(yōu)勢明顯。

  SIP協(xié)議用于發(fā)起會話,可以用來建立、修改以及終結(jié)多個參與者參加的多媒體會話進(jìn)程。參與會話的成員可以通過組播方式、單播連網(wǎng)或者兩者結(jié)合的形式進(jìn)行通信。為提供多媒體業(yè)務(wù),還需要結(jié)合不同的標(biāo)準(zhǔn)和協(xié)議,如需要RTP確保媒體傳輸,RSVP確保語音質(zhì)量,RADIUS鑒權(quán)用戶等。

  論文研究SIP基本架構(gòu)及實現(xiàn)機(jī)制,基于開放源代碼的VOCAL系統(tǒng),分析實現(xiàn)基于 宋體簡介、圖名、表名及內(nèi)容、參考文獻(xiàn)均為小五號字,正文中除標(biāo)題SIP語音通信的方法,從而深入探討SIP實現(xiàn)結(jié)構(gòu)。

二、SIP協(xié)議架構(gòu)與實現(xiàn)機(jī)制

  SIP的核心思想是邀請新成員加入一個已經(jīng)存在的會話或創(chuàng)建一個新的會話,各成員之間可以通過組播(multicast)、單播(unicast)或兩者結(jié)合的方式進(jìn)行交互。

  1.SIP的基本功能及特點(diǎn)

  SIP支持會話描述,它允許參與者在一組兼容媒體類型上達(dá)成一致,同時通過代理和重定向請求到用戶當(dāng)前位置來支持用戶移動性。SIP不與任何特定的會議控制協(xié)議捆綁。SIP提供以下功能:   SIP既可以用于建立各種會話,也可以用來傳送即時消息和文件。能夠靈活、方便地提供業(yè)務(wù),具有多方面優(yōu)點(diǎn)。

  協(xié)議可擴(kuò)展性:SIP協(xié)議具有強(qiáng)大的擴(kuò)充機(jī)制。SIP協(xié)議的擴(kuò)展性主要體現(xiàn)在其消息的擴(kuò)展上,SIP消息的三個基本部分:消息類型、消息頭、消息體,都可以被不斷擴(kuò)充。SIP消息基于文本方式,使得各種擴(kuò)充工作都變得十分簡潔。

  開放的業(yè)務(wù)生成環(huán)境:SIP網(wǎng)絡(luò)的業(yè)務(wù)提供主要由Proxy Server完成,生成一個業(yè)務(wù)就是設(shè)計一個業(yè)務(wù)邏輯從而對一個特定的消息流進(jìn)行控制,或?qū)ο⒄埱笞龀鱿鄳?yīng)的響應(yīng)。

  支持移動性:SIP的動態(tài)注冊機(jī)制,使用戶端移動變得十分方便。

  2.SIP協(xié)議的分層結(jié)構(gòu)

  SIP是一個分層結(jié)構(gòu)協(xié)議,它的行為根據(jù)一組平等獨(dú)立的處理階段來描述,每一階段之間只是松耦合。

  SIP的最底層是語法和編碼。它的編碼使用增強(qiáng)Backus-Nayr形式語法(BNF)來規(guī)定。

  第二層是傳輸層,定義了網(wǎng)絡(luò)上客戶機(jī)與服務(wù)器發(fā)送請求和接收響應(yīng)的方式,所有的SIP元素包含傳輸層。

  第三層是事務(wù)層。事務(wù)是SIP的基本元素。事務(wù)層具有客戶機(jī)組成部分(稱為客戶機(jī)事務(wù))和服務(wù)器組成部分(稱為服務(wù)器事務(wù)),一個事務(wù)由客戶機(jī)事務(wù)發(fā)送給服務(wù)器事務(wù)的請求(使用傳輸層),以及服務(wù)器事務(wù)發(fā)送對應(yīng)該請求的響應(yīng)組成。

  事務(wù)層之上的層為事務(wù)用戶(TU)。當(dāng)一個TU希望發(fā)送請求時,生成一個客戶機(jī)事務(wù)實例并向它傳遞請求和IP地址、端口和用來發(fā)送請求的傳輸機(jī)制。

  3.SIP協(xié)議的消息機(jī)制

  SIP采用C/S結(jié)構(gòu),通過消息機(jī)制來建立會話。SIP消息包括請求消息和響應(yīng)消息,二者具有相同的消息格式。

  SIP消息是UAC和UAS之間通信的基本信息單元,采用的是基于UTF-8的文本編碼格式,語法信息以擴(kuò)展Backus-Naur形式(EBNF)描述,消息格式遵循RFC2822。

  SIP消息的通用格式是:

  Generic-message = start-line
  *message-header
  CRLF
  [message-body]
  start-line: SIP消息起始行。
  *message-header:多個頭域。
  CRLF:空行,表示消息頭域的結(jié)束
  message-body:消息體部分。

  SIP消息有兩種:客戶機(jī)到服務(wù)器的請求(Request), 服務(wù)器到客戶機(jī)的響應(yīng)(Response) .

  4.SIP系統(tǒng)得功能實體及工作流程

  SIP系統(tǒng)采用CS模式,利用消息機(jī)制建立并管理會話。按邏輯功能,SIP系統(tǒng)可分為四大功能實體:SIP用戶代理、SIP代理服務(wù)器、SIP重定向服務(wù)器和SIP注冊服務(wù)器,它們共同構(gòu)成了SIP系統(tǒng)的基本模型。

  SIP用戶代理(SIP UA):又稱為SIP終端,是SIP系統(tǒng)中的最終用戶,在RFC3261中將它們定義為一個應(yīng)用。根據(jù)它們在會話中扮演的角色的不同,又可分為用戶代理客戶機(jī)(UAC)和用戶代理服務(wù)器(UAS)兩種。其中前者用于發(fā)起呼叫請求,后者用于當(dāng)接到SIP請求時聯(lián)系用戶,并代表用戶返回響應(yīng)。

  SIP代理服務(wù)器(SIP Proxy Server):是一個中間元素,它既是一個客戶機(jī)又是一個服務(wù)器,能夠代理前面的用戶向下一跳服務(wù)器發(fā)出呼叫請求。SIP代理服務(wù)器除了路由能力外,也可以集成防火墻、radius(AAA)等功能。

  SIP重定向服務(wù)器(SIP Redirect Server):是一個規(guī)劃SIP呼叫路徑的服務(wù)器,在獲得了下一跳的地址后,立刻告訴前面的用戶,讓該用戶直接向下一跳地址發(fā)出請求而自己則退出對這個呼叫的控制。

  SIP注冊服務(wù)器(SIP Register Server):用來完成對UAS的登錄,在SIP系統(tǒng)的網(wǎng)元中,所有UAS都要在某個登錄服務(wù)器中登錄,以便UAC通過服務(wù)器能找到它們。注冊服務(wù)并不做請求的身份認(rèn)證的判定。在SIP中授權(quán)和認(rèn)證可以通過建立在基于請求/應(yīng)答的模式上的上下文相關(guān)的請求來實現(xiàn),也可以使用更底層的方式來實現(xiàn)。

  用戶Alice使用安裝了支持語音和視頻功能的客戶程序的PC,用戶Bob使用SIP電話。兩者都已經(jīng)向本域內(nèi)的SIP代理服務(wù)器注冊了他們的狀態(tài)和IP地址。用戶A發(fā)起呼叫;代理服務(wù)器收到A的請求后向注冊服務(wù)器查詢B的位置信息;向B發(fā)出代理呼叫;B通知代理服務(wù)器接受A的邀請并已作好接受數(shù)據(jù)的準(zhǔn)備;代理服務(wù)器通知A后SIP會話建立完畢。當(dāng)Bob要結(jié)束會話時,直接向Alice發(fā)送結(jié)束請求,在Alice確認(rèn)這個請求以后會話結(jié)束。

三、用VOCAL系統(tǒng)實現(xiàn)基于SIP的語音通信

  VOCAL(Vovida Open Communication Application Library)是一個開源代碼通信軟件,以IP網(wǎng)為核心,在Linux或Solaris操作系統(tǒng)上運(yùn)行。提供VoIP電話服務(wù),支持基于SIP的通信設(shè)備。

  1.VOCAL通信系統(tǒng)的組成

  一個完整的VOCAL通信系統(tǒng)應(yīng)包含以下幾個部分:   Marshal server:是外部設(shè)備和VOCAL系統(tǒng)連接的唯一接口。提供了SIP協(xié)議中的SIP代理服務(wù)器和注冊服務(wù)器的邏輯功能。作用是SIP消息翻譯,用戶鑒定和保障安全性,計費(fèi)等。

  重定向服務(wù)器:重定向服務(wù)器是SIP協(xié)議中重定向、注冊、定位服務(wù)器的組合實現(xiàn),存儲用戶的聯(lián)系和特征數(shù)據(jù)。

  呼叫詳述記錄服務(wù)器:從Marshal server接受呼叫數(shù)據(jù),并把這些數(shù)據(jù)轉(zhuǎn)化為第三方計費(fèi)系統(tǒng)能夠識別的格式。

  特征服務(wù)器:是SIP代理服務(wù)器的另外一種實現(xiàn)方式。

  Provisioning Server:存儲系統(tǒng)所有用戶和服務(wù)器模塊的數(shù)據(jù)記錄,并把這些信息通過預(yù)定通報模塊發(fā)送到整個系統(tǒng)中去。

  2.VOCAL系統(tǒng)的安裝與測試

  VOCAL系統(tǒng)在Linux或Solaris操作系統(tǒng)下運(yùn)行,本文運(yùn)行在Red Hat 9.0之下,安裝與測試過程中解決的主要問題包括:

 。1)操作系統(tǒng)中必須要有X window系統(tǒng),gcc編譯器。

 。2)主機(jī)名稱和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)境。如果沒有要自行下載支持Linux的j2re包來安裝。

  VOCAL是由http://vovida.org提供的,http://vovida.org 提供兩種VOCAl安裝方式,一種是源碼安裝,一種是rpm安裝。在測試過程中要進(jìn)行兩點(diǎn)之間的語音通信,要在兩臺機(jī)器上安裝VOCAL,其中一臺選擇用源碼安裝整個系統(tǒng)做服務(wù)器和一個客戶端,另外一臺用rpm安裝一個客戶端:sipset。

  服務(wù)器端集成了完整的VOCAL系統(tǒng),可以通過web方式登錄服務(wù)器,并建立用戶。建立兩個用戶1000和1001以備測試。

  在兩臺機(jī)器上分別啟動sipset,sipset提供了一個簡單的圖形界面,用戶可以實現(xiàn)登錄、呼叫、掛機(jī)等操作,兩個終端先分別以用戶1000和1001登錄。讓1000用戶呼叫1001。當(dāng)呼叫發(fā)出以后1001端就會顯示有一個呼叫進(jìn)入,1001端選擇接聽,就建立了基于SIP的語音會話。

四、結(jié)論

  論文詳細(xì)介紹了(SIP)的實現(xiàn)機(jī)制、消息結(jié)構(gòu)、功能實體以及呼叫建立流程,結(jié)合VOCAL系統(tǒng),介紹了如何在IP網(wǎng)絡(luò)中實現(xiàn)基于SIP協(xié)議的語音通信。要實現(xiàn)在IP網(wǎng)中基于SIP的視頻通信以及多方參與的多媒體會議系統(tǒng)等,還需要使用會話初始協(xié)議的一些擴(kuò)展功能,媒體協(xié)商、會話過程控制等。

ZDnet (www.zdnet.com.cn)



相關(guān)鏈接:
分析師:統(tǒng)一通信將融入商務(wù)流程中 2008-07-23
智能通信實現(xiàn)酒店個性化 2008-07-22
SIP,正逢其時! 2008-07-21
IP-PBX給中小企業(yè)帶來了什么?--客服篇 2008-07-14
基于互聯(lián)網(wǎng)的話音網(wǎng)融合應(yīng)用研究 2008-07-14

分類信息: