android系统上无状态方式获取IPV6地址的方法与流程

文档序号:12379728阅读:3429来源:国知局
android系统上无状态方式获取IPV6地址的方法与流程

本发明涉及通信领域,尤其涉及一种android系统上无状态方式获取IPV6地址的方法。



背景技术:

目前有些厂商的移动终端设备,对无状态IPv6地址的获取是通过修改kernel来实现的。这种的实现过程大致如下:framework层发起数据链路的激活,并在适当的时机通知内核(kernel)触发IP协议层发送路由请求(Router Solicitation)报文,收到路由广播(Router Advertisement)报文后对其进行解析,并组成完整的IPv6地址,将这一地址设置到某一系统属性中;然后,framework层通过这一属性获取到完整的IPv6地址。这种方式不仅需要framework与kernel交互,并在kernel额外增加流程来触发发送RS报文外,还需要新增系统属性来保存IPv6地址,是一种相对繁琐的方法。

Android系统的IP协议层虽然已支持ICMPv6协议,但是对IPv6无状态地址自动配置,却没有提供现成的实现方式,各终端厂商基于android系统开发了不同的IPv6地址获取方式,有些实现方式修改点较多,增加了代码的复杂度。



技术实现要素:

为了解决现有技术存在的问题,本发明提供一种android系统上无状态方式获取IPV6地址的方法,包括

无线接口层通过无线协议栈获得PDP激活结果;

所述无线接口层通过所述PDP激活结果获得链路本地地址,并将所述链路本地地址写入网卡设备;

IP协议栈检测到网卡设备上的所述链路本地地址后,发送路由请求给路由器;

所述路由器应答路由广播至所述IP协议栈,所述IP协议栈从所述路由广播 解析出网络前缀,并将所述网络前缀与所述PDP激活结果组成完整的IPV6单播地址;以及

IP协议栈将所述完整的IPV6单播地址写入所述网卡设备,所述无线接口层从所述网卡设备读取所述完整的IPV6单播地址。

可选的,无线接口层通过无线协议栈获得PDP激活结果的方法包括:

所述无线接口层发送PDP激活请求至所述无线协议栈;以及

所述无线协议栈与网络实现信令互交,得出PDP激活结果并传回至所述无线接口层。

可选的,当处于2G或3G网络时,所述PDP激活结果为网络分配的IPV6地址。

可选的,无线接口层通过所述PDP激活结果获得链路本地地址的方法包括:

无线接口层从所述网络分配的IPV6地址中提取接口号;以及

通过所述接口号获得所述链路本地地址。

可选的,所述接口号为所述网络分配的IPV6地址的后64bit的接口号。

可选的,无线接口层通过所述PDP激活结果获得链路本地地址的方法为,在所述接口号前加fe80的前缀。

可选的,当处于LTE网络时,所述PDP激活的结果为接口号。

可选的,无线接口层通过所述PDP激活结果获得链路本地地址的方法为,在所述接口号前加fe80的前缀。

可选的,所述路由器为GGSN。

可选的,所述无线接口层、网卡设备和所述IP协议栈位于android系统的无线终端上,

本发明的android系统上无状态方式获取IPV6地址的方法,是在android系统基础上开发的无状态方式获取IPv6单播地址的方法,只需在android的RIL上将链路本地地址写到无线网卡上,即可触发IP协议栈自动完成IPv6地址前缀的获取、IPv6完整单播地址的组装以及将该地址配置到网卡设备。此方法基于现有的android系统,无需在内核上增加额外的处理,简单有效且具有普适性。

附图说明

图1为本发明一实施例所述android系统上无状态方式获取IPV6地址的方 法中结合android系统结构的实现示意图。

图2为本发明一实施例所述android系统上无状态方式获取IPV6地址的方法的流程图。

具体实施方式

以下结合附图和具体实施例对本发明作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用以方便、明晰地辅助说明本发明实施例的目的。

本发明提供一种android系统上无状态方式获取IPV6地址的方法,其中所述android系统如图1所示,包括:

RIL模块10(无线接口层),用于跟无线协议栈40交互及读写网卡设备20;

无线协议栈40,用于跟无线网络进行PDP相关的信令交互;

网卡设备20,可存储IP地址并可供读写;

IP协议栈30,支持ICMPv6协议;

路由器50,可以接收路由请求及发出路由广播。

