CN107925616B - 用于控制通信的方法、装置和计算机可读介质 - Google Patents

用于控制通信的方法、装置和计算机可读介质 Download PDF

Info

Publication number
CN107925616B
CN107925616B CN201680048359.3A CN201680048359A CN107925616B CN 107925616 B CN107925616 B CN 107925616B CN 201680048359 A CN201680048359 A CN 201680048359A CN 107925616 B CN107925616 B CN 107925616B
Authority
CN
China
Prior art keywords
virtual
packets
server
servers
component
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
Application number
CN201680048359.3A
Other languages
English (en)
Other versions
CN107925616A (zh
Inventor
M.埃尔金
蔡志贤
J.曾
王任
J.中岛
戴宗元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN107925616A publication Critical patent/CN107925616A/zh
Application granted granted Critical
Publication of CN107925616B publication Critical patent/CN107925616B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/306Route determination based on the nature of the carried application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/103Active monitoring, e.g. heartbeat, ping or trace-route with adaptive polling, i.e. dynamically adapting the polling rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)

Abstract

各种实施例通常涉及用于提高在通信服务器内的VM对之间交换分组的效率的技术。一种装置可以包括:处理器组件;网络接口,用于将处理器组件耦合到网络;虚拟交换机,用于分析将通过网络和通信服务器在端点设备之间交换的分组集合中的至少一个分组的内容,并且基于该内容将分组集合路由通过多个虚拟服务器中的一个或多个虚拟服务器;以及多个虚拟服务器中的第一虚拟服务器的传送组件,用于基于路由规则来确定是将分组集合路由到虚拟交换机还是以绕过虚拟交换机的方式将分组集合传送到多个虚拟服务器中的第二虚拟服务器。

Description

