Diameter协议

    xiaoxiao2026-02-08  0

    【本文转载于Diameter协议】

    Diameter是计算机网络中使用的一个认证、授权和审计协议。它从功能更少的RADIUS协议进化而来,并且取代之。

           Dimater应用通过添加新的命令或属性扩展基础协议,例如使用扩展认证 协议(EAP)。

    与RADIUS协议比较

           名字是一个单词游戏(从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字节的边界对齐

    * 用户会话和审计的基本支持

    注:RADIUS协议http://en.wikipedia.org/wiki/RADIUS

    应用

    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

    265

    Diameter-EAP-Request

    DER

    268

    Diameter-EAP-Answer

    DEA

    268

    Abort-Session-Request

    ASR

    274

    Abort-Session-Answer

    ASA

    274

    Accounting-Request

    ACR

    271

    Accounting-Answer

    ACA

    271

    Credit-Control-Request

    CCR

    272

    Credit-Control-Answer

    CCA

    272

    Capabilities-Exchange-Request

    CER

    257

    Capabilities-Exchange-Answer

    CEA

    257

    Device-Watchdog-Request

    DWR

    280

    Device-Watchdog-Answer

    DWA

    280

    Disconnect-Peer-Request

    DPR

    282

    Disconnect-Peer-Answer

    DPA

    282

    Re-Auth-Request

    RAR

    258

    Re-Auth-Answer

    RAA

    258

    Session-Termination-Request

    STR

    275

    Session-Termination-Answer

    STA

    275

    User-Authorization-Request

    UAR

    300

    User-Authorization-Answer

    UAA

    300

    Server-Assignment-Request

    SAR

    301

    Server-Assignment-Answer

    SAA

    301

    Location-Info-Request

    LIR

    302

    Location-Info-Answer

    LIA

    302

    Multimedia-Auth-Request

    MAR

    303

    Multimedia-Auth-Answer

    MAA

    303

    Registration-Termination-Request

    RTR

    304

    Registration-Termination-Answer

    RTA

    304

    Push-Profile-Request

    PPR

    305

    Push-Profile-Answer

    PPA

    305

    User-Data-Request

    UDR

    306

    User-Data-Answer

    UDA

    306

    Profile-Update-Request

    PUR

    307

    Profile-Update-Answer

    PUA

    307

    Subscribe-Notifications-Request

    SNR

    308

    Subscribe-Notifications-Answer

    SNA

    308

    Push-Notification-Request

    PNR

    309

    Push-Notification-Answer

    PNA

    309

    Bootstrapping-Info-Request

    BIR

    310

    Bootstrapping-Info-Answer

    BIA

    310

    Message-Process-Request

    MPR

    311

    Message-Process-Answer

    MPA

    311

    Update-Location-Request

    ULR

    316

    Update-Location-Answer

    ULA

    316

    Authentication-Information-Request

    AIR

    318

    Authentication-Information-Answer

    AIA

    318

    Notify-Request

    NR

    323

    Notify-Answer

    NA

    323

           属性-值对(AVP)

           为了简化,“V”位表示厂商专用,M为意味着必须,P位意味着保护。

           V位:作为厂商专用位,表示可选的Vendor-ID字段是否出现在AVP头部中,当设置时,AVP代码属于专用厂商代码地址空间。

           M位:作为必选(强制)位,表示是否要求AVP支持。如果Diameter客户端、服务、代理和传输代理接收带有M位的AVP时,如果AVP或者它的值不能识别,消息必须被拒绝。Diameter中继和重定向代理绝不能拒绝带有不认识AVP的消息。

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

    Attribute-Name

    Code

    Data Type

    Acct-Interim-Interval

    85

    Unsigned32

    Accounting-Realtime-Required

    483

    Enumerated

    Acct-Multi-Session-Id

    50

    UTF8String

    Accounting-Record-Number

    485

    Unsigned32

    Accounting-Record-Type

    480

    Enumerated

    Accounting-Session-Id

    44

    OctetString

    Accounting-Sub-Session-Id

    287

    Unsigned64

    Acct-Application-Id

    259

    Unsigned32

    Auth-Application-Id

    258

    Unsigned32

    Auth-Request-Type

    274

    Enumerated

    Authorization-Lifetime

    291

    Unsigned32

    Auth-Grace-Period

    276

    Unsigned32

    Auth-Session-State

    277

    Enumerated

    Re-Auth-Request-Type

    285

    Enumerated

    Class

    25

    OctetString

    Destination-Host

    293

    DiamIdent

    Destination-Realm

    283

    DiamIdent

    Disconnect-Cause

    273

    Enumerated

    E2E-Sequence

    300

    Grouped

    Error-Message

    281

    UTF8String

    Error-Reporting-Host

    294

    DiamIdent

    Event-Timestamp

    55

    Time

    Experimental-Result

    297

    Grouped

    Experimental-Result-Code

    298

    Unsigned32

    Failed-AVP

    279

    Grouped

    Firmware-Revision

    267

    Unsigned32

    Host-IP-Address

    257

    Address

    Inband-Security-Id

    299

    Unsigned32

    Multi-Round-Time-Out

    272

    Unsigned32

    Origin-Host

    264

    DiamIdent

    Origin-Realm

    296

    DiamIdent

    Origin-State-Id

    278

    Unsigned32

    Product-Name

    269

    UTF8String

    Proxy-Host

    280

    DiamIdent

    Proxy-Info

    284

    Grouped

    Proxy-State

    33

    OctetString

    Redirect-Host

    292

    DiamURI

    Redirect-Host-Usage

    261

    Enumerated

    Redirect-Max-Cache-Time

    262

    Unsigned32

    Result-Code

    268

    Unsigned32

    Route-Record

    282

    DiamIdent

    Session-Id

    263

    UTF8String

    Session-Timeout

    27

    Unsigned32

    Session-Binding

    270

    Unsigned32

    Session-Server-Failover

    271

    Enumerated

    Supported-Vendor-Id

    265

    Unsigned32

    Termination-Cause

    295

    Enumerated

    User-Name

    1

    UTF8String

    Vendor-Id

    266

    Unsigned32

    Vendor-Specific-Application-Id

    260

    Grouped

    状态机

           RFC3588定义维护对端之间的连接状态机和消息处理。这是基本协议功能的一部分,所有栈必须支持它,虚拟的连接相关的操作也一样。

           参考网址:

    http://en.wikipedia.org/wiki/File:RFC3588_peer_state_machine_1.png

    http://en.wikipedia.org/wiki/File:RFC3588_peer_state_machine_2.png

           此外,应用专用状态机也随后或更高虚拟层上引入。RFC 3588定义一个认证和审计状态机。

    http://en.wikipedia.org/wiki/File:RFC3588_auth_state_machine_client.png

    http://en.wikipedia.org/wiki/File:RFC3588_acct_state_machine_client.png

    http://en.wikipedia.org/wiki/File:RFC3588_auth_state_machine_server.png

    http://en.wikipedia.org/wiki/File:RFC3588_peer_state_machine_1.png

    消息流

           两个Diameter对之间的通信开始于传输连接的建立(TCP或SCTP)。然后发起者发送一个CER(能力交换请求)到对端,返回一个CEA的响应。对于RFC 3588服从对端TLS作为可选的协商。对于RFC 6733兼容的对端TLS协商在CER/CEA之前任意的出现。

           然后连接准备交换应用消息。

           如果一些时间之内没有消息交换,两端需要发送DWR(设备看门狗请求),并且另外一个对端必须响应DWA。

           两端都可以发送DPR(断开对端请求)来终止通信,另外一端必须响应DPA。之后可以端口传输连接。

    RFC参考

           Diamter协议当前定义在下面的IETF中:

    #

    Title

    Date published

    Related article

    Obsoleted by

    Notes

    RFC 3588

    Diameter Base Protocol.

    September 2003

    RFC 6733

    RFC 3589

    Diameter Command Codes for Third Generation Partnership Project (3GPP) Release 5.

    September 2003

    RFC 4004

    Diameter Mobile IPv4 Application.

    August 2005

    RFC 4005

    Diameter Network Access Server Application.

    August 2005

    RFC 7155

    RFC 4006

    Diameter Credit-Control Application.

    August 2005

    Diameter Credit-Control Application

    RFC 4072

    Diameter Extensible Authentication Protocol (EAP) Application.

    August 2005

    RFC 4740

    Diameter Session Initiation Protocol (SIP) Application. M.

    November 2006

    RFC 5224

    Diameter Policy Processing Application.

    March 2008

    RFC 5431

    Diameter ITU-T Rw Policy Enforcement Interface Application.

    March 2009

    RFC 5447

    Diameter Mobile IPv6: Support for Network Access Server to Diameter Server Interaction.

    February 2009

    RFC 5516

    Diameter Command Code Registration for the Third Generation Partnership Project (3GPP) Evolved Packet System (EPS).

    April 2009

    -

    RFC 5624

    Quality of Service Parameters for Usage with Diameter.

    August 2009

    RFC 6733

    Diameter Base Protocol.

    October 2012

    RFC 6737

    The Diameter Capabilities Update Application.

    October 2012

    RFC 7155

    Diameter Network Access Server Application.

    April 2014

     

    相关资源:diameter协议资料
    最新回复(0)