System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及云网络,特别涉及一种基于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静
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重本文档来自技高网...
【技术保护点】
1.一种基于Openstack的虚拟IP实现方法,其特征在于,包括如下步骤:
2.如权利要求1所述的基于Openstack的虚拟IP实现方法,其特征在于,在所述步骤S3中,所述源IP地址为所述虚拟地址VIP;所述源MAC地址为VIP所绑定虚拟机的MAC地址。
3.如权利要求1所述的基于Openstack的虚拟IP实现方法,其特征在于,在所述步骤S4中,所述Allow_address_pair属性,包括:
4.如权利要求3所述的基于Openstack的虚拟IP实现方法,其特征在于,在所述步骤S4中,在Allow_address_pair数据模型中增加active属性,利用获取到的源IP地址和关联的源MAC地址,通过比对MAC地址,设置active属性值。
5.如权利要求4所述的基于Openstack的虚拟IP实现方法,其特征在于,如果MAC地址相同,则设置active属性值为True;如果MAC地址不同,则设置active属性值为False。
6.如权利要求5所述的基于Openstack的虚拟IP实现方法,其特征在于,当检
7.如权利要求6所述的基于Openstack的虚拟IP实现方法,其特征在于,当相关服务重启时,根据持久化的数据自动恢复VIP的静态ARP配置。
8.如权利要求1所述的基于Openstack的虚拟IP实现方法,其特征在于,在所述步骤S5中,当虚拟地址VIP漂移到新虚拟机时,新虚拟机主动发送免费ARP报文由,OpenvSwitch重新捕获免费ARP报文,切换VIP所关联的MAC地址。
9.如权利要求1所述的基于Openstack的虚拟IP实现方法,其特征在于,在所述步骤S5之后,还包括如下步骤:
10.如权利要求1所述的基于Openstack的虚拟IP实现方法,其特征在于,拦截VIP的免费ARP报文的流表由所述Ryu控制器预先编排,当接收到虚拟地址VIP发送的免费ARP报文时,拦截该免费ARP报文送至Ryu控制器,并进一步通知Neutron Server服务器。
...【技术特征摘要】
1.一种基于openstack的虚拟ip实现方法,其特征在于,包括如下步骤:
2.如权利要求1所述的基于openstack的虚拟ip实现方法,其特征在于,在所述步骤s3中,所述源ip地址为所述虚拟地址vip;所述源mac地址为vip所绑定虚拟机的mac地址。
3.如权利要求1所述的基于openstack的虚拟ip实现方法,其特征在于,在所述步骤s4中,所述allow_address_pair属性,包括:
4.如权利要求3所述的基于openstack的虚拟ip实现方法,其特征在于,在所述步骤s4中,在allow_address_pair数据模型中增加active属性,利用获取到的源ip地址和关联的源mac地址,通过比对mac地址,设置active属性值。
5.如权利要求4所述的基于openstack的虚拟ip实现方法,其特征在于,如果mac地址相同,则设置active属性值为true;如果mac地址不同,则设置active属性值为false。
6.如权利要求5所述的基于openst...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。