掌桥专利:专业的专利平台
掌桥专利
首页

一种虚拟交换机分布式逃生方法、装置及存储介质

文献发布时间:2023-06-19 11:52:33


一种虚拟交换机分布式逃生方法、装置及存储介质

技术领域

本公开涉及通信技术领域,尤其涉及一种虚拟交换机分布式逃生方法、装置及存储介质。

背景技术

IPv4地址是32位(43亿),IPv6地址是128位(43亿*43亿*43亿*43亿),足以让地球上每粒沙子都有一个地址。由于IPv4地址有限,私网和公网互访变得非常困难。IPv6的地址极为丰富,全球每台设备、汽车、路灯都可以有独立的IP地址,实现真正的万物互联。

传统IT架构中的IPv6网络,根据业务需求部署上线以后,如果业务需求发生变动,重新修改相应网络设备(路由器、交换机、防火墙)上的配置是一件非常繁琐的事情。软件定义网络(Software Defined Network,SDN)可以通过OpenFlow协议将网络设备的控制面与数据面分离开来。由集中的控制器管理控制面,无须依赖底层网络设备,屏蔽了来自底层网络设备的差异。

数据中心集中式网络下,三层转发都要依靠同一个网络设备即网关设备来进行,一旦这个网关设备发生故障,与之关联的所有交换机三层流量都无法进行转发。而分布式网络可扩展性好,健壮性强,所有数据中心内部的三层流量转发都在本地虚拟交换机上实现,不需要依赖其他设备。一个交换机发生故障,不会影响其他交换机的流量转发。因此,基于SDN的IPv6网络分布式部署已成为未来发展趋势。

当前控制器对接Openflow虚拟交换机(Openflow Virtual Switch,OVS)时,处理流程如下:

1.SDN控制器向出口网关下发配置,让出口网关接口可以应答虚拟机发出的邻居请求(Neighbor Solicitation,NS)、路由请求(Router Solicitation,RS)报文,以及向远端通告路由通告(Router Advertisement,RA)报文;

2.SDN控制器下发Openflow流表(简称流表),流表对应动作为:将虚拟机请求网关的邻居发现(Neighbor Discovery,ND)报文送到出口网关;

3.虚拟机发出的邻居请求NS、路由请求RS报文,匹配控制器预先下发的流表,将报文送到出口网关;

4.出口网关收到报文后,进行邻居通告(Neighbor Advertisement,NA)或路由通告RA应答,报文通过隧道到达虚拟交换机OVS,匹配Openflow流表送到对应虚机。

为了防止缺省路由老化,出口网关还会定时发布路由通告RA报文,通过虚拟扩展局域网(Virtual eXtensible Local Area Network,VXLAN)的隧道送给所有远端具有相同虚拟链路层网络(简称network,对应一个VXLAN网络)的虚拟机所在OVS或者具有相同VXLAN网络的虚拟机所在OVS,OVS再将报文转发给虚拟机。

上述处理方法存在以下技术缺陷:

(1)由于RA配置是基于虚拟链路层网络network网络地址下发,在分布式组网下,需要在出口网关上下发所有network网络地址的配置信息,占用出口网卡的资源较大,因此可能会导致整个分布式组网支持的network网络地址数量下降。

(2)由于所有请求网关的邻居发现ND报文都需要发送到出口网关,网关处理压力较大,同时网关还需要定时向所有的OVS广播路由通告RA报文,占用大量网络带宽,因此很可能导致正常业务不能运行。

(3)当出口网关故障时,所有OVS上虚拟机业务流量都会丢包,会导致业务瘫痪。

发明内容

有鉴于此,本公开提供一种虚拟交换机分布式逃生方法、装置及存储介质,用于解决由出口网关集中处理路由请求相关报文所产生的网关资源及性能压力的技术问题。

图1为本公开提供的虚拟交换机分布式逃生方法的步骤流程图,该方法应用于软件定义网络SDN中虚拟交换机OVS所在计算节点,该方法包括:

步骤101.位于OVS所在计算节点上的代理组件接收SDN控制器下发的网关配置信息;

所述代理组件即agent作为SDN控制器的代理与SDN控制器通信连接。

所述网关配置信息包括但不限于IPv6协议中的路由通告RA报文和邻居通告NA报文中所需携带的配置信息。

步骤102.代理组件根据所述网关配置信息在本地创建虚拟网关接口;

步骤103.代理组件启动监听守护进程,并将控制器下发的网关配置信息下发给所述监听守护进程,由监听守护进程监听所述虚拟网关接口;

步骤104.当OVS接收到虚拟机发送的路由请求RS报文后,基于SDN控制器下发的流表将RS报文转发给所述虚拟网关接口;

所述流表在虚拟网关接口被成功添加到OVS桥上后,由SDN控制器下发给所述OVS。

步骤105.所述监听守护进程监听到虚拟网关接口收到RS报文后,根据所述网关配置信息组装路由通告RA报文并通过所述虚拟网关接口将RA报文发送给所述虚拟机。

