天天看點

Diameter協定

diameter是計算機網絡中使用的一個認證、授權和審計協定。它從功能更少的radius協定進化而來,并且取代之。

       dimater應用通過添加新的指令或屬性擴充基礎協定,例如使用擴充認證 協定(eap)。

       名字是一個單詞遊戲(從radius,半徑到diameter,直徑),從前任radius協定演化而來(直徑是半徑的二倍)。diameter不直接後向相容,但是提供radius更新路徑。diameter提供的主要特征(radius中缺乏的)有:

* 可靠傳輸協定(tcp或sp,不是udp)

* ietf正在标準化radius的tcp傳輸

* 網絡或者傳輸層安全(ipsec或tls)

* ietf正在标準化話radius的tls

* 支援radius過度,雖然diameter不完全相容radius

* 屬性值對(avp)和标示符的更大位址空間(32bit替代8bit)

* 用戶端伺服器協定,除了支援一些伺服器發起的消息

* 可以使用有狀态和無狀态的模型

* 對端動态自動發現(使用dns srv和naptr)

* 協商功能

* 支援應用層應答,定義容錯方法和狀态機(rfc 3539)

* 錯誤訓示

* 更好的漫遊支援

* 更容易擴充,能夠定義新的指令和屬性

* 32位元組的邊界對齊

* 使用者會話和審計的基本支援

diameter應用不是軟體應用,而是一個基于定義在rfc 6733(過時:rfc 3588)diameter基本協定的協定層應用。通過一個應用辨別符定義每個應用,可以添加新的指令代碼或者新的必選avp。添加新的可選avp不要求一個新的應用。

diameter應用示例:

1) diameter移動ipv4應用(mobileip,rfc 4004)

2)diameter網絡通路服務應用(nasreq,rfc 4005)

3)diameter擴充認證協定應用(rfc4072)

4) diameter信任控制應用(dcca,rfc 4740)

5)3gpp ip多媒體子系統(ims)中各種應用

6) 使用diameter協定在hss和sf之間進行通信。

通用自展結構:自舉服務功能。

       diameter協定由pat r. calhoun、glen zorn和ping pan于1998年開始開發提供認證、鑒權和審計(aaa)架構,它克服了radius的限制。radius有可靠性、擴充性、安全性和靈活性的問題。radius不能有效地處理遠端通路、ip移動性和政策控制。diameter協定定義一個政策協定,提供給用戶端執行政策、aaa和資源控制。這允許單個服務處理許多服務的政策。

       就像radius,diameter提供aaa功能,但是使用tcp和sctp替代udp,是以通信問題的檢測邏輯不包括在diameter協定中(由tcp和sctp保證)。diameter協定通過開發3gpp ip多媒體系統(ims)進一步增強。diameter應用支援cx、dh、dx、rf和sh接口。通過使用擴充,協定設計成可擴充支援代理、中間件、強安全性、移動ip、網絡通路服務、賬号和資源管理。

       diameter基礎協定定義在rfc6733追蹤,定義aaa協定的最小的需求。diameter應用可擴充成基礎協定,通過添加新的指令、屬性。diameter安全由ipsec和tls提供。iana已經提供tcp或sctp端口号給diameter,sctp的ppi(負載協定辨別)為46。

       封包格式:

       封包由diameter頭部和可變數量的屬性-值對或av組成,用于diameter消息相關的封裝資訊。

       r(request)位:如果設定,消息是請求,如果清除,消息是響應

       p(代理)位:如果設定消息可能是代理、中繼和重定向,如果清除,消息必須被本地處理。

       e(錯誤)位:如果設定,消息包含協定錯誤,消息将不符合該指令的abnf。帶有e的消息位設定通常認為是錯誤消息。在請求消息中該位必須設定。

       t(潛在重傳消息)位:在鍊路故障産生時設定該标志,幫助删除重複的請求。當重發請求時設定,不作為由于鍊路失效可能的訓示應答。

指令:

每個指令賦予一個指令代碼,它用于請求和應答。

值0-255保留作為radius後項相容。值256-16777213是永久的,由iana配置設定标準指令。值16777214和1677725(0xfffffe和0xffffff)保留給實驗和測試目的。其它的可以給擴充使用。

