首页> 中国专利> 一种具有可插拔流管理协议的基于拓扑结构的虚拟交换模型

一种具有可插拔流管理协议的基于拓扑结构的虚拟交换模型

摘要

本发明涉及在一种用于在虚拟网络交换机中支持多个流管理协议并且在运行时不改变交换机拓扑配置的情况下改变流管理协议的技术。通过利用网络接口识别和控制数据面提供者且启用流管理协议的可插拔软件模块(或者插件或者插件模块)来检测数据面提供者。然后,通过创建虚拟交换机对象并且为所述虚拟交换机对象添加端口来构建交换机拓扑结构。然后,利用所述交换机拓扑结构和第一流管理协议在数据面提供者上创建数据路径。网络接口分别连接至各个端口,以使附着到每个网络接口的实体之间根据所述第一流管理协议进行通信。所述数据路径后续可以在运行时变更为使用第二流管理协议并保持相同的拓扑结构。

著录项

  • 公开/公告号CN108886493A

    专利类型发明专利

  • 公开/公告日2018-11-23

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201780019878.1

  • 发明设计人 逯云松;陈炎;

    申请日2017-03-17

  • 分类号

  • 代理机构

  • 代理人

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-06-19 07:21:40

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-07

    授权

    授权

  • 2018-12-18

    实质审查的生效 IPC(主分类):H04L12/70 申请日:20170317

    实质审查的生效

  • 2018-11-23

    公开

    公开

说明书

本申请要求于2016年3月22日递交的发明名称为“一种具有可插拔流管理协议的基于拓扑结构的虚拟交换模型”的第15/077,461号美国非临时专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。

背景技术

网络交换机是用于在设备之间进行数据连接的硬件设备。交换机可以用于根据特定的流管理协议(或称为数据转发协议)接收、处理和转发数据包至其预期的目的地。此外,网络交换机可以具有两个平面:控制面和数据面。控制面是系统中负责提供系统的流管理协议功能和特征的一部分。数据面负责根据控制面提供的逻辑真实地从将交换机与外部源连接的端口接收数据、处理数据以及向将交换机与外部源连接的端口发送数据。

网络交换机可以部署为物理硬件,或者可以利用采用虚拟化技术为系统提供网络连接的软件虚拟部署。虚拟化技术允许通过跨多个系统共享单个计算机的资源使得一台计算机完成多台计算机的工作。通过使用这样的技术,多个操作系统和应用程序可以同时在相同的计算机上运行,从而提高硬件的利用率和灵活性。虚拟化使得服务器与底层硬件解耦,从而使得多个VM共享相同的物理服务器硬件。

当多个虚拟计算机系统中的任意系统之间互相通信时,它们可以通过虚拟交换机在单个物理计算设备内进行通信。换句话说,具备单个物理计算设备内的源地址和目的地址的网络流量不会离开物理计算机系统。

随着网络虚拟化技术的广泛应用,虚拟交换功能、协议以及硬件加速器等正迅速兴起。在很多情况下,具有来自不同供应商的不同协议的不同虚拟交换机实现方式可以应用于单个系统,这使得交换机配置任务变得复杂甚至是不可能实现。

发明内容

在一个实施例中,提供一种用于在虚拟网络交换机(virtual switch,简称vSwitch)中支持多个流管理协议的方法,包括:检测数据面提供者,其中所述数据面提供者可以通过利用一个或多个网络接口识别所述数据面提供者的数据面并且启用一个或多个流管理协议的可插拔软件模块发现;通过以下动作配置虚拟交换机使用由所述可插拔软件模块启用的一个或多个流管理协议中的第一流管理协议:通过在虚拟交换机框架上创建虚拟交换机对象来构建所述虚拟交换机的拓扑结构,并且为所述虚拟交换机添加一个或多个端口以形成所述拓扑结构;利用所述拓扑结构和所述第一流管理协议在所述数据面提供者上创建第一数据路径;将所述一个或多个网络接口中的第一网络接口连接到所述一个或多个端口中的第一端口,将所述一个或多个网络接口中的第二网络接口连接到所述一个或多个端口中的第二端口,以使附着到每个网络接口的一个或多个实体之间通过利用所述第一流管理协议在所述第一数据路径上转发数据包来进行通信。

在包括上述一个或多个实施例的实施例中,所述可插拔软件模块还利用第二流管理协议识别所述数据面,所述方法还包括:通过以下动作重新配置所述虚拟交换机使用由所述可插拔软件模块启用的一个或多个流管理协议中的第二流管理协议,以使附着到每个网络接口的实体之间通过利用所述第二流管理协议在第二数据路径上转发数据包来进行通信:接收将所述第一流管理协议修改为所述第二流管理协议的请求;删除利用所述拓扑结构和所述第一流管理协议转发数据包的第一数据路径;将所述删除的第一数据路径替换为所述第二数据路径,以利用所述拓扑结构和所述第二流管理协议转发数据包。

在包括上述一个或多个实施例的实施例中,所述虚拟交换机可以在运行期间重新配置第一流管理协议和第二流管理协议,无需改变所述虚拟交换机的拓扑结构。