进一步地,当OVS接收到虚拟机发送的邻居请求NS报文后,基于SDN控制器下发的流表将所述NS报文转发给所述虚拟网关接口,虚拟网关接口回应邻居通告NA报文给所述虚拟机。

进一步地,为了防止缺省路由老化,监听守护进程定时发布路由通告RA报文给所述OVS上所有与虚拟网关接口在相同虚拟链路层网络内的虚拟端口,通过虚拟端口将RA报文转发给虚拟机。

进一步地,所述监听守护进程采用路由通告守护进程RADVD实现。

进一步地,所述网关配置信息由SDN控制器通过远程过程调用协议向所述代理组件下发。

图2为本公开提供的一种虚拟交换机分布式逃生装置结构示意图,该装置200中的各功能模块可以采用软件、硬件或软硬件相结合的方式实现。该装置涉及到多个组件或模块,这些组件或模块可部署在一个硬件设备上实施上述方法的所有步骤,也可分散部署在不同硬件设备上共同实施上述方法的所有步骤以实现本公开的发明目的。当由多个硬件设备共同实施时,由于各硬件设备之间相互协作的目的是共同实现本发明目的,一方的动作和处理结果确定了另一方的动作执行的时机及可能获得的结果,因此,可视为各模块彼此之间具有相互指挥和控制关系。该装置200应用于软件定义网络SDN中虚拟交换机OVS所在计算节点,该装置包括:

代理组件210,位于OVS所在计算节点上,用于接收SDN控制器下发的网关配置信息并根据所述网关配置信息在本地创建虚拟网关接口;

监听守护进程220,由所述代理组件210启动,用于接收所述代理组件210下发的网关配置信息并根据网关配置信息监听所述虚拟网关接口;以及在监听到虚拟网关接口收到路由请求RS报文后,根据所述网关配置信息组装路由通告RA报文发送给虚拟网关接口;

虚拟网关接口230,用于接收由OVS基于SDN控制器下发的流表转发的虚拟机发送的RS报文;以及在接收到监听守护进程220根据所述RS报文生成的RA报文后,将RA报文转发给所述虚拟机。

进一步地,所述监听守护进程220还用于定时发布路由通告RA报文给OVS上所有与所述虚拟网关接口230在相同虚拟链路层网络内的虚拟端口,通过虚拟端口将RA报文转发给虚拟机。

进一步地,所述虚拟网关接口230还用于接收OVS转发的由虚拟机发送的邻居请求NS报文,并回应邻居通告NA报文给所述虚拟机。

进一步地,所述监听守护进程220采用路由通告守护进程RADVD实现;所述网关配置信息由SDN控制器通过远程过程调用协议向所述代理组件210下发。

本公开技术方案中,SDN控制器将网关配置信息下发给代理组件,由代理组件创建虚拟网关接口并启动监听守护进程,虚拟机发送的路由请求RS报文通过OVS发送给虚拟网关接口,监听守护进程监听到RS报文后组装路由通告RA报文,并通过OVS发送给虚拟机。本公开中RS请求报文由位于本地的虚拟网关接口进行分布式代答,在控制平面故障的情况下,OVS上虚拟机东西向IPv6业务依然能够保持正常,支持不同厂商的OVS,可减小出口网关的压力,提高整个组网可靠性,降低网络带宽占用率。

图3为本公开一实施例提供的一种电子设备结构示意图,该设备300包括:诸如中央处理单元(CPU)的处理器310、通信总线320、通信接口340以及存储介质330。其中,处理器310与存储介质330可以通过通信总线320相互通信。存储介质330内存储有计算机程序,当该计算机程序被处理器310执行时即可实现本公开提供的方法的各步骤。

其中,存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

附图说明

为了更加清楚地说明本公开实施例或者现有技术中的技术方案,下面将对本公开实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本公开实施例的这些附图获得其他的附图。

图1为本公开提供的虚拟交换机分布式逃生方法的步骤流程图;

图2为本公开提供的一种虚拟交换机分布式逃生装置结构示意图;

图3为本公开一实施例提供的一种电子设备结构示意图;

图4为本公开一实施例提供的SDN IPv6组网下应用虚拟交换机分布式逃生方法的网络结构示意图。

具体实施方式

在本公开实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本公开实施例。本公开实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本公开中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

本公开为解决现有技术中存在的技术问题,提供了一种虚拟交换机分布式逃生方法,该方法的基本思路是:在SDN分布式组网下,SDN控制器将网关信息通过远程过程调用(Remote Procedure Call,RPC)协议,例如JSON-RPC,下发给安装在计算节点上的控制器代理agent,agent根据配置信息增加虚拟网关接口到OVS的桥,并配置监听虚拟网关接口,通过虚拟网关接口对本计算节点的虚拟机发送的IPv6路由请求RS报文和邻居请求NS报文进行分布式代答,并发送路由通告RA报文,确保SDN控制器与OVS断开连接后,虚拟机的IPv6业务依然正常,提高整个组网可靠性,降低网络带宽占用。

