孫曉慧,石秀娟
(中國電子科技集團公司第五十四研究所,河北石家莊050081)
IP多媒體子系統是由第3代合作伙伴計劃(3GPP)首先在R5中提出的支持IP多媒體業務的子系統(IMS),后由3GPP2、歐洲電信標準化協會(ETSI)和國際電信聯盟(ITU)等組織采用。目前在實現網絡融合愿望的驅動下,IMS已經由移動通信擴展到固網通信領域,希望籍此建立移動網絡與固定網絡統一的控制。IMS的最終目的是建立與接入無關、能被移動網絡與固定網絡共用的融合核心網,即能夠為使用各種不同接入手段的用戶提供融合的業務。
Diameter協議是RADIUS協議的一種演化,它是廣泛應用于因特網中完成AAA功能的協議。Diameter被選為IMS的認證、授權和計費協議(AAA)。例如,當一個用戶呼叫IMS業務控制接口(ISP)時,網絡接入服務器采用Diameter來鑒別和授權用戶進入網絡。Diameter包含一個由Diameter應用作為補充的底層協議。Diameter應用是定制或擴展Diameter使其成為適用于某一特定環境的特殊應用。IMS的許多接口都使用Diameter,例如,IMS定義了一個Diameter應用在會話建立時與SIP聯系,定義了另一個Diameter應用來完成計費控制。
Diameter基礎協議注重能力協商、消息發送以及對等端如何最終被拒絕。基礎協議還規定了特定規則用于Diameter節點之間所有的消息交換,并為各種應用提供了一個AAA框架。
一個Diameter節點具有和多個對等端通信的能力,但通常基于每個域,一個節點應該與2個對等端建立連接。2個Diameter對等端建立傳輸連接時,必須進行能力交換。能力交換消息包含對等端的標識和能力(協議版本號、支持的Diameter應用和安全機制等),如果能力交換請求消息的接收端與其發送端沒有任何共同支持的應用程序,則必須返回原因值為“無共同應用”的應答消息,并且終止相互間的傳輸層連接。
Diameter基本協議運行在TCP和SCTP傳輸協議的端口3868上。Diameter客戶端必須支持TCP或SCTP,代理和服務器必須二者都支持。
Diameter能夠為應用提供認證和授權服務。當一個服務使用應用的認證和授權服務,且有用戶請求接入網絡,Diameter客戶端會向本地服務器發送認證請求。服務器收到認證請求消息后,根據網絡資源及請求消息中攜帶的屬性值對來用戶判斷是否通過認證。
Diameter包含基礎協議、傳送協議和不同的應用擴展。所有應用和服務公用的基本功能都在基礎協議中實現,而應用特定的功能則會在不同的應用中實施。Diameter在IMS中的接口關系如圖1所示。

圖1 Diameter接口關系
圖1中的Cx接口、Sh接口、Dx接口和Dh接口使用Diameter協議,Cx接口位于呼叫會話控制功能(CSCF)和歸屬用戶服務器(HSS)之間,主要完成以下功能:
①為注冊用戶指派S_CSCF;
②CSCF通過HSS查詢路由信息;
③授權處理,檢查用戶漫游是否許可;
④鑒權處理,在HSS和CSCF之間傳遞用戶的安全參數;
⑤過濾規則控制,從HSS下載用戶的過濾參數到服務呼叫會話控制功能(S_CSCF)上。
Sh接口位于HSS和應用服務器(AS)之間,用于AS從HSS獲取用戶數據,以及HSS中用戶數據更新時,通知AS。
Dx接口位于CSCF和簽約定位器功能(SLF)之間,用于確定用戶簽約數據所在HSS的地址。Dh接口位于AS和SLF之間,用于AS到SLF定位HSS。
Diameter基礎協議是實現所有接口的基本,Cx接口協議是IMS架構實現用戶注冊、位置管理和用戶數據管理的重要接口。下面主要介紹Diameter基礎協議和Cx接口的設計和實現過程。
2.1.1 模塊劃分
Diameter基礎協議和Cx應用接口協議的組成主要包含面向節點模塊、應用程序模塊和維護軟件。完成基礎協議、Cx接口應用協議、消息轉發和維護功能。客戶端和服務器端的組成框圖如圖2所示。
面向節點模塊實現Diameter基礎協議,以及轉發消息到相應的應用程序模塊功能。
應用程序模塊執行Cx接口的應用協議功能,以及發送消息到面向節點模塊。
維護終端完成Cx接口的參數配置功能,包含私有用戶標識、公有用戶標識、過濾規則和一些默認處理。