在包括上述一个或多个实施例的实施例中,所述方法还包括:为所述虚拟交换机添加所述一个或多个端口中的第三端口;将所述一个或多个网络接口中的第三网络接口连接到所述第三端口,以使附着到所述一个或多个网络接口中的每个网络接口的一个或多个实体之间通过利用所述第一流管理协议在所述第一数据路径上转发数据包来进行通信。

在包括上述一个或多个实施例的实施例中,所述方法还包括:为所述虚拟交换机添加所述一个或多个端口中的第三端口;将所述一个或多个网络接口中的第三网络接口连接到所述第三端口,以使附着到所述一个或多个网络接口中的每个网络接口的一个或多个实体之间通过利用所述第二流管理协议在所述第二数据路径上转发数据包来进行通信。

在包括上述一个或多个实施例的实施例中,所述实体是虚拟机、命名空间以及容器中的至少一个。

在包括上述一个或多个实施例的实施例中,所述方法还包括:将所述数据面提供者的可插拔软件模块存储到数据存储器中。

在包括上述一个或多个实施例的实施例中,所述检测包括:通过监控用于启用至少一个新流管理协议并更新所述数据面提供者的流管理协议的至少一个新添加的插件的数据存储器以发现所述可插拔软件模块。

在包括上述一个或多个实施例的实施例中,所述数据面的可插拔软件模块在运行期间可动态加载,以启动以下项中的至少一个:将另一个流管理协议添加至所述数据面提供者,以及在不重新配置所述虚拟交换机的拓扑结构的情况下改变所述虚拟交换机的第一流管理协议或第二流管理协议。

在包括上述一个或多个实施例的实施例中,所述网络接口是虚拟网络接口或物理网络接口。

在另一个实施例中,提供一种存储计算机指令以在网络中支持多个协议的非瞬时性计算机可读介质,当一个或多个处理器执行所述计算机指令时,所述处理器执行以下步骤:检测数据面提供者,其中所述数据面提供者可以通过利用一个或多个网络接口识别所述数据面提供者的数据面并且启用一个或多个流管理协议的可插拔软件模块发现;通过以下动作配置虚拟交换机使用由所述可插拔软件模块启用的一个或多个流管理协议中的第一流管理协议:通过在虚拟交换机框架上创建虚拟交换机对象来构建所述虚拟交换机的拓扑结构,并且为所述虚拟交换机添加一个或多个端口以形成所述拓扑结构;利用所述拓扑结构和所述第一流管理协议在所述数据面提供者上创建第一数据路径;将所述一个或多个网络接口中的第一网络接口连接到所述一个或多个端口中的第一端口,将所述一个或多个网络接口中的第二网络接口连接到所述一个或多个端口中的第二端口,以使附着到每个网络接口的一个或多个实体之间通过利用所述第一流管理协议在所述第一数据路径上转发数据包来进行通信。

在包括上述一个或多个实施例的实施例中,所述可插拔软件模块还利用第二流管理协议识别所述数据面,所述方法还包括:通过以下动作重新配置所述虚拟交换机使用由所述可插拔软件模块启用的一个或多个流管理协议中的第二流管理协议,以使附着到每个网络接口的实体之间通过利用所述第二流管理协议在第二数据路径上转发数据包来进行通信:接收将所述第一流管理协议修改为所述第二流管理协议的请求;删除利用所述拓扑结构和所述第一流管理协议转发数据包的第一数据路径;将所述删除的第一数据路径替换为所述第二数据路径,以利用所述拓扑结构和所述第二流管理协议转发数据包。

在包括上述一个或多个实施例的实施例中,所述虚拟交换机可以在运行期间重新配置第一流管理协议和第二流管理协议,无需改变所述虚拟交换机的拓扑结构。

在包括上述一个或多个实施例的实施例中,所述方法还包括:为所述虚拟交换机添加所述一个或多个端口中的第三端口;将所述一个或多个网络接口中的第三网络接口连接到所述第三端口,以使附着到所述一个或多个网络接口中的每个网络接口的一个或多个实体之间通过利用所述第一流管理协议在所述第一数据路径上转发数据包来进行通信。

在包括上述一个或多个实施例的实施例中,所述方法还包括:为所述虚拟交换机添加所述一个或多个端口中的第三端口;将所述一个或多个网络接口中的第三网络接口连接到所述第三端口,以使附着到所述一个或多个网络接口中的每个网络接口的一个或多个实体之间通过利用所述第二流管理协议在所述第二数据路径上转发数据包来进行通信。

在包括上述一个或多个实施例的实施例中,所述实体是虚拟机、命名空间以及容器中的至少一个。

在包括上述一个或多个实施例的实施例中,所述方法还包括:将所述数据面提供者的可插拔软件模块存储到数据存储器中。

在包括上述一个或多个实施例的实施例中,所述检测包括:通过监控用于所述数据面提供者已更新的数据面的至少一个新添加的插件的数据存储器以发现所述可插拔软件模块。

