Virtual machine multicast/broadcast in virtual network

The performance of multicast and/or broadcasting between virtual machines over a virtual network. A source hypervisor accesses a network message originated from a source virtual machine, and uses the network message to determine a virtual network address associated with destination virtual machines (after potentially resolving group virtual network addresses). Using each virtual network address, the hypervisor determines a physical network address of the corresponding hypervisor that supports the destination virtual machine, and also determines a unique identifier for the destination virtual machine. The source hypervisor may then dispatch the network message along with the unique identifier to the destination hypervisor over the physical network using the physical network address of the hypervisor. The destination hypervisor passes the network message to the destination virtual machine identified by the unique identifier.

BACKGROUND

A virtual machine is code that performs the logic of an operating system and potentially a set of one or more applications as well. However, instead of such logic being performed on a client computing system (the “client”) that actually renders the associated user interface, the virtual machine executes on a host computing system (the “host”).

In operation, the virtual machine generates images and/or rendering instructions representing the user interface (such as a desktop or application user interface) to be rendered on the client, and causes the host to transmit the same to the client. The client receives the image and/or rendering instructions, and renders the user interface accordingly. The client also receives user input and transmits the same to the host. The virtual machine processes the input and changes the virtual machine state. If such change in state causes a change to the user interface, the changes are transmitted to the client for further rendering. This process repeats rather quickly, and the response time is sufficiently fast, that the user of the client might not be even able to distinguish whether the operating system and perhaps the associated applications are operated on the client or via virtual machine.

A host is typically capable of running a number of virtual machines. The host typically ensures isolation between the virtual machines. Thus, a single host may provide the operating system logic for a number of remote clients. Each host has a hypervisor that uses underlying physical resources (such as network bandwidth, storage, memory, processing) to provide the appearance to the virtual machine as though the virtual machine has dedicated physical resources. This appearance is referred to as a virtual resource. Thus, each virtual machine may have virtual hard drives, virtual processors, virtual network bandwidth, virtual RAM and so forth.

A virtual network may also be provided by a hypervisor and offered up to one or more of the virtual machines running on the host, to give the appearance that those virtual machines are connected to a particular network (i.e., a virtual network). An underlying physical network actually facilitates communication between the corresponding hypervisors of the communicating virtual machines. However, these details are abstracted away from the view of the communicating virtual machines.

BRIEF SUMMARY

At least one embodiment described herein relates to the performance of multicast and/or broadcasting between virtual machines over a virtual network. A source hypervisor accesses a network message originated from a source virtual machine, and accesses a virtual network address associated with at least some of the destination virtual machines.

In some embodiments, the virtual network address may be expressly included in the network message, and may already correspond to a single destination address. Alternatively or in addition, a group virtual network address (such as a multicast or broadcast virtual network address) expressed within the network message may be resolved to multiple individual virtual network addresses. The resolving of the group virtual network address may be performed using an external address lookup service, although not required.

Using each resolved virtual network address, the hypervisor determines a physical network address of the corresponding hypervisor that supports the destination virtual machine, and also determines a unique identifier for the destination virtual machine. This might also be performed with the assistance of the external address lookup service, although not required.

The source hypervisor may then dispatch the network message along with the unique identifier for the destination virtual machine to the destination hypervisor over the physical network using the physical network address of the hypervisor. For instance, the source hypervisor might encapsulate the network message along with the unique identifier of the destination virtual machine. The encapsulation might include, for instance, the physical network address of the destination hypervisor that allows the communication to be routed to the destination hypervisor.

The destination hypervisor receives the communication, interprets the unique identifier to identify the destination virtual machine, and passes the network message to the destination virtual machine. This may be performed for each virtual network address that resolved to a destination virtual machine.

This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

DETAILED DESCRIPTION

In accordance with embodiments described herein, the performance of multicast and/or broadcasting is described between virtual machines over a virtual network. A source hypervisor accesses a network message originated from a source virtual machine, and uses the network message to determine a virtual network address associated with destination virtual machines (after potentially resolving group virtual network addresses).

