一种多出口路由选择方法转让专利

申请号 : CN201910492423.2

文献号 : CN110138660B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 严燕冬黄慧攀

申请人 : 杭州商湾网络科技有限公司

摘要 :

本发明公开了一种多出口路由选择方法,依据每个网络出口服务器进行路径探测模块实现目的地址实时探测,并上传到路径管理中心,由路径管理中心进行路由策略判定,确定多网络出口中同一目的地址的最优路径。netfilter的自定义模块采用区间树(intervaltree)检索算法,实现快速对所有数据包的目的地址进行分类标记(指定网络出口),同时根据数据包的源地址动态匹配用户权限等级,基于用户权限等级与网络出口服务器的标识码,指定对应可用的网络出口。再由策略路由依据fwmarkb包标识实现路由出口选择,该方法可以适应网络多出口的动态调整,实现多出口路由的高精度动态自动选择。

权利要求 :

1.一种多出口路由选择方法,其特征在于,包括以下步骤:

1)、根据部署环境设置多个网络出口服务器,每个网络出口服务器都与网络转发服务器构建隧道链路,每个网络出口服务器周期性探测指定区域内所有IP网段的目的地址的路由跳数以及延时值,网络出口服务器将探测到目的地址的路由跳数以及延时值上传到路径管理中心;

2)路径管理中心将对所有网络出口服务器上报的目的地址的路由跳数和延时值进行筛选,筛选出最快达到对应目的地址的网络出口服务器,路径管理中心将获取每个网络出口服务器上报的唯一的标识码,该唯一标识码由网络出口服务器预置参数,用于区分不同的网络出口服务器,将最快达到对应目的地址的网络出口服务器以及该网络出口服务器上的唯一的标识码存储到数据库;

3)网络转发服务器周期性地向路径管理中心获取当前时刻所有网络出口服务器已上报目的地址的最优路径数据,保存至最优路径数据存储文件中,网络转发服务器基于netfilter架构的内核匹配模块使用双缓存周期性加载最优路径数据文件,得到用于匹配最优路径的缓存数据;

4)网络转发服务器周期性地向路径管理中心获取当前时刻所有用户的等级数据,保存至用户权限等级文件中,网络转发服务器基于netfilter模块使用双缓存周期性加载用户权限等级数据,得到用于匹配用户权限等级的缓存数据;

5)当网络转发服务器接收到数据包时,通过网络转发服务器内置netfilter模块的钩子函数获取到对应数据包的信息,首先解析数据包的目的IP地址,通过该目的IP地址匹配步骤3)中用于匹配最优路径的缓存数据,找到对应最优路径数据的网络转发服务器和该网络转发服务器的标识码,解析数据包的源IP地址,通过源IP地址查找步骤4)中的用于匹配用户权限等级的缓存数据,得到对应用户的权限等级;

如果用户的权限等级大于等于标识码,则将该标识码用于标识数据包的sk_buff结构体中的mark值;如果用户的权限等级小于标识码,则将使用降级算法进行网络出口降级,降级到预置的默认网络出口服务器,将默认的网络出口服务器标识码用于标识数据包的sk_buff结构体中的mark值,得到用户的权限等级对应的网络出口服务器的标识码,之后数据包将由netfilter进行下一步数据处理;

6)将数据包在策略路由中采用路由策略数据库匹配,当匹配到步骤5)中用户的权限等级对应的网络出口服务器的标识码,将对应的策略路由引导到标识码对应的网络出口服务器的路由表,该路由表中存在对应网络出口服务器的默认路由,如果策略路由中匹配不到对应的标识码,则将使用本网络转发服务器的默认路由出口,即本地运营商出口;

7)重复步骤1)至4),对步骤3)的用于匹配最优路径的缓存数据和步骤4)的用于匹配用户权限等级的缓存数据更新。

2.根据权利要求1所述的多出口路由选择方法,其特征在于,步骤1)中,周期性以15~

30分钟作为一个周期。

3.根据权利要求1所述的多出口路由选择方法,其特征在于,步骤3)中,使用双缓存周期性加载最优路径数据文件具体包括:a)双缓存即为2个预先分配固定大小的内存存储区域,这2个内存存储区域通过时间戳进行交替更换使用,当一个内存存储区域处于加载状态时,另一个内存存储区域处于匹配最优路径状态;

b)加载状态的数据来源于最优路径数据存储文件,最优路径数据存储文件中每个有效数据采用二进制格式,将二进制格式的有效数据解析,采用区间树算法进行存储到当前加载的内存存储区域中,形成用于匹配最优路径的缓存数据。

