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