Using each virtual network address, the hypervisor determines a physical network address of the corresponding hypervisor that supports the destination virtual machine, and also determines a unique identifier for the destination virtual machine. This determination, as well as potentially resolution of group virtual network addresses, may be performed using an external address lookup service.

The source hypervisor may then dispatch the network message along with the unique identifier to the destination hypervisor over the physical network using the physical network address of the hypervisor. The destination hypervisor passes the network message to the destination virtual machine identified by the unique identifier.

Some introductory discussion of a computing system will be described with respect toFIG. 1. Then, the operation of virtual machines will be described with respect toFIG. 2. Subsequently, the principles of virtual machines multicasting and/or broadcasting in a virtual network will be described with respect toFIG. 3and successive figures.

Computing systems are now increasingly taking a wide variety of forms. Computing systems may, for example, be handheld devices, appliances, laptop computers, desktop computers, mainframes, distributed computing systems, or even devices that have not conventionally been considered a computing system. In this description and in the claims, the term “computing system” is defined broadly as including any device or system (or combination thereof) that includes at least one physical and tangible processor, and a physical and tangible memory capable of having thereon computer-executable instructions that may be executed by the processor. The memory may take any form and may depend on the nature and form of the computing system. A computing system may be distributed over a network environment and may include multiple constituent computing systems.

As illustrated inFIG. 1, in its most basic configuration, a computing system100typically includes at least one processing unit102and memory104. The memory104may be physical system memory, which may be volatile, non-volatile, or some combination of the two. The term “memory” may also be used herein to refer to non-volatile mass storage such as physical storage media. If the computing system is distributed, the processing, memory and/or storage capability may be distributed as well. As used herein, the term “module” or “component” can refer to software objects or routines that execute on the computing system. The different components, modules, engines, and services described herein may be implemented as objects or processes that execute on the computing system (e.g., as separate threads).

In the description that follows, embodiments are described with reference to acts that are performed by one or more computing systems. If such acts are implemented in software, one or more processors of the associated computing system that performs the act direct the operation of the computing system in response to having executed computer-executable instructions. For example, such computer-executable instructions may be embodied on one or more computer-readable media that form a computer program product. An example of such an operation involves the manipulation of data. The computer-executable instructions (and the manipulated data) may be stored in the memory104of the computing system100. Computing system100may also contain communication channels108that allow the computing system100to communicate with other message processors over, for example, network110.

Having described a physical computing system (or physical machine) with respect toFIG. 1, the concept of a virtual computing system (or virtual machine) will now be described. One type of physical computing system is termed a host computing system (or simply “host”). Each host is capable of running one or more, and potentially many, virtual machines. For instance,FIG. 2abstractly illustrates a host200in further detail. In the case ofFIG. 2, the host200is illustrated as operating three virtual machines210including virtual machines210A,210B and210C. However, the ellipses210D once again represents that the principles described herein are not limited to the number of virtual machines running on the host200. There may be as few as zero virtual machines running on the host with the only upper limit being defined by the physical capabilities of the host200.

During operation, the virtual machines emulates a fully operational computing system including an at least an operating system, and perhaps one or more other applications as well. Each virtual machine is assigned to a particular client, and is responsible to support the desktop environment for that client.

The virtual machine generates a desktop image or other rendering instructions that represent a current state of the desktop, and then transmits the image or instructions to the client for rendering of the desktop. As the user interacts with the desktop at the client, the user inputs are transmitted from the client to the virtual machine. The virtual machine processes the user inputs and, if appropriate, changes the desktop state. If such change in desktop state is to cause a change in the rendered desktop, then the virtual machine alters the image or rendering instructions, if appropriate, and transmits the altered image or rendered instructions to the client computing system for appropriate rendering. From the prospective of the user, it is as though the client computing system is itself performing the desktop processing.

The host200includes a hypervisor220that emulates virtual resources for the virtual machines210using physical resources221that are abstracted from view of the virtual machines210. The hypervisor221also provides proper isolation between the virtual machines210. Thus, from the perspective of any given virtual machine, the hypervisor220provides the illusion that the virtual machine is interfacing with a physical resource, even though the virtual machine only interfaces with the appearance (e.g., a virtual resource) of a physical resource, and not with a physical resource directly. InFIG. 2, the physical resources221are abstractly represented as including resources221A through221F. Examples of physical resources221including processing capacity, memory, disk space, network bandwidth, media drives, and so forth.

