一种虚拟路由器创建时外部网络端口创建的改进方法与流程

未命名 10-08 阅读:108 评论:0


1.本发明涉及虚拟路由器领域,具体涉及一种虚拟路由器创建时外部网络端口创建的改进方法。


背景技术:

2.openstack作为主流开源云计算管理平台,在网络虚拟化方面为用户提供了良好的基础服务,其中三层网络依托于分布式虚拟路由器的实现更是为用户提供了安全、灵活的网络体验。
3.但原生的分布式虚拟路由器在其新创建时对外部网络的端口创建方面遵循“能省则省”的原则即只在一个计算节点上创建fip端口和snat端口,其他计算节点先不创建,等到添加了内部网络并存在虚拟机后再后台隐式创建;
4.上述方式对用户网络规划能力提出了更高的要求,极易出现外部网络ip资源不足或占用而导致部分计算节点创建fip端口或snat端口失败且没有失败通知,进而导致这些计算节点上的虚拟机无法通过虚拟路由器连接外部网络的情况,对用户极不友好。
5.因此,本技术提供一种虚拟路由器创建时外部网络端口创建的改进方法来解决上述问题很有必要。


技术实现要素:

6.本发明的目的是提供一种虚拟路由器创建时外部网络端口创建的改进方法,以解决技术中的上述不足之处。
7.为了实现上述目的,本发明提供如下技术方案:一种虚拟路由器创建时外部网络端口创建的改进方法,包括以下步骤:
8.s1、用户发起创建分布式虚拟路由器请求;
9.s2、建立ip是否足够模块,查询外部网络当前空闲ip数量是否足够;
10.s3、建立ip预占模块,根据本次创建所需的ip资源数量对外部网络ip资源进行预先占用;
11.s4、利用云计算平台原生外部网络创建虚拟路由器;
12.s5、建立广播通知模块,利用消息队列向所有节点的原生三层网络代理发出创建分布式虚拟路由器的通知;
13.s6、建立路由端口创建模块,根据原生三层网络代理收到的创建分布式虚拟路由器的通知,调用路由端口创建模块;
14.s7、路由端口创建模块按照预占的ip地址,创建出虚拟路由器需要的所有端口。
15.优选的,s2中,ip是否足够模块通过计算节点数量判断外部网络ip资源是否足够;出现否时,则返回失败。
16.优选的,计算节点数量判断外部网络ip资源数量是否足够时,具体步骤如下:
17.s21、向外部网络发起查询计算节点数量的请求,得到计算节点数量host_num;
18.s22、向外部网络发起查询网络可用ip数的请求,得到外部网络的空闲ip数network_free_ip_num和子网空闲ip数subnet_free_ip_num;
19.s23、判断外部网络的空闲i p数network_free_ip_num是否小于等于0,如果是,则返回外部网络ip资源数量不足;否则继续步骤s24;
20.s24、向外部网络发起查询当前外部网络下已存在的fip端口,获取其数量fip_agent_gw_ports_num;
21.s25、判断外部网络的空闲ip数network_free_ip_num是否小于本次创建所需的外部网络ip资源数量,本次创建所需的外部网络ip资源数量=host_num-fip_agent_gw_ports_num+1,其中1表示snat外部网关数量,如果是,则返回外部网络ip资源数量不足;否则继续步骤s26;
22.s26、判断子网空闲ip数subnet_free_ip_num是否小于计算节点数量host_num,如果是则返回外部网络ip资源数量不足;否则返回外部网络ip资源数量足够。
23.优选的,s3中,根据本次创建所需的ip资源数量对外部网络ip资源进行预先占用,具体步骤如下:
24.s31、向外部网络发起查询计算节点数量的请求,得到计算节点数量host_num;
25.s32、向外部网络发起查询当前外部网络下已存在的fip端口,获取其数量fip_agent_gw_ports_num;
26.s33、计算host_num-fip_agent_gw_ports_num+1得出本次创建所需的外部网络ip资源数量need_ip_num;
27.s34、循环向外部网络发起ip分配请求,循环次数为need_ip_num;
28.s35、将本次分配的ip资源在数据库中标记为预占状态。
29.优选的,s5中,广播通知模块利用消息队列向所有节点的原生三层网络代理发出创建分布式虚拟路由器的通知,具体步骤如下:
30.s51、配置消息队列广播参数;
31.s52、调用消息队列发送消息。
32.优选的,s7中,路由端口创建模块按照预占的ip地址,创建出虚拟路由器需要的所有端口,具体步骤如下:
33.s71、查询snat端口是否已存在,如果是则跳至步骤s74,否则继续步骤s72;
34.s72、设置端口属性为snat端口,向外部网络发起路由端口创建请求,外部网络判断所收到请求是否为路由端口的创建请求,若所收到请求为路由端口的创建请求,查询数据库中标记为预占状态的一个ip地址,创建出端口;
35.s73、创建本地snat网络命名空间,配置相关路由表和网络规则;
36.s74、查询fip端口是否已存在,如果是,则退出,否则继续步骤s75;
37.s75、设置端口属性为fip端口,向外部网络发起路由端口创建请求,外部网络判断所收到请求是否为路由端口的创建请求,若所收到请求为路由端口的创建请求,查询数据库中标记为预占状态的一个ip地址,创建出端口;
38.s76、创建本地fip端口网络命名空间,配置相关路由表和网络规则。
39.在上述技术方案中,本发明提供的技术效果和优点:
40.通过判断ip是否足够模块可以根据计算节点数量判断外部网络ip资源是否足够,
在ip资源不足情况下直接返回失败,具备更好的交互性;
41.通过ip预占模块可以对外部网络ip资源进行预占,避免创建路由的这段时间内发生ip资源抢占和冲突;
42.通过广播通知模块,可基于现有消息队列机制,将创建分布式虚拟路由器的通知以广播形式发给所有节点,使所有节点都能对创建分布式虚拟路由器做出进一步动作;
43.通过计算节点上增加路由端口创建模块,可以使用上述ip预占模块中已预占的ip资源创建路由所需要的全部外部网络端口;
44.综上,可以解决外部网络ip资源不足或占用而导致部分计算节点创建fip端口和snat端口失败且没有失败通知进而导致其他节点虚拟机无法通过虚拟路由器连接外部网络的问题,提供了更友好的用户体验。
45.本技术中,snat表示的是源地址转换技术,是为了实现内部多个ip共享同一外部ip连接至外部网络的成熟网络技术。
46.fip端口,是openstack中为了实现浮动ip方式连接内外网而创建的额外一种端口。
附图说明
47.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
48.图1为本发明的系统框图;
49.图2为本发明的方案流程图;
50.图3为本发明的ip是否足够模块流程图;
51.图4为本发明的ip预占模块流程图;
52.图5为本发明的路由端口创建模块流程图。
具体实施方式
53.为了使本领域的技术人员更好地理解本发明的技术方案,下面将结合附图对本发明作进一步的详细介绍。
54.本发明提供了如图1-5所示的一种虚拟路由器创建时外部网络端口创建的改进方法,包括以下步骤:
55.s1、用户发起创建分布式虚拟路由器请求;
56.s2、建立ip是否足够模块,查询外部网络当前空闲ip数量是否足够;
57.s3、建立ip预占模块,根据本次创建所需的ip资源数量对外部网络ip资源进行预先占用;
58.s4、利用云计算平台(即openstack)原生外部网络创建虚拟路由器;
59.s5、建立广播通知模块,利用消息队列向所有节点的原生三层网络代理发出创建分布式虚拟路由器的通知;
60.s6、建立路由端口创建模块,根据原生三层网络代理收到的创建分布式虚拟路由器的通知,调用路由端口创建模块;
61.s7、路由端口创建模块按照预占的ip地址,创建出虚拟路由器需要的所有端口。
62.具体地,s2中,ip是否足够模块通过计算节点数量判断外部网络ip资源是否足够;出现否时,则返回失败。
63.参照图3,计算节点数量判断外部网络ip资源数量是否足够时,具体步骤如下:
64.s21、向外部网络发起查询计算节点数量的请求,得到计算节点数量host_num;
65.s22、向外部网络发起查询网络可用ip数的请求,得到外部网络的空闲ip数network_free_ip_num和子网空闲ip数subnet_free_ip_num;
66.s23、判断外部网络的空闲i p数network_free_ip_num是否小于等于0,如果是,则返回外部网络ip资源数量不足;否则继续步骤s24;
67.s24、向外部网络发起查询当前外部网络下已存在的fip端口,获取其数量fip_agent_gw_ports_num;
68.s25、判断外部网络的空闲ip数network_free_ip_num是否小于本次创建所需的外部网络ip资源数量,本次创建所需的外部网络ip资源数量=host_num-fip_agent_gw_ports_num+1,其中1表示snat外部网关数量,如果是,则返回外部网络ip资源数量不足;否则继续步骤s26;
69.s26、判断子网空闲ip数subnet_free_ip_num是否小于计算节点数量host_num,如果是则返回外部网络ip资源数量不足;否则返回外部网络ip资源数量足够。
70.参照图4,s3中,根据本次创建所需的ip资源数量对外部网络ip资源进行预先占用,具体步骤如下:
71.s31、向外部网络发起查询计算节点数量的请求,得到计算节点数量host_num;
72.s32、向外部网络发起查询当前外部网络下已存在的fip端口,获取其数量fip_agent_gw_ports_num;
73.s33、计算host_num-fip_agent_gw_ports_num+1得出本次创建所需的外部网络ip资源数量need_ip_num;
74.s34、循环向外部网络发起ip分配请求,循环次数为need_ip_num;
75.s35、将本次分配的ip资源在数据库中标记为预占状态。
76.优选的,s5中,广播通知模块利用消息队列向所有节点的原生三层网络代理发出创建分布式虚拟路由器的通知,具体步骤如下:
77.s51、配置消息队列广播参数;
78.s52、调用消息队列发送消息。
79.参照图5,s7中,路由端口创建模块按照预占的ip地址,创建出虚拟路由器需要的所有端口,具体步骤如下:
80.s71、查询snat端口是否已存在,如果是则跳至步骤s74,否则继续步骤s72;
81.s72、设置端口属性为snat端口,向外部网络发起路由端口创建请求,外部网络判断所收到请求是否为路由端口的创建请求,若所收到请求为路由端口的创建请求,查询数据库中标记为预占状态的一个ip地址,创建出端口;
82.s73、创建本地snat网络命名空间,配置相关路由表和网络规则;
83.s74、查询fip端口是否已存在,如果是,则退出,否则继续步骤s75;
84.s75、设置端口属性为fip端口,向外部网络发起路由端口创建请求,外部网络判断
所收到请求是否为路由端口的创建请求,若所收到请求为路由端口的创建请求,查询数据库中标记为预占状态的一个ip地址,创建出端口;
85.s76、创建本地fip端口网络命名空间,配置相关路由表和网络规则。
86.通过上述技术方案:
87.使用时,通过判断ip是否足够模块可以根据计算节点数量判断外部网络ip资源是否足够,在ip资源不足情况下直接返回失败,具备更好的交互性;
88.通过ip预占模块可以对外部网络ip资源进行预占,避免创建路由的这段时间内发生ip资源抢占和冲突;
89.通过广播通知模块,可基于现有消息队列机制,将创建分布式虚拟路由器的通知以广播形式发给所有节点,使所有节点都能对创建分布式虚拟路由器做出进一步动作;
90.通过计算节点上增加路由端口创建模块,可以使用上述ip预占模块中已预占的ip资源创建路由所需要的全部外部网络端口;
91.综上,通过本发明的四点技术改进,可以解决外部网络ip资源不足或占用而导致部分计算节点创建fip端口和snat端口失败且没有失败通知进而导致其他节点虚拟机无法通过虚拟路由器连接外部网络的问题,提供了更友好的用户体验。
92.以上只通过说明的方式描述了本发明的某些示范性实施例,毋庸置疑,对于本领域的普通技术人员,在不偏离本发明的精神和范围的情况下,可以用各种不同的方式对所描述的实施例进行修正。因此,上述附图和描述在本质上是说明性的,不应理解为对本发明权利要求保护范围的限制。

技术特征:
1.一种虚拟路由器创建时外部网络端口创建的改进方法,其特征在于,包括以下步骤:s1、用户发起创建分布式虚拟路由器请求;s2、建立ip是否足够模块,查询外部网络当前空闲ip数量是否足够;s3、建立ip预占模块,根据本次创建所需的ip资源数量对外部网络ip资源进行预先占用;s4、利用云计算平台原生外部网络创建虚拟路由器;s5、建立广播通知模块,利用消息队列向所有节点的原生三层网络代理发出创建分布式虚拟路由器的通知;s6、建立路由端口创建模块,根据原生三层网络代理收到的创建分布式虚拟路由器的通知,调用路由端口创建模块;s7、路由端口创建模块按照预占的ip地址,创建出虚拟路由器需要的所有端口。2.根据权利要求1所述的一种虚拟路由器创建时外部网络端口创建的改进方法,其特征在于:s2中,ip是否足够模块通过计算节点数量判断外部网络ip资源是否足够;出现否时,则返回失败。3.根据权利要求2所述的一种虚拟路由器创建时外部网络端口创建的改进方法,其特征在于:计算节点数量判断外部网络ip资源数量是否足够时,具体步骤如下:s21、向外部网络发起查询计算节点数量的请求,得到计算节点数量host_num;s22、向外部网络发起查询网络可用ip数的请求,得到外部网络的空闲ip数network_free_ip_num和子网空闲ip数subnet_free_ip_num;s23、判断外部网络的空闲ip数network_free_ip_num是否小于等于0,如果是,则返回外部网络ip资源数量不足;否则继续步骤s24;s24、向外部网络发起查询当前外部网络下已存在的fip端口,获取其数量fip_agent_gw_ports_num;s25、判断外部网络的空闲ip数network_free_ip_num是否小于本次创建所需的外部网络ip资源数量,本次创建所需的外部网络ip资源数量=host_num-fip_agent_gw_ports_num+1,其中1表示snat外部网关数量,如果是,则返回外部网络ip资源数量不足;否则继续步骤s26;s26、判断子网空闲ip数subnet_free_ip_num是否小于计算节点数量host_num,如果是则返回外部网络ip资源数量不足;否则返回外部网络ip资源数量足够。4.根据权利要求1所述的一种虚拟路由器创建时外部网络端口创建的改进方法,其特征在于:s3中,根据本次创建所需的ip资源数量对外部网络ip资源进行预先占用,具体步骤如下:s31、向外部网络发起查询计算节点数量的请求,得到计算节点数量host_num;s32、向外部网络发起查询当前外部网络下已存在的fip端口,获取其数量fip_agent_gw_ports_num;s33、计算host_num-fip_agent_gw_ports_num+1得出本次创建所需的外部网络ip资源数量need_ip_num;s34、循环向外部网络发起ip分配请求,循环次数为need_ip_num;s35、将本次分配的ip资源在数据库中标记为预占状态。
5.根据权利要求1所述的一种虚拟路由器创建时外部网络端口创建的改进方法,其特征在于:s5中,广播通知模块利用消息队列向所有节点的原生三层网络代理发出创建分布式虚拟路由器的通知,具体步骤如下:s51、配置消息队列广播参数;s52、调用消息队列发送消息。6.根据权利要求4所述的一种虚拟路由器创建时外部网络端口创建的改进方法,其特征在于:s7中,路由端口创建模块按照预占的ip地址,创建出虚拟路由器需要的所有端口,具体步骤如下:s71、查询snat端口是否已存在,如果是则跳至步骤s74,否则继续步骤s72;s72、设置端口属性为snat端口,向外部网络发起路由端口创建请求,外部网络判断所收到请求是否为路由端口的创建请求,若所收到请求为路由端口的创建请求,查询数据库中标记为预占状态的一个ip地址,创建出端口;s73、创建本地snat网络命名空间,配置相关路由表和网络规则;s74、查询fip端口是否已存在,如果是,则退出,否则继续步骤s75;s75、设置端口属性为fip端口,向外部网络发起路由端口创建请求,外部网络判断所收到请求是否为路由端口的创建请求,若所收到请求为路由端口的创建请求,查询数据库中标记为预占状态的一个ip地址,创建出端口;s76、创建本地fip端口网络命名空间,配置相关路由表和网络规则。

技术总结
本发明公开了一种虚拟路由器创建时外部网络端口创建的改进方法,具体涉及虚拟路由器技术领域,包括以下步骤:用户发起创建分布式虚拟路由器请求;建立ip是否足够模块,查询外部网络当前空闲ip数量是否足够;建立ip预占模块,根据本次创建所需的ip资源数量对外部网络ip资源进行预先占用;利用云计算平台原生外部网络创建虚拟路由器;建立广播通知模块,利用消息队列向所有节点的原生三层网络代理发出创建分布式虚拟路由器的通知;通过四点技术改进,可解决外部网络ip资源不足或占用而导致部分计算节点创建fip端口和snat端口失败且没有失败通知进而导致其他节点虚拟机无法通过虚拟路由器连接外部网络的问题,提供更友好的用户体验。户体验。户体验。


技术研发人员:高强 张文文
受保护的技术使用者:西安雷风电子科技有限公司
技术研发日:2023.07.21
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