目 錄
SIP(Session Initiation Protocol,會話初始協議)是一個用於建立、更改和終止多媒體會話的應用層控製協議,其中的會話可以是IP電話、多媒體會話或多媒體會議。SIP是IETF多媒體數據和控製體係結構的核心協議(最新RFC文檔是RFC 3261)。其主要目的是為了解決IP網中的信令控製,以及同軟交換平台的通信,從而構成下一代的增值業務平台,對電信、銀行、金融等行業提供更好的增值業務。
SIP用於發起會話,它能控製多個參與者參加的多媒體會話的建立和終結,並能動態調整和修改會話屬性,如會話帶寬要求、傳輸的媒體類型(語音、視頻和數據等)、媒體的編解碼格式、對組播和單播的支持等。SIP協議基於文本編碼,大量借鑒了成熟的HTTP協議,並且具有易擴展、易實現等特點,因此非常適合用來實現基於因特網的多媒體通信係統。
根據RFC 2327的定義,多媒體會話(Multimedia Session)是指一組多媒體發送者和接受者,以及從發送者到接受者的數據流。例如一個多媒體會議就是一個多媒體會話。一個會話由一組用戶名稱、會話ID、網絡類型、地址類型以及各個單元的地址來確定。
用戶代理(UA,User Agent)也稱SIP終端,是指支持SIP協議的多媒體會話終端。一般使用支持SIP協議的路由器作為SIP UA。
UA包括用戶代理客戶端(UAC,User Agent Client)和用戶代理服務器(UAS,User Agent Server)。一般說的UA均是指二者的總稱,因為在一次呼叫中,一個SIP終端既要處理SIP請求,又要發起SIP請求。
用戶代理客戶端是指在SIP會話建立過程中主動發送會話請求的設備。例如,主叫SIP終端。當代理服務器向被叫終端發送會話請求時,它就成為用戶代理客戶端。
用戶代理服務器是指在SIP會話建立過程中接收會話請求的設備。例如,被叫SIP終端。當代理服務器接收主叫終端發送會話請求時,也作為用戶代理服務器。
代理服務器(Proxy Server)的作用就是傳遞主叫UA發送的會話請求到被叫UA,然後將被叫UA的響應傳遞回主叫UA,它相當於主叫UA和被叫UA之間傳遞會話消息的一座橋梁。代理服務器在接收到主叫UA的會話請求後,首先要向位置服務器請求查找被叫UA的位置以及主、被叫UA的呼叫策略信息。隻有找到被叫UA並且此呼叫是允許的,代理服務器才會向被叫UA發送會話請求。代理服務器一般在SIP會話中都是需要的。
重定向服務器(Redirect Server)用來指示客戶端連接的新地址。比如,主叫UA呼叫被叫UA,當重定向服務器收到主叫UA發送的會話請求消息後,查找被叫UA的位置信息,然後將其返回給主叫UA,使主叫UA重新向該位置發起會話請求。此位置可以是被叫UA的位置,也可以是一個代理服務器的位置。接下來主叫UA如同直接呼叫被叫UA或者向代理服務器呼叫的流程一樣。
位置服務器(Location Server)是為代理服務器和重定向服務器等提供UA信息的設備。位置服務器記錄了注冊服務器接收到的UA的信息。二者可以獨立存在,也可以作為邏輯組件存在於同一台服務器上。
注冊服務器(Registrar Server)接受用戶注冊,注冊的內容(如本地號碼等信息)一般是存儲在位置服務器上,供後續查詢使用。二者都是邏輯組件,一般存在於同一台服務器上。
SIP主要有五個基本功能:
l 確定用戶位置:確定被叫SIP用戶所在的位置。SIP的最強大之處就是用戶定位功能,它可以利用SIP終端在注冊服務器上的注冊信息實現用戶定位,也可以利用其他定位服務器,如DNS、LDAP等提供的定位服務來增強其定位功能。
l 確定用戶可用性:確定被叫會話終端是否可以參加此會話。SIP支持多種地址描述和尋址方式,包括SIP-URI(比如sip:[email protected])、Tel-URL(比如tel:+1312000)和SIPS-URI(sips:[email protected])。這樣,SIP主叫根據被叫地址,就可以識別出被叫是否在傳統電話網上,然後通過一個與傳統電話網相連的網關向被叫發起並建立呼叫。
l 確定用戶能力:確定被叫終端可用於參加會話的媒體類型及媒體參數。SIP終端在消息交互過程中攜帶自身的媒體類型和媒體參數,這使得會話雙方都可以明確對方的會話能力。
l 建立會話:建立主被叫雙方的會話。SIP會話雙方通過協商媒體類型和媒體參數,最終選擇雙方都具有的能力建立起會話。
l 管理會話:可以更改會話參數或中止會話。
SIP的特點如下:
l 標準的開放性。可以將不同運營商引進的各種新的功能、產品和服務整合在一起,供用戶自由地選擇。
l 配置的靈活性。兼容多種撥號方式,能在有線或無線的設備上實現,可以進行高度靈活的配置,並且能夠和其它係統協同工作。
l 係統可擴容性。隨著企業規模的擴大,係統也可以隨之擴充。
l 支持遠端用戶。無論用戶身在何方,都可以將企業的網絡延伸到那裏。
l 企業各部分通訊方式的一致性。分支機構、家庭辦公室和出差人員使用同樣的撥號方式和係統訪問方式,便於管理。
l 迅速啟動。當建立新的分支機構、吸納新的員工,或重新安排員工工作或改變其工作地點時,係統相應變更非常迅速。
l 易安裝、可維護。非專業人士也可以安裝或維護SIP係統。
SIP消息采用文本方式編碼,包括請求消息與響應消息兩類。
SIP請求消息包括INVITE、ACK、OPTIONS、BYE、CANCEL和REGISTER等。RFC 3261定義的請求消息有以下六種。
l INVITE請求消息用於邀請用戶加入一個呼叫。
l ACK:用於對請求消息的響應消息進行確認。
l OPTIONS:用於請求協商能力信息。
l BYE:用於釋放已建立的呼叫。
l CANCEL:用於釋放尚未建立的呼叫。
l REGISTER:用於向SIP注冊服務器登記用戶位置等信息。
SIP響應消息用於對請求消息進行響應,指示呼叫或注冊的成功或失敗狀態。不同類的響應消息由狀態碼來區分,狀態碼包含三位整數,狀態碼的第一位用於定義響應類型,另外兩位用於進一步對響應進行更加詳細的說明。響應消息的分類表 1所示。
狀態碼編號 | 消息含義 | 消息歸類 |
100~199 | 請求被收到,正在處理中 | 臨時消息 |
200~299 | 收到請求,並被成功處理,接受該請求 | 處理成功 |
300~399 | 要完成該請求需要更進一步的操作 | 重定向 |
400~499 | 消息語法錯誤,服務器不能處理該請求 | 客戶端出錯 |
500~599 | 由於UAS/Server的原因,無法處理該請求 | 服務器出錯 |
600~699 | 該請求在任何UAS/Server上都不能完成 | 全局錯誤 |
在完整的SIP係統中,所有的SIP終端作為User Agent都應該向注冊服務器登記注冊,以告知其位置、會話能力、呼叫策略等信息。
通常,SIP終端開機啟動或者配置管理員執行注冊操作時,就向注冊服務器發送注冊請求消息(REGISTER),該消息中攜帶了所有需要登記的信息。注冊服務器收到注冊請求消息後向終端發送回應消息,以告知其請求消息已收到。如果注冊成功,就再向終端發送“200 OK”消息。如圖 1所示。
圖 1 UA向Registrar注冊的消息交互