FIG. 3illustrates a number of virtual machines labeled A through E communicating over a virtual network301. Each of the virtual machines A through E has an associated virtual network address321through325that the virtual machines may use to communicate over the virtual network301. The virtual network addresses described herein may each be, for example, virtual Internet Protocol (IP) addresses.

Suppose that virtual machine A is to multicast a network message310to each of the other virtual machines B, C, D, E (as represented by the multi-headed arrow311).FIG. 4illustrates an example400of the network message310in further detail. The virtual machine A may construct network message310(e.g., network message400), which includes a destination header401that expresses each of the virtual network addresses411,412and413. For instance, the destination header401may express the virtual network address of virtual machine B (which is322), the virtual network address of virtual machine C (which is323) and the network address of a group virtual network address that includes both virtual machines D and E (which is302). The association between virtual machine D and the group virtual network address302is represented by dashed line303B. Likewise, the association between virtual machine E and the group virtual network address302is represented by dashed line303A. For instance, the group virtual network address302may be a multicast virtual network address or perhaps a broadcast virtual network address.

A multicast network address may, in some embodiments, be subscribed to be a virtual machine by registering for the multicast network address to add the virtual machine as a member of any network message received at the multicast network address. An associated deregistration request may deregister the virtual machine from the multicast virtual network address. A broadcast virtual network address is associated with a particular set of the virtual network (e.g., a subnet). Any network message received at the broadcast virtual network address is broadcasts to each of the virtual machines within that subnet.

The virtual network301is “virtual” in the sense that the underlying physical network architecture (and associated physical addresses) are abstracted away from the view of each of the virtual machines A through E. For instance,FIG. 5illustrates a physical network environment500that shows the five virtual machines A through E in their actual physical environment.

The physical network environment includes three hosts510,520and530communicating over network501. Each host has as a physical network address, an example of which being an actual IP address for the physical network501. For instance, host510has associated physical network address541, host520has associated physical network address542, and host530has associated physical network address543. Each of the hosts510,520and530includes an associated hypervisor511,521and531respectively.

Each host includes corresponding virtual machines. For instance, as an example only, host510operates virtual machine512,513and514; host520operates virtual machines522,523and524; and host530operates virtual machines532,533and534. Each virtual machine may have a unique identifier. For instance, virtual machine513has identifier D and corresponds to virtual machine D ofFIG. 3, virtual machine514has identifier A and corresponds to virtual machine A ofFIG. 3, virtual machine523has identifier E and corresponds to virtual machine E ofFIG. 3, virtual machine532has identifier B and corresponds to virtual machine B ofFIG. 3, and virtual machine533has identifier C and corresponds to virtual machine C ofFIG. 3.

Thus, the actual physical configuration of the physical network500is much different than the abstracted view offered by the virtual network300. The network addresses are different in the virtual network300than the physical network500, and further the virtual machines A through E need not be concerned about the underpinning physical network(s) that support the virtual network300.

The physical network environment500also includes an address lookup service502, which may operate as described further below. The implementation of the address lookup service502is not important to the more general principles described herein. The address lookup service502may be, for example, a cloud service, or perhaps a distributed application available on each of the hosts510,520and530. While the physical network environment shows three hosts, each having three virtual machine running thereon, this is just an example only. The principles described herein apply no matter how many hosts the physical network environment has, and no matter how many virtual machines operate on particular hosts.

FIG. 6illustrates a flowchart of a method600of performing a virtualized multicast of a network message from the perspective of the source hypervisor, which dispatches a multicast network message.FIG. 7illustrates a flowchart of a method700of receiving and delivering a network message from the perspective of the destination hypervisor. As an example, the methods600and700may be performed to facilitate the multicasting311of the network message310(e.g., message400) over the virtual network300, which of course involves operations at the physical level of the physical network environment500ofFIG. 5. Accordingly,FIGS. 6 and 7will now be described with frequent reference toFIGS. 3 through 5.

