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