在包括上述一个或多个实施例的实施例中,所述数据面的可插拔软件模块在运行期间可动态加载,以启动以下项中的至少一个:将另一个流管理协议添加至所述数据面提供者,以及在不重新配置所述虚拟交换机的拓扑结构的情况下改变所述虚拟交换机的第一流管理协议或第二流管理协议。

在包括上述一个或多个实施例的实施例中,所述网络接口是虚拟网络接口。

在再一个实施例中,提供一种用于在网络中支持多个协议的节点,包括:包括指令的存储器;以及与所述存储器耦合的一个或多个处理器,其中所述处理器执行指令用于:检测数据面提供者,其中所述数据面提供者可以通过利用一个或多个网络接口识别所述数据面提供者的数据面并且启用一个或多个流管理协议的可插拔软件模块发现;通过以下动作配置虚拟交换机使用由所述可插拔软件模块启用的一个或多个流管理协议中的第一流管理协议:通过在虚拟交换机框架上创建虚拟交换机对象来构建所述虚拟交换机的拓扑结构,并且为所述虚拟交换机添加一个或多个端口以形成所述拓扑结构;利用所述拓扑结构和所述第一流管理协议在所述数据面提供者上创建第一数据路径;将所述一个或多个网络接口中的第一网络接口连接到所述一个或多个端口中的第一端口,将所述一个或多个网络接口中的第二网络接口连接到所述一个或多个端口中的第二端口,以使附着到每个网络接口的一个或多个实体之间通过利用所述第一流管理协议在所述第一数据路径上转发数据包来进行通信。

在包括上述一个或多个实施例的实施例中,所述可插拔软件模块还利用第二流管理协议识别所述数据面,与所述存储器耦合的一个或多个处理器继续执行所述指令用于:通过以下动作重新配置所述虚拟交换机使用由所述可插拔软件模块启用的一个或多个流管理协议中的第二流管理协议,以使附着到每个网络接口的实体之间通过利用所述第二流管理协议在第二数据路径上转发数据包来进行通信:接收将所述第一流管理协议修改为所述第二流管理协议的请求;删除利用所述拓扑结构和所述第一流管理协议转发数据包的第一数据路径;将所述删除的第一数据路径替换为所述第二数据路径,以利用所述拓扑结构和所述第二流管理协议转发数据包。

在包括上述一个或多个实施例的实施例中,所述虚拟交换机可以在运行期间重新配置第一流管理协议和第二流管理协议,无需改变所述虚拟交换机的拓扑结构。

提供本发明内容是用于以简化的形式引入概念的选择,这些概念将在以下具体实施方式中进行进一步描述。本发明内容的目的不在于识别权利要求书保护的主题的关键特征或必要特征,也不在于帮助确定权利要求书保护的主题的范围。权利要求书保护的主题不限于解决背景技术部分提及的任何或所有缺点的实施方式。

附图说明

本发明的各个方面通过举例的方式示出但不受附图的限制,附图中相同的附图标记表示相同的元件。

图1示出了一组计算设备通过网络交换机连接到管理站的处理环境;

图2示出了具有可插拔流管理协议的虚拟交换机管理系统;

图3示出了用于图2所示的虚拟交换机框架的数据模型的统一建模语言(unifiedmodelinglanguage,简称UML)静态类图;

图4示出了用于改变和发现提供者的流管理协议的序列图;

图5示出了用于创建与图4中发现的数据面提供者相关联的交换机的序列图;

图6示出了用于根据图1至图5通过可插拔软件模块配置具有多个协议的虚拟交换机的流程图的实施例;

图7示出了用于根据图1至图5通过可插拔软件模块(插件)配置具有多个协议的虚拟交换机的另一个流程图;

图8示出了能够用于实现各种实施例的网络系统的方框图。

具体实施方式

本发明涉及一种用于虚拟交换机框架的技术,其中所述虚拟交换机框架使用统一的拓扑管理接口并且支持具有由动态可插拔模块启用的不同流管理协议的多个数据面提供者。

虚拟网络交换机中支持多个流管理协议,并且流管理协议可以在运行时在不改变交换机拓扑结构配置的情况下变更为另一个协议。通过利用网络接口识别和控制数据面提供者且启用流管理协议的可插拔软件模块(或者插件或者插件模块)来检测数据面提供者。然后,通过创建虚拟交换机对象并且为所述虚拟交换机对象添加端口来构建交换机拓扑结构。然后,利用所述交换机拓扑结构和第一流管理协议在数据面提供者上创建数据路径。网络接口分别连接至各个端口,以使附着到每个网络接口的实体之间根据所述第一流管理协议进行通信。所述数据路径后续可以在运行时变更为使用第二流管理协议并保持相同的拓扑结构。

可以理解的是,本发明可以以许多不同的形式实现,并且不应视为对本文所阐述的实施例的限制。相反,提供这些实施例是为了使本发明内容更加透彻和完整,并将本发明完整地传达给本领域技术人员。事实上,本发明旨在覆盖这些实施例的替代方案、修改和等同方案,其包括在由所附权利要求书定义的本发明的范围和精神内。另外,在本发明的以下详细描述中,阐述了许多具体细节以便提供对本发明的透彻理解。但是,本领域普通技术人员清楚的是,本发明可以在没有这些具体细节的情况下实施。