Referring toFIG. 6, the source hypervisor accesses a network message originated from a source virtual machine (act601). Referring toFIG. 3, the source virtual machine may be virtual machine A, and the network message may be network message310, an example of which being the network message400ofFIG. 4. At the physical network level referring toFIG. 5, the source hypervisor511access the network message from virtual machine514(i.e., virtual machine A) as represented by arrow551.

The source hypervisor then access a virtual network address associated with each of the destination virtual machines (act602). For instance, referring toFIG. 4, the virtual network addresses in the destination header401specify both individual virtual network addresses and group virtual network addresses. Individual virtual network addresses are addresses that are assigned specifically to an individual virtual machine (such as virtual machine addresses321through325inFIG. 3). Group network addresses are addresses that may be assigned to multiple virtual machines (such as group virtual network address302inFIG. 3).

FIG. 8illustrates a flowchart of a method800for accessing a virtual network address associated with each of a plurality of destination virtual machines at least indirectly addressed by the network message. The method800may be performed in order to accomplish act602ofFIG. 6. The method800is recursive but at the zero'th level of recursion (before any recursion of the method800is performed), the method800is performed for each of the virtual network addresses expressed within the network message. For instance, in the case ofFIG. 4, at the zero'th level of recursion, the method800may be performed for each of the virtual network addresses411through413expressed within the network message400.

Beginning with virtual network address411, the source hypervisor511access the virtual network address411(which is322—the virtual network address of virtual machine B). This corresponds to act801inFIG. 8. The method800then branches depending on whether or not the accessed virtual network address is a group virtual network address (decision block802). In the case of virtual network address411, the virtual network address411is an individual virtual network address (“No” in decision block802). Accordingly, the virtual network address411is added to a list (act803) (e.g.,322is added to the list). At the zero'th level of recursion, there are more virtual network addresses to be evaluated (“Yes” in decision block804) since there are more virtual network addresses expressed within the network message400. Accordingly, the method800returns to access the network virtual network address expressed in the network message400.

The source hypervisor511accesses the virtual network address412(which is302) (act801). This is a group virtual network address (“Yes” in decision block802), and so the constituent virtual network addresses of the group virtual network address are found (act806). In one embodiment, this may be performed by uses the address lookup service502ofFIG. 5.FIG. 9illustrates an address lookup service900and the data that might be represented therein. Here, there is a group virtual network address correlation table902that correlates the group virtual network address302with its constituent virtual network address. In this case, the constituent virtual network address are virtual network address324(corresponding to virtual machine D) and virtual network address325(corresponding to virtual machine E). The method800then moves up one level of recursion to the 1stlevel of recursion (act807).

The method800then begins at the 1stlevel of recursion. When operating at an “n”th level of recursion (where n is a positive integer), the method800may be performed for each of the constituent virtual network addresses that were discovered by the group virtual network address that caused the higher level recursion. In other words, for this 1stlevel of recursion, the method800is performed for each of virtual network address324and325.

Beginning with virtual network message324, the source hypervisor511accesses the virtual network address324(act801). Since this is an individual virtual network address (“No” in decision block802), the virtual network address324is added to the list (act804). Thus, the list now includes addresses322and324. There are more virtual network addresses to be evaluated at this level of recursion (“Yes” in decision block804), and thus the method returns to act801.

The next virtual network address at this 1stlevel of recursion is accessed (act801). This would be virtual network address325. This is an individual virtual network address (“No” in decision block802), and thus this virtual network address325is also added to the list (act803). Thus, at this stage, the list includes virtual network addresses322,324and325. There are no more virtual network address to evaluate at this 1stlevel of recursion (“No” in decision block804), and thus the recursion moves down one level to the zero'th level of recursion (act805). Thus, the method800continues at the zero-th level of recursion where it last level off before entering the 1stlevel of recursion.