SIP協議采用Client/Server模型,主要通過UA與代理服務器之間的通信來完成用戶呼叫的建立過程。
圖 2 UA通過Proxy Server建立呼叫

如圖 2所示,Telephone A需要呼叫電話Telephone B,兩台路由器作為SIP終端(UA)。當Telephone A撥完電話Telephone B的號碼後,Router A向Proxy Server發送會話請求消息。Proxy Server通過查找Telephone B的號碼所對應的信息,向Router B發送會話請求消息。Router B收到請求後,如果Telephone B可用,就向Proxy Server發送應答,並使Telephone B振鈴。Proxy Server收到應答後,向Router A發送應答消息。這裏所說的應答包括:兩個臨時應答(100 Trying 和180 Ringing)和一個成功應答(200 OK)。整個過程中的消息交互如圖 3所示。
圖 3 UA通過Proxy Server建立呼叫的流程圖
這個例子是一種簡單的應用,隻使用了一個代理服務器。在複雜的應用中,可以有多個代理服務器,以及注冊服務器。
SIP重定向服務器收到會話請求消息後,不是轉發會話請求消息,而是在回應消息中告知被叫SIP終端的地址。主叫終端從而重新直接向被叫終端發送會話請求消息。被叫終端也將直接向主叫終端發送應答消息。呼叫過程的消息交互如圖 4所示。
圖 4 UA重定向呼叫流程圖

