
為了讓讀者更多了解IMS網(wǎng)絡(luò)中SIP的工作流程,也為了配合我們的SIP系列講座,所以今天我們專門做一個關(guān)于IMS網(wǎng)絡(luò)的介紹。首先說明,IMS網(wǎng)絡(luò)是一個非常復(fù)雜的網(wǎng)絡(luò),如果討論這個話題的話,需要耗費很多精力,筆者能力有限很難給予讀者一個非常完整詳細(xì)的IMS網(wǎng)絡(luò)的解釋。所以,我們僅討論和SIP語音呼叫相關(guān)的IMS核心模塊和呼叫流程。網(wǎng)絡(luò)有很多非常專業(yè)的技術(shù)討論,讀者可以參考專門的資料去學(xué)習(xí)。
因此,在本章節(jié)中,我們將重點介紹LTE的網(wǎng)絡(luò)架構(gòu)背景知識,IMS的核心模塊功能,SIP在IMS的注冊工作流程,SIP在IMS的幾個重要參數(shù)介紹,SIP在VoLTE的呼叫流程,Precondition和開源IMS平臺等內(nèi)容。

1、首先讓我們介紹一下LTE的基本架構(gòu)和其核心的模塊功能。以下圖例是一個比較抽象的一個移動網(wǎng)絡(luò)架構(gòu)圖。在以下圖例中我們可以看到,整個網(wǎng)絡(luò)架構(gòu)包括了幾個核心的模塊功能,它們是:UE終端,eNodeB設(shè)備,RAN無線接入網(wǎng)絡(luò),LTE網(wǎng)絡(luò),GW(接入IP核心網(wǎng)絡(luò)的gateway)。運營商的核心網(wǎng)絡(luò)通過Gateway來實現(xiàn)對接。這里,我們可以看到,手機終端首先啟動,然后找到自己的網(wǎng)絡(luò),接入到LTE網(wǎng)絡(luò),通過GW實現(xiàn)所有簽權(quán)認(rèn)證,然后可以實現(xiàn)對其他User的呼叫。這里,筆者提醒讀者,當(dāng)我們寫這個章節(jié)時,所引用的內(nèi)容可能已經(jīng)過時,例如現(xiàn)在的5G技術(shù)和其他的傳輸方式。如果讀者有興趣的話,可以參考3GPP的一些標(biāo)準(zhǔn)來做進一步的研究。此組織官方網(wǎng)站可以獲得最新的技術(shù)信息。

2、讀者通過上面圖例可以看到,用戶在接入網(wǎng)絡(luò)時,需要經(jīng)過兩個核心的模塊,他們是RAN和EPC。現(xiàn)在讓我們進一步了解一下網(wǎng)絡(luò)中的核心內(nèi)容RAN和EPC的功能和執(zhí)行流程。EPC的全稱是Evolved Packet Core,它是LTE的核心要素,負(fù)責(zé)其他主要模塊的功能實現(xiàn)。
以下圖例中介紹了UE如何通過RAN來接入到LTE網(wǎng)絡(luò),然后實現(xiàn)真正的業(yè)務(wù)支持。