图1示出了一组计算设备通过网络交换机连接到管理站的处理环境。如图所示,所述处理环境100包括但不限于网络102、管理站104、交换机106A和106B以及计算设备108A、108B和108C。应理解的是,所示出的实施例旨在作为示例,可以采用任意数量的计算设备、交换机、网络和管理站。

所述网络102可以是任意公共或专用网络,或者公共和专用网络的组合,例如因特网和/或公共交换电话网络(public switched telephone network,简称PSTN)等等,或任意其它类型的提供用于计算资源、部件以及用户等之间的通信的能力并且在示例性实施例中分别与交换机106A和106B耦合的网络。所述交换机106A和106B(其可以是物理交换机或虚拟交换机)中的每一个都包括各自的转发数据结构(例如转发信息库(forwardinginformation base,简称FIB)或转发表,未示出),所述交换机106A和106B利用所述转发数据结构基于例如数据包中包括的OSI层2地址(例如基于MAC地址)向目的地转发入局数据包。

所述计算设备108A、108B和108C,例如主机,分别与交换机106A和106B中的一个耦合。所述计算设备108A、108B和108C中的每一个分别包括虚拟机(virtual machine,简称VM)116A/118A、116B/118B和116C/118C、虚拟机监控器(virtual machine monitor,简称VMM)或者虚拟机监视器110A、110B和110C以及网络接口卡(network interface card,简称NIC)124A、124B和1224C等。所述VMM 110A、110B和110C中的每一个分别包括虚拟交换机(virtual switch,简称vSwitch或者VS)112A、112B和112C以及端口选择器114A、114B和114C等。所述VM 116A/B、116B/118B和116C/118C分别包括对应的NIC 120A/122A、120B/122B和120C/122C,例如虚拟NIC(virtual network interface card,简称vNIC。)应理解的是,NIC、vNIC、交换机、vSwitch等部件可以利用物理或者虚拟部件或者硬件和/或软件的任意组合进行变换或者替换。

每个计算设备108A、108B和108C执行对应的VMM 110A、110B和110C,其中所述VMM110A、110B和110C虚拟化并管理各计算设备108A、108B和108C上的资源。所述计算设备108A、108B和108C可以是任意类型的设备,例如服务器或路由器,其可以实现本文所描述的进程和过程,如下图3至8详述。此外,所述计算设备108A、108B和108C例如可以在位于通过网络102与所述计算设备108A、108B和108C耦合的管理站104处的人和/或自动化云管理员的指导下执行所述VMM 110A、110B和110C。

所述计算设备108A、108B和108C上的VMM 110A、110B和110C支持VM 116A/118A、116B/118B和118C/118C的执行和操作,并且实现VS 112A、112B和112C和端口选择器114A、114B和114C以支持各自的VM。所述端口选择器114A、114B和114C确定所述VS112A、112B和112C的端口类型,并且确保所述NIC 124A、124B和124C到所述网络102的正确连接。还应理解的是,尽管每个计算设备上示出部署了两个VM,但是可以在计算设备中采用任意数量的VM和接口。所述VM 116A、116B和116C中的每一个都可以与各种实体相关联,例如数据提供者或数据消费者(下文中进一步解释)。

所述VM 116A/118A、116B/118B和116C/118C均包含各自的vNIC 120A/122B、120B/122b和120C/122C。所述vNIC 120A/122B、120B/122B和120C/122C有助于通过特定VS的端口进行的通信。所述VM 116A、118A、116B、118B、116C和118C之间的通信可以通过所述VS112A、112B和112C的软件以及物理交换机106A和106B路由。

图2示出了具有可插拔流管理协议的虚拟交换机管理系统。所述虚拟交换机管理系统200包括配置器202、虚拟交换机框架204、数据面提供者206以及协议控制器208等。数据面提供者可以是任意硬件或软件模块,其可以利用其控制器规定的逻辑(流管理协议)接收、处理和发送数据包。通过该系统,可以支持来自各种数据面提供者的多个协议。因此,所述系统不限于层2或层3交换机或类似设备,还可以包括其它类型的流管理协议,例如,开放流或者完全可定制的交换策略。尽管传统的虚拟交换机设计用于支持数据面提供者特定的流管理协议,所述管理系统200提供框架用于支持具有由可插拔软件模块(即,插件或插件模块)启用的不同流管理协议的多个数据面提供者,并且可以在不改变已配置的交换机拓扑结构的情况下变更正在运行的虚拟交换机的流管理协议。因此,可以在运行时改变或修改流管理协议,并且多个交换机实例可以同时支持不同的协议。

所述配置器202包括命令行接口(command line interface,简称CLI)和/或应用程序接口(application programming interface,简称API)202A,其使得所述系统的使用者配置并管理虚拟交换机对象和其各自的拓扑结构。所述配置器202还负责维护配置记录。该记录可以存储在配置存储器202B中。所述配置存储器202B可以是数据库、存储器、存储系统或者任意其它能够存储信息的部件或元件等。此外,所述配置存储器202B可以作为独立的存储器位于所述配置器202的外部,或者位于任意其它与所述管理系统200通信的系统部件上。

