对不同类型用户实现统一动态地址分配的方法

文档序号:7880938阅读:193来源:国知局
专利名称:对不同类型用户实现统一动态地址分配的方法
技术领域
本发明属于计算机网络通信领域,具体涉及网络认证中基于远程用户拨号认证服务(Remote Authentication Dial In User Service,RADIUS Server)向动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)服务器请求申请/释放IP的地址分配方法。
背景技术
随着互联网及宽带网络的发展,带宽不断扩充,网络主机性能也大大增强,用户数也与日俱增。诸如电子商务、视频点播、远程教育、远程医疗等等系统已广泛应用于互联网及宽带网络,随之而来带来了对网络用户安全管理及计费的问题。
在认证计费相关业务处理中,地址分配是一个很重要的问题,地址分配管理与整个认证计费系统的安全管理,监视控制等很多方面息息相关,和Radius服务端配合,统一灵活的进行动态地址分配也是认证计费业务处理的一个重要需求。
在大型网络中,虽然现有的RADIUS Server支持地址分配,但它只能为认证计费相关的用户分配地址;传统的DHCP Server可为普通接入用户分配地址,但它不能对通过RADIUS Server认证的用户分配地址,这给大型网络的地址管理带来了不便。

发明内容
本发明克服上述对RADIUS Server认证用户不能分配地址的不足,提供一种实现RADIUS Server向DHCP Server请求申请/释放IP地址地址分配的方法。
本发明的技术内容一种对不同类型用户实现统一动态地址分配的方法,该方法在RADIUS服务端添加一个DHCP中继代理模块,这个模块处理RADIUS服务器向DHCP服务器申请/释放网络地址的请求和RADIUS服务器和DHCP服务器之间的数据通信。
所述向DHCP服务器申请/释放地址请求包括
(1)DHCP中继代理模块根据用户所在的RADIUS配置组的组名为用户生成标准的DHCP数据包,其组名作为DHCP的属性;(2)向DHCP服务器发送DHCPSCOVER、DHCPREQUEST和DHCPRELEASE请求;(3)解析DHCP服务器返回的DHCPOFFER和DHCPACK数据包。
所述RADIUS服务器和DHCP服务器之间的数据通信包括(1)当DHCP中继代理模块初始化时创建与DHCP服务器通信的收包线程和发包线程;(2)创建一个发包队列,发包队列中统一放入生成的DHCPDISCOVER,DHCPREQUEST,DHCPRELEASE等数据包,发包线程不停的从发包队列中获取数据发送给DHCP服务器;(3)创建一个收包队列,收包线程不停的收取从DHCP服务器返回的数据包,根据数据包中的标识查找相应的队列号,将数据包放入相应队列中。
在RADIUS配置文件中,设置DHCP服务器的IP地址、延时时间、重发次数等配置信息,在DHCP中继代理模块初始化时,将该DHCP配置信息读入。
本发明的技术效果通过在RADIUS服务端内嵌DHCP中继代理模块的方式为RADIUS用户分配IP地址,使RADIUS用户可以通过这个DHCP中继代理模块向DHCP Server申请/释放IP地址;而普通的网络用户也可以通过DHCPServer申请/释放IP地址。从而实现了对大型网络中不同类型用户的统一动态地址分配。并可以保证DHCP Server的安全性,避免客户端重新向DHCP Server请求/释放IP地址的繁琐工作,相对的减少了网络流量。


