1、SIP和PSTN是目前結合最為緊密的語(yǔ)音呼叫流程,我們分別介紹一下從SIP到PSTN,從PSTN到SIP兩種呼叫的信令和媒體交互的過(guò)程。
SIP呼叫PSTN的流程,通過(guò)DNS或者ENUM查詢(xún)號碼歸屬地,然后發(fā)起呼叫。
圖例中使用的是SS7局端網(wǎng)關(guān):

PSTN 呼叫SIP的流程,圖例中使用的是SS7網(wǎng)關(guān)處理。

SIP呼叫PSTN的呼叫失敗的流程:

SIP呼叫PSTN,SIP信令的跟蹤消息:

SIP-PSTN跟蹤的消息流程如下:
- UA終端對所注冊的Proxy 發(fā)起一個(gè)INVITE請求。
- Proxy 回復了一個(gè)407 authentication 認證要求,需要UA 發(fā)送用戶(hù)密碼。
- UA 收到 407 響應,然后發(fā)送一個(gè)ACK通知Proxy。
- UA再次發(fā)送一個(gè)INVITE 到所注冊的Proxy,并且這次攜帶了UA的用戶(hù)密碼。
- Proxy 收到UA發(fā)送的用戶(hù)賬號信息,對被呼叫方發(fā)送呼叫信息,然后返回UA一個(gè) 100 trying, 通知UA正在呼叫被呼叫方,等待對方響應。
- Proxy對UA響應一個(gè)183 消息,包含對端的振鈴狀態(tài)信息和早期媒體流。
- Proxy對UA響應200 OK,表示對端已經(jīng)應答此呼叫。
- UA 發(fā)送一個(gè)ACK消息,然后打開(kāi)媒體,創(chuàng )建媒體路徑。開(kāi)始正式媒體互通以后,雙方之間的語(yǔ)音正式建立。其中一方掛機,一定時(shí)間后,Proxy發(fā)送Bye消息,結束呼叫流程。

2、Early Media也叫早期媒體流,這是SIP到PSTN呼叫過(guò)程中經(jīng)常遇到的一個(gè)技術(shù)術(shù)語(yǔ)。在SIP/PSTN網(wǎng)絡(luò )中引入早期媒體流的功能最主要解決兩個(gè)方面的問(wèn)題:
接聽(tīng)前避免呼叫接聽(tīng)時(shí)的前一段語(yǔ)音丟失的問(wèn)題,或提供語(yǔ)音留言等功能服務(wù)。如果增加了早期媒體流的播放,就可以增加了用戶(hù)體驗,用戶(hù)不會(huì )感覺(jué)電話(huà)被打斷。
有時(shí),呼叫方可以通過(guò)早期媒體流來(lái)訪(fǎng)問(wèn)媒體流中提供的語(yǔ)音IVR或者其他基于DTMF的服務(wù)功能。運營(yíng)商或者企業(yè)客戶(hù)可以提供其他的服務(wù)類(lèi)別讓用戶(hù)選擇。
簡(jiǎn)單來(lái)說(shuō),就是在雙方“真人”會(huì )話(huà)還沒(méi)有正式開(kāi)始之前,對呼叫方播放的一個(gè)語(yǔ)音廣播。早期媒體流是一個(gè)非常有用的功能,通常用戶(hù)可以通過(guò)自定義的方式,對呼叫到播放一個(gè)公司語(yǔ)音消息或者其他自定義的語(yǔ)音提示。當然,在早期媒體流也支持視頻文件播放,不僅僅是語(yǔ)音文件。早期媒體流可能是被呼叫方發(fā)起也可能是呼叫方發(fā)起。如果是呼叫方發(fā)起的話(huà),可能發(fā)送到是一個(gè)雙音頻的語(yǔ)音。通常,我們說(shuō)的早期媒體流被呼叫方發(fā)起的語(yǔ)音。