用于控制通信的方法、装置和计算机可读介质
背景技术
包括有线和无线通信系统二者的各种通信系统采用服务器来控制通信业务的流、提供安全性和其他服务、跟踪针对服务使用的每个实例的数据量和/或时间量等。这样的服务器通常在地理上遍布在这样的通信系统所基于的网络的各个区域上,包括在有线交换点处和/或在收发器设施附近。
在最近的趋势中,在每个这样的地理各异的位置处的多个单独的服务器的集合被单个物理服务器所替代,所述物理服务器各自都能够执行单独的虚拟机(VM)内的那些单独的服务器的每一个的各种不同功能。单个服务器的性能和处理能力中的不断改进已经使得单个服务器能够采用这种虚拟化来完成曾经需要多个单独的服务器的事务,但是却更便宜并且消耗更少的电能。然而,在现在是单个服务器的多个虚拟机之中,在完全重新创建那些多个单独服务器的每一个的处理环境中依然存在挑战。
附图说明
图1图示出了通信系统的示例实施例。
图2A和图2B一起图示出了通信服务器的示例实施例。
图3A、图3B和图3C一起图示出了在两个虚拟服务器之间选择性地触发分组集合的直接传送的示例实施例。
图4A、图4B和图4C各自图示出了在两个虚拟服务器之间直接传送分组集合的示例实施例。
图5A和图5B一起图示出了使用分组集合的已获悉的路径来控制虚拟网络接口的示例实施例。
图6A和图6B一起图示出了使用分组缓冲器的充满级别来控制对分组进行处理的速率的示例实施例。
图7、图8、图9、图10和图11各自图示出了根据实施例的逻辑流程。
图12图示出了根据实施例的处理架构。
具体实施方式
各种实施例通常涉及用于提高在通信服务器内的VM对之间交换分组的效率的技术。当由通信服务器接收的分组集合沿着通过通信服务器内实例化的各种VM组合的各种路径前进时,这些分组集合通常可以通过也在通信服务器内实例化的虚拟交换机而从一个VM前进到另一个VM。每当将分组集合从虚拟交换机传送到VM之一时,或者反之,则该分组集合可以传递通过虚拟交换机的虚拟网络接口和VM的对应虚拟网络接口。通过虚拟网络接口的每个通道强加了一定量的延迟,该延迟被添加到通过各种VM而被处理的分组集合所需的总时间量,这对于通过通信服务器而在端点设备之间交换的分组集合而言可能是有问题的,因为太大的总延迟量可能会不利地影响这些端点设备之间的通信质量。此外,虚拟交换机可以对于每单位时间它能够传达的分组的数量具有一个总吞吐量限制,并且通过虚拟交换机而在VM之间交换的分组集合的每个实例可以消耗该总吞吐量限制的一些,使得可能会更快达到该总的限制。这可能导致通过通信服务器的分组吞吐量中的降级,因为达到虚拟交换机的总吞吐量限制,使得分组处理中的错误可能发生并且需要被纠正,和/或其他事件可能被触发。为了解决这个问题,至少一对VM可以协作来以绕过虚拟交换机和将这些VM耦合到虚拟交换机的多个虚拟网络接口的方式直接将分组集合从一个VM传送到另一个VM,从而显著地降低了强加的总延迟量和/或提高了通过通信服务器的分组集合的总吞吐量速率。可替代地或者另外地,在至少一对VM之间的如此绕过虚拟交换机的这种协作可以充分地降低虚拟交换机成为用于分组集合的路由的瓶颈的可能性,可以改善其总体可伸缩性,使得单个通信服务器可以变得能够在其中支持更多数量的虚拟服务器的操作。
更具体地,在通信网络的通信服务器内生成的多个VM可以通过也在通信服务器内生成的虚拟交换机来在该通信服务器内相互通信。每个VM可以被配置为作为否则可能是提供支持通信网络的端点设备之间的通信的特定服务的物理上分离且不同的服务器的虚拟版本来操作。这样的服务可以包括但不限于监视针对两个或更多通信设备之间的每个通信实例所交换的数据的数量和/或持续时间,建立和/或维护针对此类通信的安全性,支持通信设备在在单个通信网络的部分之间和/或在不同的通信网络之间的移动等等。虚拟交换机可以被配置为作为否则可能是耦合前述物理上分离且不同的服务器的物理上分离且不同的网络交换机的虚拟版本来操作。虚拟交换机可以在通信服务器的主机处理环境内被生成,其中可以执行实现生成每个VM的控制例程。在虚拟交换机内且在每个VM内可以被定义的是一个或多个虚拟网络接口,通过该一个或多个虚拟网络接口,可以将每个VM耦合到虚拟交换机,并且通过该一个或多个虚拟网络接口,可以将虚拟交换机耦合到通信服务器的一个或多个网络接口,通过该一个或多个网络接口,通信服务器耦合到通信网络。
在通信网络内的通信服务器的操作期间,可以通过通信服务器在端点设备之间交换分组集合。分组集合可以表示可以通过通信网络(包括通过一个或多个这样的通信服务器)在通信设备之间交换的语音和/或非语音音频、静止图像、运动视频、文档、可执行指令和/或各种其他类型的数据中的任何一种。这样的分组集合可能需要以特定的顺序前进通过特定的VM,以使得能够对这些VM中的每个VM内的那些分组执行特定形式的处理,使得这些分组可以被称为遵循特定的“路径”(通常也被称为“服务功能链”)通过这些VM。由于VM可以各自耦合到虚拟交换机以通过虚拟交换机相互通信,所以从一个VM到另一个VM的任何这种分组交换可以传递通过虚拟交换机。因此,通过多个VM的特定分组集合所遵循的路径可能需要在从一个VM传递到另一个VM的每个实例期间传递通过虚拟交换机的多个实例。换言之,作为通过那些VM前进的一部分,该路径可以多次“循环通过”虚拟交换机。结果,路径可以通过每个VM的和虚拟交换机的多个虚拟网络接口前进。
虚拟交换机可以维护存储一组规则的数据结构,通过该组规则,在通过通信服务器的物理网络接口从通信网络首次接收到分组集合时以及在当从虚拟交换机将分组集合所传输到的VM向该虚拟交换机传输回该分组集合时的每个场合时,虚拟交换机确定哪个VM传输该分组集合。该组规则可以使得能够基于多种因素中的任何因素来确定哪个VM在那些场合的每个场合上发送分组集合,所述多种因素包括但不限于:在构成该分组集合的一个或多个分组的(一个或多个)报头中指定的目的地地址,和/或在一个或多个分组的(一个或多个)有效载荷中传达的数据的类型和/或大小。更具体地,这样的数据结构可以指定当分组集合满足多种标准集合的任何标准时要采取什么动作的规则,这些动作包括并限于修改分组集合的一部分,完全丢弃分组集合,将分组集合转发到特定端口等等。不幸的是,通过虚拟交换机在VM之间的各种分组集合所遵循的各种路径的“循环”会增加相当大的延迟到针对通过通信服务器在端点设备之间的分组集合的通道的总延迟。具体而言,虚拟交换机与其中一个VM之间的每次交换需要通过虚拟交换机内的虚拟网络接口和该VM内的另一个虚拟网络接口的分组集合的通道,并且通过虚拟网络接口的每个这样的通道可添加延迟。此外,虚拟交换机与其中一个VM之间的每次交换可以将分组传递通过虚拟交换机的速率推到更接近虚拟交换机的总吞吐量限制。仍另外,即使在没有遇到吞吐量的总体限制的情况下,虚拟交换机的每次这样的使用都导致虚拟交换机的资源消耗,诸如但不限于处理资源、储存空间、电力等等。可能被认为希望的是保存这些资源供一个或多个VM使用,而不是由虚拟交换机使用。
作为降低通过虚拟网络接口的分组集合的这种通道的数量以降低延迟的一部分,一对或多对VM可以能够一起协作以直接交换其间的分组集合以便绕开虚拟交换机。这样一对VM中的一个VM可以接收用于确定从虚拟交换机接下来将分组集合传输到哪个VM以及如何进行该确定的规则的子集(例如,必须被传送到特定虚拟机的分组集合满足的一个或多个标准)。VM中的那一个VM可以使用规则的那个子集来确定是将分组集合传输回虚拟交换机还是将该分组集合直接传输给该对中的另一个VM。更确切地说,规则的子集可以指定可以在一个VM内有效执行的相对简单的测试。作为示例,这种测试可能需要分析分组集合中的分组之一的报头内的目的地地址和/或其他信息,以查看是否满足特定标准以确定将该分组集合传输到哪里。然后,通过该测试而无法确定为是直接传输给该对中的另一个VM的分组的所有分组集合默认情况下可以由那一个VM传输回虚拟交换机,以使得虚拟交换机能够应用由更充分的规则集合所指定的更复杂的一组测试,以确定接下来在哪里传输那些分组集合。可能认为需要避免额外消耗处理、储存和/或其他资源,将需要这些资源来对在一个VM内处理的每个分组集合执行更广泛的一组测试,并且使更加广泛的一组测试的执行留到虚拟交换机。
在各种实施例中,这样一对VM中的一个或两个均可以被实例化为包括根据这样的规则子集执行这种相对简单测试的传送组件。在一些实施例中,可以向两个VM中的每一个提供访问共享存储器空间的许可。在这样的实施例中,VM之一的传送组件可以存储要被直接传输到共享存储器空间内的另一个VM的分组集合,以使另一个VM的传送组件能够从中检索该分组集合。在其他实施例中,可以向两个VM中的一个VM提供访问属于另一个VM的存储器空间的一部分的许可。在这样的其他实施例中,两个VM中的一个VM的传送组件可以直接将分组集合存储在该另一个VM的该存储器空间内,以实现将该分组集合传送到该另一个VM。
在仍其他实施例中,通信服务器可以合并能够访问两个VM中的每一个VM的单独的存储器空间的传送控制器,以将分组集合从一个传送到另一个。在这样的仍其他实施例中,传送控制器可以是能够将数据从存储器的一个部分移动到另一个部分的各种基于硬件的组件中的任何一个,包括但不限于直接存储器访问(DMA)控制器或者合并了能够以类似于这种DMA控制器的方式操作的独立处理器的可信赖计算模块(TCM)。两个VM之一的传送组件可以向传送控制器用信号通知将分组集合从一个VM的存储器空间传送到另一个VM的存储器空间。在又其他实施例中,通信服务器的一个或多个处理器组件的一个或多个处理器核心可以采用包括能够用于在属于单独VM的存储器的各部分之间传送数据的一个或多个指令的指令集。两个VM之一的传送组件可以采用一个或多个指令来使这样的处理器核心将分组集合从两个VM之一的存储器空间传送到另一个VM的单独的存储器空间。
在各种实施例中,虚拟交换机内和每个VM内的虚拟网络接口可以以在交换分组中的延迟和对处理资源的需求之间提供不同折衷的各种不同模式进行操作。作为示例,虚拟网络接口的中断驱动操作可以将支持该虚拟网络接口所需的处理资源极大地最小化,但是处理每个中断所需的时间可能如此之长,以至于会将不可接受的延迟量添加到通过该虚拟网络接口的分组的交换。相反,以轮询模式操作虚拟网络接口可以确保以最小延迟通过该虚拟网络接口传达分组,但是轮询的这种使用可能将处理器组件的整个核心的几乎所有处理资源消耗用于仅那一个虚拟网络接口。
虚拟交换机的分组分析器可以分析在通信服务器的网络接口处从通信网络接收的分组集合中的一个或多个分组的内容。然后可以将诸如目的地地址、数据类型和/或数据的一部分的数据大小之类的这类内容与通过通信服务器内的多个VM的已知路径相关,以确定刚刚在网络接口处接收到的分组集合可以采取什么路径。在确定特定分组集合将采取什么路径时,沿着该路径的多个虚拟网络接口中的特定虚拟网络接口可以被抢先配置为以轮询模式操作,以使得该分组集合能够更快地沿着该路径前进,而不沿着该路径的其他虚拟网络接口可以不被如此配置。然而,在已知路径前进通过能够在其间直接交换分组集合的一对VM的情况下,作为使用这种能力来直接交换分组集合的结果,可以使被配置为以轮询模式操作的虚拟网络接口不包括被绕过的虚拟网络接口。
在各种实施例中,与每个VM相关联的虚拟网络接口可以包括用于被循环监视的分组的传输和/或接收的缓冲器,并且可以增加或减少在VM内处理分组的速率,以调节与该VM的虚拟网络接口相关联的这种缓冲器被填充和/或清空的速率以防止缓冲器上溢和/或下溢的实例。在VM的虚拟网络接口处的这种缓冲器上溢或下溢的发生可以由执行与该VM相关联的指令的处理器组件的核心来触发上下文切换,从而使该核心执行完全单独的过程的指令以解决缓冲器上溢或下溢,随后是另一个上下文切换,以恢复执行与该VM相关联的指令。作为示例,由该核心执行指令来维护该VM被抢占,从而有利于在更有特权的上下文中执行VM监视器(VMM)软件的指令,从而执行各种“内务”功能来解决这些事件,随后是返回以执行维护该VM的指令。每个这样的上下文切换可能花费相当长的时间量来执行,并且可能消耗相当多的处理资源,使得可能在执行与VM相关联的指令的恢复中有延时,这可能足够长以至于在分组的处理中引入不可接受的延迟量。
为了防止或者至少最小化对于这样的上下文切换的需求的发生,每个VM的每个这样的缓冲器的充满程度可以被循环地与下溢和/或上溢阈值进行比较,以确定是否调节在该VM中处理分组的速率。在用于在VM处接收分组的缓冲器的充满程度下降足够低到满足或下降低于下溢阈值的情况下,或者在用于从该VM传输分组的缓冲器的充满程度上升到足够高到满足或超过上溢阈值的情况下,可以降低在该VM内处理分组的速率,以降低该接收缓冲器被清空的速率和/或该传输缓冲器被填充的速率。相反,在用于在VM处接收分组的缓冲器的充满程度上升到足够高到满足或超过上溢阈值的情况下,或者在用于从该VM传输分组的缓冲器的充满程度下降足够低到满足或下降低于下溢阈值的情况下,可以增加在该VM内处理分组的速率,以增加该接收缓冲器被清空的速率和/或该传输缓冲器被填充的速率。
通常参考本文所使用的符号和术语,可以根据在计算机或计算机网络上执行的程序过程来呈现随后的详细描述的部分。本领域技术人员使用这些过程性描述和表示来将其工作的实质最有效地传达给本领域其他技术人员。一个过程在这里并且通常被认为是一个导致预期结果的自相一致的操作序列。这些操作是需要对物理量进行物理操纵的那些操作。通常,但不一定,这些量采取能够被存储、传送、组合、比较和以其他方式操纵的电、磁或光信号的形式。主要出于常见用法的原因,有时将这些信号称为比特、值、元素、符号、字符、项、数字等证明是方便的。但是,应该指出的是,所有这些和类似的术语都与适当的物理量相关联,并且仅仅是适用于这些量的方便标签。
此外,这些操纵经常被称为诸如添加或比较之类的术语,其通常与由操作人员执行的心理操作相关联。然而,在本文所描述的形成一个或多个实施例的一部分的任何操作中,操作人员的这种能力在大多数情况下不是必需的或者不是期望的。相反,这些操作是机器操作。用于执行各种实施例的操作的有用机器包括通用数字计算机和/或包括为所需目的专门构造的装置,所述通用数字计算机被存储在其内、根据本文教导而编写的计算机程序选择性地激活或配置。各种实施例还涉及用于执行这些操作的装置或系统。这些装置可以为了所需目的而专门构造,或者可以包括通用计算机。从所给出的描述中可以显现出针对各种这些机器所需的结构。
现在对附图进行参考,其中相同的附图标号通篇用于指代相同的元件。在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对其的透彻理解。然而,可能显而易见的是,可以在没有这些具体细节的情况下实践新颖的实施例。在其他实例中,为了便于其描述,众所周知的结构和设备以框图形式示出。意图是覆盖权利要求范围内的所有修改、等同物和替代方案。
图1图示出了提供通信网络999的通信系统1000的实施例的框图,通过该通信网络999,可以通过通信服务器500在端点设备100之间交换数据分组。如所描绘的,通信系统1000可以合并多个端点设备100、在网络999内的一个或多个位置处的一个或多个中间设备200、和/或至少一个通信服务器500。通信服务器500和/或(一个或多个)中间设备200可以由通信服务提供商(例如公司、政府或其他实体)操作来提供通信服务以使得能够在端点设备100之间交换分组。
在各种实施例中,每个端点设备100可以是各种类型的通信设备中的任何一种,包括但不限于有线或无线电话(例如智能电话)、移动设备(例如平板或膝上型计算机)、固定计算设备(例如台式计算机)、监控设备(例如相机)、远程监视设备(例如地震传感器)等。端点设备100可以通过网络999并通过通信服务器500来交换分组集合以传达各种类型的数据中的任何一种,包括但不限于语音和/或非语音音频、静止图像、运动视频、文档等的。另外,不管其类型如何,每个数据片段可以是以比特、字节、字、双字、四字等测量的任何的各种大小。取决于端点设备100之间支持的通信的类型,在特定类型的数据和特定数据大小之间可能存在或者可能不存在相关性(例如,运动视频数据倾向于在其数据大小方面大于音频或文本数据)。
网络999可以包括有线和/或无线部分,通过该有线和/或无线部分,在每个端点设备100和通信服务器500之间传达分组集合,其中通信服务器500然后可以控制和实现在不同的端点设备100之间中继分组集合。网络999的至少一部分可以包括一个或多个中间设备200以在有线和无线部分之间进行转换、对信号进行缓冲、对协议进行转换等。换言之,在包括一个或多个中间设备200的实施例中,中间设备200可以包括网络路由器、网桥、网络交换机、网络中继、媒体转换器、协议转换器、发射机和/或接收机等中的一个或多个。
通信服务器500可以是被选择为具有足够的处理、网络接口能力和/或其他资源以通过通信服务器500以有保证的分组吞吐量速率和/或以最小的延迟通过网络999在端点设备100之间处理和交换分组集合的各种类型的计算设备中的任何一种。在通过网络999并通过通信服务器500在端点设备100之间交换分组集合时引入的延迟的最小化可以被认为是通信系统1000的操作的重要要求,以确保在操作端点设备100来互相通信的人员之间没有可感知和/或可察觉的延时的情况下发生与双向语音和/或视频通信相关联的分组的交换。
在各种实施例中,通信服务器500可以合并一个或多个处理器组件550、储存器560、传送控制器570和/或用于将通信服务器500耦合到网络999的一个或多个网络接口590。每个处理器组件550可以合并一个或多个处理器核心555。传送控制器570可以合并处理器组件575,所述处理器组件575操作在与一个或多个处理器组件550隔离的安全处理环境中。储存器560可以存储一个或多个控制例程540、一个或多个不同的应用例程740、传送组件749、策略数据539、相关性数据535和路由规则数据533。控制例程540和/或一个或多个应用例程740可以合并在一个或多个处理器组件550的一个或多个处理器核心555上操作的指令序列以实现执行各种功能的逻辑。
如所描绘的,控制例程540可以合并交换机组件543、过程控制组件545、VM组件547和/或接口控制组件549。在执行控制例程540中,在处理器组件550中的一个或多个之中的一个或多个处理器核心555可以执行这些组件543、545、546和549中的一个或多个的指令。具体地,在执行交换机组件543时,可以使一个或多个处理器核心555将虚拟交换机实例化。可替代地或另外地,在执行VM组件547时,可以使一个或多个处理器核心555将储存器560内分配的单独的存储器空间内的一个或多个VM 567实例化。如所描绘的,其中的每一个可被配置作为执行不同应用例程740中的一个应用例程的虚拟服务器700的实例。
图2A和图2B一起更详细地描绘了通信服务器500的示例实施例的操作的各个方面。在这些方面中具有虚拟交换机300的实例化和操作的那些方面。在那些方面中还具有在(一个或多个)虚拟服务器700的一个或多个实例内执行一个或多个应用例程740的那些方面。
如前所讨论的,可以将一个或多个VM 567实例化,并且那些VM 567中的每一个可以被配置为虚拟服务器700的实例。在每个虚拟服务器700内,由VM组件547致使将虚拟服务器700中的每一个所基于的VM 567实例化的一个或多个处理器核心555可以被致使来执行该虚拟环境内的应用例程740中的一个,以在支持至少一对端点设备100之间的通信中执行各种操作的任何一个。更确切地说,作为建立和/或支持其间的通信会话的一部分,应用例程740中的不同应用例程可以使一个或多个处理器核心555对至少一对端点设备100之间交换的分组集合执行各种不同的处理操作。在分组集合上执行的这样的处理操作可以包括但不限于:验证给予端点设备使用通信系统1000的授权;将通信会话与授权账户相关联以跟踪其发生;跟踪通信会话的持续时间、跟踪在通信会话期间交换的数据量、跟踪端点设备100之一的地理位置的变化、向端点设备100之一提供各种便利服务(例如,语音邮件、基于语音的拨号、会议呼叫、防病毒数据扫描等)。
作为采用通信服务器500来替换可能先前已经是多个单独的服务器的部分,一个或多个虚拟服务器700可以在通信服务器500内被实例化,所述多个单独的服务器可以各自仅执行由每个应用例程740执行的不同类型的处理操作中的一个。每个虚拟服务器700确切地执行什么处理操作可以在很大程度上由可以在每一个内执行不同应用例程740中的哪一个(哪几个)来确定。执行这些处理操作时为了降低成本、为了降低电力消耗和/或为了提高效率,通信服务器500替换多个单独服务器的这种使用可能被认为是期望的。
更具体地转到图2A,除了替换多个单独的服务器之外,通信服务器500还可以被操作来替换否则可能将多个单独的服务器彼此耦合并且通过虚拟交换机耦合到网络999的单独的物理网络交换机。更具体地说,可以通过执行交换机组件543来使处理器核心555中的一个或多个将虚拟交换机300实例化以将虚拟服务器700中的每一个彼此耦合并耦合到网络999。如所描绘的,虚拟交换机300可以被如此实例化以被插入在一个或多个网络接口590与一个或多个VM 567的一个或多个虚拟服务器700之间。还如所描绘的,在合并到通信服务器500中的一个或多个网络接口590之中可以是用于经由网络999接收来自端点设备100的分组集合的不同的网络接口590r、以及用于经由网络999向端点设备100传输分组集合的不同的网络接口590t。然而,其他实施例是可能的,其中可能存在其他数量的网络接口590,所述网络接口590可以各自以各种方式用来与端点设备100交换分组。
更具体地转到图2B,不管使用一个或多个网络接口590的确切数量和/或确切方式,如所描绘的,在被传输到端点设备100中的另一个之前,由服务器500从端点设备100之一接收的分组集合可以由虚拟交换机300路由通过虚拟服务器700中的一个或多个以用于在一个或多个虚拟服务器700的每一个内的一种或多种形式的处理。更具体地说并且如所描绘的,可以有任意数量的虚拟服务器700(如虚拟服务器700a到700x的描述所指示的),虚拟交换机300可以通过所述虚拟服务器700以串行或“菊花链”的方式路由这样的分组集合。此外,可以由虚拟交换机300通过更多或更少的虚拟服务器700和/或以不同的顺序来路由不同的分组集合,使得不同的分组集合可以遵循不同的“路径”通过一个或多个不同的虚拟服务器700。不同的分组集合可以采取的各种路径之间的差异可能是由以下原因引起的:一些端点设备100所需的而其他端点设备100不需要的服务、执行相同处理操作的多个虚拟服务器700之间的负载平衡、传达的数据的类型和/或大小的差异等等。
还如所描绘的,虚拟交换机300和每个虚拟服务器700可以包括多个虚拟网络接口,其使得虚拟交换机300和虚拟服务器700能够以类似于它们所替换的物理上不同的网络交换机和多个物理上不同的服务器将会进行交互以交换分组的方式来进行交互以交换分组。更具体地说,在执行交换机组件543以提供虚拟交换机300时,可以使一个或多个处理器核心555分别生成对应于并耦合到网络接口590r和590t的虚拟网络接口390r和390t,以从网络999接收分组集合以及传输分组集合到网络999。而且,在执行交换机组件543时,可以使相同的一个或多个处理器核心555生成多对网络接口397t和397r,所述网络接口397t和397r可以各自被采用来分别传输分组集合到虚拟服务器700之一和从虚拟服务器700之一接收分组集合。此外,在执行VM组件547以提供被配置为虚拟服务器700的实例的VM 567时,可以使多个处理器核心555在每个虚拟服务器700内生成一对虚拟网络接口793r和793t以分别从虚拟交换机300的相应对的虚拟网络接口397t和397r接收分组集合和传输分组集合到虚拟交换机300的相应对的虚拟网络接口397t和397r。如进一步描绘的,在每个虚拟服务器700内,由虚拟网络接口793r从虚拟交换机300接收的分组集合被提供给应用例程740,并且遵循由于在其中的应用例程740的执行而对那些分组集合执行的处理,然后将这些分组集合提供给虚拟网络接口793t以传输回到虚拟交换机300。
应当注意,每个虚拟服务器700(包括所描绘的虚拟服务器700a和700x中的每一个)内的虚拟网络接口793r和793t也可以分别被称为每个虚拟服务器700的“RX前端”和“TX前端”。相应地,虚拟交换机300内的每组虚拟接口397t和397r(并且其对应于虚拟服务器700之一的“前端”),也可以分别被称为虚拟交换机300的“TX后端”和“RX后端”的组中的一个。此外,虚拟交换机300内的虚拟网络接口390r和390t(其中的每一个分别对应于物理网络接口590r和590t中的一个)也可以分别被称为虚拟交换机300的“RX前端”和“TX前端”。
再次更具体地转到图2A,在执行控制例程540时,至少一个处理器组件550的至少一个处理器核心555可以执行接口控制组件549以控制虚拟交换机300与每个虚拟服务器700之间的分组的交换的各个方面,和/或执行过程控制组件545以控制分组集合的处理的各个方面。如将更详细地解释的,虚拟网络接口390r、390t、397r、397t、793r和793t中的一个或多个可以以不同模式是可操作的,以使分组集合的更快交换以更高的效率发生。如也将更详细地解释的,每个虚拟服务器700内的应用例程740的执行可以是可控的,以改变在其中处理分组的速率。然而,如也将更详细地解释的,虚拟交换机300与虚拟服务器700中的各个虚拟服务器之间的这种分组交换可以默认地作为从一个虚拟服务器700向另一个虚拟服务器700间接传达分组的一部分而发生。至少一些分组集合相反可以以完全绕过虚拟交换机300以及虚拟网络接口397r,397t,793r和/或793t的子集的方式由虚拟服务器700之一直接传送到另一个。
图3A和图3B一起描绘了控制在一对虚拟服务器700(具体标记为虚拟服务器700a和700b)之间路由分组集合的方式的各个方面。在这些方面中,可以是虚拟网络接口793r和/或793t、应用例程740的实例、以及传送组件749的实例中的每一个可以被分配给被配置为虚拟服务器700a和700b之一的每个虚拟机567内的主机处理环境和客户机处理环境中的一个或两个的方式。在这些方面中,也可以是将路由规则的子集传播到传送组件749的每个实例的方式。在这些方面中,进一步还可以是使用路由规则的此类子集以及分析分组集合中的一个或多个分组的内容来确定是否在虚拟服务器700a和700b之间执行分组集合的传送。
转到图3A,如先前所讨论的,VM组件547的执行可以使处理器核心555中的一个或多个将一个或多个VM 567实例化并将那些VM 567中的每一个配置为虚拟服务器700的实例。还如所描绘的,VM组件547的这种执行可能需要VM组件547的接口组件5479的执行,这可以引起每个虚拟服务器700内的虚拟网络接口793r和793t的实例化和/或操作。相应地,执行交换机组件543可以使处理器核心555中的一个或多个将虚拟交换机300实例化。
还如所描绘的,交换机组件543可以从路由规则数据533中检索用于在虚拟服务器700之间路由分组集合的规则的指示。这种路由规则可以指定对每个分组集合的一个或多个分组的内容执行的多个测试(例如,那些一个或多个分组的有效载荷和/或报头的内容)来确定在哪里路由每个分组集合。也如先前所讨论的那样,每个这样的规则可以由分组集合针对应用的规则必须满足的指定标准以及对于满足该标准的所有分组集合要采取的动作构成,所述动作包括但不限于:将满足该标准的分组集合修改、丢弃和/或路由到特定端口地址。如先前所讨论的,作为启用和维持那两个端点设备100之间的通信的一部分,在分组集合然后由通信服务器500传输到另一个端点设备100之前,可能需要将从端点设备100接收到的分组以特定的顺序路由通过一个或多个虚拟服务器700以使得能够对每个分组集合执行适当形式的处理。虚拟交换机300可以使用在路由规则数据533内指示的多个路由规则来确定在通信服务器500接收到分组集合时将该分组集合首先路由到哪个虚拟服务器700,并且然后,作为使该分组集合遵循特定路径通过多个虚拟服务器700的一部分,随后将该分组集合路由到虚拟服务器700中的哪一个或多个其他虚拟服务器。因此,由虚拟交换机300采用的一组路由规则可能相对复杂。
然而,也如所描绘的,传送组件749的实例可以在虚拟服务器700之一(具体地,如所描绘的虚拟服务器700a)内执行,并且可以独立地确定是否将分组集合直接传送到沿着该分组集合所采取的路径的下一个虚拟服务器700(具体地,如所描绘的虚拟服务器700b)。为了使传送组件749的该实例独立于虚拟交换机300关于在哪里路由每个分组集合的确定来做出该确定,生成虚拟交换机300并向虚拟交换机300提供路由规则的交换机组件543可以将从路由规则数据533检索的路由规则的至少一个子集的指示中继到接口组件5479。接着,接口组件5479可以将与确定在虚拟服务器700a内处理的分组集合是否要被直接传送到虚拟服务器700b有关的路由规则的有限子集的指示中继到在虚拟服务器700a内执行的传送组件749的实例。将路由规则的有限子集提供给传送组件749的该实例的这种提供可以认识到以下事实:传送组件749将仅路由被路由到虚拟服务器700a的分组集合,而不是虚拟交换机300要路由的更宽泛种类的分组集合。而且,可以认为不希望通过使传送组件749执行相对复杂的一组测试来识别要被直接传送到虚拟服务器700b的大范围的分组集合来减慢分组集合行进通过虚拟服务器700a的速率。因此,提供给该传送组件749的路由规则的子集可以被限制到这样的程度:即存在这样的分组集合,所述分组集合意图沿着其从虚拟服务器700a到虚拟服务器700b的路径行进但是未被传送组件749识别为这样的分组集合,并且因此必须经由虚拟交换机300从虚拟服务器700a传达到虚拟服务器700b。
还应当注意的是,可能存在由于一个或多个虚拟服务器700中的改变而必须改变一个或多个路由规则的场合。作为示例,在虚拟服务器700之一中检测到的错误可以导致虚拟服务器700没有被实例化,并且然后被重新实例化以纠正那些错误。结果,该重新实例化的虚拟服务器700可以在储存器560内的(一个或多个)不同存储器地址中被重新实例化,和/或可以用不同的标识符来指明,使得在其重新实例化之前关联该虚拟服务器700的路由规则现在不再正确地识别它和/或指向其在储存器560内的正确位置。响应于这样的更新,交换机组件543可以将更新的路由规则提供给接口组件5479,接口组件5479继而可以提供更新的路由规则子集给虚拟服务器700a内执行的传送组件749的实例。
利用从路由规则数据533中检索并如所述分布的这样的路由规则,可以由虚拟交换机300将在虚拟交换机300处从端点设备通过通信服务器500的网络接口590之一接收的分组集合路由到包括虚拟服务器700a的一个或多个虚拟服务器700。如先前所讨论的,默认情况下,那些虚拟服务器700中的每一个都可以将分组集合路由回到虚拟交换机300,以使得虚拟交换机能够使用路由规则来确定接下来在哪里路由该分组集合。然而,在被路由到虚拟服务器700a并且然后由在其中被执行的应用例程740之一(具体地,如所描绘的应用例程740a)处理时,也在其中被执行的传送组件749的实例可以使用提供给它的路由规则的子集来确定是否将该分组集合传送回到虚拟交换机,以便像虚拟服务器700中的其他那些那样被路由到别处,或者将该分组集合直接传送到虚拟服务器700b。
转到图3B,在各种实施例中,在虚拟服务器700a内执行的传送组件749的实例可以被合并到也在虚拟服务器700a内被执行的应用例程740a、可以被合并到在虚拟服务器700a内生成的虚拟网络接口793t、或者可以不被合并到任一个中(如从每个到包围传送组件749的这个实例的交替延伸的虚线所描绘的)。此外,传送组件749的实例可以在虚拟服务器700a的部分内执行,虚拟服务器700a的该部分由通信服务器500的主机处理环境内执行的一个VM 567的一部分构成,该主机处理环境可以是在其中生成虚拟交换机300的主机处理环境。可替代地,传送组件749的这个实例可以在虚拟服务器700a的部分内执行,虚拟服务器700a的该部分由作为生成VM 567之一的一部分而生成的在访客处理环境内执行的同一个VM 567的一部分构成,该访客处理环境可以是在其中执行应用例程740a的访客处理环境。如VM架构领域的技术人员所熟悉的,VM的部分可以横跨作为生成该VM的一部分而生成的访客处理环境和主机处理环境,并且如虚线所描绘的,在不同的实施例中传送组件749的这个实例可以在任一个环境内被执行。如果在主机处理环境内执行传送组件749的这个实例,那么如所描绘的,从虚拟服务器700a到虚拟服务器700b的分组集合的传送可以发生在主机处理环境内。可替代地,如果在访客处理环境内执行,那么如所描绘的,传送可以发生在虚拟服务器700a的访客处理环境和虚拟服务器700b的对应访客处理环境之间。
图3C描绘了基于构成分组集合130的一个或多个分组131的内容来选择是通过虚拟交换机300从虚拟服务器700a到服务器700b还是直接在其间对分组集合130进行路由的示例。作为示例,并且如由提供给传送组件749的实例的路由规则的子集所指定的,该确定可以基于在至少一个分组131的报头132内找到的一个或多个目的地地址和/或可以基于在至少一个分组131的有效载荷133内找到的数据的类型或大小。
图4A、图4B和图4C一起描绘了如上面参考图3A-图3B所描绘和讨论的,从虚拟服务器700a以及到虚拟服务器700b的分组集合的直接传送的附加方面。在这些方面中是实现这种直接传送的机制的不同实施例。
转到图4A,如先前所讨论的,VM组件547的执行可以导致一个或多个处理器核心555将一个或多个VM 567实例化且将那些VM 567中的每一个配置为虚拟服务器700的实例。还如所描绘的,VM组件547的这种执行可能需要VM组件547的接口组件5479的执行,这可以导致每个虚拟服务器700内的虚拟网络接口793r和793t的实例化和/或操作。然而,接口组件5479的执行还可以导致在储存器560的一部分内的共享存储器空间566的实例化,并且存储器空间566可以被如此定义以便不与在其中定义虚拟服务器700a或700b中的任一个的储存器560内的存储器空间一致。此外,接口组件5479的执行还可以导致对每个虚拟服务器700a和700b访问共享存储器空间566的访问许可的授权,同时不允许在虚拟服务器700a或700b中的任一个内执行的任何例程访问被分配给虚拟服务器700a或700b中的另一个的储存器空间的任何部分。
因此,在确定分组集合将被直接从虚拟服务器700a传送到虚拟服务器700b时,在虚拟服务器700a内执行的传送组件749的实例能够访问共享存储器空间566以将分组集合存储在共享存储器空间566内。然后可以使用各种类型的信令和/或其他协议中的任何一种来使在虚拟服务器700b内执行的传送组件749的实例访问共享存储器空间566以检索该分组集合。以这种方式,可以直接传送分组集合,而不允许在虚拟服务器700a和700b中的一个虚拟服务器内执行的指令的恶意和/或错误动作来获得对虚拟服务器700a和700b中的另一个虚拟服务器的充分访问从而导致对其的未经授权的和/或错误的改变。
转到图4B,如所描绘的,虚拟网络接口793r和/或793t中的一个或多个可以分别与分组缓冲器769r和/或769t配对,以在分组被虚拟服务器700中的一个或多个所接收以用于处理时和/或在处理之后由一个或多个虚拟服务器700传输它们时对分组进行缓冲。在被应用例程740从中清空以用于处理之前,可以将由虚拟网络接口793r中的一个从虚拟交换机300接收的分组缓冲在相关联的一个分组缓冲器769r内,并且由该应用例程740处理的分组可以被放置在分组缓冲器769t之一中,以由相关联的一个虚拟网络接口793t传输到虚拟交换机300。
作为在储存器560内的完全在分配给虚拟服务器700a和700b中的每一个的存储器空间之外的位置处将共享存储器空间566实例化的替代方案,VM组件547的接口组件5479的执行可以导致将被分配给虚拟服务器700b的存储器空间的一部分定义为在虚拟服务器700a内执行的传送组件749的实例可访问的共享存储器空间。在一些实施例中,该共享存储器空间可以被定义为与和虚拟服务器700b的虚拟网络接口793r相关联的分组缓冲器769r的位置一致。在这样的实施例中,该分组缓冲器769r然后将用于缓冲通过其关联的虚拟网络接口793r从虚拟交换机300或直接从虚拟服务器700a接收到的分组。在其他实施例中,可以在虚拟服务器700b的存储器空间内的其它地方定义该共享存储器空间,以定义用于直接从虚拟服务器700a接收分组的单独的分组缓冲器767。
无论在分配给虚拟服务器700b的存储器空间内共享存储器空间被定义在何处,都可以在虚拟服务器700a的操作中采取一个或多个安全措施来防止在虚拟服务器700a和700b中的一个内执行的指令的恶意和/或错误动作获得对虚拟服务器700a和700b中的另一个的充分访问从而导致对其的未经授权的和/或错误的改变。如前所讨论的,可以在分配给被配置为虚拟服务器700a的VM 567的主机处理环境或访客处理环境中的一个或另一个内执行在虚拟服务器700a内执行的传送组件749的实例。在一些实施例中,在传送组件749被认为是至少某种程度上受信任的代码的情况下,传送组件749的实例可以在虚拟服务器700a内的主机处理环境内执行以便与在虚拟服务器700a的访客处理环境内执行的应用例程740a具有一定程度的隔离地提供传送组件749的该实例。
可替代地或另外地,由至少在虚拟服务器700a内执行的传送组件749的实例和应用例程740a占据的不同的多个存储器空间可以被指明为在不同的时间是可执行的,以防止两者在同一时间都能被执行。因此,可以使应用例程740a所占据的存储器空间被指明为可执行存储器空间以使得应用例程740a能够被执行以处理分组集合中的分组,同时由虚拟服务器700a内的传送组件的实例所占据的存储器空间可以被指明为不可执行存储器空间以防止其执行。在其他时间,这两个存储器空间的指定然后可以颠倒以防止执行应用例程740a,同时虚拟服务器700a内的传送组件749的实例执行以确定是否将分组集合传送到虚拟服务器700b,并且如果确定要这样做,则执行该传送。
转到图4C,同样,虚拟网络接口793r和/或793t中的一个或多个可以分别与分组缓冲器769r和/或769t中的一个或多个配对,和/或可以在分配给虚拟服务器700b的存储器空间内别处定义单独的分组缓冲器767。作为在虚拟服务器700a内执行的访问任何共享存储器位置以实现将分组集合从虚拟服务器700a直接传送到虚拟服务器700b的传送组件749的实例的替代方案,传送组件749的该实例可以向处理器组件550之一中的处理器核心555用信号通知、或者可以向传送控制器570用信号通知针对一个或另一个执行该传送的请求。
在向处理器核心555用信号通知这样的请求的实施例中,信令可以采取该处理器核心555的指令集的指令的形式,用于在VM之间导致和/或执行数据的传送。这样的指令可以包括在其中定义的用于保存源和/或目的地地址的字段,和/或源和/或目的地VM的一些其他形式的标识符。在这样的实施例中,该处理器核心555可以对表格或其他数据结构(例如,路由规则数据533的一部分或从其导出的数据结构)执行检查,以确定试图通过使用该指令来调用传送是否是允许的。如果允许,那么处理器核心555可以继续执行传送。然而,如果不允许,那么处理器核心555可以向使用该指令的传送组件749的实例返回错误的指示。
在向传送控制器570用信号通知这样的请求的实施例中,信令可以采取将源和/或目的地地址的指示和/或将VM的源和/或目的地标识符写入传送控制器570的传送缓冲器576和/或寄存器中的形式。处理器组件575(或传送控制器570内的其它逻辑,其中传送控制器不包括处理器组件)可以对表格或其他数据结构执行检查以确定试图通过使用该指令来调用传送是否是允许的。如果允许,那么处理器组件575(或其他逻辑)可以继续执行传送。然而,如果不允许,那么处理器组件575(或其他逻辑)可以向使用该指令的传送组件749的实例返回错误的指示。传送控制器570可以以类似于直接存储器访问(DMA)控制器的方式是可操作的,但是具有在VM之间传送数据的能力和/或具有执行关于所请求的传送是否是可允许的检查的能力。可替代地或另外地,传送控制器570可以是通信服务器500的可信赖计算模块(TCM),其执行各种功能以防止通信服务器500的各种硬件和/或软件组件被恶意软件破坏和/或以其他方式操纵——诸如加密/解密,防止在不同的处理环境之间的未经授权的访问等。作为TCM,传送控制器570可以被认为是理想地适合于可靠地执行对VM之间的分组集合的每个被请求的传送是否是允许的检查。在执行这样的传送时,传送控制器570可以将其自己的储存器(未示出)的一部分定义为传送缓冲器576,以在分组集合(例如,分组集合130)被传送时对该分组集合进行缓冲。
图5A和图5B一起描绘了以针对特定分组集合130的轮询模式进行操作的不同虚拟网络接口的动态选择的各个方面,其中至少两个虚拟服务器700能够直接交换分组集合。在这些方面中有:分析构成在通信服务器500的网络接口590处接收到的分组集合130的一个或多个分组131的报头132和/或有效载荷133。在这些方面中还有:动态地配置一个或多个虚拟服务器700的虚拟网络接口以至少部分地基于虚拟服务器700中的哪些能够直接交换分组而以轮询的模式进行操作。
转到图5A,如先前所讨论的,VM组件547的执行可以使处理器核心555中的一个或多个将一个或多个VM 567实例化并将那些VM 567中的每一个配置为虚拟服务器700的实例。还如所描绘的,VM组件547的这种执行可能需要VM组件547的接口组件5479的执行,这可以导致每个虚拟服务器700内的虚拟网络接口793r和793t的实例化和/或操作。相应地,交换机组件543的执行可以导致处理器核心555中的一个或多个将虚拟交换机300实例化。同样如所描绘的,交换机组件543的这种执行可能需要交换机组件543的接口组件5439的执行,这可能导致至少虚拟交换机300内的虚拟网络接口390r的实例化和/或操作。此外,交换机组件543的这种执行可能需要由一个或多个处理器核心555对分析器组件5435的执行,其可以导致与虚拟网络接口390r协作的分组分析器345的实例化和/或操作。
响应于虚拟网络接口390r通过网络999和网络接口590r从端点设备之一接收到分组集合130,分组分析器345可以分析分组集合130的至少一个分组131的内容。更具体地说,为了目的地地址的(一个或多个)指示,分组分析器345可以分析一个或多个分组131的报头132。可替代地或另外地,为了其中传达的数据的一个或多个类型数据和/或不同部分的一个或多个大小的(一个或多个)指示,分组分析器345可以分析一个或多个分组131中的有效载荷133内承载的数据。然后,分组分析器345可以尝试将这样的(一个或多个)目的地地址、(一个或多个)数据类型和/或(一个或多个)数据大小与分组集合130要通过虚拟服务器720中的一个或多个前进的已知路径相关。在这样做时,分组分析器345可以从相关性数据535中检索已知目的地地址、数据的已知类型和/或已知数据大小与一个或多个已知路径的已知相关性的指示,不同的分组集合可以采取该指示来确定该分组集合130要采取的路径。
在通过虚拟服务器700中的一个或多个确定分组集合130要采取的路径时,分组分析器345可以将该路径的指示提供给接口控制组件549。接口控制组件549可以采用这样的路径指示来选择性地配置虚拟服务器700中沿着该路径的那些虚拟服务器700的虚拟网络接口793r和793t以便以轮询的模式进行操作以在分组集合130沿着该路径前进时将由那些虚拟网络接口793r和793t中的每一个所强加的延迟最小化。接口控制组件549还可以采用这样的路径指示来选择性地配置未沿着该路径的一个或多个虚拟服务器700的虚拟网络接口793r和793t以便以非轮询的模式(例如,间驱动模式)以将用于不沿着该路径的虚拟网络接口的处理资源和电力的使用最小化。
应该注意,接口控制组件549还可以基于当前是否存在正通过一个或多个虚拟服务器700前进的任何分组集合来以轮询模式或非轮询模式动态地操作虚拟交换机300的虚拟网络接口390t,使得虚拟网络接口390t将被用来将一个或多个分组集合传输到通信服务器500的网络接口590t,以用于经由网络999传输到端点设备100。然而,在其中接口控制组件549检索关于处理通过一个或多个虚拟服务器700的分组集合所需的时间量的定时信息的实施例中,接口控制组件549可以使用这样的定时指示来基于一个或多个分组集合预计何时从中通过而控制虚拟网络接口390t何时以轮询模式进行操作。
然而,正如已经详尽讨论的,虚拟服务器700中的一个或多个可以执行传送组件749的实例以动态地确定在由应用例程740之一处理之后的每个分组集合(例如,分组集合130)将被传送回到虚拟交换机300还是将被直接传送到虚拟服务器700中的另一个虚拟服务器。在在两个虚拟服务器700之间存在直接传送分组集合的能力的情况下,可能不需要配置虚拟网络接口793t和793r,通过该虚拟网络接口793t和793r将在其它方面以轮询模式通过虚拟交换机间接地传送分组集合,因为二者都不会被使用。在一些实施例中,作为虚拟服务器700中的至少一些参与这种直接传送的能力的结果,分组分析器345可以考虑哪些虚拟网络接口793r和793t将不被使用。
图5B描绘了基于在相关性数据535中找到的相关性以及在至少一个分组131的有效载荷133内找到的数据类型的和/或在报头132内找到的目的地地址由分组集合130从可能通过多达四个虚拟服务器700(编号700a至700d)跟随的至少两个可能路径中进行选择的示例。两个路径中的第一路径可以通过虚拟服务器700a、700c和700d前进,而两个路径中的第二路径可以通过虚拟服务器700b和700c前进。图5B还具体描绘了虚拟服务器700b将分组集合130直接传输到虚拟服务器700c、从而完全绕开虚拟交换机300的能力。因此,两个路径中的第二路径的一部分能够从虚拟服务器700b直接前进到虚拟服务器700c,而不“循环通过”虚拟交换机300。
在一些实施例中,在选择虚拟网络接口793r和/或793t中的各个虚拟网络接口以在确定分组集合将采取来通过一个或多个虚拟服务器700的路径时置于轮询模式中时,分组分析器345可以考虑虚拟服务器700b和700c直接交换分组的能力。相关性数据535和/或策略数据539可以包括虚拟服务器700中的哪些虚拟服务器能够参与这种直接分组交换的指示。这样的指示还可以指定各种条件,在该条件下可以发生分组集合的这种直接交换——代替通过虚拟交换机300交换该分组集合。
因此,在分组分析器345确定分组集合130要采取这两个路径中的第一路径的情况下,分组分析器345可以导致接口控制组件549将每个虚拟服务器700a、700c和700d内的虚拟网络接口793r和793t配置为以轮询模式(用实线指示)操作,同时继续让虚拟服务器700b内的虚拟网络接口793r和793t以非轮询模式(用虚线指示)操作。这与图4B中所示的情况无变化。然而,在分组分析器345确定分组集合130要采取这两个路径中的第二路径的情况下,分组分析器345可以导致接口控制组件549将虚拟服务器700b内的虚拟网络接口793r和虚拟服务器700c内的虚拟网络接口793t配置来以轮询的模式(用实线指示)操作,同时继续让虚拟服务器700b的虚拟网络接口793t、虚拟服务器700c的虚拟网络接口793r以及虚拟服务器700a和700d的每一个内的虚拟网络接口793r和793t两者以非轮询模式(用虚线指示)操作。因此,在不涉及虚拟交换机300的情况下虚拟服务器700b直接向虚拟服务器700c传输分组的能力使得虚拟服务器700b的虚拟网络接口793t和虚拟服务器700c的虚拟网络接口793r能够继续以非轮询模式操作,由此降低了处理要求和/或电力消耗。
图6A和图6B描绘了基于一个或多个分组缓冲器的充满程度来控制虚拟服务器700之一内的分组处理速率的各方面。在这些方面中有:监视分组缓冲器769r和769t中的至少一个中的充满级别,并且循环地将充满级别与一个或多个阈值进行比较。在这些方面中还具有:类似地监视分组767中的充满级别,通过其,虚拟服务器700中的一个可以直接从虚拟服务器700中的另一个接收分组,而不是从虚拟交换机300接收分组。在这些方面中还具有:基于循环比较的结果改变在虚拟服务器700之一内执行指令的速率和/或改变在虚拟服务器700之一内执行什么指令。
转到图6A,在一些实施例中,在每个虚拟服务器700内,由处理器核心555中的一个或多个对应用例程740的执行可以导致在该一个或多个处理器核心555的控制下监视缓冲器769r和/或769t的充满程度。响应于这两个缓冲器中的一个或另一个的充满级别超过和/或下降低于阈值,可以导致执行应用例程740的一个或多个处理器核心555执行除了对分组执行处理操作的应用例程740的指令以外的指令。更具体地说,可以改变与处理分组相关联的应用例程740的指令的和其他指令的相对量,以便以相应地增加或减小分组的处理速率的或多或少地步调来增加或减小可以执行与处理分组相关联的应用例程740的指令的速率。
在其他实施例中,虚拟服务器700中的每一个内的缓冲器769r和/或769t的充满程度的指示可以被循环地提供给控制例程540的过程控制组件545。过程控制组件545然后可以用信号通知在对应一个(多个)虚拟服务器700内执行的应用例程740中的一个或多个,以通过改变与处理分组相关联的指令和不相关联的指令的相对数量来增加和/或减小分组的处理速率,正如刚刚所描述的那样。可替代地,过程控制组件545然后可以用信号通知执行一个或多个虚拟服务器700内的一个或多个应用例程740的一个或多个处理器核心555,以改变执行一个或多个应用例程740的指令的速度。
无论分组处理速率可以变化的确切方式如何,策略数据539都可以包括(一个或多个)阈值指示,缓冲器769r和769t中的每一个的充满程度被与该阈值循环地比较,以确定是否缓冲器上溢和/或下溢即将发生。在过程控制组件545接收到这些缓冲器中的每一个的充满程度的指示的情况下,过程控制组件545可以从策略数据539中检索并直接使用这样的指示。然而,在个别应用例程740被提供有这种充满指示的情况下,过程控制组件545可以将这样的(一个或多个)阈值指示中继给每个应用例程740。
但是,转向图6B,并且如已经详尽讨论的,VM组件547和/或至少一个应用例程740的执行可以导致两个虚拟服务器700具有访问大量共享存储器的能力的这两个虚拟服务器700的实例化。例如并且如所描绘的,可以以定义附加缓冲器767的方式利用该共享存储器,通过该附加缓冲器767,两个虚拟服务器700中的一个的传送组件749的实例能够向两个虚拟服务器700中的另一个提供分组。在这样的实施例中,在这两个虚拟服务器700中的接收虚拟服务器700内执行的应用例程740的速率控制组件745可以监视缓冲器767内的分组的充满级别。速率控制组件745可以循环地将该充满级别与一个或多个阈值进行比较,并以类似于上面针对缓冲器769r和769t已经描述的方式作用于那些比较的结果,使得充满级别下降到缓冲器下溢阈值以下或上升到缓冲器上溢阈值以上可以通过改变由应用例程740处理分组的速率来进行响应。可替代地,缓冲器767的充满级别的指示可以被循环地提供给过程控制组件545,以使得过程控制组件545能够执行这样的循环比较并且采取已经描述的那样动作来改变由应用例程740处理分组的速率。
在又其他实施例中,代替单独的缓冲器767被创建,在两个虚拟服务器700之间共享的存储器的量可以被定义为与这两个虚拟服务器700中的一个的缓冲器769r的位置一致,这两个虚拟服务器700中的所述一个接收由另一个内的输出选择组件749直接传输给它的分组。在这样的其他实施例中,缓冲器769r将保持这样的缓冲器,通过该缓冲器,这两个虚拟服务器700中的接收方接收分组,而不管它们是直接从另一虚拟服务器700还是通过虚拟交换机300而被接收的。
在各种实施例中,处理器组件550可以包括各种各样商业上可用的处理器中的任何一种。此外,这些处理器组件中的一个或多个可以包括多个处理器、多线程处理器、多核心处理器(无论多个核心共存于相同的还是分离的管芯上)、和/或通过其多种物理上分离的处理器以某种方式链接的某其它种类多处理器架构。
在各种实施例中,储存器560可以基于各种各样的信息储存技术中的任何一种,可能包括需要不间断提供电力的易失性技术,并且可能包括可以是移动的或者可以是不可移动的需要使用机器可读储存介质的技术。因此,这些储存器中的每一个可以包括各种各样类型(或组合类型)的储存设备中的任何一个,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM))、双数据速率DRAM(DDR-DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、聚合物存储器(例如铁电聚合物存储器)、双向存储器、相变或铁电存储器、硅氧化物氮化物氧化物硅(SONOS)存储器、磁卡或光卡、一个或多个独立铁磁磁盘驱动器或被组织成一个或多个阵列的多个储存设备(例如,被组织成独立磁盘阵列冗余阵列或RAID阵列的多个铁磁磁盘驱动器)。应该注意的是,尽管这些储存器中的每一个都被描述为单个块,但其中的一个或多个可以包括可以基于不同的储存技术的多个储存设备。因此,例如,所描绘的这些储存器的每一个中的一个或多个可以代表光盘驱动器或闪存卡读取器的组合,通过所述组合可以将程序和/或数据存储和传达在某种形式的机器可读储存介质、以相对延伸的时间段在本地存储程序和/或数据的铁磁磁盘驱动器、以及一个或多个能够相对快速访问程序和/或数据的易失性固态存储器设备(例如,SRAM或DRAM)上。还应该注意的是,这些储存器中的每一个可以由基于相同储存技术的多个储存组件构成,但是由于使用上的专门化而被单独地保持(例如,一些DRAM设备被用作主储存器而另一些DRAM设备被用作图形控制器的不同的帧缓冲器)。
在各种实施例中,如所述,(一个或多个)接口590的至少一部分可以采用各种各样信令技术中的任何一种,使得这些计算设备能够耦合到其他设备。这些接口中的每一个都包括提供至少一些必要功能性以实现这种耦合的电路。然而,这些接口中的每一个还可以至少部分地由对应的处理器组件执行的指令序列(例如,以实现协议栈或其他特征)来实现。在采用电和/或光导缆线的情况下,这些接口可以采用符合多种工业标准中的任一种的信令和/或协议,包括但不限于RS-232C、RS-422、USB、以太网(IEEE-802.3)或IEEE-1394。在需要使用无线信号传输的情况下,这些接口可以采用符合各种工业标准中的任一种的信令和/或协议,包括但不限于IEEE 802.11a、802.11b、802.11g、802.16、802.20(通常被称作为“移动宽带无线接入”);蓝牙;ZigBee;或蜂窝无线电话服务诸如具有通用分组无线业务的GSM(GSM / GPRS)、CDMA/1xRTT、全球演进增强数据速率(EDGE)、演进仅数据/优化(EV-DO)、数据和语音演进(EV-DV)、高速下行链路分组接入(HSDPA)、高速上行链路分组接入(HSUPA)、4G LTE等。
图7图示了逻辑流程2100的实施例。逻辑流程2100可以表示由本文所描述的一个或多个实施例所执行的一些或全部操作。更具体地说,逻辑流程2100可以图示在至少执行控制例程540和/或传送组件749时由一个或多个处理器组件550执行的和/或由通信服务器的(一个或多个)其他组件执行的操作。特别地,逻辑流程2100关注于更详细地路由分组的操作。
在2110处,通信服务器的至少一个处理器组件的至少一个处理器核心(例如,通信服务器500的至少一个处理器组件550的至少一个处理器核心555)执行在被配置为虚拟服务器的VM内的应用例程(例如,被配置为虚拟服务器700之一的VM 567之一内的应用例程740之一)的指令以执行分组集合的各种处理形式中的一种。如已经讨论过的那样,通信系统的端点设备(例如,通信系统1000的端点设备100)可以通过经过网络和通信系统的至少一个通信服务器交换分组集合来参与通信。也如已经解释过的那样,在这样的通信服务器内,可以实例化多个VM,每个VM被配置为曾经是物理上不同的服务器的虚拟版本,以对分组执行不同的处理操作以建立和/或支持端点设备之中的通信。
在2120处,通信服务器的相同处理器组件或不同处理器组件的至少一个处理器核心和/或至少一个其他处理器核心可以分析分组集合中的一个或多个分组的内容和/或有效载荷(例如,其目的地地址、数据类型和/或数据大小)。该相同的至少一个处理器核心可以使用(一个或多个)目的地地址、(一个或多个)数据类型和/或(一个或多个)数据大小来确定分组集合是否出自于如下路由规则之下:该路由规则导致该分组集合符合被直接传送到也被配置为虚拟服务器的另一个VM,而不是默认地被传送到在通信服务器内生成的虚拟交换机(例如,虚拟交换机300)以允许虚拟交换机确定接下来将分组集合路由到何处。如已经讨论过的那样,这种分析和确定可以由传送组件来执行,该传送组件可以在与之相关联的主机环境或客户环境内的VM的一部分内执行,其每一个都可以与来自另一个的不同处理器核心相关联。
在2130处,检查该路由规则的标准是否被该分组集合的内容满足,以用于直接传送到被配置为虚拟服务器的另一个VM。如果是,那么在2132处以完全绕过虚拟交换机的方式如此地直接传送该分组集合。如已经讨论过的那样,可以使用在两个VM之间共享的共享存储器空间、通过使用传送控制器和/或通过使用由通信服务器内的处理器核心之一支持的传送指令来实现这样的直接传送。然而,如果不是,那么使用虚拟服务器的虚拟网络接口(例如,虚拟网络接口793t)将该分组集合传送到虚拟交换机。
图8图示了逻辑流程2200的实施例。逻辑流程2200可以表示由本文所描述的一个或多个实施例所执行的一些或全部操作。更具体地说,逻辑流程2200可以图示由至少执行控制例程540和/或传送组件749时由一个或多个处理器组件550执行的和/或由通信服务器500的(一个或多个)其他组件执行的操作。特别地,逻辑流程2200关注于更详细地路由分组的操作。
在2210处,通信服务器的至少一个处理器组件的至少一个处理器核心(例如,通信服务器500的至少一个处理器组件550的至少一个处理器核心555)执行被配置为虚拟服务器的VM内的传送组件(例如,被配置为虚拟服务器700之一的VM 567之一内的应用例程740之一)的指令以用信号通知通信服务器的另一个处理器核心或传送控制器将分组集合直接传送到被配置为另一个虚拟服务器的另一VM。也如已经解释过的那样,从一个这样的VM到另一个VM的这种直接传送可能被认为是期望的,以避免与通过在通信服务器内生成的虚拟交换机(例如,虚拟交换机300)将分组集合传送到另一个这样的VM相关联的附加延迟。
在2220处,检查是否已经从另一个处理器核心或传送控制器接收到与直接传送相关联的错误的指示。如果已经接收到这种错误指示,则可以在2222处通过VM的虚拟网络接口将分组集合传送到虚拟交换机。此外,在2224处,向通信服务器的虚拟交换机或另一个组件用信号通知一个请求,以提供对由所述VM维护并由所述至少一个处理器核心使用的路由规则的更新从而确定所述分组集合是要被直接传输到所述另一个VM还是要被传输到所述虚拟交换机。如先前所讨论的,由于在通信服务器内实例化的VM之间的改变而可能出现这种错误,包括但不限于作为实现VM之间的这种直接传送的一部分的与分组集合可能被传送到的地方相关联的地址和/或访问许可的改变。
图9图示了逻辑流程2300的实施例。逻辑流程2300可以表示由本文所描述的一个或多个实施例所执行的一些或全部操作。更具体地说,逻辑流程2300可以图示分别在至少执行控制例程540和/或控制例程640时由处理器组件550和/或650中的一个或多个执行的和/或由通信服务器500的(一个或多个)其他组件和/或传送控制器600执行的操作。特别地,逻辑流程2300关注于更详细地路由分组的操作。
在2310处,通信服务器的处理器核心或传送控制器(例如,处理器组件550之一的处理器核心555之一,或传送控制器600)从被配置为虚拟服务器的一个VM(例如,被配置为虚拟服务器700之一的VM 567之一)接收一个信号以将分组集合从该VM传送到另一个这样的VM内的指定存储器位置。如已经解释的那样,可以通过用信号通知传送控制器或者通过使用指令来在VM之间执行传送分组集合,以在处理器核心所支持的VM之间执行传送。
在2320处,处理器核心或传送控制器可以执行关于是否允许将分组集合传送到指定存储器位置的检查。如已经解释的那样,作为各种事件的结果——包括但不限于这样的VM的重新实例化,可以将分组集合传送到的VM内的存储器位置可以随着时间而改变。如果所请求的传送是允许的,那么处理器核心或传送控制器可以在2322处执行所请求的传送。然而,如果所请求的传送是不允许的,那么处理器核心或传送控制器可以向从中接收到该请求的VM用信号通知错误指示。
图10图示出了逻辑流程2400的实施例。逻辑流程2400可以表示由本文所描述的一个或多个实施例所执行的一些或全部操作。更具体地说,逻辑流程2400可以图示在至少执行控制例程540时由一个或多个处理器组件550执行的和/或由通信服务器500的(一个或多个)其他组件执行的操作。具体地,逻辑流程2400集中于以更详细地路由分组的操作。
在2410处,通信服务器的至少一个处理器组件的至少一个处理器核心(例如通信服务器500的至少一个处理器组件550的至少一个处理器核心555)通过通信服务器的网络接口(例如,网络接口590r)以及由至少一个处理器核心在通信服务器内生成的虚拟交换机的虚拟网络接口(例如,虚拟交换机300的虚拟网络接口390r)处接收分组集合。如先前所讨论的,通信服务器的一个或多个处理器核心可以生成通信服务器内的虚拟交换机以替换物理上不同的网络交换机以支持在多个VM之间对分组集合进行路由,所述多个VM中的每一个被配置作为通信服务器内多个虚拟服务器中的一个来替换多个物理上不同的服务器(例如,多个VM 567,其每一个都被配置作为多个虚拟服务器700中的一个)。
在2420处,虚拟交换机的分组分析器可以分析所接收的分组集合中的一个或多个分组的内容和/或有效载荷(例如,目的地地址、其数据类型和/或其数据大小),并且可以将那些内容中的一个或多个与先前与已知路径相关的内容的指示进行比较,以识别与所接收到的分组集合的内容相关的已知路径,并且在2430处,通过所述已知路径,所接收到的分组集合可以通过一个或多个虚拟服务器前进。在2440处,在识别这样的已知路径时,分组分析器可以检查已知路径是否经过两个或更多虚拟服务器,所述两个或更多虚拟服务器能够以绕过虚拟交换机的方式进行协作以在它们之间实现该路径的一部分。如已经讨论过的那样,可以存在能够通过共享存储器的一部分进行协作从而以完全独立于虚拟交换机的方式直接交换分组的一对或多对虚拟服务器。
如果在2440处沿着所识别的路径没有这样的虚拟服务器对,那么在2442处,至少一个处理器核心可以将沿着所识别路径的一个或多个虚拟服务器的虚拟网络接口(例如,虚拟网络接口793r和/或793t)置于轮询模式,同时避免将未沿着所识别路径的其他虚拟服务器的虚拟网络接口置于轮询模式。如已经讨论过的那样,将沿着所识别路径的虚拟网络接口置于轮询模式,同时避免将未沿着所识别路径的其他虚拟网络接口置于轮询模式,从而在它们沿着所识别的路径通过虚拟网络接口时将强加在所接收的分组集合上的延迟最小化,同时还避免了将整个处理器核心不必要地专用于在未沿着所识别路径的虚拟网络接口处支持轮询模式。
然而,如果在2440处,存在沿着所识别路径的一个或多个这样的虚拟服务器对,那么在2444处,至少一个处理器核心可以将沿着所识别路径的一个或多个虚拟服务器的虚拟网络接口置于轮询模式——除了作为在这些虚拟服务器对的每一对中的虚拟服务器之间这样直接交换分组集合的结果而将不被使用的这些虚拟服务器的虚拟网络接口之外。同样,至少一个处理器核心还可以避免将未沿着所识别路径的其他虚拟服务器的虚拟网络接口置于轮询模式。
图11图示出了逻辑流程2500的实施例。逻辑流程2500可以表示由本文所描述的一个或多个实施例所执行的一些或全部操作。更具体地说,逻辑流程2500可以图示在至少执行控制例程540时由一个或多个处理器组件550执行的和/或由通信服务器500的(一个或多个)其他组件执行的操作。特别地,逻辑流程2500集中于更详细地路由分组的操作。
在2510处,通信服务器的至少一个处理器组件的至少一个处理器核心(例如,通信服务器500的至少一个处理器组件550的至少一个处理器核心555)监视用于接收和发送分组的虚拟服务器的虚拟网络接口的分组缓冲器的充满级别(例如,虚拟服务器700之一的虚拟网络接口793r和793t以及对应的分组缓冲器769r和769t)。在2512处,至少一个处理器核心可以将那些充满级别与和缓冲器上溢和/或下溢条件相关联的一个或多个阈值进行比较。如已经讨论过的那样,它可以是由虚拟服务器内的至少一个处理器核心所执行的应用例程的一部分(例如,应用例程740之一的速率控制组件745)或者是由监视充满级别并执行充满级别与阈值的这种比较的虚拟服务器外部的至少一个处理器核心所执行的控制例程的一部分(例如,控制例程540的过程控制组件545)。
在2520处,可以进行检查以确定用于接收分组的分组缓冲器的充满级别是否已经下降到与缓冲器下溢相关联的阈值以下和/或用于传输分组的分组缓冲器的充满级别是否已经上升到与缓冲器上溢相关联的阈值以上。如果任一条件为真,那么至少一个处理器核心可以在2522处行动以通过降低虚拟服务器内的应用例程的指令的执行速率来降低处理分组的速率,从而导致用于接收分组的分组缓冲器被清空的速率和/或用于传输分组的分组缓冲器被填充的速率的相应降低。
不管在2520处进行的检查的结果如何,在2530处,可以进行另一个检查,以确定用于接收分组的分组缓冲器的充满级别是否已经上升到与缓冲器上溢相关联的阈值以上和/或用于传输分组的分组缓冲器的充满级别是否已经降低到与缓冲器下溢相关联的阈值以下。如果任一条件为真,那么至少一个处理器核心可以在2532处行动以通过增加虚拟服务器内的应用例程的指令的执行速率来增加处理分组的速率,从而导致用于接收分组的分组缓冲器被清空的速率和/或用于传输分组的分组缓冲器被填充的速率的相应增加。
图12图示出了适用于实现如前所述的各种实施例的示例性处理架构3000的实施例。更具体地说,处理架构3000(或其变体)可以被实现为计算设备100、400或800中的一个或多个的一部分。应当注意,处理架构3000的组件被给予参考编号,其中最后两个数字对应于之前作为计算设备100、400和800的一部分而被描绘和描述的至少一些组件的参考编号的最后两位数字。这样做有助于将每个的组件进行相关。
处理架构3000包括数字处理中通常采用的各种元件,包括但不限于一个或多个处理器、多核心处理器、协处理器、存储器单元、芯片组、控制器、外设、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)组件、电源等。如在本申请中所使用的,术语“系统”和“组件”旨在是指在其中执行数字处理的计算设备的实体,该实体是硬件、硬件和软件的组合、软件、或执行中的软件,其示例由所描绘的这个示例性处理架构提供。例如,组件可以是但不限于处理器组件上运行的进程、处理器组件本身、可以采用光和/或磁储存介质的储存设备(例如,硬盘驱动器、阵列中的多个储存驱动器等)、软件对象、可执行指令序列、执行线程、程序和/或整个计算设备(例如整个计算机)。通过说明,在服务器上运行的应用和服务器都可以是组件。一个或多个组件可以驻留在执行的线程和/或过程内,并且组件可以位于一个计算设备上和/或可以被分布在两个或更多计算设备之间。此外,组件可以通过各种类型的通信介质彼此可通信地耦合以协调操作。协调可以涉及信息的单向或双向交换。例如,组件可以以通过通信介质传递的信号的形式来传递信息。该信息可以被实现为被分配给一个或多个信号线路的信号。消息(包括命令、状态、地址或数据消息)可以是一个这样的信号、或者可以是多个这样的信号、并且可以通过多种连接和/或接口中的任何一个来基本上并行地或串行地进行传输。
如所描绘的,在实现处理架构3000时,计算设备至少包括处理器组件950、储存器960、到其他设备的接口990以及耦合959。如将要解释的,取决于计算设备的各个方面实现包括其预期用途和/或使用条件的处理架构3000,这样的计算设备可以进一步包括附加组件,诸如但不限于显示器接口985。
耦合959包括至少将处理器组件950可通信地耦合到储存器960的一个或多个总线、点对点互连、收发器、缓冲器、交叉点开关和/或其它导体和/或逻辑。耦合959可以进一步将处理器组件950耦合到接口990、音频子系统970和显示器接口985中的一个或多个(取决于这些中的哪个和/或其它组件还存在)。在处理器组件950通过耦合959如此耦合的情况下,处理器组件950能够执行上面详尽描述的各个任务,针对前述计算设备中的无论哪一个(多个)实现处理架构3000。可以用多种技术或技术组合中的任何技术来实现耦合959,通过所述耦合959,对信号进行光学地和/或电学地传达。此外,耦合959的至少一部分可以采用符合各种行业标准中的任何一个的定时和/或协议,包括但不限于加速图形端口(AGP)、CardBus、扩展工业标准架构(E-ISA)、微型通道架构(MCA)、NuBus、外围组件互连(扩展)(PCI-X)、高速PCI(PCI-E)、个人计算机存储卡国际协会(PCMCIA)总线、HyperTransportTM(超级传输)、QuickPath(快速路径)等等。
如先前所讨论的,处理器组件950(其可以对应于处理器组件450)可以包括多种商业上可用的处理器中的任何一种,所述处理器采用各种各样技术中的任何技术并且以多种方式中的任何方式物理地组合的一个或多个核心来实现。
如先前所讨论的,储存器960(其可以对应于储存器460)可以由基于各种各样技术或技术组合中的任一种的一个或多个不同的储存设备构成。更具体地说,如所描绘的,储存器960可以包括以下中的一个或多个:易失性储存器961(例如,基于一种或多种形式的RAM技术的固态储存器)、非易失性储存器962(例如,固态、铁磁或不需要恒定电力供应来保存其内容的其它储存器)以及可移动媒体储存器963(例如,可通过其在计算设备之间传达信息的可移动盘或固态存储卡储存器)。可能包括多个不同类型的储存器的储存器960的这种描述认识到在计算设备中常常使用多于一种类型的储存设备,其中一种类型提供相对较快的读取和写入能力,使得能够由处理器组件950更快速地操纵数据(但可能使用持续需要电力的“易失性”技术),而另一种类型提供相对高密度的非易失性储存器(但可能提供相对较慢的读取和写入能力)。
考虑到采用不同技术的不同储存设备的通常不同的特性,这种不同的储存设备通过不同的储存控制器而被耦合到计算设备的其他部分也是常见的,所述不同的储存控制器通过不同的接口耦合到其不同储存设备。作为示例,在易失性储存器961存在并且基于RAM技术的情况下,易失性储存器961可以通过储存控制器965a可通信地耦合到耦合959,其向可能采用行和列寻址的易失性储存器961提供合适的接口,并且其中储存控制器965a可以执行行刷新和/或其他维护任务以帮助保存存储在易失性储存器961内的信息。作为另一示例,在非易失性储存器962存在并且包括一个或多个铁磁和/或固态磁盘驱动器的情况下,非易失性储存器962可以通过储存控制器965b可通信地耦合到耦合959,其向可能采用信息块和/或柱面和扇区的寻址的非易失性储存器962提供合适的接口。作为又另一示例,在可移动介质储存器963存在并且包括采用一片或多片机器可读储存介质969的一个或多个光学和/或固态磁盘驱动器的情况下,可移动介质储存器963可以通过储存控制器965c可通信地耦合到耦合959,其向可能采用信息块的寻址的可移动介质储存器963提供合适的接口,并且其中储存控制器965c可以以特定于延长机器可读储存介质969寿命的方式协调读取、擦除和写入操作。
易失性储存器961或非易失性储存器962中的一个或另一个可以包括机器可读储存介质形式的制品,在其上取决于每一个所基于的技术而可以存储包括可由处理器组件950执行的指令序列的例程。作为示例,在非易失性储存器962包括基于铁磁的磁盘驱动器(例如,所谓的“硬盘驱动器”)的情况下,每个这种磁盘驱动器通常采用一个或多个旋转盘片,磁响应颗粒的涂层被沉积在该旋转盘片上,并且以类似于诸如软盘之类的储存介质的方式以各种模式磁性取向以存储诸如指令序列之类的信息。作为另一示例,非易失性储存器962可以由固态储存设备组构成,以类似于紧凑闪存卡的方式存储诸如指令序列之类的信息。再次,在不同时间在计算设备中采用不同类型的储存设备以存储可执行例程和/或数据是常见的。因此,包括要由处理器组件950执行的指令序列的例程可以最初被存储在机器可读储存介质969上,并且随后可以采用可移除介质储存器963来将该例程复制到非易失性储存器962以用于长期储存,这不需要机器可读储存介质969和/或易失性储存器961的持续存在,以使得在执行该例程时能够由处理器组件950更快地进行访问。
如先前所讨论的,接口990(其可以对应于(一个或多个)接口490)可以采用与各种通信技术中的任一种相对应的各种信令技术中的任一种,可以采用这些通信技术来将计算设备可通信地耦合到一个或多个其他设备。同样,可以采用各种形式的有线或无线信令之一或二者来使得处理器组件950能够与输入/输出设备(例如,所描绘的示例键盘920或打印机925)和/或其他计算设备进行交互——可能通过网络(例如,网络999)或互联的网络集合。在认识到多种类型的信令和/或协议的常常大不相同的特性必须经常由任何一个计算设备支持时,接口990被描绘为包括多个不同的接口控制器995a、995b和995c。接口控制器995a可以采用各种类型的有线数字串行接口或射频无线接口中的任何一种来接收来自用户输入设备(例如所描绘的键盘920)的串行传输的消息。接口控制器995b可以采用各种基于缆线的或无线的信令、定时和/或协议中的任何一种来通过所描绘的网络999(可能是由一个或多个链路、较小网络或者可能是因特网组成的网络)访问其他计算设备。更具体地说,接口控制器995b可以合并了一个或多个射频(RF)收发器和/或可以耦合到一个或多个天线991(其可以被合并到接口990的一部分中)以与作为所描绘的网络999上的无线通信的一部分的一个或多个其他设备的(一个或多个)天线交换RF无线信号。接口995c可以采用各种导电缆线中的任何一种,使得能够使用串行或并行信号传输来将数据传达到所描绘的打印机925。可以通过接口990的一个或多个接口控制器可通信地耦合的设备的其他示例包括但不限于:用于监听人的声音以接受由这些人经由他们可以所发出的语音或其他声音而用信号通知的命令和/或数据的麦克风,遥控器、触控笔、读卡器、指纹阅读器、虚拟现实交互手套、图形输入板、操纵杆、其它键盘、视网膜扫描器、触摸屏的触摸输入组件、轨迹球、各种传感器、监视人的移动以接受由这些人经由手势和/或面部表情而用信号通知的命令和/或数据的相机或相机阵列、激光打印机、喷墨打印机、机械机器人、铣床等。
在计算设备被可通信地耦合到(或者可能实际上合并)显示器(例如,所描绘的示例显示器980)的情况下,实现处理架构3000的这种计算设备还可以包括显示器接口985。虽然可以采用更通用的接口类型以可通信地耦合到显示器,但是在显示器上可视地显示各种形式的内容时经常需要的稍微专门化的附加处理以及所使用的基于缆线的接口的稍微专门化的性质常常使得提供不同的显示接口是所期望的。在显示器980的通信耦合中可以由显示器接口985使用的有线和/或无线信令技术可以利用符合多种工业标准中的任一种的信令和/或协议,包括但不限于各种模拟视频接口、数字视频接口(DVI)、DisplayPort(显示端口)等中的任何一种。
更一般地,本文所描述和描绘的计算设备的各种元件可以包括各种硬件元件、软件元件或两者的组合。硬件元件的示例可以包括设备、逻辑设备、组件、处理器、微处理器、电路、处理器组件、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC) 、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子程序、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、词、值、符号或其任何组合。然而,确定一个实施例是否使用硬件元件和/或软件元件来实现可以根据诸如期望的计算速率、功率水平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束之类的任何数量的因素而变化,如针对给定实现所期望的那样。
一些实施例可以使用表达“一个实施例”或“实施例”连同其派生词来描述。这些术语意味着结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中。说明书中各处出现的短语“在一个实施例中”不一定全都是指同一个实施例。此外,可以使用表述“耦合”和“连接”连同它们的衍生词来描述一些实施例。这些术语不一定是旨在指彼此的同义词。例如,可以使用术语“连接”和/或“耦合”来描述一些实施例,以指示两个或更多元件彼此直接物理接触或电接触。然而,术语“耦合”还可以意味着两个或更多元件彼此不直接接触,但是仍然彼此协作或交互。此外,来自不同实施例的各个方面或元件可以被组合。
要强调的是,提供了公开的摘要以允许读者快速确定技术公开的性质。提交时的理解是,将不使用它来解释或限制权利要求的范围或含义。另外,在前述的具体实施方式中可以看出,出于简化本公开的目的,将各种特征在单个实施例中分组在一起。本公开的方法不被解释为反映所要求保护的实施例需要比每个权利要求中明确记载的更多的特征的意图。相反,如以下权利要求所反映的,发明主题在于少于单个公开实施例的所有特征。因此,以下权利要求由此被合并到具体实施方式中,其中每个权利要求本身作为单独的实施例。在所附权利要求中,术语“包括”和“其中”分别被用作相应术语“包含”和“在其中”的通俗英文等同物。此外,术语“第一”、“第二”、“第三”等等仅被用作标签,而不旨在对其对象施加数字要求。
以上所描述的内容包括所公开的架构的示例。当然,不可能描述组件和/或方法的每个可想到的组合,但是本领域的普通技术人员可以认识到许多进一步的组合和排列是可能的。因此,新颖的架构旨在涵盖落入所附权利要求的精神和范围内的所有这样的改变、修改和变化。详细的公开现在转向提供关于进一步实施例的示例。以下提供的示例不旨在限制。
在示例1中,一种装置包括处理器组件、用于将所述处理器组件耦合到网络的网络接口、虚拟交换机和传送组件。所述虚拟交换机用于分析将在网络接口处接收的和/或将通过所述网络和通信服务器在端点设备之间交换的分组集合中的至少一个分组的内容,并且基于所述内容将所述分组集合路由通过多个虚拟服务器中的一个或者多个虚拟服务器。所述多个虚拟服务器中的第一虚拟服务器的传送组件用于基于路由规则来确定是将所述分组集合路由到所述虚拟交换机还是以绕过所述虚拟交换机的方式将所述分组集合传送到所述多个虚拟服务器中的第二虚拟服务器。
在包括示例1的主题的示例2中,所述装置可以包括交换机组件,用于在通信服务器的主机会话内生成所述虚拟交换机。
在包括示例1-2中的任何一个的主题的示例3中,可以在所述网络接口处从耦合到所述网络的第一端点设备接收所述分组集合,并且在前进通过所述一个或多个虚拟服务器之后可以经由所述网络将所述分组集合传输到第二端点设备。
在包括示例1-3中的任何一个的主题的示例4中,所述装置可以包括多个应用例程,可以在所述多个虚拟服务器中的一个虚拟服务器内执行所述多个应用例程中的每个应用例程以对所述分组集合执行不同类型的处理,并且所述虚拟交换机可以至少基于由所述一个或多个虚拟服务器的每个虚拟服务器内执行的所述应用例程所执行的处理的类型来将所述分组集合路由通过所述一个或多个虚拟服务器。
在包括示例1-4中的任何一个的主题的示例5中,所述内容可以包括以下中的至少一个:所述至少一个分组的报头的目的地地址、在所述至少一个分组的有效载荷中传达的数据的类型或在所述有效载荷中传达的数据的一部分的大小,并且所述路由规则可以指示是否基于所述内容将所述分组集合路由到所述另一个虚拟服务器。
在包括示例1至5中的任何一个的主题的示例6中,所述虚拟交换机可以根据多个路由规则的一个或多个路由规则、基于所述内容集合来路由所述分组集合,并且可以从所述多个路由规则之中提供路由规则给所述传送组件。
在包括示例1-6中的任何一个的主题的示例7中,所述装置可以包括耦合到所述处理器组件的储存器,所述储存器可以包括共享存储器空间,所述共享存储器空间对所述第一和第二虚拟服务器是可访问的,并且占据未被所述第一或第二虚拟服务器占据的所述储存器的一部分,所述传送组件可以将所述分组集合存储在所述共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器,并且所述第二虚拟服务器的另一传送组件可以从所述共享存储器空间中检索所述分组集合。
在包括示例1至7中的任何一个的主题的示例8中,所述装置可以包括传送控制器,并且所述传送组件可以用信号通知所述传送控制器以基于所述确定将所述分组集合从所述第一虚拟服务器传送到所述第二虚拟服务器。
在包括示例1至8中的任何一个的主题的示例9中,所述装置可以包括虚拟机(VM)组件,用于在通信服务器内生成多个VM,将所述多个VM中的每个VM配置为所述多个虚拟服务器中的虚拟服务器,在所述多个虚拟服务器中的每个虚拟服务器内生成至少一个虚拟网络接口以将每个虚拟服务器耦合到所述虚拟交换机,并且导致所述多个虚拟服务器中的每个虚拟服务器内的多个应用例程的应用例程的执行。
在包括示例1-9中的任何一个的主题的示例10中,处理器组件可以使得能够执行将数据从一个VM传送到另一个VM的指令,并且所述传送组件用于使用所述指令来基于所述确定使所述处理器组件将所述分组集合从所述第一虚拟服务器传送到所述第二虚拟服务器。
在包括示例1-10中的任何一个的主题的示例11中,所述装置可以包括耦合到所述处理器组件的储存器,所述储存器可以包括所述第一虚拟服务器可访问的共享存储器空间,所述共享存储器空间可以占据被所述第二虚拟服务器占据且未被所述第一虚拟服务器占据的储存器的一部分,并且所述传送组件可以将所述分组集合存储在所述共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器。
在包括示例1-11中的任何一个的主题的示例12中,所述储存器的存储器空间可以被所述第一虚拟服务器占据,可以包括在其中执行所述传送组件的第一部分和在其中执行应用例程的第二部分,并且所述传送组件可以使所述处理器组件仅将所述第一和第二部分中的一个指明为是可执行的。
在包括示例1-12中的任何一个的主题的示例13中,所述装置可以包括与所述第二虚拟服务器的虚拟网络接口相关联并在所述共享存储器空间内定义的分组缓冲器,用于缓冲由所述第二虚拟服务器从所述第一虚拟服务器或所述虚拟交换机接收到的分组。
在包括示例1-13中的任何一个的主题的示例14中,所述虚拟交换机可以将所述内容与从所述虚拟交换机通过所述一个或多个虚拟服务器延伸并回到所述虚拟交换机的路径相关,并且所述装置可以包括接口控制组件,用于选择沿着所述路径的所述一个或多个虚拟服务器中的每个虚拟服务器的所述至少一个虚拟网络接口中的一个或多个以轮询模式操作,并且选择未沿着所述路径的所述多个虚拟服务器中的至少一个虚拟服务器的所述至少一个虚拟网络接口中的一个或多个以非轮询模式操作。
在包括示例1-14中的任何一个的主题的示例15中,沿着所述路径的所述一个或多个虚拟服务器可以包括所述第一和第二虚拟服务器,并且所述接口控制组件可以响应于所述传送组件以绕过所述虚拟交换机的方式将所述分组集合从所述第一虚拟服务器路由到所述第二虚拟服务器的能力而禁止以所述轮询模式操作所述第一虚拟服务器的所述第一虚拟网络接口和所述第二虚拟服务器的第二虚拟网络接口。
在包括示例1-15中的任何一个的主题的示例16中,所述一个或多个虚拟服务器中的虚拟服务器可以包括第一虚拟网络接口,用于从所述虚拟交换机接收所述分组集合;第二虚拟网络接口,用于将所述分组集合传输到所述虚拟交换机;与所述第一虚拟网络接口相关联的第一分组缓冲器,用于在由所述虚拟服务器内执行的应用例程处理之前存储从所述虚拟交换机接收到的所述分组集合的分组;和与所述第二虚拟网络接口相关联的第二分组缓冲器,用于存储在传输到所述虚拟交换机之前并由所述应用例程处理的所述分组集合的分组。
在包括示例1-16中的任何一个的主题的示例17中,所述装置可以包括过程控制组件,用于监视所述第一分组缓冲器的第一充满级别和所述第二分组缓冲器的第二充满级别,将所述第一和第二充满级别与至少与缓冲器下溢相关联的第一阈值和与缓冲器上溢相关联的第二阈值进行比较,响应于所述第一级别下降到所述第一阈值以下或者所述第二级别上升到所述第二阈值以上,由所述应用例程降低所述虚拟服务器内的分组处理的速率,以及响应于所述第一级别上升到所述第二阈值以上或者所述第二级别下降到所述第一阈值以下,提高分组处理的速率。
在示例18中,一种计算实现的方法包括:在通信服务器内生成的虚拟交换机处从网络接收要通过所述网络在端点设备之间交换的分组集合;在所述虚拟交换机处分析所述分组集合中的至少一个分组的内容;基于所述内容将所述分组集合从所述虚拟交换机路由通过多个虚拟服务器中的一个或多个虚拟服务器;以及在所述多个虚拟服务器中的第一虚拟服务器处,基于路由规则来确定是将所述分组集合路由到所述虚拟交换机还是以绕过所述虚拟交换机的方式将所述分组集合传送到所述多个虚拟服务器中的第二虚拟服务器。
在包括示例18的主题的示例19中,该方法可以包括利用所述通信服务器的至少一个处理器组件的至少一个处理器核心来在所述通信服务器的主机会话内生成虚拟交换机。
在包括示例18-19中的任何一个的主题的示例20中,该方法可以包括:从耦合到所述网络的第一端点设备并通过所述通信服务器的网络接口接收所述分组集合,并且将被传送的所述分组集合在前进通过所述一个或多个虚拟服务器之后经由网络传输到第二端点设备。
在包括示例18-20中的任何一个的主题的示例21中,该方法可以包括执行所述多个虚拟服务器中的一个虚拟服务器内的多个应用例程的每个应用例程,以对所述分组集合执行不同类型的处理;以及至少基于由所述一个或多个虚拟服务器中的每个虚拟服务器内执行的所述应用例程所执行的处理的类型,来将所述分组集合从所述虚拟交换机路由通过所述一个或多个虚拟服务器。
在包括示例18-21中的任何一个的主题的示例22中,所述内容可以包括以下中的至少一个:所述至少一个分组的报头的目的地地址、在所述至少一个分组的有效载荷中传达的数据的类型或在所述有效载荷中传达的数据的一部分的大小、以及指示是否基于所述内容将所述分组集合路由到所述另一个虚拟服务器的所述路由规则。
在包括示例18-22中的任何一个的主题的示例23中,该方法可以包括:根据多个路由规则的一个或多个路由规则、基于所述内容集合来从所述虚拟交换机路由所述分组集合;以及从所述多个路由规则之中提供路由规则给所述第一虚拟服务器。
在包括示例18-23中的任何一个的主题的示例24中,所述方法可以包括:由所述第一虚拟服务器将所述分组集合存储在共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器;以及由所述第二虚拟服务器从所述共享存储器空间检索所述分组集合,所述共享存储器空间对所述第一和第二虚拟服务器是可访问的,并且占据未被所述第一或第二虚拟服务器占据的所述通信服务器的储存器的一部分。
在包括示例18-24中的任何一个的主题的示例25中,该方法可以包括:基于所述确定,用信号通知传送控制器以将所述分组集合从所述第一虚拟服务器传送到所述第二虚拟服务器。
在包括示例18-25中的任何一个的主题的示例26中,所述方法可以包括:在所述通信服务器内生成多个虚拟机(VM);将所述多个VM中的每个VM配置为所述多个虚拟服务器中的虚拟服务器;在所述多个虚拟服务器中的每个虚拟服务器内生成所述至少一个虚拟网络接口以将每个虚拟服务器耦合到所述虚拟交换机,并且在所述多个虚拟服务器中的每个虚拟服务器内执行多个应用例程的应用例程。
在包括示例18-26中的任何一个的主题的示例27中,所述通信服务器的至少一个处理器核心可以能够执行用于将数据从一个VM传送到另一个VM的指令,并且该方法可以包括:由所述第一虚拟服务器使用所述指令以使所述处理器核心基于所述确定将所述分组集合从所述第一虚拟服务器传送到所述第二虚拟服务器。
在包括示例18-27中的任何一个的主题的示例28中,该方法可以包括:由所述第一虚拟服务器将所述分组集合存储在共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器,所述共享存储器空间可以对所述第一虚拟服务器是可访问的,并且所述共享存储器空间可以占据被所述第二虚拟服务器占据且未被所述第一虚拟服务器占据的所述通信服务器的储存器的一部分。
在包括示例18-28中的任一项的主题的示例29中,该方法可以包括:将被所述第一虚拟服务器占据的所述储存器的存储器空间划分为第一部分和第二部分,在所述第一部分中执行所述第一虚拟服务器的传送组件以将所述分组集合传送到所述第二虚拟服务器,在所述第二部分中执行应用例程;以及使所述通信服务器的处理器组件仅将所述第一和第二部分中的一个指明为是可执行的。
在包括示例18-29中的任何一个的主题的示例30中,该方法可以包括:在所述共享存储器空间内定义分组缓冲器,并且将所述分组与所述第二虚拟服务器的虚拟网络接口相关联以缓冲由所述第二虚拟服务器从所述第一虚拟服务器或所述虚拟交换机接收到的分组。
在包括示例18-30中的任何一个的主题的示例31中,该方法可以包括将所述内容与从所述虚拟交换机通过所述一个或多个虚拟服务器延伸并回到所述虚拟交换机的路径相关;选择沿着所述路径的所述一个或多个虚拟服务器中的每个虚拟服务器的所述至少一个虚拟网络接口中的一个或多个以轮询模式操作;并且选择未沿着所述路径的所述多个虚拟服务器中的至少一个虚拟服务器的所述至少一个虚拟网络接口中的一个或多个以非轮询模式操作。
在包括示例18-31中的任何一个的主题的示例32中,沿着所述路径的所述一个或多个虚拟服务器可以包括所述第一和第二虚拟服务器,并且该方法可以包括响应于所述传送组件以绕过所述虚拟交换机的方式将所述分组集合从所述第一虚拟服务器路由到所述第二虚拟服务器的能力而禁止以所述轮询模式操作所述第一虚拟服务器的所述第一虚拟网络接口和所述第二虚拟服务器的第二虚拟网络接口。
在包括示例18-32中的任何一个的主题的示例33中,该方法可以包括在所述一个或多个虚拟服务器中的虚拟服务器内生成:第一虚拟网络接口,用于从所述虚拟交换机接收所述分组集合;第二虚拟网络接口,用于将所述分组集合传输到所述虚拟交换机;与所述第一虚拟网络接口相关联的第一分组缓冲器,用于在由所述虚拟服务器内执行的应用例程处理之前存储从所述虚拟交换机接收到的所述分组集合的分组;以及与所述第二虚拟网络接口相关联的第二分组缓冲器,用于存储在传输到所述虚拟交换机之前并由所述应用例程处理的所述分组集合的分组。
在包括示例18-33中的任何一个的主题的示例34中,该方法可以包括:监视所述第一分组缓冲器的第一充满级别和所述第二分组缓冲器的第二充满级别;将所述第一和第二充满级别与至少与缓冲器下溢相关联的第一阈值和与缓冲器上溢相关联的第二阈值进行比较;响应于所述第一级别下降到所述第一阈值以下或者所述第二级别上升到所述第二阈值以上,由所述应用例程降低所述虚拟服务器内的分组处理的速率;以及响应于所述第一级别上升到第二阈值以上或者所述第二级别下降到第一阈值以下,提高分组处理的速率。
在示例35中,至少一个有形的机器可读储存介质包括指令,所述指令在由处理器组件执行时可使所述处理器组件在通信服务器内生成的虚拟交换机处从网络接收要通过所述网络在端点设备之间交换的分组集合;在所述虚拟交换机处分析所述分组集合中的至少一个分组的内容;基于所述内容,将所述分组集合从所述虚拟交换机路由通过多个虚拟服务器中的一个或多个虚拟服务器;并且在所述多个虚拟服务器中的第一虚拟服务器处,基于路由规则来确定是将所述分组集合路由到所述虚拟交换机还是以绕过所述虚拟交换机的方式将所述分组集合传送到所述多个虚拟服务器中的第二虚拟服务器。
在包括示例35的主题的示例36中,可以使所述处理器组件利用所述通信服务器的至少一个处理器组件的至少一个处理器核心在所述通信服务器的主机会话内生成所述虚拟交换机。
在包括示例35-36中的任何一个的主题的示例37中,可以使所述处理器组件从耦合到所述网络的第一端点设备并且通过所述通信服务器的网络接口接收所述分组集合;并将所述要被传输的分组集合在前进通过所述一个或多个虚拟服务器之后经由所述网络传输到第二端点设备。
在包括示例35-37中的任何一个的主题的示例38中,可以使所述处理器组件执行所述多个虚拟服务器中的一个虚拟服务器内的多个应用例程的每个应用例程,以对所述分组集合执行不同类型的处理;以及至少基于由所述一个或多个虚拟服务器中的每个虚拟服务器内执行的所述应用例程所执行的处理的类型,将所述分组集合从所述虚拟交换机路由通过所述一个或多个虚拟服务器。
在包括示例35-38中的任何一个的主题的示例39中,所述内容可以包括以下中的至少一个:所述至少一个分组的报头的目的地地址、在所述至少一个分组的有效载荷中传达的数据的类型或在所述有效载荷中传达的数据的一部分的大小、以及用于指示是否基于所述内容将所述分组集合路由到所述另一个虚拟服务器的所述路由规则。
在包括示例35-39中的任何一个的主题的示例40中,可以使所述处理器组件根据多个路由规则的一个或多个路由规则、基于所述内容集合来从所述虚拟交换机路由所述分组集合;以及从所述多个路由规则之中提供路由规则给所述第一虚拟服务器。
在包括示例35-40中的任何一个的主题的示例41中,可以使所述处理器组件:由所述第一虚拟服务器将所述分组集合存储在所述共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器;以及由所述第二虚拟服务器从所述共享存储器空间检索所述分组集合,所述共享存储器空间对所述第一和第二虚拟服务器是可访问的,并且占据未被所述第一或第二虚拟服务器占据的所述通信服务器的储存器的一部分。
在包括示例35-41中的任何一个的主题的示例42中,可以使所述处理器组件基于所述确定而用信号通知耦合到所述处理器组件的传送控制器以将所述分组集合从所述第一虚拟服务器传送到所述第二虚拟服务器。
在包括示例35-42中的任何一个的主题的示例43中,可以使所述处理器组件在所述通信服务器内生成多个虚拟机(VM);将所述多个VM中的每个VM配置为所述多个虚拟服务器中的虚拟服务器;在所述多个虚拟服务器中的每个虚拟服务器内生成所述至少一个虚拟网络接口以将每个虚拟服务器耦合到所述虚拟交换机;并在所述多个虚拟服务器中的每个虚拟服务器内执行多个应用例程的应用例程。
在包括示例35-43中的任何一个的主题的示例44中,所述通信服务器的至少一个处理器核心可以能够执行用于将数据从一个VM传送到另一个VM的指令,并且可以使所述处理器组件使用所述指令以使所述处理器核心基于所述确定将所述分组集合从所述第一虚拟服务器传送到所述第二虚拟服务器。
在包括示例35-44中的任何一个的主题的示例45中,可以使所述处理器组件将来自所述第一虚拟服务器的所述分组集合存储在共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器,所述共享存储器空间对所述第一虚拟服务器是可访问的,所述共享存储器空间占据被所述第二虚拟服务器占据且未被所述第一虚拟服务器占据的所述通信服务器的储存器的一部分。
在包括示例35-45中的任何一个的主题的示例46中,可以使所述处理器组件将被第一虚拟服务器占据的所述储存器的存储器空间划分为第一部分和第二部分,在所述第一部分中执行所述第一虚拟服务器的传送组件以将所述分组集合传送到所述第二虚拟服务器,在所述第二部分中执行应用例程;并且仅将所述第一和第二部分中的一个指明为是可执行的。
在包括示例35-46中的任何一个的主题的示例47中,可以使所述处理器组件在所述共享存储器空间内定义分组缓冲器;并且将所述分组与所述第二虚拟服务器的虚拟网络接口相关联以缓冲由所述第二虚拟服务器从所述第一虚拟服务器或所述虚拟交换机接收到的分组。
在包括示例35-47中的任何一个的主题的示例48中,可以使所述处理器组件将所述内容与从所述虚拟交换机通过所述一个或多个虚拟服务器延伸并回到所述虚拟交换机的路径相关;选择沿着所述路径的所述一个或多个虚拟服务器中的每个虚拟服务器的所述至少一个虚拟网络接口中的一个或多个以轮询模式操作;并且选择未沿着所述路径的所述多个虚拟服务器中的至少一个虚拟服务器的所述至少一个虚拟网络接口中的一个或多个以非轮询模式操作。
在包括示例35-48中的任何一个的主题的示例49中,沿着所述路径的所述一个或多个虚拟服务器可以包括所述第一和第二虚拟服务器,并且可以使所述处理器组件响应于所述传送组件以绕过所述虚拟交换机的方式将所述分组集合从所述第一虚拟服务器路由到所述第二虚拟服务器的能力而禁止以所述轮询模式操作所述第一虚拟服务器的所述第一虚拟网络接口和所述第二虚拟服务器的第二虚拟网络接口。
在包括示例35-49中的任何一个的主题的示例50中,可以使所述处理器组件在所述一个或多个虚拟服务器中的虚拟服务器内生成:第一虚拟网络接口,用于从所述虚拟交换机接收所述分组集合;第二虚拟网络接口,用于将所述分组集合传输到所述虚拟交换机;与所述第一虚拟网络接口相关联的第一分组缓冲器,用于在由所述虚拟服务器内执行的应用例程处理之前存储从所述虚拟交换机接收到的所述分组集合的分组;以及与所述第二虚拟网络接口相关联的第二分组缓冲器,用于存储在传输到所述虚拟交换机之前并由所述应用例程处理的所述分组集合的分组。
在包括示例35-50中的任何一个的主题的示例51中,可以使所述处理器组件监视所述第一分组缓冲器的第一充满级别和所述第二分组缓冲器的第二充满级别;将所述第一和第二充满级别与至少与缓冲器下溢相关联的第一阈值和与缓冲器上溢相关联的第二阈值进行比较;响应于所述第一级别下降到所述第一阈值以下或者所述第二级别上升到所述第二阈值以上,由所述应用例程降低所述虚拟服务器内的分组处理的速率;以及响应于所述第一级别上升到第二阈值以上或者所述第二级别下降到第一阈值以下,提高分组处理的速率。
在示例52中,一种装置,包括:通信服务器的处理器组件、用于将所述处理器组件耦合到网络的网络接口、虚拟机(VM)组件和传送组件。VM组件可以在通信服务器内生成多个VM,可以将所述多个VM中的每个VM配置为多个虚拟服务器的虚拟服务器,并且可以在多个虚拟服务器中的每个虚拟服务器内生成至少一个虚拟网络接口以将每个虚拟服务器耦合到虚拟交换机。所述多个虚拟服务器中的第一虚拟服务器的传送组件可以基于路由规则来确定是将所述分组集合路由到所述虚拟交换机还是以绕过所述虚拟交换机的方式将所述分组集合传送到所述多个虚拟服务器中的第二虚拟服务器,并且可以通过所述网络和所述通信服务器在端点设备之间交换所述分组集合。
在包括示例52的主题的示例53中,所述装置可以包括交换机组件,用于在所述通信服务器的主机会话内生成所述虚拟交换机,并且所述虚拟交换机可以分析所述分组集合中的至少一个分组的内容,并且基于所述内容将所述分组集合路由通过多个虚拟服务器中的一个或多个虚拟服务器。
在包括示例52-53中的任何一个的主题的示例54中,所述内容可以包括以下中的至少一个:所述至少一个分组的报头的目的地地址、在所述至少一个分组的有效载荷中传达的数据的类型或在所述有效载荷中传达的数据的一部分的大小、以及用于指示是否基于所述内容将所述分组集合路由到所述另一个虚拟服务器的所述路由规则。
在包括示例52-54中的任何一个的主题的示例55中,所述虚拟交换机可以根据多个路由规则的一个或多个路由规则、基于所述内容集合来路由所述分组集合,并且可以从所述多个路由规则之中提供路由规则给所述传送组件。
在包括示例52-55中的任何一个的主题的示例56中,所述装置可以包括多个应用例程,所述多个应用例程中的每个应用例程将在多个虚拟服务器的虚拟服务器之一内执行以对所述分组集合执行不同类型的处理,以及所述虚拟交换机,用于至少基于由所述一个或多个虚拟服务器中的每个虚拟服务器内执行的所述应用例程所执行的处理的类型来将所述分组集合路由通过所述一个或多个虚拟服务器。
在包括示例52-56中的任何一个的主题的示例57中,在所述网络接口处从耦合到所述网络的第一端点设备接收所述分组集合,并且将所述分组集合在前进通过所述一个或多个虚拟服务器之后经由所述网络传输到第二端点设备。
在包括示例52-57中的任何一个的主题的示例58中,所述装置可以包括耦合到处理器组件的储存器,所述储存器可以包括共享存储器空间,所述共享存储器空间对所述第一和第二虚拟服务器是可访问的并且占据未被所述第一或第二虚拟服务器占据的所述储存器的一部分,所述传送组件可以将所述分组集合存储在所述共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器,并且所述第二虚拟服务器的另一传送组件可以从所述共享存储器空间中检索所述分组集合。
在包括示例52-58中的任何一个的主题的示例59中,所述装置可以包括传送控制器,所述传送组件用于基于所述确定来用信号通知所述传送控制器以将所述分组集合从所述第一虚拟服务器传送到所述第二虚拟服务器。
在包括示例52-59中的任何一个的主题的示例60中,所述处理器组件可以能够执行将数据从一个VM传送到另一个VM的指令,并且所述传送组件可以使用所述指令来基于所述确定使所述处理器组件将所述分组集合从所述第一虚拟服务器传送到所述第二虚拟服务器。
在包括示例52-60中的任何一个的主题的示例61中,所述装置可以包括耦合到所述处理器组件的储存器,所述储存器可以包括所述第一虚拟服务器可访问的共享存储器空间,所述共享存储器空间占据被所述第二虚拟服务器占据且未被所述第一虚拟服务器占据的所述储存器的一部分,并且所述传送组件可以将所述分组集合存储在所述共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器。
在包括示例52-61中的任何一个的主题的示例62中,由所述第一虚拟服务器占据的所述储存器的存储器空间可以包括在其中执行所述传送组件的第一部分和在其中执行应用例程的第二部分,并且所述传送组件可以使所述处理器组件仅将所述第一和第二部分中的一个指明为是可执行的。
在包括示例52-62中的任何一个的主题的示例63中,所述装置可以包括与所述第二虚拟服务器的虚拟网络接口相关联并在所述共享存储器空间内定义的分组缓冲器,用于缓冲由所述第二虚拟服务器从所述第一虚拟服务器或所述虚拟交换机接收到的分组。
在示例64中,至少一个有形的机器可读储存介质可以包括在由处理器组件执行时使所述处理器组件执行上述中的任何一个的指令。
在示例65中,一种装置可以包括用于执行上述任何操作的部件。