這是比較常見的一種應用。從原理上來說,重定向服務器也可以向主叫終端回複一個代理服務器的地址,接下來的呼叫過程就和使用代理服務器的呼叫過程一樣。
SIP是一個應用層的會話協議,與一般協議不同的是,SIP協議可以同時支持各種傳輸協議:
l SIP支持UDP傳輸:UDP是一個無連接的協議,且不提供可靠性。在UDP上建立SIP連接存在不可靠性。
l SIP支持TCP傳輸:增加了SIP報文和語音傳輸的可靠性,通過TCP協議自身的特點為基於SIP的VoIP通信提供了麵向連接和可靠的傳輸。SIP使用TCP傳輸協議後,SIP協議可以不需要考慮報文丟失和重傳問題。
l SIP支持TLS(Transport Layer Security,傳輸層安全)傳輸:SIP支持TCP傳輸僅僅保證了SIP報文和語音傳輸的可靠性,而SIP支持TLS傳輸則保證了SIP報文傳輸的安全性,具體內容請參見“信令加密”。
以上三種傳輸協議各具特點,用戶可以根據實際的應用環境采用不同的傳輸協議,目前不支持呼叫中切換傳輸協議。
TLS本身運行於TCP之上,並且提供了通信雙方身份識別和加密SIP報文的一整套安全方案,為應用層協議服務。建立TLS連接時需要認證雙方用戶的身份,因此用戶雙方必須有各自合法的數字證書,隻有通過認證的用戶才可以進行後續的通信。使用TLS傳輸SIP報文,SIP報文在整個傳輸過程全部被加密,這樣能夠大程度的保護用戶數據不被他人非法竊取,提高了語音通信的安全性。
目前支持的媒體流協議包括:RTP(Real-time Transport Protocol,實時傳輸協議)和RTCP(Real-Time Transport Control Protocol,實時傳輸控製協議)。RTP用於為具有實時特征的數據(如交互音頻和視頻)提供端到端網絡的實時傳輸服務;RTCP用於實時監控傳輸質量,並提供擁塞控製和流控製。RTP和RTCP配合使用,就能以有效的反饋和最小的開銷使傳輸效率更佳。在網絡中媒體流是明文傳輸的,為了保證通信內容的安全性,SRTP協議應運而生。
SRTP(Secure Real-time Transport Protocol,安全RTP協議)通過對RTP/RTCP報文的有效負載進行加密,實現對RTP/RTCP報文的加密、認證以及報文重傳保護。
采用SRTP加密媒體流,首先需要協商加密信息,目前僅支持在SDP(Session Description Protocol,會話描述協議)中通過crypto頭域進行加密協商。發起方將本端支持的加密屬性信息發送給接收方進行協商,協商成功後,接收方返回相應的加密屬性信息。會話建立後,雙方各自使用自己的密鑰加密RTP/RTCP報文,使用對端的密鑰解密對方發送的RTP/RTCP報文。
SDP協商主要包括以下參數信息:
表 2 加密屬性參數
參數名稱 | 參數含義 | 說明 |
Tag | 加密屬性信息標識符,在不同的加密屬性行中的tag值必須不同,接收方根據Tag值來決定使用哪一組加密屬性 | 必選協商參數 |
Crypto-Suite | 加密套件,定義加密和認證使用的算法。目前隻支持AES_CM_128_HMAC_SHA1_80和AES_CM_128_HMAC_SHA1_32兩種套件 | 必選協商參數 |
Key Parameters | 密鑰參數定義密鑰信息,主要包括密鑰生成方法和密鑰值 | 必選協商參數 |
Session Parameters | 會話信息定義了與該會話相關的參數,如密鑰衍生率、UNENCRYPTED_SRTP、UNENCRYPTED_SRTCP、UNAUTHENTICATED_SRTP、FEC等 | 可選協商參數,暫不支持 |
使用SRTP協議加密RTP/RTCP報文時,如果使能加密引擎,則使用加密引擎進行報文加密和認證處理,若未使能加密引擎,則使用CPU進行報文加密和認證處理。
TLS可以保護通話中的控製信令,防止用戶信息被竊取。SRTP協議可以對語音媒體流進行加密和認證等保護措施。兩者可以單獨使用,也可以同時使用,表 3列舉了四種組合方式。
信令是否使用TLS | 媒體是否使用SRTP | 描述 |
是 | 是 | 信令報文是安全的,用戶的個人信息能夠得到有效保護 媒體報文是安全的,用戶的通話內容能夠得到有效保護 推薦使用 |
否 | 是 | 信令報文是不安全的,用戶的個人信息無法得到有效保護 媒體報文是安全的,用戶的通話內容能夠得到有效保護 |
是 | 否 | 信令報文是安全的,用戶的個人信息能夠得到有效保護 媒體報文是不安全的,用戶的通話內容無法得到有效保護 |
否 | 否 | 信令報文是不安全的,用戶的個人信息無法得到有效保護 媒體報文是不安全的,用戶的通話內容無法得到有效保護 |
如圖 5所示,使用QSIG信令的ISDN網絡發起呼叫,跨越SIP網絡到達另一側使用QSIG的ISDN網絡,在此應用中,連接ISDN網絡和SIP網絡的接口網關設備充當了對QSIG信令和SIP信令的互相轉換的功能。目前的此類網關設備大多隻能對基本呼叫信令進行轉換,對於大量的補充業務所涉及到的業務相關QSIG信令消息無法完全進行QSIG和SIP信令間的互相映射,這些都需要使用一種在SIP消息體中封裝攜帶原始的QSIG信令內容的方法和新的流程,這種在SIP消息中以類似隧道的方式傳輸ISDN信令的方法稱為SIP-T協議。
圖 5 SIP承載QSIG信令消息呼叫流程圖

SIP-T協議的核心就是對ISDN消息進行封裝及解封裝。以上圖為例,Router A與Router B之間運行SIP協議,SIP網絡連接兩端ISDN網絡。對於兩端ISDN網絡之間的呼叫,發送端的QSIG信息最終將由入口網關處理,封裝到SIP報文中後再發送給出口網關。接收到SIP報文後,出口網關重新提取在SIP請求中封裝的QSIG信令發送到接收端ISDN側。
和簡單的對QSIG信令和SIP信令消息進行映射相比,SIP-T協議增強了ISDN信令內容的完整性和豐富性,使一端發送的ISDN信令信息可以無損傳輸到跨SIP網絡的ISDN另一側。
目前,設備僅支持在SIP消息中攜帶QSIG信令。
