SIP和VoIP協議及其應用

SIP和VoIP協議及其應用

SIP協議是NGN中的重要協議,越來越得到業界的重視。本文簡單介紹了VoIP和SIP協議的含義,並從背景、功能、主要消息這幾個方面對SIP協議的工作原理進行了介紹,分析了SIP呼叫建立的流程。

1 VoIP簡介

當前Internet的應用日益廣泛,隨着骨幹網速率的高速增長,接入網速率的不斷提高,Internet上的業務正從窄帶走向寬帶、從非實時走向實時,VoIP(Voice over Internet Protocol)業務就是其中的一類重要的業務。

VoIP是通過對語音信號進行數字化編碼、壓縮處理成幀,然後轉換爲IP數據包在IP網絡上進行傳輸,來達到在IP網絡上進行語音通信目的的技術。它最大的優勢是能廣泛地利用Internet和全球IP互連的環境,非常廉價的提供語音、傳真、視頻和數據等業務,如統一消息、虛擬電話、虛擬語音/傳真郵箱、查號業務、Internet呼叫中心、Internet呼叫管理、電視會議、電子商務、傳真存儲轉發和各種信息的存儲轉發等。

目前在VoIP領域有兩個完全獨立的信令協議:國際電聯電信標準化部(International Telecommunications Union—Telecommunication Standardization Sector,ITU-T)的H.323協議簇和因特網工程任務組(Internet Engineering Task Force,IETF)的SIP(Session Initiation Protocol)協議。

傳統的IP網絡主要是用來傳輸數據業務,採用的是盡力而爲的、無連接的數據技術,因此沒有服務質量保證,存在分組丟失、失序到達和時延抖動等情況。數據業務對此要求不高,但話音屬於實時業務,對時序、時延等有嚴格的要求。因此必須採取特殊措施來保障一定的業務質量。VoIP的關鍵技術包括信令技術、編碼技術、實時傳輸技術、服務質量保證(QoS)技術、以及網絡傳輸技術等。

2 SIP協議及其功能簡介

2.1 會話初始協議SIP

會話初始協議(SIP)是IETF提出的在IP網上進行多媒體通信的應用層控制協議。SIP是IETF標準進程的一部分,它是在諸如SMTP(簡單郵件傳送協議)和HTTP(超文本傳送協議)基礎之上建立起來的。它用來建立、改變和終止基於IP網絡的用戶間的呼叫。爲了提供電話業務,它還需要結合不同的標準和協議,特別是需要確保傳輸(RTP),與當前電話網絡的信令互連,能夠確保語音質量(RSVP),能夠提供目錄(LDAP),能夠鑑權用戶(RADIUS)等等。以Internet協議(HTTP)爲基礎,遵循Internet的設計原則,基於對等工作模式。利用SIP可實現會話的連接、建立和釋放,並支持單播、多播和可移動性。此外,SIP如果與SDP配合使用,可以動態地調整和修改會話屬性,如通話帶寬、所傳輸的媒體類型及編解碼格式。  

SIP大大優於現有的一些協議,如將PSTN音頻信號轉換爲IP數據包的媒體網關控制協議 (MGCP)。因爲MGCP是封閉的純語音標準,所以通過信令功能對其進行增強比較複雜,有時會導致消息被破壞或丟棄,從而妨礙提供商增加新的服務。而使用SIP,編程人員可以在不影響連接的情況下在消息中增加少量新信息。例如,SIP 服務提供商可以建立包含語音、視頻和聊天內容的全新媒體。如果使用 MGCP、H.323 或SS7標準,則提供商必須等待可以支持這種新媒體的協議新版本。而如果使用SIP,儘管網關和設備可能無法識別該媒體,但在兩個大陸上設有分支機構的公司可以實現媒體傳輸。而且,因爲SIP的消息構建方式類似於HTTP,開發人員能夠更加便捷地使用通用的編程語言(如Java)來創建應用程序。對於等待了數年希望使用SS7和高級智能網絡(AIN)部署呼叫等待、主叫號碼識別以及其他服務的運營商,現在如果使用SIP,只需數月時間即可實現高級通信服務的部署。

2.2 SIP協議的基本功能

SIP被描述爲用來生成、修改和終結一個或多個參與者之間的會話。這些會話包括因特網多媒體會議,因特網(或任何IP網絡)電話呼叫和多媒體發佈。會話中的成員能夠通過多播或單播聯繫的網絡來通信。SIP支持會話描述,它允許參與者在一組兼容媒體類型上達成一致。它同時通過代理和重定向請求到用戶當前位置來支持用戶移動性。SIP不與任何特定的會議控制協議捆綁。本質上,SIP提供以下功能。

名字翻譯和用戶定位:無論被呼叫方在哪裏都確保呼叫達到被呼叫方。執行任何描述信息到定位信息的映射。確保呼叫(會話)的本質細節被支持。

