一种基于Openstack的虚拟IP实现方法与流程

文档序号:36998418发布日期:2024-02-09 12:40阅读:11来源:国知局
一种基于Openstack的虚拟IP实现方法与流程

本发明涉及云网络,特别涉及一种基于openstack的虚拟ip实现方法。


背景技术:

1、openstack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。neutron是一个用python写的分布式软件项目,用来实现openstack中的虚拟网络服务,实现软件定义网络。为了降低网络节点的负载,同时提高可扩展性,openstack自juno版本开始正式引入了dvr(distributed virtual router,分布式路由)特性。

2、在openstack neutron dvr里会记录当前vpc(virtual private cloud,私有网络)下所有vm(virtual machine,虚拟机)的静态arp(address resolution protoco,地址解析协议)信息,因此dvr在承载三层转发时,直接查询静态arp表项而无需触发arp报文去学习目标的mac地址,即使触发了arp学习,也会在openvswitch上被流表丢弃,即:当前的机制是禁止dvr主动向外发送arp报文来学习目标mac。open vswitch是一个开源的虚拟交换机实现。广泛应用在云计算行业,为网络管理员提供虚拟云主机之间和之内的流量可见性与可控性。

3、通常vip(虚拟ip地址)是通过创建一个neutron port(虚拟网口)预留出一个ip地址,将这个ip地址视作vip。vip关联vm时,对应设置vm的neutron port的allow_address_pair属性。而dvr里记录的vip静态arp配置中,其关联的mac地址则为vip neutron port自身的mac,无法感知vip绑定到哪台vm。

4、图1为现有openstack vpc网络模型中跨子网(三层)访问vip的数据流量模型,具体如下:

5、(1)通常会选择vpc下某个子网创建对应的neutron port,其分配的ip地址则作为vip。

6、(2)在dvr里配置的vip静态arp,其中的mac地址为vip对应neutron port的mac地址。

7、(3)跨子网访问vip时,执行三层转发,流量先送达默认网关(即dvr),在dvr里查询vip的静态arp配置,更改目的mac为记录的mac,再送至openvswitch转发到目的(可能在同节点也可能在不同节点)。

8、然而上述的技术方案存在如下问题:

9、现有的openstack neutron dvr里配置的vip的静态arp,其映射的mac地址并非是vip所绑定的虚拟机vm的mac地址,同时更不会随着vip的漂移而及时更新准确的静态arp配置,进而导致无法跨子网(三层)访问vip。


技术实现思路

1、本发明的目的旨在至少解决所述技术缺陷之一。

2、为此,本发明的目的在于提出一种基于openstack的虚拟ip实现方法,能够实现跨三层访问vip的能力。

3、为了实现上述目的,本发明的实施例提供一种基于openstack的虚拟ip实现方法,包括如下步骤:

4、步骤s1,选择私有网络vpc下的子网创建对应的虚拟网口neutron port,将对所述neutron port分配的ip地址作为虚拟地址vip;

5、步骤s2,将虚拟地址vip绑定到虚拟机vm上,通过虚拟地址vip发出免费arp报文,在计算节点openvswitch网桥上增加拦截vip的免费arp报文的流表,并发送至neutron ovsagent组件的ryu控制器;

6、步骤s3,所述ryu控制器捕获到所述虚拟地址vip的免费arp报文,并从所述免费arp报文中提取出源ip地址和关联的源mac地址,发送至neutron server服务器;

7、步骤s4,所述neutron server服务器更新vip所关联的所有neutron port的allow_address_pair属性,构造静态apr数据;

8、步骤s5,由neutron l3 agent组件操作分布式路由dvr,配置vip的静态arp数据,在静态arp数据中,mac地址为vip所绑定的vm mac地址,当vip出现漂移时,更新正确的vmmac地址。

9、进一步,在所述步骤s3中,所述源ip地址为所述虚拟地址vip;所述源mac地址为vip所绑定虚拟机的mac地址。

10、进一步,在所述步骤s4中,所述allow_address_pair属性,包括:

11、port_id:关联的neutron port uuid;

12、mac_address:关联的neutron port mac地址,作为虚拟机vm的mac地址;

13、ip_address:虚拟地址vip;

14、network_id:vip所属的网络uuid;

15、active:标识vip是否绑定在此port或vm。

16、进一步,在所述步骤s4中,在allow_address_pair数据模型中增加act ive属性,利用获取到的源ip地址和关联的源mac地址,通过比对mac地址,设置act ive属性值。

17、进一步,如果mac地址相同,则设置active属性值为true;如果mac地址不同,则设置active属性值为false。

18、进一步,当检测到active属性值为true时,则表示vip绑定在此虚拟机,数据存入数据库并进行持久化。

19、进一步,当相关服务重启时,根据持久化的数据自动恢复vip的静态arp配置。

20、进一步,在所述步骤s5中,当虚拟地址vip漂移到新虚拟机时,新虚拟机主动发送免费arp报文由,openvswitch重新捕获免费arp报文,切换vip所关联的mac地址。

21、进一步,在所述步骤s5之后,还包括如下步骤:

22、步骤s6,跨子网访问vip时,执行三层转发,流量先送达分布式路由dvr,在dvr里查询vip的静态arp配置,更改目的mac地址为vip所绑定的vm mac地址,再送至openvswitch转发到目的节点。

23、进一步,拦截vip的免费arp报文的流表由所述ryu控制器预先编排,当接收到虚拟地址vip发送的免费arp报文时,拦截该免费arp报文送至ryu控制器,并进一步通知neutronserver服务器。

24、根据本发明实施例的基于openstack的虚拟ip实现方法,具有以下有益效果:

25、(1)捕获免费arp,精准关联mac:vip绑定到虚机后主动发送免费arp,openvswitch捕获免费arp报文,精准提取vip及其关联的mac地址。

26、(2)vip漂移,快速切换mac:vip漂移到新虚机,新虚机主动发送免费arp,openvswitch重新捕获免费arp报文,快速切换vip所关联的mac地址。

27、(3)跨三层访问vip:精准提取到<vip,mac>信息,配置到dvr实例,实现跨三层访问vip的能力。

28、(4)数据持久化,服务重启自动恢复:在allow_address_pair数据模型中增加active属性,利用精准获取到的<vip,mac>信息,通过比对mac地址,相应地设置active属性值为true或false,为true则表明vip绑定在此虚机,数据存入db做持久化,相关服务重启时,可根据持久化数据自动恢复vip的静态arp配置。

29、本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1