其中,所述无线接口层10、网卡设备20和所述IP协议栈30位于android系统的无线终端上。

在图1所示结构的基础上,本发明的android系统上无状态方式获取IPV6地址的方法如图2所示,包括以下步骤:

无线接口层通过无线协议栈获得PDP激活结果;

所述无线接口层通过所述PDP激活结果获得链路本地地址,并将所述链路本地地址写入网卡设备;

IP协议栈检测到网卡设备上的所述链路本地地址后,发送路由请求给路由器;

所述路由器应答路由广播至所述IP协议栈,所述IP协议栈从所述路由广播解析出网络前缀,并将所述网络前缀与所述PDP激活结果组成完整的IPV6单播地址;以及

IP协议栈将所述完整的IPV6单播地址写入所述网卡设备,所述无线接口层从所述网卡设备读取所述完整的IPV6单播地址。

相对于现有技术的方案,本发明提供的android系统上无状态方式获取IPV6地址的方法仅需在RIL层10操作无线网卡设备20即可获取IPv6地址,无需framework与kernel的交互,更无需在kernel增加额外的处理,简单有效并具有普适性。

在本实施例中,结合如图1所示的android系统,本发明的android系统上无状态方式获取IPV6地址的方法具体包括以下步骤(结合图1中的箭头,箭头的标号分别对应如下的步骤标号):

1. RIL 10请求激活IPv6类型的PDP,并将该请求发送到无线协议栈40;

2.无线协议栈40完成跟网络的信令交互后,将PDP激活的结果告知RIL 10,该结果中包含了网络分配的IPv6地址(2\3G网络下)或64bit的接口号(interface id,LTE网络下);

3.若系统处于2G或3G网络下,则RIL 10从网络分配的IPv6地址中提取出后64bit的接口号;若系统处于LTE网络下,则RIL 10直接使用网络分配的接口号;之后利用上述接口号组成一个链路本地(link local)地址,并将所述链路本地地址写到网卡设备20;

其中,RIL 10通过所述PDP激活结果获得链路本地地址的方法为,在所述接口号前加fe80的前缀。

4. IP协议栈30检测到网卡设备20上有可用的链路本地地址,满足了发送路由请求的条件;

5. IP协议栈30发送路由请求给路由器50,在本实施例中所述路由器50为GGSN(Gateway GPRS Support Node);

6. IP协议栈30接收路由器50应答的路由广播,从中解析出网络前缀,并将其跟上述的接口号组成完整的IPv6单播地址;

7. IP协议栈30将所述完整的IPv6单播地址写到网卡设备20上;

8. RIL 10从网卡设备20上读取到所述完整的IPv6单播地址。

上述方法包含了在2G/3G和LTE两种网络下IPv6单播地址的获取过程,其区别在于RIL 10通过无线协议栈40获得的PDP激活结果的不同。在LTE网络下获得的为64bit的接口号,此时RIL 10可直接使用该接口号组成链路本地地址,且在后续可直接通过此接口号与解析出的网络前缀组成完成的IPV6单播地址。而在2G/3G网络下,由于RIL 10通过无线协议栈40获得的PDP激活结果仅包 含网络分配的IPV6地址,因此需要从该地址中提取出64bit的接口号,再进行后续步骤。

以上是IPv6类型PDP的完整激活流程,该发明仅在现有的公共流程的基础上新增了步骤3和8,这两步只需在RIL 10进行读写网卡设备20的操作,即可获取到可用的IPv6单播地址。其中步骤4~6都是android系统的内核的既有实现,无需做额外的修改,因此本方法的实现十分方便。

本发明的android系统上无状态方式获取IPV6地址的方法,是在android系统基础上开发的无状态方式获取IPv6单播地址的方法,只需在android的RIL上将链路本地地址写到无线网卡上,即可触发IP协议栈自动完成IPv6地址前缀的获取、IPv6完整单播地址的组装以及将该地址配置到网卡设备。此方法基于现有的android系统,无需在内核上增加额外的处理,简单有效且具有普适性。

本发明的方法仅需在RIL读写网卡设备即能达到无状态获取IPv6地址的效果。该方法充分利用了android系统已有的某些功能,在已有的PDP激活的流程基础上,仅需在RIL做一个简单的操作即可触发android的IP协议栈立刻自动完成无状态地址获取的步骤,代码实现起来简单,可读性高,效果实时可靠。

显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1