Claims (26)

1.一种控制通信的装置,包括:
处理器组件;
网络接口,用于将所述处理器组件耦合到网络;
虚拟交换机,用于分析将通过所述网络和通信服务器在端点设备之间交换的分组集合中的至少一个分组的内容,并且基于所述内容将所述分组集合路由通过多个虚拟服务器中的一个或多个虚拟服务器;和
所述多个虚拟服务器中的第一虚拟服务器的传送组件,用于基于路由规则来确定是将所述分组集合路由到所述虚拟交换机还是以绕过所述虚拟交换机的方式将所述分组集合传送到所述多个虚拟服务器中的第二虚拟服务器。
2.根据权利要求1所述的装置,包括交换机组件,用于在通信服务器的主机会话内生成所述虚拟交换机。
3.根据权利要求1所述的装置,包括多个应用例程,所述多个应用例程中的每一个应用例程用于在所述多个虚拟服务器中的一个虚拟服务器内被执行以对所述分组集合执行不同类型的处理,并且所述虚拟交换机用于至少基于在所述一个或多个虚拟服务器中的每个虚拟服务器内执行的应用例程执行的处理的类型来将所述分组集合路由通过所述一个或多个虚拟服务器。
4.根据权利要求1所述的装置,包括耦合到所述处理器组件的储存器,所述储存器包括共享存储器空间,所述共享存储器空间对所述第一和第二虚拟服务器是可访问的,并占据未被所述第一或第二虚拟服务器占据的所述储存器的一部分,所述传送组件用于将所述分组集合存储在所述共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器,并且所述第二虚拟服务器的另一传送组件用于从所述共享存储器空间检索所述分组集合。
5.根据权利要求1所述的装置,包括传送控制器,所述传送组件用于基于所述确定来用信号通知所述传送控制器以将所述分组集合从所述第一虚拟服务器传送到所述第二虚拟服务器。
6.根据权利要求1所述的装置,包括虚拟机(VM)组件,用于在通信服务器内生成多个VM,将所述多个VM中的每个VM配置为所述多个虚拟服务器中的虚拟服务器,在所述多个虚拟服务器中的每个虚拟服务器内生成至少一个虚拟网络接口以将每个虚拟服务器耦合到所述虚拟交换机,并且导致所述多个虚拟服务器中的每个虚拟服务器内的多个应用例程的应用例程的执行。
7.根据权利要求6所述的装置,所述处理器组件用于能够执行将数据从一个VM传送到另一个VM的指令,并且所述传送组件用于使用所述指令来基于所述确定使所述处理器组件将所述分组集合从所述第一虚拟服务器传送到所述第二虚拟服务器。
8.根据权利要求6所述的装置,所述虚拟交换机用于将所述内容与从所述虚拟交换机通过所述一个或多个虚拟服务器延伸并回到所述虚拟交换机的路径相关,并且所述装置包括接口控制组件,用于选择沿着所述路径的所述一个或多个虚拟服务器中的每一个虚拟服务器的所述至少一个虚拟网络接口中的一个或多个虚拟网络接口以轮询模式操作,并且选择未沿着所述路径的所述多个虚拟服务器中的至少一个虚拟服务器的所述至少一个虚拟网络接口中的一个或多个虚拟网络接口以非轮询模式操作。
9.根据权利要求8所述的装置,沿着所述路径的所述一个或多个虚拟服务器包括所述第一和第二虚拟服务器,并且所述接口控制组件用于响应于所述传送组件以绕过所述虚拟交换机的方式将所述分组集合从所述第一虚拟服务器路由到所述第二虚拟服务器的能力而禁止以所述轮询模式操作所述第一虚拟服务器的第一虚拟网络接口和所述第二虚拟服务器的第二虚拟网络接口。
10.一种用于控制通信的计算机实现的方法,包括:
在通信服务器内生成的虚拟交换机处从网络接收要通过所述网络在端点设备之间交换的分组集合;
在所述虚拟交换机处分析所述分组集合中的至少一个分组的内容;
基于所述内容将所述分组集合从所述虚拟交换机路由通过多个虚拟服务器中的一个或多个虚拟服务器;和
在所述多个虚拟服务器中的第一虚拟服务器处,基于路由规则来确定是将所述分组集合路由到所述虚拟交换机还是以绕过所述虚拟交换机的方式将所述分组集合传送到所述多个虚拟服务器中的第二虚拟服务器。
11.根据权利要求10所述的计算机实现的方法,所述方法包括:
从耦合到所述网络的第一端点设备并且通过所述通信服务器的网络接口接收所述分组集合;和
将被传输的所述分组集合在前进通过所述一个或多个虚拟服务器之后经由所述网络传输到第二端点设备。
12.根据权利要求10所述的计算机实现的方法,包括:
由所述第一虚拟服务器将所述分组集合存储在共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器;和
由所述第二虚拟服务器从所述共享存储器空间中检索所述分组集合,所述共享存储器空间对所述第一和第二虚拟服务器是可访问的,并占据未被所述第一或第二虚拟服务器占据的所述通信服务器的储存器的一部分。
13.根据权利要求10所述的计算机实现的方法,所述方法包括:
在所述通信服务器内生成多个虚拟机(VM);
将所述多个VM中的每个VM配置为所述多个虚拟服务器中的虚拟服务器;
在所述多个虚拟服务器中的每个虚拟服务器内生成所述至少一个虚拟网络接口以将每个虚拟服务器耦合到所述虚拟交换机;和
在所述多个虚拟服务器中的每个虚拟服务器内执行多个应用例程的应用例程。
14.根据权利要求13所述的计算机实现的方法,所述方法包括:由所述第一虚拟服务器将所述分组集合存储在共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器,所述共享存储器空间对所述第一虚拟服务器是可访问的,所述共享存储器空间占据被所述第二虚拟服务器占据且未被所述第一虚拟服务器占据的所述通信服务器的储存器的一部分。
15.根据权利要求14所述的计算机实现的方法,所述方法包括:
将被所述第一虚拟服务器占据的储存器的存储器空间划分为第一部分和第二部分,在所述第一部分中执行所述第一虚拟服务器的传送组件以将所述分组集合传送到所述第二虚拟服务器,在所述第二部分中执行应用例程;和
使所述通信服务器的处理器组件仅将所述第一和第二部分中的一个指明为是可执行的。
16.根据权利要求14所述的计算机实现的方法,所述方法包括:
在所述共享存储器空间内定义分组缓冲器;和
将所述分组与所述第二虚拟服务器的虚拟网络接口相关联以缓冲由所述第二虚拟服务器从所述第一虚拟服务器或所述虚拟交换机接收到的分组。
17.根据权利要求13所述的计算机实现的方法,所述方法包括在所述一个或多个虚拟服务器的虚拟服务器内生成用于从所述虚拟交换机接收所述分组集合的第一虚拟网络接口;用于将所述分组集合传输到所述虚拟交换机的第二虚拟网络接口;与所述第一虚拟网络接口相关联的第一分组缓冲器,用于在由所述虚拟服务器内执行的应用例程处理之前存储从所述虚拟交换机接收到的所述分组集合的分组;和与所述第二虚拟网络接口相关联的第二分组缓存器,用于存储在传输到所述虚拟交换机之前并由所述应用例程处理的所述分组集合的分组。
18.根据权利要求17所述的计算机实现的方法,所述方法包括:
监视所述第一分组缓冲器的第一充满级别和所述第二分组缓冲器的第二充满级别;
将所述第一和第二充满级别与至少与缓冲器下溢相关联的第一阈值和与缓冲器上溢相关联的第二阈值进行比较;
响应于所述第一充满级别下降到所述第一阈值以下或者所述第二充满级别上升到所述第二阈值以上,由所述应用例程降低所述虚拟服务器内的分组处理的速率;和
响应于所述第一充满级别上升到所述第二阈值以上或者所述第二充满级别下降到所述第一阈值以下,提高分组处理的速率。
19.一种控制通信的装置,包括:
通信服务器的处理器组件;
网络接口,用于将所述处理器组件耦合到网络;
虚拟机(VM)组件,用于在所述通信服务器内生成多个VM,将所述多个VM中的每个VM配置为多个虚拟服务器的虚拟服务器,以及在多个虚拟机服务器中的每个虚拟服务器内生成至少一个虚拟网络接口以将每个虚拟服务器耦合到虚拟交换机;和
所述多个虚拟服务器中的第一虚拟服务器的传送组件,用于基于路由规则来确定是将分组集合路由到所述虚拟交换机还是以绕过所述虚拟交换机的方式将所述分组集合传送到所述多个虚拟服务器中的第二虚拟服务器,所述分组集合要通过所述网络和所述通信服务器在端点设备之间进行交换。
20.根据权利要求19所述的装置,包括交换机组件,用于在所述通信服务器的主机会话内生成所述虚拟交换机,所述虚拟交换机用于分析所述分组集合中的至少一个分组的内容,并且基于所述内容将所述分组集合路由通过多个虚拟服务器的一个或多个虚拟服务器。
21.根据权利要求19所述的装置,在所述网络接口处从耦合到所述网络的第一端点设备接收所述分组集合,并且将所述分组集合在前进通过所述一个或多个虚拟服务器之后经由所述网络传输到第二端点设备。
22.根据权利要求19所述的装置,包括耦合到所述处理器组件的储存器,所述储存器包括所述第一虚拟服务器可访问的共享存储器空间,所述共享存储器空间占据被所述第二虚拟服务器占据且未被所述第一虚拟服务器占据的所述储存器的一部分,所述传送组件用于将所述分组集合存储在所述共享存储器空间内以基于所述确定将所述分组集合传送到所述第二虚拟服务器。
23.根据权利要求22所述的装置,被所述第一虚拟服务器所占据的储存器的存储器空间包括在其中执行所述传送组件的第一部分和在其中执行应用例程的第二部分,所述传送组件用于使所述处理器组件仅将所述第一和第二部分中的一个指明为是可执行的。
24.根据权利要求22所述的装置,包括与所述第二虚拟服务器的虚拟网络接口相关联并在所述共享存储器空间内定义的分组缓冲器,用于缓冲由所述第二虚拟服务器从所述第一虚拟服务器或所述虚拟交换机接收到的分组。
25.一种用于控制通信的装置,包括用于执行权利要求10-18中任一项所述的方法的部件。
26.一种计算机可读介质,在其上已存储指令,所述指令在由计算设备执行时导致所述计算设备执行根据权利要求10-18中任一项的方法。
CN201680048359.3A 2015-08-20 2016-08-17 用于控制通信的方法、装置和计算机可读介质 Active CN107925616B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/830,862 US9781209B2 (en) 2015-08-20 2015-08-20 Techniques for routing packets between virtual machines
US14/830862 2015-08-20
PCT/US2016/047434 WO2017031253A1 (en) 2015-08-20 2016-08-17 Techniques for routing packets between virtual machines