讓我們結(jié)合具體的模塊介紹一下UE注冊LTE網(wǎng)絡(luò)實現(xiàn)業(yè)務(wù)流程的幾個主要步驟:
首先UE通過RAN無線接入網(wǎng)絡(luò),連接到MME。MME全稱是Mobility Management Entity,它負(fù)責(zé)控制移動和UE的安全訪問等控制流程。
然后MME查詢HSS服務(wù)器,進行簽權(quán)認(rèn)證查詢服務(wù),獲得用戶相關(guān)信息。HSS負(fù)責(zé)用戶訂閱的相關(guān)權(quán)限和服務(wù)信息。HSS全稱是Home Subscriber Server,主要是支持移動管理,呼叫和會話創(chuàng)建等功能。這里的HSS取決于運營商的部署配置,一般可能通過多臺數(shù)據(jù)庫服務(wù)器來實現(xiàn)。
MME連接到SGW,通過SGW獲得路由和傳輸IP數(shù)據(jù)的信息。SGW負(fù)責(zé)UE內(nèi)部設(shè)備連接外部的網(wǎng)絡(luò)。
RAN網(wǎng)絡(luò)會提供一個UE的Bearer 能力支持的控制,通過PGW實現(xiàn)IP地址獲取,連接外部的IP網(wǎng)絡(luò),并且實現(xiàn)數(shù)據(jù)策略控制,計費控制等功能。通過PGW就可以實現(xiàn)IP網(wǎng)絡(luò)的連接和IMS核心網(wǎng)絡(luò)的連接。
UE用戶可以需要實現(xiàn)執(zhí)行Default bearer的信令控制流程,信令成功連接以后,開始實行數(shù)據(jù)的服務(wù)功能。要求支持的QCI=5是對其語音質(zhì)量的規(guī)定,關(guān)于QCI的知識,我們在以前的QOS講座中有所介紹,用戶可以參考。Dedicated Bearer實現(xiàn)對數(shù)據(jù)的控制(連接網(wǎng)絡(luò)),用戶就可以通過IP網(wǎng)絡(luò)實現(xiàn)對外部網(wǎng)絡(luò)的其他業(yè)務(wù),例如Skype聊天,連接WebRTC等業(yè)務(wù)。當(dāng)然,用戶是否開啟這些服務(wù),取決于運營商的服務(wù)類型,一般情況下,運營商當(dāng)然希望使用自己本身的服務(wù),可能有的運營商關(guān)閉了一些服務(wù)。這需要用戶看具體的運營商場景。
這里,讀者要注意,因為我們沒有涉及非常細(xì)節(jié)的網(wǎng)絡(luò)介紹,可能有的新讀者有一點迷惑,把LTE網(wǎng)絡(luò)和IMS混為一談。事實上,通過上面的圖例我們可以看到,PGW連接到IP網(wǎng)絡(luò)以后,從開始真正進入IMS服務(wù)的場景中。所以,讀者一定要注意HSS和PGW的邊界。
3、前面我們介紹來UE如何實現(xiàn)LTE網(wǎng)絡(luò)的連接。如果UE要實現(xiàn)SIP業(yè)務(wù)需求的話,需要經(jīng)過IMS網(wǎng)絡(luò)。IMS 和傳統(tǒng)其他的網(wǎng)絡(luò)服務(wù)比較,它提供了更加豐富的功能,并且集成了所有以前傳統(tǒng)的網(wǎng)絡(luò)的服務(wù)功能,例如語音,視頻,游戲,短信和在線服務(wù),電話會議等服務(wù)功能,使用一個IP網(wǎng)絡(luò)可以實現(xiàn)用戶擴容,呼叫控制等功能。SIP注冊呼叫需要經(jīng)過以下幾個核心模塊的處理才能完成正式的注冊呼叫。

我們根據(jù)以上圖例中紅色部分標(biāo)志的模塊,對這些模塊進行一個簡單的介紹:
- CSCF功能負(fù)責(zé)控制呼叫會話管理(Call Session Control Function),包括對模塊有I-CSCF,S-CSCF和P-CSCF。
- S-CSCF(Serving CSCF)負(fù)責(zé)注冊功能和管理會話。
- P-CSCF(Proxying CSCF)配合S-CSCF工作,負(fù)責(zé)SIP會話創(chuàng)建。這里一定要注意,P-CSCF是UE進入到IMS的第一個節(jié)點。
- I-CSCF(Interrogating-CSCF)是從外部網(wǎng)絡(luò)進入到IMS網(wǎng)絡(luò)的入口,負(fù)責(zé)呼入呼叫的處理,同時配合ENUM/DNS進行查詢服務(wù)。
- HSS(Home Subscriber Server)負(fù)責(zé)數(shù)據(jù)庫查詢對用戶身份和所支持的服務(wù)進行查詢確認(rèn)。它通常配合AAA服務(wù)器進行簽權(quán)和認(rèn)證查詢。有的運營商把在IMS網(wǎng)絡(luò)和EPC網(wǎng)絡(luò)各自部署一臺HSS,有的運營商則單獨合并為一臺HSS服務(wù)器。我們這里所使用的就是一臺HSS服務(wù)器來輔助IMS和EPC一起工作。
- AS(Application Server)提供對用戶訂閱的應(yīng)用業(yè)務(wù)的支持,包括游戲,視頻,在線服務(wù),短信服務(wù)等。
- TAS(Telephony Application Server)也是一種應(yīng)用服務(wù)功能,但是這里重點強調(diào)的是對語音視頻呼叫所提供的服務(wù),包括呼叫數(shù)量的限制,電話前轉(zhuǎn),呼叫能力等支持。
- PCRF(Policy Charging and Rules Function),它負(fù)責(zé)定義呼叫規(guī)則來控制用戶的呼叫功能,例如計費和QOS。它配合PGW來支持用戶QOS。
- ENUM/DNS負(fù)責(zé)對用戶地址和號碼屬性進行查詢服務(wù),PSTN接入查詢。
4、了解了IMS核心模塊的主要功能后,我們介紹呼叫的第一步-如何實現(xiàn)注冊流程。

