一种IPv6地址无状态自动配置的系统、数据卡及其实现方法技术领域
本发明涉及移动通信技术领域,尤其涉及一种第六版本互联网协议
(Internet Protocol Version 6,IPv6)地址无状态自动配置的系统、数据卡及其
实现方法。
背景技术
IPv6具有地址空间大、地址结构便于实现地址聚合、支持地址自动配置以
及支持主机移动等特点,IPv6的安全性和服务质量均优于IPv4。无论是第三代
合作伙伴计划(3GPP)的通用移动通信系统(UMTS),还是3GPP2的码分多
址(CDMA)2000系统,都已确定IPv6是网络承载、业务应用的发展方向。
特别是在3G的IP多媒体系统(IMS)阶段,网络系统将全面基于或兼容IPv6。
IPv6已成为互联网和移动通信网的共用基本协议。全球互联网的IPv4地址资源
正在日渐枯竭,这将进一步加速IPv6技术在3G网络和终端中的应用。
IPv6地址是由前缀地址和接口标识组成,IPv6地址的高64位是前缀地址,
低64位为接口标识。在3GPP规范中,接口标识和前缀地址都是由网络分两个
阶段完成分配的:第一个阶段,数据卡从网关GPRS支持节点(GGSN)获得
接口标识,这一阶段通过分组数据协议(PDP)上下文激活的过程来完成;第
二个信令阶段,数据卡通过使用路由请求(RS)消息和路由通告(RA)消息
从GGSN获取全球IPv6地址所需的前缀地址。与数据卡进行通信的主机的IPv6
地址有两种,一种是链路本地地址,它是由链路本地前缀地址1111111010和接
口标识生成的一个链路本地单播地址,用于局域网范围内的主机通信,带有链
路本地地址的IPv6数据包不会被路由器转发到外部网络。另一种是全球单播地
址,终端只能使用全球IPv6地址和外部数据网中的其他终端,也就是和其他终
端的主机进行通信。全球单播地址有两种自动配置方式,一种是无状态自动配
置(SLAAC)方式,另一种是有状态的IPv6的动态主机配置协议(DHCPv6)
配置方式。
其中,因采用DHCPv6的有状态地址自动配置时,需要数据卡支持DHCPv6
Server功能,因此,目前支持IPv6的数据卡均采用无状态自动配置的方式进行
IPv6地址分配。当采用无状态自动配置方式时,网络有两种IPv6地址分配方式:
一种是分配唯一的前缀地址(Prefix Address),另一种是分配唯一的网络接口标
识地址(IID Address)。当网络分配的是前缀地址时,表明网络接收任何包含该
前缀地址的IPv6地址,即主机可以使用任何包含该前缀地址的IPv6地址进行
数据传输。在IPv6地址协商时,主机只需通过路由器通告消息从数据卡侧获取
到前缀地址后,再随机生成接口标识,与前缀地址组成128位的IPv6地址即可。
但是,如果网络分配的是接口标识时,表明网络只接收包含该接口标识和
通过路由器通告消息获取的前缀地址组成的IPv6地址,该地址是一个唯一的全
球单播地址,主机只能使用该IPv6地址进行数据传输,而不能使用随机生成的
接口标识组成的IPv6地址。在这种IPv6地址分配方式下,点到点协议
(Point-to-Point Protocol,PPP)链路方式的IPv6拨号过程能够成功的将网络分
配的接口标识分配给主机,因此PPP链路方式的拨号主机通过无状态自动配置
生成的IPv6地址,就是网络下发的唯一的全球单播地址。但是,在以太网链路
方式的IPv6拨号过程中,主机只能通过路由器通告消息从数据卡获取到前缀地
址,却无法获取到被分配的接口标识,因此,主机使用无状态自动配置的方式
生成的IPv6地址中使用的是随机生成的接口标识,该随机生成的接口标识与前
缀地址组成的IPv6地址与网络分配的唯一的全球单播地址不一致,所以网络侧
无法正常路由主机使用该IPv6地址发送的数据包,导致IPv6连接无法正常进
行数据传输。
发明内容
有鉴于此,本发明的主要目的在于提供一种IPv6地址无状态自动配置的系
统、数据卡及其实现方法,可解决现有以太网链路拨号方式的数据卡在网络分
配接口标识时,无法正常进行数据传输的问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种IPv6地址无状态自动配置的系统,所述系统包括:数据
卡和终端;其中,
所述数据卡,用于根据当前网络的IPv6地址分配策略设置自身的IPv6地
址配置方式并存储;IPv6拨号连接建立成功,且收到终端所发的用于获取前缀
地址的路由器通告请求消息后,判断已设置的IPv6地址分配方式,确定为静态
配置方式时,丢弃路由器通告响应消息,并将有效的IPv6全球单播地址上报给
终端;
所述终端,用于IPv6拨号连接建立成功后,向数据卡发送用于获取前缀地
址的路由器通告请求消息;接收数据卡上报的有效的IPv6全球单播地址。
其中,所述数据卡,还用于确定IPv6地址分配方式为无状态自动配置方式
时,返回携带前缀地址的路由器通告响应消息到终端;相应的,
所述终端,还用于根据数据卡所发的路由器通告响应消息中携带的前缀地
址随机生成接口标识,并与前缀地址组成IPv6全球单播地址。
本发明还提供了一种IPv6地址无状态自动配置的数据卡,所述数据卡,用
于根据当前网络的IPv6地址分配策略设置自身的IPv6地址配置方式并存储;
IPv6拨号连接建立成功,且收到终端所发的用于获取前缀地址的路由器通告请
求消息后,判断已设置的IPv6地址分配方式,确定为静态配置方式时,丢弃路
由器通告响应消息,并将有效的IPv6全球单播地址上报给终端。
所述数据卡,还用于确定IPv6地址分配方式为无状态自动配置方式时,返
回携带前缀地址的路由器通告响应消息到终端。
所述数据卡包括:控制指令模块、路由器消息处理模块、IPv6地址处理模
块和拨号模块;其中,
所述路由器消息处理模块,用于拨号连接建立前,根据当前网络的IPv6地
址分配策略设置数据卡的IPv6地址配置方式并存储;IPv6拨号连接建立成功
后,判断已设置的IPv6地址分配方式,确定为静态配置方式时,丢弃路由器通
告响应消息,并通知IPv6地址处理模块;
所述IPv6地址处理模块,用于收到路由器消息处理模块的通知后,从分组
数据协议PDP激活消息中获取有效的IPv6全球单播地址,并将该IPv6全球单
播地址提供给控制指令模块;
所述控制指令模块,用于将携带IPv6地址的控制指令发送给PC侧软件;
所述拨号模块,用于数据卡收到拨号请求时,发起PDP激活过程,以从网
络侧获取到有效的IPv6全球单播地址。
其中,所述路由器消息处理模块,还用于确定设置的IPv6地址分配方式为
无状态自动配置方式时,接收IPv6地址处理模块所发的前缀地址,并将携带前
缀地址的路由器通告响应消息返回给终端;相应的,
所述IPv6地址处理模块,还用于将前缀地址返回给路由器消息处理模块。
本发明还提供了一种IPv6地址无状态自动配置的实现方法,根据当前网络
的IPv6地址分配策略设置数据卡的IPv6地址配置方式并存储;该方法还包括:
IPv6拨号连接建立成功,且收到终端所发的用于获取前缀地址的路由器通
告请求消息后,数据卡判断已设置的IPv6地址分配方式,如果为静态配置方式,
则丢弃路由器通告响应消息,并将有效的IPv6全球单播地址上报给终端。
该方法还包括:
如果IPv6地址分配方式为无状态自动配置方式,则返回携带前缀地址的路
由器通告响应消息到终端,终端随机生成接口标识,并与前缀地址组成IPv6全
球单播地址。
其中,所述根据当前网络的IPv6地址分配策略设置数据卡的IPv6地址配
置方式,为:
拨号前判断当前网络的IPv6地址分配策略,如果当前网络分配的是前缀地
址,则将数据卡的IPv6地址配置方式设置为无状态自动配置方式;如果当前网
络分配的是接口标识,则将数据卡的IPv6地址配置方式设置为静态配置方式;
上述设置过程通过AT命令实现。
其中,所述丢弃路由器通告响应消息,并将有效的IPv6全球单播地址上报
给终端,为:
数据卡将路由器通告响应消息丢弃,并通知自身内部的IPv6地址处理模块
从PDP激活消息中获取有效的IPv6全球单播地址,并将该IPv6地址提供给控
制指令模块;控制指令模块将携带有效IPv6全球单播地址的控制指令发送给终
端的PC侧软件,PC侧软件收到携带有效IPv6全球单播地址的控制指令之后,
将调用操作系统接口将所述IPv6地址设置给终端中的主机。
本发明提供的IPv6地址无状态自动配置的系统、数据卡及其实现方法,根
据当前网络的IPv6地址分配策略设置数据卡的IPv6地址配置方式并存储;IPv6
拨号连接建立成功,且收到终端所发的用于获取前缀地址的路由器通告请求消
息后,数据卡判断已设置的IPv6地址分配方式,如果为静态配置方式,则丢弃
路由器通告响应消息,并将有效的IPv6全球单播地址上报给终端。本发明通过
修改现有路由器通过消息的处理流程,在网络分配接口标识的情况下,通过丢
弃数据卡回应给终端的路由器通告响应消息的方式,禁用了终端主机侧的无状
态自动配置功能,之后数据卡再从PDP激活响应消息中将网络分配的有效IPv6
地址传送给终端。可见,本发明可解决现有以太网链路拨号方式的数据卡在网
络分配接口标识时,因终端自动生成的IPv6地址与网络分配的IPv6地址不一
致而无法正常进行数据传输的问题,使具有IPv6数据传输功能的数据卡能同时
兼容两种不同地址分配方式的IPv6网络。
附图说明
图1为本发明IPv6地址无状态自动配置的系统实施例的结构示意图;
图2为本发明IPv6地址无状态自动配置的数据卡实现方法流程示意图;
图3为本发明数据卡IPv6地址无状态自动配置实施例的流程图;
图4为本发明数据卡IPv6地址静态配置实施例的流程图。
具体实施方式
本发明的基本思想是:根据当前网络的IPv6地址分配策略设置数据卡的
IPv6地址配置方式并存储;IPv6拨号连接建立成功,且收到终端所发的用于获
取前缀地址的路由器通告请求消息后,数据卡判断已设置的IPv6地址分配方
式,如果为静态配置方式,则丢弃路由器通告响应消息,并将有效的IPv6全球
单播地址上报给终端。
其中,如果配置方式为无状态自动配置方式,则返回携带前缀地址的路由
器通告响应消息到终端,终端随机生成接口标识,并与前缀地址组成IPv6全球
单播地址。
这里,所述数据卡的IPv6地址配置方式包括:无状态自动配置方式和静态
配置方式。
需要说明的是,本发明主要针对以太网链路方式的IPv6拨号,对于PPP
链路方式的IPv6拨号则无需采用本发明的方案。
下面结合附图及具体实施例对本发明作进一步详细说明。
本发明提供了一种IPv6地址无状态自动配置的系统,该系统包括:数据卡
和终端;其中,
所述数据卡,用于根据当前网络的IPv6地址分配策略设置自身的IPv6地
址配置方式并存储;IPv6拨号连接建立成功,且收到终端所发的用于获取前缀
地址的路由器通告请求消息后,判断已设置的IPv6地址分配方式,确定为静态
配置方式时,丢弃路由器通告响应消息,并将有效的IPv6全球单播地址上报给
终端;
所述终端,用于IPv6拨号连接建立成功后,向数据卡发送用于获取前缀地
址的路由器通告请求消息;接收数据卡上报的有效的IPv6全球单播地址。
所述数据卡,还用于确定IPv6地址分配方式为无状态自动配置方式时,返
回携带前缀地址的路由器通告响应消息到终端;相应的,
所述终端,还用于根据数据卡所发的路由器通告响应消息中携带的前缀地
址随机生成接口标识,并与前缀地址组成IPv6全球单播地址。
图1为本发明IPv6地址无状态自动配置的系统实施例的结构示意图,如图
1所示,所述数据卡包括:控制指令模块、路由器消息处理模块、IPv6地址处
理模块和拨号模块;所述终端包括:主机和PC侧软件;其中,
所述主机,用于IPv6拨号连接建立时,向数据卡发送拨号请求;连接建立
成功后,向数据卡发送路由器通告请求消息;接收路由器消息处理模块所发的
路由器通告响应消息,并根据所述路由器通告响应消息中携带的前缀地址随机
生成接口标识,并与前缀地址组成IPv6地址;
所述PC侧软件,用于收到携带IPv6地址的控制指令后,调用操作系统接
口将所述IPv6地址设置给主机;
所述路由器消息处理模块,用于拨号连接建立前,根据当前网络的IPv6地
址分配策略设置数据卡的IPv6地址配置方式并存储;IPv6拨号连接建立成功
后,判断已设置的IPv6地址分配方式,确定为静态配置方式时,丢弃路由器通
告响应消息,并通知IPv6地址处理模块;
还用于确定设置的IPv6地址分配方式为无状态自动配置方式时,接收IPv6
地址处理模块所发的前缀地址,并将携带前缀地址的路由器通告响应消息返回
给主机;
所述IPv6地址处理模块,用于收到路由器消息处理模块的通知后,从PDP
激活消息中获取有效的IPv6全球单播地址,并根据当前的IPv6地址分配方式
将IPv6全球单播地址或前缀地址上报给控制指令模块或路由器消息处理模块;
具体的,
如果当前数据的IPv6地址配置方式为静态配置,则将该IPv6地址提供给
控制指令模块;如果当前数据的IPv6地址配置方式为无状态自动配置,则将前
缀地址返回给路由器消息处理模块。
所述控制指令模块,用于将携带IPv6地址的控制指令发送给PC侧软件;
所述拨号模块,用于数据卡收到拨号请求时,发起分组数据协议(PDP)
激活过程,以从网络侧获取到有效的IPv6全球单播地址。
图2为本发明IPv6地址无状态自动配置的数据卡实现方法流程示意图,如
图2所示,该方法包括如下步骤:
步骤201:根据当前网络的IPv6地址分配策略设置数据卡的IPv6地址配置
方式并存储;
具体为:拨号前判断当前网络的IPv6地址分配策略,如果当前网络分配的
是前缀地址,则将数据卡的IPv6地址配置方式设置为无状态自动配置方式,并
存储在数据卡自身内部,这样,数据卡和终端将使用默认的无状态自动配置方
式生成IPv6全球单播地址,并进行数据传输。如果当前网络分配的是接口标识,
则将数据卡的IPv6地址配置方式设置为静态配置方式,并存储在数据卡自身内
部,这样,通过数据卡丢弃路由器通告响应消息的方法,使终端无法正常使用
无状态自动配置生成IPv6全球单播地址,之后数据卡从PDP激活响应消息中
将网络分配的前缀地址及接口标识上报给终端,即:将有效的IPv6全球单播地
址上报给终端,之后终端就可以使用该IPv6地址正常进行数据传输。
这里,在设置数据卡的IPv6地址配置方式时,可通过AT命令来实现,该
操作在实现时可以根据运营商的具体需求通过PC侧软件来实现。同时,在实
现时,由于IPv6的域名系统(Domain Name System,DNS)地址无论采用何
种地址无状态自动配置方式,均需要通过PC侧软件静态设置给终端的主机。
因此,在数据卡与终端的连接建立之后,数据卡会将IPv6地址和DNS地址一
起上报,为了便于PC侧软件进行区分,规定在使用无状态自动配置方式的情
况下,数据卡上报的IPv6全球单播地址为全零,即:通知PC侧软件当前数据
卡使用的是无状态自动配置方式;而在使用静态配置方式时,在上报的控制指
令中携带有效的IPv6全球单播地址,PC侧软件检测到有效的IPv6全球单播地
址之后,再调用操作系统接口将该地址设置给终端中的主机。
步骤202:IPv6拨号连接建立成功,且收到终端所发的用于获取前缀地址
的路由器通告请求消息后,数据卡判断已设置的IPv6地址分配方式,如果为静
态配置方式,则执行步骤203;如果为无状态自动配置方式,则执行步骤204;
具体为:IPv6拨号连接建立时,终端发送拨号请求到数据卡,数据卡发起
PDP激活过程,并从网络侧获取有效的IPv6地址。IPv6拨号连接建立成功之
后,终端中的主机发送路由器通告请求消息到数据卡,以从数据卡获取前缀地
址。数据卡收到所述路由器通告请求消息后,判断已设置的自身的IPv6地址分
配方式,如果分配方式为静态配置方式,则执行步骤203;如果分配方式为无
状态自动配置方式,则执行步骤204。
步骤203:丢弃路由器通告响应消息,并将有效的IPv6全球单播地址上报
给终端;
具体为:数据卡的IPv6地址配置方式为静态配置方式时,数据卡将不返回
路由器通告响应消息,即将路由器通告响应消息丢弃,并通知自身内部的IPv6
地址处理模块从PDP激活消息中获取有效的IPv6地址,并将该IPv6地址提供
给控制指令模块;控制指令模块将携带有效IPv6地址的控制指令发送给PC侧
软件,PC侧软件收到携带有效IPv6地址的控制指令之后,将调用操作系统接
口将所述IPv6地址设置给终端中的主机,完成IPv6地址的协商过程。
这里,由于终端主机侧的无状态自动配置功能是由IPv6协议栈控制的,无
法禁用,因此,本发明只能在数据卡侧通过丢弃路由器通告响应消息来实现。
拨号成功之后,主机将发送路由器通告请求消息给数据卡,数据卡将回应给主
机的路由器通告响应消息丢弃,主机由于无法通过路由器通告响应消息获取到
前缀地址,也就无法使用无状态自动配置的方式随机生成包括随机生成的接口
标识的IPv6地址,即:主机无法生成有效的全球单播地址用于数据传输。
步骤204:返回携带前缀地址的路由器通告响应消息到终端,终端随机生
成接口标识,并与前缀地址组成全球单播地址;
具体为:数据卡的IPv6地址配置方式为无状态自动配置方式时,数据卡内
的路由器消息处理模块将返回路由器通告响应消息给终端中的主机,消息中携
带前缀地址,之后,路由器消息处理模块通知IPv6地址处理模块不提供IPv6
地址给控制指令模块,IPv6地址处理模块需将前缀地址返回给路由器消息处理
模块。这样,控制指令模块上报给主机的控制消息中不携带有效的IPv6地址。
主机收到路由器通告响应消息之后,通过无状态自动配置的方式随机生成接口
标识,与前缀地址共同组成128位的全球单播地址,完成IPv6地址协商过程。
下面分别对本发明数据卡两种不同配置方式实施例的实现流程进行描述。
图3为本发明数据卡IPv6地址无状态自动配置实施例的流程图,如图3所
示,包括如下步骤:
步骤301:数据卡收到IPv6拨号请求后,在空口上发起PDP激活过程;
具体为:将向GPRS服务支持节点(SGSN)发送激活PDP上下文(PDP
Context)请求信息,所述请求信息中包含如下信息:接入点(APN)、PDP类
型、PDP地址、询问握手认证协议(CHAP)或密码认证协议(PAP)信息、IPv6
DNS等信息。PDP类型为IPv6,PDP地址为空,代表请求动态分配IP地址。
网关GPRS支持节点(GGSN)收到请求后,通过本地/动态主机配置协议(DHCP)
/远程用户拨号认证系统(RADIUS)对终端进行鉴权,并分配IPv6地址或者前
缀地址,以及其他参数,如服务质量(QoS)参数、IPv6 DNS服务器地址,并
将鉴权结果以及各项参数信息封装在激活PDP上下文接受消息里发回给数据
卡,PDP激活过程完成。
步骤302:主机向数据卡发送路由器请求消息;
具体为:终端中的主机检测到以太网设备端口状态为UP后,就会启动地
址冲突检测过程。主机发送邻居请求消息到数据卡尝试验证自身的接口标识是
否唯一,如果数据卡确定主机请求的接口标识地址与一个正在使用的接口标识
地址存在冲突,那么数据卡就会给主机发送邻居通告指示重复地址检测失败,
此时主机会生成一个新的接口标识重新发送邻居请求消息。如果地址冲突检测
正常,主机会发送路由器请求(RS)消息到数据卡。
步骤303:数据卡确定IPv6地址配置方式为无状态自动配置方式,则将返
回路由器通告响应消息;
具体为:数据卡确定自身的IPv6地址配置方式为无状态自动配置方式时,
将返回路由器通告响应消息,消息中携带前缀地址。该步骤的实现方法与步骤
204相同,此处不再详述。
步骤304:主机获取路由通告响应消息中的前缀地址,并通过无状态自动
配置随机生成接口标识组成IPv6全球单播地址;
具体为:数据卡将GGSN分配的IPv6前缀地址通过路由通告响应消息响
应给终端中的主机,主机从路由通告响应消息中获取到前缀地址之后,通过无
状态自动配置方式随机生成接口标识,与所述前缀地址共同组成128位的全球
单播地址,IPv6地址协商过程完成。
图4为本发明数据卡IPv6地址静态配置实施例的流程图,如图4所示,包
括如下步骤:
步骤401:数据卡收到IPv6拨号请求后,在空口上发起PDP激活过程;
具体为:将向GPRS服务支持节点(SGSN)发送激活PDP上下文(PDP
Context)请求信息,所述请求信息中包含如下信息:接入点(APN)、PDP类
型、PDP地址、询问握手认证协议(CHAP)或密码认证协议(PAP)信息、IPv6
DNS等信息。PDP类型为IPv6,PDP地址为空,代表请求动态分配IP地址。
网关GPRS支持节点(GGSN)收到请求后,通过本地/动态主机配置协议(DHCP)
/远程用户拨号认证系统(RADIUS)对终端进行鉴权,并分配IPv6地址或者前
缀地址,以及其他参数,如服务质量(QoS)参数、IPv6DNS服务器地址,并
将鉴权结果以及各项参数信息封装在激活PDP上下文接受消息里发回给数据
卡,PDP激活过程完成。
步骤402:主机向数据卡发送路由器请求消息;
具体为:终端中的主机检测到以太网设备端口状态为UP后,就会启动地
址冲突检测过程。主机发送邻居请求消息到数据卡尝试验证自身的接口标识是
否唯一,如果数据卡确定主机请求的接口标识地址与一个正在使用的接口标识
地址存在冲突,那么数据卡就会给主机发送邻居通告指示重复地址检测失败,
此时主机会生成一个新的接口标识重新发送邻居请求消息。如果地址冲突检测
正常,主机会发送路由器请求(RS)消息到数据卡。
步骤403:数据卡确定IPv6地址配置方式为静态配置方式,则不返回路由
器通告响应消息;
具体为:数据卡确定自身的IPv6地址配置方式为静态配置方式时,将不返
回路由器通告响应消息,即数据卡丢弃返回给终端中的主机的路由器通告响应
消息。由于主机无法收到路由器通告响应消息,进而不能从路由器通告响应消
息中获取到前缀地址,因此主机不会自动生成IPv6全球单播地址。
步骤404:主机从数据卡获取IPv6全球单播地址;
具体为:在应用过程中,终端中的主机在生成IPv6地址失败时,可通过下
发控制指令给数据卡来获得IPv6地址。数据卡则通知自身内部的IPv6地址处
理模块从PDP激活消息中获取有效的IPv6地址并提供给控制指令模块,控制
指令模块将携带有效IPv6全球单播地址的控制指令发送给PC侧软件。
PC侧软件从数据卡返回的控制指令中获取到IPv6全球单播地址之后,通
过调用操作系统提供的NetSH网络命令、或者修改操作系统注册表中IPv6地
址信息的方式,将该IPv6全球单播地址设置给终端中的主机,IPv6地址分配完
成。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范
围。