根據上述的描述,用戶(hù)也可能遇到一個(gè)“第一句話(huà)”的問(wèn)題,如果發(fā)起呼叫的終端是SIP,對端終端是模擬電話(huà)的話(huà),有時(shí)可能丟模擬終端第一部分語(yǔ)音的。如果被呼叫方是模擬終端,接聽(tīng)以后,用戶(hù)可能直接拿起電話(huà)就開(kāi)始講話(huà)。但是,此時(shí),SIP終端可能還沒(méi)有收到Proxy返回的200 OK消息,也還沒(méi)有發(fā)送ACK消息到Proxy,媒體流的連接路徑并沒(méi)有打開(kāi),SIP終端沒(méi)有接收到語(yǔ)音內容,所以就丟失了模擬終端第一次講話(huà)的語(yǔ)音內容(這里,模擬終端講話(huà)-How are you today 就丟失了)。在一段時(shí)間后,SIP終端收到200 OK, 然后發(fā)送ACK,媒體通道正式建立以后,雙方才能聽(tīng)到對方真正的語(yǔ)音交互內容。
因為RFC3261僅支持了簡(jiǎn)單的早期媒體流處理機制,除了上面提到的丟失語(yǔ)音以外,可能會(huì )導致其他的問(wèn)題,例如帶寬問(wèn)題和安全問(wèn)題,forking 分拆問(wèn)題。例如,如果呼叫方的INVITE消息經(jīng)過(guò)forked以后,可能最終到達幾個(gè)不同的終端,幾個(gè)不同的終端同時(shí)對呼叫方發(fā)送早期媒體流的話(huà),可能導致呼叫方接收失敗或者迷惑。如果早期媒體流是視頻的話(huà),呼叫方終端可能完全不能接收幾個(gè)不同的早期媒體流文件處理。
事實(shí)上,根據最近的SIP標準和一些技術(shù)研究,早期媒體流的功能實(shí)現有幾個(gè)方面的問(wèn)題需要進(jìn)一步配合各種環(huán)境來(lái)解決,以下三個(gè)方面的因素需要大家最進(jìn)一步的研究:
IPPBX和終端兼容性的問(wèn)題。IPPBX和網(wǎng)關(guān)關(guān)于早期媒體流支持的方式問(wèn)題,例如是否支持Early Offer或Delayed Offer 方式。
Forked INVITEs的問(wèn)題。如果經(jīng)過(guò)了INVITE 經(jīng)過(guò)分拆以后,如何處理不同session返回的消息。這些技術(shù)細節涉及到了不同的服務(wù)器或者提供商,所以,早期媒體流會(huì )發(fā)生完全不同的變化。另外,很多SIP服務(wù)器對按續處理和并行處理的方式對早期媒體流有不同的路由策略,這些策略也會(huì )影響早期媒體流的處理。
NAT和防火墻的問(wèn)題。公司防火墻可能對IP地址和端口做了處理,這樣也會(huì )影響。
在處理早期媒體流媒體丟失的問(wèn)題上,理論上,目前有兩種不同的解決方案,用戶(hù)可以自己去做進(jìn)一步的了解:
- Early-Media Solution Model with Disposition-Type: Early- Session
- Early-Media Solution Model with P-Early-Media:Header
以上兩種方式各有其利弊,并且涉及了很多網(wǎng)絡(luò )環(huán)境中的不可確定的因素,這里不做進(jìn)一步的敘述。
4、Early Offer和Delayed Offer是關(guān)于SDP協(xié)商中涉及的一個(gè)發(fā)送協(xié)商方式,簡(jiǎn)單來(lái)說(shuō),由誰(shuí)發(fā)送SDP的問(wèn)題。因為兩種方式通過(guò)不同的流程提供了SDP包含的消息,所以導致兩種方式的SDP協(xié)商機制也完全不同。以下圖例的終端SDP表示了所支持的編碼能力,此圖例中支持了PCMU,1016,和GSM,視頻編碼包括:H261和H263。

下面,我們看看兩種方式的流程過(guò)程。Early offer 的流程方式:發(fā)起呼叫的終端通過(guò)INVITE攜帶了SDP的消息,包括了支持的語(yǔ)音編碼,接收方選擇其中一種所支持的編碼,然后開(kāi)始進(jìn)行媒體交互。

Delayed Offer 通常是終端發(fā)起INVITE消息時(shí),SDP沒(méi)有攜帶任何編碼支持能力,由對端提供編碼支持能力,通知終端使用所支持的編碼,這樣的話(huà),運營(yíng)商控制著(zhù)編碼的支持能力。大家在很多實(shí)際環(huán)境中也經(jīng)常遇到過(guò)類(lèi)似的場(chǎng)景,為了保證語(yǔ)音質(zhì)量和帶寬的最佳要求,運營(yíng)商要求使用G.729來(lái)支持編碼傳輸,終端PBX只能采用G.729 支持服務(wù)。運營(yíng)商返回了200 OK,并且說(shuō)明使用的編碼。在圖例中,運營(yíng)商通知終端使用G.729, PBX 根據運營(yíng)商要求采用G.729. 最后,媒體創(chuàng )建成功,開(kāi)始正式語(yǔ)音通話(huà)。

除了以上兩種發(fā)送協(xié)商的方式以外,在SDP交互中,還涉及到了 Offer/answer exchanges 的一個(gè)協(xié)商流程,在協(xié)商過(guò)程中涉及了雙方接聽(tīng)呼叫的動(dòng)作順序,業(yè)務(wù)流程變化引起的Updated,這樣也可能導致發(fā)送到SDP消息會(huì )有updated 發(fā)生。具體協(xié)商過(guò)程和指導,請用戶(hù)參考RFC3264 標準。
5、SIP Gateway負責SIP信令到PSTN的交互,媒體流交互的設備。在以下的圖例中,SIP/SDP會(huì )轉換成ISDN/ISUP信令;RTP/RTPC媒體流則會(huì )轉換成TDM語(yǔ)音通道。當然,目前的E1網(wǎng)關(guān)或者單機服務(wù)器(帶語(yǔ)音卡)都可以實(shí)現以下SIP Gateway的功能要求。SIP網(wǎng)關(guān)技術(shù)是一個(gè)非常復雜的技術(shù)要點(diǎn),需要用戶(hù)自己去不斷摸索和使用才能獲得比較全面的了解。這里,我們不做更多介紹。

SIP/PSTN 網(wǎng)關(guān)一體機模式,可以實(shí)現PSTN到SIP的轉換。

SIP/網(wǎng)關(guān)模式功能場(chǎng)景:

當然,因為技術(shù)和業(yè)務(wù)的不斷拓展,目前的SIP gateway 也不僅僅局限于SIP和PSTN之間的交互,出現了更多的支持接口,包括現在的5G。以下圖例是一個(gè)目前比較常見(jiàn)的Gateway方式。

以上章節中,我們介紹了PSTN-SIP的整個(gè)呼叫流程,失敗流程和SIP消息的步驟,然后介紹了早期媒體流的功能和存在的問(wèn)題。在本章節中也介紹了Offer/Delayed Offer 的區別和交互流程,最后介紹了SIP網(wǎng)關(guān)的基本功能。
獲得有價(jià)值的行業(yè)技術(shù)分享,請關(guān)注公眾微信號:asterisk,獲得技術(shù)幫助,請訪(fǎng)問(wèn):www.issabel.cn/forum