Diameter协议结构特点研究
扫描二维码
随时随地手机看文章
Diameter协议介绍
● 简介
Diameter系列协议是IETF开发的新一代AAA协议。AAA即Authentication(认证)、Authorization(授权)、Accounting(计费)。Authentication(认证)用以对用户身份进行确认;Authorization(授权) 用以确定用户是否被授权使用某种网络资源;Accounting(计费)用以监测用户使用网络资源的状况,可依照检测的记录对用户收费。
● Diameter协议的特点
以前的AAA协议如RADIUS、TACACS主要是针对PPP服务和终端服务而设计的。随着网络技术的发展,新的接入方式如无线接入、DSL接入、移动IP陆续出现,以太网也不断发展,AAA中的网络访问服务器(NAS)自身也逐渐变得越来越复杂。这些发展变化,对AAA协议提出了新的要求。原有的AAA协议已经不能充分满足这些要求,而新一代AAA协议-Diameter协议却可以满足这些需求,主要包括如下几个方面:
(1) 良好的故障切换机制。Diameter协议支持应用层的信息确认和失效检测机制。
(2) 传输层安全。Diameter协议通过IPsec和TLS保证传输的安全性,其中TLS对于客户端来讲是可选的。
(3) 可靠的传输。Diameter协议通过TCP或SCTP提供可靠的传输。
(4) 支持各种类型的代理,包括中继代理、重定向代理、Proxy代理、协议转换代理。
(5) 支持服务器发起消息。例如服务器可以发消息要求客户端重新认证。
(6) 保持与现有网络AAA协议(如RADIUS)的兼容性。
(7) 支持节点间的能力协商机制。
(8) 支持对等端自主发现和配置机制。
(9) 支持漫游。Diameter协议定义了域间漫游、消息路由及安全传输,能够提供安全漫游服务。
● Diameter协议的框架结构
Diameter协议包含IP传送、安全协议、Diameter基础协议以及不同的应用协议。Diameter基础协议为各种应用协议提供一个基本框架,它定义了协议的传输机制、消息格式、消息处理、差错处理、计费与安全服务等。应用协议依赖基础协议提供针对某一应用的AAA服务,它是不断发展变化的。IETF已经确定了一些应用协议的标准,而其它的应用协议的标准尚在制定的过程中。已被确定为协议标准的应用有:移动IP应用协议(MIPv4)、网络访问服务应用协议(NAS或NASREQ)、信用控制应用协议(Credit-Control)、扩展认证应用协议(EAP)等。尚在讨论和制定的标准有:SIP应用协议等。
如前所述,Diameter协议通过TCP或SCTP提供可靠的传输,通过Ipsec和TLS来保证传输的安全性。Diameter在基础协议的基础上提供各种应用服务。
● Diameter协议的消息格式
Diameter基础协议定义了Diameter协议的消息格式:
Diameter消息的头部包括20个字节。头4个字节包括8比特的版本信息(目前是1)和24比特的消息长度(包含头部的长度)。
随后的4个字节包括8比特的消息标志位和24比特的命令代码。消息标志位有R、P、E、T。R为1或0分别表示请求(Request)和应答(Answer);P表示本消息是否允许被代理处理、被转发或重定向;E表示是否为消息错误;T表示本消息是重发的消息。r为保留的标志位。
命令代码用来表示这个消息所对应的命令(其中0至255保留给RADIUS后向兼容),基础协议定义了如下几个基本的命令代码:
而Diameter应用协议会根据需要添加必要的命令代码,例如NAS应用协议定义了下面的命令代码:
再举例来说,3GPP(R5)向IANA(网络地址分配机构)申请保留了300~313的命令代码,用于3G的应用,目前已经定义了如下的命令用于Cx/Dx/Sh/Dh接口(目前这些命令尚未被现有的IETF的Diameter协议所定义):
随后的12个字节分别为应用标识、逐跳标识和端到端标识,其中应用标识用以指示消息所适用的应用:
逐跳标识用于帮助匹配请求与响应的对应关系,例如I-CSCF发UAR消息向HSS查询应选择哪个S-CSCF,HSS发UAA回应查询请求;UAR和UAA的逐跳标识是相同的。
端到端标识主要用于重复消息的检查。
消息头部之后为属性值对(AVP),一个消息中可以包括多个AVP。AVP中包含了认证、授权、计费、消息的路由和安全等信息。
● AVP的格式
V标志位表示本AVP有无Vendor-ID字段。若V标志位为1,则需要Vendor-ID不能为0。若V标志位为0,则表示没有Vendor-ID。
M标志位表示本AVP是否是强制性的。如果收到M为1的AVP,若Diameter客户端或服务器端或代理不能识别此AVP或AVP的值,必须丢弃此AVP。
P标志位表示本AVP是否需要端对端安全加密。
若V标志位为0,则AVP code使用的是IANA组织定义的AVP code值。基本协议中定义了一些基本的AVP Code和数据(Data)的类型。其中AVP Code 1至255用于与原有Radius协议兼容。各个应用协议也根据应用的不同分别定义了相应的AVP Code以及Data类型。由于AVP Code较多,这里不一一列举,仅举二例:
Vendor-ID为厂商的标识,例如3GPP组织的Vendor-ID为10415。若Vendor-ID不为0,则厂商可以定义自己的AVP code和Data类型。这里也仅举3GPP在TS29.229中定义的AVP的两个例子: