OpenStack加密链路节点分层方法与系统与流程

文档序号:32001908发布日期:2022-11-02 11:36阅读:56来源:国知局
OpenStack加密链路节点分层方法与系统与流程
openstack加密链路节点分层方法与系统
技术领域
1.本发明涉及一种基于模拟退火算法的openstack加密链路节点分层方法与系统,属于网络安全、计算机软件领域。


背景技术:

2.为了增强openstack集群中虚拟机的反跟踪、反溯源能力,专利cn110191105b提供了一种openstack加密链路实现方法及系统。加密链路由网络节点和若干个中间节点按顺序连接而成,相邻的节点间形成一条加密隧道,依次连通这些加密隧道,形成一条完整的加密链路。
3.为了提高openstack加密链路建立的成功率和可用性,专利cn113542077b公开了一种openstack加密链路管理方法和系统。如图1所示,该发明首先将网络节点与目标站点间的中间节点进行分层;再以网络节点为起点,目标站点为终点,应用a星算法选取合适的中间节点作为加密链路使用的中间节点,组成加密链路。
4.在上述方法中,中间节点的分层可由该系统随机分配,也可由用户人工配置。但这两种分层方法都存在不足:1、随机分配没有考虑节点之间的网络连接质量,可能导致相邻两层中的节点网络连接性差,组成的加密链路通讯延迟大、通讯质量低,甚至无法连通,在后续过程中也需要人工调试。2、人工配置的自动化程度低,为保证加密链路通讯质量,需要消耗大量人工工时对节点分层进行调试和调优。而且即使通过人工调试使得可以成功构建加密链路,也不能保证中间的节点分配处于使得加密链路延迟最小的最合理状态。


技术实现要素:

5.发明目的:针对上述现有技术存在的问题,本发明目的在于提供一种openstack加密链路节点分层方法与系统,基于模拟退火算法自动给中间节点分层,以提高加密链路构建的成功率,降低加密链路的通讯延迟。
6.技术方案:为实现上述发明目的,本发明采用如下技术方案:
7.一种openstack加密链路节点分层方法,包括如下步骤:
8.步骤1、获取各节点两两之间的延迟,所述节点包括openstack网络节点、目标站点和加密链路中所有可用的中间节点;
9.步骤2、将中间节点按照设定的中间节点层数和各层中间节点个数随机生成初始排列,作为当前状态;设定初始退火温度t;
10.步骤3、计算排列中每个中间节点的延迟指数,并在每一个中间层内,按照延迟指数大小将中间节点重新排序;其中每个中间节点的延迟指数为该节点的左邻延迟指数和右邻延迟指数的算术平均,所述左邻延迟指数为该节点和其上一层所有节点的延迟的算术平均,所述右邻延迟指数为该节点和其下一层所有节点的延迟的算术平均;
11.步骤4、将所有中间节点的延迟指数加和,作为全局延迟指数dig;
12.步骤5、随机选择两个中间层,在选中的两个中间层中各选出一个中间节点交换位
置,得到一个新的排列;其中优先选择中间层中延迟指数大的节点;
13.步骤6、按照步骤3至步骤4的方法重新计算全局延迟指数dig
new

14.步骤7、若dig
new
小于dig,则接受扰动后的排列作为当前状态,否则按照概率接受扰动后的排列作为当前状态;
15.步骤8、循环步骤5至步骤7,直到达到设定的迭代次数;
16.步骤9、若满足终止条件,则将当前中间节点的排列状态作为自动分层的结果,结束;否则执行步骤10;
17.步骤10、降低退火温度t,并重置迭代次数,重复步骤5至步骤9。
18.作为优选,节点(x,y)的延迟指数di
(x,y)
计算方式表示为:
[0019][0020]
其中,x为中间层序号,y为节点在中间层中的序号,m
x-1
、m
x+1
分别为第x-1、x+1中间层的节点个数,nd((x,y),(x-1,i))、nd((x,y),(x+1,j))分别表示节点(x,y)与其上一层中第i节点、下一层中第j节点的延迟。
[0021]
作为优选,步骤5中根据如下方法选择中间层中的节点:每一个中间层内按照延迟指数从小到大将中间节点排序,生成一个范围内的随机数r,计算log
2 r,结果向上取整作为选中的节点次序;其中i为中间层序号,mi为第i中间层的节点总数。
[0022]
作为优选,步骤9中终止条件为:连续扰动超过预设的次数而当前状态无更新。
[0023]
作为优选,所述延迟为双向延迟,由ping等工具多次测量取均值。
[0024]
基于相同的发明构思,本发明提供一种openstack加密链路节点分层系统,包括:
[0025]
延迟采集模块,用于获取各节点两两之间的延迟,所述节点包括openstack网络节点、目标站点和加密链路中所有可用的中间节点;
[0026]
初始化模块,用于将中间节点按照设定的中间节点层数和各层中间节点个数随机生成初始排列,作为当前状态;设定初始退火温度t;
[0027]
延迟指数计算模块,用于计算排列中每个中间节点的延迟指数,并在每一个中间层内,按照延迟指数大小将中间节点重新排序;其中每个中间节点的延迟指数为该节点的左邻延迟指数和右邻延迟指数的算术平均,所述左邻延迟指数为该节点和其上一层所有节点的延迟的算术平均,所述右邻延迟指数为该节点和其下一层所有节点的延迟的算术平均;将所有中间节点的延迟指数加和,作为全局延迟指数;
[0028]
扰动模块,用于随机选择两个中间层,在选中的两个中间层中各选出一个中间节点交换位置,得到一个新的排列;其中优先选择中间层中延迟指数大的节点;
[0029]
扰动接受判定模块,用于通过延迟指数计算模块计算扰动后的排列的全局延迟指数dig
new
,与扰动前的全局延迟指数dig进行比较,若dig
new
小于dig,则接受扰动后的排列,否则按照概率接受扰动后的排列;
[0030]
以及,模拟退火算法控制模块,用于循环对中间节点的排列状态进行扰动和判定,直到达到设定的迭代次数;若满足算法终止条件,则将当前中间节点的排列状态作为自动
分层的结果,否则降低退火温度t,并重置迭代次数,重复进行扰动和判定,直到算法终止。
[0031]
基于相同的发明构思,本发明提供一种计算机系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现所述的openstack加密链路节点分层方法的步骤。
[0032]
基于相同的发明构思,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述的openstack加密链路节点分层方法的步骤。
[0033]
有益效果:与现有技术相比,本发明具有如下优点:1、充分考虑到加密链路中各节点两两之间的延迟,使用此种方法分层可显著提高加密链路构建的成功率,降低加密链路的通讯延迟;2、自动给中间节点分层,节约了给加密链路调试调优的人力。
附图说明
[0034]
图1为加密链路中间节点分层示意图。
[0035]
图2为本发明实施例的方法流程图。
[0036]
图3为本发明实施例中节点编号示意图。
具体实施方式
[0037]
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本技术所附权利要求所限定的范围。
[0038]
发明思路:为了保证加密链路的反跟踪、反溯源能力,必须保证一条加密链路中有足够多的节点。随之而来的副作用是加密链路的通讯延迟大。为了降低加密链路的延迟,一个可行的思路是通过合理的排布,使得所有中间节点和其相邻层(中间节点层的上一层和下一层,例如第2层的相邻层为第1层和第3层)的节点之间的平均延迟最小,进而可令逐层构建的加密链路延迟最小。
[0039]
已知

两个节点之间的延迟与其他节点无关,

延迟在一定范围内随机波动,但可通过多次测量取平均值的方法将其视作一个常量。所以可以将寻求节点间平均延迟最小的问题模型化为一个最优排列问题。
[0040]
求取最优排列,可以穷举所有的排列得出最优解,然而这需要消耗庞大的计算资源,例如将25个节点平均分成5层(不考虑每一层内节点的顺序),采用穷举计算最优排列共需计算6.23
×
10
14
种可能。故而本发明采用模拟退火算法,通过有限次的迭代,寻求节点分层的近似最优解。
[0041]
如图2所示,本发明实施例提供的一种基于模拟退火算法的openstack加密链路节点分层方法,主要步骤如下:
[0042]
步骤1、采集延迟数据。将openstack网络节点、目标站点和加密链路中所有可用的中间节点都看作一个节点,测量并记录各节点两两之间的延迟。本实施例中所提及的延迟,均指节点之间的双向延迟,单位为毫秒,可用ping等工具多次测量取均值。若节点之间不可联通,则延迟记为一固定的较大值,例如10000。
[0043]
步骤2、设定中间节点层数n和各层中间节点个数mi,其中i为中间层的序号,取值
从1到n。如图3所示,将openstack网络节点视作第0层,目标站点视作第n+1层。将节点记为(x,y),其中x为中间层序号,y为节点在层中的序号。节点(x1,y1)和节点(x2,y2)之间的延迟表示为nd((x1,y1),(x2,y2))。
[0044]
步骤3、将中间节点按照步骤2中设定的排列随机分配,作为当前状态。
[0045]
步骤4、设定初始退火温度t为1000。
[0046]
步骤5、计算排列中每个中间节点的延迟指数,本实施例中定义的延迟指数是衡量一个中间节点和其相邻层所有节点的网络延迟的指标。节点(x,y)的延迟指数di
(x,y)
计算方式为:
[0047][0048]
分别计算该节点的左邻延迟指数和右邻延迟指数,再取算术平均,其中,左邻延迟指数指该节点和其上一层所有节点的延迟的算术平均,右邻延迟指数指该节点和其下一层所有节点的延迟的算术平均。
[0049]
步骤6、在每一个中间层内,按照延迟指数从小到大将中间节点重新排序。
[0050]
步骤7、将所有中间节点的延迟指数加和,记为全局延迟指数dig。
[0051]
步骤8、随机选择2个中间层,进行扰动。扰动指在选中的2层中各选出一个中间节点,交换在节点排列中的位置,从而得到一个新的排列。中间节点的选取方法遵循以下特征:优先扰动延迟指数高的节点,但同时也有较低的概率扰动延迟指数低的节点。为实现该特征,可以人工设定层内各次序节点的被选中概率,也可通过如下自动分配方法:生成一个范围内的随机数r,计算log
2 r,结果向上取整作为选中的节点次序,即可保证节点(i,1)被选中的概率为节点(i,2)被选中概率的0.5倍,节点(i,2)被选中概率为节点(i,3)被选中概率的0.5倍,依此类推。其中i为该层序号,mi为该层节点总数。
[0052]
步骤9、按步骤5~步骤7中的方法重新计算扰动后的全局延迟指数dig
new

[0053]
步骤10、若dig
new
小于dig,则接受扰动后的排列作为当前状态;若dig
new
大于dig,则按一定的概率p接受扰动后的排列作为当前状态。p的计算方式为其中t为当前的退火温度。
[0054]
步骤11、循环步骤8~10,直到达到设定的迭代次数100*n。
[0055]
步骤12、判断当前迭代过程是否满足终止条件。终止条件为:连续扰动超过5*n次而当前状态无更新。如过满足终止条件,则认为已经迭代得到近似最优解,结束迭代,返回当前状态。不满足则执行步骤13。
[0056]
步骤13、降低退火温度t为原来的0.95倍,重置迭代次数,执行新的退火温度下的迭代,重复步骤8~12。
[0057]
基于相同的发明构思,本发明实施例提供的一种openstack加密链路节点分层系统,包括:延迟采集模块,用于获取各节点两两之间的延迟,所述节点包括openstack网络节点、目标站点和加密链路中所有可用的中间节点;初始化模块,用于将中间节点按照设定的中间节点层数和各层中间节点个数随机生成初始排列,作为当前状态;设定初始退火温度t;延迟指数计算模块,用于计算排列中每个中间节点的延迟指数,并在每一个中间层内,按
照延迟指数大小将中间节点重新排序;将所有中间节点的延迟指数加和,作为全局延迟指数;扰动模块,用于随机选择两个中间层,在选中的两个中间层中各选出一个中间节点交换位置,得到一个新的排列;其中优先选择中间层中延迟指数大的节点;扰动接受判定模块,用于通过延迟指数计算模块计算扰动后的排列的全局延迟指数dig
new
,与扰动前的全局延迟指数dig进行比较,若dig
new
小于dig,则接受扰动后的排列,否则按照概率接受扰动后的排列;以及,模拟退火算法控制模块,用于循环对中间节点的排列状态进行扰动和判定,直到达到设定的迭代次数;若满足算法终止条件,则将当前中间节点的排列状态作为自动分层的结果,否则降低退火温度t,并重置迭代次数,重复进行扰动和判定,直到算法终止。
[0058]
上述描述的各模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。所述模块的划分仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统。
[0059]
基于相同的发明构思,本发明实施例提供的提供一种计算机系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现所述的openstack加密链路节点分层方法的步骤。
[0060]
基于相同的发明构思,本发明实施例提供的提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述的openstack加密链路节点分层方法的步骤。
[0061]
本领域技术人员可以理解的是,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机系统(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例所述方法的全部或部分步骤。存储介质包括:u盘、移动硬盘、只读存储器rom、随机存取存储器ram、磁碟或者光盘等各种可以存储计算机程序的介质。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1