所述VS框架204包括虚拟交换机拓扑配置和交换机对象管理功能。如上所述,所述框架204上的VS可以由所述配置器202配置(或者重新配置)。所述VS框架204包括但不限于拓扑管理器204A、提供者管理器204B、特征管理器204C、插件管理器204D以及事件管理器204E。所述拓扑管理器204A负责配置和管理数据面对象及其拓扑结构(即虚拟交换机及其端口和连接的接口)。

所述提供者管理器204B负责通过在一些实施例中利用各种软件和/或硬件协处理器和加速器来发现和管理所述数据面提供者206的特定实例。因此,所述提供者管理器204B可以通过启用和管理其各自的提供者和协议的插件模块来识别数据面提供者206。所述提供者管理器204B还可以监控新添加的插件,以协助发现和管理新协议和数据面提供者206的实例。一旦发现,所述数据面提供者206及其各自的插件可以用于与所述虚拟交换机管理系统200连接并在所述虚拟交换机管理系统200上进行操作,或者以其它方式启用或提供任意新功能。

所述特征管理器204C管理数据面对象的共同特征,例如监控协议和服务质量等。但是,所述特征管理器204C通常不负责与流管理协议相关的特征。一般来说,所述特征管理器204C负责作出关于数据面提供者206是否实现某些特征并且在适当时请求执行这些特征的决定。在一个实施例中,所述特征管理器204C可以负责管理交换机和端口特征的创建和删除。

所述插件管理器204D管理可插拔软件模块(插件),以启用所述数据面提供者206的流管理协议。所述插件管理器204D负责集成所述插件的功能。

所述插件管理器204D也可以负责加载插件。在另一个实施例中,所述插件管理器204D可以应用加载标准,从而对满足所述加载标准的特定插件进行加载。例如,加载标准可以包括时间戳(例如,加载在特定日期之后创建的插件)、版本号(例如,如果存在多个版本,加载插件的最新版本)或者数据面提供者206的特定名称。

所述插件管理器204D还可以协助确定要加载的插件并且收集加载所选择的插件所需的信息。所述插件管理器204D也可以从所述配置器202的配置存储器202B接收配置数据。

插件可能具有使其能够被插件管理器加载的公共接口。每个插件执行特定的功能(例如,启用流管理协议)或执行特定的配置任务和/或提供特定的信息以与系统中的各种部件进行通信。加载插件后,也可以进行任意插件特定的初始化。插件特定的初始化的示例包括创建和/或校验通信连接、加载类、指导插件管理器204D加载或卸载附加插件等。

所述事件管理器204E负责在运行时处理事件,并为所述虚拟交换机框架204调度任务。

数据面提供者206负责提供提供者特定的流管理协议,并实现API以与所述虚拟交换机框架204进行交互。所述数据面提供者206包括协议管理器206A和数据面206B。所述数据面提供者206可以由可以实现为特定流管理协议并且实现API以与所述VS框架204进行交互的可插拔软件模块(插件)来表示。这些插件可以使数据面206B基于插件定义的流管理协议转发信息包。

应理解的是,所述数据面206B可以接收数据包,以及利用所述数据面提供者提供的流管理协议处理和转发数据包。具体地,所述数据面负责路由器或服务器等计算设备处理和转发数据包的能力,其可以包括数据包转发(数据包交换)等功能,这是在计算设备的接口上接收数据包的行为。所述数据面206B还可以负责分类、流量整形和计量。

所述插件能够使各个数据面提供者206根据预定义或定制的流管理协议实现数据转发功能。在一个实施例中,每个插件可以是独立于所述VS框架204的独立软件库模块。该独立插件可以添加和/或删除。在另一个实施例中,一个或多个插件可以依赖于所述VS框架204以提供附加功能。

图3示出了用于图2所示的虚拟交换机框架的数据模型的统一建模语言(unifiedmodeling language,简称UML)静态类图。该模型允许实现VS框架204以支持具有由各自插件模块启用的不同流管理协议的不同数据面提供者上的多个虚拟交换机,并且支持在不改变交换机拓扑配置的情况下变更流管理协议。

一个类描述了一组共享相同的特征、限制和语义规范的对象。例如,插件对象包含属性为“名称,类型”和执行方法为“provider_discovery”、“add_provider”和“delete_provider”的“插件”类。另外,对象之间可能存在关系,从而能够在类和对象图中找到连接。图3示意图中描述的关系如下:关联(association,简称ASSOC)指定可能在类型实例间发生的语义关系。聚合(Aggregation,简称AGG)是一种更具体的关联,例如,表示部分与整体之间的关系或者部分与部分之间的关系的关联。关联(association,简称ASSOC)可以表示组合聚合(即,整体/部分关系)。组合聚合(Composite aggregation,简称CAGG)是一种强聚合形式,其要求一个部分实例一次最多包含在一个组合中,并且组合是由设置为真的关联的部分末端的属性表示。组合关系的图形表示是位于将被包含类和包含类连接的线条树的包含类的末端上的实心菱形形状。泛化(generalization,简称GEN)是更普遍的分类器和更具体的分类器之间的分层关系。泛化的图形表示是位于将超类和一个或多个子类相连接的线条的超类的末端上的空心三角形形状。

