一种适用于IOSVPN的网络感知及无缝切换方法与流程

文档序号:16131804发布日期:2018-12-01 00:24阅读:3984来源:国知局
本发明涉及网络通信领域,尤其涉及一种适用于iosvpn的网络感知及无缝切换方法。
背景技术
:移动vpn工作的网络环境较传统vpn相比更为复杂多变,时刻面临网络中断、网络恢复、网络切换的网络事件,网络中断事件包括从wi-fi网络或移动蜂窝网络到无网络,网络恢复事件包括从无网络到wi-fi网络到蜂窝移动网络,网络切换事件包括从wi-fi网络到移动蜂窝网络。随机频繁网络事件容易导致网络套接字异常甚至错误,导致了移动vpn通信失效甚至移动终端通信异常。由于考虑传输效率和通信开销的缘故,大部分vpn承载于无连接的udp协议之上,只能依赖于心跳包定时检测套接字通信状态。心跳包定时检测方法周期间隔较长,无法实时应对移动终端可能频繁发生的网络事件,因此无法实现移动vpn的无缝切换和自动恢复,导致不友好用户使用体验。针对移动vpn面临的网络事件问题,相关研究工作成果主要表现在发明专利和学术论文两方面。在发明专利方面,专利cn201510958933.6提出了一种移动终端的vpn网络自动恢复系统,在vpn客户端增加重连事件和动作模块,在vpn服务端增加重连协议以处理客户端的重连事件,未交待移动终端的网络状态和时间的检测方法。专利cn201710048163.0提出了一种移动网络环境下的vpn通信保障方法与装置,采用有限状态自动机对vpn工作和事件以及网络状态和事件建模,并根据网络事件采取相应的vpn事件以“礼貌暂停,智能恢复”vpn网络连接。在学术论文方面,《mobivpn:amobilevpnprovidingpersistencytoapplications》提出了一种缓存和冻结tcp技术,作者基于该方法在android平台改进了openvpn,以提高vpn的移动性和稳定性。《acommunicationsupportablegenericmodelformobilevpnonandroidos》提出了一种android平台移动vpn的通信保障通用模型,通过监测系统网络事件和监测vpn工作状态实现vpn自动重连。目前,上述所有研究工作、方法与成果均在android平台展开和验证,并未在ios平台得以验证,主要原因有以下三点:第一,iosvpn接口networkextension(ne)相对不够成熟。ne在2014年9月ios8.0+后才向开发者提供,且ne接口开放初期自身问题颇多,相关研究工作与开发经验非常缺乏。第二,ios系统对后台常驻服务的限制。ne在ios系统的工作机制是一个单独的进程,与vpn应用主进程相对独立。因此,需要实现后台常驻服务实现网络监测、vpn中断和恢复,但是ios系统权限仅允许对音视频、位置、语音电话开启后台常驻服务。第三,ios系统网络监测方法的缺陷。在vpn开启条件下,ios终端实际网络状态与系统获取网络状态存在冲突,原因在于ios平台下,开启vpn后,系统会将vpn启动和关闭事件视为一次wi-fi的开启和关闭。经多次测试,iosvpn工作中发生网络事件时,系统获取网络状态权限如表1所示。表1ios终端实际网络状态与系统获取网络状态的冲突情况表技术实现要素:针对ios平台vpn工作时,ne相对独立性和系统网络状态获取的不足,本发明提出一种适用于iosvpn的网络感知及无缝切换方法,方法包括:套接字状态获取模块,通信接口状态获取模块,网络感知模块以及无缝切换模块;套接字状态获取模块获取创建vpn套接字状态,通信接口状态获取模块获取ios移动终端通信接口状态;通信接口状态获取模块监测到网络通信接口网络状态改变,将识别的网络通信接口网络状态改变信息回传至网络感知模块;网络感知模块对ios移动终端通信接口经历的网络状态改变信息进行处理;无缝切换模块根据网络感知模块对网络状态改变信息的处理以及套接字状态的输入信息,决策vpn套接字事件是关闭或重启套接字。在本发明中,网络感知模块对ios移动终端通信接口经历的网络状态改变信息进行处理方法包括:判断defaultpath的status属性。若是invalid,则当前网络状态无法评估,返回net_uncertain;若是satisfied,则当前网络可用,继续判断defaultpath的isexpensive属性来区分是蜂窝移动网或是wi-fi网络,如为yes是蜂窝移动网,返回net_cellular;否则是wi-fi网络,返回net_wifi;若是unsatisfied则当前网络不可用,返回net_none;还有一种情况是satisfiable,当前网络状态并不可用,返回net_uncertain。在本发明中,网络感知模块对ios移动终端通信接口经历的网络状态改变信息进行处理方法包括:s1:判断defaultpath对象status属性是否为invalid,若不是,执行s2;否则,执行s5;s2:判断defaultpath对象status属性是否为satisfied,若是,执行s3;否则,执行s4;s3:判断defaultpath对象isexpensive属性是否为yes,若是,执行s6;否则,执行s7;s4:判断defaultpath对象status属性是否为unsatisfied,若不是,执行s5;否则,执行s8;s5:返回net_uncertain;s6:返回net_cellular;s7:返回net_wifi;s8:返回net_none。在本发明中,无缝切换模块根据网络感知模块对网络状态改变信息的处理以及套接字状态的输入信息,决策vpn套接字事件是关闭或重启套接字方法包括:判断udp套接字的状态,若是无效状态invalid,等待状态waiting,准备状态preparing中的一种,则不处理,否则获取当前网络状态nownetstate,并判断是否是net_uncertain,若不是则判断之前网络状态lastnetstate是否是不确定的网络net_uncertain并将nownetstate与之前网络状态lastnetstate比较,判断网络状态是否发生变化;若lastnetstate是不确定的网络net_uncertain或者网络状态没有变化则更新lastnetstate为当前网络状态;否则继续判断udp套接字是否是开启状态,udp套接字开启时,发生网络中断interrupt事件、网络切换swtich事件分别会触发vpn暂停pause,重启restart事件,udp套接字关闭时,发生网络恢复recover事件会触发vpn启动start事件;根据网络状态前后的变化判断出网络事件;若当前网络状态nownetstate为无网络连接net_none,说明发生了网络中断interrupt事件;若当前网络状态nownetstate不为无网络连接net_none,之前网络状态lastnetstate不为无网络连接net_none,说明发生了网络切换swtich事件;若当前网络状态nownetstate不为无网络连接net_none,之前网络状态nownetstate为无网络连接net_none,说明发生了网络恢复recover事件;分别调用相应函数触发vpn事件来处理。在本发明中,vpn启动start和重启restart事件处理结束后检查vpn是否开启成功,如果开启失败,将vpn状态置为取消状态cancelled;更新lastnetstate为当前网络状态。在本发明中,无缝切换模块根据网络感知模块对网络状态改变信息的处理以及套接字状态的输入信息,决策vpn套接字事件是关闭或重启套接字方法包括:s1:判断udp套接字状态udpsessionstate是否为invalid,waiting,preparing中的一种,若是,则执行s15;否则,执行s2;s2:获取当前网络状态nownetstate,执行s3;s3:判断当前网络状态nownetstate是否为net_uncertain,若是,执行s15;否则,执行s4;s4:判断当前网络状态nownetstate是否为net_uncertain或者当前网络状态nownetstate与之前网络状态lastnetstate相同,若是,执行s14;否则,执行s5;s5:判断udp套接字状态udpsessionstate是否是ready,若是,则执行s6;否则,执行s10;s6:判断nownetstate是否为net_none,若是,则执行s7;否则,执行s8;s7:调用stopudpsession(),进行网络中断处理,执行s14;s8:判断lastnetstate是否为net_none,若是,则执行s14;否则,执行s9;s9:调用restartudpsession(),进行网络切换处理,执行s12;s10:判断nownetstate是否不为net_none并且lastnetstate为net_none,若是,则执行s11;否则,执行s14;s11:调用startudpsession(),进行网络恢复处理,执行s12;s12:判断udp套接字状态udpsessionstate是否为failed,若是,执行s14;否则,执行s13;s13:将udp套接字状态udpsessionstate置为cancelled,执行s14;s14:将lastnetstate更新当前网络状态nownetstate。s15:执行结束。从以上技术方案可以看出,本发明具有以下优点:发明的方法根据网络通信接口的状态和vpn套接字的状态,实现了网络事件感知、网络状态判断和vpn套接字事件决策,保证了复杂网络环境下iosvpn的无缝切换,保障了iosvpn的稳定性和移动性,提升了iosvpn的用户体验。发明的方法适用于iosvpn的网络感知及无缝切换方法能够实现iosvpn的网络状态监测、网络事件判断、vpn套接字状态监测和vpn套接字事件决策,支持对工作上下文环境的网络感知,支持对安全通信隧道的无缝切换,适用于复杂网络环境下iosvpn的安全、可靠、稳定通信。本发明支持自动无缝切换的移动远程办公应用场景;可以持续、稳定、可靠的网络通信链路访问加速;使非受信网络环境下,安全、稳定、可靠的安全接入互联网。附图说明为了更清楚地说明本发明的技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为适用于iosvpn的网络感知及无缝切换方法流程图;图2为支持网络感知及无缝切换iosvpn的示意图;图3为vpn套接字状态转换图;图4为iosvpn网络感知算法流程图;图5为iosvpn无缝切换算法流程图。具体实施方式本发明提供一种适用于iosvpn的网络感知及无缝切换方法,如图1所示,方法包括:套接字状态获取模块,通信接口状态获取模块,网络感知模块以及无缝切换模块;s101,套接字状态获取模块获取创建vpn套接字状态,通信接口状态获取模块获取ios移动终端通信接口状态;s102,通信接口状态获取模块监测到网络通信接口网络状态改变,将识别的网络通信接口网络状态改变信息回传至网络感知模块;s103,网络感知模块对ios移动终端通信接口经历的网络状态改变信息进行处理;s104,无缝切换模块根据网络感知模块对网络状态改变信息的处理以及套接字状态的输入信息,决策vpn套接字事件是关闭或重启套接字。在本发明中,通过监测ios移动设备的网络通信接口的状态和vpn套接字的状态,实现网络状态感知、网络事件决策和vpn套接字事件决策,该方法整体设计方案如图2所示。其中vpn的开启包括创建vpn套接字、执行vpn握手协议、配置虚拟网卡和执行vpn传输协议四个步骤。本发明提出的网络感知及无缝切换方法需要在创建vpn套接字和执行vpn传输协议时分别添加套接字状态观察者和通信接口状态观察者,两种观察者均基于ioskey-valueobserver(kvo)api实现,分别用于监测vpn套接字状态和ios移动终端通信接口状态。通信接口状态观察者一旦监测到网络通信接口改变,将其识别的网络状态回传至网络感知模块,有其判断ios移动终端经历的网络事件。无缝切换模块根据网络事件和套接字状态的输入,决策vpn套接字事件是关闭或重启套接字。本发明将网络感知缝切换原理以vpn套接字的状态机模型进行表述,主要从vpn套接字的原生状态、本发明对vpn套接字的定义状态和vpn套接字的工作事件三个方面详细说明,如图3所示。neapi中原生的udp套接字api是nwudpsession,该套接字对象共有init(初始化)、invalid(无效或未初始)、waiting(等待中)、preparing(准备中)、ready(已开启)、failed(开启失败)、cancelled(取消)七种状态。本发明定义了stop(停止)、start(开启)、pause(暂停)、exception(异常)四种状态以涵盖其中最为关键的init、ready和failed状态,忽略了其中相对不重要的其他四种状态。vpn套接字的工作事件包括startudpsession(开启套接字)、stopudpsession(关闭套接字)、restartudpsession(重启套接字)和exceptionudpsession(套接字异常)。其中,startudpsession经历了init—>waiting—>preparing—>ready四个状态;stopudpsession经历了cancelled—>init两个状态;stopudpsession则可能经历ready—>cancelled状态或failed—>cancelled状态;exceptionudpsession则可能经历init—>invalid—>failed三个状态或ready—>failed两个状态。本发明中,能够在开启vpn时,感知ios移动终端的网络状态,算法输入为defaultpath,该属性为iosapineprovider类提供的网络通信接口;算法输出为netstate,为当前ios移动终端的网络状态。网络感知算法的整体流程和具体算法描述分别如图4所示。算法名称:iosvpn网络感知算法;算法输入:defaultpath—neprovider类网络通信接口;算法输出:netstate—iosvpn网络状态。网络感知模块对ios移动终端通信接口经历的网络状态改变信息进行处理方法包括:判断defaultpath的status属性。若是invalid,则说明当前网络状态无法评估,返回net_uncertain;若是satisfied,则说明当前网络可用,继续判断defaultpath的isexpensive属性来区分是蜂窝移动网或是wi-fi网络,为yes说明是蜂窝移动网,返回net_cellular;否则是wi-fi网络,返回net_wifi;若是unsatisfied则说明当前网络不可用,返回net_none;最后一种情况是satisfiable,说明当前网络状态并不可用,但尝试连接可能会可用,返回net_uncertain。网络感知模块对ios移动终端通信接口经历的网络状态改变信息进行处理方法具体包括:s1:判断defaultpath对象status属性是否为invalid,若不是,执行s2;否则,执行s5;s2:判断defaultpath对象status属性是否为satisfied,若是,执行s3;否则,执行s4;s3:判断defaultpath对象isexpensive属性是否为yes,若是,执行s6;否则,执行s7;s4:判断defaultpath对象status属性是否为unsatisfied,若不是,执行s5;否则,执行s8;s5:返回net_uncertain;s6:返回net_cellular;s7:返回net_wifi;s8:返回net_none。本发明中能够在ios移动终端发生网络事件时,决策vpn套接字事件以实现vpn的无缝切换。算法输入为udpsessionstate,lastnetstate,nownetstate,分别表示udp套接字的状态,早前网络状态和当前网络状态。算法输出为vpn套接字的工作事件,包括:startudpsession(开启套接字事件)、stopudpsession(关闭套接字事件)、restartudpsession(重启套接字事件)和exceptionudpsession(套接字异常事件)。无缝切换算法的整体流程和具体算法描述分别如图5所示。无缝切换模块根据网络感知模块对网络状态改变信息的处理以及套接字状态的输入信息,决策vpn套接字事件是关闭或重启套接字方法包括:判断udp套接字的状态,若是无效状态invalid,等待状态waiting,准备状态preparing中的一种,则不处理,否则获取当前网络状态nownetstate,并判断是否是net_uncertain,若不是则判断之前网络状态lastnetstate是否是不确定的网络net_uncertain并将nownetstate与之前网络状态lastnetstate比较,判断网络状态是否发生变化。若lastnetstate是不确定的网络net_uncertain或者网络状态没有变化则更新lastnetstate为当前网络状态;否则继续判断udp套接字是否是开启状态,udp套接字开启时,发生网络中断interrupt事件、网络切换swtich事件分别会触发vpn暂停pause,重启restart事件,udp套接字关闭时,发生网络恢复recover事件会触发vpn启动start事件。根据网络状态前后的变化判断出网络事件。若当前网络状态nownetstate为无网络连接net_none,说明发生了网络中断interrupt事件;若当前网络状态nownetstate不为无网络连接net_none,之前网络状态lastnetstate不为无网络连接net_none,说明发生了网络切换swtich事件;若当前网络状态nownetstate不为无网络连接net_none,之前网络状态nownetstate为无网络连接net_none,说明发生了网络恢复recover事件。分别调用相应函数触发vpn事件来处理。其中,vpn启动start和重启restart事件处理结束后要检查vpn是否开启成功,如果开启失败,需要将vpn状态置为取消状态cancelled。最后,更新lastnetstate为当前网络状态。算法名称:iosvpn无缝切换算法;算法输入:udpsessionstate—udp套接字状态;lastnetstate—早前网络状态;nownetstate—当前网络状态;算法输出:startudpsession—开启套接字事件;stopudpsession—关闭套接字事件;restartudpsession—重启套接字事件;exceptionudpsession—套接字异常事件。在本发明中,无缝切换模块根据网络感知模块对网络状态改变信息的处理以及套接字状态的输入信息,决策vpn套接字事件是关闭或重启套接字方法包括:s1:判断udp套接字状态udpsessionstate是否为invalid,waiting,preparing中的一种,若是,则执行s15;否则,执行s2;s2:获取当前网络状态nownetstate,执行s3;s3:判断当前网络状态nownetstate是否为net_uncertain,若是,执行s15;否则,执行s4;s4:判断当前网络状态nownetstate是否为net_uncertain或者当前网络状态nownetstate与之前网络状态lastnetstate相同,若是,执行s14;否则,执行s5;s5:判断udp套接字状态udpsessionstate是否是ready,若是,则执行s6;否则,执行s10;s6:判断nownetstate是否为net_none,若是,则执行s7;否则,执行s8;s7:调用stopudpsession(),进行网络中断处理,执行s14;s8:判断lastnetstate是否为net_none,若是,则执行s14;否则,执行s9;s9:调用restartudpsession(),进行网络切换处理,执行s12;s10:判断nownetstate是否不为net_none并且lastnetstate为net_none,若是,则执行s11;否则,执行s14;s11:调用startudpsession(),进行网络恢复处理,执行s12;s12:判断udp套接字状态udpsessionstate是否为failed,若是,执行s14;否则,执行s13;s13:将udp套接字状态udpsessionstate置为cancelled,执行s14;s14:将lastnetstate更新当前网络状态nownetstate。s15:执行结束。本发明涉及的方法可以实现企业移动远程办公,支持网络感知及无缝切换的iosvpn能够更加胜任移动远程办公的实际应用场景,如:通话拨通后导致移动网络中断,iosvpn自动关闭,通话挂断后移动网络恢复,iosvpn自动恢复;如:ios移动终端的wi-fi接入热点发生切换,iosvpn进行网络感知和无缝切换;又如:ios移动终端的网络接入方式由wi-fi切换为移动网络,iosvpn已能够感知网络变化并自动恢复网络连接。本发明能够实现iosvpn的网络状态监测、网络事件判断、vpn套接字状态监测和vpn套接字事件决策,支持对工作上下文环境的网络感知,支持对安全通信隧道的无缝切换,适用于复杂网络环境下iosvpn的安全、可靠、稳定通信,可广泛应用于安全接入和移动办公等安全通信领域,具有广泛的应用前景。本发明支持网络感知及无缝切换的iosvpn实现方法;提供了iosvpn的网络感知及无缝切换原理及方法;提供了iosvpn的网络感知方法以及iosvpn的无缝切换方法。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1