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