CN116708357B - 基于ovs的虚拟化网络ip地址发现的方法及系统 - Google Patents
基于ovs的虚拟化网络ip地址发现的方法及系统 Download PDFInfo
- Publication number
- CN116708357B CN116708357B CN202310675963.0A CN202310675963A CN116708357B CN 116708357 B CN116708357 B CN 116708357B CN 202310675963 A CN202310675963 A CN 202310675963A CN 116708357 B CN116708357 B CN 116708357B
- Authority
- CN
- China
- Prior art keywords
- address
- ovs
- address mapping
- mapping table
- discovery
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000013507 mapping Methods 0.000 claims abstract description 142
- 238000001914 filtration Methods 0.000 claims abstract description 23
- 230000005012 migration Effects 0.000 claims description 10
- 238000013508 migration Methods 0.000 claims description 10
- 230000003068 static effect Effects 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000003993 interaction Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 101000720078 Sagartia rosea DELTA-sagatoxin-Srs1a Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/255—Maintenance or indexing of mapping tables
- H04L61/2553—Binding renewal aspects, e.g. using keep-alive messages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2517—Translation of Internet protocol [IP] addresses using port numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5046—Resolving address allocation conflicts; Testing of addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5053—Lease time; Renewal aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提出了一种基于OVS的虚拟化网络IP地址发现的方法及系统,该种IP地址发现方法包括:初始化OVS工作流程;获取数据平面学习到的IP地址映射表项;本地控制器缓存所述IP地址映射表项并进行过滤;将过滤完成的新IP地址映射表发送至控制平面的集中控制器;构建全局IP地址映射表,实现虚拟化网络IP地址发现。通过本申请提出的技术方案使得基于IP数据流量进行虚拟机网卡发出的流量的IP地址学习,因此不管网卡内部是L2/L3,其所有srcIP地址都必然可以学习到,同时支持vm内部地址通过内部/外部dhcp、静态IP、静态Arp等各种网络配置下的IP地址发现,不依赖vm内部接口的地址分配管理方式。
Description
技术领域
本发明涉及网络虚拟化技术领域,尤其涉及一种基于OVS的虚拟化网络IP地址发现的方法及系统。
背景技术
云计算系统以虚拟化技术为基础,通过将计算机的物理资源抽象和模拟为若干逻辑资源,虚拟出若干个虚拟机,可以同时给多人使用,节约能源,提高系统资源利用率。云计算平台中计算资源以vm为基本单位向用户提供,vm之间通过虚拟网络进行连接,虚拟化环境中OVS(OpenVswitch)是最具代表性同时最被广泛使用的虚拟交换机实现。OVS使用OpenFlow协议作为控制平面与数据平面之间交互的标准协议,由控制平面通过编程OpenFlowPipeline来实现数据平面的各种功能(例如转发,分布式防火墙等)。虚拟化平台中的每个虚拟机都需要通过IP网络协议与网络中的其他节点通信,因此虚拟机网络IP地址的获取、探测、分配和管理是云计算系统的基础。
此外云平台中许多重要的功能都依赖管理平面能够获取虚拟机网卡与IP地址的对应关系,以下发实际的控制规则,最常见的例如虚拟分布式防火墙(DFW)的实现,源地址Arp/IP仿冒验证等都需要获取准确的源地址。
在实际生产环境中有两种类型的IP地址管理方式:
1)通过云平台内部提供的dhcp等动态地址管理协议(或结合定制化IPam);
2)静态配置;
3)通过用户自行管理的云平台外部dhcp等动态地址管理模块进行地址管理。
在1)这种场景中属于云平台内部功能模块,较容易获取vm虚拟网卡的IP地址;但是在2)3)这两种场景下,无法直接获取vm虚拟网卡地址。
在使用OVS作为虚拟网络交换机的环境中常见的IP地址发现方法被称作dhcpsnoop,其实现原理为:
1.通过OpenFlow向OVS数据平面下发dhcp snoop流表项;
2.vm虚拟端口发送出的dhcp数据包被通过OpenFlow送到控制器
3.Openflow控制器通过解析IP续约信息,获取到vm虚拟端口的IP地址信息,通知云计算管理平面。
dhcp snoop方案在针对使用dhcp进行地址管理,且使用默认dhcp端口的场景下可以学习到vm端口I P地址,但是vm内部使用静态I P配置的场景,基于dhcpsnoop的方法行不通,或不通过dhcp管理I P地址管理的场景无法生效,不是一种通用的方案。
还有类似的使用基于Arp学习的IP地址发现,类似以上方式,不同点在于仅向OpenFlowController发送Arp报文,Arp学习方案可以比较好的解决静态IP配置场景的IP地址发现问题,但其存在的问题是:地址学习强依赖于Arp报文的发送,在vm内部使用静态Arp的场景,vm内部也不会有Arp发出,无法通过基于Arp的地址发现,或者流量负载较高的场景,也会导致vm内部不往外发Arp从而无法使用基于Arp的IP地址发现,即虚拟机在特定场景下(静态Arp配置)无法学习到vm内部所有有效IP地址。
以上dhcp snoop方案及基于Arp学习的IP地址发现的两种方案在vmvnic内部存在L3转发逻辑的场景下、不同vm内部网络,不同的vm端口地址配置/arp配置方式等场景下,均无法发现vm内部所有IP地址,例如虚拟化平台上部署容器平台,vm内的容器通过路由访问其他vm之上的容器。
发明内容
为了解决现有技术中在vmvnic内部存在L3转发逻辑或者不同vm内部网络,不同的vm端口地址配置/arp配置方式等的场景下,无法发现vm内部所有IP地址的缺陷,本申请提出了一种基于OVS的虚拟化网络IP地址发现的方法及系统。
本申请的第一方面提供了一种基于OVS的虚拟化网络IP地址发现的方法,该方法具体可以包括:
初始化OVS工作流程;
获取数据平面学习到的IP地址映射表项;
本地控制器缓存IP地址映射表项并进行过滤;
将过滤完成的新IP地址映射表发送至控制平面的集中控制器;
构建全局IP地址映射表,实现虚拟化网络IP地址发现。
于本申请第一方面的一种可能实现方式中,通过OpenFlow控制器初始化OVS工作流程包括:
各个节点的OpenFlow控制器初始化OVS工作流程,并通过预设的OpenFlow协议向OVS下发学习流表。
于本申请第一方面的一种可能实现方式中,获取数据平面学习到的IP地址映映射表项包括:
运行定时任务,根据预设定时时间获取OVS学习流表的学习结果;
在OVS学习流表接收到vm端口的IP数据包的情况下,更新IP数据包中IP地址与端口映射关系;
根据映射关系,更新并获取IP地址映射表。
基于OpenFlow控制器结合OVS原生的流表学习功能的IP地址发现机制
于本申请第一方面的一种可能实现方式中,本地控制器缓存IP地址映射表项并进行过滤包括:
比较OVS流表中获取到的IP地址映射与本地节点上缓存的原始IP地址映射进行项目比较;
若项目在OVS流表中获取到的IP地址映射中存在,更新或添加本地缓存的原始IP地址映射表项;
若项目在OVS流表中获取到的IP地址映射中不存在,判定本地缓存的原始IP地址已过期,并删除原始IP地址映射。
于本申请第一方面的一种可能实现方式中,本地控制器缓存IP地址映射表项并进行过滤还包括:
清除OVS流表中的无效字段,获取过滤完成的新IP地址映射表。
于本申请第一方面的一种可能实现方式中,将过滤完成的新IP地址映射表发送至控制平面的集中控制器包括:
根据新IP地址映射表获取虚拟网络接口信息和/或预留字段、构建集中控制器所需的数据结构,发送至控制平面的集中控制器。
于本申请第一方面的一种可能实现方式中,比较OVS中获取到的IP地址映射与本地节点上缓存的原始IP地址映射,获取比较结果还包括:
在本地节点上缓存的原始IP地址映射存在的情况下,将原始IP地址映射更新至控制平面的集中控制器。
于本申请第一方面的一种可能实现方式中,构建全局IP地址映射表,实现虚拟化网络IP地址发现包括:
在集中控制器接收到收到任意节点控制器上报的新IP地址映射条目的情况下,判断新IP地址映射条目是否已经存在;
若否,将新IP地址加入全局IP地址映射表;
若是,判断新IP地址映射条目的host_uuid在集中控制器中是否存在;
若否,则判定为发生IP地址迁移,更新集中控制器缓存中的新IP地址与端口及主机的对应关系;
若是,判定为超时,清除新IP地址映射条目。
本申请的第二方面提供了一种应用于前述第一方面任一基于OVS的虚拟化网络IP地址发现的方法的可能实现方式中,该系统包括:
初始化单元,用于初始化OVS工作流程;
获取单元,用于获取数据平面学习到的IP地址映射表项;
过滤单元,用于本地控制器缓存所述IP地址映射表项并进行过滤;
发送单元,用于将过滤完成的新IP地址映射表发送至控制平面的集中控制器;
地址发现单元,用于构建全局IP地址映射表,实现虚拟化网络IP地址发现
本申请的第三方面提供了一种电子设备,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现如前述第一方面所述的基于OVS的虚拟化网络IP地址发现的方法。
本申请的第四方面可读存储介质,可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如前述第一方面所述的基于OVS的虚拟化网络IP地址发现的方法
通过本申请提出的技术方案,具备以下有益技术效果:
1.基于I P数据流量进行虚拟机网卡发出的流量的I P地址学习,因此不管网卡内部是L2/L3,其所有srcI P地址都必然可以学习到,本技术方案可以支持vm内流量通过L2/L3网络连通外部场景下,vm内部所有I P地址的学习,不依赖vm内部网络模型:;
2.支持vm内部地址通过内部/外部dhcp,静态I P,静态Arp等各种网络配置下的IP地址发现,不依赖vm内部接口的地址分配管理方式。
附图说明
图1根据本申请的实施例,示出了一种基于OVS的虚拟化网络IP地址发现的方法的流程示意图;
图2根据本申请的实施例,示出了数据平面OVS流表匹配学习流表的学习过程示意图;
图3根据本申请的实施例,示出了控制平面更新IP地址映射关系的具体流程示意图;
图4根据本申请的实施例,示出了一种基于OVS的虚拟化网络IP地址发现的系统;
图5根据本申请的实施例,关于OpenFlow控制器结合OVS的交互的系统示意图。
具体实施方式
OpenFlow将传统的互联网改造成为了动态可变的软件定义互联网(SoftwareDefined Networking),一个OpenFlow的交换设备至少由下面三个部分组成:
Flow Table:Flow Table里面的每个条目都会与一个动作相关联,来告诉网络交换设备来如何处理与这个条目相关联的data Flow;
Secure Channel:用于连接网络交换设备和远程网络控制器,在控制器和网络交换设备之间互相发送命令和数据包;
OpenFlow Protocol(OpenFlow协议):提供一个开放标准统一的接口,使得控制器和网络交换设备之间可以相互通信。
OpenFlow的流表Flow Table在OVS中充当传统物理交换机的MAC表和路由表的角色,数据包在交换机内部端口间的转发规则由Flow Table中的流表项决定,OVS中的FlowTable由多个流表项组成,匹配域是流表匹配的关键字段,主要包括入端口号和报文各层头字段信息。通过控制Flow Table能够实现网络流量的分区,将网络流量划分为不同的数据流,这些数据流能被归于不同的组且相互隔离,能够按照需要来处理和控制,通过OpenFlow协议,网络交换设备以外的控制器就可以对网络交换设备的Flw Table进行编程和管理。FIowTable对远程访问控制的支持,将Flow Table的配置与管理从网络交换设备本身中剥离出来,也使得对整个网络中FIowTable进行集中控制与管理成为可能,从而将物理网络和逻辑网络的定义有效分离。
为了解决现有技术中采用dhcp snoop方案或者Arp学习方案均无法实现在vmvnic内部存在L3转发逻辑的场景下,无法发现vm内部所有IP地址。例如地,虚拟化平台上部署容器平台,vm内的容器通过路由访问其他vm之上的容器的技术缺陷,本申请提出了一种本申请提出了一种基于OVS的虚拟化网络IP地址发现的方法及系统。如图1所示,具体地示出了基于OVS的虚拟化网络IP地址发现的方法的流程示意图,于该种基于OVS的虚拟化网络IP地址发现的方法具体可以包括:
步骤100:初始化OVS工作流程。可以理解的是,OVS支撑整个数据中心虚拟网络的运转,OVS的数据面负责数据的交换工作,可以在每个报文级别执行操作,在数据中心网络中,基于OpenFlow与Controller的交互,各个节点上的OpenFlow控制器通过向OVS交换机下发学习流表,指导报文转发。
步骤200:获取数据平面学习到的IP地址映射表项。可以理解的是,通过OVS下发的学习流表以及IP地址与端口学习逻辑,使得在接收到来自vm端口的IP数据包后,在学习流表中更新其已经保存的IP地址映射表中的IP地址与端口映射关系。
步骤300:本地控制器缓存所述IP地址映射表项并进行过滤。可以理解的是,各个节点上的OpenFlow控制器定时获取OVS上学习到的flow流表即IP地址的映射表项,本地控制器根据其缓存的IP地址映射表项的及OVS上学习到的flow流表,对IP地址映射表项进行过滤。
步骤400:将过滤完成的新IP地址映射表发送至控制平面的集中控制器。可以理解的是,可以理解的是,将过期的IP地址以及流表中的无效字段清理后,保留学习到的流表中部分字段(包括duration字段,以及match字段,hostid字段等),构建集中控制器需要的数据结构,发送至集中控制器。
于本申请的一些实施例中,集中控制器合并各个节点收集到的vm端口与IP地址映射关系。
步骤500:构建全局IP地址映射表,实现虚拟化网络IP地址发现。可以理解的是,集中控制器根据各个节点上报数据进行进一步处理,获取全局IP地址映射关系。可以理解的是,对于从任意host发送的任一IP地址映射条目,集中控制其保存的所有数据包括:(host_uuid,OVSbr_name,vm_port_name,ofport,IP,learned_timeetc),通过集中控制器保存的数据以及缓存的IP地址映射条目,构建出全局IP地址映射表,并且处理如IP地址迁移,过期等场景下的IP地址映射条目的更新。
于本申请的一些实施例中,vm_port_name,ofport,IP可以分别与in_port/input_port,nw_src,vm_port_name可以对应为ofport的port name或者为in_port/input_port的port name;这里的ofport与in_port、IP可以为同nw_src。
于本申请的一些实施例中,IP地址迁移处理包括虚拟化环境中比较常见的vm迁移等场景下,特定IP地址可能先后出现在不同主机节点上,需要在IP地址发生漂移后更新IP地址与所在节点的对应关系。其他类似的场景有静态修改IP等。
于本申请的一些实施例中,IP地址超时包括在vm关机/移除,主机移除等场景下,学习到的地址需要进行超时处理,保证无效地址不会堆积与数据平面学习到的IP地址映射表项的缓存中。
于上述步骤100中,通过OpenFlow控制器初始化OVS工作流程包括:
各个节点的OpenFlow控制器初始化OVS工作流程,并通过预设的OpenFlow协议向OVS下发学习流表,OVS通过预设的OpenFlow协议作为控制平面与数据平面之间交互的标准协议,包括通过OpenFlow在正常运行的网络中自己定义一些特殊的规则,这些规则可以把物理网络切成若干不同的虚拟逻辑网络目的,对于网络交换设备包括交换机或者路由器等,最核心的信息都保存在Flow Table里面,OpenFlow的Pipeline定义了报文的匹配过程,给报文匹配过程可以被认为是初始化的过程,每个Pipeline都包含1个或多个Flow Table,匹配从Pipeline中的第一个Flow Table开始,然后按照Pipeline中Flow Table的序列依次进行,各个节点上的OpenFlow控制器依次向OVS下发学习流表,可以通过由控制平面通过编程OpenFlow Pipeline来实现数据平面的各种功能(例如转发,分布式防火墙等)
具体地,学习流表可以通过学习逻辑定时获取OVS学习流表的学习结果,关于学习逻辑的具体实现方式将在下述进行详述。
于上述步骤200中,获取数据平面学习到的IP地址映映射表项包括:
运行定时任务,根据预设定时时间获取OVS学习流表的学习结果;
在所述OVS学习流表接收到vm端口的IP数据包的情况下,更新所述IP数据包中IP地址与端口映射关系;
根据所述映射关系,更新并获取所述IP地址映射表。
可以理解的是,主机节点上的OpenFlow控制器可以通过运行定时任务,按照预设的定时时间拉取数据平面学习到的IP地址流表flow,以便从IP地址流表中获取IP地址与vm虚拟端口对应关系,根据对应关系更新IP数据包中IP地址与端口映射关系。
进一步地,数据平面直接学习到的flow包括:
Table=5,priority=100,duration=1.0s
in_port=10,
hard_timeout=300,
idle_timeout=100,
nw_src=10.10.10.12.
通过学习到的flow,可以按照如下步骤生成本地控制器缓存:
1)提取出其中的duration,in_port,nw_src字段;
2)根据flow所在的ovsbr以及in_port信息获取到vm以及vm port(vm_port)
3)添加host_uuid,最终组合出完整的缓存条目(in_port,vm_port,ovsbr_name,nw_src,duration,host_uuid),生成本地控制器缓存。
具体地,如图2所示,示出了数据平面OVS流表匹配学习流表的学习过程示意图,IP地址与端口学习逻辑包括:
table=10,
priority=100,IP,
actions=learn(table=5priority=100.hard timeout=300,idle timeout=100,IN_PORT,NXM_OF_IPV4_SRC)
通过上述学习逻辑学习到的IP地址与vm端口映射关系:n:1;
具体地,下述table=5为预设定时时间获取OVS学习流表的学习结果:
priority=100.duration=1.0s,in_port=10hard_timeout=300,idle_timeout=100
IPv4 addr=10.10.10.12,table=5priority=100,duration=2.0s,in_port=10,hard_timeout=300,idle_timeout=100,IPw4_addr=10.10.10.2……
其中包含每一对如端口与IP地址映射以及其最后一次更新的时间(duration)。
于上述步骤300中,本地控制器缓存所述IP地址映射表项并进行过滤包括:
比较OVS流表中获取到的IP地址映射与本地节点上缓存的原始IP地址映射进行项目比较;
若项目在OVS流表中获取到的IP地址映射中存在,更新或添加本地缓存的原始IP地址映射表项;
具体地,若项目在OVS流表中获取到的IP地址映射中存在,但是在本地控制器的缓存中的原始IP地址映射不存在该项目,则判定为对应该项目的代表IP地址未被学习到,向本地缓存添加新的IP地址缓存条目。
具体地,若项目在OVS流表中获取到的IP地址映射中存在,且在本地控制器的缓存中的原始IP地址映射已经存在存在该项目,则代表IP地址已经在本地控制器上学习到,更新本地缓存中的learned_time字段与ofport字段对IP地址缓存条目进行更新。
若项目在OVS流表中获取到的IP地址映射中不存在,判定本地缓存的原始IP地址已过期,并删除原始IP地址映射。
可以理解的是,本地控制器对IP地址映射表项并进行过滤包括清除过期IP地址映射,对学习到的流表中的无效字段进行清理等。
具体地,清除过期IP地址映射:比较OVS中获取到的IP地址映射与节点上缓存的映射,若OVS中不存在,且节点上存在的项目,从本地控制器缓存中删除;其他类型,添加至本地缓存具体,具体步骤可以包括:
1.本地控制器获取OVSOpenFlow流表,仅获取学习到的OpenFlow table流表项条目,从流表项中提取出:(nw_src,input_port,duration)三个字段组成的元组;
2.在控制器IP地址缓存(IP,learned_time,ofport)中,根据OVS流表项提取的nw_src搜索,比较OpenFlow table流表项条目IP地址映射与本地节点上缓存的原始IP地址映射,获取的比较结果包括以下:
(1)若nw_src搜索到的IP地址映射条目,在控制器缓存中存在,且OVS流表项中存在,则代表该IP地址已经在本地控制器上学习到,更新本地缓存中的learned_time字段与ofport字段;
具体地,若nw_src搜索到的IP地址映射条目,在控制器缓存中存在,且OVS流表项中存在,即对于已存在的IP地址与端口映射条目,每次只需要更新其中的字段即可,最常见的更新将缓存中的duration字段更新为从数据平面学习到的duration字段即可等。
(2)若nw_src搜索到的IP地址映射条目,在本地控制器缓中不存在,但在OVS流表项中存在,则代表IP地址未被学习到,向本地缓存添加新的IP地址缓存条目;
若节点控制器定时任务拉到的本地学习所得流表包含如下项目:
Table=5,priority=100,duration=1.0s,in_port=10,hard_timeout=300,idle_timeout=100,nw_src=10.10.10.12.,而控制器缓存中不存在nw_src=10.10.10.12的缓存的IP地址映射条目,则代表IP地址未被学习到,将nw_src=10.10.10.12.添加为新的缓存条目。
(3)若nw_src搜索到的IP地址映射条目,控制器缓存中存在,且但OVS流表中不存在,则代表IP地址曾经被学习到过,但是已经发生了OVS流表项超时,此时需要清除控制器缓存中的该条目,即按照缓存失效进行处理。
具体地,若节点缓存中存在nw_src=10.10.10.12,拉取的ovs数据面学习到的流表中不存在包含nw_src=10.10.10.12字段的条目,这代表IP地址10.10.10.12在本地控制器上学习到,更新本地缓存中的learned_time字段与ofport字段。
于本申请的一些实施例中,若存在以上步骤中的(1)(3)两种类型的任一中更新,则需要将相关字段或者条目进一步向集中控制器更新。
于上述步骤300中,本地控制器缓存所述IP地址映射表项并进行过滤还包括:
清除OVS流表中的无效字段,获取过滤完成的新IP地址映射表。可以理解的是,对于流表中建立全局IP地址映射表无效的字段进行删除,保留学习到的流表中部分字段包括duration字段,以及match字段,hostid等。
于上述步骤400中,将过滤完成的新IP地址映射表发送至控制平面的集中控制器包括:
根据新IP地址映射表获取虚拟网络接口信息和/或预留字段、构建所述集中控制器所需的数据结构,发送至控制平面的所述集中控制器。
可以理解的是,节点控制器,根据经过初步清洗的节点IP缓存数据(IP,learned_time,ofport),进一步获取ofport对应bridge,vm端口名称等信息(可能包含其他可扩展信息,OVSbr_name,vmport_name,host_uuid为最小集合),并向集中控制器上报,并向集中控制器上报,集中控制器根据各个节点上报数据进行进一步处理,获取全局IP地址映射关系。
于上述步骤500中,构建全局IP地址映射表,实现虚拟化网络IP地址发现包括:在所述集中控制器接收到收到任意节点控制器上报的新IP地址映射条目的情况下,判断所述新IP地址映射条目是否已经存在;
若否,将所述新IP地址加入全局IP地址映射表;
若是,判断所述新IP地址映射条目的host_uuid在所述集中控制器中是否存在;
若否,则判定为发生IP地址迁移,更新集中控制器缓存中的新IP地址与端口及主机的对应关系;
若是,判定为超时,清除所述新IP地址映射条目。
可以理解的是,当收到任意节点控制器上报新IP地址映射条目后,当前集中控制器根据缓存对新IP地址映射条目是否存在的判断包括以下:
(1)若当前集中控制器缓存不存在包含该IP地址的条目,则加入全局IP地址映射表;
(2)若集中控制中某一IP地址映射已经存在:
i.若该次学习到的IP地址映射表项中的host_uuid与集中控制器缓存中的不一致,则判定为发生IP地址迁移,更新集中控制器缓存中的该IP地址与端口及主机的对应关系;
ii.若不满足条件i),且存在其他字段更新,则更新集中控制器IP映射缓存其他字段;
(3)对于集中控制器缓存中的任一IP映射,若同host发送IP映射表中不存在该信息,则清除该信息。即超时处理。
iii.集中控制器中的IP映射表项/条目维护一个定时器,每次节点控制器触发的表项更新时更新该计时器;
iv.定时清除计时器超时的IP地址映射条目。
具体地,如图3所示,示出了控制平面更新IP地址映射关系的具体流程示意图,具体包括:
步骤S1:系统初始化后,根据学习流表中包括的学习逻辑,定期拉取数据平面学习到的IP地址flow;
步骤S2:根据定时任务,判断获取的IP地址映射是否超时;
步骤S3:在IP地址映射的获取未超时的情况下,基于agent OpenFlow控制器从学习流表获取IP学习流;
步骤S4:判断是学习到的IP学习流中是否存在IP地址更新的情况;
步骤S5:agent预处理,将存在IP地址更新的IP地址映射条目发送至集中控制器;
步骤S6:集中控制器根据构建的全局IP地址映射表判断是否存在地址迁移;
若存在地址迁移,更新迁移IP地址的vm端口绑定关系,实现IP地址的迁移。
具体地,图4示出了一种基于OVS的虚拟化网络IP地址发现的系统,该种基于OVS的虚拟化网络IP地址发现的系统可以包括:
初始化单元001,用于初始化OVS工作流程;
获取单元002,用于获取数据平面学习到的IP地址映射表项;
过滤单元003,用于本地控制器缓存所述IP地址映射表项并进行过滤;
发送单元004,用于将过滤完成的新IP地址映射表发送至控制平面的集中控制器;
地址发现单元005,用于构建全局IP地址映射表,实现虚拟化网络IP地址发现。
该种基于OVS的虚拟化网络IP地址发现的系统,基于数据平面和控制平面实现,数据平面包括数据面使用OVS,基于OpenFlow与Controller交互;控制面包括:节点上的本地OpenFlow控制器;集中控制器,连接所有节点上的OpenFlow控制器,如图5所示,示出了关于OpenFlow控制器结合OVS的交互的系统示意图,包括基于OpenFlow与Controller交互,结合OVS原生的流表学习的IP发现系统。
可以理解的是,上述基于OVS的虚拟化网络IP地址发现的系统的各个功能模块执行与前述基于OVS的虚拟化网络IP地址发现的方法相同的步骤流程,在此不做赘述。
在本申请的一些实施例中,还提供了一种电子设备。该种电子设备中包含存储器和处理器,其中存储器用于对处理程序进行存储,处理器则根据指令对处理程序进行执行。当处理器对处理程序进行执行时,使得前述实施例中的基于OVS的虚拟化网络IP地址发现的方法得以实现。
在本申请的一些实施例中,还提供了一种可读存储介质,该种可读存储介质上存储有处理程序,使得前述实施例中的基于OVS的虚拟化网络IP地址发现的方法得以实现。
本申请提出的技术方案涉及方法、装置、系统、电子设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种基于OVS的虚拟化网络IP地址发现的方法,其特征在于,所述的方法包括:
通过各个节点的OpenFlow控制器初始化OVS工作流程,并通过预设的OpenFlow向OVS下发学习流表;
定时从所述学习流表中获取数据平面学习到的IP地址映射表项;
本地控制器缓存所述IP地址映射表项并进行过滤;
将过滤完成的新IP地址映射表发送至控制平面的集中控制器;
构建全局IP地址映射表,实现虚拟化网络IP地址发现。
2.根据权利要求1所述的一种基于OVS的虚拟化网络IP地址发现的方法,其特征在于,获取数据平面学习到的IP地址映射表项包括:
运行定时任务,根据预设定时时间获取OVS学习流表的学习结果;
在所述OVS学习流表接收到vm端口的IP数据包的情况下,更新所述IP数据包中IP地址与端口映射关系;
根据所述映射关系,更新并获取所述IP地址映射表。
3.根据权利要求1所述的一种基于OVS的虚拟化网络IP地址发现的方法,其特征在于,本地控制器缓存所述IP地址映射表项并进行过滤包括:
比较所述OVS流表中获取到的IP地址映射与本地节点上缓存的原始IP地址映射进行项目比较;
若所述项目在OVS流表中获取到的IP地址映射中存在,更新或添加本地缓存的原始IP地址映射表项;
若所述项目在OVS流表中获取到的IP地址映射中不存在,判定所述本地缓存的所述原始IP地址已过期,并删除所述原始IP地址映射。
4.根据权利要求3所述的一种基于OVS的虚拟化网络IP地址发现的方法,其特征在于,本地控制器缓存所述IP地址映射表项并进行过滤还包括:
清除所述OVS流表中的无效字段,获取过滤完成的新IP地址映射表。
5.根据权利要求3-4任一所述的一种基于OVS的虚拟化网络IP地址发现的方法,其特征在于,将过滤完成的新IP地址映射表发送至控制平面的集中控制器包括:
根据新IP地址映射表获取虚拟网络接口信息和/或预留字段、构建所述集中控制器所需的数据结构,发送至控制平面的所述集中控制器。
6.根据权利要求3所述的一种基于OVS的虚拟化网络IP地址发现的方法,其特征在于,比较所述OVS中获取到的IP地址映射与本地节点上缓存的原始IP地址映射,获取比较结果还包括:
在所述本地节点上缓存的原始IP地址映射存在的情况下,将所述原始IP地址映射更新至所述控制平面的所述集中控制器。
7.根据权利要求1所述的一种基于OVS的虚拟化网络IP地址发现的方法,其特征在于,构建全局IP地址映射表,实现虚拟化网络IP地址发现包括:
在所述集中控制器接收到任意节点控制器上报的新IP地址映射条目的情况下,判断所述新IP地址映射条目是否已经存在;
若否,将所述新IP地址加入全局IP地址映射表;
若是,判断所述新IP地址映射条目的host_uuid在所述集中控制器中是否存在;
若否,则判定为发生IP地址迁移,更新集中控制器缓存中的新IP地址与端口及主机的对应关系;
若是,判定为超时,清除所述新IP地址映射条目。
8.一种基于OVS的虚拟化网络IP地址发现的系统,应用于如权利要求1-7任一所述的基于OVS的虚拟化网络IP地址发现的方法,其特征在于,所述的系统包括:
初始化单元,用于初始化OVS工作流程;
获取单元,用于获取数据平面学习到的IP地址映射表项;
过滤单元,用于本地控制器缓存所述IP地址映射表项并进行过滤;
发送单元,用于将过滤完成的新IP地址映射表发送至控制平面的集中控制器;
地址发现单元,用于构建全局IP地址映射表,实现虚拟化网络IP地址发现。
9.一种电子设备,其特征在于,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现如权利要求1至7中任意一项所述的基于OVS的虚拟化网络IP地址发现的方法。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如权利要求1至7中任意一项所述的基于OVS的虚拟化网络IP地址发现的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310675963.0A CN116708357B (zh) | 2023-06-08 | 2023-06-08 | 基于ovs的虚拟化网络ip地址发现的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310675963.0A CN116708357B (zh) | 2023-06-08 | 2023-06-08 | 基于ovs的虚拟化网络ip地址发现的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116708357A CN116708357A (zh) | 2023-09-05 |
CN116708357B true CN116708357B (zh) | 2024-02-23 |
Family
ID=87840548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310675963.0A Active CN116708357B (zh) | 2023-06-08 | 2023-06-08 | 基于ovs的虚拟化网络ip地址发现的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116708357B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105612735A (zh) * | 2013-09-11 | 2016-05-25 | 微软技术许可有限责任公司 | 可靠地址发现高速缓存 |
CN106209634A (zh) * | 2015-04-30 | 2016-12-07 | 中兴通讯股份有限公司 | 地址映射关系的学习方法及装置 |
CN109240796A (zh) * | 2018-08-10 | 2019-01-18 | 新华三云计算技术有限公司 | 虚拟机信息获取方法及装置 |
CN111404843A (zh) * | 2020-03-05 | 2020-07-10 | 广东睿江云计算股份有限公司 | 一种iass网络平台下处理arp数据包的优化方法及其系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9781037B2 (en) * | 2015-09-15 | 2017-10-03 | Cisco Technology, Inc. | Method and apparatus for advanced statistics collection |
US11658933B2 (en) * | 2020-12-31 | 2023-05-23 | Juniper Networks, Inc. | Dynamically learning media access control and internet protocol addresses |
-
2023
- 2023-06-08 CN CN202310675963.0A patent/CN116708357B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105612735A (zh) * | 2013-09-11 | 2016-05-25 | 微软技术许可有限责任公司 | 可靠地址发现高速缓存 |
CN106209634A (zh) * | 2015-04-30 | 2016-12-07 | 中兴通讯股份有限公司 | 地址映射关系的学习方法及装置 |
CN109240796A (zh) * | 2018-08-10 | 2019-01-18 | 新华三云计算技术有限公司 | 虚拟机信息获取方法及装置 |
CN111404843A (zh) * | 2020-03-05 | 2020-07-10 | 广东睿江云计算股份有限公司 | 一种iass网络平台下处理arp数据包的优化方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116708357A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110392999B (zh) | 分布式计算系统中的虚拟过滤平台 | |
US10437775B2 (en) | Remote direct memory access in computing systems | |
US20230188598A1 (en) | Mirroring network traffic of virtual networks at a service provider network | |
CN104718723B (zh) | 用于虚拟网络中的联网和安全服务的框架 | |
CN109937401B (zh) | 经由业务旁路进行的负载均衡虚拟机的实时迁移 | |
CN106452857B (zh) | 生成配置信息的方法和网络控制单元 | |
CN113261240A (zh) | 使用可编程客户机进行多租户隔离 | |
US9876756B2 (en) | Network access method and device for equipment | |
US9621431B1 (en) | Classification techniques to identify network entity types and determine network topologies | |
CN109802985A (zh) | 数据传输方法、装置、设备及可读取存储介质 | |
JP2016158285A (ja) | 論理ルータ | |
US11546245B2 (en) | System and method for data route discovery through cross-connection tunnels | |
TWI577164B (zh) | 可縮放位址解析之技術 | |
CN113273142A (zh) | 可编程交换机的分流控制器控制 | |
JP2024503321A (ja) | 仮想化されたクラウド環境におけるレイヤ2ネットワークのインターネットグループ管理プロトコル(igmp) | |
CN110050447A (zh) | 一种数据处理方法、网络接口卡及服务器 | |
US11695681B2 (en) | Routing domain identifier assignment in logical network environments | |
CN113302898A (zh) | 将客户机-设备对等互联的虚拟路由控制器 | |
US9009782B2 (en) | Steering traffic among multiple network services using a centralized dispatcher | |
US10599532B2 (en) | Upgrade backup in virtualized computing environments | |
US9166947B1 (en) | Maintaining private connections during network interface reconfiguration | |
CN105490995A (zh) | 一种在nvo3网络中nve转发报文的方法和设备 | |
US9559937B2 (en) | Apparatus and method for relaying communication between nodes coupled through relay devices | |
US20160119188A1 (en) | End host physical connection on a switch port using multiple ethernet frames | |
CN116708357B (zh) | 基于ovs的虚拟化网络ip地址发现的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 8b, building 1, No. 48, Zhichun Road, Haidian District, Beijing 100098 Patentee after: Beijing Zhiling Haina Technology Co.,Ltd. Country or region after: China Address before: 8b, building 1, No. 48, Zhichun Road, Haidian District, Beijing 100098 Patentee before: Beijing zhilinghaina Technology Co.,Ltd. Country or region before: China |