4.根据权利要求3所述的多出口路由选择方法,其特征在于,步骤b)中,所述的最优路径数据存储文件中每个有效数据采用二进制格式,具体为32位的IP数据,8位的掩码数据,

16位的标识码值,16位的校验和。

5.根据权利要求1所述的多出口路由选择方法,其特征在于,步骤4)中,使用双缓存周期性加载用户权限等级数据具体包括:A)双缓存即为2个预先分配固定大小的内存存储区域,这2个内存存储区域通过时间戳进行交替更换使用,当一个内存存储区域处于加载状态时,另一个内存存储区域处于匹配用户权限等级数据状态;

B)加载状态的数据来源于用户权限等级文件,用户权限等级文件中每个有效数据采用二进制格式,将二进制格式的有效数据解析,采用区间树算法进行存储到当前加载的内存存储区域中,形成用于匹配用户权限等级的缓存数据。

6.根据权利要求5所述的多出口路由选择方法,其特征在于,步骤B)中,用户权限等级文件中用户权限等级数据采用二进制格式,具体为32位的IP数据,8位的掩码数据,16位用户权限等级,16位校验和。

说明书 :

一种多出口路由选择方法

技术领域

[0001] 本发明涉及IP技术领域,具体涉及一种多出口路由选择方法。

背景技术

[0002] 随着网络的高速发展,全球化网络的网络部署成为越来越多企业的选择,那么面临的网络节点的互联,与运营商不同的是,如何利用有限的网络出口节点,实现更高精度的路由选择,成为了一个关键问题。传统的IP技术是针对策略路由和明细路由实现路由选路方式,如果路由目的存在多出口情况,只能通过海量的明细路由去实现更小颗粒度的路由选路。很难做到精准控制以及动态管理路由。
[0003] 传统的路由方式基本上都是基于目的地的匹配规则来进行,网络转发服务器只通过接受的IP报文中的目的地址来进行匹配明细路由,很难按照用户指定的特定信息进行路由转发,无法根据不同的链路费用,不同的链路上的负载,进行有效的管理。
[0004] 为有限的网络出口为目的地址选择最快的出口路径,现有技术相对来比较灵活一点的是iptables+geoip模块匹配国家区域,但是这个匹配仅仅依赖于固定网络出口的环境,如果网络出口新增,或者减少,需要做很大的工作去支持这个变动,这使得整个环境变得不稳定。
[0005] 总之,现有的技术在面对多出口时,很难达到高精度动态调整的路由选择。

发明内容