圖2 Diameter軟件組成
2.1.2 流程設計
(1)Diameter基礎協議設計
Diameter基礎協議的重要部分是能力交換,用于2個Diameter對等端按照規定的交換能力交換信息,包括支持的 Diameter應用和安全機制等,由客戶端和服務器端的面向節點完成。基礎協議的流程設計如圖3所示。
Diameter協議支持端到端的安全機制,支持TLS,TLS提供2個應用程序之間的保密性和數據完整性,支持信息摘要算法第5版(MD5算法)。輸入一個任意長度的字節串,MD5算法生成一個128位的整數,算法具有不可逆特征,在加密應用上有較好的安全性。MD5算法首先進行信息擴展和數據填充,使信息位長=N×512+448+64=(N+1)×512,即長度恰好是512的整數倍,其中N為正整數,64表示數據填充之前的長度。然后設置鏈接變量,設置好鏈接變量以后,進入4輪循環運算,完成MD5算法全過程。例如:字符“a”經過MD5算法加密后,結果如下:

圖3 基礎協議流程設計
md5(“5”)=0cc175b9c0f1bba831c399e269772661
加密后的數據到達對端后,再將加密后的數據解密。
(2)Cx接口應用協議設計
Cx接口應用協議包含用戶注冊狀態查詢、用戶位置信息查詢、多媒體認證和更新用戶信息等功能。實現Cx接口的各條消息和消息的方向如表1所示。

表1 Cx接口消息說明
2.2.1 實現環境及流程
Diameter協議軟件實現采用C++語言編寫,用g++進行編譯,運行在Linux實時操作系統,實現了Diameter基礎協議和Cx接口應用協議。其中,基礎協議主要實現了能力交換功能。Cx接口應用協議主要實現了位置管理和用戶數據處理,包括:
①UAR/UAA消息:實現HSS對用戶公有用戶標識注冊、安全檢查;I-CSCF獲得S-CSCF信息;
②SAR/SAA消息:用于在HSS更新S-CSCF名稱,S-CSCF從HSS下載用戶數據文件;
③LIR/LIA消息:I-CSCF從HSS獲取S-CSCF名稱和能力;
④MAR/MAA消息:S-CSCF和HSS之間交換信息,以支持終端用戶和歸屬IMS網絡之間的鑒權過程。
Diameter協議軟件分為服務器和客戶端2個部分,服務器端將運行在應用服務器上,客戶端軟件運行在所有的被管理設備上。在圖2所示的模塊結構中,應用程序模塊負責具體處理Cx接口應用協議消息,面向節點模塊負責消息的轉發。以用戶認證請求為例,消息在各模塊間的流程如圖4所示。

圖4 UAR消息實現流程
2.2.2 試驗結果分析
Diameter協議的實現在工程應用中得到了驗證,試驗結構圖如圖5所示。2個SIP終端、Diameter客戶端、Diameter服務器和應用服務器通過集線器(Hub)相連,由終端發起注冊、SIP會話和應用服務器發起的去注冊過程對Diameter的能力協商和Cx接口應用協議進行了試驗,能夠完成對終端的認證和授權過程,試驗結果符合Diameter協議標準。

圖5 Diameter試驗結構
Diameter協議應用于IMS中,實現認證、授權和計費功能,已經在實際工程中得到應用。Diameter良好的開放性和擴展性決定了它在通信網絡環境能夠更好地支持各種應用,更加符合下一代網絡技術中AAA業務的需求。Diameter協議在通信架構中將得到越來越多的應用。
[1]3GPP TS 29.229 V7.6.0.Diameter協議Cx和Dx接口[S].
[2]3GPP TS 29.228 V7.6.0.IP多媒體子系統Cx和Dx接口信令流和消息內容[S].
[3]IETF RFC 3588:2003.用于IP網絡的Diameter基礎協議技術要求[S].