特徵協商:它允許與呼叫有關的組(這可以是多方呼叫)在支持的特徵上達成一致(注意:不是所有方都能夠支持相同級別的特徵)。例如視頻可以或不可以被支持。總之,存在很多需要協商的範圍。

呼叫參與者管理:呼叫中參與者能夠引入其他用戶加入呼叫或取消到其他用戶的連接。此外,用戶可以被轉移或置爲呼叫保持。

呼叫特徵改變:用戶應該能夠改變呼叫過程中的呼叫特徵。例如,呼叫可以被設置爲“voice-only”,但是在呼叫過程中,用戶可以根據需要開啓視頻功能。也就是說一個加入呼叫的第三方爲了加入該呼叫可以開啓不同的特徵。

2.3 SIP的消息整體描述

SIP消息用於會話連接的建立及修改。SIP消息有兩種:客戶機到服務器的請求(Request),服務器到客戶機的響應(response)。

SIP消息包括三個部分:SIP消息由一個起始行(start-line)、一個或多個字段(field)組成的消息頭、一個標誌消息頭結束的空行(CRLF)以及作爲可選項的消息體(message body)組成,其中描述消息體(message body)的頭稱爲實體頭(entity header)。起始行分請求行(Request-Line)和狀態行(status-line)兩種,其中請求行是請求消息的起始行,狀態行是響應消息的起始行,起始行位於消息的最開始。消息頭分通用頭(general-header)、請求頭(request-header)、響應頭(response-header)和實體頭(entity-header)四種。消息頭,描述消息的屬性,類似於HTTP消息頭的語法和語義,其中某些是完全照搬。消息體,消息體主要是對消息所要建立的會話的描述。典型的消息體爲SDP(會話描述協議)格式,用來對所要建立的會話進行描述,例如建立一個多媒體會話的消息體中包含音頻、視頻編碼及取樣頻率等信息的描述。消息體的類型採用MIME(多目的互聯網郵件擴展)所定義的代碼進行標識,如SDP的類型標識爲application/SDP。除了SDP,消息體也可以是其他各種類型的文本或二進制數據。

(1)SIP請求消息

INVITE方法用於邀請用戶和服務參加一個會話。在INVITE請求的消息體中可對被叫方被邀請參加的會話作以描述。如主叫方能接收的媒體類型、發出的煤體類型及其一些參數。對INVITE請求的成功響應必須在響應的消息體中說明被叫方願意接收哪種媒體,或者說明被叫方發出的媒體。服務器可以自動地用200 OK響應會議邀請。

ACK請求用於客戶機向服務器證實它已經收到了對INVITE請求的最終響應。ACK只和INVITE請求一起使用。對2xx最終響應的證實由客戶機用戶代理髮出,對其它最終響應的證實由收到響應的第一個代理或第一個客戶機用戶代理髮出。ACK請求的To、From、Call-ID、Cseq字段的值由對應的INIVITE請求的相應字段的值複製而來。

OPTIONS用於向服務器查詢其能力。如果服務器認爲它能與用戶聯繫,則可用一個能力集響應OPTIONS請求;OPTIONS的From、To分91包含主被叫的地址信息,對OPTIONS請求的響應中的From、To(可能加上tag參數)、Call-ID字段的值由OPTIONS請求中響應的字段值複製得到。

BYE用戶代理客戶機用BYE請求向服務器表明它想釋放呼叫。BYE請求可以像INVITE請求那樣被轉發,可由主叫方發出也可以由被叫方發出。呼叫的一方在釋放(掛斷)呼叫前必須發出BYE請求,收到BYE請求的這方必須停止發媒體流給發出BYE請求的這方。

CANCEL請求用於取消一個Call-ID、To、From和Cseq(僅序列號)字段值相同的正在進行的請求,但取消不了已經完成的請求(如果服務器返回一個最終狀態響應,則認爲請求己完成)。CANCEL請求中的Call- ID、To、Cseq的數字部分及From字段和原請求的對應字段值相同,從而使CANCEL請求與它要取消的請求匹配。

REGISTER方法用於客戶機向SIP服務器註冊列在To字段中的地址信息。

INFO方法是對SIP協議的擴展,用於傳遞會話中產生的與會話相關的控制信息,如:ISUP和ISDN信令消息,以及DTMF數字等。

其中INVITE和ACK用於建立呼叫,完成三次握手,或者用於建立以後改變會話屬性;BYE用以結束會話;OPTIONS用於查詢服務器能力;CANCEL用於取消己經發出但未最終結束的請求;REGISTER用於客戶機向註冊服務器註冊用戶位置等消息。

除了在建立會話時進行各種消息交互外,SIP終端還可以在會話過程中,發出消息改變或添加會話的某些屬性。例如,用戶在進行語音通話的過程中,想增加視頻通信,他可以在不中斷通話的情況下,發送新的INVITE消息,打開雙方的視頻媒體,使通話變成可視電話。這爲用戶的使用帶來很大的靈活性。

(2)SIP響應消息

