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

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

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

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

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

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

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

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

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

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

- 在以上的圖例中讀者一定要注意SDP中的幾個參數(shù),讀者可能產生歧義。
- 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é)商流程圖中可以簡單看出,事實上,整個predcondition協(xié)商過程就是一直檢查當前狀態(tài)到期望狀態(tài)的過程。只要滿足了雙方條件,則協(xié)商成功。以下圖例簡單介紹了QOS協(xié)商的過程,可能更加有助于讀者理解precondition。

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

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

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

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

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

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