[0006] 本发明提供了一种多出口路由选择方法,当网络转发服务器接收到新的数据包时,就可以匹配到当前时刻最新的用户的权限等级对应的网络出口服务器的标识码,适应多出口动态调整,实现多出口自动选择。
[0007] 本发明中,网络转发服务器基于netfilter捕获数据报文(即数据包)目的地址,根据路径管理中心统计的所有网络出口服务器上报的实时数据,找到最优路径的网络出口服务器,接口标识数据报文,由策略路由找到对应标识的隧道链路,将报文转发至对应的网络出口服务器,由网络出口服务器通过本地运营商链路发送至目的地址;
[0008] 网络转发服务器是一个网络边缘设备的节点服务器,其基于网络层进行数据转发,用户的流量通过网络转发服务器流入到不同的网络出口,而网络出口的数据将对应的数据流入到本地服务提供商的骨干网中。网络转发服务器类似于服务提供商骨干网的边缘路由器,相当于MPLS网络中的PE设备(ProviderEdge),PE设备连接CE路由器(用户边缘设备)和P路由器(Provider核心层设备),是最重要的网络节点。用户的流量通过PE设备流入用户网络,或者通过PE设备流到MPLS骨干网。
[0009] 一种多出口路由选择方法,包括以下步骤:
[0010] 1)、根据部署环境设置多个网络出口服务器,每个网络出口服务器都与网络转发服务器构建隧道链路,每个网络出口服务器周期性探测指定区域内所有IP网段的目的地址的路由跳数(ttl)以及延时值,网络出口服务器将探测到目的地址的路由跳数(ttl)以及延时值上传到路径管理中心;
[0011] 2)路径管理中心将对所有网络出口服务器上报的目的地址的路由跳数和延时值进行筛选,筛选出最快达到对应目的地址的网络出口服务器,路径管理中心将获取每个网络出口服务器上报的唯一的标识码(ID_code),该唯一标识码由网络出口服务器预置参数,用于区分不同的网络出口服务器,将最快达到对应目的地址的网络出口服务器以及该网络出口服务器上的唯一的标识码存储到数据库;
[0012] 3)网络转发服务器周期性地向路径管理中心获取当前时刻所有网络出口服务器已上报目的地址的最优路径数据,保存至最优路径数据存储文件中,网络转发服务器(预先装有Linux系统)基于netfilter架构的内核匹配模块使用双缓存周期性加载最优路径数据文件(采用双缓存加载数据目的是保证支持周期动态加载数据,而且不需要通过锁定当前使用缓冲区),得到用于匹配最优路径的缓存数据;
[0013] 4)网络转发服务器周期性地向路径管理中心获取当前时刻所有用户的等级数据,保存至用户权限等级文件中,网络转发服务器基于netfilter模块使用双缓存周期性加载用户权限等级数据,得到用于匹配用户权限等级的缓存数据;
[0014] 5)当网络转发服务器接收到数据包时,通过网络转发服务器内置netfilter模块的钩子函数获取到对应数据包的信息,首先解析数据包的目的IP地址,通过该目的IP地址匹配步骤3)中用于匹配最优路径的缓存数据,找到对应最优路径数据的网络转发服务器和该网络转发服务器的标识码,解析数据包的源IP地址,通过源IP地址查找步骤4)中的用于匹配用户权限等级的缓存数据,得到对应用户的权限等级;
[0015] 如果用户的权限等级大于等于标识码,则将该标识码用于标识数据包的sk_buff结构体(linux网络内核中的数据结构)中的mark值;如果用户的权限等级小于标识码,则将使用降级算法进行网络出口降级,降级到预置的默认网络出口服务器,将默认的网络出口服务器标识码用于标识数据包的sk_buff结构体(linux网络内核中的数据结构)中的mark值,得到用户的权限等级对应的网络出口服务器的标识码,之后数据包将由netfilter进行下一步数据处理。
[0016] 6)将数据包在策略路由中采用路由策略数据库匹配,当匹配到步骤5)中用户的权限等级对应的网络出口服务器的标识码,将对应的策略路由引导到标识码对应的网络出口服务器的路由表,该路由表中存在对应网络出口服务器的默认路由(下一跳为对应网络出口服务器隧道的对端地址),如果策略路由中匹配不到对应的标识码,则将使用本网络转发服务器的默认路由出口(本地运营商出口)。
[0017] 7)重复步骤1)至4),对步骤3)的用于匹配最优路径的缓存数据和步骤4)的用于匹配用户权限等级的缓存数据更新。当网络转发服务器接收到新的数据包时,就可以匹配到当前时刻最新的用户的权限等级对应的网络出口服务器的标识码,适应多出口动态调整,实现多出口自动选择。
[0018] 步骤1)中,所述的指定区域是根据网络出口服务器的位置预设,如网络出口服务器的位置在亚洲,指定区域则为亚洲区域。
[0019] 所有的网络出口服务器周期性探测指定区域内所有目的地址的路由跳数(ttl)以及延时值,将路由跳数和延时值上报至路径管理中心;
[0020] 周期性一般以15~30分钟作为一个周期,指定区域是指该网络出口服务器所在的物理位置划分,一般采用国家或洲为单位划分,如中国,亚洲,欧洲,非洲等划分。
[0021] 步骤2)中,路径管理中心将提供API接口(Application Programming Interface,应用程序编程接口),用于获取当前时刻所有网络出口服务器已上报目的地址的最优路径数据,该最优路径数据为指定的二进制格式。同时路径管理中心基于数据库提供用户数据等级查询API接口,用户不同的用户权限分级,如果用户权限一般则只能使用部分默认网络出口,用户权限较高则可以使用更多的网络出口。
[0022] 路径管理中心连接数据库,对外提供API服务。
[0023] 步骤3)中,使用双缓存周期性加载最优路径数据文件具体包括:
[0024] a)双缓存即为2个预先分配固定大小的内存存储区域,这2个内存存储区域通过时间戳进行交替更换使用(实现无锁的异步缓存使用),当一个内存存储区域处于加载状态时,另一个内存存储区域处于匹配最优路径状态;
[0025] b)加载状态的数据来源于最优路径数据存储文件,最优路径数据存储文件中每个有效数据采用二进制格式,将二进制格式的有效数据解析,采用区间树(intervaltree)算法进行存储到当前加载的内存存储区域中,形成用于匹配最优路径的缓存数据。
[0026] 步骤b)中,所述的最优路径数据存储文件中每个有效数据采用二进制格式,具体为32位的IP数据,8位的掩码(Mask)数据,16位的标识码(ID_code)值(对应的标识码代表着对应的网络出口服务器),16位的校验和(用于校验数据准确性)。
[0027] 区间树是一种增强型的红黑树,可是使区间的元素的查找和插入的时间复杂度为O(logN)。
[0028] 加载到最优路径区间树的数据分别包括IP start(第一个可用IP),IP end(最后可用IP),ID_code(对应网络出口服务器标识码),如探测的IP  CIDR格式数据是192.168.0.0/24,第一个可用IP为192.168.0.1,最后可用IP为192.168.0.254。目的地址如果在这区间范围内,则将获得对应的标识码(ID_code)。
[0029] 步骤4)中,使用双缓存周期性加载用户权限等级数据具体包括:
[0030] A)双缓存即为2个预先分配固定大小的内存存储区域,这2个内存存储区域通过时间戳进行交替更换使用(实现无锁的异步缓存使用),当一个内存存储区域处于加载状态时,另一个内存存储区域处于匹配用户权限等级数据状态;
[0031] B)加载状态的数据来源于用户权限等级文件,用户权限等级文件中每个有效数据采用二进制格式,将二进制格式的有效数据解析,采用区间树(intervaltree)算法进行存储到当前加载的内存存储区域中,形成用于匹配用户权限等级的缓存数据。
[0032] 用户权限等级文件中用户权限等级数据采用二进制格式,具体为32位的IP数据,8位的掩码(Mask)数据,16位用户权限等级,16位校验和。加载到用户权限等级区间树的数据分别包括IP start(第一个可用IP),IP end(最后可用IP),grade(对应用户的等级)。与最优路径数据不同的是,用户权限等级数据匹配的是源地址IP,而用户权限等级数据将是用户系统设置的一个权限值,其大于对应的网络出口服务器的标识码时,代表着具备使用该网络出口服务器的权限,如果小于对应网络出口服务器将使用降级算法,设置对应默认网络出口服务器。降级算法为内置约定算法,默认出口标识码=匹配到的最优网络出口标识码/10,如果得到的出口标识码大于用户权限等级,则继续进行降级出口标识码=出口标识码/10直到出口标识码小于用户权限等级,则设置该出口标识码为默认出口。
[0033] 本发明通过所有的网络出口周期性探测指定区域内所有目的地址的ttl值以及延时情况,通过ttl和延时进行路径探测模块实现。探测模块基本上将本网络出口的数据上报到路径管理中心,相同的区域会有多个网络出口进行探测。路径管理中心则依据ttl和延时做权重计算,提供给外部API接口,支持查询上一周期目的地址的最快网络出口,因此网络出口可以灵活调整,新增一个出口,只需加入探测模块,自动上报到路径管理中心,该出口最快目的地即可被全网网络接入点使用。每一个出口会分配一个固定且唯一的ID_code值,将对应到内核模块upcast的路由数据中,用于标识出口地址。
[0034] 通过netfilter的自定义内核匹配模块进行标记不同的目的地址,当数据包被netfilter的钩子函数交由内核模块upcast进行匹配,upcast模块采用双缓存加载数据,目的是保证支持周期动态加载数据,而且不需要通过锁定当前使用缓冲区。双缓存即为一个长度为2的数组,获取缓存索引通过基于当前时间戳获取,当前使用缓存索引=(当前时间戳T/周期)%2,当前加载缓存索引=(当前时间戳T/周期+1)%2。这样即可实现无锁的异步缓存使用。加载缓存的数据来源于路径管理中心,其每一个有效数据的二进制格式为32位的IP数据,8位的掩码(Mask)数据,16位的标识码(ID_code)值(对应的标识码代表着对应的网络出口服务器),16位的校验和(用于校验数据准确性)。将解析到的数据存储到当前的缓存中,采用区间树(intervaltree)算法进行存储,(区间树是一种增强型的红黑树,可是使区间的元素的查找和插入的时间复杂度为O(logN))。加载到最优路径区间树的数据分别包括IP start(第一个可用IP),IP end(最后可用IP),ID_code(对应网络出口服务器标识码),如探测的IP CIDR格式数据是192.168.0.0/24,第一个可用IP为192.168.0.1,最后可用IP为192.168.0.254。目的地址如果在这区间范围内,则将获得对应的标识码(ID_code)。
[0035] netfilter的自定义内核匹配模块同时也周期性的加载用户权限等级数据缓存,采用双缓存周期性加载用户权限等级数据至当前加载缓存中的用户权限等级区间树,每一个用户权限等级数据二进制格式为32位的IP数据,8位的掩码(Mask)数据,16位用户权限等级,16位校验和。加载到用户权限等级区间树的数据分别包括IP start(第一个可用IP),IP end(最后可用IP),grade(对应用户的等级)。与最优路径数据不同的是,用户权限等级数据匹配的是源地址IP,而用户权限等级数据将是用户系统设置的一个权限值,其大于对应的网络出口服务器的标识码时,代表着具备使用该网络出口服务器的权限,如果小于对应网络出口服务器将改为使用默认的网络出口服务器通过策略路由管理模块进行路由的策略选择,该模块管理GRE出口隧道、IProute2路由表、并依据fwmark包标识实现路由出口选择。每一个网络转发服务器都与每一个出口之间维护着一个专有的GRE隧道,同时针对每一个GRE接口都有对应的路由表,而路由表中仅有一条默认路由(下一跳为对端的GRE接口地址)。采用路由策略数据库RPDB匹配包标记fwmark值(netfilter的自定义内核匹配模块所标记的mark值),针对不同的包数据采用不同的策略,对应的包标记fwmark值则代表对应出口的标识,实现路由出口选择。此外该模块需要对全量的二进制路由数据周期性的更新,周期性的从路径管理中心同步最优的路由策略数据,该二进制数据格式与自定义内核匹配模块所定义的格式一致。
[0036] 通过路径管理中心实现最优路径选择,并提供可靠的API接口,供网络转发服务器的路径更新模块使用。如此一来,我们的路径策略选择的决定权有路径管理中心所掌控,一旦网络出口有调整,或者路径策略需要调整,我们仅仅需要调整路径管理中心即可,从而实现高精度多出口路由选择。
[0037] 与现有技术相比,本发明具有如下优点:
[0038] 本发明相比较现有策略路由方案,采用linux netfilter接口,netfilter的自定义内核匹配模块具备周期性同步路由数据功能,配置发生变化时,无需操作iptables,直接生效,从而实现管理流程简单化;同时netfilter的自定义内核匹配模块采用高效的IP数据存储,支持海量数据存储,经过压缩之后全球的IP段数据仅2641KB。此外采用区间树(intervaltree)检索算法,可以高效的匹配IP到对应的网段得到对应的ID_code值。
[0039] 本发明采用网络出口路径探测并上报的方式,可以实时掌控网络出口状态,实现动态管理网络出口。同时每一网络出口分配了唯一的ID_code,可以实现网络出口分级策略,例如在欧洲的网络出口有两个,分别对应两条链路,海缆链路出口A,陆缆链路出口B。由于两条链路的费用不一样,延时效果不一样。那么我们需要这两个链路分级,如仅需要低延时的用户(优先保障的用户权限等级较高)可以才能通过陆缆链路B,其他的一般用户权限等级的使用默认出口海缆链路A,我们仅需要在对应的网络转发服务器增加包标记fwmark为B的策略匹配到对应B出口的隧道(默认去往欧洲区域使用A出口的隧道)。
[0040] 本发明采用将原本依赖于比较复杂,且难以管理的海量明细路由的多出口管理方式,调整成为一种具备管理简单,控制更为精细,路由策略更多样化的管理方式。

