基于IPv4/IPv6双栈的企业网关中DHCP机制研究

2013-08-13 05:06刘泽伟董喜明毛永红
电视技术 2013年5期
关键词:双栈IP地址网关

刘泽伟,董喜明,毛永红

(1.武汉邮电科学研究院,湖北 武汉 430074;2.武汉烽火网络有限责任公司,湖北 武汉 430074)

随着网络信息化的飞速发展,IPv4向IPv6过渡的趋势日渐明显。双栈技术可以很好地解决过渡过程中IPv4和IPv6的兼容性问题,因此在通信设备上得到了广泛支持。然而,在当前网络环境下,要开发出好的设备产品,仅是对双栈技术的支持还不够,解决好网络协议在双栈环境下的兼容性与稳定性才是关键。

在现代互联网络中,主机地址的DHCP[1]功能是必不可少的。随着IPv6网络的出现,IETF在2003年重新制定了针对IPv6的DHCP协议,即DHCPv6[2]。本文首先对企业网关系统结构的设计进行了简单介绍,然后对IPv4,IPv6环境下的DHCP协议展开了研究,最后结合两者的异同点,设计开发了一种适用于双栈网关的DHCP协议软件,最后经过实验与工程应用验证了该软件模块具有良好的稳定性和兼容性[3]。

1 系统的功能与结构

1.1 系统结构

图1所示为本企业网关的结构图,主芯片采用Marvel公司出产的88F6560ARM芯片,产品具备3G接入、WiFi接入、GPON/EPON/以太网光口上行功能、GE口接入功能。

1.2 系统功能

本系统采用以下3种控制方式,可以灵活方便地实现与用户的交流。

图1 企业网关结构图

1)TR069软件平台:用户在局端通过自动配置的服务器对终端设备进行远程管理,提供了自动配置和动态服务、软固件管理、状态性能统计监控、诊断等功能。

2)CLI命令行:通过串口连接设备,允许用户使用命令行对设备进行管理,提供了监控、诊断等功能。

3)Web网管平台:用户可通过Web浏览器登录管理平台,对企业网关系统进行远程监控、软固件升级和诊断。

2 IPv4/IPv6双栈环境下企业网关的DHCP实现机制

IPv4和IPv6环境下的DHCP协议类似,两者都是基于C/S的动态地址分配协议,为了便于区别,本文将IPv4环境下的DHCP命名为DHCPv4。在研究了DHCPv4和DHCPv6的消息机制后,从以下两个方面对协议进行了深一步的研究:一是地址状态的迁移,二是C/S的交互。

2.1 IPv4/IPv6双栈环境下DHCP地址状态的设计

根据前期对DHCPv4和DHCPv6协议的分析,从地址活动的角度来看,可以将DHCP地址状态归纳为以下5种(见图2):1)绑定状态(Bound);2)更新状态(Renewing);3)重绑定状态(Rebinding);4)超时状态(Expired);5)失效状态(Invalid)。

图2 地址状态迁移图

从图2可知,在IPv4/IPv6的DHCP机制下,地址的动态迁移是以租约T为时间单位进行的。当地址租用时间到达T1(首选生命期的1/2)时,客户端向服务器发送租期更新消息;当地址租用时间到达T2(首选生命期的0.8)时,客户端向服务器发送重绑定消息,或等待租期满约直接进入超时状态;当客户端向服务器发送重绑定消息超时未响应后,客户端地址失效,客户端将重开始申请IP绑定。

2.2 IPv4/IPv6双栈环境下DHCP客户端/服务器交互机

制的实现

图3所示DHCPv4/DHCPv6的结构主要分为Server,Client和Relay三部分,三者通过各种UDP消息进行交互。

图3 DHCP结构图

2.2.1 DHCPv4 的 Client/Server交互过程

DHCPv4的Client/Server交互过程如图4所示。

1)DHCPv4 Server请求

DHCPv4 Client申请IP地址前,先发广播报文DISCOVER,DHCPv4 Server接收到请求报文后,回应OFFER报文。

