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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在學(xué)習開(kāi)源平臺時(shí),讀者需要配合3GPP的學(xué)習資料來(lái)進(jìn)行研究。個(gè)人感覺(jué),3GPP的學(xué)習資料和RFC相比相對比較“凌亂”,很多時(shí)候,一個(gè)TS版本可以有幾百頁(yè)。筆者查閱的TS 23.228,它大概有300多頁(yè),所以建議先掌握整個(gè)架構和基本流程,然后針對性地學(xué)習一些模塊,否則讀者會(huì )非常非常迷惑。
10、在本章節中,我們首先介紹了LTE的使用背景,和傳統接入方式相比,LTE的優(yōu)勢。我們還介紹了LTE網(wǎng)絡(luò )的幾個(gè)核心模塊,IMS的幾個(gè)核心模塊。然后,重點(diǎn)介紹了IMS呼叫的流程。另外,我們還介紹了VoLTE的注冊方式,Precodntion的協(xié)商方式和VolTE的呼叫流程。為了給讀者一個(gè)全面的認識,我們大概描述了IMS網(wǎng)絡(luò )之間的連接方式和GSMA的建議,最后,我們介紹了三個(gè)開(kāi)源IMS平臺,以方便讀者去學(xué)習。筆者希望通過(guò)此章節的介紹,讀者可以基本掌握IMS網(wǎng)絡(luò )中SIP呼叫的基本流程和應該注意的地方。
參考資料:
- 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,獲得有價(jià)值的行業(yè)分享。訪(fǎng)問(wèn)5060社區-開(kāi)源IPPBX論壇獲得技術(shù)幫助:www.ippbx.org.cn