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