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的两个例子:

无机太阳能电池
6个实用的电源设计技巧
南京大展热重分析仪在化工行业的应用
华为任正非:美国的一些政治家希望我们死
装设接地线的步骤_装设接地线注意事项
Diameter协议结构特点研究
远离卡顿媲美iPhone7,6GB大运存旗舰手机推荐
xCORE-200 MCU为何能做到音频和工业控制通吃?
Bosch Sensortec推出BMA580加速度传感器
语音识别芯片在车载智能语音控制系统中的应用!
有毒气体报警器应该如何使用
AMD RX 6000系列显卡今天终于开始解禁上市
浅析curvelet变换原理与理解
低功耗MSP430数据采集系统的USB接口设计
中国信通院发布《中国无线经济发展研究报告(2022年)》
如何帮助提高CPU分支跳转的正确率
计算机寄存器和存储器
飒特红外与大昕健康成功签订战略合作协议 赋能大健康
探讨医疗设备发展趋势:分辨率升级
机器学习在抑郁症领域的应用