专利名称:支持RADIUS协议的Diameter-AAA服务器及其工作方法
技术领域:
本发明涉及一种支持RADIUS协议的Diameter-AAA月良务器及其对 Diameter和RADIUS两种协议数据包进行相互转换的方法,属于通信技术领域。
背景技术:
AAA是才旨Authentication (鉴别)、Authorization ( 4受4又)和Accounting ( i十 费)。自网络诞生以来,认证、授权和计费体制(AAA)就成为其运营的基础。 网络中各类资源的使用,都要进行认证、授权和计费的管理。而AAA的发展 与变迁自始至终都受到运营商的关注。对于每个商业系统来说,鉴别是至关重 要的,只有确认了用户身份,才能知道所提供的服务应该向谁收费,同时才能 防止非法用户(黑客)对网络进行破坏。在确认用户身份后,系统根据用户开 户时所申请的服务类别,授予客户相应的权限。最后,在用户使用系统资源时, 再由相应设备来统计用户对资源的占用情况,据此向客户收取相应的费用。远程用户拨号认证系统RADIUS (Remote Authentication Dial In User Service )由RFC2865和RFC2866定义,是目前应用最广泛的AAA协议。RADIUS 协议最初目的是为拨号用户进行认证和计费。经过后来的多次改进,形成为一 项通用的认证计费协议。1992年秋天,IETF的NASREQ工作组成立后, RADIUS成为事实上的网络接入标准,几乎所有的网络接入服务器厂商均实现 了该协议。最新的RADIUS RFC2865发表于2000年6月。RADIUS是一种C/S结构的协议,它的客户端最初就是NAS (Net Access Server)服务器,现在任何运行RADIUS客户端软件的计算机都可以成为 RADIUS的客户端。RADIUS协议的认证机制灵活,可以采用PAP、 CHAP或 Unix登录认证等多种方式。RADIUS也是一种可扩展的协议,支持厂商扩充厂 家专有属性。RADIUS的基本工作原理是用户接入NAS, NAS向RADIUS服务器使用Access-Require数据包提交包括用户名、密码等的用户信息,其中 用户密码经过MD5加密,双方使用共享密钥,这个密钥不经过网络传播; RADIUS服务器先验证用户名和密码的合法性,也可以对NAS进行类似的认证; 如果合法,就给NAS返回Access-Accept数据包,允许用户进行后续操作,否 则返回Access-Reject数据包,拒绝用户访问。如果允许访问,NAS向RADIUS 服务器提出计费请求Account-Require, RADIUS服务器响应Account-Accept, 对用户开始计费,同时用户可以进行自己的相关操作。由于RADIUS协议简单明确,可扩充,因此得到了广泛应用,包括普通电 话上网、ADSL上网、小区宽带上网、IP电话、基于拨号用户的虚拟专用拨号 网业务VPDN (Virtual Private Dialup Networks )、移动电话预付费等业务。最近IEEE提出了 一种基于端口的标准,即802.1x标准,用于对无线网络 的接入认证,其在认证时也是采用RADIUS协议。但是,RADIUS协议本身存在较多缺陷,比如基于UDP的传输的简单丢 包机制、没有重传的规定和集中式计费服务,都使得它不甚适应当前网络的发 展,需要进一步改进。随着新的接入技术的引入(如无线接入、DSL、移动IP 和以太网)和接入网络的快速扩容,越来越复杂的路由器和接入服务器大量投 入使用,对AAA协议提出了新的要求,使得传统的RADIUS结构的缺点日益 明显。目前,3G网络正逐步向全IP网络演进,不仅在核心网使用支持IP的网 络实体,在接入网也使用基于IP的技术,而且移动终端也成为可激活的IP客 户端。如在WCDMA当前规划的R6版本就新增以下特性UTRAN和CN传 输增强,无线接口增强,多媒体广播和多播(MBMS),数字权限管理(DRM), WLAN-UMTS互通,优先业务,通用用户信息(GUP),网络共享,不同网络 间的互通等。在这样的网络中,移动IP将得到广泛使用。支持移动IP的终端 可以在注册的家乡网络中移动,或漫游到其他运营商的网络。当终端准备^J妻入 到网络,并使用运营商提供的各项业务时,就需要严格的AAA过程。AAA服 务器要对移动终端进行认证,授权允许用户使用相关业务,并收集用户使用资 源的情况,以产生计费信息。这就需要采用新一代AAA协议——Diameter。现在,IETF的AAA工作组已经同意将Diameter协议作为下一、戈的AAA 协议标准。作为RADIUS协议升级版本的Diameter协议包括基本协议和各种特 定的AAA应用服务协议,例如NAS (网络接入服务)协议,EAP (可扩展鉴 别)协议,MIP (移动IP)协议,CMS (密码消息语法)协议等。Diameter协 议支持移动IP、 NAS请求和移动代理的认证、授权和计费工作,协议的实现和 RADIUS类似,也是采用属性值对AVP (采用Attribute-Length-Value三元组形 式)来实现,但是其中详细规定了错误处理、故障切换(failover)和故障复原 (failback)机制,采用可靠的TCP和SCTP传输协议,支持分布式计费,克服 了 RADIUS的许多缺点,是最适合未来移动通信系统的AAA协议。由于Diameter较RADIUS更为复杂,而且RADIUS已经被广为应用,所 以短时间内Diameter协议不会占据AAA的主导。但是,可以预见,随着网络 的发展,Diameter协议必将会更加成熟和完善,得到广泛应用。参见图1 ,介绍现在已经研制成功并投入实际应用的Diameter-AAA服务器 的模块组成结构及其相应功能。Diameter-AAA服务器遵循RFC3588 Diameter 基础协议,并根据使用环境需要,能够提供一个或多个AAA应用服务,例如 NASREQ、 EAP、 MIP等。其内部包括以下才莫块TCP/SCTP交互模块,负责建立TCP或SCTP连接,收发Diameter消息。 并将收到的Diameter消息交给上层的对端管理模块和将对端管理模块要发送的 Diameter消息从通信链路上发出。对端管理模块,负责Diameter Peer (对端)的管理以及路由功能,内部记 录了该Diameter-AAA服务器已连接上的对端信息包括对端的IP地址、所属 的域,数据加密方式,对端支持的AAA应用服务,并为每个已连接的对端维 护一个标志连接状态的状态机,在该连接状态状态机对下述Diameter消息进行 处理能力交换(Capability Exchange )、心跳检测(Device Watchdog )、断开对 端(Disconnect Peer);如果Diameter消息的目的地是该AAA服务器,则将该 Diameter消息传送给上层的会话管理模块;如果接收到会话管理模块发送的 Diameter消息,则将其转发至下层的TCP/SCTP交互才莫块;会话管理模块,负责管理每个Diameter会话,该模块中设置并维护有一个 由会话标识Session-Id索引的AAA应用服务状态机表,如果收到的Diameter 消息中的Session-Id是一个已经存在的会话ID,则寻找其对应的AAA应用服 务状态机来处理该消息;如果不存在该Session-Id,就根据应用服务标识 Application-Id新生成一个AAA应用服务状态机,用于处理这个新的会话;AAA应用服务模块,负责实现AAA应用服务状态机的各种不同具体功能, 该模块从会话管理模块收到Diameter消息,根据其中的值,做出具体处理,再 生成回复的Diameter消息,并交由会话管理才莫块发送。Diameter-AAA服务器处理Diameter消息的流程如下TCP/SCTP交互模块 收到Diameter终端发来的一个数据报后,TCP/SCTP模块保证完整接收该数据 报,再将它交给对端管理模块处理。对端管理模块根据Diameter消息中的 Destination-Host和Destination-Realm AVP判断该Diameter消息是要本地处理还 是重定向到其他Diameter服务器。如果本地处理,则交给上层的会话管理模块, 否则,根据重定向规则,将消息重新通过TCP/SCTP模块发送到目的服务器。 会话管理模块收到Diameter消息后,根据Session-Id AVP判断该数据报是否为 已存在的会话的一部分,如果是,则找到相应的AAA应用服务状态机,交由 后者处理。如果Session-Id是一个没有记录的Session-Id,那么才艮据Diameter 消息中的应用服务标识Application-Id生成一个对应的AAA应用服务状态机, 并记录下该Session-Id,以后收到包含这个Session-Id的Diameter消息,都交给 这个状态机处理。AAA应用服务状态机则根据自己的服务需要,检查接收到的 属性键值对,生成回复的属性键值对,交给会话管理层发送。会话管理层再将 发送包转给对端管理模块,经由TCP/SCTP模块发回Diameter对端。因此,部署功能强壮、灵活、可靠的Diameter AAA系统,对于绝大部分准 备购买新设备或者需要支持代理及用户漫游的业务提供商来说,是个很好的选 择。但是,对于网络运营商而言,因为其前阶段已经在RADIUS上已经投入了 大量人力、物力,且在相当范围内RADIUS提供的功能能够满足目前和今后一 段时间内通信需要的系统里,同时存在两种协议终端RADIUS终端和Diameter12终端。为了解决两者之间的兼容,目前普遍采用的办法是在系统中增加一个进行两种协议信息转换处理的RADKJS/Diameter转换服务器(参见图2)。但是, 这样势必增加设备投资费用和信号的传输时延。 一种比较经济、合理、高效的 方式是选择支持双协议栈的AAA服务器,让RADIUS在原来的范围内继续提 供服务,而对于系统内新添加的设备则使用Diameter协议,为以后逐步过渡到 全Diameter AAA系统创造条件。所以,尽快研制成功一种支持双协-汉栈的AAA 服务器就成为业内技术人员关注的焦点。发明内容有鉴于此,本发明的目的是提供一种支持RADIUS协议的Diameter-AAA 服务器以及该服务器处理Diameter和RADIUS两种协议数据包相互转换的方 法,以解决目前网络的急需,在为新建立的Diameter网络提供AAA应用服务 的同时,也为该系统中的RADIUS协议终端继续提供AAA服务,并为以后逐 步过渡到全Diameter AAA系统创造条件。为了达到上述目的,本发明提供了 一种支持RADIUS协议的Diameter-AAA 服务器,是使用统一的用户信息,同时为Diameter和RADIUS两种不同协议终 端提供AAA应用服务的服务器;包括顺序连接的TCP/SCTP交互模块、对 端管理模块、会话管理模块和AAA应用服务模块;其特征在于,该服务器还 增设有下述软件功能模块UDP交互模块,用于接收RADIUS客户端发来的UDP数据报,并将该UDP 数据报中的RADIUS消息送交给上层的转换模块进行处理;同时负责将转换模 块送来的UDP数据报文经由传输线路发送给RADIUS客户端;转换模块,负责将接收的RADIUS协议的属性键值对Attribute转换成 Diameter属性4走值对AVP,以及将要发送的Diameter协议的属性4建值对AVP 转换为RADIUS属性4建值对Attribute;RADIUS对端管理模块,负责管理和维护RADIUS客户端与该AAA服务 器的连接,内部设有为每个已建立连接的RADIUS客户端存储相关信息的对端状态机,用于记录已与该AAA服务器实现连接的RADIUS客户端信息包括 IP地址、验证端口、授权端口、数据加密方式和该客户端请求的AAA应用服 务;该RADIUS对端状态机将UDP交互模块接收到的RADIUS消息先送至转 换模块进行转换处理后,再转发至上层的会话管理模块;并将接收到的会话管 理模块发送来的Diameter消息,先送至转换模块进行转换处理后,再转发至下 层的UDP交互4莫块。为了达到上述目的,本发明还提供了一种采用支持RADIUS协议的 Diameter-AAA服务器对Diameter和RADIUS两种协议数据包进行相互转换的 方法,其特征在于虽然Diameter协议能够兼容RADIUS协议,但是,由于 Diameter协议增加了新的功能以及Diameter AVP和RADIUS Attribute数据包的 格式不完全相同,部分RADIUS属性键值对Attribute在Diameter中将被转换 为其他的属性键值对AVP,即二者之间的转换并不是完全一一对应的,要处理 一些特殊情况;包括下列操作步骤(1) 采用消息头转换和消息体转换两个步骤,完成将RADIUS消息转换 为Diameter消息的数据包转换,且两个转换操作的先、后顺序是不限定的;(2) 先进行消息体转换,再进行消息头转换,以实现Diameter应答消息 转换为RADIUS应答消息。本发明是一种支持RADIUS协议的Diameter-AAA服务器及该服务器对 Diameter和RADIUS两种协议数据包进行相互转换的方法,其中釆用在 Diameter服务器的原有架构上再添加RADIUS软件转换功能冲莫块,实现了 一个 同时支持Diameter与RADIUS的双协议栈AAA服务器。该装置通过添加UDP 交互模块、RADIUS对端管理模块和转换模块,就能够将一个RADIUS对端模 拟成Diameter对端,并将RADIUS协议数据包翻译成Diameter协议数据包, 从而实现由该Diameter-AAA服务器处理RADIUS相关消息。因此,该月良务器 构思巧妙、结构简单、工作可靠,容易实现、便于运维。此外,本发明还提出 的一种该服务器对Diameter和RADIUS两种协议数据包进行相互转换的方法、 具体操作内容和转换规则,使得该服务器能够在混有RADIUS和Diameter两种终端的网络中可以正确、高效地运行。使得本发明服务器特别适合在RADIUS 终端和Diameter终端混合使用的过渡系统中使用。为存有RADIUS终端的遗留 系统向全Diameter终端系统的演进供了筒洁高效的解决方案。
图1是Diameter-AAA服务器内部模块结构组成示意图。图2是两种协议终端同时共存网络釆用协议转换服务器的应用场景示意图。图3 (A)、 (B)分别是Diameter消息的组成架构图和其中单个属性4建值 对AVP的组成架构图。图4 ( A)、 (B)分别是RADIUS消息的组成架构图和其中单个属性键值对 Attribute的组成架构图。图5是本发明支持RADIUS的Diameter服务器的内部模块结构组成示意图. 图6是本发明支持RADIUS的Diameter服务器的应用场景示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作 进一步的详细描述。参见图3,介绍由消息头和消息体组成的Diameter消息结构格式和每个属 性建值对的格式,其中消息头包括版本、消息长度、命令标识、命令代码、 应用服务标识、点到点标识和端到端标识,消息体则由一个或多个属性4定值对 AVP组成。每个属性键值对通常是以该属性键值对的属性代码或名称来称呼之, 例如属性代码为Destination-Host (目标主机)的属性4建值对就称为 Destination-Host AVP或目标主机属性键值对。每个属性键值对提供AAA应用 服务所需要的一个设定参数。例如目标主机Destination-Host属性键值对提供 目标主机的IP地址,目标域Destination-Realm属性键值对提供目标主机所在的 域信息,会话标识Session-Id属性键值对提供会话ID信息,应用服务标识Application-Id属性键值对用于指定处理该Diameter消息的AAA应用服务。参见图4,介绍由消息头和消息体组成的RADIUS消息结构格式及其每个 属性建值对的格式,其中消息头包括命令代码、命令序号、命令长度和消息 验证码,消息体则由一个或多个属性键值对Attributes组成。参见图5,介绍本发明支持RADIUS协议的Diameter-AAA服务器,它是 使用统一的用户信息,同时为Diameter和RADIUS两种不同协议终端提供AAA 应用服务的服务器,即同时支持RADIUS终端与Diameter终端的AAA服务器。 该服务器除了包括顺序连接的TCP/SCTP交互模块、对端管理模块、会话管理 模块和AAA应用服务模块外,还增设了用于支持RADIUS协议终端的UDP交 互模块、转换模块和RADIUS对端管理模块,其中各个软件模块的功能分别是UDP交互模块,用于接收RADIUS客户端发来的UDP数据报,并将该UDP 数据报中的RADIUS消息送交给上层的转换模块进行处理;同时负责将转换模 块送来的UDP数据报文经由传输线路发送给RADIUS客户端。转换模块,负责将接收的RADIUS协议的属性键值对Attribute转换成 Diameter属性键值对AVP,以及将要发送的Diameter协议的属性键值对AVP 转换为RADIUS属性键值对Attribute。RADIUS对端管理冲莫块,负责管理和维护RADIUS客户端与该AAA服务 器的连接,内部设有为每个已建立连接的RADIUS客户端存储相关信息的对端 状态机,该RADIUS对端连接状态机不需要发送或处理能力交换(Capability Exchange )、心跳才企测(Device Watchdog )、断开对端(Disconnect Peer)消息。 但是要记录已与该AAA服务器实现连接的RADIUS客户端信息包括IP地址、 验证端口、授权端口、数据加密方式和该客户端请求的AAA应用服务等。该 RADIUS对端状态机将UDP交互模块接收到的RADIUS消息先送至转换;漠块 进行转换处理后,再转发至上层的会话管理模块;并将接收到的会话管理模块 发送来的Diameter消息,先送至转换模块进行转换处理后,再转发至下层的 UDP交互模块。TCP/SCTP交互模块,负责建立TCP或SCTP连接,收发Diameter消息,并将收到的Diameter消息交给上层的对端管理模块和将对端管理模块要发送的 Diameter消息/人通信《连;洛上发出。对端管理模块,负责Diameter对端Peer的管理和路由功能,内部记录有已 与该Diameter-AAA服务器建立连接的、包括IP地址、所属的域,数据加密方 式,其支持的AAA应用服务的对端信息,并为每个已连接的对端维护一个标 志连接状态的状态机,在该连接状态状态机中对包括能力交换Capability Exchange、 心3兆冲企测Device Watchdog、 断开对端Disconnect Peer的Diameter 消息进行处理并将接收到的目的地是该AAA服务器的Diameter消息送交给 上层的会话管理模块,以及将其接收到的会话管理模块发送的Diameter消息, 转发至下层的TCP/SCTP交互模块。会话管理模块,负责管理每个Diameter会话,该模块中设置并维护有一个 由会话标识Session-Id索引的AAA应用服务状态才几表,当接收到的Diameter 消息中的Session-Id是一个已经存在的会话ID ,则寻找与其对应的AAA应用 月PL务状态机来处理该消息;如果不存在该Session-Id,就才艮据应用服务标识 Application-Id新生成一个AAA应用服务状态机,用于处理这个新的会话。AAA应用服务;^莫块,用于实现AAA应用服务状态机的具体功能,所述状 态机根据不同的AAA应用服务会有所不同,该模块从会话管理模块收到 Diameter消息,根据其中的值,进行不同的具体处理,并生成Diameter回复消 息,交由会话管理模块发送。下面详细说明本发明力l务器对Diameter和RADIUS两种协议凄t据包进行相 互转换的方法,众所周知,RADIUS和Diameter协议的AAA功能的实现都是 基于在终端与服务器之间交换属性键值对AVP (Attribute-Length-Value)的向量 数据包进行的(为了区分两种协议的属性键值对,将Diameter中属性键值对称 为AVP, RADIUS属性键值对称为Attribute或简称为RADIUS属性,同样以 Attribute的属性代码值来称呼特定的Attribute为某某属性或XXX Attribute )。虽然Diameter协议能够兼容RADIUS协议,但是,由于Diameter协议增加 了新的功能以及Diameter AVP和RADIUS Attribute数据包的格式不完全相同(参见图3和图4 ),部分RADIUS属性键值对Attribute在Diameter中将被转 换为其他的属性键值对AVP,即二者之间的转换并不是完全透明的,即不是完 全——对应的,仍需要处理一些特殊情况。该转换方法包括下列两个操作步骤步骤(1 )、采用消息头转换和消息体转换两个步骤,完成将RADIUS消息 转换为Diameter消息的数据包转换,且两个转换操作的先、后顺序是不限定的;步骤(2)、先进行消息体转换,再进行消息头转换,以实现Diameter应答 消息转换为RADIUS应答消息。其中步骤(1 )进一步包括下列操作内容(11)进行消息头转换根据RADIUS消息中的信息,生成Diameter消息 头,即根据RADIUS消息头中的命令代码和该RADIUS消息中是否含有某个或 多个应用服务特定的属性键值对来生成Diameter消息头中的应用服务标识ID 和命令代码;例如RADIUS命令代码为接入请求(Access-Request ),且RADIUS 消息中含有EAP消息(EAP-Message)属性,那么对应的Diameter消息头中命 令代码为EAP请求(EAP-REQEST ),应用服务ID为Diameter-EAP。并在转 换模块中保存该RADIUS消息的消息验证码和命令序号,再将Diameter消息头 中的命令标识设置为对应的标识;由于会话管理模块及后续模块不使用 Diameter消息头中的其他信息,因此其他字段不用填入特定值;(12 )进行消息体转换因为RADIUS消息中的每个属性一建值对Attribute 基本独立,与其他Attribute是否存在及其取值无关,故逐个进行RADIUS请求 消息中属性键值对Attribute到Diameter请求消息属性键值对AVP的转换,且 没有次序的限制。RADIUS请求消息中Attribute到Diameter请求消息AVP的 转换能够大部分实现一对一的转换,此时只需要将RADIUS Attribute属性代码 值作为Diameter AVP属性代码值,4字节对齐地将Attribute的键值填入AVP 键值后,再将4字节对齐后的AVP键值长度填入AVP属性键值对长度字段, AVP标识字段填入默认值。在执行该步骤(12)进行消息体转换时,个别RADIUS Attribute不能简单 地直接转换为Diameter AVP,其处理规则由使用该Attribute的AAA应用服务决定;其中适用于所有AAA应用服务的需要特殊处理的RADIUS Attribute的 处理原则如下如果RADIUS消息存在消息验证属性Message-Authenticator Attribute,那 么它的值必须被验证,但是不生成对应的Diameter AVP。而且,如果验证不成 功,则丢弃该整个RADIUS消息。RADIUS消息发送者的传输层地址必须和消息体中包含的网络接入系统 NAS标识相符合,该NAS标识包括两个属性字段NAS标识NAS-Identifier 和NAS IP地址NAS-IP-Address (详见下文)。转换中要维护包括RADIUS消息头中的命令序号字段、任何携带的代理状 态属性键值对Proxy-State Attribute, RADIUS协议UDP包的源地址和源端口号 在内的信息,并将这些信息保存在本地的一个消息转换表中。如果RADIUS请求消息包含一个状态属性State Attribute,且该属性值以 "Diameter/"开头,则其后数据包含Diameter协议的"源主机/源域/会话ID"信 息Origin-Host/Origin-Realm/Session-Id;如杲该属性不存在,则产生一个新的 Diam改er会话标识ID ( Diameter会话ID格式以及生成办法见rfc3588 ),并将 该会话标识ID放入转换后的会话ID属性键:值对Session-Id AVP中。Diameter消息中的源主才凡Origin-Host和源域Origin-Realm两个属性键值 对必须由NAS-IP-Address和NAS-Identifier属性对应的域名全称信息生成,并 加入转换后的Diameter消息中。由RADIUS用户名属性User-Name Attribute中的信息生成目标域属性键:值 对Destination-Realm AVP 。在执行步骤(12)中,当AAA应用服务是可扩展验证协议EAP,在执行 RADIUS-EAP到Diameter-EAP的消息体转换时,进一步包括下述特定的转换 操作步骤将RADIUS-EAP消息包含的属性键值对EAP-Message Attribute转换为 Diameter EAP负载属性键值对EAP-Payload AVP,如果存在多个RADIUS EAP-Message属性4定值对,则将其中的值合并方文入一个Diameter EAP-PayloadAVP中;长度为2字节的RADIUS EAP-Message Attribute,即EAP-Message的值为 空,代表EAP-Start,转换为空的EAP-Payload AVP 。其中步骤(2)进一步包括下列操作内容 (21 )进行消息体转换先逐个地将Diameter应答消息中的属性键:值对AVP 转换为RADIUS应答消息的属性键值对Attribute;其中要做的特殊处理操作为如果被触发应答的RADIUS请求消息携带代理状态属性键值对Proxy-State Attribute,则将本地緩存的请求消代理状态属性键值对Proxy-State加入该应答 消息中。如果Diameter消息中含有会话超时属性键值对Session-Timeout AVP,但是 没有授权生命期属性4建值对Authorization-Lifetime AVP,则将其转换为RADIUS 会话超时属性键值对Session-Timeout Attribute,但不生成终止操作属性键值对 Termination-Action Attribute 。如果Diameter消息含有授权生命期属性键值对Authorization-Lifetime AVP, 但是没有会话超时属性键值对Session-Timeout AVP,则将其转换为RADIUS会 话超时属性键值对Session-Timeout Attribute,并插入一个值为AA-REQEST的 终止操作属性4定值对Termination-Action Attribute;并在转换后,丢弃授权生命 期属性键值对Authorization-Lifetime AVP和重验证请求类型属性键值对 Re-Auth-Request-Type AVP。如果Diameter消息同时含有会话超时属性键值对Session-Timeout AVP和授 斥又生命期属性键:值对Authorization-Lifetime AVP,则前者Session-Timeout必然 大于等于后者Authorization-Lifetime;此时将Authorization-Lifetime AVP的〈直转 换为RADIUS会话超时属性4建值对Session-Timeout Attribute,并且将RADIUS 终止操作属性4建值对Termination-Action Attribute设为AA-REQUEST,再在转 换后,丢弃授权生命期属性键值对Authorization-Lifetime AVP和重验证请求类 型属性4建值对Re-Auth-Request-Type AVP;根据緩存的RADIUS终端UDP IP以及端口号发回RADIUS应答消息。在步骤(21 )中,如果AAA应用服务是EAP,则进行Diameter-EAP到 RADIUS-EAP的消息体转换时,要遵守下述原则执行转换操作步骤如果Diameter消息头命令代码为EAP-Answer,并且操作结果属性键值对 Result-Code AVP的键值为DIAMETER_MULTI_ROUND_AUTH,则将该消息 转换为RADIUS Access-Challenge消息,同时将Diameter源主机、源域、会话 ID三个属性键值对Origin-Host、 Origin-Realm、 Session-Id AVP的键值内容采用 '7"符号分割,并加上前缀"Diameter/"而封装为一个RADIUS状态属性键值 对State Attribute;如果存在多回合超时属性键值对Multi-Round-Time-Out AVP, 则将它的值装入RADIUS会话超时属性键值对Session-Timeout Attribute中。将Diameter EAP-Payload AVP转换为RADIUS EAP-Message属性4建值对 时,如果EAP-Payload AVP的长度超过RADIUS属性键值对所允许的最大长度, 则将其分拆为多个EAP-Message属性-睫值对。Diameter EAP重发起负载属性4建值对EAP-Reissued-Payload AVP应被转换 为一个或多个RADIUS EAP-Message属性键值对,同时将RADIUS错误原因 属性键值对Error-Cause Attribute的值设置为202 (十进制),也就是"无效的 EAP包(忽略),,Invalid EAP Packet—Ignored。Diameter EAP会话主4定属性一建值对EAP-Master-Session-Key AVP应^皮转换 为厂家专有的RADIUS MS-MPPE-Recv-Key和MS-MPPE-Send-Key属性键值 对;EAP-Master-Session-Key的前32字节放入MS-MPPE-Recv-Key中,后32 字节放入MS-MPPE-Send-Key中。如果存在 Diameter EAP 验证方式计费属性键值对 Accounting-EAP-Auth-Method AVP ,则将其丢弃。(22 )进行消息头转换生成RADIUS消息体后,再冲艮据Diameter消息中 的相关信息,生成RADIUS消息头。该步骤(22)进一步包括下列操作内容(221)根据Diameter消息中的操作结果Result-Code AVP的值,生成 RADIUS命令代码,如果Result-Code为"多回合交互验证,, Diameter-Multi-Round-Auth: 1001,贝'J RADIUS命令代码为Access-Challenge(11);如果Result-Code AVP值为验证成功,即Result-Code的取值区间范围是 (2000, 3000),则RADIUS命令代码为Access-Accept ( 2 );如果Result-Code 为马全证失败,贝'j RADIUS命令代码为Access-Reject。(222 )将保存的RADIUS请求消息命令序号填入RADIUS应答消息命令序号;(223 )计算新生成的RADIUS消息长度,再将该数值填入命令长度中; (224)根据在转换模块中保存的RADIUS请求消息的消息验证码和新生 成的RADIUS消息,生成应答消息的消息验证码。本发明已经研制了同时支持Diameter与RADIUS的双协议栈AAA服务器 样机,并进行了实施试验和测试。试验结果表明,该服务器在混有RADIUS和 Diameter终端的网络中可以正确、高效地工作,实现了发明目的。这种服务器 非常适宜在RADIUS终端和Diameter终端混合使用的过渡网络系统中应用,具 有很好的推广应用前景。
权利要求
1、一种支持RADIUS协议的Diameter-AAA服务器,是使用统一的用户信息,同时为Diameter和RADIUS两种不同协议终端提供AAA应用服务的服务器;包括顺序连接的TCP/SCTP交互模块、对端管理模块、会话管理模块和AAA应用服务模块;其特征在于,该服务器还增设有下述软件功能模块UDP交互模块,用于接收RADIUS客户端发来的UDP数据报,并将该UDP数据报中的RADIUS消息送交给上层的转换模块进行处理;同时负责将转换模块送来的UDP数据报文经由传输线路发送给RADIUS客户端;转换模块,负责将接收的RADIUS协议的属性键值对Attribute转换成Diameter属性键值对AVP,以及将要发送的Diameter协议的属性键值对AVP转换为RADIUS属性键值对Attribute;RADIUS对端管理模块,负责管理和维护RADIUS客户端与该AAA服务器的连接,内部设有为每个已建立连接的RADIUS客户端存储相关信息的对端状态机,用于记录已与该AAA服务器实现连接的RADIUS客户端信息包括IP地址、验证端口、授权端口、数据加密方式和该客户端请求的AAA应用服务;该RADIUS对端状态机将UDP交互模块接收到的RADIUS消息先送至转换模块进行转换处理后,再转发至上层的会话管理模块;并将接收到的会话管理模块发送来的Diameter消息,先送至转换模块进行转换处理后,再转发至下层的UDP交互模块。
2、 根据权利要求l所述的服务器,其特征在于所述服务器的其它软件模 块的功能分别是TCP/SCTP交互模块,负责建立TCP或SCTP连接,收发Diameter消息, 并将收到的Diameter消息交给上层的对端管理^t块和将对端管理;溪块要发送的 Diameter消息从通信链路上发出;对端管理;^莫块,负责Diameter对端Peer的管理和^^由功能,内部记录有已 与该Diameter-AAA服务器建立连接的对端信息包括IP地址、所属的域,数据加密方式,其支持的AAA应用服务,并为每个已连接的对端维护一个标志 连接状态的状态机,在该连接状态状态才几中对包括能力交换Capability Exchange、 心貝匕才全观寸Device ^Vatchdog、 断开乂f端Disconnect Peer的Diameter 消息进行处理并将接收到的目的地是该AAA服务器的Diameter消息送交给 上层的会话管理模块,以及将其接收到的会话管理模块发送的Diameter消息, 转发至下层的TCP/SCTP交互模块;会话管理模块,负责管理每个Diameter会话,该模块中设置并维护有一个 由会话标识Session-Id索引的AAA应用服务状态机表,当接收到的Diameter 消息中的Session-Id是一个已经存在的会话ID,则寻找与其对应的AAA应用 服务状态机来处理该消息;如果不存在该Session-Id,就根据应用服务标识 Application-Id新生成一个AAA应用服务状态机,用于处理这个新的会话;AAA应用服务模块,用于实现AAA应用服务状态机的具体功能,所述状 态机根据不同的AAA应用服务会有所不同,该模块从会话管理模块收到 Diameter消息,根据其中的值,进行不同的具体处理,并生成Diameter回复消 息,交由会话管理模块发送。
3、 一种采用权利要求1所述的服务器对Diameter和RADIUS两种协议数 据包进行相互转换的方法,其特征在于虽然Diameter协议能够兼容RADIUS 协议,但是,由于Diameter协议增加了新的功能以及Diameter AVP和RADIUS Attribute数据包的才各式不完全相同,部分RADIUS属性键值对Attribute在 Diameter中将被转换为其他的属性键值对AVP,即二者之间的转换并不是完全 一~"对应的,要处理一些特殊情况;包括下列操作步骤(1) 采用消息头转换和消息体转换两个步骤,完成将RADIUS消息转换 为Diameter消息的数据包转换,且两个转换才喿作的先、后顺序是不限定的;(2) 先进行消息体转换,再进行消息头转换,以实现Diameter应答消息 转换为RADIUS应答消息。
4、 根据权利要求3所述的两种协议数据包进行相互转换的方法,其特征在 于所述步骤(1)进一步包括下列操作内容(11)进行消息头转换根据RADIUS消息中的信息,生成Diameter消息 头,即根据RADIUS消息头中的命令代码和该RADIUS消息中是否含有某个或 多个应用服务特定的属性4建值对来生成Diameter消息头中的应用l良务标识ID 和命令代码;并在转换模块中保存该RADIUS消息的消息验证码和命令序号, 再将Diameter消息头中的命令标识设置为对应的标识;由于会话管理模块及后 续模块不使用Diameter消息头中的其他信息,因此其他字段不用填入特定值;(12 )进行消息体转换因RADIUS消息中的每个属性键值对Attribute基 本独立,与其他Attribute是否存在及其取值无关,故逐个进行RADIUS请求消 息中属性键值对Attribute到Diameter请求消息属性键值对AVP的转换此时 只需要将RADIUS Attribute属性代码值作为Diameter AVP属性代码值,4字节 对齐地将Attribute的键值填入AVP键值后,再将4字节对齐后的AVP 4定值长 度填入AVP属性键值对长度字段,AVP标识字段填入默认值。
5、根据权利要求4所述的两种协议数据包进行相互转换的方法,其特征 在于所述步骤(12)进行消息体转换时,个别RADIUS Attribute不能简单地 直接转换为Diameter AVP,其处理规则由使用该Attribute的AAA应用服务决 定;其中适用于所有AAA应用服务的需要特殊处理的RADIUS Attribute的处 理原则如下如果RADIUS消息存在消息-睑i正属性Message-Authenticator Attribute,则 必须先验证其值,但不生成对应的Diameter AVP;且如果验证不成功,则丢弃 该RADIUS消息;RADIUS消息发送者的传输层地址必须和消息体中包含的网络接入系统 NAS标识相符合,所述NAS标识包括两个属性字段NAS标识NAS-Identifier 和NAS IP地址NAS-IP-Address;转换中要维护包括RADIUS消息头中的命令序号字段、代理状态属性键值 对Proxy-State Attribute 、 RADIUS协议UDP包的源地址和源端口号在内的信息, 并将这些信息保存在本地的一个消息转换表中;如果RADIUS请求消息包含一个状态属性State Attribute,且该属性值以"Diameter/"开头,则其后数据包含Diameter协议的"源主机/源域/会话ID"信 息Origin-Host/Origin-Realm/Session-Id;如果该属性不存在,则产生一个新的 Diameter会话标识ID,并将该会话标识ID力文入转换后的会话ID属性键值对 Session-Id AVP中;Diameter消息中的源主才几Origin-Host和源域Origin-Realm两个属性键 f直 对必须由NAS-IP-Address和NAS-Identifier属性对应的域名全称信息生成,并 加入转换后的Diameter消息中;由RADIUS用户名属性User-Name Attribute中的信息生成目标域属性4建值 对Destination-Realm AVP 。6、 根据权利要求4所述的两种协议数据包进行相互转换的方法,其特征在 于所述步骤(12)中,当AAA应用服务是可扩展验证协议EAP,在执行 RADIUS-EAP到Diameter-EAP的消息体转换时,进一步包括下述转换操作步骤将RADIUS-EAP消息包含的属性键值对EAP-Message Attribute转换为 Diameter EAP负载属性4建4直对EAP-Payload AVP,如果存在多个RADIUS EAP-Message属性键值对,则将其中的值合并放入一个Diameter EAP-Payload AVP中;长度为2字节的RADIUS EAP-Message Attribute,即EAP-Message的值为 空,代表EAP-Start ,转换为空的EAP-Payload AVP 。7、 根据权利要求3所述的两种协议数据包进行相互转换的方法,其特征在 于所述步骤(2)进一步包括下列操作内容(21 )进行消息体转换先逐个地将Diameter应答消息中的属性键值对AVP 转换为RADIUS应答消息的属性键值对Attribute;(22 )进行消息头转换生成RADIUS消息体后,再根据Diameter消息中 的相关信息,生成RADIUS消息头。8、 根据权利要求7所述的两种协议数据包进行相互转换的方法,其特征 在于所述步骤(21)进行消息体转换时,要执行下述特殊处理操作如果被触发应答的RADIUS请求消息携带代理状态属性键值对Proxy-StateAttribute,则将本地緩存的请求消代理状态属性键值对Proxy-State加入该应答 消息中;如果Diameter消息中含有会话超时属性键值对Session-Timeout AVP,但是 没有授权生命期属性4建值对Authorization-Lifetime AVP,则将其转换为RADIUS 会话超时属性键值对Session-Timeout Attribute,但不生成终止才喿作属性4建值对 Termination-Action Attribute;如果Diameter消息含有授权生命期属性4建值对Authorization-Lifetime AVP, 但是没有会话超时属性键值对Session-Timeout AVP,则将其转换为RADIUS会 话超时属性键:值对Session-Timeout Attribute,并插入一个值为AA-REQEST的 终止才乘作属性4建值对Termination-Action Attribute;并在转换后,丢弃授4又生命 期属性键值对Authorization-Lifetime AVP和重验证请求类型属性键值对 Re-Auth-Request-Type AVP;如果Diameter消息同时含有会话超时属性键值对Session-Timeout AVP和授 权生命期属性键值对Authorization-Lifetime AVP,则前者Session-Timeout必然 大于等于后者Authorization-Lifetime;此时将Authorization-Lifetime AVP的4直專争 换为RADIUS会话超时属性键:值对Session-Timeout Attribute,并且将RADIUS 终止才喿作属性4建值对Termination-Action Attribute设为AA-REQUEST,再在转 换后,丢弃授权生命期属性键值对Authorization-Lifetime AVP和重验证请求类 型属性键:值对Re-Auth-Request-Type AVP;冲艮据緩存的RADIUS终端UDP IP和端口号发回RADIUS应答消息。9、根据权利要求7所述的两种协议数据包进行相互转换的方法,其特征在 于所述步骤(21)中,当AAA应用服务是可扩展鉴别协议EAP而进行 Diameter-EAP到RADIUS-EAP的消息体转换时,要遵守下述原则执行转换冲喿 作步骤如果Diameter消息头命令代码为EAP-Answer,并且操作结果属性键值对 Result-Code AVP的键值为DIAMETER_MULTI—ROUND_AUTH,则将该消息 转换为RADIUS Access-Challenge消息,同时将Diameter源主机、源域、会话ID三个属性4定值对Origin-Host、 Origin-Realm、 Session-Id AVP的4建值内容采用 7"符号分割,并加上前缀"Diameter/"而封装为一个RADIUS状态属性键值 对State Attribute;如果存在多回合超时属性4建值对Multi-Round-Time-Out AVP, 则将它的值装入RADIUS会话超时属性键值对Session-Timeout Attribute中;将Diameter EAP-Payload AVP转换为RADIUS EAP-Message属性键:值对 时,如果EAP-Payload AVP的长度超过RADIUS属性键值对所允许的最大长度, 则将其分拆为多个EAP-Message属性键值对;Diameter EAP重发起负载属性键值对EAP-Reissued-Payload AVP应被转换 为一个或多个RADIUS EAP-Message属性键值对,同时将RADIUS错误原因 属性键值对Error-Cause Attribute的值设置为十进制的202,即无效的EAP包 Invalid EAP Packet, Ignored;Diameter EAP会话主4定属性4建值对EAP-Master-Session-Key AVP应孚皮转换 为厂家专有的RADIUS MS-MPPE-Recv-Key和MS-MPPE-Send-Key属性键值 对;EAP-Master-Session-Key的前32字节放入MS-MPPE-Recv-Key中,后32 字节放入MS-MPPE-Send-Key中;如果存在 Diameter EAP 验证方式计费属性键值对 Accounting-EAP-Auth-Method AVP ,则4夺其丢弃。10、根据权利要求7所述的两种协议数据包进行相互转换的方法,其特征 在于所述步骤(22)进一步包括下列#:作内容(221) 根据Diameter消息中的操作结果Result-Code AVP的值,生成 RADIUS 命令代码,如果 Result-Code 为多回合交互-睑i正 Diameter-Multi-Round誦Auth: 1001,贝'J RADIUS命令代码为Access-Challenge(11);如果Result-Code AVP值为验证成功,即Result-Code的取值范围是(2000, 3000 ),则RADIUS命令代码为Access-Accept (2 );如果Result-Code为验证失 败,贝'J RADIUS命令代码为Access-Reject;(222) 将保存的RADIUS请求消息命令序号填入RADIUS应答消息命令序号;7(223 )计算新生成的RADIUS消息长度,再将该数值填入命令长度中; (224)根据在转换模块中保存的RADIUS请求消息的消息验证码和新生 成的RADIUS消息,生成应答消息的消息验证码。
全文摘要
一种支持RADIUS协议的Diameter-AAA服务器及其工作方法,该服务器使用统一的用户信息,同时为Diameter和RADIUS两种不同协议终端提供AAA应用服务。该服务器包括顺序连接的TCP/SCTP交互模块、对端管理模块、会话管理模块和AAA应用服务模块;其特征在于,该服务器还增设有用于支持RADIUS协议终端的三个软件功能模块UDP交互模块、转换模块和RADIUS对端管理模块。本发明还提出处理Diameter和RADIUS两种协议数据包相互转换的方法,以便在新建的Diameter网络系统中为Diameter和RADIUS两种协议终端同时提供AAA服务,并为以后逐步过渡到全Diameter AAA系统创造条件和基础。
文档编号H04L29/06GK101252788SQ200810103890
公开日2008年8月27日 申请日期2008年4月11日 优先权日2008年4月11日
发明者上 冯, 李学春, 锋 林, 谭立彦 申请人:北京首信科技有限公司