本发明RADIUS服务器中的各线程与DHCP服务器之间的数据通信示意图。
具体实施例方式
本发明在RADIUS服务端添加一个DHCP中继代理模块,该模块处理RADIUS Server向DHCP Server申请/释放网络地址的请求和RADIUS Server和DHCP Server之间的数据通信。DHCP中继代理模块是通过一台RADIUS Server模拟RADIUS用户向DHCP Server发送申请/释放网络地址请求而实现,实现方式如下(1)网络中的需要认证计费的用户通过RADIUS Client登陆RADIUS Server申请身份认证;RADIUS Server调用认证模块处理用户的认证请求,通过认证后,如果用户需要申请网络地址(通过Framed-IP-Address属性携带255.255.255.254属性值判别),RADIUS Server调用DHCP中继代理模块;(2)RADIUS Server中的DHCP中继代理模块根据用户所在的RADIUS配置组的组名(Group-Name属性值)为用户生成DHCPDISCOVER请求包,其组名作为DHCP的DHO_VENDOR_CLASS_IDENTIFIER属性,然后发送给DHCP Server;(3)RADIUS Server中的DHCP中继代理模块等待DHCP Server发回的DHCPOFFER数据包,如果一定时间没有收到该数据包,RADIUS Server返回用户申请地址失败信息;如果收到DHCPOFFER数据包,DHCP中继代理模块立即根据用户信息和DHCPOFFER数据包信息生成DHCPREQUEST请求包,发送给DHCP Server;(4)RADIUS Server中的DHCP中继代理模块等待DHCP Server发回的DHCPACK数据包,如果一定时间没有收到该数据包,RADIUS Server返回用户申请地址失败信息;如果收到DHCPACK数据包,则完成了通过DHCP Server申请网络地址的过程,RADIUS Server将申请到的网络地址和子网掩码等信息返回用户。
(5)当该用户下线时,会通过RADIUS Client登陆RADIUS Server申请计费终止;RADIUS Server调用计费模块处理用户的计费终止请求。计费终止后,如果用户需要释放网络地址(通过Framed-IP-Address属性携带用户网络地址属性值判别),RADIUS Server调用DHCP中继代理模块;DHCP中继代理模块根据用户的网络地址为用户生成DHCPRELEASE请求包,发送给DHCP Server,完成网络地址的释放。
参考附图,虚线框表示RADIUS进程;椭圆表示线程;方块表示线程安全队列。
RADIUS Server中多用户线程与DHCP Server之间的数据通信是采用在DHCP中继代理模块中创建收包线程和发包线程的方式,具体实现方式如下(1)RADIUS Server通常采用多线程方式处理多用户的并发请求,多个线程会同时调用DHCP中继代理模块请求网络地址,这就相当于有多个DHCP客户端同时向DHCP Server申请网络地址;(2)RADIUS Server中的DHCP中继代理模块与DHCP Server之间的通信采用了统一收发数据包的方式;当DHCP中继代理模块初始化时创建与DHCPServer通信的收包线程和发包线程,并创建一个发包队列同时为每一个RADIUSServer用户线程创建一个收包队列,队列结构中包含互斥锁和条件变量,可自动完成线程间的数据互斥;(3)RADIUS Server中的用户线程调用DHCP中继代理模块,将生成的DHCPDISCOVER,DHCPREQUEST,DHCPRELEASE等数据包统一放入发包队列中;发包线程不停的从发包队列中获取数据发送给DHCP Server。
(4)收包线程不停的收取从DHCP Server返回的数据包,根据数据包中的xid(确定同一用户数据包的唯一标识)查找相应的队列号,将数据包放入相应队列中。
(5)RADIUS Server用户线程将DHCPDISCOVER和DHCPREQUEST数据包放入发包队列后,立即从该线程的收包队列中获取数据包,如果队列中没有数据,会自动处于等待状态,直到收包线程将相应的由DHCP Server返回的数据包放入该队列为止。
RADIUS Server在处理完用户认证请求,并认证通过的情况下,主动向DHCPServer请求网络地址,完成一个既认证又得到网络地址的过程;同理,当用户请求下线时也是由RADIUS Server直接向DHCP Server请求释放网络地址。
RADIUS Server中的DHCP中继代理模块需要DHCP Server的网络地址和延时时间等信息。为了便于统一的维护和配置,将这些信息放入RADIUS Server的配置文件(radiusd.conf)中,当DHCP中继代理模块初始化时从配置文件中读入这些信息。
权利要求
1.一种对不同类型用户实现统一动态地址分配的方法,其特征在于在RADIUS服务端添加一个DHCP中继代理模块,该模块处理RADIUS服务器向DHCP服务器申请/释放网络地址的请求,协调RADIUS服务器和DHCP服务器之间的数据通信。
2.如权利要求1所述的对不同类型用户实现统一动态地址分配的方法,其特征在于所述向DHCP服务器申请/释放地址请求包括(1)DHCP中继代理模块根据用户所在的RADIUS配置组的组名为用户生成标准的DHCP数据包,其组名作为DHCP的属性;(2)向DHCP服务器发送DHCPSCOVER、DHCPREQUEST和DHCPRELEASE请求;(3)解析DHCP服务器返回的DHCPOFFER和DHCPACK数据包。
3.如权利要求1所述的对不同类型用户实现统一动态地址分配的方法,其特征在于所述RADIUS服务器和DHCP服务器之间的数据通信包括(1)当DHCP中继代理模块初始化时,创建与DHCP服务器通信的收包线程和发包线程;(2)创建一个发包队列,发包队列中统一放入生成的DHCPDISCOVER,DHCPREQUEST,DHCPRELEASE等数据包,发包线程不停的从发包队列中获取数据发送给DHCP服务器;(3)创建一个收包队列,收包线程不停的收取从DHCP服务器返回的数据包,根据数据包中的标识查找相应的队列号,将数据包放入相应队列中。
4.如权利要求1所述的对不同类型用户实现统一动态地址分配的方法,其特征在于在RADIUS配置文件中,设置DHCP服务器的IP地址、延时时间、重发次数等DHCP配置信息,在DHCP中继代理模块初始化时将该DHCP配置信息读入。
5.如权利要求3所述的对不同类型用户实现统一动态地址分配的方法,其特征在于所述收包队列和发包队列的结构中包含互斥锁和条件变量,可自动完成线程间的数据互斥。
全文摘要
本发明提供了一种对不同类型用户实现统一动态地址分配的方法,属于计算机网络通信领域。该方法在RADIUS服务端添加一个DHCP中继代理模块,这个模块处理RADIUS服务器向DHCP服务器申请/释放网络地址的请求,并协调RADIUS服务器和DHCP服务器之间的数据通信。本发明使RADIUS用户可以直接通过这个DHCP中继代理模块向DHCP Server申请/释放IP地址;而普通的网络用户也可以通过DHCP Server申请/释放IP地址。从而实现了对大型网络中不同类型用户的统一动态地址分配。
文档编号H04L29/06GK1543127SQ200310103549
公开日2004年11月3日 申请日期2003年11月7日 优先权日2003年11月7日
发明者吴兴, 苏湘, 吴 兴 申请人:港湾网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1