RADIUS协议的内容分析

RADIUS协议的内容分析

RADIUS协议

RADIUS协议:认证与计费的鼻祖

RADIUSRemote Authentication Dial In User Service)协议最初是由Livingston公司提出的,原先的目的是为拨号用户进行认证和计费。后来经过多次改进,形成了一项通用的认证计费协议。

RADIUS是一种C/S结构的协议,它的客户端最初就是NASNet Access Server)服务器,现在任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用PAPCHAP或者Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-Value的向量进行的。

RADIUS的基本工作原理。用户接入NASNASRADIUS服务器使用Access-Require数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NASRADIUS服务器提出计费请求Account-RequireRADIUS服务器响应Account-Accept,对用户的计费开始,同时用户可以进行自己的相关操作。

RADIUS还支持代理和漫游功能。简单地说,代理就是一台服务器,可以作为其他RADIUS服务器的代理,负责转发RADIUS认证和计费数据包。所谓漫游功能,就是代理的一个具体实现,这样可以让用户通过本来和其无关的RADIUS服务器进行认证。

RADIUS服务器和NAS服务器通过UDP协议进行通信,RADIUS服务器的1812端口负责认证,1813端口负责计费工作。采用UDP的基本考虑是因为NASRADIUS服务器大多在同一个局域网中,使用UDP更加快捷方便。

RADIUS协议还规定了重传机制。如果NAS向某个RADIUS服务器提交请求没有收到返回信息,那么可以要求备份RADIUS服务器重传。由于有多个备份RADIUS服务器,因此NAS进行重传的时候,可以采用轮询的方法。如果备份RADIUS服务器的密钥和以前RADIUS服务器的密钥不同,则需要重新进行认证。

RADIUS协议应用范围很广,包括普通电话、上网业务计费,对VPN的支持可以使不同的拨入服务器的用户具有不同权限。最近IEEE提出了802.1x标准,这是一种基于端口的标准,用于对无线网络的接入认证,在认证时也采用RADIUS协议。

常见的认证计费机制与系统:任重而道远

当前常见的认证机制主要有以下几种:

基于DCE/Kerberos的认证机制;

基于公钥的认证机制;

基于挑战/应答(Challenge/Response)的认证机制。

当前常见的计费系统有以下几种:

● IP电话计费:采用RADIUS协议进行计费,对协议本身进行了比较小的改动。由于RADIUS协议本来就是为拨号用户进行认证计费服务的,所以在IP电话业务方面,它基本可以胜任。

根据流量进行的网络服务计费:在很多大学中都对校园网用户采用了这样的计费方式。这种计费方式的特点是对计费没有实时性的要求、时间粒度大、计费方式相对单一。

在实际进行流媒体点播收费时会遇到很多问题,对现有的计费协议和解决方案提出了挑战。随着接入网发展的进一步加快,宽带IP网将承载丰富的数据、语音、图像等多媒体综合业务,作为流媒体业务支撑平台的用户管理和计费系统,有其自身的新业务特点,如时间、流量、多种计费规则、多种媒体格式等,在选择性、高效性、实时性、可靠性及安全性方面将会提出比电信业务的用户管理和计费系统更高的要求。其中最主要的一点是,流媒体支持多种媒体格式,并且可以支持多种不同码率,甚至可以在传输的时候根据网络条件来自适应地调整码率,这就给实时流量计费带来了困难,当前的协议不支持实时流量信息。

对于流媒体点播系统的用户认证和计费,现有的电信系统的管理经验有借鉴意义,但简单生硬地把电信业务的用户管理和计费系统照搬到流媒体系统中是不可取的,只能在吸收电信系统成熟经验的基础上,根据流媒体业务的自身特点,量身定做用户管理和计费系统,才能真正成为流媒体增值业务有效的支撑平台,使得流媒体的商业运营成为可能,帮助运营商在激烈的竞争中处于有利地位。

清华大学宽带网研究中心开发了一套基于RADIUS协议的用户认证和计费系统,首次运行在Linux系统上,并可以完成多种用户类型、多种计费策略的认证计费方式。

该计费系统的核心是基于OracleMySQL数据库。在数据库里实现对用户的分类和不同计费费率以及计费策略。通信的核心是RADIUS协议。认证计费分别在两台服务器上实现,前台服务器主要负责认证工作,与Linux流媒体服务器之间采用RADIUS协议进行通信。前台的另一项工作就是作为RADIUS的代理,给后台服务器转发前台传来的计费数据包。由于RADIUS协议对计费和认证的工作没有更多的规定,其核心就是对数据适当封装,并进行安全、保密的传送,所以关于RADIUS协议方面的程序通信部分就采用普通的socket编程。

由于要处理多用户并发,所以需要产生多个子进程,对多个用户同时登录的信息进行处理,并且,在函数中要实现一个进程仅处理一个请求,如果登录数据包的IP和会话ID是相同的,则RADIUS服务器要比较它们请求Attribute中的向量,如果相同则过滤掉一个,通过这种方式来防止重复处理。

前台要完成的另一个任务就是给后台转发计费数据包。这里主要应用了RADIUS的代理协议。前台后台分别放在两台服务器上的一个基本考虑是因为后台服务器需要对某些用户进行实时计费,这样就要经常访问数据库,而访问数据库需要大量的系统资源,为了提高系统性能,所以把它们放在两台服务器上实现。

后台的计费服务器可以实现不同的计费策略。根据用户的类型,可以分为普通和预付费用户两种,在这些用户中,根据消费情况,还可以分成不同的等级。对于节目来说,可以根据流量或者点播的时间进行计费,还可以根据不同的节目内容进行计费,每个节目都有其相应的费率。