Publications (2)

Publication Number Publication Date
CN107925616A CN107925616A (zh) 2018-04-17
CN107925616B true CN107925616B (zh) 2021-01-26

Family

ID=58051594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680048359.3A Active CN107925616B (zh) 2015-08-20 2016-08-17 用于控制通信的方法、装置和计算机可读介质

Country Status (4)

Country Link
US (2) US9781209B2 (zh)
EP (1) EP3338413B1 (zh)
CN (1) CN107925616B (zh)
WO (1) WO2017031253A1 (zh)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9736065B2 (en) 2011-06-24 2017-08-15 Cisco Technology, Inc. Level of hierarchy in MST for traffic localization and load balancing
US8908698B2 (en) 2012-01-13 2014-12-09 Cisco Technology, Inc. System and method for managing site-to-site VPNs of a cloud managed network
US9043439B2 (en) 2013-03-14 2015-05-26 Cisco Technology, Inc. Method for streaming packet captures from network access devices to a cloud server over HTTP
US9755858B2 (en) 2014-04-15 2017-09-05 Cisco Technology, Inc. Programmable infrastructure gateway for enabling hybrid cloud services in a network environment
US9473365B2 (en) 2014-05-08 2016-10-18 Cisco Technology, Inc. Collaborative inter-service scheduling of logical resources in cloud platforms
US10122605B2 (en) 2014-07-09 2018-11-06 Cisco Technology, Inc Annotation of network activity through different phases of execution
US9825878B2 (en) 2014-09-26 2017-11-21 Cisco Technology, Inc. Distributed application framework for prioritizing network traffic using application priority awareness
US10050862B2 (en) 2015-02-09 2018-08-14 Cisco Technology, Inc. Distributed application framework that uses network and application awareness for placing data
US10037617B2 (en) 2015-02-27 2018-07-31 Cisco Technology, Inc. Enhanced user interface systems including dynamic context selection for cloud-based networks
US10708342B2 (en) 2015-02-27 2020-07-07 Cisco Technology, Inc. Dynamic troubleshooting workspaces for cloud and network management systems
US10382534B1 (en) 2015-04-04 2019-08-13 Cisco Technology, Inc. Selective load balancing of network traffic
US10476982B2 (en) 2015-05-15 2019-11-12 Cisco Technology, Inc. Multi-datacenter message queue
US10034201B2 (en) 2015-07-09 2018-07-24 Cisco Technology, Inc. Stateless load-balancing across multiple tunnels
US10356012B2 (en) * 2015-08-20 2019-07-16 Intel Corporation Techniques for routing packets among virtual machines
EP3351003B1 (en) * 2015-09-15 2021-07-14 InterDigital Madison Patent Holdings, SAS Method and apparatus for providing power saving media content
US11005682B2 (en) * 2015-10-06 2021-05-11 Cisco Technology, Inc. Policy-driven switch overlay bypass in a hybrid cloud network environment
US10067780B2 (en) 2015-10-06 2018-09-04 Cisco Technology, Inc. Performance-based public cloud selection for a hybrid cloud environment
US10462136B2 (en) 2015-10-13 2019-10-29 Cisco Technology, Inc. Hybrid cloud security groups
US10523657B2 (en) 2015-11-16 2019-12-31 Cisco Technology, Inc. Endpoint privacy preservation with cloud conferencing
US10205677B2 (en) 2015-11-24 2019-02-12 Cisco Technology, Inc. Cloud resource placement optimization and migration execution in federated clouds
US10084703B2 (en) 2015-12-04 2018-09-25 Cisco Technology, Inc. Infrastructure-exclusive service forwarding
US10291648B2 (en) * 2015-12-22 2019-05-14 At&T Intellectual Property I, L.P. System for distributing virtual entity behavior profiling in cloud deployments
US10367914B2 (en) 2016-01-12 2019-07-30 Cisco Technology, Inc. Attaching service level agreements to application containers and enabling service assurance
US10230633B2 (en) * 2016-01-21 2019-03-12 Red Hat, Inc. Shared memory communication in software defined networking
US10812376B2 (en) * 2016-01-22 2020-10-20 Red Hat, Inc. Chaining network functions to build complex datapaths
WO2017156496A1 (en) * 2016-03-11 2017-09-14 Post Oak Today LLC Methods and apparatus for establishing shared memory spaces for data access and distribution
US10129177B2 (en) 2016-05-23 2018-11-13 Cisco Technology, Inc. Inter-cloud broker for hybrid cloud networks
US10659283B2 (en) 2016-07-08 2020-05-19 Cisco Technology, Inc. Reducing ARP/ND flooding in cloud environment
US10432532B2 (en) 2016-07-12 2019-10-01 Cisco Technology, Inc. Dynamically pinning micro-service to uplink port
US10382597B2 (en) 2016-07-20 2019-08-13 Cisco Technology, Inc. System and method for transport-layer level identification and isolation of container traffic
US10263898B2 (en) 2016-07-20 2019-04-16 Cisco Technology, Inc. System and method for implementing universal cloud classification (UCC) as a service (UCCaaS)
US10142346B2 (en) 2016-07-28 2018-11-27 Cisco Technology, Inc. Extension of a private cloud end-point group to a public cloud
US10567344B2 (en) 2016-08-23 2020-02-18 Cisco Technology, Inc. Automatic firewall configuration based on aggregated cloud managed information
US10290303B2 (en) * 2016-08-25 2019-05-14 Google Llc Audio compensation techniques for network outages
US10523592B2 (en) 2016-10-10 2019-12-31 Cisco Technology, Inc. Orchestration system for migrating user data and services based on user information
US11044162B2 (en) 2016-12-06 2021-06-22 Cisco Technology, Inc. Orchestration of cloud and fog interactions
US10326817B2 (en) 2016-12-20 2019-06-18 Cisco Technology, Inc. System and method for quality-aware recording in large scale collaborate clouds
US20180181421A1 (en) * 2016-12-27 2018-06-28 Intel Corporation Transferring packets between virtual machines via a direct memory access device
US10334029B2 (en) 2017-01-10 2019-06-25 Cisco Technology, Inc. Forming neighborhood groups from disperse cloud providers
US10552191B2 (en) 2017-01-26 2020-02-04 Cisco Technology, Inc. Distributed hybrid cloud orchestration model
US10320683B2 (en) 2017-01-30 2019-06-11 Cisco Technology, Inc. Reliable load-balancer using segment routing and real-time application monitoring
US10671571B2 (en) 2017-01-31 2020-06-02 Cisco Technology, Inc. Fast network performance in containerized environments for network function virtualization
US10474542B2 (en) * 2017-03-24 2019-11-12 Commvault Systems, Inc. Time-based virtual machine reversion
US11005731B2 (en) 2017-04-05 2021-05-11 Cisco Technology, Inc. Estimating model parameters for automatic deployment of scalable micro services
US10439877B2 (en) 2017-06-26 2019-10-08 Cisco Technology, Inc. Systems and methods for enabling wide area multicast domain name system
US10382274B2 (en) 2017-06-26 2019-08-13 Cisco Technology, Inc. System and method for wide area zero-configuration network auto configuration
US10892940B2 (en) 2017-07-21 2021-01-12 Cisco Technology, Inc. Scalable statistics and analytics mechanisms in cloud networking
US10425288B2 (en) 2017-07-21 2019-09-24 Cisco Technology, Inc. Container telemetry in data center environments with blade servers and switches
US10601693B2 (en) 2017-07-24 2020-03-24 Cisco Technology, Inc. System and method for providing scalable flow monitoring in a data center fabric
US10541866B2 (en) 2017-07-25 2020-01-21 Cisco Technology, Inc. Detecting and resolving multicast traffic performance issues
US10353800B2 (en) 2017-10-18 2019-07-16 Cisco Technology, Inc. System and method for graph based monitoring and management of distributed systems
US11481362B2 (en) 2017-11-13 2022-10-25 Cisco Technology, Inc. Using persistent memory to enable restartability of bulk load transactions in cloud databases
US10708379B1 (en) * 2017-11-22 2020-07-07 Amazon Technologies, Inc. Dynamic proxy for databases
US10705882B2 (en) 2017-12-21 2020-07-07 Cisco Technology, Inc. System and method for resource placement across clouds for data intensive workloads
US11595474B2 (en) 2017-12-28 2023-02-28 Cisco Technology, Inc. Accelerating data replication using multicast and non-volatile memory enabled nodes
US10511534B2 (en) 2018-04-06 2019-12-17 Cisco Technology, Inc. Stateless distributed load-balancing
US10728361B2 (en) 2018-05-29 2020-07-28 Cisco Technology, Inc. System for association of customer information across subscribers
US10904322B2 (en) 2018-06-15 2021-01-26 Cisco Technology, Inc. Systems and methods for scaling down cloud-based servers handling secure connections
US10764266B2 (en) 2018-06-19 2020-09-01 Cisco Technology, Inc. Distributed authentication and authorization for rapid scaling of containerized services
US11019083B2 (en) 2018-06-20 2021-05-25 Cisco Technology, Inc. System for coordinating distributed website analysis
US10819571B2 (en) 2018-06-29 2020-10-27 Cisco Technology, Inc. Network traffic optimization using in-situ notification system
US10735282B1 (en) * 2018-06-29 2020-08-04 Juniper Networks, Inc Apparatus, system, and method for debugging network devices based on the contents of dropped packets
US10904342B2 (en) 2018-07-30 2021-01-26 Cisco Technology, Inc. Container networking using communication tunnels
KR102025921B1 (ko) * 2018-08-09 2019-09-26 숭실대학교산학협력단 정보 중심 네트워크 기반 지연 허용 네트워크에서의 데이터 캐싱 방법, 이를 수행하기 위한 기록매체 및 장치
US11641316B2 (en) * 2020-06-29 2023-05-02 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Capturing data packets for analysis using a virtual machine
US11940933B2 (en) * 2021-03-02 2024-03-26 Mellanox Technologies, Ltd. Cross address-space bridging

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101594358A (zh) * 2009-06-29 2009-12-02 北京航空航天大学 三层交换方法、装置、系统和宿主机
CN103986662A (zh) * 2014-05-22 2014-08-13 浪潮电子信息产业股份有限公司 一种跨虚拟化平台的虚拟路由器实现方法
CN104852840A (zh) * 2015-05-28 2015-08-19 杭州华三通信技术有限公司 一种控制虚拟机之间互访的方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440691A (en) 1992-02-27 1995-08-08 Digital Equipment Corporation, Pat. Law Group System for minimizing underflowing transmit buffer and overflowing receive buffer by giving highest priority for storage device access
US8005022B2 (en) 2006-07-20 2011-08-23 Oracle America, Inc. Host operating system bypass for packets destined for a virtual machine
US7965714B2 (en) 2008-02-29 2011-06-21 Oracle America, Inc. Method and system for offloading network processing
EP2482496B1 (en) * 2009-09-24 2018-11-28 Nec Corporation Identification system for inter-virtual-server communication and identification method for inter-virtual-server communication
JP5720577B2 (ja) 2009-12-04 2015-05-20 日本電気株式会社 サーバ及びフロー制御プログラム
US8978031B2 (en) 2012-08-21 2015-03-10 International Business Machines Corporation Processing of overlay networks using an accelerated network interface card
US9317310B2 (en) * 2013-01-31 2016-04-19 Broadcom Corporation Systems and methods for handling virtual machine packets
US10135687B2 (en) 2014-01-06 2018-11-20 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Virtual group policy based filtering within an overlay network
US10261814B2 (en) * 2014-06-23 2019-04-16 Intel Corporation Local service chaining with virtual machines and virtualized containers in software defined networking
US9923815B2 (en) * 2014-11-11 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Network based service function chaining on top of rack switches
US10320921B2 (en) * 2014-12-17 2019-06-11 Vmware, Inc. Specializing virtual network device processing to bypass forwarding elements for high packet rate applications
US10812632B2 (en) * 2015-02-09 2020-10-20 Avago Technologies International Sales Pte. Limited Network interface controller with integrated network flow processing
US10122622B2 (en) * 2015-05-29 2018-11-06 Futurewei Technologies, Inc. Exchanging application metadata for application context aware service insertion in service function chain

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101594358A (zh) * 2009-06-29 2009-12-02 北京航空航天大学 三层交换方法、装置、系统和宿主机
CN103986662A (zh) * 2014-05-22 2014-08-13 浪潮电子信息产业股份有限公司 一种跨虚拟化平台的虚拟路由器实现方法
CN104852840A (zh) * 2015-05-28 2015-08-19 杭州华三通信技术有限公司 一种控制虚拟机之间互访的方法及装置

