一种openstack虚拟机通过所在节点snat连接外网的系统及方法与流程

文档序号:35664734发布日期:2023-10-06 20:01阅读:35来源:国知局
本发明属于计算机,具体涉及一种openstack虚拟机通过所在节点snat连接外网的系统及方法。
背景技术
::1、网络一直是openstack的核心功能之一,openstack也提供了很多技术方案满足用户差异化的网络需求,现有数据中心组网方案大多使用vxlan+dvr,相比于传统路由器方案,该方案确实在一定程度上降低了网络节点的负载,同时提高可扩展性,但对于外网资源稀缺场景下,未绑定浮动ip的虚拟机南北流量还是需要集中到一个网络节点去通过snat处理,这样就会造成以下问题:单个网络节点负载高、单点成为整个网络的瓶颈、其他节点网络资源浪费、网络故障概率高、snat故障迁移慢、计算节点与网络节点之间的tunnel网络承担较大流量、网络架构复杂不易维护等诸多问题。技术实现思路1、为克服上述现有技术的不足,本发明的目的是提供一种openstack虚拟机通过所在节点snat连接外网的系统及方法2、为实现上述目的,本发明采用的技术方案是:一种openstack虚拟机通过所在节点snat连接外网的系统,包括有创建分布式snat的虚拟路由器、限定虚拟机南北流量流向模块、网卡链路状态检测模块;3、所述的创建分布式snat的路由器,用于创建分布式snat类型的虚拟路由器,并在每个计算节点上都部署snat功能;4、所述的限定虚拟机南北流量流向模块,用于将虚拟机南北流量限定只流入本地snat,而不向网络节点流入;5、所述网卡链路状态检测模块,用于实时检测计算节点上外部网络绑定的物理端口链路状态,在链路状态断开时,使本节点虚拟机通过路由连接外网的流量导向其他正常节点,保证虚拟机南北流量快速恢复,增强网络可靠性。6、一种openstack虚拟机通过所在节点snat连接外网的方法,包括以下步骤:7、步骤s1,创建分布式snat的路由器8、用于创建分布式snat类型的虚拟路由器,并在每个计算节点上都部署snat功能;dvr模式下未绑定浮动ip的虚拟机南北流量需要集中到网络节点去处理的一个重要原因就是本节点上没有snat功能,无法处理;将snat功能分布式部署在每个计算节点上;9、步骤s2,创建限定虚拟机南北流量流向模块10、本步骤用于将虚拟机南北流量限定只流入本地snat,而不向网络节点流入;dvr模式下未绑定浮动ip的虚拟机是将南北流量集中流向网络节点,所以要解决现有技术的问题,还必须限定使得虚拟机流量只流入本地snat,而虚拟机南北流量集中流向网络节点是通过ovs流表将其通过br-tun端点经tunnel网络转发至对端br-tun端点,所以所述限定虚拟机南北流量流向须在ovs的br-tun流表中进行修改;11、所述的步骤s2,具体又包括以下步骤:12、步骤s2-1,neutron-server接收到内部网络接入虚拟路由器请求,创建内部网络snat_port;13、步骤s2-2,neutron-openvswitch-agent对snat_port进行ovs绑定时修改br-tun的ovs流表规则,在table 22中添加丢弃snat_port的arp响应报文的规则;14、步骤s2-3,在br-tun的ovs流表table 1中添加丢弃目的mac地址为snat_port对应mac地址的规则;15、步骤s3,网卡链路状态检测16、实时检测计算节点上外部网络绑定的物理端口链路状态,在链路状态断开时,使本节点虚拟机通过路由连接外网的流量导向其他正常节点,保证虚拟机南北流量快速恢复,增强网络可靠性。17、所述的步骤s1,具体又包括以下步骤:18、步骤s1-1,修改neutron-server数据库的routers表,增加一个ex_network字段表示虚拟路由器对应的外部网络的uuid;19、步骤s1-2,neutron-server创建虚拟机路由器时,不再创建外部网关,而是将外部网络的uuid和其他属性记录入routers表中;20、步骤s1-3,各计算节点的neutron-l3-agent发现新建的虚拟路由后,获取虚拟路由器的信息,向neutron-server发起创建本节点外部网关的请求,请求中至少包含本节点neutron-l3-agent的uuid和该虚拟路由器的外部网络的uuid;21、步骤s1-4,neutron-server接收到各计算节点的neutron-l3-agent发起的创建外部网关的请求,将请求中节点的neutron-l3-agent的uuid作为port的device_id属性,用于区别每个gw_port所属的节点,向核心插件ml2发起创建port,并将port信息分别返回给各计算节点的neutron-l3-agent;22、步骤s1-5,各计算节点的neutron-l3-agent接收到创建本节点外部网关的返回后,创建各计算节点本地的snat网络命名空间,将各自的外部网关作为外部网关加入本地的snat网络命名空间,并将其作为snat的源地址写入本地的snat网络命名空间的iptables规则中。23、所述的步骤s3,具体又包括以下步骤:24、步骤s3-1,查询本计算节点上的分布式snat路由是否已连接内部网络,如果是则进行步骤s3-2,如果否则继续步骤s3-1;25、步骤s3-2,查询本计算节点上外部网络绑定的物理端口名称;26、步骤s3-3,使用系统命令(如ethtool)查询上述物理端口的链路状态;27、步骤s3-4,如果上述物理端口的链路状态为断开,删除br-tun的ovs流表中table22丢弃snat_port的arp响应报文的规则,删除br-tun的ovs流表table 1中丢弃目的mac地址为snat_port对应mac地址的规则,使本节点虚拟机的南北流量可以到达网络节点,继续步骤s3-2;28、步骤s3-5,如果上述物理端口的链路状态为正常,则查询br-tun的ovs流表中是否存在丢弃snat_port的arp响应报文的规则和丢弃目的mac地址为snat_port对应mac地址的规则,如果不存在则添加规则;如果存在,则继续步骤s3-2。29、本发明的有益效果是:30、与现有技术相比,本发明关键发明点在于:1)、通过所述创建分布式snat的虚拟路由器在每个计算节点上都部署snat网络命名空间,使未绑定浮动ip的虚拟机可以通过所在节点的snat连接外部网络,解决集中式snat带来的负载高、网络瓶颈、资源浪费、故障概率高等问题;2)、通过所述限定虚拟机南北流量流向,修改ovs流表规则,丢弃tunnel网络上虚拟机出外网的流量,解决计算节点与网络节点之间的tunnel网络承担较大流量的问题;3)、网卡链路状态检测实时检查本节点外部网络绑定的物理端口链路状态,发生网卡链路意外断开情况时快速修改ovs流表规则,使本节点虚拟机出外网的流量可自动转向其他正常节点,无需snat整体迁移,解决snat故障迁移慢问题并提高系统整体网络可靠性。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1