使用主机内核资源的轻量级虚拟机之间的软件定义开关的系统和方法与流程

文档序号:15576847发布日期:2018-09-29 05:41阅读:164来源:国知局
本文描述的主题大体上涉及通信数据处理,更具体地,用于改善轻量级虚拟机中的网络能力的性能。
背景技术
::在计算机领域,虚拟机(virtualmachine,vm)是对特定计算机系统的仿真。虚拟机基于真实或假想计算机的计算机架构和功能进行操作,其实现可能涉及专用硬件、软件或二者的组合。众所周知,运行虚拟机有很多益处。虚拟机更好地利用了硬件,易于备份和交换,并将业务彼此隔离。但是,运行虚拟机也有缺点。虚拟机镜像很笨拙。另外,更重要的是,虚拟机需要相当多的资源,因为它们仿真了硬件和运行了全栈操作系统。通过使用linux容器,提供一种轻量级替代品来替代成熟虚拟机,同时能保留成熟虚拟机的优点。容器为操作系统级虚拟环境,用于在单个linux主机上运行多个独立的linux系统,有时也称为轻量级虚拟化或轻量级虚拟机。runc、docker和warden是轻量级虚拟机(容器)的一些示例,可用于构建“平台即服务”(platformasasolution,paas)。runc/docker/warden是基于linux内核命名空间和cgroup的方案,通过易于使用的控制台/api/图像格式来抽象复杂的内核api,并且提供按需抽象来计算存储和网络能力。容器组网可大概视为给一组容器创建一致的网络环境。这可使用叠加网络实现,叠加网络存在多种实施方式,例如docker默认网络模式、weave、flannel和socketplane。所有这些叠加网络的主要优势是无需改变应用代码,应用可按原样部署。网络命名空间连接到物理网络设备的方式也是容器组网的另一部分。存在多个允许网络命名空间与veth、openvswith、域套接字等网络硬件进行通信的linux内核模块。命名空间是linux内核的一个特征,其允许将一组进程分开,使这些进程不能“看到”其它组中的资源。根据网络命名空间的linux内核文档,在不损害网络隔离级别的情况下,网络命名空间可通过veth对和/或域套接字进行通信。图1(a)示出了使用veth对进行通信的网络命名空间。veth对是一种可在容器内使用的类似以太网的虚拟设备。veth对捕获以太网帧,捕获的帧可通过网桥或路由器发送至目的地。域套接字是一种高效的轻量级进程间通信(interprocesscommunication,ipc)。图1(b)示出了使用域套接字进行通信的网络命名空间。域套接字可以通过文件权限来控制,所以比任何人都可以连接的tcp端口更安全,因此tcp端口需要进一步的安全防护。图2示出了docker中的网络设置。图2示出了虚拟机/容器用来解决网络问题的通用方法。该通用方法为从veth等虚拟设备捕获以太网数据包,然后通过网桥/路由器将数据包发送到同一主机或不同主机内的所需容器中。veth对是一种可以在容器内使用的类似以太网的虚拟设备。图3示出了docker中的内部布置。如图3所示,每个生成的/实例化的容器都使用veth对连接到linux网桥。veth对的容器端称为eth0,linux网桥侧的veth对称为vethxx,如vethab或vethbb。主机与linux网桥之间连接了类似的veth对。如通常已知的那样,网桥在层2(layer2,l2)操作并且独立于协议。l2网络层负责物理寻址、纠错和为介质准备信息。网桥是以独立于协议的方式将两个独立的网段连接在一起的一种方式。数据包基于以太网地址而不是ip地址(例如路由器)转发。转发是在层2(layer2,l2)完成的,因此所有协议都可以通过网桥透传。所有网络流量都经过linux网桥或配置的其它网桥,如openvswitch(ovs)。使用ip表(如图3所示),以便可以将每个容器端口映射到主机端口。每个产生的/实例化的ip地址在每次容器重启时都会改变,这也会带来问题,因为一个容器中的业务必须获取用来访问这些业务的新ip地址。图4示出了叠加网络或l2/l3方案中的通信。叠加网络是建立在另一网络之上的计算机网络。叠加网络中的节点可以视为通过虚拟或逻辑链路连接,其中每个链路对应于底层网络中一个路径,该路径可能穿过许多物理链路。基于l2的方案意味着从类似虚拟以太网的设备捕获l2帧,然后通过tcp/udp/securetcp等其它传输机制发送这些帧。图4示出了如现有技术中可用的在以太网级(虚拟以太网设备)捕获数据包,然后通过tcp/udp等传输来发送数据包的方法。这称为叠加网络或l2/l3方案。然而,图4所示的方法存在与网络效率和操作复杂性相关的问题。网络效率非常低,因为数据在l2(网络栈的层2)被捕获,然后重新封装以将其发送到正确的目的地或通过网桥路由。多主机网络中的l2方案会引起配置错误等操作问题,需要网络专家调测。图5示出了跨两个主机的消息交换的细节。如图5(a)所示:发送方应用(application,app)创建一个到目的地的套接字,发送方应用格式化数据并使用套接字接口发送消息,内核的tcp/ip栈进一步进行处理并发送给网卡。在接收app侧,网卡接收数据,转发到tcp/ip栈,tcp/ip栈又发送给app。当将轻量级虚拟机的默认网络模式用作使用叠加网络的传统模式时,上述图5(a)所执行的步骤需要进一步处理,从而需要额外的cpu和存储器,如图5(b)所示,进而影响网络性能。因此,鉴于以上所述,显而易见的是,当使用轻量级虚拟机时,计算和存储能力的性能不会受到影响,但是网络能力的性能受到严重限制。现今在终端设备中实现的轻量级虚拟机的上述缺陷仅仅是为了概述传统系统/机制/技术的一部分问题,是非详尽的。传统系统/机构/技术的其它问题以及本文描述的各种非限制性实施例的相应益处在阅读以下描述时可变得更加明显。技术实现要素:本
发明内容用于介绍与改善轻量级虚拟机中网络能力的性能有关的概念,在下文的详细描述中进一步描述了这些概念。本
发明内容并非旨在确认所要求保护的主题的基本特征,也并非旨在帮助确定或限制所要求保护的主题的范围。本发明的主要目的在于提供一种机制来提高网络能力的性能,具体地为容器/轻量级虚拟机的性能,从而解决上述技术问题。因此,本发明提供一种允许跨容器/轻量级虚拟机进行通信的应用级交叉开关。所述应用级交叉开关或软件交叉开关或软件定义开关为应用层提供统一的通信接口,抽象了连接管理以及消息发送和接收的细节。软件定义开关/应用级交叉开关利用域套接字可以用于连接网络空间而不影响对主机内消息交换的隔离这一点,提高了主机内虚拟机的消息交换性能。在一实施方式中,软件交叉开关/应用级交叉开关/软件定义开关是能够为应用传送数据的软件开关。应用是从连接管理抽象而来的。在一实施方式中,本发明提供一种通信系统中的节点。所述节点包括处理器以及存储器,所述存储器耦合到所述处理器,所述处理器用于执行存在于所述存储器中的多个模块。所述多个模块包括至少一个接口模块和至少一个处理模块。所述接口模块用于发送和/或接收至少一个消息/数据包,接口由驻留在所述节点中的至少一个应用初始化。所述处理模块用于向所述通信系统中的一个或多个其它节点提供至少一个连接管理以实现统一通信,所述连接管理基于以下至少一项而获得:ip地址、共享存储器密钥、公用通信端口,以及它们的任意组合。在一实施方式中,本发明提供一种通信系统中的节点。所述节点包括处理器以及存储器,所述存储器耦合到所述处理器,所述处理器用于执行存在于所述存储器中的多个模块。所述多个模块包括至少一个交叉开关处理模块。所述交叉开关处理模块用于:使用至少一个交叉开关库接口接收由驻留在所述节点中的至少一个应用初始化的至少一个消息/数据包;验证所述消息/数据包的目的地,所述目的地为同一节点、不同节点或其任意组合;如果所述消息/数据包的所述目的地为同一节点,则在所述同一节点中创建/使用开放域套接字连接;或者基于在所述消息/数据包中接收的一个或多个其它节点的ip地址将所述消息/数据包传送到所述其它节点,所述其它节点包括轻量级虚拟机进程。在一实施方式中,本发明提供一种通信系统。所述通信系统包括:多个主机设备和多个服务器设备;处理器;以及嵌入所述处理器的至少一个交叉开关。所述交叉开关与所述主机设备和所述服务器设备互连,用于为所述主机设备和/或所述服务器设备之间的通信提供统一的通信接口。所述交叉开关用于:使用至少一个交叉开关库接口接收由驻留在所述主机中的至少一个应用初始化的至少一个消息/数据包;验证所述消息/数据包的目的地,所述目的地为所述主机、所述服务器或其任意组合;如果所述消息/数据包的所述目的地为同一节点,则在同一主机设备和/或服务器设备中创建/使用开放域套接字连接;或者基于在所述消息/数据包中接收的至少一个其它主机/服务器设备的ip地址,将所述消息/数据包传送到所述其它主机/服务器设备,所述其它主机/服务器设备包括轻量级虚拟机进程。在一实施方式中,本发明提供一种由通信系统中的节点执行的方法。所述方法包括:至少一个接口发送和/或接收由驻留在所述节点中的至少一个应用初始化的至少一个消息/数据包;至少一个处理模块向所述通信系统中的一个或多个其它节点提供至少一个连接管理以实现统一通信,所述连接管理基于以下至少一项而获得:ip地址、共享存储器密钥、公用通信端口,以及它们的任意组合。在一实施方式中,本发明提供一种由通信系统中的节点执行的方法。所述方法包括:使用至少一个交叉开关库接口接收由驻留在所述节点中的至少一个应用初始化的至少一个消息/数据包;验证所述消息/数据包的目的地,所述目的地为同一节点、不同节点或其任意组合;如果所述消息/数据包的所述目的地为同一节点,则在所述同一节点中创建使用开放域套接字连接;或者基于在所述消息/数据包中接收的一个或多个其它节点的ip地址将所述消息/数据包传送到所述其它节点,所述其它节点包括轻量级虚拟机进程。与现有技术相比,本发明的主要优点在于,本发明提供一种软件交叉开关或应用交叉开关或软件定义开关,其向在轻量级虚拟机中运行的应用提供网络抽象,简化了应用开发/部署并提高了网络性能。此外,本发明适用于物理机(physicalmachine,pm),能运用于运行多个虚拟机的物理机(physicalmachinerunningmanyvirtualmachine,pm-vm)、能运用于运行多个虚拟机且每个虚拟机运行多个轻量级虚拟机的物理机(physicalmachinerunningmanyvirtualmachine,eachvirtualmachinerunningmanylightweightvirtualmachines,pm-vm-lvm),还能运用于pm-lvm部署组合。与现有技术相比,本发明实现的网络性能更好,因为主机内轻量级虚拟机通信的开销很少。与现有技术相比,通过本发明,简化了多主机网络,因为本地交叉开关使用域套接字将消息转发至网关交叉开关,无需额外的消息封装。与现有技术相比,通过本发明,无需iptable规则、端口映射等网络域配置,通过减少操作开销仍能实现更好的网络性能。此外,与现有技术相比,通过本发明,对于主机内跨轻量级虚拟机的消息交换而言,所提供的性能与本地域套接字提供的性能相同,不过由于如登录等操作和维护需求,可能会下降10%。此外,对于跨主机轻量级虚拟机的消息交换而言,性能将优于开源市场上的叠加网络方案。以上提到的与第一实施方式有关的各种选项和优选实施例也适用于其它实施方式。附图说明该详细说明是参考附图给出的。在附图中,参考编号最左边的数字表示所述参考编号在该附图中首次出现。所有附图使用相同数字指代相同特征的组件。图1示出了使用(a)veth对和(b)域套接字的网络命名空间通信;图2示出了docker中的网络设置;图3示出了docker中的内部布置;图4示出了叠加网络或l2/l3方案;图5示出了跨两个主机(a)发送方侧和接收方的的消息交换,以及(b)消息接收的处理成本;图6示出了根据本主题的实施例的使用应用级交叉开关进行的跨容器/轻量级虚拟机通信;图7示出了根据本主题的实施例的交叉开关设计和使用交叉开关进行的处理;图8示出了根据本主题的实施例的同一主机、不同容器场景中的操作顺序流程;图9示出了根据本主题的实施例的不同主机、不同容器中的操作顺序流程;图10示出了根据本主题的实施例的一种通信系统中的节点;图11示出了根据本主题的实施例的一种通信系统中的节点;图12示出了根据本主题的实施例的一种由通信系统中的节点执行的方法。应理解,附图是为了说明本发明的概念,可能未按比例绘制。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。本发明可以通过多种方式实施,可实施为过程、装置、系统、合成物质、计算机可读存储介质等的计算机可读介质,或其中的程序指令通过光或电通信链路发送的计算机网络。在本说明书中,这些实施方式或者本发明可采取的任何其它形式都可称为技术。通常,可在本发明的范围内改变所公开过程中的步骤的顺序。下文提供本发明的一个或多个实施例的详细描述以及图示本发明原理的附图。本发明结合这些实施例进行描述,但是本发明不限于任何实施例。本发明的范围仅由权利要求限制,并且本发明包括许多替代物、修改和等同物。下文的描述中阐述了许多具体细节,以便透彻理解本发明。这些详细内容供示例之用,在没有这些具体细节中的一些或全部的情况下,本发明仍可根据权利要求书实施。为清楚起见,未详细描述有关本发明的
技术领域
:中已知的技术资料,以免对本发明产生不必要的混淆。在下文的详细描述中,阐述了许多具体细节以透彻理解本发明。然而,本领域技术人员将理解,没有这些具体细节也可实践本发明。在其它情况下,未详细描述公知的方法、过程、组件、模块、单元和/或电路,以免混淆本发明。尽管本发明实施例在这方面不受限制,但使用诸如“处理”、“运算”、“计算”、“确定”、“建立”、“分析”、“检查”等术语的论述可指计算机、计算平台、计算系统或其它电子计算设备的操作和/或处理,将计算机寄存器和/或存储器内表示为物理量(例如电量)的数据处理和/或转换为计算机寄存器和/或存储器或可存储指令以执行操作和/或处理的其它非瞬时性信息存储介质内的同样表示为物理量的其它数据。尽管本发明实施例在这方面不受限制,但是在本文中使用的术语“许多”和“多个”可包括例如“若干”或“两个或更多”。在整个说明书中可使用术语“许多”或“多个”来描述两个或更多组件、设备、元件、单元、参数等。除非明确指出,否则这里所描述的方法实施例不限于特定顺序或次序。另外,所描述的一部分方法实施例或其元素可以同步、同时或并行发生或执行。当使用轻量级虚拟机时,计算和存储能力的性能不受影响,但网络能力的性能严重受限。因此,本发明提供了一种允许跨容器/轻量级虚拟机进行通信的应用级交叉开关。如图6所示的应用级交叉开关或软件交叉开关或软件定义开关为应用层提供统一的通信接口,抽象了连接管理以及消息发送和接收的细节。软件定义开关/应用级交叉开关利用域套接字可以用于连接网络空间而不影响对主机内消息交换的隔离这一点,提高了主机内虚拟机的消息交换性能。在一实施方式中,软件交叉开关/应用级交叉开关/软件定义开关是能够为应用传送数据的软件开关。应用是从连接管理抽象而来的。公开了用于提高虚拟机中消息交换的性能的轻量级虚拟机之间的软件定义开关的系统、方法和节点。虽然描述了使用主机内核资源的轻量级虚拟机之间的软件定义开关的系统和方法的各方面,但是本发明可在任何数量的不同计算系统、环境和/或配置中实现,在以下示例性系统、设备/节点/装置和方法的上下文中描述了实施例。下文借助于示例性图示和一个或多个示例来解释本发明实施例。然而,这些示例性图示和示例是用于说明目的,以便更好地理解本发明,不应被解释为对本发明范围的限制。现在参考图7,示出了根据本主题的实施例的交叉开关设计和使用交叉开关进行的处理。在一实施方式中,如图7所示,交叉开关可设计为两部分:交叉开关库和交叉开关进程。在一实施方式中,交叉开关库提供一种接口,即用于发送和接收消息的应用程序接口(applicationprograminterface,api)。应用必须初始化这个库,暴露初始化api也是为了这个目的。交叉开关库将在内部使用共享存储器,以便在交叉开关库与交叉开关进程之间更快地交换消息。在一实施方式中,交叉开关进程提供其它虚拟机之间的实际连接管理。每个交叉开关进程必须配置相关的详细信息,如ip地址、共享存储器密钥和共用通信端口。一般而言,共用通信端口设为9999。在一实施方式中,每个轻量级虚拟机可部署至少一个交叉开关,称为本地交叉开关。要在该轻量级虚拟机中运行的所有应用都必须与交叉开关库链接。要在该轻量级虚拟机中运行的所有应用都与交叉开关库链接。例如,g++-gmyapp.cpp–l/home/abc/lib-lcrossbar–omyapp,其中myapp(应用)链接到交叉开关库并使用其api来发送/接收消息。在一实施方式中,可在主机级部署至少一个交叉开关,称为网关交叉开关。每个本地交叉开关都配置了网关交叉开关的地址。本领域技术人员可注意到并理解的是,每个启动的轻量级虚拟机在网络设置中必须具有唯一的ip。在一实施方式中,如果消息被指定给不同的轻量级虚拟机中的进程,则交叉开关库可以具有用于将消息放入本地交叉开关进程队列的信息(目的地址)。在一示例中,如果目标ip与当前主机ip不同,则目的地不是主机。因此,必须将消息放入网络队列而非本地交叉开关进程队列。在一实施方式中,交叉开关进程将轮询消息,在有消息事件时,会检查目的进程是在同一主机还是在不同主机内。在一实施方式中,如果目的地是同一主机,则交叉开关进程将创建/使用与目的轻量级虚拟机进程之间的已开放域套接字连接。在一实施方式中,如果目的地是不同主机,则交叉开关进程可将消息转发到在该主机中运行的网关交叉开关进程。在一实施方式中,网关交叉开关将配置有其它主机网关的路由。网关交叉开关将基于目的地ip找到其它主机网关,并使用tcp传送来转发消息。网关交叉开关将使用网络的主机模式,以获得更好的性能。在一实施方式中,如果发生任何更新,如添加新的网关交叉开关,则该信息将自动同步到整个网关交叉开关。可能会有一个时间窗口用来进行这一同步,在此期间,应用可能会收到未到达目的地的失败消息。添加新的网关交叉开关可以看作网络管理活动,因此需通过某些通知业务来设计应用,以达到同样的目的。再次参考图7,在一实施方式中,交叉开关进程可具有共享存储器管理进程、域套接字连接线程进程、域套接字监听线程进程、tcp套接字连接线程进程、tcp套接字监听线程进程、发送接收线程进程。在一实施方式中,共享存储器管理进程可以创建/附接到给定的共享存储器,从共享存储器区域创建队列,以及将应用映射到队列。在一实施方式中,域套接字连接线程进程可以与其它本地轻量级虚拟机进程建立连接,并且如果目的应用在不同主机的轻量级虚拟机中,则域套接字连接线程进程可将应用消息转发到网关交叉开关。在一实施方式中,域套接字监听线程进程可接收新连接请求并处理该新连接请求以供后续使用。在一实施方式中,tcp套接字连接线程进程可与其它主机中的其它网关交叉开关建立连接,并且更新路由(网关ip、ip掩码的映射)。在一实施方式中,tcp套接字监听线程进程可接收新连接请求并处理该新连接请求,例如准备数据结构,以供后续使用。在一实施方式中,发送接收线程进程可浏览由监听/连接线程创建的数据结构,检索合适的套接字句柄,以及发送/接收消息。再次参考图7,在一实施方式中,交叉开关库可具有共享存储器管理进程和接口。在一实施方式中,共享存储器管理进程可以创建/附接到给定的共享存储器,从共享存储器区域创建/附接队列,以及将app映射到队列。在一实施方式中,接口用于发送或接收或者发起或丢弃所接收的数据包或消息。现在参考图8,示出了根据本主题的实施例的在同一主机、不同容器场景中的操作顺序流程。现在参考图9,示出了根据本主题的实施例的在不同主机、不同容器中的操作顺序流程。现在参考图10和图11,示出了根据本主题的实施例的一种通信系统中的节点1000。在一实施方式中,公开了节点1000。尽管通过在节点1000中实现本发明来说明本主题,但是可以理解的是,本发明也可以在各种计算系统中实现,例如膝上型计算机、台式计算机、笔记本电脑、工作站、大型计算机、服务器、网络服务器等。将会理解,节点1000可以被多个用户或驻留在数据库系统中的应用访问。节点1000的示例可以包括但不限于便携式计算机、个人数字助理、手持式节点、传感器、路由器、网关和工作站。节点1000可以通信地耦合到其它节点或某一节点或装置以形成网络(未示出)。其它节点或某一节点或装置的示例可以包括但不限于便携式计算机、个人数字助理、手持式节点、传感器、路由器、网关和工作站。在一实施方式中,网络(未示出)可为无线网络、有线网络或其组合。该网络可以实现为不同类型的网络之一,诸如gsm、cdma、lte、umts、内联网、局域网(localareanetwork,lan)、广域网(wideareanetwork,wan)、因特网等。该网络可为专用网络或共享网络。共享网络表示使用例如超文本传输协议(hypertexttransferprotocol,http)、传输控制协议/互网络协议(transmissioncontrolprotocol/internetprotocol,tcp/ip)、无线应用协议(wirelessapplicationprotocol,wap)等各种协议进行相互通信的不同类型网络的组合。此外,该网络可包括各种网络节点,包括路由器、网桥、服务器、计算节点、存储节点等。节点1000可以包括处理器1002、接口1004和存储器1006。处理器1002可实现为一个或多个微处理器、微计算机、微控制器、数字信号处理器、中央处理器、状态机、逻辑电路和/或基于操作指令操纵信号的任何节点。至少一个处理器用于获取并执行存储在存储器1006中的计算机可读指令或模块,等等。接口(i/o接口)1004可包括各种软件和硬件接口,例如网络接口、图形用户接口等。i/o接口可允许数据库系统、第一节点、第二节点和第三节点直接与用户交互。此外,i/o接口可使节点1000能够与网络服务器和外部数据服务器(未示出)等其它节点、节点或计算节点进行通信。i/o接口可以促进多种网络和协议类型内的多种通信,包括gsm、cdma、lan、电缆等有线网络以及wlan、蜂窝或卫星等无线网络。i/o接口可包括一个或多个端口,用于将多个节点彼此连接或连接到另一服务器。i/o接口可通过提供给接口的屏幕来提供用户与节点1000之间的交互。存储器1006可包括本领域已知的任何计算机可读介质,计算机可读介质包括例如易失性存储器,如静态随机存取存储器(staticrandomaccessmemory,sram)和动态随机存取存储器(dynamicrandomaccessmemory,dram),和/或非易失性存储器,如只读存储器(readonlymemory,rom)、可擦除可编程rom、闪存、硬盘、光盘和磁带。存储器1006可包括多个指令、模块或应用,以执行各种功能。存储器包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。在一实施方式中,本发明提供一种通信系统中的节点1000。节点1000包括处理器1002以及存储器1006,存储器1006耦合到处理器1002,处理器1002用于执行存在于存储器1006中的多个模块。多个模块包括至少一个接口模块1008和至少一个处理模块1010。接口模块1006用于发送和/或接收至少一个消息/数据包,接口由驻留在节点中的至少一个应用初始化。处理模块1010用于向通信系统中的一个或多个其它节点提供至少一个连接管理以实现统一通信;连接管理基于以下至少一项而获得:ip地址、共享存储器密钥、公用通信端口,以及它们的任意组合。在一实施方式中,本发明提供一种通信系统中的节点1000。节点1000包括处理器1002以及存储器1006,存储器1006耦合到处理器1002,处理器1002用于执行存在于存储器1006中的多个模块。多个模块包括至少一个交叉开关处理模块1102。交叉开关处理模块1102用于使用至少一个交叉开关库接口接收由驻留在节点中的至少一个应用初始化的至少一个消息/数据包;验证消息/数据包的目的地,目的地为同一节点、不同节点或其任意组合;如果消息/数据包的目的地为同一节点,则在该同一节点中创建/使用开放域套接字连接;或者基于在消息/数据包中接收的一个或多个其它节点的ip地址将消息/数据包传送到其它节点,其它节点包括轻量级虚拟机进程。在一实施方式中,本发明提供一种通信系统。通信系统包括:多个主机设备和多个服务器设备;处理器;以及嵌入处理器的至少一个交叉开关。交叉开关与主机设备和服务器设备互连,用于为主机设备和/或服务器设备之间的通信提供统一的通信接口。交叉开关用于:使用至少一个交叉开关库接口接收由驻留在主机中的至少一个应用初始化的至少一个消息/数据包;验证消息/数据包的目的地,目的地为主机、服务器或其任意组合;如果消息/数据包的目的地为同一节点,则在同一主机设备和/或服务器设备中创建/使用开放域套接字连接;或者基于在消息/数据包中接收的至少一个其它主机/服务器设备的ip地址,将消息/数据包传送到其它主机/服务器设备,其它主机/服务器设备包括轻量级虚拟机进程。在一实施方式中,接口模块1008还用于将与应用相关联的消息/数据包排到至少一个共享存储器内的至少一个队列中。在一实施方式中,处理模块1010还用于:提取队列中与应用相关联的消息/数据包,以及验证消息/数据包的目的地,目的地为同一节点、不同节点或其任意组合。在一实施方式中,如果消息/数据包的目的地为同一节点,则处理模块还用于在该同一节点中创建/使用开放域套接字连接。在一实施方式中,如果消息/数据包的目的地为不同节点,则处理模块还用于基于目的地的ip地址传送消息/数据包。在一实施方式中,基于ip地址的消息/数据包使用预定义/预配置且预存储在处理模块中的至少一个路由来传送,该路由遵循tcp传送机制。在一实施方式中,处理模块1010用于在不影响对主机内消息交换的隔离的情况下,使用域套接字来连接网络空间。在一实施方式中,与其它节点相关联的ip地址、共享存储器密钥、公用通信端口或它们的任意组合被预存储/预配置在节点的存储器中。在一实施方式中,接收的消息/数据包存储在至少一个共享存储器内的至少一个队列中。在一实施方式中,交叉开关处理模块1102还用于提取存储在队列中的相关联的消息/数据包,从而验证消息/数据包的目的地。在一实施方式中,使用预定义/预配置且预存储在交叉开关处理模块中的至少一个路由将消息/数据包传送到其它节点。该路由遵循tcp传送机制。在一实施方式中,交叉开关处理模块1102还用于与通信系统中的其它节点建立连接,其它节点优选地包括轻量级虚拟机进程,连接基于以下至少一项而获得:ip地址、共享存储器密钥、公用通信端口,以及它们的任意组合。在一实施方式中,通信系统中的其它节点在接收到消息/数据包后用于:通过基于接收的消息/数据包创建至少一个数据结构来处理新的连接请求;更新预定义/预配置且预存储在交叉开关处理模块中的路由,优选地,路由基于接收的消息/数据包通过网关ip、ip掩码或其任意组合的映射进行更新;扫描所创建的数据结构以提取合适的套接字句柄;从而,如果消息/数据包的目的地为同一节点,则在该同一节点中创建/使用开放域套接字连接;或者基于在消息/数据包中接收的一个或多个其它节点的ip地址将消息/数据包传送到其它节点。现在参考图12,示出了根据本主题的实施例的一种由通信系统中的节点执行的方法。该方法可在计算机可执行指令这一普通上下文中描述。通常,计算机可执行指令可以包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、流程、模块、函数等。该方法还可在分布式计算环境中实施,在分布式计算环境中,功能由通过通信网络链接的远程处理设备执行。在分布式计算环境中,计算机可执行指令可位于本地和远程计算机存储介质这二者中,包括存储器存储设备。描述方法的顺序不应解释为限制,可以按任何顺序组合任何数量的所述方法步骤来实现该方法或替代方法。另外,可在不脱离本文所述主题的保护范围的情况下从该方法中删除单个步骤。此外,该方法可以在任何合适的硬件、软件、固件或其组合中实施。然而,为了便于说明,在下文描述的实施例中,可认为该方法是在上述节点1000中实施的。现在参考图12,公开了一种由通信系统中的节点1000执行的方法。在步骤1202处,发送或接收由驻留在节点1000中的至少一个应用初始化的至少一个消息/数据包。消息/数据包由节点1000的至少一个接口发送或接收。在步骤1204处,将与应用相关联的消息/数据包排在/存储在节点1000的至少一个共享存储器内的至少一个队列中。在步骤1206处,提取存储在队列中的与应用相关联的消息/数据包。在步骤1208处,节点1000验证队列中的与应用相关联的消息/数据包的目的地。目的地为同一节点、不同节点或其任意组合。在一实施方式中,如果消息/数据包的目的地为同一节点,则处理模块还用于在该同一节点中创建/使用开放域套接字连接。在一实施方式中,如果消息/数据包的目的地为不同节点,则处理模块还用于基于目的地的ip地址传送消息/数据包。在步骤1210处,与通信系统中的一个或多个其它节点建立至少一个连接以实现统一通信;连接管理基于以下至少一项而获得:ip地址、共享存储器密钥、公用通信端口,以及它们的任意组合。在一实施方式中,在而影响主机内消息交互的隔离的情况下,使用一个或多个域套接字来连接网络空间。与其它节点相关联的ip地址、共享存储器密钥、公用通信端口或它们的任意组合可预存储/预配置在节点的存储器中。在一实施方式中,其它节点优选地包括轻量级虚拟机进程,连接基于以下至少一项而获得:ip地址、共享存储器密钥、公用通信端口,以及它们的任意组合。通信系统中的其它节点在接收到消息/数据包后,通过基于接收的消息/数据包创建至少一个数据结构来处理新的连接请求;更新预定义/预配置且预存储在交叉开关处理模块中的路由,优选地,路由基于接收的消息/数据包通过网关ip、ip掩码或其任意组合的映射进行更新;扫描所创建的数据结构以检索合适的套接字句柄;如果消息/数据包的目的地为同一节点,则在该同一节点中创建/使用开放域套接字连接;或者基于在消息/数据包中接收的一个或多个其它节点的ip地址将消息/数据包传送到其它节点。在步骤1212处,基于目的地的ip地址传送消息/数据包。在一实施方式中,基于ip地址的消息/数据包使用预定义/预配置且预存储在处理模块中的至少一个路由来传送,该路由遵循tcp传送机制。与现有技术相比,本发明的主要优点为网络性能更好,因为主机内轻量级虚拟机通信的开销很少。此外,简化了多主机网络,因为本地交叉开关使用域套接字将消息转发至网关交叉开关,无需额外的消息封装。此外,实施本发明无需iptable规则、端口映射等网络域配置。在一实施方式中,由于软件交叉开关或应用交叉开关或软件定义开关向轻量级虚拟机中运行的应用提供网络抽象,所以本发明实现了技术进步,简化了应用开发/部署并改善了网络性能。在一实施方式中,本发明可在运行轻量级虚拟机并且需要高性能/可扩展网络需求的任何应用中实现,这些应用可以使用该方法。对于老式应用,需将api传送到交叉开关库。新的应用可以将其传输api基于交叉开关库。本领域技术人员可理解,可使用任何已知的或新的算法来实施本发明。然而,需要注意的是,不管使用何种已知的或新的算法,本发明提供一种可在备份操作中使用的方法,以实现上述提到的益处和技术进步。本领域普通技术人员能够认识到,结合本说明书所公开实施例中描述的示例,可以通过电子硬件或计算机软件与电子硬件的组合实现单元和算法步骤。功能是由硬件还是由软件执行取决于技术方案的特定应用和设计约束条件。本领域技术人员可使用不同方法实现每个特定应用的所描述功能,但是不应认为该实现超出了本发明范围。本领域技术人员可清楚地理解,出于方便和描述简洁的目的,对于前述系统、装置和单元的详细工作过程,可参考前述方法实施例中的对应过程,此处不再赘述。在本发明提供的若干实施例中,应理解,所公开的系统、装置和方法可通过其它方式实现。例如,所描述的装置实施例仅仅是示例性的。例如,单元划分仅仅是逻辑功能划分,在实际实现中可以是其它划分。例如,可将多个单元或部件合并或集成到另一系统中,或可忽略或不执行部分特征。另外,可通过一些接口实现所显示或论述的互相耦合或直接耦合或通信连接。装置或单元之间的间接耦合或通信连接可通过电子、机械或其它形式实现。当这些功能以软件功能单元的形式实现以及作为单独产品销售或使用时,它们可存储在计算机可读存储介质中。基于这种理解,本发明的技术方案基本上或构成现有技术的部分或技术方案的部分可通过软件产品的形式实现。计算机软件产品存储在存储介质中,包括若干指令,用于指示计算机节点(其可为个人计算机、服务器或网络节点)执行本发明实施例中所描述的方法的所有或部分步骤。上述存储介质包括:可以存储程序代码的任何介质,例如usb盘、可移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁盘或光盘。除非另有明确规定,否则相互通信的设备不必连续地相互通信。另外,相互通信的设备可以直接通信或通过一个或多个媒介间接通信。当在本文中描述单个设备或物品时,显而易见的是,可使用不止一个设备/物品(不管它们是否能配合)来代替该单个设备/物品。类似地,在本文描述了不止一个设备或物品(无论它们是否能配合)的情况下,显而易见的是,可使用单个设备/物品来代替所述不止一个设备或物品,或可使用不同数量的设备/物品来代替所示数量的设备或程序。或者,设备的功能和/或特征可由一个或多个没有明确说明具有这种功能/特征的其它设备来体现。因此,本发明的其它实施例不需要包括该设备本身。最后,出于可读性和指导性的目的已经主要选择了说明书中使用的语言,也可不选择该语言来描述或限制本发明的主题。因此,本发明的范围并非意在由这一详细描述限制,而是由本文应用基于的所附任何权利要求限制。因此,公开本发明实施例旨在举例说明,而非限制所附权利要求阐述的本发明范围。关于本文中任何复数和/或单数术语的使用,本领域技术人员可以从复数形式转换为单数形式,和/或从单数形式转换为复数形式,以适合具体环境和/或应用。为清楚起见,本文可明确阐述单数/复数形式。尽管已针对结构特征和/或方法用语言文字描述了使用主机内核资源的轻量级虚拟机之间的软件定义开关的系统和方法的实施方式,但应当理解,所附权利要求不一定限于所描述的具体特征或方法。这些具体特征和方法作为使用主机内核资源的轻量级虚拟机之间的软件定义开关的系统和方法的实施方式的示例而公开。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1