對話啟動協定
網際網路協定套組 |
---|
應用層 |
傳輸層 |
網路層 |
連結層 |
對話啟動協定(Session Initiation Protocol,縮寫SIP)是一個由IETF MMUSIC工作群組開發的協定,作為標準被提議用於建立,修改和終止包括影片,語音,即時通訊,線上遊戲和虛擬實境等多種多媒體元素在內的互動式使用者對談。2000年11月,SIP被正式批准成為3GPP訊號協定之一,並成為IMS體系結構的一個永久單元。SIP與H.323一樣,是用於VoIP最主要的信令協定之一。
協定設計
SIP最早由Henning Schulzrinne和Mark Handley於1996年所設計. SIP的設計目標之一是提供類似公用交換電話網(PSTN)中呼叫處理功能的擴充集。在這個擴充集中,實現類似日常電話的操作:撥號,振鈴,回鈴音或者忙音,只是實現方式和術語有所不同。
SIP也實現了許多七號信令系統(SS7)中更進階的呼叫處理功能,儘管這兩個協定相差很遠。SS7是一個高度集中處理的協定,其特點表現為高複雜度的中心網路結構和無智慧型的啞終端(傳統的電話機)。SIP則是一個對等協定,所以它只需要一個相對簡單的(因此也高度可延伸的)核心網路,而將處理工作下放給連接在網路邊緣的智慧型端點(裝有硬體或軟體的終端裝置)。SIP的許多功能在端點中實現,這與傳統的SS7將其在網路核心裝置實現的作法大異其趣。
儘管有許多其它的VoIP訊號協定存在,SIP的特點在於它的支持者植根於IP團體而不是電信產業。SIP最初由IETF標準化和管理,而H.323VoIP協定則從傳統上與ITU有著更多的聯絡。儘管如此,這兩個組織對兩個協定在某些方面都相互認可。
SIP與許多其它的協定協同工作,僅僅涉及通訊對談的信令部分(control message)。SIP報文內容傳送對談描述協定(SDP),SDP協定描述了對談所使用串流媒體細節,如:使用哪個IP埠,採用哪種編解碼器等等。SIP的一個典型用途是:SIP「對談」傳輸一些簡單的經過封包的即時傳輸協定流。RTP本身才是語音或影片的載體。
第一個被提議的標準版本(SIP 2.0)在RFC 2543中定義。在RFC 3261中對這個協定有更深入的解釋,儘管目前許多裝置仍然是參考以前的過渡版本而實現的。注意現在的版本還是2.0。
SIP同HTTP相似並採用了後者的一些設計原則:SIP報文是人類可讀的,並且也是採取請求-應答的流程。SIP的倡導者宣稱它比H.323簡單。但是,有些人則保留地認為儘管SIP的原始目標很簡單,現在它已經演變得跟H.323一樣複雜了。SIP借用了許多HTTP狀態碼,如常見的'404 not found'。SIP的發起者說:曾經在網路上出現的急速革新和應用發展的歷史將同樣發生在電話產業上。SIP和H.323對語音通訊毫無限制,能夠傳輸從語音到影片的任何通訊對談,甚至未來還沒有設想的應用。
SIP網路單元
使用者代理(User Agent)
SIP使用者代理是一個SIP邏輯網路端點,用於建立、傳送、接收SIP訊息並管理一個SIP對談。SIP使用者代理又可分為使用者代理客戶端UAC(User Agent Client)和使用者代理伺服器端UAS(User Agent Server)。UAC建立並行送SIP請求,UAS接收處理SIP請求,傳送SIP回應。
代理伺服器(Proxy)
SIP代理伺服器(PROXY)在網路上位於SIP UAC和UAS之間,用於幫助UAC和UAS間的訊息路由。PROXY也可以執行路由策略控制(比如,檢查SIP訊息的合法性,確認訊息是否被路由允許)。PROXY在轉發SIP訊息時,可能根據需要修改SIP訊息的某些部分。
註冊伺服器(Register)
SIP註冊伺服器用於接收SIP註冊請求,並儲存傳送註冊請求的UA的位置資訊。
SIP網路部件
擁有傳統的電話機外表,觸感和形狀的硬體,但使用SIP和RTP通訊的終端和裝置,已經有多家廠商可以供貨。這些產品中有些可以通過電子配號(ENUM)來把現存的電話號碼翻譯成使用DNS的SIP位址,所以即使你的服務商運營的網路還只是為傳統電話號碼服務的PSTN(並且對你收費),你也可以通過這些電話網路呼叫其它的SIP使用者。
現在,軟體SIP終端已經非常常見。微軟公司的Windows Messenger使用了SIP。2003年6月,蘋果電腦宣布並向公眾發布了測試版的iChat AV,一個新版的相容AOL Instant Messenger並支援通過SIP進行音影片聊天的客戶端。
SIP要想成為實用的服務同樣需要代理和註冊網路部件。儘管兩個SIP終端可以不藉由任何SIP基礎設施的支援來進行通訊(這也是為什麼SIP被稱為對等的協定),但是這種方式是不適於實際的公共服務。現在已經有了很多公司提供軟交換系統(如Nortel,Sonus等許多公司)。其他的一些以Ubiquity Software和Dynamicsoft為首的公司已經實現了一些基於被提議的標準,建立在JavaJAIN規範上的產品。
來自RFC:
- "SIP使用代理伺服器(Proxy server)的部件來協助轉發信令報文到目標使用者目前網路位置,提供使用者認證和授權服務,實現服務提供商的呼叫路由策略,和提供給使用者各種附加功能。"
- "SIP同樣提供了註冊功能以允許使用者上傳他們目前的聯網位置供代理伺服器使用。"
- "因為註冊動作在SIP協定中扮演重要的角色,掌控使用者註冊資訊的[ 使用者代理伺服器]有一個特殊的名字註冊伺服器(registrar)。"
- "有一個重要的概念,那就是各種SIP伺服器之間的區別是邏輯上的,而不是物理上的。"
即時訊息(IM)和Presence
一個基於SIP標準針對及時資訊的擴充,被稱為SIMPLE已經被提議並正在開發中。SIMPLE可以傳遞Presence資訊:被叫使用者是否有意願加入對話?使用終端是否有能力加入對話?。Presence資訊的角色如同MSN Messenger和AIM、等IM客戶端中已普遍實現的好友狀態功能。
已經有人在努力把基於SIP的VoIP和Jabber使用的XMPPpresence規範整合在一起。最著名的是將XMPP擴充到整合語音的Google Talk,它計劃整合SIP。Gizmo工程,曾經實現了SIP,現在已經在他們的客戶端和服務中加入了XMPP。
商業應用
用於搭載媒體流的即時傳輸協定(RTP)並不能簡單的穿越NAT路由器。大部分SIP客戶端可以通過STUN的協助穿越完全圓錐形和埠限制圓錐形NAT但對於對稱的(symmetric)NAT還是有問題。 一些較新的帶ALG功能的路由器,現在可以辨識SIP通訊並讓其通過。RTP代理伺服器,一種在上世紀九十年代普遍使用的類似於HTTP代理伺服器的專用於SIP的線速處理器,可以啟用CALEA並穿越老式的無法辨識SIP的NAT裝置。
正如它的發明者所預見的,SIP的對等特性無法使用一些網路本身提供的服務。例如,網路不能很容易的支援合法的呼叫偵聽(在美國由法律控制的竊聽,CALEA)。緊急呼叫(在美國呼叫E911)難以路由。因為IP終端本身具有行動性,網路並沒有任何定位的能力,要確定正確的公共服務應答點PSAP很困難。然而,當商業SIP服務商們正準備放棄時,一些實用的解決方案卻在進行試驗。由3GPP和3GPP2等公司開發的標準定義了基本SIP模型的一些應用,這些應用推動了商業化並支援了網路中心的能力,如CALEA。
Vonage和SIPphone等公司是消費SIP的先鋒,他們擁有一個快速增長的使用者基礎。一些較大的公司,如AT&T和Level(3)也不甘示弱。傳統的電信工業(包括朗訊科技和北電網路)現在都在集中開發基於SIP架構模型和擴充的系統,如3GPP的IP多媒體子系統(IMS)。
一些VoIP電話公司,如BroadVoice,允許使用者使用它們自己的SIP裝置,包括相容SIP的電話機,AsteriskPBX,或者軟電話。新的消費SIP裝置市場正在繼續膨脹。
開源團隊開始提供越來越多的建立終端,代理和註冊伺服器所需的技術,既讓這些技術走進了人們的日常生活,又加速了其向全球推廣。SIPfoundry(頁面存檔備份,存於網際網路檔案館)已經開發了多種SIP協定疊,客戶端應用程式和SDK,還有一整套可以與市場上大部分由廠商銷售的IP PBX實現相競爭的IP PBX解決方案。
軟體
- SIP通訊方案:
- 3Com SIP PBX - 基於SIP的企業級IP電話應用套件(頁面存檔備份,存於網際網路檔案館)
- Asterisk開源SIP/IAX PBX(頁面存檔備份,存於網際網路檔案館)
- Brekeke OnDO PBX(頁面存檔備份,存於網際網路檔案館)
- Microsoft Office Live Communications Server
- pbxnsip PBX(頁面存檔備份,存於網際網路檔案館)
- Rostrvm Switchless - 使用SIP的呼叫中心架構(頁面存檔備份,存於網際網路檔案館)
- sipX - 開源的SIP PBX(頁面存檔備份,存於網際網路檔案館)(帶商業支援Pingtel(頁面存檔備份,存於網際網路檔案館).)
- FreeSWITCH開源軟交換解決方案
- SIP伺服器:
- Micromethod SIPMethod Platform
- Ubiquity SIP應用伺服器
- 3Com VCX IP電話模組:背靠背使用者代理SIP PBX(頁面存檔備份,存於網際網路檔案館)
- BEA WebLogic SIP伺服器(頁面存檔備份,存於網際網路檔案館)
- Brekeke OnDO SIP伺服器(頁面存檔備份,存於網際網路檔案館),適用於Windows,Linux,和Mac OS X。用於個人和教育用途免費。
- Cisco SIP代理伺服器(頁面存檔備份,存於網際網路檔案館)
- Nortel SIP多媒體通訊伺服器5200[永久失效連結]
- IPTel.org 免費軟體SIP Express Router路由器[1]
- Pingtel Call Manager(基於SIP Foundry開源)
- FreeSWITCH開源軟交換平台(頁面存檔備份,存於網際網路檔案館)
- SIP客戶端:
- ekiga(頁面存檔備份,存於網際網路檔案館): Ekiga是全功能的SIP和H.323相容的VoIP、IP電話和視訊會議應用程式,它允許您與遠端使用者通過使用SIP和H.323硬體或軟體進行音訊及影片通話。
- GNOME Meeting: H323和SIP客戶端(目前版本1.3-opal)for GNU/Linux。
- Gizmo Project: SIPphone.com提供,適用於Mac OS X,Windows和Linux。
- sipXphone - 一個適用於Windows和Linux的SIP客戶端(頁面存檔備份,存於網際網路檔案館)
- PhoneGaim SIP免費軟體,基於Gaim。
- X-Lite一個流行的Windows和Linux軟電話,可以完全免費使用。
- eyeBeam與X-Lite出自於同一家公司,功能更為強大,需要付費使用。
- KCall一個使用Qt庫的Linux軟電話。
- KPhone一個使用Qt庫的Linux軟電話。
- Linphone一個使用GTK庫的Linux軟電話。
- Pingtel SIP soft phone(單使用者版,企業版和用於嵌入式的OEM版。OEM版嵌入到Earthlink Vling服務中。)
- SJPhone(頁面存檔備份,存於網際網路檔案館)一個免費的SIP客戶端,可以執行在Mac OS X,Windows,PocketPC和Linux上。
- Jajah一個免費的Softphone,執行在Windows上,Mac OS X和Linux版本稍後推出。
- OpenWengo一個開源的SIP客戶端,執行在Windows和Linux上。Mac OS X和PocketPC版本稍後推出。
- SFLPhone一個開源的SIP客戶端。
- ZAP一個開源的,基於XUL的SIP客戶端。
- SIP測試工具:
- SIP協定疊:
6種SIP協定疊各有千秋,OPAL有發展潛力,VOCAL比較完善,sipX相容性好,ReSIProcate比較穩定,oSIP小巧而快速,Sofia-SIP簡短、組件化到位。