图4为本公开一实施例提供的SDN IPv6组网下应用虚拟交换机分布式逃生方法的网络结构示意图,通过该方法可实现在控制平面故障的情况下,OVS转发面仍保持正常数据转发,该方法的步骤流程如下:

步骤401.SDN控制器通过JSON-RPC协议向位于OVS上的代理agent模块下发路由通告RA报文相关的网关配置信息;

该步骤中的网关配置信息包括前缀信息(Prefix Information)、最大传输单元(Maximum Transmission Unit,MTU)等路由通告RA报文可以携带的Option选项。

步骤402.代理agent根据网关配置信息创建虚拟网关接口;

该步骤中的虚拟网关接口由agent根据网关配置信息创建,该虚拟网关接口用于代答NS、RS报文,同时还用于通告RA报文。

步骤403.代理agent启动RADVD路由通告守护进程,并将控制器下发的网关配置信息下发给RADVD,由RADVD监听虚拟网关接口;

该实施例中的监听守护进程使用开源社区中的路由通告守护进程(RouterAdvertisement Daemon,RADVD),本公开不限定监听守护进程的具体形式和来源,只要具有实现本公开发明目的之功能即可。

图4中的计算节点指本地的一个物理服务器。一台服务器可同时承载OVS、虚拟机、Hypervisor、代理agent及RADVD等多个组件,也可由多台本地服务器分别承载不同的组件,本公开不做具体限定。

步骤404.SDN控制器感知到代理agent为OVS创建的虚拟网关接口成功添加到OVS桥上后,向OVS下发用于将虚拟机发送的路由请求RS报文转发给所添加的虚拟网关接口的流表;

该步骤中,当虚拟网关接口被添加到OVS桥上后,OVS会通过Openflow协议给SDN控制器上报端口状态port status消息,SDN控制器通过该消息获知这个虚拟网关接口对应的Openflow端口号(即位置信息),然后下发用于将虚拟机发送的路由请求RS报文转发给所添加的虚拟网关接口的流表。

步骤405.连接OVS的虚拟机启动后,虚拟机向OVS发送路由请求RS报文,RS报文匹配流表后,RS报文被送到虚拟网关接口,RADVD监听到虚拟网关接口收到了RS报文后,根据SDN控制器通过代理组件agent下发的网关配置信息组装路由通告RA报文并通过虚拟网关接口将RA报文回应给发送RS报文的虚拟机。

步骤406.虚拟机收到RADVD发送的路由通告RA报文后,配置自己的IP地址、缺省路由、网关的邻居发现ND表项;

步骤407.虚拟机发出的三层流量,直接根据缺省路由下一跳查找网关的ND表项,封装虚拟网关MAC地址,将报文发送到OVS虚拟交换机后,OVS基于流表进行三层转发,将报文送给目的虚拟机。

在本公开一实施例中,为了防止网关ND表项老化,虚拟机会定时进行邻居探测,向网关发送邻居请求NS报文,该报文同样会通过流表送到OVS本地的虚拟网关接口,由虚拟网关接口回应邻居通告NA报文给发送NS报文的虚拟机。

在本公开一实施例中,为了防止缺省路由老化,RADVD还会定时通过虚拟网关接口发布路由通告RA报文给本OVS上所有与虚拟网关接口在相同虚拟链路层网络内或相同VXLAN内的虚拟端口,通过虚拟端口将RA报文转发给虚拟机。

本公开提供的技术方案具有以下技术效果:

首先,本公开技术方案不需要对OVS进行私有扩展,可保持OVS的标准化和独立性,因此可同时支持不同厂商的OVS以及开源OVS。

其次,由于本公开技术方案中,RS和NS请求报文由位于本地的虚拟网关接口进行分布式代答,因此即使SDN控制器与OVS之间通信连接因故障断开,本公开技术方案依然可以保证虚拟机IPv6业务依然正常。

其三,当出口网关故障,OVS上虚拟机东西向IPv6业务依然会保持正常。

其四,由于本公开采用分布式代答机制,一个OVS上agent故障只会影响该OVS上虚拟机IPv6业务,其他OVS上虚拟机的IPv6业务依然正常,因此可提高整个组网可靠性。

其五,本公开提供的技术方案中,路由通告RA报文只会发布给本OVS上所有与虚拟网关接口处于同一虚拟二层网络即同一VXLAN内的虚拟端口,不会泛洪到其他OVS或出口网关,因此能够降低网络带宽占用。

应当认识到,本公开的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本公开描述的过程的操作,除非本公开另外指示或以其他方式明显地与上下文矛盾。本公开描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本公开的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本公开所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本公开所述的方法和技术编程时,本公开还包括计算机本身。

以上所述仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

相关技术
  • 一种虚拟交换机分布式逃生方法、装置及存储介质
  • 一种分布式虚拟交换机端口镜像的方法、装置及存储介质
技术分类

06120113079346