图4示出了用于加载插件以及发现提供者和其支持的流管理协议的序列图。图4的实现过程使得虚拟交换机管理系统200动态添加协议、或者将至少一个第一协议动态变更或修改为至少一个其它协议。在以下讨论中,VS框架204结合数据面提供者206(例如,提供者A和提供者B)的数据面206B执行序列图中详述的过程。但是,应理解的是,此操作不限于上述部件。此外,图4中公开的过程是发现具有不同流管理协议的提供者的一个示例。因此,应理解的是,所公开的过程是非限制性示例。

在图4描述的示例中,VS框架204的插件管理器找到并调用add_plugin(“提供者A的插件模块”)以加载使得提供者A 206A启用协议1和协议2等特定流管理协议的插件后,所述VS框架204调用新添加(或修改)的插件的“provider_discovery()”,以获得提供者的属性信息。由所述插件启用的数据面提供者A 206返回所述提供者的名称以及其支持的相关联的网络接口和流管理协议。例如,数据面提供者206(提供者A)有两个网络接口(“if1”和“if2”),并且支持两个流管理协议(“protocol1”和“protocol2”),返回{“provider A”,“if1,if2”,“protocol1and protocol2”}。一旦所述数据面提供者A 206将信息返回至VS框架204时,所述VS框架204注册提供者A的属性信息,其包括支持的协议和相关联的网络接口,用于后续调用“provider_add()”和“providerA.add_interface()”等方法。

类似过程也适用于发现另一个数据面提供者206,例如提供者B。在这个示例中,提供者B具有两个网络接口(“if3”和“if4”)和单个流管理协议(“protocol1”),该信息存储在例如数据面提供者206的插件模块中。

图5示出了用于创建与图4中发现的数据面提供者相关联的交换机的序列图。在示例性实施例中,创建交换机,使得用于实体间通信的协议可以在例如运行期间在不影响交换机拓扑配置的情况下变更为新发现的协议。在下文解释中,配置器202、VS框架204以及数据面提供者206负责实施该过程。但是,应理解的是,该实现方式不限于这些部件。

创建交换机的过程由首先构建交换机拓扑结构的配置器202启动。例如,交换机拓扑结构“topology0”可以通过以下过程构建:所述配置器202调用“create_switch(“sw0”)”以指示VS框架204创建交换机对象(“sw0”),然后调用“sw0.create_port(“p01”)”以创建与所述交换机相关联的第一端口(“p01”)。类似地,创建与交换机对象(“sw0”)相关联的第二端口(“p02”)。应理解的是,两个端口为示例,可以将任意数量的端口与所述交换机相关联。在一个实施例中,所创建的端口的数量对应于待使用的数据面提供者206上的网络接口的数量。

一旦创建了交换机对象(“sw0”)和相关联的拓扑结构“topology0”,所述配置器202可以调用“providerA.add_switch(sw0,“protocol1”)”以指示所述VS框架204利用第一协议(protocol1)创建所述数据面提供者206(提供者A)上的交换机。

然后,所述VS框架204向所述数据面提供者206发送请求(“providerA.add_datapath(“protocol1”,“topology0”)”)以创建数据路径(dp1)。创建从所述数据面提供者206(提供者A)到所述VS框架204的数据路径(dp1)意味着交换机(“sw0”)现在已经准备好(在接口均连接到端口之后)根据“protocol1”沿着数据路径dp1在端口之间转发数据。所述配置器202可以通过调用“p01.connect_interface(if1)”以指示所述VS框架204将第一端口(“p01”)与第一网络接口(“if1”)相连。类似地,所述配置器202可以通过调用“p02.connect_interface(if2)”以指示所述VS框架204将第二端口(“p02”)与第二网络接口(“if2”)相连。

现在可以使用所述虚拟交换机(virtual switch,简称VS)206C利用所述数据面提供者206(在这种情况下为提供者A)的流管理协议(在这种情况下为protocol1)发送数据包。因此,现在实体之间可以利用指定的流管理协议“protocol1”通过连接到所述虚拟交换机(virtual switch,简称VS)206C的端口的第一网络接口(“if1”)和第二网络接口(“if2”)进行通信。例如,VM 116A可以利用protocol1通过所述虚拟交换机(virtual switch,简称VS)206C沿着经过vNIC 120A和vNIC 122A的数据路径dp1将数据包发送至另一个VM 118A。当数据包到达代表所述数据面提供者206(提供者A)创建的虚拟交换机(virtual switch,简称VS)206C时,可以对这些数据包进行解析(例如,确定数据包的目的地址)并匹配到特定的动作,然后由所述数据面206B利用流管理协议(例如,protocol1)进行转发。

应理解的是,虽然在公开的实施例中是两个VM进行通信,但是任意数量的VM都可以通过任意数量的网络接口和端口进行通信,并且所公开的实施例是非限制性示例。