在UE注冊的流程中,整個流程大概經(jīng)過以下幾個步驟:
- 首先UE啟動以后,通過PGW獲得一個IP地址,上面我們已經(jīng)說明,PGW是連接IP網(wǎng)絡(luò)的一個網(wǎng)關(guān)節(jié)點。UE獲得IP地址信息以后,通知到PGW。
- PGW然后連接P-CSCF,對UE用戶進行注冊。
- P-CSCF連接到I-CSCF進行簽權(quán)認(rèn)證,要求I-CSCF對其UE用戶進行查詢。
- I-CSCF連接到HSS服務(wù)器對用戶狀態(tài)信息進行查詢。
- 最后I-CSCF確認(rèn)用戶狀態(tài)以后,發(fā)送UE注冊信息到S-CSCF模塊。最后完成注冊流程。到此步驟,用戶可以進行呼叫,并且UE狀態(tài)處于有效狀態(tài)。
以下SIP注冊示例告訴我們整個SIP注冊的基本流程,注冊流程和我們上面提到的是完全一致的。

5、UE用戶成功注冊以后,UE用戶就可以開始呼叫。現(xiàn)在讓我們看看UE用戶之間通過IMS網(wǎng)絡(luò)進行的呼叫流程。

兩個UE通過IMS呼叫大概經(jīng)過以下一些步驟(和其他文檔介紹可能有所差別):
- 首先UE通過PGW進行呼叫,進入IMS網(wǎng)絡(luò)。
- PGW發(fā)送SIP INVITE消息到Proxy GW(P-CSCF)。
- P-CSCF發(fā)送消息到S-CSCF。
- 當(dāng)INVITE消息到達S-CSCF以后,S-CSCF發(fā)送數(shù)據(jù)到TAS服務(wù)器,查詢UE用戶的呼叫能力支持。
- 通過TAS服務(wù)器獲得呼叫能力支持的查詢,例如號碼隱藏等服務(wù),然后把查詢數(shù)據(jù)追加到此呼叫。
- S-CSCF然后發(fā)送數(shù)據(jù)到ENUM/DNS服務(wù)器查詢號碼格式和IP地址等相關(guān)信息。通過DNS查詢以后,獲悉目的地的INVITE地址等相關(guān)信息。
- S-CSCF獲得相關(guān)DNS查詢信息后,發(fā)送數(shù)據(jù)到目的地的IMS網(wǎng)絡(luò)中的I-CSCF。上面,我們已經(jīng)介紹過,I-CSCF是IMS網(wǎng)絡(luò)的入口。所以,首先對其進行流程處理。
- 目的地運營商通過I-CSCF對用戶進行查詢,通過HSS服務(wù)器獲得用戶地址和在線狀態(tài)信息。
- I-CSCF繼續(xù)對S-CSCF模塊發(fā)送數(shù)據(jù)。SIP INVITE會繼續(xù)轉(zhuǎn)發(fā)到S-CSCF模塊進行下一步處理。
- 目的地S-CSCF繼續(xù)查詢TAS服務(wù)器,很多號碼的支持能力和其他增值服務(wù)相關(guān)信息。
- S-CSCF獲得目的地用戶的TAS能力信息以后,發(fā)送SIP INVITE到Proxy(P-CSCF),對其UE進行呼叫。
最后,目的地運營商通過P-CSCF對被叫UE進行呼叫。到此,呼叫流程創(chuàng)建過程結(jié)束。
這里,讀者要注意,在兩個IMS網(wǎng)絡(luò)實現(xiàn)互聯(lián)互通時,IMS網(wǎng)絡(luò)支持了一個SBC在邊界節(jié)點,SBC可以對IMS網(wǎng)絡(luò)之間進行防火墻設(shè)置和其他的兼容性能力支持。具體的SBC的技術(shù)討論,我們在以前的章節(jié)已經(jīng)進行了非常完整的介紹,用戶可以參考。另外,如果需要查詢PCRF模塊時,可能需要對其計費和呼叫進行控制,這里已忽略此步驟。
6、VoLTE(Voice over LTE) 是一種LTE網(wǎng)絡(luò)的服務(wù)類型。大家都知道,在相對VoIP開放的市場中,如果僅運營商僅提供一種話費低廉的語音呼叫服務(wù),市場上已經(jīng)有很多話費低廉的小型運營商,運營商已經(jīng)很難和一些小運營商所提供的SIP 中繼進行市場競爭。為了留住客戶,增加和客戶粘性,運營商必須提供語音質(zhì)量更加好的,服務(wù)更加全面的服務(wù)。VoLTE就可以幫助運營商提供更多的有競爭力的產(chǎn)品服務(wù)。VoLTE和傳統(tǒng)的其他接入方式相比,可以通過更多的業(yè)務(wù)功能,提供更多富媒體的支持。具體的功能包括:
- VoIP 語音視頻呼叫
- IM 即時通訊工具,QQ,Skype,whatapp,wechat 等等
- 在線狀態(tài)支持
- 數(shù)據(jù)共享
- 多方電話會議
- 視頻會議
現(xiàn)在讓我們進一步了解一下VoLTE環(huán)境下的SIP呼叫流程中關(guān)于幾個關(guān)鍵細(xì)節(jié)。

