孙晓慧,石秀娟
(中国电子科技集团公司第五十四研究所,河北石家庄050081)
IP多媒体子系统是由第3代合作伙伴计划(3GPP)首先在R5中提出的支持IP多媒体业务的子系统(IMS),后由3GPP2、欧洲电信标准化协会(ETSI)和国际电信联盟(ITU)等组织采用。目前在实现网络融合愿望的驱动下,IMS已经由移动通信扩展到固网通信领域,希望籍此建立移动网络与固定网络统一的控制。IMS的最终目的是建立与接入无关、能被移动网络与固定网络共用的融合核心网,即能够为使用各种不同接入手段的用户提供融合的业务。
Diameter协议是RADIUS协议的一种演化,它是广泛应用于因特网中完成AAA功能的协议。Diameter被选为IMS的认证、授权和计费协议(AAA)。例如,当一个用户呼叫IMS业务控制接口(ISP)时,网络接入服务器采用Diameter来鉴别和授权用户进入网络。Diameter包含一个由Diameter应用作为补充的底层协议。Diameter应用是定制或扩展Diameter使其成为适用于某一特定环境的特殊应用。IMS的许多接口都使用Diameter,例如,IMS定义了一个Diameter应用在会话建立时与SIP联系,定义了另一个Diameter应用来完成计费控制。
Diameter基础协议注重能力协商、消息发送以及对等端如何最终被拒绝。基础协议还规定了特定规则用于Diameter节点之间所有的消息交换,并为各种应用提供了一个AAA框架。
一个Diameter节点具有和多个对等端通信的能力,但通常基于每个域,一个节点应该与2个对等端建立连接。2个Diameter对等端建立传输连接时,必须进行能力交换。能力交换消息包含对等端的标识和能力(协议版本号、支持的Diameter应用和安全机制等),如果能力交换请求消息的接收端与其发送端没有任何共同支持的应用程序,则必须返回原因值为“无共同应用”的应答消息,并且终止相互间的传输层连接。
Diameter基本协议运行在TCP和SCTP传输协议的端口3868上。Diameter客户端必须支持TCP或SCTP,代理和服务器必须二者都支持。
Diameter能够为应用提供认证和授权服务。当一个服务使用应用的认证和授权服务,且有用户请求接入网络,Diameter客户端会向本地服务器发送认证请求。服务器收到认证请求消息后,根据网络资源及请求消息中携带的属性值对来用户判断是否通过认证。
Diameter包含基础协议、传送协议和不同的应用扩展。所有应用和服务公用的基本功能都在基础协议中实现,而应用特定的功能则会在不同的应用中实施。Diameter在IMS中的接口关系如图1所示。
图1 Diameter接口关系
图1中的Cx接口、Sh接口、Dx接口和Dh接口使用Diameter协议,Cx接口位于呼叫会话控制功能(CSCF)和归属用户服务器(HSS)之间,主要完成以下功能:
①为注册用户指派S_CSCF;
②CSCF通过HSS查询路由信息;
③授权处理,检查用户漫游是否许可;
④鉴权处理,在HSS和CSCF之间传递用户的安全参数;
⑤过滤规则控制,从HSS下载用户的过滤参数到服务呼叫会话控制功能(S_CSCF)上。
Sh接口位于HSS和应用服务器(AS)之间,用于AS从HSS获取用户数据,以及HSS中用户数据更新时,通知AS。
Dx接口位于CSCF和签约定位器功能(SLF)之间,用于确定用户签约数据所在HSS的地址。Dh接口位于AS和SLF之间,用于AS到SLF定位HSS。
Diameter基础协议是实现所有接口的基本,Cx接口协议是IMS架构实现用户注册、位置管理和用户数据管理的重要接口。下面主要介绍Diameter基础协议和Cx接口的设计和实现过程。
2.1.1 模块划分
Diameter基础协议和Cx应用接口协议的组成主要包含面向节点模块、应用程序模块和维护软件。完成基础协议、Cx接口应用协议、消息转发和维护功能。客户端和服务器端的组成框图如图2所示。
面向节点模块实现Diameter基础协议,以及转发消息到相应的应用程序模块功能。
应用程序模块执行Cx接口的应用协议功能,以及发送消息到面向节点模块。
维护终端完成Cx接口的参数配置功能,包含私有用户标识、公有用户标识、过滤规则和一些默认处理。
图2 Diameter软件组成
2.1.2 流程设计
(1)Diameter基础协议设计
Diameter基础协议的重要部分是能力交换,用于2个Diameter对等端按照规定的交换能力交换信息,包括支持的 Diameter应用和安全机制等,由客户端和服务器端的面向节点完成。基础协议的流程设计如图3所示。
Diameter协议支持端到端的安全机制,支持TLS,TLS提供2个应用程序之间的保密性和数据完整性,支持信息摘要算法第5版(MD5算法)。输入一个任意长度的字节串,MD5算法生成一个128位的整数,算法具有不可逆特征,在加密应用上有较好的安全性。MD5算法首先进行信息扩展和数据填充,使信息位长=N×512+448+64=(N+1)×512,即长度恰好是512的整数倍,其中N为正整数,64表示数据填充之前的长度。然后设置链接变量,设置好链接变量以后,进入4轮循环运算,完成MD5算法全过程。例如:字符“a”经过MD5算法加密后,结果如下:
图3 基础协议流程设计
md5(“5”)=0cc175b9c0f1bba831c399e269772661
加密后的数据到达对端后,再将加密后的数据解密。
(2)Cx接口应用协议设计
Cx接口应用协议包含用户注册状态查询、用户位置信息查询、多媒体认证和更新用户信息等功能。实现Cx接口的各条消息和消息的方向如表1所示。
表1 Cx接口消息说明
2.2.1 实现环境及流程
Diameter协议软件实现采用C++语言编写,用g++进行编译,运行在Linux实时操作系统,实现了Diameter基础协议和Cx接口应用协议。其中,基础协议主要实现了能力交换功能。Cx接口应用协议主要实现了位置管理和用户数据处理,包括:
①UAR/UAA消息:实现HSS对用户公有用户标识注册、安全检查;I-CSCF获得S-CSCF信息;
②SAR/SAA消息:用于在HSS更新S-CSCF名称,S-CSCF从HSS下载用户数据文件;
③LIR/LIA消息:I-CSCF从HSS获取S-CSCF名称和能力;
④MAR/MAA消息:S-CSCF和HSS之间交换信息,以支持终端用户和归属IMS网络之间的鉴权过程。
Diameter协议软件分为服务器和客户端2个部分,服务器端将运行在应用服务器上,客户端软件运行在所有的被管理设备上。在图2所示的模块结构中,应用程序模块负责具体处理Cx接口应用协议消息,面向节点模块负责消息的转发。以用户认证请求为例,消息在各模块间的流程如图4所示。
图4 UAR消息实现流程
2.2.2 试验结果分析
Diameter协议的实现在工程应用中得到了验证,试验结构图如图5所示。2个SIP终端、Diameter客户端、Diameter服务器和应用服务器通过集线器(Hub)相连,由终端发起注册、SIP会话和应用服务器发起的去注册过程对Diameter的能力协商和Cx接口应用协议进行了试验,能够完成对终端的认证和授权过程,试验结果符合Diameter协议标准。
图5 Diameter试验结构
Diameter协议应用于IMS中,实现认证、授权和计费功能,已经在实际工程中得到应用。Diameter良好的开放性和扩展性决定了它在通信网络环境能够更好地支持各种应用,更加符合下一代网络技术中AAA业务的需求。Diameter协议在通信架构中将得到越来越多的应用。
[1]3GPP TS 29.229 V7.6.0.Diameter协议Cx和Dx接口[S].
[2]3GPP TS 29.228 V7.6.0.IP多媒体子系统Cx和Dx接口信令流和消息内容[S].
[3]IETF RFC 3588:2003.用于IP网络的Diameter基础协议技术要求[S].