一些通用的diameter指令:

command-name

abbr.

code

aa-request

aar

265

aa-answer

aaa

diameter-eap-request

der

268

diameter-eap-answer

dea

abort-session-request

asr

274

abort-session-answer

asa

accounting-request

acr

271

accounting-answer

aca

<a target="_blank" href="http://en.wikipedia.org/wiki/diameter_credit-control_application#message_structures">credit-control-request</a>

ccr

272

<a target="_blank" href="http://en.wikipedia.org/wiki/diameter_credit-control_application#message_structures">credit-control-answer</a>

cca

capabilities-exchange-request

cer

257

capabilities-exchange-answer

cea

device-watchdog-request

dwr

280

device-watchdog-answer

dwa

disconnect-peer-request

dpr

282

disconnect-peer-answer

dpa

re-auth-request

rar

258

re-auth-answer

raa

session-termination-request

str

275

session-termination-answer

sta

user-authorization-request

uar

300

user-authorization-answer

uaa

server-assignment-request

sar

301

server-assignment-answer

saa

location-info-request

lir

302

location-info-answer

lia

multimedia-auth-request

mar

303

multimedia-auth-answer

maa

registration-termination-request

rtr

304

registration-termination-answer

rta

push-profile-request

ppr

305

push-profile-answer

ppa

user-data-request

udr

306

user-data-answer

uda

profile-update-request

pur

307

profile-update-answer

pua

subscribe-notifications-request

snr

308

subscribe-notifications-answer

sna

push-notification-request

pnr

309

push-notification-answer

pna

bootstrapping-info-request

bir

310

bootstrapping-info-answer

bia

message-process-request

mpr

311

message-process-answer

mpa

update-location-request

ulr

316

update-location-answer

ula

authentication-information-request

air

318

authentication-information-answer

aia

notify-request

nr

323

notify-answer

na

       屬性-值對(avp)

       為了簡化,“v”位表示廠商專用,m為意味着必須,p位意味着保護。

       v位:作為廠商專用位,表示可選的vendor-id字段是否出現在avp頭部中,當設定時,avp代碼屬于專用廠商代碼位址空間。

       m位:作為必選(強制)位,表示是否要求avp支援。如果diameter用戶端、服務、代理和傳輸代理接收帶有m位的avp時,如果avp或者它的值不能識别,消息必須被拒絕。diameter中繼和重定向代理絕不能拒絕帶有不認識avp的消息。

       p位表示是否需要加密,提供端對端的安全。

attribute-name

data type

acct-interim-interval

85

unsigned32

accounting-realtime-required

483

enumerated

acct-multi-session-id

50

utf8string

accounting-record-number

485

accounting-record-type

480

accounting-session-id

44

octetstring

accounting-sub-session-id

287

unsigned64

acct-application-id

259

auth-application-id

auth-request-type

authorization-lifetime

291

auth-grace-period

276

auth-session-state

277

re-auth-request-type

285

class

25

destination-host

293

diamident

destination-realm

283

disconnect-cause

273

e2e-sequence

grouped

error-message

281

error-reporting-host

294

event-timestamp

55

time

experimental-result

297

experimental-result-code

298

failed-avp

279

firmware-revision

267

host-ip-address

address

inband-security-id

299

multi-round-time-out

origin-host

264

origin-realm

296

origin-state-id

278

product-name

269

proxy-host

proxy-info

284

proxy-state

33

redirect-host

292

diamuri

redirect-host-usage

261

redirect-max-cache-time

262

result-code

route-record

session-id

263

session-timeout

27

session-binding

270

session-server-failover

supported-vendor-id

termination-cause

295

user-name

1

vendor-id

266

vendor-specific-application-id

260

       rfc3588定義維護對端之間的連接配接狀态機和消息處理。這是基本協定功能的一部分,所有棧必須支援它,虛拟的連接配接相關的操作也一樣。

       參考網址:

<a target="_blank" href="http://en.wikipedia.org/wiki/file:rfc3588_peer_state_machine_1.png">http://en.wikipedia.org/wiki/file:rfc3588_peer_state_machine_1.png</a>

