首頁>>>技術>>>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提供以下功能:   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)應包含以下幾個部分:   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

分類信息: