轉自 http://www.ring180.com/sip/28-pstn-interworking/59-sip Thursday, 22 January 2009 03:46 銳音通訊
1、早期媒體
無論是在PSTN還是在VoIP網路中,一個呼叫的最終目的讓兩個使用者進行交談(conversation)。這裡我們將由使用者之間的交談所產生的媒體稱為常規媒體(“regular media”)。
早期媒體(“early media”)是與常規媒體相比而言的。
通常,主叫使用者發起呼叫後使用者交談並不會立即開始(甚至可能最終沒有開始),等待時間一般是幾秒到幾十秒,這完全取決於被叫使用者的何時應答。在被叫應答之前,主叫使用者與網路之間也可以有媒體流產生,與常規媒體相區別,這種媒體被稱為早期媒體。 最典型的早期媒體就是回鈴音。其他形式的早期媒體還有排隊提示等等。早期媒體通常都是單向的(網路>主叫),在SIP中也可能會有雙向的早期媒體。
2、早期媒體的傳送
要傳送媒體首先要建立一個媒體會話(Session)。建立媒體會話實際上就是通過SDP offer/answer交換進行就會話的媒體參數進行協商的一個過程。在SIP中,媒體會話的建立過程通常首先伴隨著一個SIP對話(Dialog)的建立過程,一般情況下,媒體會話和SIP對話是同時建立的(通過SIP 200或ACK訊息攜帶SDP answer)。這種情況下,媒體會話直到被叫使用者摘機以後才能建立起來,只能使用者傳送使用者媒體,顯然無法傳送早期媒體。
要傳送早期媒體,必須在SIP對話尚未完全建立之時,即所謂的SIP早期對話狀態,完成媒體會話的建立。
怎樣在早期對話狀態建立媒體會話呢。SIP中支援兩種做法。
這兩種做法的關鍵不同在於:是否將傳送早期媒體的會話與傳送之後的通話媒體的會話明確地劃分清楚,區別開來。具體到協議上看,兩種做法都利用了200之前的SIP訊息,比如1xx-rel、PRACK、Update等等,來傳送SDP offer/answer, 但是這些SDP offer/answer在SIP訊息中的標明類型和處理指示是不同的。
做法1沒有明確區分出用於早期媒體的會話,實際上始終只有一個會話。具體到協議上看,用於建立(或修改)這個會話的SDP offer/answer 在SIP訊息中的處理指示都是“Session”。
做法2專門建立一個用於傳送早期媒體的會話,並稱之為早期會話(“early-session”)。具體到協議上看,用於建立(或修改)早期會話的SDP offer/answer SIP 訊息中的處理指示是“early-session”。並且,在一個SIP訊息中可以同時攜帶處理指示分別為“Session”和“early-session”的兩個SDP訊息,各自獨立地用於早期會話的協商和正常會話的協商。
如下圖所示。在做法1中,用同一個會話(在不同的時間段裡)來傳送早期媒體和通話媒體。在被叫摘機之前,這個會話可用於傳送早期媒體,在被叫摘機之後,這個會話又用於傳送通話媒體。倘若早期媒體和通話媒體的參數不同的話,需要重新進行媒體傳輸參數的協商,這需要一定的時間,可能會帶來媒體刪剪(media clipping)的問題。在做法2中,同時會存在兩個會話,分別用於傳送早期媒體和通話媒體,在被叫摘機之後,終端可以迅速從早期會話切換到正常會話,不會帶來媒體刪剪的問題。
根據它們的適用情境的不同,這兩種做法分別被稱為網關模式和應用伺服器模式。
3、回鈴音的產生
一個呼叫被發起之後,當被叫終端響鈴時,主叫也會聽到某種聲音,提示正在等待被叫應答,這就是所謂回鈴音。回鈴音通常是某種標準的音頻訊號,也可能是被叫使用者指定的某種特殊的音效檔,例如音樂等等。在PSTN中,回鈴音通常是被叫的本地交換器產生,然後通過已建立的單向話路傳送給主叫話機,由主叫話機播放給主叫。
在SIP網路中,被叫側可以早期媒體的形式向主叫提供回鈴音(如果被叫側不提供回鈴音,則主叫SIP終端會在本地產生回鈴音)。究竟使用前面所述的兩種做法的那一種來傳送早期媒體,下面分別討論。
3.1.網關模式
網關模式適用於被叫(即UAS)為一個SIP網關的情形。具體的可能的情況通常如下圖所示:一個使用者在SIP終端上呼叫一個PSTN使用者,這個呼叫通過了一個SIP網關。就SIP呼叫而言,網關是被叫。
在這裡,回鈴音是由PSTN網產生的。但是在SIP域,SIP網關需要以早期媒體的形式將從PSTN網路收到的回鈴音媒體傳送給主叫SIP終端。
這種情況下,從SIP域來看,回鈴音媒體流和之後的被叫媒體流的產生是同源的,都在SIP網關上。當被叫使用者摘機時,回鈴音媒體流自然地變成了使用者媒體流,因此可以使用網關模式,而不會帶來媒體刪剪的問題。
信令流程如下圖:
其中訊息簡單說明如下:
1) INVITE請求中含有SDP offer,其處置類型為“Session”。
網關收到INVITE後向PSTN發送IAM訊息,然後在PCM話路上收到回鈴音,同時在信令上收到ACM訊息。
2) 183響應中含有SDP answer,其處置類型為“Session”。
此時,UAC與網關之間媒體會話建立,同時將回鈴音在這個會話上傳送給UAC。
3) UAC發送PRACK
4) 網關返回針對PRACK的200響應。
5) 被叫使用者應答,網關收到ANM後向SIP UAC返回200 INVITE響應。同時到SIP UAC上的會話上的回鈴音自動變成了從PSTN上收到的使用者話音。主被叫使用者開始雙向通話
6) SIP UAC發送ACK。
3.2.應用伺服器模式
應用伺服器模式適用於被叫(即UAS)是一個應用伺服器的情形。具體的可能的情況通常如上圖所示:一個SIP使用者希望由電訊廠商網路(而非終端)來產生回鈴音。電訊廠商通常使用網路上的一個MRF資源提供回鈴音,並且需要一個應用伺服器其來控制回鈴音的產生。
這種情況下,回鈴音媒體流與之後的被叫媒體流分別在MRF與被叫SIP終端上產生,顯然是不同的源。如果使用網關模式的話,將回鈴音媒體切換為被叫媒體流必須在會話上進行媒體更改,媒體更改不能立即完成,這將會帶來媒體刪剪的問題。
使用應用伺服器模式,則是同時建立了兩個會話,將回鈴音媒體切換為被叫媒體流可以通過將當前會話從早期會話切換到正常會話上即可,能夠立即完成。
信令流程如下圖:
簡單說明如下:
1) INVITE請求中攜帶一個SDP作為常規會話的offer
其Supported頭域中包含一個選項標籤“early-session”,表示主叫終端支援早期會話。
2) INVITE請求中攜帶之前收到的offer
3) 183響應中攜帶一個SDP作為常規會話的answer。
4) 183中含有兩個SDP:
a) 一個是之前從被叫那裡收到的,作為常規會話的answer;
此時常規會話被建立,但並沒有媒體被傳送。
b) 另一個作為要建立的早期會話的的offer.
5) PRACK中攜帶一個SDP,作為早期會話的answer
此時早期會話被建立,且有被早期媒體(回鈴音)傳送。
6) AS向被叫發送PRACK
7) 被叫向AS返回200 PRACK
8) AS向主叫返回200 PRACK
9) 被叫摘機,向AS發送200響應
10) AS向主叫發送200響應
此時常規會話上將會有媒體傳送,主叫UA播放常規會話上的媒體。
4、關於目前多媒體彩鈴的實現的簡單說明
目前中國網通及中國移動的多媒體體彩鈴業務的實現都主要採用了網關模式的實現方案(詳細流程參見相關技術規範),原因是很多SIP終端都不支援“early-session”選項標籤,無法使用應用伺服器模式。
實際上,採用網關模式實現彩鈴會導致媒體刪剪等一些問題,最終應該會逐步過渡到理想的方案 – 應用伺服器模式。