<a target="_blank" href="http://en.wikipedia.org/wiki/file:rfc3588_peer_state_machine_2.png">http://en.wikipedia.org/wiki/file:rfc3588_peer_state_machine_2.png</a>

       此外,應用專用狀态機也随後或更高虛拟層上引入。rfc 3588定義一個認證和審計狀态機。

<a target="_blank" href="http://en.wikipedia.org/wiki/file:rfc3588_auth_state_machine_client.png">http://en.wikipedia.org/wiki/file:rfc3588_auth_state_machine_client.png</a>

<a target="_blank" href="http://en.wikipedia.org/wiki/file:rfc3588_acct_state_machine_client.png">http://en.wikipedia.org/wiki/file:rfc3588_acct_state_machine_client.png</a>

<a target="_blank" href="http://en.wikipedia.org/wiki/file:rfc3588_auth_state_machine_server.png">http://en.wikipedia.org/wiki/file:rfc3588_auth_state_machine_server.png</a>

       兩個diameter對之間的通信開始于傳輸連接配接的建立(tcp或sctp)。然後發起者發送一個cer(能力交換請求)到對端,傳回一個cea的響應。對于rfc 3588服從對端tls作為可選的協商。對于rfc 6733相容的對端tls協商在cer/cea之前任意的出現。

       然後連接配接準備交換應用消息。

       如果一些時間之内沒有消息交換,兩端需要發送dwr(裝置看門狗請求),并且另外一個對端必須響應dwa。

       兩端都可以發送dpr(斷開對端請求)來終止通信,另外一端必須響應dpa。之後可以端口傳輸連接配接。

       diamter協定目前定義在下面的ietf中:

#

title

date published

related article

obsoleted by

notes

<a target="_blank" href="http://tools.ietf.org/html/rfc3588">rfc 3588</a>

diameter base protocol.

september 2003

<a target="_blank" href="http://tools.ietf.org/html/rfc6733">rfc 6733</a>

<a target="_blank" href="http://tools.ietf.org/html/rfc3589">rfc 3589</a>

diameter command codes for third generation partnership project (3gpp) release 5.

<a target="_blank" href="http://tools.ietf.org/html/rfc4004">rfc 4004</a>

diameter mobile ipv4 application.

august 2005

<a target="_blank" href="http://tools.ietf.org/html/rfc4005">rfc 4005</a>

diameter network access server application.

<a target="_blank" href="http://tools.ietf.org/html/rfc7155">rfc 7155</a>

<a target="_blank" href="http://tools.ietf.org/html/rfc4006">rfc 4006</a>

diameter credit-control application.

<a target="_blank" href="http://en.wikipedia.org/wiki/diameter_credit-control_application">diameter credit-control application</a>

<a target="_blank" href="http://tools.ietf.org/html/rfc4072">rfc 4072</a>

diameter extensible authentication protocol (eap) application.

<a target="_blank" href="http://tools.ietf.org/html/rfc4740">rfc 4740</a>

diameter session initiation protocol (sip) application. m.

november 2006

<a target="_blank" href="http://tools.ietf.org/html/rfc5224">rfc 5224</a>

diameter policy processing application.

march 2008

<a target="_blank" href="http://tools.ietf.org/html/rfc5431">rfc 5431</a>

diameter itu-t rw policy enforcement interface application.

march 2009

<a target="_blank" href="http://tools.ietf.org/html/rfc5447">rfc 5447</a>

diameter mobile ipv6: support for network access server to diameter server interaction.

february 2009

<a target="_blank" href="http://tools.ietf.org/html/rfc5516">rfc 5516</a>

diameter command code registration for the third generation partnership project (3gpp) evolved packet system (eps).

april 2009

-

<a target="_blank" href="http://tools.ietf.org/html/rfc5624">rfc 5624</a>

quality of service parameters for usage with diameter.

august 2009

october 2012

<a target="_blank" href="http://tools.ietf.org/html/rfc6737">rfc 6737</a>

the diameter capabilities update application.

april 2014

繼續閱讀