Continuing with virtual network message413, the source hypervisor511accesses the virtual network address413(which is323—the virtual network address of virtual machine C) (act801). Since this is an individual virtual network address (“No” in decision block802), the virtual network address413is added to a list (act803) (e.g.,323is added to the list). Accordingly, at this stage, there are four virtual network addresses322through325in the list. There are no more virtual network addresses to evaluate (“No” in decision block805), and thus the recursion moves down one level (act805), which means the method800ends in the case of already being at the zero'th level of recursion.

Returning toFIG. 6, the act602, implemented by recursively performing method800on the virtual network addresses expressed in the destination header401of the network message400results in the virtual network addresses322through325being identified (act602). The contents of dashed-lined box610are then performed for each of the identified destination virtual machines. However, the principles described also apply if the contents of box610are performed for only a subset or even just one of the identified virtual network addresses.

For each virtual network address, the source hypervisor511uses the associated virtual network address to determine a hypervisor physical network address for a destination hypervisor that supports the destination virtual machine (act611). In addition, the associated virtual network address may be used to determine a unique identifier for the associated destination virtual machine (act612). Although not required, this may be determined using the address lookup service502ofFIG. 5. Referring toFIG. 9, the individual virtual network address table901shows various entries901A through901E in which the hypervisor physical network address associated with each of the virtual network addresses is revealed, and in which the unique identifier of each destination virtual machine associated with each virtual network address is revealed.

For instance, for virtual network address322, the hypervisor physical network address is543and the virtual machine unique identifier is B. For virtual network address323, the hypervisor physical network address is again543and the virtual machine unique identifier is C. For virtual network address324, the hypervisor physical network address is541(the same hypervisor as the source virtual machine) and the virtual machine unique identifier is D. For virtual network address325, the hypervisor physical network address is542and the virtual machine unique identifier is E.

For each virtual network address, the source hypervisor511then uses the hypervisor physical network address to dispatch the network message to the destination hypervisor along with the unique identifier for the destination virtual machine (act613).

In the case of virtual network address324, the source hypervisor511may simply uses the hypervisor physical network address to recognize that no physical dispatch over the physical network501is necessary.

In the case of virtual network address325, the source hypervisor511will physically dispatch a communication over the physical network501since the destination hypervisor521is not the same as the source hypervisor511. Accordingly, the communication is addressed using hypervisor physical network address542, and includes the original network message (e.g., network message400) as well as the unique identifier E. This communication is represented inFIG. 5by arrow552and message562.

In the case of virtual network addresses322and323, the source hypervisor511may physically dispatch a single communication over the physical network501since the destination hypervisor531is the same for the virtual machines represented by both virtual network addresses322and323. Accordingly, the communication is addressed using hypervisor physical network address542, and includes the original network message (e.g., network message400) as well as the unique identifiers B and C. This communication is represented inFIG. 5by arrow553and message563.

FIG. 7illustrates a flowchart of method700for the destination virtual machine routing the network message. Each destination hypervisor will perform the method700upon receiving the communication that includes the network message400and the one or more unique identifiers that uniquely identify the virtual machine. For instance, for virtual machines B and C, the destination hypervisor531accesses the communication463, uses the unique identifiers B and C to identify the destination virtual machines532and533(act702), and then provides or passes the network message400to the virtual machine532and533(act703). For virtual machine D, after the source hypervisor511recognizes itself as the destination hypervisor (act701), the unique identifier D is used to identify virtual machine513as a destination virtual machine (act702), and the message400is passed to the virtual machine D (act703). For virtual machine E, the destination hypervisor521accesses the communication462, uses the unique identifier E to identify the destination virtual machine523(act702), and then provides or passes the network message400to the virtual machine523(act703).

From the virtual network perspective inFIG. 3, the virtual machine A has been able to perform the multicast311of the network message300, and the complex underpinnings of how this was accomplished using the physical network environment500are abstracted away from the view of the virtual machines A through E.

As previously mentioned, the group virtual network address302may be a multicast virtual network address.FIG. 10illustrates a flowchart of a method1000for updating a multicast group virtual network address. The method1000may be performed by any of the hypervisors that receive a registration or deregistration request from one or their virtual machines.