Also Published As

Publication number Publication date
WO2017031253A1 (en) 2017-02-23
US20170054659A1 (en) 2017-02-23
EP3338413B1 (en) 2021-02-24
US10567510B2 (en) 2020-02-18
US9781209B2 (en) 2017-10-03
CN107925616A (zh) 2018-04-17
EP3338413A4 (en) 2019-02-27
EP3338413A1 (en) 2018-06-27
US20180270309A1 (en) 2018-09-20

Similar Documents

Publication Publication Date Title
CN107925616B (zh) 用于控制通信的方法、装置和计算机可读介质
US10782978B2 (en) Techniques for cooperative execution between asymmetric processor cores
US10356012B2 (en) Techniques for routing packets among virtual machines
US10686763B2 (en) Techniques for load balancing in a packet distribution system
US11656853B2 (en) Techniques for distributed operation of secure controllers
US10541915B2 (en) Techniques for routing packets within an evolved packet core
US10691618B2 (en) Secure enclaves for use by kernel mode applications
US20180004578A1 (en) Techniques for distributed processing task portion assignment
US10114949B2 (en) Techniques for monitoring integrity of OS security routine
US20150117516A1 (en) Dynamic video encoding based on channel quality
US10255093B2 (en) Techniques for portable computing device virtualization
CN116547644A (zh) 检测可编程原子事务中的无限循环
US20180129808A1 (en) Techniques for detecting malware with minimal performance degradation
US9674141B2 (en) Techniques for implementing a secure mailbox in resource-constrained embedded systems
US11526632B2 (en) Securing address information in a memory controller
US20130042043A1 (en) Method and Apparatus for Dynamic Channel Access and Loading in Multichannel DMA
EP4134804A1 (en) Data access technologies

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