Diameter協議結構特點研究
● 簡介
Diameter系列協議是IETF開發的新一代AAA協議。AAA即Authentication(認證)、Authorization(授權)、Accounting(計費)。Authentication(認證)用以對用戶身份進行確認;Authorization(授權) 用以確定用戶是否被授權使用某種網絡資源;Accounting(計費)用以監測用戶使用網絡資源的狀況,可依照檢測的記錄對用戶收費。
以前的AAA協議如RADIUS、TACACS主要是針對PPP服務和終端服務而設計的。隨著網絡技術的發展,新的接入方式如無線接入、DSL接入、移動IP陸續出現,以太網也不斷發展,AAA中的網絡訪問服務器(NAS)自身也逐漸變得越來越復雜。這些發展變化,對AAA協議提出了新的要求。原有的AAA協議已經不能充分滿足這些要求,而新一代AAA協議-Diameter協議卻可以滿足這些需求,主要包括如下幾個方面:
(1) 良好的故障切換機制。Diameter協議支持應用層的信息確認和失效檢測機制。
(2) 傳輸層安全。Diameter協議通過IPsec和TLS保證傳輸的安全性,其中TLS對于客戶端來講是可選的。
(3) 可靠的傳輸。Diameter協議通過TCP或SCTP提供可靠的傳輸。
(4) 支持各種類型的代理,包括中繼代理、重定向代理、Proxy代理、協議轉換代理。
(5) 支持服務器發起消息。例如服務器可以發消息要求客戶端重新認證。
(6) 保持與現有網絡AAA協議(如RADIUS)的兼容性。
(7) 支持節點間的能力協商機制。
(8) 支持對等端自主發現和配置機制。
(9) 支持漫游。Diameter協議定義了域間漫游、消息路由及安全傳輸,能夠提供安全漫游服務。
● Diameter協議的框架結構
Diameter協議包含IP傳送、安全協議、Diameter基礎協議以及不同的應用協議。Diameter基礎協議為各種應用協議提供一個基本框架,它定義了協議的傳輸機制、消息格式、消息處理、差錯處理、計費與安全服務等。應用協議依賴基礎協議提供針對某一應用的AAA服務,它是不斷發展變化的。IETF已經確定了一些應用協議的標準,而其它的應用協議的標準尚在制定的過程中。已被確定為協議標準的應用有:移動IP應用協議(MIPv4)、網絡訪問服務應用協議(NAS或NASREQ)、信用控制應用協議(Credit-Control)、擴展認證應用協議(EAP)等。尚在討論和制定的標準有:SIP應用協議等。
如前所述,Diameter協議通過TCP或SCTP提供可靠的傳輸,通過Ipsec和TLS來保證傳輸的安全性。Diameter在基礎協議的基礎上提供各種應用服務。
● Diameter協議的消息格式
Diameter基礎協議定義了Diameter協議的消息格式:
Diameter消息的頭部包括20個字節。頭4個字節包括8比特的版本信息(目前是1)和24比特的消息長度(包含頭部的長度)。
隨后的4個字節包括8比特的消息標志位和24比特的命令代碼。消息標志位有R、P、E、T。R為1或0分別表示請求(Request)和應答(Answer);P表示本消息是否允許被代理處理、被轉發或重定向;E表示是否為消息錯誤;T表示本消息是重發的消息。r為保留的標志位。
命令代碼用來表示這個消息所對應的命令(其中0至255保留給RADIUS后向兼容),基礎協議定義了如下幾個基本的命令代碼:
而Diameter應用協議會根據需要添加必要的命令代碼,例如NAS應用協議定義了下面的命令代碼:
再舉例來說,3GPP(R5)向IANA(網絡地址分配機構)申請保留了300~313的命令代碼,用于3G的應用,目前已經定義了如下的命令用于Cx/Dx/Sh/Dh接口(目前這些命令尚未被現有的IETF的Diameter協議所定義):
隨后的12個字節分別為應用標識、逐跳標識和端到端標識,其中應用標識用以指示消息所適用的應用:
逐跳標識用于幫助匹配請求與響應的對應關系,例如I-CSCF發UAR消息向HSS查詢應選擇哪個S-CSCF,HSS發UAA回應查詢請求;UAR和UAA的逐跳標識是相同的。
端到端標識主要用于重復消息的檢查。
消息頭部之后為屬性值對(AVP),一個消息中可以包括多個AVP。AVP中包含了認證、授權、計費、消息的路由和安全等信息。
● AVP的格式
V標志位表示本AVP有無Vendor-ID字段。若V標志位為1,則需要Vendor-ID不能為0。若V標志位為0,則表示沒有Vendor-ID。
M標志位表示本AVP是否是強制性的。如果收到M為1的AVP,若Diameter客戶端或服務器端或代理不能識別此AVP或AVP的值,必須丟棄此AVP。
P標志位表示本AVP是否需要端對端安全加密。
若V標志位為0,則AVP code使用的是IANA組織定義的AVP code值。基本協議中定義了一些基本的AVP Code和數據(Data)的類型。其中AVP Code 1至255用于與原有Radius協議兼容。各個應用協議也根據應用的不同分別定義了相應的AVP Code以及Data類型。由于AVP Code較多,這里不一一列舉,僅舉二例:
Vendor-ID為廠商的標識,例如3GPP組織的Vendor-ID為10415。若Vendor-ID不為0,則廠商可以定義自己的AVP code和Data類型。這里也僅舉3GPP在TS29.229中定義的AVP的兩個例子:
評論