当用户想要变更流管理协议时,所述虚拟交换机管理系统200可以在不改变虚拟交换机(virtual switch,简称VS)206C的拓扑结构的情况下改变流管理协议。特别地,所述配置器202向所述VS框架204请求将流管理协议从protoco1变更为protocol2,例如“sw0.change_protocol(“protocol2”)”。为响应来自所述配置器202的请求,所述VS框架204通过以下指令“dp1.delete_datapath()”等形式向所述数据面提供者206(提供者A)转发删除第一数据路径(dp1)的请求。

为响应该指令,所述数据路径(dp1)被删除,并且所述VS框架204请求在不改变拓扑结构(topology0)的情况下利用第二流管理协议(protocol2)创建新的数据路径(也是dp1)。一旦创建了所述数据路径(dp1),交换机(“sw0”)准备好利用第二流管理协议(protocol2)进行通信。需要注意的是,不需要为了改变流管理协议而创建或重新创建虚拟交换机(“sw0”)。也就是说,所述交换机继续利用先前创建的拓扑结构保持连接,并且现在可以用于利用所述数据面提供者206(在这种情况下为提供者A)的新的流管理协议(在这种情况下为protocol2)发送数据包。因此,现在实体(例如,VM)之间可以通过所述虚拟交换机(virtual switch,简称VS)206C利用新指定的流管理协议(在这种情况下为protocol2)进行通信。

图6示出了用于根据图1至图5通过可插拔软件模块配置具有多个协议的虚拟交换机的流程图的实施例。在步骤602,VS框架204监控虚拟交换机管理系统200,以通过发现新创建或修改的插件来检测数据面提供者。所述VS框架204继续监控插件直至检测到(发现)数据面提供者206的插件。在步骤604,所述VS框架204确定是否已经检测到所述数据面提供者206的插件。如果在步骤604确定没有检测到插件,进程继续步骤602的监控用于检测插件。否则,当所述VS框架204检测到新插件时,包括由所述插件启用的流管理协议在内的新增功能可以用于在步骤606配置新的虚拟交换机或修改现有的虚拟交换机(virtualswitch,简称VS)206C。

作为在步骤606配置虚拟交换机(virtual switch,简称VS)206C的一部分,在步骤608通过在所述VS框架204上创建虚拟交换机对象并为所述虚拟交换机(virtual switch,简称VS)206C添加一个或多个端口来构建拓扑结构(例如,topology0)。在构建拓扑结构之后,在步骤610利用所述拓扑结构(topology0)和流管理协议在所述数据面提供者206上创建数据路径(例如,dp1)。然后,在步骤612,所述虚拟交换机(virtual switch,简称VS)206C准备好根据插件中阐述的流管理协议将网络接口连接到对应的端口,以通过沿着数据路径实现流管理协议来进行附着到网络接口的实体之间的通信。相应地,第一实体(例如,VM116A)可以利用特定的流管理协议经由vNIC 120A与第二实体(例如,VM 118A)经由vNIC122A进行通信。

图7示出了用于根据图1至图5通过可插拔软件模块(插件)配置具有多个协议的虚拟交换机的另一个流程图。回顾图4的过程,其中提供者A有两个协议,即protocol1和protocol2。在步骤702,VS框架204重新配置虚拟交换机使用第二流管理协议(protocol2),以使附着到每个网络接口的实体之间通过利用所述第二流管理协议在第二数据路径(dp1)上转发数据包来进行通信。

在重新配置虚拟交换机时,在步骤704,所述VS框架204从配置器202接收将第一流管理协议(“protocol1”)修改(例如,更改或更新)为第二流管理协议(“protocol2”)的请求。类似于上文所述,所述VS框架204将数据面206B确定为具有更改的或更新的流管理协议的已修改插件。为了更改或更新在步骤704请求的流管理协议,在步骤706,所述VS框架204向数据面提供者206转发来自所述配置器202的将第一数据路径(dp1)删除的请求。然后,删除所述第一数据路径(dp1)。

然后,所述VS框架204请求创建新的(第二)数据路径(dp1)以启用所述第二流管理协议(protocol2),同时保持虚拟交换机(virtual switch,简称VS)206C的拓扑结构不变。这通过配置所述虚拟交换机(virtual switch,简称VS)206C来完成,以实现可由更新的或修改的插件启用的第二流管理协议(“protocol2”),从而建立通信。也就是说,在步骤708,所述虚拟交换机(virtual switch,简称VS)206C用于通过替换第一流管理协议(“protocol1”)来实现第二流管理协议(“protocol2”)。附着到第一网络接口(“if1”)和第二网络接口(“if2”)的实体现在能够利用第二流管理协议(“protocol2”)进行通信。

图8是能够用于实现各种实施例的网络系统的方框图。特定设备可以利用所示的所有部件或所述部件的仅一子集,并且设备之间的集成度可能不同。另外,设备可以包含部件的多个实例,例如多个处理单元、处理器、存储器、发射器、接收器等等。所述网络系统可以包括配备有一个或多个输入/输出设备例如网络接口和存储接口等的处理单元801。所述处理单元801可以包括中央处理器(central processing unit,简称CPU)810、存储器820、大容量存储设备830,以及连接到总线870的I/O接口860。所述总线870可以是任意类型的若干总线架构中的一个或多个,包括存储总线或者存储控制器、外设总线等等。所述CPU 810可以包括任意类型的电子数据处理器,其可以用于读取和处理所述存储器820中存储的指令。