和以前我們介紹的SIP INVITE有所區(qū)別,它增加了100rel和precondition。這里,100rel表示PRACK;precondition表示終端設(shè)備所需要的支持能力,它會保持協(xié)商的網(wǎng)絡(luò)資源為下一步的會話流程做準(zhǔn)備,如果協(xié)商失敗,則連接失敗。注意,這里的Supported:precondition列出的參數(shù)不一定都是必須使用的,需要使用Required:precondition來表示必須支持的參數(shù)。再次說明,precondition是一個非常復(fù)雜的討論話題,因為本人能力和微信篇幅的關(guān)系,只能簡單介紹基本的幾個步驟和流程。
Precondtion 應(yīng)用是一個非常必要的過程,就是為了避免不必要的雙方協(xié)商的資源浪費,很多時候網(wǎng)絡(luò)環(huán)境類似于一個工作效率非常低下的員工溝通過程,假設(shè)或想當(dāng)然可以對方滿足條件,最后發(fā)現(xiàn)承諾的不能實現(xiàn)。因此,我們必須提前解決兩個問題:如果對方?jīng)]有準(zhǔn)備好,就不要接受我的要求;如果沒有準(zhǔn)備好,不要對對方發(fā)送任何請求。

以下圖例介紹了precondition的協(xié)商過程包括UE1 發(fā)送INVITE,直到UE2 發(fā)送200 OK的流程。

- 在以上的圖例中讀者一定要注意SDP中的幾個參數(shù),讀者可能產(chǎn)生歧義。
- a=curr: 表示當(dāng)前狀態(tài)的precondtion type
- a=des:表示希望獲得的precondition type,很多人錯誤以為是目的地des。
- a=conf:表示最終確認(rèn)的precondtion type
- strength-tag 表示是強制,可選,未知,none,失敗等
- direction-tag從字面意思可以看出是方向協(xié)商,包括none, send, recv和sendrecv
從協(xié)商流程圖中可以簡單看出,事實上,整個predcondition協(xié)商過程就是一直檢查當(dāng)前狀態(tài)到期望狀態(tài)的過程。只要滿足了雙方條件,則協(xié)商成功。以下圖例簡單介紹了QOS協(xié)商的過程,可能更加有助于讀者理解precondition。

具體的流程圖在后續(xù)的部分有詳細(xì)說明。在VoLTE業(yè)務(wù)呼叫中,它支持的編碼類型有所不同,VoLTE支持的編碼包括:AMR,AMR-WB和EVS。關(guān)于編碼的具體細(xì)節(jié),筆者在這里不會做太多介紹,用戶可以到3GPP官方網(wǎng)站查閱。
b=是SDP的一個拓展,表示bandwidth,具體語法:
- b=<modifier>:<bandwidth-value>
modifier包括:AR,RS和RR,簡單來說,各自分別表示應(yīng)用中RTCP最大支持帶寬,本地帶寬和接收方帶寬。
更多細(xì)節(jié),請參考RFC3556。
- Precondition 包括三種類型:conn(Connectivity, 查閱RFC5898),qos(QoS precondition,查閱RFC3312)和seq(Security precondition,RFC5027)。如果讀者有興趣的話,可以根據(jù)相關(guān)的RFC對precondition的三種類型做更加深入的研究。
7、根據(jù)以上的介紹,我們可以大概看出SIP在VoLTE中的呼叫流程,UE1呼叫UE2,發(fā)生INVITE消息,UE2返回183 消息攜帶可支持的編碼。UE1 收到183消息以后,返回到PCRF時,流程需要查詢PCRF,獲得網(wǎng)絡(luò)資源例如編碼和計費的能力支持。PCFR然后發(fā)送用戶消息到PGW,PGW將設(shè)置QOS,PGW將配合S-CSCF,MME和eNodeB,重新設(shè)置一個新的bearer QCI=1,QCI=1用來發(fā)送呼叫媒體。