SIP協議中用三位整數的狀態碼(status code)和原因值(reason code)來表示對請求做出回答,狀態碼用於機器識別操作,原因短語(reason-phrase)是對狀態碼的簡單文字描述,用於人工識別操作。狀態碼的第一個數字定義響應的類別,在SIP/2. 0中第一個數字有6個值,定義如下:

lxx——暫時響應,表示請求已經收到,正繼續處理請求。
  2xx——成功地響應,表示行動己經成功地收到,理解和接收。
  3xx——重定位響應,表示爲完成呼叫請求,還必須採取進一步的動作。
  4xx——客戶機錯誤,屬於請求失敗響應,表示請求有語法錯誤或不能被服務器執行。客戶機需要修改請求,然後再重發請求。
  5xx——服務器錯誤,屬於服務器失敗響應,表示服務器出錯,不能執行合法請求。
  6xx——全局失敗響應,表示任何服務器都不能執行請求。

3 SIP的呼叫建立

3.1 SIP的直接呼叫

(1)首先,主叫向被叫發出INVITE請求。INVITE請求的作用是發起並建立呼叫,邀請被叫加入主叫建立的呼叫。

(2)被叫收到請求後對主叫做出響應。接受請求方對請求的響應分爲臨時響應(狀態碼爲1xx)和最終相應(狀態碼爲2xx)。主叫只對最終相應做出迴應。圖1中,被叫做出的臨時相應有100Trying(嘗試連接),180 Ringing(被叫振鈴或進入受到請求狀態),182 Queued(被叫可能有多個呼叫要處理,所以主叫請求需要排隊等待);被叫做出的最終響應是200 OK,表示被叫接受並開始處理呼叫請求。

(3)爲了向被叫證實主叫收到了最終響應,主叫收到響應後發送ACK請求。被叫收到主叫的ACK請求,標誌呼叫建立階段結束。

(4)主叫或被叫在呼叫建立後發起後續請求。後續請求可由參加呼叫的任一方發起。可發起INVITE請求,進行交互操作,並對當前呼叫進行修改;也可發起BYE請求終止當前呼叫。

SIP直接呼叫流程如圖1所示。

SIP用戶適配器在測試所用交換系統中結構如圖2所示。

3.2 SIP在系統中的呼出流程

當基本呼叫進程分析呼叫信息,它會發送請求路由消息給路由管理模塊,如果路由管理模塊發現是SIP路由,它會返回SIP地址給基本呼叫進程,基本呼叫進程會將SIP地址添加到SETUP消息中發給SIP模塊,當SIP模塊收到從基本呼叫進程發來的SETUP消息,它將分配呼叫資源,呼叫ID,然後向進程發送消息,流程如圖3所示。

3.3 SIP在系統中的呼入流程

當SIP模塊從呼叫進程收到了INVITE消息,它將分配呼叫資源並且將呼叫ID和呼叫資源綁定,返回100消息給進程,發送SETUP消息給基本呼叫進程,流程如圖4所示。

3.4 SIP在系統中的放音流程

如果有該SIP用戶註冊有放音服務,連接管理模塊將會發送放音命令給SIP—UA模塊,SIP—UA會向進程發送INVITE,在對方返回200OK後,SIP模塊會發送放音命令迴應給連接管理模塊,然後進入放音階段,流程見圖5。

4 結論與展望

SIP協議作爲NGN通信的核心協議將有着極大的市場潛力和應用前景。協議是通信的基礎,尤其是在3G和VoIP中,SIP的靈活性和可擴展性都將得到體現並受到人們的歡迎。可以預見在不遠的將來,尤其是一些大的運營商,其中心平臺都會以SIP爲核心。

SIP能夠連接使用任何IP網絡(有線LAN和 WAN、公共Internet骨幹網、移動2.5G、3G和Wi-Fi)和任何IP設備(電話、PC、PDA、移動手持設備)的用戶,從而出現了衆多利潤豐厚的新商機,改進了企業和用戶的通信方式。基於SIP的應用(如VoIP、多媒體會議、push-to-talk(按鍵通話)、定位服務、在線信息和IM)即使單獨使用,也會爲服務提供商、ISV、網絡設備供應商和開發商提供許多新的商機。不過,SIP 的根本價值在於它能夠將這些功能組合起來,形成各種更大規模的無縫通信服務。

使用SIP,服務提供商及其合作伙伴可以訂製和提供基於SIP的組合服務,使用戶可以在單個通信會話中使用會議、Web控制、在線信息、IM等服務。實際上,服務提供商可以創建一個滿足多個最終用戶需求的靈活應用程序組合,而不是安裝和支持依賴於終端設備有限特定功能或類型的單一分散的應用程序。通過在單一、開放的標準SIP應用架構下合併基於IP的通信服務,服務提供商可以大大降低爲用戶設計和部署基於IP的新的創新性託管服務的成本。它是SIP可擴展性促進本行業和市場發展的強大動力,是我們所有人的希望所在。但是,作爲一種不能加密的協議,SIP協議的安全性也變得十分複雜,這也是我們在未來不容忽略的一個問題。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章