发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于策略收敛的路由订阅方案,路由订阅源依据基于策略收敛算法,结合基于策略自定义控制的订阅方式,实现优化路由匹配和较低系统性能及资源开销的可控平衡。
为实现上述目的,按照本发明的一个方面,提供了一种基于策略收敛的路由订阅方法,包括:
路由发布端不增加基于地址数量成正比的管理信息,而依靠路由订阅源对转发请求地址的策略收敛算法进行按需订阅返回;
路由发布端对常规删除动作正常向路由订阅源推送,而对添加动作不进行主动推送。
本发明的一个实施例中,所述路由订阅源对转发请求地址的策略收敛算法进行按需订阅返回,包括:
路由订阅源本地按策略收敛算法进行本地地址命中收敛计算;
路由订阅源基于收敛计算结果及策略因子控制,按需新生成订阅目的地址请求,向路由发布端进行路由订阅;
路由发布端基于本地路由管理信息进行最长匹配查找,同时记录路由订阅源的身份信息;
路由发布端向路由订阅源推送当前最优匹配结果;
路由订阅源收到路由发布端响应的路由前缀后,将路由前缀加入本地路由表进行更新管理。
本发明的一个实施例中,所述策略收敛算法包括:
根据当前报文目的IP,基于路由订阅源本地路由地址按bit位进行命中标记,掩去高位保留主机地址范围;
对新的查询请求做保留主机范围计算后,与已有结果进行叠加按位‘|’操作叠加。
本发明的一个实施例中,所述对添加动作不进行主动推送,包括:
在路由发布端接收到新路由后,仅进行本地路由前缀增加管理,不进行订阅匹配推送处理。
本发明的一个实施例中,所述方法还包括路由删除过程,具体为:
路由发布端收到路由删除信息,根据路由节点得到记录的路由订阅源身份信息;
向所关注的路由订阅源推送删除动作;
路由订阅源收到路由发布端的路由删除信息后,查找本地路由表进行删除处理。
本发明的一个实施例中,所述方法还包括路由老化过程,具体为:
路由订阅源依据订阅策略信息,对本地命中收敛信息进行判断,对全部收敛无命中的条目进行本地老化。
本发明的一个实施例中,所述路由订阅源本地按策略收敛算法进行本地地址命中收敛计算,具体为:
在设定的老化周期内检测命中结果数据区,按对应所命中路由的掩码长度掩去高位保留主机范围的剩余内容中,每个剩余bit位是否有变化;对有变化的bit保持,对无变化的且内容为‘1’的bit位进行清零操作。
本发明的一个实施例中,所述路由订阅源基于收敛计算结果及策略因子控制,按需新生成订阅目的地址请求,向路由发布端进行路由订阅,具体为:
基于策略控制的步长、订阅间隔及击中周期对地址结果进行计算分析,生成符合策略要求的订阅目标汇总地址。
本发明的一个实施例中,所述基于策略控制的步长、订阅间隔及击中周期对地址结果进行计算分析,生成符合策略要求的订阅目标汇总地址,具体为:
在多次请求报文目的地址相对离散,跨越主机范围较广的场景下:将地址结果按设置的步长因子,进行步长区间内分区域掩去无关位提取,如果步长区间内无有效置‘1’bit则忽略本步长区间;分步与原有路由段合并后独立组织订阅目的地址请求;
在不同路由被请求报文命中频率差异较大,部分长期不命中,部分频繁命中,部分随机时间命中的场景下,结合路由对转发老化的要求进行区分对待,包括:对于指定路由对应设定击中周期因子,对该路由在老化周期内判断如果未到击中关注周期的bit不做老化处理,而到了击中周期因子对应周期内的数据正常进行老化处理。
按照本发明的另一方面,还提供了一种基于策略收敛的路由订阅系统,包括路由发布端和路由订阅源,其中:
所述路由发布端不增加基于地址数量成正比的管理信息,而依靠所述路由订阅源对转发请求地址的策略收敛算法进行按需订阅返回;
所述路由发布端对常规删除动作正常向所述路由订阅源推送,而对添加动作不进行主动推送。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
由于没有增加与目的地址成比例的管理信息,本发明技术方案避免了海量地址查询请求情况下内存增长,同时结合路由订阅源的策略收敛算法,确保了优化匹配和降低系统性能及资源开销的可控平衡。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
常规情况下的路由订阅和增删过程如图1所示,过程如下:
步骤1:路由订阅源收到软转发请求报文,查询本地已有路由表;
步骤2:当查询结果不命中时,向路由发布端进行首次订阅申请,报文携带本次请求的目的地址;
步骤3:路由发布端基于路由订阅源携带的目的地址,在本地路由管理信息进行PAT最长匹配查找;并基于路由订阅源携带的目的地址请求进行订阅节点本地存储管理;
步骤4:路由发布端向路由订阅源推送当前最优匹配结果的路由前缀;
步骤5:路由订阅源收到路由发布端响应的路由前缀后,将路由前缀加入本地路由表进行管理;
步骤6:路由发布端收到新的路由前缀新增消息后,根据本地目的地址进行订阅检查;
步骤7:如果符合订阅要求,则路由发布端向路由订阅源推送路由前缀添加消息;
步骤8:路由订阅源收到路由发布端的路由前缀后,将路由前缀加入本地路由表进行管理;
步骤9:路由发布端收到路由前缀删除消息后,进行订阅检查;
步骤10:如果发布过该条目,则路由发布端向路由订阅源推送路由前缀删除消息;
步骤11:路由发布端收到路由前缀删除消息后,同步删除本地路由;
其中:
步骤3中,是由路由发布端基于路由订阅源携带的目的地址请求进行订阅节点管理;
步骤6中,路由发布端路由添加时,基于本地管理的请求明细信息匹配按需推送新路由到路由订阅源;
上述过程中,需要解决的问题如下:
步骤3中,在攻击情况下,路由发布端的订阅地址管理信息,会随地址海量增加导致内存耗尽;
步骤6中,路由发布端的每次路由前缀添加都需要进行订阅节点更新管理,效率较低、处理逻辑复杂。
路由发布端管理的路由订阅源列表信息原理,如图2所示;
其中可以看到,在路由前缀树管理数据中记录了:
信息1:路由订阅源信息:模块A、模块B来源信息;
信息2:路由订阅源携带的目的地址信息:IP(1.1.0.0);
其中,信息2会随攻击报文而海量增长;
变通后的优化做法如图3所示,过程如下:
步骤1:路由订阅源收到软转发请求报文,查询本地已有路由表;
步骤2:当查询结果不命中时,向路由发布端进行首次订阅申请,报文携带本次请求的目的地址;
步骤3:路由发布端基于路由订阅源携带的目的地址,在本地路由管理信息进行最长匹配查找;并基于路由订阅源携带的目的地址查询当前最优结果基础上,进行地址段范围标记本地存储管理;
步骤4:路由发布端向路由订阅源推送当前最优匹配结果;
步骤5:路由订阅源收到路由发布端响应的路由前缀后,将路由前缀加入本地路由表进行管理;
步骤6:路由发布端收到新的路由前缀新增消息后,根据本地地址段范围进行订阅检查,对落入标记范围的路由按符合订阅要求处理;
步骤7:如果符合订阅要求,则路由发布端向路由订阅源推送路由前缀添加消息;
步骤8:路由订阅源收到路由发布端的路由前缀添加信息后,将路由前缀加入本地路由表进行管理;
步骤9:路由发布端收到路由前缀删除消息后,进行订阅检查;
步骤10:如果发布过该条目,则路由发布端向路由订阅源推送路由前缀删除消息;
步骤11:路由发布端收到路由前缀删除消息后,同步删除本地路由;
其中:
步骤3中,是由路由发布端基于路由订阅源携带的目的地址查询当前最优结果基础上,进行地址段范围标记本地存储管理;
步骤6中,路由发布端路由添加时,基于本地管理的地址段标记信息,将落入的子网路由全部推送;
上述过程中,需要解决的问题如下:
步骤6中,路由发布端将落入地址范围的路由全部进行推送,本质为非精确管理,路由订阅源会收到多余的非最优路由,导致系统中相同路由存在多份冗余存储;同时,当系统中路由发布端存在大量子网匹配的路由需要学习时,增加了路由发布端和路由订阅源的处理,系统存在冗余流程;
路由发布端基于地址段范围管理的路由订阅源列表信息原理,如图4所示;
其中可以看到,在路由前缀树管理数据中记录了:
信息1:路由订阅源信息:模块A、模块B来源信息;无目的地址信息;缓解了随攻击报文而海量增长的问题;但由于无精确订阅信息,导致路由发布端后续新学习到的落入子网的路由被多余推送。
为解决上述两种方案中相关技术问题,本发明提供了一种基于策略收敛的路由订阅方法,包括:
路由发布端不增加基于地址数量成正比的管理信息,而依靠路由订阅源对转发请求地址的策略收敛算法进行按需订阅返回;
路由发布端对常规删除动作正常向路由订阅源推送,而对添加动作不进行主动推送。
并且进一步地,路由发布端接收到订阅请求,按照正常的路由前缀树匹配结果进行返回,路由订阅源依据基于策略收敛算法,结合基于策略自定义控制的订阅方式(该算法综合步长、击中周期、订阅周期等策略因子),实现优化路由匹配和较低系统性能及资源开销的可控平衡。
本发明提供的基于策略收敛的路由订阅方法,具体方式如图5所示,过程如下:
路由订阅和更新过程如下:
步骤S1:路由订阅源收到软转发请求报文,查询本地已有路由表;
步骤S2:当查询结果不命中时,向路由发布端进行首次订阅申请,报文携带本次请求的目的地址;
步骤S3:路由发布端基于路由订阅源携带的目的地址,在本地路由管理信息进行最长匹配查找;同时记录路由订阅源的身份信息;
步骤S4:路由发布端向路由订阅源推送当前最优匹配结果;
步骤S5:路由订阅源收到路由发布端响应的路由前缀后,将路由前缀加入本地路由表进行更新管理;
步骤S6:路由订阅源收到新的软转发请求报文,查询结果如果不命中,则重复步骤S1-S5;如果查询结果命中本地已有路由前缀,则触发策略收敛算法;
步骤S7:路由订阅源本地按策略收敛算法进行本地地址命中收敛计算;
步骤S8:路由订阅源基于收敛计算结果及策略因子控制,按需新生成订阅目的地址请求,向路由发布端进行路由订阅;
步骤S9:路由发布端基于本地路由管理信息进行最长匹配查找,同时记录路由订阅源的身份信息;
步骤S10:路由发布端向路由订阅源推送当前最优匹配结果;
步骤S11:路由订阅源收到路由发布端响应的路由前缀后,将路由前缀加入本地路由表进行更新管理;
进一步地,路由删除过程如下:
步骤S12:路由发布端收到路由删除信息,根据路由节点得到记录的路由订阅源身份信息;
步骤S13:向所关注的路由订阅源推送删除动作;
步骤S14:路由订阅源收到路由发布端的路由删除信息后,查找本地路由表进行删除处理;
路由订阅源路由老化过程如下:
步骤S15:路由订阅源依据订阅策略信息,对本地命中收敛信息进行判断,对全部收敛无命中的条目进行本地老化;
路由添加过程如下:
步骤S16:在路由发布端接收到新路由后,仅进行本地路由前缀增加管理,不进行订阅匹配推送处理;
如下对部分流程进行细化说明:
如图6所示,策略收敛算法过程如下:
定义:最大IP目的地址按字节存储长度定义为MAX_IPADDR_LEN;
定义:请求报文目的地址按字节存储长长度为ulPaketDiplen;
定义:报文地址表达为ucPaketDip[ulPaketDiplen];
定义:路由订阅源本地当前命中的路由地址bit位实际长为ulLocalRoutelen,本次命中路由的掩码长为ulLocalRouteMsklen;本次命中的路由地址信息表达为ucLocalRoute[MAX_IPADDR_LEN];
基于上述,定义命中叠加管理结构体如下:
typedef stRoute
{
ucAddrFitRes[MAX_IPADDR_LEN];
ulRoutelen;
ulRouteMsklen;
}STROUTE;
STROUTE stNewAddrFit={0};
STROUTE stCurrentAddrFit={0};
处理关键点1:根据当前报文目的IP,基于路由订阅源本地路由地址按bit位进行命中标记,掩去高位保留主机地址范围;
将stCurrentAddrFit.ucAddrFitRes赋值为ucPaketDip[ulPaketDiplen]按本次命中路由的对应掩码长ulLocalRouteMsklen掩去高位保留主机范围的结果;
如图7所示举例,首次请求ucPaketDip为192.168.1.3,ulLocalRouteMsklen为24,掩去高位保留主机地址范围的掩码数组为0.0.0.255,则按上述操作:
stCurrentAddrFit.ucAddrFitRes结果为0.0.0.3;
处理关键点2:对新的查询请求做保留主机范围计算后,与已有结果进行叠加按位‘|’操作叠加;
新地址请求结果为stNewAddrFit.ucAddrFitRes,则叠加当前主机地址为:
stCurrentAddrFit.ucAddrFitRes|=stNewAddrFit.ucAddrFitRes;
如图7所示举例,第二个请求地址为192.168.1.96,保留主机范围计算:stNewAddrFit.ucAddrFitRes为0.0.0.96,前次已有结果stCurrentAddrFit.ucAddrFitRes为0.0.0.3则按上述操作:
当前最新stCurrentAddrFit.ucAddrFitRes结果为0.0.0.99;
第三次命中地址为192.168.1.126,以此类推,stNewAddrFit.ucAddrFitRes为0.0.0.126,按本步骤完成后的stCurrentAddrFit.ucAddrFitRes为0.0.0.127。
如图8所示,路由订阅源本地按策略收敛算法进行本地地址命中收敛计算;其中,需要基于策略控制检测未命中的bit位,并按策略规则进行收敛老化,包括:
当前按步骤S1-S6持续运行一段时间后,系统中形成了stCurrentAddrFit.ucAddrFitRes结果数据;
定义:命中老化周期因子ulAddrFitAgeTime;
处理关键点:在设定的老化周期内检测步骤S6得到的命中结果数据区,按对应所命中路由的掩码长度掩去高位保留主机范围的剩余内容中,每个剩余bit位是否有变化;对有变化的bit保持,对无变化的且内容为‘1’的bit位进行清零操作;
如图9所示举例:运行一段时间后,存在192.168.1.19、192.168.1.36、192.168.1.10等地址命中,低字节的高两bit没有被命中刷新,则基于本步骤的处理结果stCurrentAddrFit.ucAddrFitRes最终为0.0.0.63。
如图10所示,路由订阅源基于收敛计算结果及策略因子控制,按需新生成订阅目的地址请求,向路由发布端进行路由订阅;包括:
处理关键点:基于策略控制的步长、订阅间隔及击中周期等因素对步骤S7中的地址结果进行计算分析,生成符合策略要求的订阅目标汇总地址;
结合请求报文特征及请求时机,存在如下几类场景:
场景一:多次请求报文目的地址相对离散,跨越主机范围较广;
场景二:不同路由被请求报文命中频率差异较大,部分长期不命中,部分频繁命中,部分随机时间命中;需要结合路由对转发老化的要求进行区分对待;
需要满足在上述场景下,系统运行一段时间后,能在优化命中匹配和最少系统资源消耗间达成平衡;
定义:地址步长因子ulAddrStepLen;
定义:订阅间隔因子ulAddrSubscribeSycle;
定义:击中周期因子ulAddrFitFreq;
场景一处理关键点1.1:通过将步骤S7中的地址结果按设置的步长因子,进行步长区间内分区域掩去无关位提取,如果步长区间内无有效置‘1’bit则忽略本步长区间;
场景一处理关键点1.2:分步与原有路由段合并后独立组织订阅目的地址请求;
基于步骤S7结果,按ulAddrStepLen因子对stCurrentAddrFit.ucAddrFitRes进行切割:
定义:ulAddrHostLen为主机范围bit长;
则生成的请求地址个数为:ulAddrHostLen/ulAddrStepLen整除后的数量;
最后取模后的余数:ulAddrHostLen%ulAddrStepLen内容作为最后一个请求地址步长;
如图11所示举例,stCurrentAddrFit.ucAddrFitRes结果为0.0.0.63;
设ulAddrStepLen==3;ulLocalRouteMsklen==24情况下:
主机范围bit长ulAddrHostLen为8;
对应生成两个步长范围的请求主机地址范围:
0.0.0.56;
0.0.0.7;
余数为2步长内无有效bit进行忽略;
与原有命中路由段合并后,形成两个有效地址进行分步订阅请求:
192.168.1.56;
192.168.1.7;
场景二处理关键点2.1:对于指定路由可以对应设定击中周期因子,对该路由在老化周期内判断如果未到击中关注周期的bit不做老化处理,而到了击中周期因子对应周期内的数据正常进行老化处理;
经过上述约束,结合老化过程即可形成符合策略的收敛地址。
总体上,本发明根据订阅间隔因子定义的值,周期的发起相关订阅请求的处理过程;
其中主要逻辑实施方式如下:
1、如图6所示,在路由订阅源接收到报文软转发请求后,进行地址逼近处理;
2、如图8所示,路由订阅源基于老化因子定时周期到达后,对已命中逼近结果进行老化处理;
3、如图10所示,路由订阅源基于策略因子控制的订阅周期,轮询本地路由表并按步长因子控制生成收敛后的订阅请求。
进一步地,本发明还提供了一种基于策略收敛的路由订阅方法与系统,包括路由发布端和路由订阅源,其中:
所述路由发布端不增加基于地址数量成正比的管理信息,而依靠所述路由订阅源对转发请求地址的策略收敛算法进行按需订阅返回;
所述路由发布端对常规删除动作正常向所述路由订阅源推送,而对添加动作不进行主动推送。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。