支持能力的協(xié)商流程(可參考上面提到的precondition)大概經(jīng)過以下五個步驟:
- UE1 發(fā)送PRACK 消息到UE2,通知對方自己的bearer 支持能力。
- UE2 收到UE1的消息,然后發(fā)送自己的PRACK消息。
- UE1收到UE2消息以后,發(fā)送一個UPDTAE消息攜帶重新協(xié)商的SDP消息。
- UE2收到UE1以后,重新確認(rèn)SDP,設(shè)置發(fā)送bearer消息。
- UE2發(fā)送180 ring消息。媒體開始建立。
8、大家可以想象一下,目前很多運營商都提供IMS服務(wù),每個IMS網(wǎng)絡(luò)都需要和其他的進行連接。如何實現(xiàn)IP核心網(wǎng)絡(luò)之間的連接是一個很大的挑戰(zhàn)。

GSMA對IMS連接給出了一個建議(也不一定非常規(guī)范),通過peer/IPX的方式實現(xiàn)IMS之間的連接。更多關(guān)于GSMA官方對IMS的介紹,讀者可以查閱IR.92獲得更多詳情。

9、開源一直在通信和互聯(lián)網(wǎng),甚至于物聯(lián)網(wǎng)技術(shù)中都扮演著非常重要的角色。如果大家一談起IMS網(wǎng)絡(luò)的話,一般都是在運營商的環(huán)境中才能接觸到,這樣的話,如果讀者想了解更多IMS的知識的話,基本上沒有其他的途徑。目前,有幾個比較不錯的開源平臺,如果讀者希望了解更多IMS的知識內(nèi)容,可以自己親自搭建IMS平臺,通過測試來進一步了解IMS技術(shù):
- 開源軟交換Kamailio,它支持基本的IMS核心模塊,可以進行IMS注冊,呼叫測試。

- OpenIMS,它是老牌的開源IMS平臺,具有相對比較完整的功能和規(guī)范的模塊,可以用來學(xué)習(xí),但是社區(qū)不活躍,需要自己花費時間去研究。
- Clearwater 是最近幾年發(fā)展起來的開源IMS平臺,因為有非常強大的技術(shù)支持,贊助商都是比較有名的運營商,所以相對比較活躍。文檔也比較完整。

在學(xué)習(xí)開源平臺時,讀者需要配合3GPP的學(xué)習(xí)資料來進行研究。個人感覺,3GPP的學(xué)習(xí)資料和RFC相比相對比較“凌亂”,很多時候,一個TS版本可以有幾百頁。筆者查閱的TS 23.228,它大概有300多頁,所以建議先掌握整個架構(gòu)和基本流程,然后針對性地學(xué)習(xí)一些模塊,否則讀者會非常非常迷惑。
10、在本章節(jié)中,我們首先介紹了LTE的使用背景,和傳統(tǒng)接入方式相比,LTE的優(yōu)勢。我們還介紹了LTE網(wǎng)絡(luò)的幾個核心模塊,IMS的幾個核心模塊。然后,重點介紹了IMS呼叫的流程。另外,我們還介紹了VoLTE的注冊方式,Precodntion的協(xié)商方式和VolTE的呼叫流程。為了給讀者一個全面的認(rèn)識,我們大概描述了IMS網(wǎng)絡(luò)之間的連接方式和GSMA的建議,最后,我們介紹了三個開源IMS平臺,以方便讀者去學(xué)習(xí)。筆者希望通過此章節(jié)的介紹,讀者可以基本掌握IMS網(wǎng)絡(luò)中SIP呼叫的基本流程和應(yīng)該注意的地方。
參考資料:
- http://www.3gpp.org/
- https://tools.ietf.org/html/rfc3312
- https://tools.ietf.org/html/rfc5898
- https://tools.ietf.org/html/rfc4032
- https://www.rfc-editor.org/rfc/rfc3556.txt
- http://netovate.com/docs/LTEWS2014.pdf
- http://www.projectclearwater.org/
- http://www.openimscore.org/
- https://www.kamailio.org/w/2013/05/ims-kamailio/
關(guān)注微信公眾號:asterisk-cn,獲得有價值的行業(yè)分享。訪問5060社區(qū)-開源IPPBX論壇獲得技術(shù)幫助:www.ippbx.org.cn