发明内容
本发明提出一种通过WIFI接入分组数据服务节点的方法、系统和终端,在WIFI链路之上再建立PPP链路,数据包交互的通道是基于WIFI链路的PPP链路,从而实现各种PDN提供的数据业务。
本发明的技术方案是这样实现的:
一种接入分组数据服务节点PDSN的方法,包括:
终端通过WIFI模块直接访问业务服务器进行注册;
所述终端接收注册成功后从所述业务服务器返回的参数信息;
所述终端启动点对点协议PPP模块,对建立PPP链路的请求信息进行PPP封装,生成封装了PPP头的第一数据包;
所述终端启动隧道TUNNEL模块,根据所述参数信息将所述第一数据包再封装一层TUNNEL头,生成第二数据包,所述PPP模块与所述TUNNEL模块通过一对虚拟终端设备进行通信;
所述终端的IP协议栈将所述第二数据包再封装一层基于WIFI链路的IP头,生成第三数据包,并通过WIFI链路将所述第三数据包发送至无线接入网关WAG;
所述第三数据包用于在所述WAG接收后,被解析掉IP头和TUNNEL头,还原出第一数据包,还原出的所述第一数据包用于在被所述PDSN接收后执行解析处理,以建立所述PDSN与所述终端的链路连接。
优选的,所述终端通过WIFI模块直接访问业务服务器进行注册具体为:
所述终端通过WIFI网络接口的本地IP地址WIFI-IP直接访问业务服务器进行注册。
优选的,所述参数信息包括:
无线接入网关WAG的IP地址WAG-IP,以及进行TUNNEL头封装时的参数标示码Stream ID和目标端口Dest-Port。
优选的,所述第三数据包IP头中的目的IP地址为无线接入网关WAG的IP地址WAG-IP。
优选的,还包括:
所述终端在驱动层建立一对虚拟终端设备,所述一对虚拟终端设备包括第一虚拟终端设备和第二虚拟终端设备,所述一对虚拟终端设备用于维护一个接收和发送的队列,所述一对虚拟终端设备的通信方式为:所述第一虚拟终端设备接收的数据,在所述第二虚拟终端设备中进行读取,所述第二虚拟终端设备接收的数据,在所述第一虚拟终端设备中进行读取。
优选的,所述PPP模块与所述TUNNEL模块通过一对虚拟终端设备进行通信为:
所述终端启动所述PPP模块时,指定参数使所述PPP模块的数据传输到所述一对虚拟终端设备的第一虚拟终端设备中;
所述终端启动所述TUNNEL模块时,打开所述一对虚拟终端设备的第二虚拟终端设备。
优选的,建立与所述终端的链路连接后还包括:
所述终端生成一个新的PPP网络接口,所述终端获得由所述PDSN分配的本地IP地址Local-IP;
所述终端设置WIFI网络接口的目标地址为WAG-IP的路由指向WIFI网络接口原来的默认路由,并删除WIFI网络接口原来的默认路由,以PPP网络接口的默认路由作为所述终端的默认路由,形成基于WIFI链路的PPP链路的数据包交互通道。
优选的,以PPP网络接口的默认路由作为所述终端的默认路由,形成基于WIFI链路的PPP链路的数据包交互通道后,上层应用通过所述基于WIFI链路的PPP链路的数据包交互通道进行分组数据的接收或发送。
优选的,所述上层应用通过所述基于WIFI链路的PPP链路的数据包交互通道进行分组数据发送的具体过程为:
上层应用APP的业务数据经过IP协议栈封装后,根据系统默认路由表项生成要进行业务交互的第一IP数据包,在所述第一IP数据包的IP头中,源IP地址为终端本地IP地址Local-IP,目的IP地址为APP要访问的公用数据网PDN或因特网的IP地址;
PPP模块对所述第一IP数据包进行PPP封装,生成封装了PPP头的第二IP数据包,并将所述第二IP数据包发送到一对虚拟终端设备的第一虚拟终端设备;
TUNNEL模块启动所述一对虚拟终端设备的第二虚拟终端设备,读取所述第二IP数据包,根据所述参数信息将所述第二IP数据包再封装一层TUNNEL头和外层IP头,生成第三IP数据包,所述第三IP数据包的外层IP头中的目的IP地址为WAG-IP,所述第三IP数据包按照目标地址为WAG-IP的路由表项,通过WIFI网络接口经由WIFI链路的路由发送至WAG;
所述第三IP数据包用于在所述WAG接收后,被解析掉IP头和TUNNEL头,还原出第二IP数据包,还原出的所述第二IP数据包用于在进行GRE封装转发到PDSN后被解析处理,以将要进行交互的第一IP数据包向目标地址进行转发。
一种终端,包括:
WIFI管理模块,用于通过WIFI模块直接访问业务服务器进行注册,并保存注册成功后从所述业务服务器返回的参数信息;
在驱动层建立的第一虚拟终端设备和第二虚拟终端设备,所述第一虚拟终端设备和第二虚拟终端设备用于维护一个接收和发送的队列;
PPP模块,用于对建立PPP链路的请求信息进行PPP封装,生成封装了PPP头的第一数据包,并发送所述第一数据包至所述第一虚拟终端设备;
TUNNEL模块,用于从所述第二虚拟终端设备读取所述第一数据包,并根据所述参数信息将所述第一数据包再封装一层TUNNEL头,生成第二数据包;
IP协议栈,用于将所述第二数据包再封装一层基于WIFI链路的IP头,生成第三数据包,并通过所述WIFI模块将所述第三数据包发送至无线接入网关WAG。
优选的,所述WIFI管理模块通过WIFI网络接口的本地IP地址WIFI-IP直接访问业务服务器进行注册。
优选的,所述参数信息包括:
无线接入网关WAG的IP地址WAG-IP,以及进行TUNNEL头封装时的参数标示码Stream ID和目标端口Dest-Port。
优选的,所述第三数据包IP头中的目的IP地址为无线接入网关WAG的IP地址WAG-IP。
优选的,还包括:
网络设置模块,用于生成一个新的PPP网络接口,获得由所述PDSN分配的本地IP地址Local-IP,并设置WIFI网络接口的目标地址为WAG-IP的路由指向WIFI网络接口原来的默认路由,并删除WIFI网络接口原来的默认路由,以PPP网络接口的默认路由作为所述终端的默认路由,形成基于WIFI链路的PPP链路的数据包交互通道。
优选的,所述PPP模块,还用于将进行业务交互的第一IP数据包进行PPP封装,生成封装了PPP头的第二IP数据包,并将所述第二IP数据包发送到一对虚拟终端设备的第一虚拟终端设备;
所述TUNNEL模块,还用于启动所述一对虚拟终端设备的第二虚拟终端设备,读取所述第二IP数据包,根据所述参数信息将所述第二IP数据包再封装一层TUNNEL头,生成第三IP数据包;
所述IP协议栈,还用于上层应用APP的业务数据经过IP协议栈封装后,生成要进行业务交互的第一IP数据包,以及将所述第三IP数据包封装外层IP头。
一种接入分组数据服务节点PDSN的系统,所述系统包括终端、无线接入网关WAG和分组数据服务节点PDSN;
所述终端包括:
WIFI管理模块,用于通过WIFI模块直接访问业务服务器进行注册,并保存注册成功后从所述业务服务器返回的参数信息;
在驱动层建立的第一虚拟终端设备和第二虚拟终端设备,所述第一虚拟终端设备和第二虚拟终端设备用于维护一个接收和发送的队列;
PPP模块,用于对建立PPP链路的请求信息进行PPP封装,生成封装了PPP头的第一数据包,并发送所述第一数据包至所述第一虚拟终端设备;
TUNNEL模块,用于从所述第二虚拟终端设备读取所述第一数据包,并根据所述参数信息将所述第一数据包再封装一层TUNNEL头,生成第二数据包;
IP协议栈,用于将所述第二数据包再封装一层基于WIFI链路的IP头,生成第三数据包,并通过所述WIFI模块将所述第三数据包发送至无线接入网关WAG;
所述无线接入网关WAG,用于接收所述第三数据包,解析掉IP头和TUNNEL头,还原出第一数据包,并将所述第一数据包进行通用路由协议GRE封装,并转发至所述分组数据服务节点PDSN;
所述分组数据服务节点PDSN,用于对所述第一数据包进行解析处理后,建立与所述终端的链路连接。
优选的,所述WIFI管理模块通过WIFI网络接口的本地IP地址WIFI-IP直接访问业务服务器进行注册。
优选的,所述参数信息包括:
无线接入网关WAG的IP地址WAG-IP,以及进行TUNNEL头封装时的参数标示码Stream ID和目标端口Dest-Port。
优选的,所述第三数据包IP头中的目的IP地址为无线接入网关WAG的IP地址WAG-IP。
优选的,所述终端还包括:
网络设置模块,用于生成一个新的PPP网络接口,获得由所述PDSN分配的本地IP地址Local-IP,并设置WIFI网络接口的目标地址为WAG-IP的路由指向WIFI网络接口原来的默认路由,并删除WIFI网络接口原来的默认路由,以PPP网络接口的默认路由作为所述终端的默认路由,形成基于WIFI链路的PPP链路的数据包交互通道。
优选的,所述PPP模块,还用于将进行业务交互的第一IP数据包进行PPP封装,生成封装了PPP头的第二IP数据包,并将所述第二IP数据包发送到一对虚拟终端设备的第一虚拟终端设备;
所述TUNNEL模块,还用于启动所述一对虚拟终端设备的第二虚拟终端设备,读取所述第二IP数据包,根据所述参数信息将所述第二IP数据包再封装一层TUNNEL头,生成第三IP数据包;
所述IP协议栈,还用于上层应用APP的业务数据经过IP协议栈封装后,生成要进行业务交互的第一IP数据包,以及将所述第三IP数据包封装外层IP头;
所述无线接入网关,还用于接收所述第三IP数据包,解析掉所述第三IP数据包的TUNNEL头和外层IP头,还原出第二IP数据包,再将所述第二IP数据包进行GRE封装后转发到所述PDSN;
所述分组数据服务节点PDSN,还用于对所述第二IP数据包进行解析,并将要进行交互的第一IP数据包向目标地址进行转发。
本发明所述技术方案是在WIFI链路之上再建立PPP链路,数据包交互的通道是基于WIFI链路的PPP链路,因此本发明提供的方案使终端能以高于蜂窝移动通信网络接入的速度接入PDSN,从而实现各种PDN提供的数据业务,由于基于TUNNEL隧道层,使得通过WLAN(WIFI)访问PDN或因特网时,必须经由无线接入网关WAG,从而业务运营商在WAG以及TUNNEL协议层面上,就可以非常方便地实现业务区分,信息管理及相关功能的拓展。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
终端以3G/WIFI双模手机,蜂窝移动通信网络以CDMA2000为例对用户使用数据业务进行说明,参照图1,在现有技术中,用户在使用数据业务时有两种方式,其终端侧的系统软件架构如图2所示:
方式一、终端通过CDMA拨号方式通过基站(BTS,Base Transceiver Station),经由宽带服务控制器(BSC,Broadwidth Serve Controller)接入分组数据服务节点(PDSN,Packet Data Serving Node),进而使用公用数据网(PDN)的数据业务或接入Internet。从终端角度看,该方式的业务流程为;上层数据业务应用(APP)通过TCP/IP协议栈生成要进行业务交互的IP网络数据包,再经过PPP层对IP数据包封装,其物理层是无线通信模块(Modem),通过Modem的空中接口将PPP数据包发送到BTS中,BTS再通过其他网络传输设备将数据包最终发送到PDSN上,PDSN主要实现与终端间基于PPP的链路协商、分组数据业务网的连接、以及相关认证的功能,终端和PDSN之间对PPP协议各参数进行协商,协商成功后,便会建立该终端与CDMA网络PDSN的一条PPP链路。基于此链路,用户便可以使用PDN的数据业务和一些Internet的服务,其数据包交互的通道是通过协商建立的PPP链路。
方式二、终端通过WIFI连接无线访问节点(AP,(Wireless)Access Point),通过局域或城域网(DSLAM),经由无线访问控制器(AC)直接接入Internet。从终端的角度来看,与方式一业务流程不同的是,该方式下首先要通过WIFI模块接入AP,建立WIFI链路。在使用数据业务时,APP通过TCP/IP协议栈生成了要进行业务交互的IP网络数据包后,并不再将数据进行PPP封装,其网络链路层和物理层是采用的是基于802.11b协议的WIFI模块,通过WIFI模块直接将IP数据包发送到AP中,AP相当于传统的有线局域网络与无线局域网络之间的桥梁,从而将IP数据包转发到已经架设好的Internet网络中,其数据包交互的通道是WIFI链路。
本发明数据业务的实现方案如图3,当用户在使用数据业务时,APP将通过TCP/IP协议栈生成了要进行交互的网络数据包,TUNNEL为终端与无线接入网关(WAG)之间业务隧道,WAG为完成WIFI接入的认证、业务连接管理和数据传输等的网关。通过WIFI接入PDSN的实现方案,实质上是一个通过TUNNEL层来实现的,在WIFI链路之上再建立PPP链路的过程。与现有技术中两种方式的根本区别在于,在该方式下使用数据业务时,数据包交互的通道是基于WIFI链路的PPP链路。参照图4,为本发明实现过程的具体原理图,参照图5,为本发明数据包在各层间的数据包格式与流向图。
参照图6,示出了本发明一种接入分组数据服务节点的方法第一实施例的流程图,包括步骤:
步骤S610、终端通过WIFI模块直接访问业务服务器进行注册。
所述终端通过WIFI网络接口的本地IP地址WIFI-IP直接访问业务服务器进行注册。
在进行数据业务前,终端应先向业务服务器,如SIP服务器等进行注册,此时终端采用的是WIFI网络接口的默认路由。
步骤S620、所述终端接收注册成功后从所述业务服务器返回的参数信息。
注册成功后,终端将获得无线接入网关WAG的IP地址WAG-IP,以及进行TUNNEL头封装时的必要参数标示码Stream ID和目标端口Dest-Port等参数。
步骤S630、所述终端启动点对点协议PPP模块,对建立PPP链路的请求信息进行PPP封装,生成封装了PPP头的第一数据包。
终端进行PPP建链,PPP协议层会发出建链请求、参数协商等封装了PPP包头的第一数据包,并将所述第一数据包发送至第一虚拟终端设备。
所述终端在驱动层建立一对虚拟终端设备,所述一对虚拟终端设备为第一虚拟终端设备和第二虚拟终端设备,所述一对虚拟终端设备用于维护一个接收和发送的队列,可以进行类似管道的通信,所述一对虚拟终端设备的通信关系为:所述第一虚拟终端设备接收的数据,在所述第二虚拟终端设备中进行读取,所述第二虚拟终端设备接收的数据,在所述第一虚拟终端设备中进行读取。
所述终端启动PPP模块时,通过参数指定使所述PPP模块传输数据使用一个虚拟终端设备,而不是实际的物理串口,在本实施例中通过第一虚拟终端设备发送所述第一数据包,当然,也可以通过第二虚拟终端设备发送所述第一数据包。
步骤S640、所述终端启动隧道TUNNEL模块,根据所述参数信息将所述第一数据包再封装一层TUNNEL头,生成第二数据包。
所述TUNNEL模块打开与所述第一虚拟终端设备对应的第二虚拟终端设备,通过第二虚拟终端设备读取所述第一数据包。
所述PPP模块与所述TUNNEL模块通过一对虚拟终端设备进行通信,当PPP模块要发送数据的时候,会把数据包发送到第一虚拟终端设备,所述TUNNEL模块通过与所述第一虚拟终端设备对应的第二虚拟终端设备来读取该数据;当所述PPP模块要接收数据的时候,所述TUNNEL模块通过Socket接口接收到WAG-IP发送过来的数据包,对数据包的TUNNEL头等解封装后,发送到第二虚拟终端设备中,所述PPP模块就可以通过与其成对的第一虚拟终端设备接收到这个数据,所述第一虚拟终端设备和第二虚拟终端设备并不特指,即所述PPP模块也可以将数据发送至第二虚拟终端设备,或在第二虚拟终端设备中接收数据,所述TUNNEL模块也可以将数据发送至第一虚拟终端设备,或在第一虚拟终端设备中接收数据。
所述UNNEL模块接收到第一数据包后,根据所述参数信息将所述第一数据包再封装一层TUNNEL头,生成第二数据包。所述TUNNEL协议的封装格式如图7所示,包括Stream ID、Dest-Port、Proto ID、Proto Ver、CheckSum和Pkt Length,其中,所述Stream ID和Dest-Port字段即为步骤S620中所获取的相应参数,Proto ID,Proto Ver及CheckSum字段则是模块内部固定的值,Pkt Length字段为封装了TUNNEL包头后的整个报文的长度值。
步骤S650、所述终端的IP协议栈将所述第二数据包再封装一层基于WIFI链路的IP头,生成第三数据包,并通过WIFI链路将所述第三数据包发送至无线接入网关WAG。
所述第三数据包IP头中的目的IP地址为无线接入网关WAG的IP地址WAG-IP。
所述第三数据包通过WIFI链路经由DSLAM传输到WAG。
步骤S660、所述WAG接收到所述第三数据包后,解析掉IP头和TUNNEL头,还原出第一数据包,并将所述第一数据包进行通用路由协议GRE封装,并转发至分组数据服务节点PDSN。
步骤S670、所述PDSN对所述第一数据包进行解析处理后,建立与所述终端的链路连接。
所述PDSN再对所述第一数据包进行解析,进而对PPP模块的建链数据包进行响应,进行最大接收单元(MRU)和IP地址分配等方面的协商,从而完成链路建立。
参照图8,链路建立后,还进一步可以包括:
步骤S680、所述终端生成一个新的PPP网络接口,所述终端获得由所述PDSN分配的本地IP地址Local-IP;所述终端设置WIFI网络接口上目标地址为WAG-IP的路由指向WIFI网络接口原来的默认路由,并删除WIFI网络接口原来的默认路由,以PPP网络接口的默认路由作为所述终端的默认路由。
链路建立后,终端获得PDSN所分配的IP地址,在双IP的情况下,添加一条目标地址为WAG-IP的路由,指向WIFI网络接口原来的默认路由的路由表项,将系统的默认路由由原来WIFI网络接口原来的默认路由改为PPP网络接口的默认路由。通过以上修改进行强制路由,形成基于WIFI链路的PPP链路的数据包交互的通道。
这样保证当上层访问PDSN时,会选择系统默认路由表项,即PPP网络接口的默认路由,进而经过PPP协议层的封装,TUNNEL封装后,以IP数据包的形式向目的IP地址WAG-IP发送,按照此时的路由表项,最终通过WIFI网络接口发送出去。通过这种强制路由的方法,不需对上层业务软件作任何的修改,就可以实现规范中的要求。
链路建立后,所述终端即可基于该链路使用数据业务,进行数据业务的交换了。
参照图9,示出了本发明一种接入分组数据服务节点PDSN方法第二实施例的流程图。本实施例所述技术方案包括链路建立过程和分组数据传输过程,所述链路建立过程在第一实施例中已经进行了详细描述,在此不再赘述,参照第一实施例中相关部分的描述即可;下面主要对链路建立、路由更改后的数据传输过程进行详细描述,本领域技术人员可以理解,数据传输过程包括数据接收和数据发送,以下主要描述终端侧数据的发送过程,基于该过程的逆过程,终端也可以利用该PPP链路进行分组数据的接收,从而实现终端与PDN或因特网中数据业务的交互。
步骤S910、上层应用APP的业务数据经过IP协议栈封装后,生成要进行业务交互的第一IP数据包。
用户在使用数据业务时,上层应用APP经过IP协议栈封装后,生成要进行业务交互的第一IP数据包,在所述第一IP数据包的IP头中,源IP地址为终端本地IP地址Local-IP,目的IP地址为APP要访问的公用数据网PDN或因特网的IP地址。
步骤S920、PPP模块对所述第一IP数据包进行PPP封装,生成封装了PPP头的第二IP数据包,并将所述第二IP数据包发送到一对虚拟终端设备的第一虚拟终端设备。
步骤S930、TUNNEL模块启动所述一对虚拟终端设备的第二虚拟终端设备,读取所述第二IP数据包,根据所述参数信息将所述第二IP数据包再封装一层TUNNEL头和外层IP头,生成第三IP数据包,并将所述第三IP数据包通过所述PPP网络接口的默认路由发送到WAG。
所述第三IP数据包的外层IP头中的目的IP地址为WAG-IP。
步骤S940、所述WAG接收到所述第三IP数据包后,解析掉所述第三IP数据包的TUNNEL头和外层IP头,还原出第二IP数据包,再将所述第二IP数据包进行GRE封装后转发到PDSN。
步骤S950、所述PDSN对所述第二IP数据包进行解析,并将要进行交互的第一IP数据包向目标地址进行转发。
通过以上步骤,完成终端向PDN或因特网中的目标地址发送数据,基于上述步骤的逆过程,所述终端可以接收PDN或因特网中发送的数据,从而完成终端与PDN或因特网中目标地址间的数据交互。为了节约篇幅,在此不再对该逆过程进行描述。
本发明所述技术方案是在WIFI链路之上再建立PPP链路,链路建立后,终端获得了PDSN所分配的IP地址,在双IP的情况下,添加一条目标地址为WAG-IP的路由,指向WIFI网络接口原来的默认路由的路由表项,将系统的默认路由由原来的WIFI网络接口原来的默认路由该为PPP网络接口的默认路由。通过以上修改进行强制路由,形成基于WIFI链路的PPP链路的数据包交互的通道,在此通道上进行分组数据的接收和发送。本发明使终端能以高于蜂窝移动通信网络接入的速度接入PDSN。在双IP的情况下,利用WIFI功能来进行各种PDN提供的数据业务。并方便业务运营商在TUNNEL协议层面上,实现业务区分,信息管理及相关功能的拓展。
参见图10,示出了本发明一种终端第一实施例的组成结构图。所述终端包括:
WIFI管理模块,用于通过WIFI模块直接访问业务服务器进行注册,并保存注册成功后从所述业务服务器返回的参数信息。
第一虚拟终端设备和第二虚拟终端设备,第一虚拟终端设备和第二虚拟终端设备优选建立在驱动层,所述第一虚拟终端设备和第二虚拟终端设备用于维护一个接收和发送的队列。
PPP模块,用于对建立PPP链路的请求信息进行PPP封装,生成封装了PPP头的第一数据包,并发送所述第一数据包至所述第一虚拟终端设备。
TUNNEL模块,用于从所述第二虚拟终端设备读取所述第一数据包,并根据所述参数信息将所述第一数据包再封装一层TUNNEL头,生成第二数据包。
IP协议栈,用于将所述第二数据包再封装一层基于WIFI链路的IP头,生成第三数据包,并通过所述WIFI模块将所述第三数据包发送至无线接入网关WAG。
所述终端还包括网络设置模块,用于生成一个新的PPP网络接口,获得由所述PDSN分配的本地IP地址Local-IP,并设置WIFI网络接口上目标地址为WAG-IP的路由指向WIFI网络接口原来的默认路由,并删除WIFI网络接口原来的默认路由,以PPP网络接口的默认路由作为所述终端的默认路由。
所述终端的所述PPP模块,还用于将进行业务交互的第一IP数据包进行PPP封装,生成封装了PPP头的第二IP数据包,并将所述第二IP数据包发送到一对虚拟终端设备的第一虚拟终端设备。
所述TUNNEL模块,还用于启动所述一对虚拟终端设备的第二虚拟终端设备,读取所述第二IP数据包,根据所述参数信息将所述第二IP数据包再封装一层TUNNEL头,生成第三IP数据包。
所述IP协议栈,还用于上层应用APP的业务数据经过IP协议栈封装后,生成要进行业务交互的第一IP数据包,以及将所述第三IP数据包封装外层IP头。
所述终端的工作过程和工作原理在方法实施例中进行了详细描述,在此不再赘述,参照相关部分的描述即可。
本实施例只是以终端发送数据进行描述,本领域技术人员可以理解,对于从PDN或因特网中接收数据,所述终端各组成部分基于逆过程即可完成,为了节约篇幅,在此不再赘述。
本发明还公开了一种接入分组数据服务节点PDSN的系统,所述系统包括终端、无线接入网关WAG和分组数据服务节点PDSN。
所述终端包括:
WIFI管理模块,用于通过WIFI模块直接访问业务服务器进行注册,并保存注册成功后从所述业务服务器返回的参数信息。
在驱动层建立的第一虚拟终端设备和第二虚拟终端设备,所述第一虚拟终端设备和第二虚拟终端设备用于维护一个接收和发送的队列。
PPP模块,用于对建立PPP链路的请求信息进行PPP封装,生成封装了PPP头的第一数据包,并发送所述第一数据包至所述第一虚拟终端设备。
TUNNEL模块,用于从所述第二虚拟终端设备读取所述第一数据包,并根据所述参数信息将所述第一数据包再封装一层TUNNEL头,生成第二数据包。
IP协议栈,用于将所述第二数据包再封装一层基于WIFI链路的IP头,生成第三数据包,并通过所述WIFI模块将所述第三数据包发送至无线接入网关WAG。
所述无线接入网关WAG,用于接收所述第三数据包,解析掉IP头和TUNNEL头,还原出第一数据包,并将所述第一数据包进行通用路由协议GRE封装,并转发至所述分组数据服务节点PDSN。
所述分组数据服务节点PDSN,用于对所述第一数据包进行解析处理后,建立与所述终端的链路连接。
所述PPP模块,还用于将进行业务交互的第一IP数据包进行PPP封装,生成封装了PPP头的第二IP数据包,并将所述第二IP数据包发送到一对虚拟终端设备的第一虚拟终端设备。
所述TUNNEL模块,还用于启动所述一对虚拟终端设备的第二虚拟终端设备,读取所述第二IP数据包,根据所述参数信息将所述第二IP数据包再封装一层TUNNEL头,生成第三IP数据包。
所述IP协议栈,还用于上层应用APP的业务数据经过IP协议栈封装后,生成要进行业务交互的第一IP数据包,以及将所述第三IP数据包封装外层IP头。
所述无线接入网关,还用于接收所述第三IP数据包,解析掉所述第三IP数据包的TUNNEL头和外层IP头,还原出第二IP数据包,再将所述第二IP数据包进行GRE封装后转发到所述PDSN。
所述分组数据服务节点PDSN,还用于对所述第二IP数据包进行解析,并将要进行交互的第一IP数据包向目标地址进行转发。
所述系统的工作过程和工作原理在方法实施例部分进行了详细描述,在此不再赘述,参照相关部分的描述即可。
本实施例只是以系统发送数据进行描述,本领域技术人员可以理解,对于从PDN或因特网中接收数据,所述系统各组成部分基于逆过程即可完成,为了节约篇幅,在此不再赘述。
目前3G/WIFI双模终端软件架构有很多,比如Linux平台,Windows Mobile平台等,下面以Linux平台为例对本发明的较佳实施例作进一步详细说明,毫无疑问,本发明在其他平台也可实现。
步骤1、在驱动层,实现两个只是维护接收和发送的队列的成对虚拟终端设备,如图11所示,即M-TTY(主虚拟终端设备或第一虚拟终端设备)和S-TTY(从虚拟终端设备或第二虚拟终端设备),在Linux OS中的伪终端(PTY)恰好满足这种需求,PTY是Linux内核中实现的一组逻辑设备,成对存在,其底层是基于STREAMS的管道。在编译内核时,选中Character devices项目下的UNIX98PTY support,使内核能支持伪终端功能。
Linux下有多组这样的设备,在2.4内核下分别对应主设备:/dev/ptyp0~f,从设备:/dev/ttyp0~f。一般要先打开主设备,再打开从设备并进行一些解锁,权限以及线路规程的设置后才可以引用。在本实例中,只需使用一对伪终端/dev/ptyp0,和/dev/ttyp0,同时需将主从设备都设置成RAW模式。
步骤2、用户开始使用数据业务时,选择WIFI接入后,由WIFI管理模块处理,连接到AP成功后,此时终端上就形成了当前系统唯一的网络接口WIFI网络接口(eth0),并以eth0的默认路由作为系统的默认路由。
步骤3、WIFI管理模块会通过eth0,去访问业务服务器进行注册,注册成功后,依照运营商的规范,业务服务器会在注册成功的返回消息中附带以下参数:WAG-IP、TUNNEL头封装与解析时所需的参数Stream ID和Dest-Port,WIFI管理模块可以将这些参数保存到一个本地的配置文件比如:tunnel.conf中。
步骤4、WIFI管理模块启动PPP模块,进行PPP建链,Linux平台下可以通过调用“pppd/dev/ptyp0&”,用一个进程来启动PPP模块,并在后面指定参数/dev/ptyp0使用一个虚拟终端设备来传输PPP数据包,而非实际的物理串口。
步骤5、WIFI管理模块调用“ppptunl/dev/ttyp0&”,用一个进程来启动TUNNEL模块,其会打开和/dev/ptyp0成对的从设备/dev/ttyp0来实现TUNNEL模块和PPP模块之间的通信。
步骤6、当PPP模块要发送数据的时候,会把数据包发送到/dev/ptyp0,TUNNEL模块会通过设备/dev/ttyp0来读取该数据,并从前面记录下的tunnel.conf文件中读取相关参数,然后按照图7所示的TUNNEL协议的格式进行封装,最后通过Socket接口将封装后的数据包发送到WAG-IP。
步骤7、当PPP模块要接收数据的时候,TUNNEL模块通过Socket接口接收到WAG-IP发送过来的IP数据包,对TUNNEL头等解封装后,送到/dev/ttyp0设备上,PPP模块就可以通过/dev/ptyp0设备接收到这些数据。
步骤8、初期是进行PPP协议参数的协商过程,协商结束后,PPP建链成功,生成一个新的PPP网络接口(ppp0)。
步骤9、进行路由表的修改,这一步可以通过使用Linux下的网络工具IP命令,也可以通过代码进行实现。首先在eth0上添加一个表项,目标地址为WAG-IP的路由经过eth0原来的默认路由,然后删除系统上eth0的默认路由,以现在ppp0的默认路由作为系统的默认路由。从而实现双IP的情况下,通过TUNNEL进行转发数据的功能。
步骤10、用户在进行数据业务交互时,会按照步骤6、步骤7进行分组数据的接收和发送。
步骤11、当用户终止数据业务交互时,上层应用会通知WIFI管理模块,然后WIFI模块将运行的TUNNEL和PPP进程都关掉,并销毁所有中间过程,恢复到初始状态。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如上述方法实施例的步骤,所述的存储介质,如:磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。在本发明各方法实施例中,所述各步骤的序号并不能用于限定各步骤的先后顺序,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,对各步骤的先后变化也在本发明的保护范围之内。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。