2)IP址地请求

DHCP Client收到OFFER报文后,然后发出广播报文REQUEST,收到Server回应的ACK后,就可以得到IP地址。得到Server分配的IP后,Client会对地址进行有效性检测,若该地址不可用,则回到初始状态重新开始地址申请。

图4 DHCPv4的Client/Server交互过程

3)地址租期更新

被分配的地址使用达到T1后,DHCPv4 Client发单播报文REQUEST请求,DHCPv4 Server给出ACK响应或NAK响应报文,DHCPv4 Client若收到ACK则更新租约,若收到NAK则重新发起申请。

4)地址重绑

若DHCPv4 Client一直都没有收到ACK报文,当到达T2后,DHCPv4 Client会发出广播的DHCP续约报文请求地址重绑。若一直未收到ACK响应报文,则租期满后DHCPv4 Client分配到的IP自动失效。

5)客户端重启后的地址分配

DHCPv4 Client重启后不会回到初始状态重新申请IP,而是直接广播一个REQUEST报文给DHCPv4 Server。DHCPv4 Server收到报文后,检查该报文Requested IP address字段填入的客户端IP是否已被其他客户端使用,若未被使用则直接将该IP地址重分配给该客户端,否则回复一个NAK响应报文。DHCPv4 Client收到报文后,回到初始状态重新申请IP。

2.2.2 DHCPv6 的 Client/Server交互过程

DHCPv6的Client/Server交互过程如图5所示。

图5 DHCPv4的Client/Server交互过程

1)DHCPv6 Server请求

DHCPv6 Client申请IP地址前,先向所有中继代理和服务器组播(组播地址FF02::1:2)发送SOLICIT报文,DHCPv6 Server接收到请求报文后,回应ADVERTISE报文。若DHCPv6 Client收到多份ADVERTISE报文,则根据消息接收的先后顺序、服务器优先级等,选定其中一个Server。

2)IP址地请求

DHCPv6 Client向选定的Server发送地址请求报文REQUEST,当收到Server回应的REPLY报文后,就可以得到由Server分配的IPv6地址/前缀和网络配置参数了。

3)地址租期更新

当地址/前缀租借时间到达T1后,DHCPv6 Client向Server单播发送RENEW报文,若当前的地址/前缀可用,则Serve回复给DHCPv6 Client一个续约成功的REPLY报文,否则回复一个续约失败的REPLY报文。DHCPv4 Client若收到续约成功的REPLY报文则更新租约,否则不进行更新。

4)地址重绑

若DHCPv6 Client一直都没有收到REPLY报文,则当到达T2后,DHCPv6 Client会组播(组播地址为FF05::1:3)发送REBIND报文请求地址重绑。若一直未收到重绑成功的REPLY响应报文,则租期满后DHCPv6 Client分配到的地址/前缀自动失效,并向服务器发送RELEASE消息请求服务器收完分配的地址信息。

5)客户端重启后的地址分配

DHCPv6 Client重启后,首先会直接向服务器发送一个CONFIRM报文,确认当前所分配地址/前缀是否还有效,当收到Server回复的REPLY报文后,若确认有效则继续使用,否则重新申请地址/前缀。

3 双栈环境下企业网关的DHCP协议软件的设计

3.1 双栈环境下DHCP Server的设计与实现

DHCP Server模块主要分为3个部分:1)初始化函数(地址信息的初始化);2)主循环程序(循环等待服务请求);3)消息处理函数(消息处理、生成与发送)。

双栈环境下DHCP Server流程如图6所示。

初始化函数为所有可分配的地址(其数量由dhcp.db中地址池的开始地址和结束地址计算出)创建地址信息结构体(Addr_Info_Str)对象,每个结构体对象都携带IP类型、地址/前缀、状态、租用期及分配该地址的Client等信息。

图6 DHCP Server流程图

