SIP(Session Initiation Protocol,會話發起協議)是VoIP(Voice over Internet Protocol,IP語音)技術中最常用的協議之一。它是一種應用層協議,與其他應用層協議一起工作,控制Internet上的多媒體通信會話。
1. VoIP技術
在進一步討論之前,我們先了解一下VoIP。能夠通過因特網傳輸語音和視頻電話的系統被稱為VoIP或商務電話系統。VoIP本身不是一種協議。相反,它是所有使用IP傳輸語音和視頻信息的技術的總稱。VoIP的主要內涵如下:
- VoIP是一種允許您通過Internet傳遞語音和多媒體(視頻、圖片)內容的技術。這是一種隨時隨地都可以使用互聯網的最廉價的通信方式。
- VoIP的優勢包括:
- 低成本
- 便捷(可移植性強)
- 靈活
- 支持視頻會議
- 不需要額外電纜
- 對於一個VoIP電話,所需要的只是一台連接互聯網的電腦/筆記本電腦/手機。VoIP呼叫過程如圖1所示。
圖1:VoIP電話工作過程
2. SIP協議
1)SIP協議位置
SIP是一種應用層協議,是因特網上現代交互通信(語音通話、視頻通話等)的基礎。在OSI模型中所處第7層位置,具體如圖2所示。
圖2:SIP處OSI模型第7層位置
2)SIP協議功能
SIP是一種與媒體無關的協議——它不是語音,不是視頻,也不是數據——它可以是任何東西。雖然它主要應用於VoIP,但它不是一個VoIP協議。SIP只是發起和終止IP通信會話,該會話可以是兩人之間的語音通話,也可以是團隊之間的視頻會議。它通過在兩個或多個已識別的IP端點(也稱為SIP地址)之間發送消息(以數據包的形式)來建立會話。每個SIP地址都連接到一個物理SIP客戶端(如IP桌上電話)或一個軟件客戶端(如軟電話)。圖3描述了SIP會話的初始細節。INVITE是一個SIP消息,用於請求來自另一個SIP客戶機的參與。類似於電子郵件地址的文本塊是參與者的SIP地址。
圖3:SIP 請求信息示例
在這些會話期間,SIP不編碼、解碼或傳輸任何信息。這就是為什么它可以用於視頻會議、即時消息以及在互聯網上打電話。我們暫時將SIP的其他用途放在一邊,而將重點放在該協議在語音通話期間是如何工作的。
3)SIP在VoIP呼叫中如何工作
SIP在VoIP呼叫期間不能單獨工作。需要其他幾個協議與它一起工作,以確保語音數據到達目的地。會話描述協議(SDP)就是這樣一種協議。當SIP與IP端點通信以交換數據時,SDP傳遞與會話相關的信息以幫助參與者加入或接收會話。它發送三種類型的信息:會話描述、時間描述和媒體描述。SDP本身並不傳輸這些細節。相反,會話描述是作為SIP消息的有效負載包含的。
在通過網絡傳輸之前,語音信息使用將音頻信號轉換成二進制數據的編解碼器進行編碼。許多編解碼器都用於此目的,但最常見的兩種是:
- G.711編解碼器:用於未壓縮的數字語音。音頻質量比其他編解碼器更好,但它使用更多的帶寬。
- G.729編解碼器:用於壓縮語音。它降低音頻質量,以減少傳輸數據量和由此產生的帶寬消耗。
音頻數據的編碼包由實時傳輸協議(real-time transport protocol,RTP)承載,RTP是一種專門的應用層協議,用於音頻和視頻數據的實時流。RTP會話獨立於SIP協議。與SDP不同,RTP會話與SIP會話並行運行,SDP是SIP的有效負載。RTP與RTP控制協議RTCP (RTP control protocol)協同工作,RTP協議交換與服務質量相關的信息,包括交換的數據包數、丟失的數據包數、往返延遲時間等。通過RTCP詳細信息,可以監控會話的服務質量。RTCP信息不與RTP數據流混合,而是通過與RTP流並行運行的獨立會話進行傳遞。如圖4所示為三個參與者在一個VoIP會話中交換RTP和RTCP數據包。
圖4:在VoIP會話里的RTP和RTCP數據流
RTP、RTCP和SIP(帶SDP負載)數據包通過傳輸層協議傳輸到它們的目的地。其中TCP和UDP是最常用的兩種協議。
- Transmission control protocol (TCP):按順序傳輸數據包。對於發送的每個包,接收端發送回一個接收確認包。如果確認信息包在一定時間內沒有被接收,或者它聲明有問題,那么原始信息包將被重新發送。TCP的設計是為了保證數據的准確性,確保數據報文按照原始的順序發送。
- User datagram protocol (UDP):傳輸數據,不檢測亂序報文或重傳丟失報文。數據包不僅可能以錯誤的順序發送,還可能被完全忽略。UDP的主要目的是使數據包盡快送到目的地。
由於UDP側重於實時數據傳輸,因此它比TCP更適合VoIP呼叫。雖然UDP中丟失和亂序的數據包會導致輕微的音頻質量問題,但在許多情況下,這些是人類的耳朵無法檢測到的。此外,TCP數據包的重新排序和重傳所造成的延遲可能會導致音頻質量差,甚至通話中斷。如圖5所示為兩個端點之間的VoIP呼叫框架。
圖5:兩個終端之間VoIP呼叫框架
如果SIP所做的只是建立和取消呼叫,那么它為什么如此重要。其實電信行業已經將SIP作為VoIP通信的首選協議進行了標准化,這正是因為SIP本身並不參與編碼和傳輸數據。它只是在網絡上建立一個會話。而且,隨着時間的推移,為支持VoIP而編寫的協議變得過時了,每次需要修改的時候,協議都必須重寫,這是一個挑戰。但SIP有助於克服這一挑戰。它被設計成一個標准協議,其中另一個標准定義了您要移動的媒體——因此您不必再次重寫協議。
3. SIP中繼(SIP Trunking)
與SIP中繼相比,您可能更熟悉“business VoIP”這個術語。雖然VoIP是一個更廣泛的術語,但SIP中繼是VoIP電話系統工作方式的核心部分。使用VoIP系統,電話是通過互聯網而不是傳統的電話線傳輸的,這就是為什么像Skype這樣的服務可以提供免費通話。但是,當VoIP用戶想要撥打連接到傳統電話網而不是互聯網的電話時,會發生什么呢?答案是什么都沒有——除非企業擁有SIP中繼服務。SIP中繼是一種將基於Internet的VoIP系統與電話網絡連接起來的服務,從而消除了對傳統固定電話或數字電話業務的需求。由於SIP建立在Internet協議組上,而不是傳統電話網絡中使用的通信接口上,因此必須對SIP消息進行編碼,以便到達電話網絡上的端點。此外,電信運營商對通過電話網絡傳輸的電話按分鍾收費,而他們通常只對互聯網服務收取固定的月費。由於這些原因,需要SIP中繼來通過VoIP系統撥打和接收電話。SIP中繼不是一根物理電話線,而是公司(稱為SIP提供商)通過您的互聯網連接提供的一種服務。它是這樣工作的:你使用寬帶網絡把你的VoIP電話系統連接到你的SIP供應商的網絡上。然后,提供商可以通過您的電話系統上的擴展連接到和從傳統電話網絡的通話。圖6高度簡化了SIP端點之間的呼叫與通過SIP中繼進行的呼叫的區別。
圖6:SIP之間呼叫和SIP中繼區別
與舊的數字語音服務,如PRI (Primary Rate Interface)服務不同,SIP中繼實際上不需要你為單獨的中繼線付費。這種服務不是按每條線路定價,而是根據您的業務通常在同一時間撥打和接聽的最大電話數量定價。
SIP中繼的優勢:
- 同一VoIP系統下的辦公室間免費通話。SIP提供商通過互聯網在辦公室之間路由電話,因此不必為它們支付每分鍾的費用。辦公室之間的免費電話可以為企業節省大量成本,尤其是那些在多個國家設有辦事處的企業。
- 優惠費率,特別是國際長途。IT咨詢公司Delphi, Inc.的總裁、電信行業新聞網站No Jitter的作者Gary Audin觀察到,使用SIP中繼,企業可以節省高達75%的國際通話費用。
- 靈活功能。傳統干線的容量是固定的。例如,在PRI中繼上,有23個通道可以同時用於通話。如果業務需要同時處理24個電話,那么將需要訂購一個全新的中繼——即使有時只能使用它的23個頻道中的一個。使用SIP中繼,供應商可以增加或減少幾乎可以實時處理的同時呼叫的數量,這樣就不用為沒有充分使用的線路付費。