基于Diameter协议的AAA系统计费技术研究
摘要为实现基于Diameter协议的AAA系统计费,研究了Diameter基本协议和扩展协议,阐述了基于Diameter协议的AAA系统的组成,体系结构及计费过程,设计了基于Diameter协议的AAA系统计费部分的服务器端和客户端,在上述工作基础上,对设计的AAA系统计费部分进行了实现。实现后的系统表明,本文所设计的AAA系统计费部分是可行的。
【关键词】Diameter协议 AAA系统 计费技术
1 引言
早期的Internet是一个非赢利性网络,随着Internet的发展,它已包括了众多的商业网络,人们对Internet计费也越来越关注。计费(accounting)过程包括以下子过程:计量(metering)、定价(pricing或rating)、费用计算(charging)和记帐(billing),在某些情况下,也有人使用计费的狭义,即认为计费仅仅是计量的过程。
AAA技术即认证(Authentication)、授权(Authorization)和计费(Accounting)三种技术的结合,目前已经广泛的应用到Internet业务服务中,为安全可靠的提供服务提供了保障。在Internet计费管理领域,互联网工程任务组IETF(Internet Engineering Task Force)和互联网研究任务组IRTF(Internet Research Task Force)起了很大的作用。AAA工作组是在操作和管理领域的一个IETF工作组,计费是其中一个重要的课题。
目前的计费协议主要有RADIUS,TACACS,SNMP等。随着网络技术发展和应用需求的增长,新的网络服务不断涌现,IETF的AAA工作组从上世纪90年代末期开始着手设计下一代的AAA协议Diameter。Diameter协议是目前网络AAA协议的研究热点,也是本文研究的重点。本文在研究Diameter协议的基础上,对AAA系统的计费部分进行了设计和实现。
2 Diameter协议研究
2.1Diameter协议的工作机制
Diameter由一个基本协议和一组扩展协议组成(比如强安全性扩展,Mobile IP扩展等),通用的功能(比如传输控制和流量控制)在基本协议中定义,而特定的应用功能在相应的扩展协议中进行说明。Diameter基本协议提供了AAA协议对传输所需要的最少要求,基本协议不能够单独使用,必须与一个Diameter应用扩展相结合。Diameter协议的层次结构如图1所示。
2.2 Diameter基本协议
Diameter的基本协议必须被所有应用支持,在基本协议中定义了Diameter消息包的格式、消息包的传输机制和一些基本的安全服务。一个基本的Diameter消息包由一个包头和多个AVP(Attribution Value Pair)组成,其中AVP用来携带更多的AAA信息(如认证计费授权信息,以及路由、安全信息等)。
2.2.1 Diameter网络节点
在Diameter协议中,包括多种类型的Diameter节点,除了Diameter客户端和Diameter服务器外,还有Diameter中继、Diameter代理、Diameter重定向器和Diameter协议转换器等。
2.2.2 Diameter消息格式
Diameter消息的头部包括20个字节,头4个字节是8比特的版本信息和24比特的消息长度(包括消息头长度),随后的4个字节是8比特的消息标志位和24比特的命令代码。
2.3 Diameter扩展协议
2.3.1 Diameter的NAS协议
Diameter的NAS(Network Access Service,网络接入服务协议)协议,由NAS客户机处理用户MN(Mobile Node,移动节点)的接入请求(RegReq),将收到的客户认证信息转送给NAS服务器;服务器对客户进行鉴别,将结果发给客户机;客户机通过接入应答(RegReply)将结果发回给MN,并根据结果对MN进行相应处理。
NAS作为网络接入服务器,在其用户端口接收到呼叫或服务请求时便开始与AAA服务器之间进行消息交换,有关呼叫的信息、用户身份和用户鉴别信息被打包成一种AAA消息发给AAA服务器。
2.3.2 Diameter的EAP协议
Diameter的EAP(Extensible Authentication Protocol,可扩展鉴别协议)协议提供了一个支持各种鉴别方法的标准机制。EAP其实是一种框架、一种帧格式,可以容纳各种鉴别信息。EAP协议描述用户、NAS(AAA客户机)和AAA服务器之间有关EAP鉴别消息的请求和应答的关系,完成一次对鉴别请求的应答,中间可能需要多次消息交换过程。在移动终端MN移动的环境下,MN与FA(Foreign Agent,外部代理 )之间的鉴别扩展采用EAP,即把FA看做是一个NAS,它作为Diameter AAA的客户机,Diameter AAA服务器作为EAP的后端服务器,两者之间载送EAP分组。
2.3.3 Diameter的CMS协议
Diameter的CMS(Cryptographic Message Syntax,密码消息语法)协议实现了协议数据的端到端(Peer-to-Peer)加密。由于Diameter网络中存在不可信的中继(Relay)和代理(Proxy),而IPSec(IP Security)和TLS(Transport Layer Security)又只能实现跳到跳的安全,所以IETF定义了Diameter的CMS应用协议来保证数据安全。
3 基于Diameter的AAA系统
3.1 AAA系统概述
AAA技术即认证、授权和计费三种技术的结合,目前已经广泛的应用到Internet业务服务中,为安全可靠的提供服务提供了保障。
3.2 AAA系统的组成
AAA系统的组成如图2所示,这种分布式结构由服务器来完成认证授权和计费工作,大大减轻了网关的压力,能够处理大量的用户请求,支持多种计费功能,可以对用户进行有效的控制,因而具有较强的生命力,在接入网中有着广泛的应用。
3.3 AAA系统的体系结构
AAA系统的体系结构如图3所示,在服务器和客户端之间运行AAA协议,这里采用Diameter协议。AAA客户端不提供任何服务,但它可以请求服务。AAA服务器通过接口连接特殊应用模块,特殊应用模块可以提供服务(移动IP接口、目录服务等)或者计费功能。服务器还有对外部认证模块的接口,以便可以使用多种认证技术。
AAA服务器或客户端通过标准化的域间AAA协议进行通信,客户端只需使用AAA协议消息的一部分。特殊应用模块和服务器之间的通信是域内的,但特殊应用模块也可以作为客户端使用。
3.4 AAA系统计费过程
当用户漫游到异地域时,对用户的计费有两种模式:一种是由家乡域的AAA服务器来生成计费记录,然后根据计费记录直接向相应的用户收取费用;另一种是由访问域的AAA服务器来生成计费记录,然后将计费记录返回给家乡域服务器,再由家乡域服务器根据计费记录向相应的用户收取费用。而当用户在家乡域通信时就由家乡域的AAA服务器对用户进行计费操作。
根据上述两种情况,图中的客户端为接入器,它可以访问域中用户新的接入器或者是用户在家乡域的接入器;而AAA服务器也可以是用户的家乡域的AAA服务器或者是访问域的AAA服务器。如图4所示,AAA系统计费过程描述如下:
(1)当客户端收到认证应答中的成功消息后,根据情况产生了用户计费请求,发送给AAA服务器,同时生成相关的计费记录,保存在客户端并把它发送给AAA服务器。客户端只有在接收到成功的记账应答消息时,才能清除已经发送的计费记录。
(2)当AAA服务器收到计费请求,首先判断该请求的目的域是否为本机,如果是则接受该请求,开始计费,生成相应的计费记录并保存,并且根据该请求产生相应的计费应答消息。否则判断该目的域是否可达,若可达则转发请求消息给相应的目的域的AAA服务器;不可达则不予处理,返回计费拒绝消息。当客户端收到计费拒绝消息,则中止用户接入,否则为用户提供相应的服务。
(3)当移动用户发生切换,用户主动发送会话中断请求给客户端,则发送连接中断请求给AAA服务器,AAA服务器中断计费,根据中断请求消息生成中断应答消息,将它和计费开始到中断的计费记录一并返回给客户端。
(4)当客户端收到中断应答消息时,中断对该用户提供的服务。
客户端只有在收到成功的计费响应时,才能清除已经发送的计费记录。当收到计费拒绝指示时,客户端将终止用户接入。
4 基于Diameter协议的AAA系统计费部分的设计
4.1 消息帧格式设计
首先,对Diameter服务器和客户机都要用到的计费消息的内容和格式进行规定,原则是最大可能接近原协议规定。Diameter服务器软件中的计费部分主要完成:收集从Diameter客户机发来的计费信息,并且存储在数据库中,然后向客户机发回应答等;用到的消息有ACR(Accounting Request,计费请求)和ACA(Accounting Answer,计费应答)。
Diameter客户机软件中的计费部分主要完成:从具体的应用协议软件(如Mobile IP)收集用户的计费信息,然后向Diameter服务器发起计费请求等。用到的消息有ACR和ACA。
4.2 计费系统服务器端设计
4.2.1 计费系统服务器端模块组成
计费系统服务器端模块组成如图5所示,包括数据库、Diameter服务器软件和操作系统。
4.2.2 计费系统服务器端工作流程
计费系统服务器端工作流程如图6所示。
4.3 计费系统客户端设计
4.3.1 计费系统客户端模块组成
计费系统客户端模块组成如图7所示,包括数据库、Diameter客户机软件和操作系统。
4.3.2 计费系统客户端工作流程
计费系统客户端工作流程如图8所示。
5 基于Diameter协议的AAA系统计费部分的实现
5.1 系统开发环境
本文设计的系统软件运行于Linux9.0.2操作系统或以上版本,自适应通信环境ACE、XERCESC++、BOOST等。具体需要的Lib库包括GUN g++ versions,Xerces C++ XML Parser,ACE library,BOOST library,OpenSSL,Autoconf,Automake等。
5.2 模块和库
实现的基本协议被分为四个逻辑模块,分别为:一个应用核心、一个会话管理模块、一个传输管理模块和一个消息解析模块。
5.3 基本消息处理
基本消息处理分为:消息的传输和会话的处理、消息解析两部分。
5.3.1 消息的传输和会话的处理
一个从远程对端接入的消息,最初的接收和处理是通过传输管理里的一个为远程对端服务的对端线程进行的。一旦完全收到,传输管理便可以部分的解析消息头和部分消息体,以决定是否需要转发。如果消息是发给远程主机的,消息被加入到工作队列里为终点对端服务的对端线程里;消息是本地处理的,传输管理则传输消息给会话管理。
5.3.2 消息解析
当一个Diameter消息从对端接收到,传输管理需要解析消息以决定消息是不是需要加入到消息解析队列里,并由会话管理进行进一步的处理或者将它转发给其它对端。在这种情况下,只有特定的AVP(如终点主机AVP和终点域AVP)需要被解析,而不是根据命令字典解析所有的AVP。当收到一个Diameter消息后由会话管理来进行处理,消息根据命令字典被会话管理器完全解析。
5.4 计费信息数据记录生成
计费信息数据以磁盘文件的方式存放在应用程序目录下,文件名为accountingnas.txt,每个数据记录对应文本文件中的一行。在系统中的具体实现如下:
5.4.1 相关的数据结构定义
typedef struct{
Utf8string Session-id;
Diamident Origin-hos;
Diamident Origin-realm;
Enumerated Accounting-record-type;
Unsigned32 Accounting-record-number;
Unsigned32 Acct-application-id;
Utf8string User-name;
Time Event-timestamp;
Unsigned64 Accounting-input-octets;
Unsigned32 Acct-session-time;
Unsigned64 Accounting-input-packets;
Unsigned64 Accounting-output-packets;
Unsigned32 Acct-link-count;
Unsigned32 Acct-delay-time;
}Acctrecord_NAS_EAP;
5.4.2数据表类的定义和实现
class Acctable_nas_eap{
private:
Acctrecord_nas_eap acctinfotable_record;
public:
Acctable_nas_eap();
~Acctable_nas_eap();
write(acctinfotable_record);
read(acctinfotable_record);
};
Acctrecord_nas_eap::Acctrecord_nas_eap()
{
打开当前目录下的accountingnas.txt文件;
}
Acctrecord_nas_eap::~Acctrecord_nas_eap()
{
关闭打开的accountingnas.txt文件;
}
void Acctrecord_nas_eap::write(acctinfotable_record)
{
向accountingnas.txt文件写入数据记录;
}
void Acctrecord_nas_eap::read(acctinfotable_record)
{
从accountingnas.txt文件读出数据记录;
}
6 结束语
本文在对Diameter协议进行研究的基础上,阐述了基于Diameter协议的AAA系统的组成、体系结构及计费过程,并对基于Diameter协议的AAA系统计费部分的服务器端和客户端进行了设计,最后对设计的AAA系统计费部分进行了实现,从而说明本文给出的AAA系统计费部分设计是可行的。
参考文献
[1]辜丽川,尹家生,张友华等.一种基于Diameter协议的NAS模型[J].计算机技术与发展,2008,18(10):184-186.
[2]周伟东,鄢楚平,孙硕.RADIUS协议安全与分析[J].计算机应用与软件,2002,(11):55-57.
[3]任祥颖,翁睿,凌力.AAA系统中Diameter协议故障恢复算法的改进和实现[J].计算机应用与软件,2007,24(5):139-142.
[4]裘妹平,陈能干.基于Diameter协议的AAA的研究[J].计算机应用,2003,23(10):119-125.
[5]赵源超,陈健,李道本.新一代的AAA协议-Diameter分析[J].中国数据通信,2004(11):52-56.
作者简介
林亮亮(1979-),女,黑龙江省绥化市人。硕士学位。现为国家知识产权局副调研员。主要研究方向为计算机软件技术。
作者单位
国家知识产权局北京市100088