远程用户拨号认证系统 RADIUS记帐协议( 二 )


当一个客户端的配置采用RADIUS记帐协议时,在开始提供服务的时候它会生成一个记帐包,该记帐包描述了正在提供的服务的类型以及为之提供服务的用户,它将被送至RADIUS记帐服务器 。记帐服务器会返回一个表明该记帐包已经收到的应答 。服务中止时,客户端会产生一个记帐中止数据包,该数据包中描述了提供的服务的类型以及随机统计报表(如:服务所用的时间、输入输出的字节数或者输入、输出包的情况) 。该数据包会被送至RADIUS记帐服务器,服务器会返回一个表示该数据包已经收到的应答 。
记帐请求(无论是开始记帐还是中止记帐的请求)是通过网络提交给RADIUS记帐服务器的 。最好是让客户端使用某种形式的后退机制,使得客户端不断的发送记帐请求包直到收到应答信息为止 。假如在一段时间内没有收到返回的响应信息,记帐请求就会被重发几次 。假如主服务器坏掉或者是无法到达客户端可以向后备服务器转发记帐请求信息 。可以规定在对主服务器重试失败一定的次数之后或者是采用循环调度算法的方式答应使用后备服务器 。重试和放弃算法是目前正在研究的一个课题,在本文中就不再赘述了 。
RADIUS记帐服务器可以向其他的服务器发出请求,来满足记帐请求,被请求的服务器充当一个客户端 。
假如RADIUS记帐服务器不能成功的处理记帐包,服务器一定不能(MUST NOT)给客户端发送应答信息 。
2.1 代理
参阅“RADIUS”RFC【2】中关于RADIUS代理的描述,RADIUS记帐代理服务器的工作方式与RADIUS代理服务器是相同的,如下例所示 。
1. NAS向转发服务器发送记帐请求 。
2. 转发服务器将记帐请求记录下来(假如必要的话),在其他的代理服务器的状态属性之后增加自己的代理状态信息(假如必要的话),更新鉴别码,将这些请求转发给远程服务器 。
3. 远程服务器将记帐请求记录下(假如必要的话),将所有的代理状态属性按顺序原封不动的从请求数据报复制到响应数据包,把记帐响应送给转发服务器 。
4. 转发服务器剥离最后的代理状态(假如在第二步加了的话),更新响应鉴别码,将记帐响应发给NAS 。
转发服务器不得更改当前数据包中已经存在的代理状态或者类属性 。
转发服务器可能以通过(pass through)的方式完成转发的功能,也就是说,转发服务器一收到数据包就重新发送;或者转发服务器自身完成重发功能,例如:在转发服务器和远程服务器之间的网络链接与网络接入服务器(NAS)和转发服务器之间的链接相比有很大不同的情况 。
当代理服务器被用来执行转发功能的时候,要非凡的注重确保转发算法是健壮的、可扩展的 。
3.包格式
严格的讲,RADIUS记帐协议包应该位于UDP数据域【4】,它的目标端口号是1813(十进制数) 。
当产生一个应答的时候,源端口和目的地址端口互换 。
本文定义了RADIUS协议 。早期的RADIUS记帐是通过端口号为1646的UDP端口来实现的,它和“sa-msg-port”服务相冲突 。为RADIUS记帐服务正式分配的端口号是1813 。
RADIUS数据格式的概况如下所示 。各个域的数据是从左向右传输的 。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
编码标识符长度
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

鉴别码


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
属性 ...
- - - - - - - - - - - - -
编码
编码域是一个八位字节,用来标识RADIUS包的类型 。当收到的包的编码域非法时,该数据包将会被自动丢弃 。

推荐阅读