主循环程序的主要功能是:1)定时清理超时的绑定信息,并及时更新绑定信息,同时写入到数据库中。2)维护已绑定地址信息。3)监听UDP端口(547和67),随时接收来自客户端的DHCP报文,并将接收到的报文分类后发送给消息处理函数。

消息处理函数根据IP协议栈的类型分为DHCPv4的消息处理函数和DHCPv6的消息处理函数两类,分别对来自不同客户端的DHCP消息进行响应与处理。

3.2 双栈环境下DHCP Client的设计与实现

DHCP Client模块由初始化、Server请求、IP请求、IP有效性检测和IP维护部分组成,其主要功能是负责客户端的地址申请、维护与释放。

如图7所示,当DHCP Client启动后,首先初始化配置信息,若本机已有有效配置参数,则向Server发送一个确认报文,确认已有配置参数是否有效;若本机配置参数为空,则进行Server请求和IP请求。

当从Server获得配置参数后,DHCP Client会检测该配置参数的有效性。若有效则调用地址维护函数进行下一步处理;若无效则向服务器发送拒绝请求,重新开始请求IP。

地址维护函数的功能是完成对客户端地址绑定、更新租期、地址信息释放等操作。在地址使用租约达到0.5个首选生命期时,向Server发送租期更新请求报文接收应答报文以完成地址租期更新;达到0.8个首选生命期时,向Server发送地址重绑请求报文接收应答报文完成地址重绑。当租约超期或满足地址释放条件时,主动请求释放地址信息 (Local_family=AF_INET6)或不做任何操作(Local_family=AF_INET)。

图7 DHCP Client流程图

3.3 双栈环境下DHCP Relay的设计与实现

DHCP Relay模块主要分为初始化、代理服务器设置和中继报文处理3部分。

如图8所示,当DHCP Relay启动后首先会初始化中继相关的变量,如UDP端口的设置、IP地址族的设置等。初始化结束后,开始设置代理服务器,若代理服务器列表为空,则使用广播地址作为代理服务器地址(DHCPv6情况下使用FF02::1:2作为目标地址)[2]。初始化和代理服务器设置结束后,DHCP Relay开始监听UDP端口,接收并处理中继报文。

4 测试结果

用4台装有Windows XP的PC机作为客户端,两台使用了上述DHCP协议软件模块的企业网关分别做中继端和服务端。

两台安装好IPv6协议的PC机作为DHCPv6客户端连接到网络中,经反复测试,两台客户端均可以迅速分配到一个有效的IPv6地址/前缀,作为DHCP服务器和中继器的企业网关都运行正常。DHCPv6获取IPv6地址过程如图9所示。

两台未安装IPv6协议的客户端接入到网络中,经反复测试,两台客户端都可以有效获取IPv4地址,作为DHCP服务器和中继器的企业网关也都运行正常。DHCP获取IP地址过程如图10所示。

图10 DHCP获取IP地址过程(截图)

5 结束语

在双栈环境下的DHCP功能,可有效地解决IPv4向IPv6过渡过程中客户端所需要的IPv4/IPv6地址自动分配功能。本文通过对IPv4,IPv6环境下的DHCP协议的深入研究,结合两者的异同点设计开发了一种适用于基于双栈环境的企业网关的DHCP协议软件,最后经过实验与工程应用验证了该软件模块所具有良好的稳定性和兼容性,具有较大的实用价值。

[1]RFC2131,Dynamic host configuration protocol(DHCP)[S].1997.

[2]RFC3315,Dynamic host configuration protocol for IPv6(DHCPv6)[S].2003.

[3]GARY R,WRIGHT W,RICHARD S.TCP/IP 协议详解:卷2[M].北京:机械工业出版社,2009.

猜你喜欢
双栈IP地址网关
铁路远动系统几种组网方式IP地址的申请和设置
信号系统网关设备的优化
IP地址切换器(IPCFG)
浅析IPv6网络演进及其部署方案
基于SNMP的IP地址管理系统开发与应用
公安网络中IP地址智能管理的研究与思考
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
一种实时高效的伺服控制网关设计
IPv4到IPv6演进技术及策略探讨