The hypervisor that supports the virtual machine accesses a multicast registration or deregistration multicast registration request from the virtual machine (act1001). The method1000then branches depending on whether the request is a registration request or a deregistration request (decision block1002).

If the request is a registration request (“Reg” in decision block1002), the hypervisor registers the virtual network address with group virtual network address (act1003). For instance, the hypervisor communicates the multicast registration request to the address lookup service502(act1011). The address lookup service receives the multicast registration request, (act1012), and responds to the multicast registration request by registering a virtual network address associated with the virtual machine with the multicast virtual network address (act1013).

For instance, in order for virtual machine D to be added to the multicast virtual network address302(as represented by dashed line303B), the virtual machine D dispatches the registration request into the virtual network301. This registration request is intercepted by the associated hypervisor511, which routes the registration request to the address lookup service502. Likewise, in order to virtual machine E to be added to the multicast virtual network address302(as represented by dashed line303A), the virtual machine E dispatches the registration request into the virtual network301. This registration request is intercepted by the associated hypervisor521, which routes the registration request to the address lookup service502.

If the request is a deregistration request (“Dereg” in decision block1002), the hypervisor deregisters the virtual network address from group virtual network address (act1004). For instance, hypervisor communicates the multicast deregistration request to the address lookup service502(act1021). The address lookup service receives the multicast deregistration request, (act1022), and responds to the multicast deregistration request by removing a virtual network address associated with the second virtual machine from being associated with the multicast virtual network address (act1023).

Although not required, in one embodiment, the physical network environment500may be structured as the environment1100. The environment1100includes multiple clients1101interacting with a system1110using an interface1102. The environment1100is illustrated as having three clients1101A,1101B and1101C, although the ellipses1101D represent that the principles described herein are not limited to the number of clients interfacing with the system1110through the interface1102. The system1110may provide services to the clients1101on-demand and thus the number of clients1101receiving services from the system1110may vary over time.

Each client1101may, for example, be structured as described above for the computing system100ofFIG. 1. Alternatively or in addition, the client may be an application or other software module that interfaces with the system1110through the interface1102. The interface1102may be an application program interface that is defined in such a way that any computing system or software entity that is capable of using the application program interface may communicate with the system1110.

The system1110may be a distributed system, although not required. In one embodiment, the system1110is a cloud computing environment. Cloud computing environments may be distributed, although not required, and may even be distributed internationally and/or have components possessed across multiple organizations.

In this description and the following claims, “cloud computing” is defined as a model for enabling on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services). The definition of “cloud computing” is not limited to any of the other numerous advantages that can be obtained from such a model when properly deployed.

For instance, cloud computing is currently employed in the marketplace so as to offer ubiquitous and convenient on-demand access to the shared pool of configurable computing resources. Furthermore, the shared pool of configurable computing resources can be rapidly provisioned via virtualization and released with low management effort or service provider interaction, and then scaled accordingly.

The system1110includes multiple hosts1111, that are each capable of running virtual machines. Although the system1100might include any number of hosts1111, there are three hosts1111A,1111B and1111C illustrated inFIG. 11, with the ellipses1111D representing that the principles described herein are not limited to the exact number of hosts that are within the system1110. There may be as few as one, with no upper limit. Furthermore, the number of hosts may be static, or might dynamically change over time as new hosts are added to the system1110, or as hosts are dropped from the system1110. Each of the hosts1111may be structured as described above for the computing system100ofFIG. 1. The hosts1111A,1111B and1111C may be, for example, the hosts510,520and530ofFIG. 5.

Referring back toFIG. 11, the system1110also includes services1112. In the illustrated example, the services1100include five distinct services1112A,1112B,1112C,1112D and1112E, although the ellipses1112F represent that the principles described herein are not limited to the number of service in the system1110. A service coordination system1113communicates with the hosts1111and with the services1112to thereby provide services requested by the clients1101, and other services (such as authentication, billing, and so forth) that may be prerequisites for the requested service. In one embodiment, the service1112A is the address lookup service502ofFIG. 5. Thus, the principles described herein may, but need not, be performed in a cloud computing environment.