本发明涉及网络虚拟化,尤其涉及一种基于ovs的虚拟化网络ip地址发现的方法及系统。
背景技术:
1、云计算系统以虚拟化技术为基础,通过将计算机的物理资源抽象和模拟为若干逻辑资源,虚拟出若干个虚拟机,可以同时给多人使用,节约能源,提高系统资源利用率。云计算平台中计算资源以vm为基本单位向用户提供,vm之间通过虚拟网络进行连接,虚拟化环境中ovs(openvswitch)是最具代表性同时最被广泛使用的虚拟交换机实现。ovs使用openflow协议作为控制平面与数据平面之间交互的标准协议,由控制平面通过编程openflowpipeline来实现数据平面的各种功能(例如转发,分布式防火墙等)。虚拟化平台中的每个虚拟机都需要通过ip网络协议与网络中的其他节点通信,因此虚拟机网络ip地址的获取、探测、分配和管理是云计算系统的基础。
2、此外云平台中许多重要的功能都依赖管理平面能够获取虚拟机网卡与ip地址的对应关系,以下发实际的控制规则,最常见的例如虚拟分布式防火墙(dfw)的实现,源地址arp/ip仿冒验证等都需要获取准确的源地址。
3、在实际生产环境中有两种类型的ip地址管理方式:
4、1)通过云平台内部提供的dhcp等动态地址管理协议(或结合定制化ipam);
5、2)静态配置;
6、3)通过用户自行管理的云平台外部dhcp等动态地址管理模块进行地址管理。
7、在1)这种场景中属于云平台内部功能模块,较容易获取vm虚拟网卡的ip地址;但是在2)3)这两种场景下,无法直接获取vm虚拟网卡地址。
8、在使用ovs作为虚拟网络交换机的环境中常见的ip地址发现方法被称作dhcpsnoop,其实现原理为:
9、1.通过openflow向ovs数据平面下发dhcp snoop流表项;
10、2.vm虚拟端口发送出的dhcp数据包被通过openflow送到控制器
11、3.openflow控制器通过解析ip续约信息,获取到vm虚拟端口的ip地址信息,通知云计算管理平面。
12、dhcp snoop方案在针对使用dhcp进行地址管理,且使用默认dhcp端口的场景下可以学习到vm端口i p地址,但是vm内部使用静态i p配置的场景,基于dhcpsnoop的方法行不通,或不通过dhcp管理i p地址管理的场景无法生效,不是一种通用的方案。
13、还有类似的使用基于arp学习的ip地址发现,类似以上方式,不同点在于仅向openflowcontroller发送arp报文,arp学习方案可以比较好的解决静态ip配置场景的ip地址发现问题,但其存在的问题是:地址学习强依赖于arp报文的发送,在vm内部使用静态arp的场景,vm内部也不会有arp发出,无法通过基于arp的地址发现,或者流量负载较高的场景,也会导致vm内部不往外发arp从而无法使用基于arp的ip地址发现,即虚拟机在特定场景下(静态arp配置)无法学习到vm内部所有有效ip地址。
14、以上dhcp snoop方案及基于arp学习的ip地址发现的两种方案在vmvnic内部存在l3转发逻辑的场景下、不同vm内部网络,不同的vm端口地址配置/arp配置方式等场景下,均无法发现vm内部所有ip地址,例如虚拟化平台上部署容器平台,vm内的容器通过路由访问其他vm之上的容器。
技术实现思路
1、为了解决现有技术中在vmvnic内部存在l3转发逻辑或者不同vm内部网络,不同的vm端口地址配置/arp配置方式等的场景下,无法发现vm内部所有ip地址的缺陷,本技术提出了一种基于ovs的虚拟化网络ip地址发现的方法及系统。
2、本技术的第一方面提供了一种基于ovs的虚拟化网络ip地址发现的方法,该方法具体可以包括:
3、初始化ovs工作流程;
4、获取数据平面学习到的ip地址映射表项;
5、本地控制器缓存ip地址映射表项并进行过滤;
6、将过滤完成的新ip地址映射表发送至控制平面的集中控制器;
7、构建全局ip地址映射表,实现虚拟化网络ip地址发现。
8、于本技术第一方面的一种可能实现方式中,通过openflow控制器初始化ovs工作流程包括:
9、各个节点的openflow控制器初始化ovs工作流程,并通过预设的openflow协议向ovs下发学习流表。
10、于本技术第一方面的一种可能实现方式中,获取数据平面学习到的ip地址映映射表项包括:
11、运行定时任务,根据预设定时时间获取ovs学习流表的学习结果;
12、在ovs学习流表接收到vm端口的ip数据包的情况下,更新ip数据包中ip地址与端口映射关系;
13、根据映射关系,更新并获取ip地址映射表。
14、基于openflow控制器结合ovs原生的流表学习功能的ip地址发现机制
15、于本技术第一方面的一种可能实现方式中,本地控制器缓存ip地址映射表项并进行过滤包括:
16、比较ovs流表中获取到的ip地址映射与本地节点上缓存的原始ip地址映射进行项目比较;
17、若项目在ovs流表中获取到的ip地址映射中存在,更新或添加本地缓存的原始ip地址映射表项;
18、若项目在ovs流表中获取到的ip地址映射中不存在,判定本地缓存的原始ip地址已过期,并删除原始ip地址映射。
19、于本技术第一方面的一种可能实现方式中,本地控制器缓存ip地址映射表项并进行过滤还包括:
20、清除ovs流表中的无效字段,获取过滤完成的新ip地址映射表。
21、于本技术第一方面的一种可能实现方式中,将过滤完成的新ip地址映射表发送至控制平面的集中控制器包括:
22、根据新ip地址映射表获取虚拟网络接口信息和/或预留字段、构建集中控制器所需的数据结构,发送至控制平面的集中控制器。
23、于本技术第一方面的一种可能实现方式中,比较ovs中获取到的ip地址映射与本地节点上缓存的原始ip地址映射,获取比较结果还包括:
24、在本地节点上缓存的原始ip地址映射存在的情况下,将原始ip地址映射更新至控制平面的集中控制器。
25、于本技术第一方面的一种可能实现方式中,构建全局ip地址映射表,实现虚拟化网络ip地址发现包括:
26、在集中控制器接收到收到任意节点控制器上报的新ip地址映射条目的情况下,判断新ip地址映射条目是否已经存在;
27、若否,将新ip地址加入全局ip地址映射表;
28、若是,判断新ip地址映射条目的host_uuid在集中控制器中是否存在;
29、若否,则判定为发生ip地址迁移,更新集中控制器缓存中的新ip地址与端口及主机的对应关系;
30、若是,判定为超时,清除新ip地址映射条目。
31、本技术的第二方面提供了一种应用于前述第一方面任一基于ovs的虚拟化网络ip地址发现的方法的可能实现方式中,该系统包括:
32、初始化单元,用于初始化ovs工作流程;
33、获取单元,用于获取数据平面学习到的ip地址映射表项;
34、过滤单元,用于本地控制器缓存所述ip地址映射表项并进行过滤;
35、发送单元,用于将过滤完成的新ip地址映射表发送至控制平面的集中控制器;
36、地址发现单元,用于构建全局ip地址映射表,实现虚拟化网络ip地址发现
37、本技术的第三方面提供了一种电子设备,包括:
38、存储器,所述存储器用于存储处理程序;
39、处理器,所述处理器执行所述处理程序时实现如前述第一方面所述的基于ovs的虚拟化网络ip地址发现的方法。
40、本技术的第四方面可读存储介质,可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如前述第一方面所述的基于ovs的虚拟化网络ip地址发现的方法
41、通过本技术提出的技术方案,具备以下有益技术效果:
42、1.基于i p数据流量进行虚拟机网卡发出的流量的i p地址学习,因此不管网卡内部是l2/l3,其所有srci p地址都必然可以学习到,本技术方案可以支持vm内流量通过l2/l3网络连通外部场景下,vm内部所有i p地址的学习,不依赖vm内部网络模型:;
43、2.支持vm内部地址通过内部/外部dhcp,静态i p,静态arp等各种网络配置下的ip地址发现,不依赖vm内部接口的地址分配管理方式。