一种基于安卓系统的多网络路由策略分流方法【专利摘要】本申请公开了一种基于安卓系统的多网络策略分流方法,包括:获取安卓系统的移动设备存在哪些可用网络,存在至少两个可用网络,根据数据报文信息来确定所采用的路由策略,根据所述路由策略通过至少两个网络端口接收或转发数据报文。本申请方案能够有效利用网络资源实现多网并发使用。【专利说明】一种基于安卓系统的多网络路由策略分流方法【
技术领域:
】[0001]本申请涉及移动通信【
技术领域:
】,尤其涉及一种基于安卓系统的多网络路由策略分流方法。【
背景技术:
】[0002]Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑。现有大部分移动设备具有多块网卡,如通过局域无线网络(WIFI)方式接入互联网络的WIFI网卡以及通过移动通信网络方式接入互联网络的3g/LTE网卡。[0003]缺省情况下,android系统只有3个路由表,分别为local、main、default。路由规则为所有进入的数据报都参照main、default来决策路由,这可以通过路由规则命令(ipruleIs)来查看。其输出如下:[0004]O:fromalllookuplocal[0005]32766:fromalllookupmain[0006]32767:fromalllookupdefault[0007]在进行网络通信时,只使用其中一个路由表,这个路由表指定了转发所有数据报文的时候应该满足的规则。在这种情况下,虽然移动设备具有多个网络接口,但默认只使用了一个网络,那么根据路由表配置的数据报文也只能通过这个默认的网络接口发送出去。所有的数据报文都通过这个默认的路由根据目的地址进行报文转发,其他的可用网络总是不被使用。在这种机制下,给用户提供的只是比较单一的路由方式,不能够充分地利用有效的网络资源,造成网络资源的严重浪费。[0008]本申请人:的另一篇发明申请“一种基于安卓系统的多网卡并存通信方法”提供了一种多个网卡同时工作并进行数据通信的方法。在android系统提供多网络接口的情况下,出现了数据报文该如何进出,多出口流量该如何分配以及如何有效利用网络资源等一系列问题。在现有技术的路由机制中,仅仅只存在一个路由表,这个路由表指定了转发所有数据报文的时候应该满足的规则。但是它满足不了多网络下的数据报文转发,如何组织和实现才能实现高度的灵活性、可扩展性,又不损失过多的性能的要求。【
发明内容】[0009]本申请提供了一种基于安卓系统的多网络路由策略分流方法,能够有效利用网络资源实现多网并发使用。[0010]本申请实施例提供了一种基于安卓系统的多网络策略分流方法,包括:[0011]A、获取安卓系统的移动设备存在哪些可用网络,存在至少两个可用网络,执行步骤B;[0012]B、根据数据报文信息来确定所采用的路由策略,根据所述路由策略通过至少两个网络端口接收或转发数据报文。[0013]较佳地,步骤A之前进一步包括:[0014]设置第一路由表和第二路由表,第一路由表设置目的地址为第一IP地址的数据报文通过第一网络接口传输,第二路由表设置目的地址为第二IP地址的数据报文通过第二网络接口传输;[0015]步骤B包括:[0016]获取将要发送的数据报文中的目的IP地址;[0017]将所述目的IP地址与所述路由表进行匹配,若匹配成功,则按照所匹配的路由表进行数据报文发送。[0018]较佳地,步骤A之前进一步包括:[0019]通过透明代理将第一应用程序绑定到第一端口上,将第二应用程序绑定到第二端口上;并配置第一端口对应于第一网络接口,第二端口对应于第二网络接口;[0020]步骤B包括:通过配置iptables实现基于应用程序的数据报文的过滤转发,相应应用的数据报文被重定向到该应用程序绑定的端口上;[0021]若透明代理监听到来自于端口的数据报文,将所述数据报文通过该端口对应的网络接口传输。[0022]较佳地,步骤B包括:[0023]第三应用程序的数据报文进入mangle表的OUTPUT链,根据预先设置的过滤条件,依据数据报文中包含的程序标识对所述数据报文进行过滤并打特定标记;[0024]对包含所述特定标记的路由报文,选择预先设定的路由规则所规定的第三路由表;[0025]数据报文进入mangle表的P0STR0UTING链,将所述数据报文的源IP地址修改为第三网络接口对应的IP地址,并对所述数据报文进行重新封包;[0026]从第三网络接口传输所述数据报文。[0027]较佳地,步骤B进一步包括:如果没有匹配到任何路由策略,则使用路由表中的各项数据目的地址对报文进行路由。[0028]从以上技术方案可以看出,通过路由策略,将多个数据报文分配到至少两个网络接口上进行发送。相对于现有技术中安卓系统在同一时间只能通过一个网络接口收发报文相比,可以有效地利用网络资源,并且增加可用带宽。本申请方案实现相对灵活,并且简单实用。【专利附图】【附图说明】[0029]图1为本申请实施例提供的基于安卓系统的多网络路由策略分流方法流程示意图;[0030]图2为在android系统多网络并存下本地的数据报文到达指定的网络接口处理流程不意图;[0031]图3为本申请实施例一提供的基于IP地址的策略分流方法流程示意图;[0032]图4为本申请实施例二提供的基于方式一实现的基于应用的策略分流方法流程示意图;[0033]图5为本申请实施例二提供的基于方式二实现的基于应用的策略分流方法流程示意图。【具体实施方式】[0034]本申请提供的基于安卓系统的多网络路由策略分流方法流程如图1所示,包括如下步骤:[0035]步骤101:获取安卓系统的移动设备存在哪些可用网络,若存在至少两个可用网络,执行步骤102;[0036]步骤102:根据数据报文信息来确定所采用的路由策略;根据所述路由策略通过至少两个网络端口接收或转发数据报文。[0037]为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。[0038]基于android系统的多网络策略分流,核心部分是路由策略的设置。路由策略是一种比基于目标网络进行路由更加灵活的数据包路由转发机制,基于路由策略,本地处理程序将决定如何对需要路由的数据包进行处理。[0039]在android系统多网络并存下,本地的数据报文到达指定的网络接口,处理流程如图2所示,包括如下步骤:[0040]步骤201:本地处理程序的数据报文进入mangle表的OUTPUT链。在这一步骤中,用于对数据包相关字段的修改,如设置服务类型字段(T0S)、生存时间(TTL),过滤来自于应用的数据包并对这样的数据包打标记。[0041]步骤202:数据报文进入filter表的OUTPUT链。在这一步骤中,filter表是默认表,主要用于一般的过滤,这一步是可选的,实际使用时根据需要添加。[0042]步骤203:根据路由策略进行路由选择,选择一条合适的路由。[0043]步骤204:数据报文进入mangle表的P0STR0UTING链;到这一步骤时已经做完了所有的路由选择,但数据包仍然在本机,还可以进行某些修改。[0044]步骤205;数据报文进入nat表的P0STR0UTING链;这一步骤中做源地址转换,不进行过滤。[0045]步骤206:数据报文通过路由指定的网络接口转发,结束本流程。[0046]本申请实施例一提供了基于IP地址的策略分流方法,基本步骤如下:[0047]预先设置第一路由表和第二路由表,第一路由表设置目的地址为第一IP地址的数据报文通过第一网络接口传输,第二路由表设置目的地址为第二IP地址的数据报文通过第二网络接口传输,[0048]获取将要发送的数据报文中的目的IP地址;[0049]将所述目的IP地址与所述路由表进行匹配,若匹配成功,则按照所匹配的路由表进行数据报文发送。[0050]在android系统上的应用场景举例如下:[0051]场景一:当同时有多个数据文件需要同时下载;[0052]场景二:同时进行多个网络流量应用,例如一边下载一边进行网络游戏。[0053]在上述场景中,需要根据网络及数据包的情况,设置路由,拆分数据包分别通过不同的网络接口下载。例如,将比较大的数据包放在wlan带宽比较宽的网络上下载,把小的数据包放在3g带宽比较窄的网络上下载,例如:数据包I比较大,数据包2相对小一些,数据包I来自于IP166.12.16.11,数据包2来自于IP166.12.16.12。[0054]本申请实施例一提供的基于IP地址的策略分流的路由策略设置流程如图3所示,包括如下步骤:[0055]步骤301:设置iptables规则。[0056]指定两条路由分别通过wlan接口(wlanO)以及移动接口(rmnet_usbO)发送数据报文。命令如下:[0057]iptables-tnat-AP0STR0UTING-owlanO-jMASQUERADE[0058]iptables-tnat-APOSTROUTING-ormnet_usb0-jMASQUERADE[0059]步骤302:设置路由规则。[0060]分别设置第一路由表(表100)和第二路由表(表200),将路由规则与所述路由表相关联。命令如下:[0061]ipruleaddpriority2000tablel00[0062]ipruleaddpriority2001table200[0063]步骤303:设置路由。[0064]表100设置目的地址为第一IP地址(166.12.16.11)的数据报文通过wlanO网络接口传输,网关为10.3.23.254;表200设置来目的地址为第二IP地址(166.12.16.12)的数据报文通过rmnet_usb0网络接口传输,网关为10.4.166.189。命令如下:[0065]iprouteaddl66.12.16.1lvial0.3.23.254devwlanOtablelOO[0066]iprouteaddl66.12.16.12vial0.4.166.189devrmnet_usb0table200[0067]本申请实施例二提供的基于应用的策略分流方法在android系统上主要应用于如下场景:用户使用不同的浏览器分别通过不同的网络上网浏览网页。本申请实施例给出的具体实现方法如下:[0068]方法一:iptables和透明代理相结合实现分应用的策略分流,具体实现步骤如图4所示,包括:[0069]步骤401:通过透明代理,将不同的应用程序分别绑定到不同的端口上。例如:google浏览器绑定在8888端口,firefox浏览器绑定在9999端口上,获得应用的uid,google的uid是10055,firefox的uid是10066;[0070]步骤402:通过配置iptables实现基于应用的数据报文的过滤转发,相应应用的数据报文通过iptables被重定向到某个指定的端口上。[0071]步骤403:透明代理程序监听某个端口,接收来自于某个端口的数据报文,然后将数据报文通过指定的网络接口传输。[0072]例如采用如下配置命令:[0073]iptables-tnat-mowner-uid-owner100550UTPUT-ptcp-dport80-jREDIRECT-to8888[0074]iptables-tnat-mowner-uid-owner100560UTPUT-ptcp-dport80-jREDIRECT-to9999[0075]方法二:iptables、路由规则(iprule)、路由(iproute)结合实现分应用的策略分流。[0076]UIptables的设置:获得应用程序的uid(例如,google浏览器的uid是10055),设置iptables的过滤条件。例如:来自于google浏览器的基于http协议数据报文过滤条件按以下进行设置:[0077]iptables-tmangle-AOUTPUT-mowner-uid-ownerl0055-ptcp-dport80-jMARK-set-markll;[0078]iptables-tnat-AP0STR0UTING-owlanO-jMASQUERADE。[0079]其中,第一命令行的作用是设置路由之前的过滤条件并打标记。具体地说,在mangel表的OUTPUT链上,设置如下过滤条件:过滤来自于应用程序的程序标识uid为10055、基于tcp协议和http协议的数据包,并对这样的数据包打特定标记(标记11);第二命令行的作用是在路由之后和发送到网卡之前,修改数据报文的源IP地址并指定发送数据报文的网络接口(wlanO)。[0080]2、设置路由规则,例如:[0081]ipruleaddfwmarklIprioritylOOOtablelO[0082]设置说明:凡是带有标记11的数据包都使用路由表10,优先级设为1000(数字越小优先级越高)。[0083]3、设置路由。如下面设置[0084]iprouteaddl0.3.23.0/24devwlanOtablelO[0085]iprouteadddefaultvial0.3.23.254devwlanOtablelO[0086]上述设置的含义为:添加到路由表10(10.3.23.0/24)的网络路由,设定在路由表10中通过网络接口(wlanO)出去的默认网关IP地址(10.3.23.254)。[0087]通过上述设置,google浏览器的数据报文经过过滤,路由,转发到指定的wlan网络接口(wlanO)上传输。设定应用程序的数据报文经由移动网络端口传输的方式与上述类似,故不再赘述。[0088]方式二实现的策略分类处理流程如图5所示,包括如下步骤:[0089]步骤501:本地处理程序的数据报文进入iptables的mangle表的OUTPUT链,根据mangle表的OUTPUT链所设的过滤条件进行过滤并打标记。所设的过滤条件见上面的iptables的设置说明。[0090]步骤502:根据所设置的路由规则,选择相应的路由表;[0091]步骤503:数据报文进入mangle表的P0STR0UTING链,利用MASQUERADE将数据报文的源IP地址修改为网络接口(WlanO)对应的IP地址,并对所述数据报文进行重新封包;[0092]步骤504:从设定的网络接口(wlanO)传输数据报文。[0093]本申请技术方案可以实现如下有益技术效果:[0094]能够更好地利用设备多个网络接口的网络带宽,提升联网速度,给用户更好的体验感;能够有效利用网络资源并实现负载均衡;方法实现相对灵活、简单而且实用。[0095]以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。【权利要求】1.一种基于安卓系统的多网络策略分流方法,其特征在于,包括:A、获取安卓系统的移动设备存在哪些可用网络,存在至少两个可用网络,执行步骤B;B、根据数据报文信息来确定所采用的路由策略,根据所述路由策略通过至少两个网络端口接收或转发数据报文。2.根据权利要求1所述的方法,其特征在于,步骤A之前进一步包括:设置第一路由表和第二路由表,第一路由表设置目的地址为第一IP地址的数据报文通过第一网络接口传输,第二路由表设置目的地址为第二IP地址的数据报文通过第二网络接口传输;步骤B包括:获取将要发送的数据报文中的目的IP地址;将所述目的IP地址与所述路由表进行匹配,若匹配成功,则按照所匹配的路由表进行数据报文发送。3.根据权利要求1所述的方法,其特征在于,步骤A之前进一步包括:通过透明代理将第一应用程序绑定到第一端口上,将第二应用程序绑定到第二端口上;并配置第一端口对应于第一网络接口,第二端口对应于第二网络接口;步骤B包括:通过配置iptables实现基于应用程序的数据报文的过滤转发,相应应用的数据报文被重定向到该应用程序绑定的端口上;若透明代理监听到来自于端口的数据报文,将所述数据报文通过该端口对应的网络接口传输。4.根据权利要求1所述的方法,其特征在于,步骤B包括:第三应用程序的数据报文进入mangle表的OUTPUT链,根据预先设置的过滤条件,依据数据报文中包含的程序标识对所述数据报文进行过滤并打特定标记;对包含所述特定标记的路由报文,选择预先设定的路由规则所规定的第三路由表;数据报文进入mangle表的P0STR0UTING链,将所述数据报文的源IP地址修改为第三网络接口对应的IP地址,并对所述数据报文进行重新封包;从第三网络接口传输所述数据报文。5.根据权利要求1至3任一项所述的方法,其特征在于,步骤B进一步包括:如果没有匹配到任何路由策略,则使用路由表中的各项数据目的地址对报文进行路由。【文档编号】H04W40/02GK103957572SQ201410212375【公开日】2014年7月30日申请日期:2014年5月20日优先权日:2014年5月20日【发明者】霍平,张凡,姜涌申请人:普天信息技术有限公司