附图说明

[0041] 图1为本发明多出口路由选择方法的流程示意图;
[0042] 图2是根据本发明的至少一些实施例中的网络出口管理系统框图;
[0043] 图3是根据本发明的至少一些实施例中的路径探测模块与路径管理中心的流程图;
[0044] 图4是在策略路由管理模块中的流程图。

具体实施方式

[0045] 下面结合示例性的网络出口管理系统对本发明作进一步解释,以提供对发明的透彻理解。本发明涉及以下几个模块:
[0046] 如图1所示,一种多出口路由选择方法,包括以下步骤:
[0047] 1)、根据部署环境设置多个网络出口服务器,每个网络出口服务器都与网络转发服务器构建隧道链路,每个网络出口服务器周期性探测指定区域内所有IP网段的目的地址的路由跳数(ttl)以及延时值,网络出口服务器将探测到目的地址的路由跳数(ttl)以及延时值上传到路径管理中心;
[0048] 步骤1)中,所述的指定区域是根据网络出口服务器的位置预设,如网络出口服务器的位置在亚洲,指定区域则为亚洲区域。
[0049] 所有的网络出口服务器周期性探测指定区域内所有目的地址的路由跳数(ttl)以及延时值,将路由跳数和延时值上报至路径管理中心;
[0050] 周期性一般以15~30分钟作为一个周期,指定区域是指该网络出口服务器所在的物理位置划分,一般采用国家或洲为单位划分,如中国,亚洲,欧洲,非洲等划分。
[0051] 2)路径管理中心将对所有网络出口服务器上报的目的地址的路由跳数和延时值进行筛选,筛选出最快达到对应目的地址的网络出口服务器,路径管理中心将获取每个网络出口服务器上报的唯一的标识码(ID_code),该唯一标识码由网络出口服务器预置参数,用于区分不同的网络出口服务器,将最快达到对应目的地址的网络出口服务器以及该网络出口服务器上的唯一的标识码存储到数据库;
[0052] 步骤2)中,路径管理中心将提供API接口(Application Programming Interface,应用程序编程接口),用于获取当前时刻所有网络出口服务器已上报目的地址的最优路径数据,该最优路径数据为指定的二进制格式。同时路径管理中心基于数据库提供用户数据等级查询API接口,用户不同的用户权限分级,如果用户权限一般则只能使用部分默认网络出口,用户权限较高则可以使用更多的网络出口。
[0053] 路径管理中心连接数据库,对外提供API服务。
[0054] 3)网络转发服务器周期性地向路径管理中心获取当前时刻所有网络出口服务器已上报目的地址的最优路径数据,保存至最优路径数据存储文件中,网络转发服务器(预先装有Linux系统)基于netfilter架构的内核匹配模块使用双缓存周期性加载最优路径数据文件(采用双缓存加载数据目的是保证支持周期动态加载数据,而且不需要通过锁定当前使用缓冲区),得到用于匹配最优路径的缓存数据;
[0055] 步骤3)中,使用双缓存周期性加载最优路径数据文件具体包括:
[0056] a)双缓存即为2个预先分配固定大小的内存存储区域,这2个内存存储区域通过时间戳进行交替更换使用(实现无锁的异步缓存使用),当一个内存存储区域处于加载状态时,另一个内存存储区域处于匹配最优路径状态;
[0057] b)加载状态的数据来源于最优路径数据存储文件,最优路径数据存储文件中每个有效数据采用二进制格式,将二进制格式的有效数据解析,采用区间树(intervaltree)算法进行存储到当前加载的内存存储区域中,形成用于匹配最优路径的缓存数据。
[0058] 步骤b)中,所述的最优路径数据存储文件中每个有效数据采用二进制格式,具体为32位的IP数据,8位的掩码(Mask)数据,16位的标识码(ID_code)值(对应的标识码代表着对应的网络出口服务器),16位的校验和(用于校验数据准确性)。
[0059] 区间树是一种增强型的红黑树,可是使区间的元素的查找和插入的时间复杂度为O(logN)。
[0060] 加载到最优路径区间树的数据分别包括IP start(第一个可用IP),IP end(最后可用IP),ID_code(对应网络出口服务器标识码),如探测的IP  CIDR格式数据是192.168.0.0/24,第一个可用IP为192.168.0.1,最后可用IP为192.168.0.254。目的地址如果在这区间范围内,则将获得对应的标识码(ID_code)。
[0061] 4)网络转发服务器周期性地向路径管理中心获取当前时刻所有用户的等级数据,保存至用户权限等级文件中,网络转发服务器基于netfilter模块使用双缓存周期性加载用户权限等级数据,得到用于匹配用户权限等级的缓存数据;
[0062] 步骤4)中,使用双缓存周期性加载用户权限等级数据具体包括:
[0063] A)双缓存即为2个预先分配固定大小的内存存储区域,这2个内存存储区域通过时间戳进行交替更换使用(实现无锁的异步缓存使用),当一个内存存储区域处于加载状态时,另一个内存存储区域处于匹配用户权限等级数据状态;
[0064] B)加载状态的数据来源于用户权限等级文件,用户权限等级文件中每个有效数据采用二进制格式,将二进制格式的有效数据解析,采用区间树(intervaltree)算法进行存储到当前加载的内存存储区域中,形成用于匹配用户权限等级的缓存数据。
[0065] 用户权限等级文件中用户权限等级数据采用二进制格式,具体为32位的IP数据,8位的掩码(Mask)数据,16位用户权限等级,16位校验和。加载到用户权限等级区间树的数据分别包括IP start(第一个可用IP),IP end(最后可用IP),grade(对应用户的等级)。与最优路径数据不同的是,用户权限等级数据匹配的是源地址IP,而用户权限等级数据将是用户系统设置的一个权限值,其大于对应的网络出口服务器的标识码时,代表着具备使用该网络出口服务器的权限,如果小于对应网络出口服务器将使用降级算法,设置对应默认网络出口服务器。降级算法为内置约定算法,默认出口标识码=匹配到的最优网络出口标识码/10,如果得到的出口标识码大于用户权限等级,则继续进行降级出口标识码=出口标识码/10直到出口标识码小于用户权限等级,则设置该出口标识码为默认出口。
[0066] 5)当网络转发服务器接收到数据包时,通过网络转发服务器内置netfilter模块的钩子函数获取到对应数据包的信息,首先解析数据包的目的IP地址,通过该目的IP地址匹配步骤3)中用于匹配最优路径的缓存数据,找到对应最优路径数据的网络转发服务器和该网络转发服务器的标识码,解析数据包的源IP地址,通过源IP地址查找步骤4)中的用于匹配用户权限等级的缓存数据,得到对应用户的权限等级;
[0067] 如果用户的权限等级大于等于标识码,则将该标识码用于标识数据包的sk_buff结构体(linux网络内核中的数据结构)中的mark值;如果用户的权限等级小于标识码,则将使用降级算法进行网络出口降级,降级到预置的默认网络出口服务器,将默认的网络出口服务器标识码用于标识数据包的sk_buff结构体(linux网络内核中的数据结构)中的mark值,得到用户的权限等级对应的网络出口服务器的标识码,之后数据包将由netfilter进行下一步数据处理。
[0068] 6)将数据包在策略路由中采用路由策略数据库匹配,当匹配到步骤5)中用户的权限等级对应的网络出口服务器的标识码,将对应的策略路由引导到标识码对应的网络出口服务器的路由表,该路由表中存在对应网络出口服务器的默认路由(下一跳为对应网络出口服务器隧道的对端地址),如果策略路由中匹配不到对应的标识码,则将使用本网络转发服务器的默认路由出口(本地运营商出口)。
[0069] 7)重复步骤1)至4),对步骤3)的用于匹配最优路径的缓存数据和步骤4)的用于匹配用户权限等级的缓存数据更新。当网络转发服务器接收到新的数据包时,就可以匹配到当前时刻最新的用户的权限等级对应的网络出口服务器的标识码,适应多出口动态调整,实现多出口自动选择。
[0070] netfilter架构的内核匹配模块即Upcast内核模块,针对本网络转发服务器实现路由选择(即最优路径数据存储文件),实现周期性导入对应二进制格式为32位的IP数据,8位的掩码(Mask)数据,16位的标识码(ID_code)值,16位的校验和,采用区间树(intervaltree)实现高效的匹配数据包目的IP地址对应的ID_code。同时也将导入用户权限等级数据,其二进制格式为32位的IP数据,8位的掩码(Mask)数据,16位用户权限等级,16位校验和,可以通过数据包源目的地址IP匹配到对应的用户权限等级。
[0071] 策略路由管理,周期性的向路径管理中心同步实时的最优路径的策略数据,并提供给本网络转发服务器的upcast模块使用;并管理本网络转发服务器与网络出口设备的GRE隧道、本网络转发服务器的IProute2路由表、并依据fwmark包标识实现路由出口选择。
[0072] 路径管理中心,实现最优路径选择策略,并提供可靠的API接口,供网络转发服务器的路径更新模块使用。
[0073] 本发明的具体实施方式如图2所示,为网络出口管理系统的实施例,包括在网络出口管理系统中的若干部分可以是软件,硬件或者软件和硬件的组合。根据该实施例,提供了多个网络出口,转发设备,以及路径管理中心。通过本图示可以理解本发明的大致结构图,由网络转发服务器(服务器提供转发功能),网络出口(服务器提供转发功能),路径管理中心(提供路径管理)组成,图1中,网络转发设备即为网络转发服务器,网络出口A、网络出口B、网络出口表示不同的网络出口服务器。
[0074] 如图示3所示,网络出口进行本地区域目的地址探测,以及数据转发功能,首先网络出口向路径管理中心获取本地区域的目的地址数据(API实现识别不同区域),网络出口获取到探测数据之后,采用ICMP协议,进行探测TTL和延时,探测完成之后将结果上报至路径管理中心,路径管理中心则将依据TTL和延时进行综合评估,确定同一目的地址多个网络出口中哪个网络出口是最优路径,此外网络出口将周期性探测该区域的目的地址数据。
[0075] 如图4所示,网络转发服务器中的策略路由管理模块将校验upcast内核模块(即netfilter架构的内核匹配模块)是否导入,以及iptables规则,其中规则明细iptables-t mangle-A PREROUTING-j UPCAST.
[0076] 网络转发服务器中的策略路由管理模块将周期性的向路径管理中心下载包含全量目的地址最优路径的路由策略数据(API接口支持MD5校验,路径未发生变更,则不用下载),该路由策略数据是按照特定的格式二进制数据,支持大量目的地址存储,包括32位的IP数据,8位的掩码(Mask)数据,16位的标识码(ID_code)值,16位的校验和。该路由策略数据用于自定义内核模块upcast中。之后进行获取可用网络出口数据,本实施例中将获取到网络出口A(ID_code值为100)和网络出口B(ID_code值为200),网络出口C(ID_code值为2000)。本网络转发服务器将管理对应A和B的GRE隧道接口tun_A(本地隧道接口地址
10.18.100.1/30),tun_B(本地隧道接口地址10.18.150.1/30),tun_C(本地隧道接口地址
10.18.200.1/30)。同时校验对应路由表100、200,2000,以及对应的100路由表默认路由(ip route add default via 10.18.100.2 dev tun_A),对应的200路由表默认路由(ip route add default via 10.18.150.2 dev tun_B),对应的2000路由表默认路由(ip route add default via 10.18.200.2 dev tun_C).如不存在以上规则则进行创建。之后将校验策略路由规则,fwmark对应的优先级为默认215。对应mark 100策略路由(from all fwmark 
0x64 lookup 100),对应mark 200策略路由(from all fwmark 0xc8 lookup 200),对应mark 2000策略路由(from all fwmark 0x7d0 lookup 2000)。
[0077] 假设本网络转发服务器接收到来源于用户权限等级(500)的数据报文,则将数据包目的地址匹配最优路径出口,如果当前最优路径出口是网络出口A,则标识对应的mark值为100;如果当前最优路径出口是网络出口C,则将进行降级算法,标识为网络出口B(mark值为100)。
[0078] 假设本网络转发服务器接收到来源于用户权限等级(5000)的数据报文,则将数据包目的地址匹配最优路径出口,如果当前最优路径出口是网络出口A,则标识对应的mark值为100;如果当前最优路径出口是网络出口C,不需要降级,则标识对应的mark值为2000。
[0079] 此时如果一个标记为去往网络出口A的最优路径的数据包到达网络转发服务器,首先将在upcast被标识mark值为100,因此将执行策略路由的fwmark 0x64的规则进入到路由表100中,选择对应的默认路由隧道出口tun_A。到达网络出口A,然后由网络出口A按照本地的路由规则转发出去。由此形成一个便于管理的高精度路由选择方案。
[0080] 本发明采用网络出口路径探测并上报的方式,可以实时掌控网络出口状态,实现动态管理网络出口。同时每一网络出口分配了唯一的标识码(ID_code),用户系统也分配了用户权限等级(grade)。通过这两个参数可以实现网络出口根据不同用户权限实现精准分级策略,例如在欧洲的网络出口有两个,分别对应两条链路,海缆链路默认出口A(ID_code=200),陆缆链路出口B(ID_code=2000)。由于两条链路的费用成本不一样,延时效果也不一样。那么我们需要这两个链路根据用户权限等级进行分级,用户权限等级高的可以同时使用两个出口,而一般用户仅可以使用默认出口A,分别对应有两个用户C(grade=800),用户D(grade=5000),路径管理中心根据用户系统中的用户权限等级将生成用户权限等级数据,此数据同步到网络转发服务器上。如果用户C匹配到最优路径出口B则需要判断当前用户权限等级是否大于对应的网络出口服务器的标识码,用户C权限等级小于出口B的标识码,则进行降级算法计算出对应的默认出口A(降级算法为内置约定算法,默认出口标识码=匹配到的最优网络出口标识码/10),网络转发服务器将用户C的数据包发送到网络出口服务器A,此外用户D可以根据最优路径数据使用两个网络出口服务器A、B,可以匹配到当前时刻最新的用户的权限等级对应的网络出口服务器的标识码,适应多出口动态调整,实现多出口自动选择。