所述存储器820可以包括任意类型的系统存储器,例如静态随机存取存储器(static random access memory,简称SRAM)、动态随机存取存储器(dynamic randomaccess memory,简称DRAM)、同步DRAM(synchronous DRAM,简称SDRAM)、只读存储器(read-only memory,简称ROM)或其组合等。在一个实施例中,所述存储器820可以包括在启动时使用的ROM,以及在执行程序时使用的用于程序和数据存储的DRAM。在实施例中,所述存储器820是非瞬时性的。

所述大容量存储设备830可以包括任意类型的存储设备,用于存储数据、程序以及其它信息,并使这些数据、程序以及其它信息可以通过总线访问。所述大容量存储器设备830可以包括如下项中的一种或多种:固态磁盘、硬盘驱动器、磁盘驱动器、光盘驱动器等等。

所述大容量存储设备830还可以包括虚拟化模块830A和应用程序830B。所述虚拟化模块830A可以表示例如计算设备108A的虚拟机监视器,所述应用程序830B可以表示不同的VM。所述虚拟化模块830A可以包括交换机(未示出),用于在一个或多个虚拟网络上交换数据包,并且可以操作用于确定物理网络路径。所述应用程序830B均可以包括可以由计算设备108A执行的程序指令和/或数据。作为一个示例,所述应用程序830B可以包括使得计算设备108A执行本发明中描述的一个或多个操作和动作的指令。

所述处理单元801还包括一个或多个网络接口850,其可以包括以太网线等有线链路,和/或到接入节点或者一个或多个网络880的无线链路。所述网络接口850允许所述处理单元801通过所述网络880与远程单元进行通信。例如,所述网络接口850可以通过一个或多个发射器/发射天线以及一个或多个接收器/接收天线提供无线通信。在一个实施例中,所述处理单元801耦合到局域网或广域网,用于数据处理以及与远端设备进行通信,所述远端设备例如是其它处理单元、因特网、远程存储设备等。

根据上文讨论的具有可插拔流管理模块的虚拟交换机框架提供若干优点,其包括但不限于:在不中断网络操作的情况下基于正在运行的交换机拓扑结构更改或更新底层交换协议,运行时可以添加新的交换协议或提供者而不影响系统中当前活动的交换提供者和协议,使用由框架提供的现有通用拓扑管理功能,以及使用统一系统来管理多种不同类型的虚拟交换机;消除具备在不中断虚拟网络操作的情况下更改或更新底层交换协议的能力的服务提供者和用户的操作停机时间;减少开发具备由新交换机协议提供者的框架实现提供的通用拓扑管理功能的新协议提供者的时间和成本;提供可以用于管理多种不同类型的虚拟交换机的统一接口,从而降低了交换机管理和操作者的学习曲线的复杂性;并且交换机对象及其拓扑配置可以保留,不需要重新配置,从而减少了在改变交换机协议时发生的人为错误。

根据本发明的各实施例,本文所述的方法可以通过执行软件程序的硬件计算机系统实现。此外,在非限制性实施例中,实施方式可以包括分布式处理、部件/对象分布式处理和并行处理。可以构建虚拟计算机系统处理以实施本文所描述的方法或功能中的一种或多种,本文所描述的处理器可以用于支持虚拟处理环境。

此处,结合本发明实施例的方法、装置(系统)以及计算机程序产品的流程图和/或方框图描述本发明的各方面。应当理解,流程图和/或方框图的每个框以及流程图和/或方框图中的框的组合可以由计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,以产生机器,使得这些通过计算机或其它可编程指令执行装置的处理器所执行的指令创建实现所述流程图和/或方框图中的一个或多个方框所指定的功能/动作的机制。

本文所使用的术语仅用于描述特定方面,而非旨在限制本发明。除非上下文中另有明确说明,本文使用的单数形式“一个”和“所述”包括复数含义。应进一步了解,本文中的术语“包括”和/或“包含”用于说明存在所述特征、整体、步骤、操作、元件和/或部件,但并不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、部件和/或它们的组合。

对本发明的描述只是为了说明的目的,而这些描述并不旨在穷举或限于所公开的实施例。在不偏离本发明的范围和精神的前提下,多种修改和变体对本领域技术人员而言是显而易见的。选择和描述本发明的各个方面以便更好地解释本发明的原理和实际应用,并且使本领域普通技术人员能够理解本发明和适合预期特定用途的各种修改。

为了本文档的目的,与所公开的技术相关联的每个过程可以连续执行并由一个或多个计算设备执行。过程中的每个步骤可以由与其它步骤中使用的相同或不同的计算设备执行,并且每个步骤不一定由单个计算设备执行。

虽然已经以特定于结构特征和/或方法动作的语言描述了主题,但是应该理解的是,所附权利要求书定义的主题不必局限于上文描述的具体特征或动作。相反,上述具体的特征和动作被公开作为实施权利要求的示例性方式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号