A virtualized infrastructure, for example, provided by a cloud computing service, may include virtual networking resources to facilitate communications between different virtual machines implemented within the virtualized infrastructure. In some situations, it may be desirable to deploy a network appliance on a virtual network.
Physical network 104 may provide direct or indirect communication links between physical computing devices 102. Examples of physical network 104 include local area networks (LANs) including wireless LANs (WLANs), wide area networks (WANs), the Internet, the World Wide Web, analog or digital wired and wireless telephone networks, radio, television, cable, satellite, and/or any other delivery mechanisms for carrying data, as well as combinations of any of the foregoing.
Each physical computing device 102 may include one or more processors for executing instructions stored in storage and/or received from one or more other electronic devices, for example over physical network 104. Furthermore, each physical computing device 102 may have internal or external storage components storing data and/or computer-readable instructions that, when executed by the one or more processors of the physical computing device 102 cause the physical computing device 102 to implement certain functionality.
As illustrated in
Each virtual machine 108 hosted on a physical computing device 102 may emulate an individual hardware device (e.g., a physical computing device such as a computer; a processing device such as a switch, router, firewall, and/or gateway; etc.) and provide a self-contained operating environment. As such, an individual virtual machine 108 hosted on a physical computing device 102 may run its own guest operating system on the physical computing device 102. Consequently, multiple different virtual machines 108 hosted on the physical computing device 102 may run their own guest operating systems, and such guest operating systems may be the same or different across the various different virtual machines 108 hosted on the physical computing device 102. Furthermore, a virtual machine 108 running its own guest operating system on physical computing device 102 also may execute one or more different applications. The hypervisor or virtual machine manager executing on each physical device 102 may dedicate specific portions of memory to each virtual machine hosted on the physical device 102 and regulate access to such dedicated portions of memory in an effort to prevent virtual machines 108 hosted on the physical computing device 102 from accessing the dedicated memory portion of another virtual machine 108 hosted on the physical computing device 102 (at least without authorization).
Host platforms 106 may be implemented as computer-readable instructions stored in storage components accessible to the physical computing devices 102 on which host platforms 106 are hosted. Among other features, the host platforms 106 implemented on the physical computing devices 102(a)-102(n) may make networking resources available to the virtual machines 108 hosted on the physical computing devices 102(a)-102(n), thereby enabling individual ones of the virtual machines 108 hosted by computing system 100 to exchange communications irrespective of whether the virtual machines 108 are hosted on the same or different physical computing devices 102. In some implementations, the host platforms 106 may provide hypervisor or virtual machine manager functionality in addition to making networking resources available. In alternative implementations, the host platforms 106 may not provide hypervisor or virtual machine manager functionality. For example, the host platforms 106 may be implemented as virtual machines that run on top of and/or are run by the hypervisors or virtual machine managers implemented on the physical computing devices 102. Additionally or alternatively, the host platforms 106 may be implemented as software layers that execute at hypervisor- or virtual machine manager-privilege level on the physical computing devices 102.
As illustrated in
For example, if the host platform 106 receives a packet destined for a virtual machine 108 executing on the same physical computing device 102 on which it is implemented, host platform 106 may dispatch the packet to the appropriate VIF 110 for the virtual machine 108 to which the packet is destined. Similarly, if the host platform 106 receives a packet (e.g., from a virtual machine 108 hosted on the same physical computing device 102 on which it is implemented) destined for a virtual machine 108 executing on a different physical computing device 102 than on which it is implemented, host platform 106 may forward the packet to a NIC 112 of the physical computing device 102 on which the host platform 106 is implemented for distribution across physical network 104 to the particular physical computing device 102 on which the destination virtual machine 108 is hosted.
In some implementations, the VIFs 110 of the virtual machines may mimic Ethernet devices and transmit outbound communications from their virtual machines 108 as Ethernet frames. In such implementations, the host platforms 106 may encapsulate outbound Ethernet frames in Internet Protocol (IP) packets (e.g., using the EtherIP protocol) before forwarding the packets to NICs 112 of the physical computing devices 102 on which they are implemented for distribution across physical network 104. Similarly, the host platforms 106 may decapsulate inbound IP packets into Ethernet frames (e.g., according to the EtherIP protocol) before dispatching the Ethernet frames to the VIFs 110 of the packet's virtual machines 108.
In some implementations, related virtual machines 108 hosted by computing system 100, even virtual machines 108 hosted by different physical computing devices 102, may be grouped into network segments that operate as virtual networks, each emulating a separate network fabric. For example, as illustrated in
In some cases, when a virtual network such as, for example, the virtual network 152 illustrated in
Techniques disclosed herein may enable the deployment of a network appliance on a virtual network, such as, for example, the deployment of gateway 180 on virtual network 152 described above in connection with
As illustrated in
Virtual network 200 also includes a network appliance 210 and a corresponding third host platform 212. As illustrated in
As illustrated in
The schematic diagram of
Referring again to
As illustrated in
At 312, the first host platform 204 receives the network packet 218 from the Sending Virtual Machine 202. The first host platform 204 then compares the network packet 218 to the network policy at 314. As described above, the network policy may specify rules for processing traffic on virtual network 200 as well as one or more additional virtual networks provided by the computing system on which virtual network 200 is implemented.
For example, in some implementations, the network policy may specify that all traffic on virtual network 200 is to be routed through network appliance 210.
Alternatively, in other implementations, the network policy may specify that certain types of network traffic (but not necessarily all network traffic) on virtual network 206 are to be routed to network appliance 210. For example, the network policy may specify rules for rerouting network traffic to network appliance 210 that are based on network protocol. For instance, the network policy may specify that web traffic (e.g., HTTP and/or HTTPs traffic) is to be rerouted to network appliance 210. Additionally or alternatively, the network policy may specify that file downloads (e.g., FTP) and/or IP voice traffic should be rerouted to network appliance 210 (or a different network appliance). In this manner, different types of network traffic on virtual network 200 may be routed to different types of network appliances on virtual network 200.
In other implementations, the network policy may specify that all network traffic originating from one or more specific virtual machines (e.g., Sending Virtual Machine 202) is to be routed to network appliance 210. Additionally or alternatively, the network policy may specify that all network traffic destined for one or more specific virtual machines (e.g., Recipient Virtual Machine 206) is to be routed to network appliance 210. Alternatively, the network policy may specify that all traffic from one network destined for virtual network 200 is to be rerouted to network appliance 210.
Furthermore, in some implementations, only a subset of the network traffic that satisfies a rule specified by the network policy may actually be rerouted to network appliance 218. For example, only random samples of the network traffic that satisfies a rule specified by the network policy may actually be forwarded to network appliance 210. Alternatively, only some defined quantum of network traffic of a connection (e.g., every first packet of a new connection) that satisfies a rule specified by the network policy may actually be forwarded to network appliance 210.
As described above, in some implementations, the network packet may be an Ethernet frame and the payload of the Ethernet frame may include an IP packet. In such implementations, the first host platform 204 may determine the virtual network to which the network packet 218 corresponds, the source virtual machine of the network packet 218, and/or the destination virtual machine for the network packet 218 based on the source and/or destination IP addresses specified in the IP header of the IP packet. Additionally or alternatively, the first host platform 204 may determine the virtual network to which the network packet 218 corresponds, the source virtual machine of the network packet 218, and/or the destination virtual machine for the network packet 218 based on TCP/UDP port information or other information from higher level networking protocols specified in network packet 218.
In any event, as a consequence of comparing network packet 218 to the network policy, the first host platform 204 determines that, according to the network policy, network packet 218 is to be rerouted to network appliance 204. Therefore, at 316, the first host platform 204 marks the network packet 218 with the IP address IPa of the network appliance 210. For example, the IP address IPa of the network appliance 210 may be added to network packet 218 as a form of meta-data associated with the network packet 218 while the network packet 218 is processed by the first host platform 204 but that is disassociated (e.g., deleted or detached) from the network packet 218 after the network packet 218 is transmitted outside of the first host platform 204.
In addition to marking the network packet 218 with the IP address IPa of the network appliance 210, at 318, the first host platform 204 performs a lookup of a MAC address to use for forwarding network packet 218 to network appliance 210, for example, based on the IP address IPa of the network appliance 210 with which the network packet 218 has been marked.
Then, at 320, the first host platform 204 rewrites the Ethernet header of network packet 218. For example, as illustrated in
At 324, the network packet 218 is received, for example, via NIC 214, by the third host platform 212 implemented on the physical device 304 on which the network appliance 210 is implemented. In some implementations, the network packet 218 received by the third host platform 212 may be an IP packet within which an Ethernet frame is encapsulated. In such implementations, the third host platform may decapsulate the Ethernet frame from the IP packet upon receipt of the packet. Then, at 326, the third host platform 212 compares the received network packet 218 to the network policy, and, as a consequence, determines that the network packet 218 is to be processed by network appliance 210. In addition, comparing network packet 218 to the network policy also may return the IP address IPa of the network appliance 210. Therefore, at 328, the third host platform 212 marks the network packet 218 with the IP address IPa of the network appliance 210.
Then, at 330, the third host platform 212 performs a lookup of the virtual MAC address vMACa of the network appliance 210, for example, using the IP address IPa of the network appliance 210. Thereafter, at 332, the third host platform 212 rewrites the Ethernet header of network packet 218. For example, as illustrated in
At 336, the network appliance 210 receives the network packet 218 and, at 338, the network appliance 210 processes the received network packet 218. Depending on the type of network appliance 210, processing the network packet 218 may involve any of a number of different operations. For example, processing the network packet 218 may involve logging the network packet 218, inspecting the network packet 218, determining whether to drop the network packet 218, and/or modifying the network packet 218.
Whatever the case, after network appliance 210 passes the processed network packet 218, at 340, network appliance 210 performs a lookup of a MAC address to use for forwarding network packet 218 to Recipient Virtual Machine 206, for example, based on the IP address IPr of the Recipient Virtual Machine specified in the IP header of network packet 218. Then, at 342, the network appliance 210 rewrites the Ethernet header of network packet 218. For example, as illustrated in
At 346, the third host platform 212 receives the network packet 218 from the network appliance 210. Then, at 348, the third host platform 212 compares the received network packet 218 to the network policy. Any network policy rules specifying the network appliance 210 as a destination to which the network packet 218 is to be rerouted are bypassed at 350. Otherwise, the network packet 218 may be infinitely looped back to the network appliance 210 and the network packet 218 may never arrive at its ultimate destination, Recipient Virtual Machine 206. In some implementations, network appliance 210 may have more than one network interface and/or more than one network address (e.g., more than one IP address). Consequently, network rules specifying any of the network interfaces and/or network addresses of the network appliance 210 as a destination to which the network packet 218 is to be rerouted may be bypassed at 350.
At 352, the third host platform 212 performs a lookup of a MAC address to use for forwarding network packet 218 to the Recipient Virtual Machine 206, for example, based on the IP address IPr of the Recipient Virtual Machine specified as the destination address in the IP header of network packet 218. Then, at 354, the third host platform 212 rewrites the Ethernet header of network packet 218. For example, as illustrated in
At 358, the network packet 218 is received, for example, via NIC 209, by the second host platform 209 implemented on the physical device 306 on which the Recipient Virtual Machine 206 is implemented. Upon receipt of the network packet 218, the second host platform 208 determines that the Recipient Virtual Machine 206 is hosted on the same physical computing device 306 as the second host platform 208. In addition, the second host platform 208 determines that the network appliance 210 to which the network policy specifies network packet 218 is to be rerouted is not hosted on the same physical computing device 306 as the second host platform 208. For example, the second host platform 208 may determine that the Recipient Virtual Machine 206 is hosted on the same physical computing device 306 as the second host platform 208 based on the destination IP addresses specified in the IP header of network packet 218. Additionally or alternatively, the second host platform 208 may determine that the network policy specifies that the network packet 218 is to be rerouted to network appliance 210 while also determining that network appliance is not implemented on the same physical computing device 306 as the second host platform 208, for example, based on the IP address for the network appliance 210 returned as a result of comparing the network packet 218 to the network policy. As a consequence of determining that the Recipient Virtual Machine 206 is implemented on the same physical computing device 306 as the second host platform 208 but that the network appliance 210 is not implemented on the same physical computing device 306 as the second host platform 208, the second host platform 208 may infer that the network packet 218 already has been processed by the network appliance 210. Therefore, at 362, any network policy rules specifying the network appliance 210 as a destination to which the network packet 218 is to be rerouted are bypassed.
Then, at 364, the second host platform 208 performs a lookup of the virtual MAC address vMACr of the Recipient Virtual Machine 206, for example, using the IP address IPr of the network appliance 210 specified as the destination address in the IP header of network packet 218, and the virtual MAC address vMACr of the Sending Virtual Machine 202, for example, using the IP address IPs of the Sending Virtual Machine 202 specified as the source address in the IP header of network packet 218. Thereafter, at 366, the second host platform 208 rewrites the Ethernet header of network packet 218. For example, as illustrated in
The Recipient Virtual Machine 206 receives the network packet 218 at 370. As illustrated in
As illustrated in
As also illustrated in
More particularly,
At 404, the host computing platform determines if the communication received from the sending virtual machine and intended for the recipient virtual machine is to be rerouted to a network appliance. In some implementations, the host computing platform may compare the received communication to a network policy that specifies rules for rerouting communications received by the host platform to different network appliances to determine if the received communication is to be rerouted to a network appliance. Continuing with the example introduced above where the communication received by the host platform is an Ethernet frame having a payload that includes an IP packet, the host platform may compare one or both of the source and destination IP addresses specified in the IP header of the IP packet to the network policy to determine if any rules specified within the network policy match the specified source and/or destination IP addresses. Additionally or alternatively, the host platform may compare TCP/UDP port information specified within the Ethernet frame to determine if any rules specified within the network policy match the specified TCP/UPD port information.
If the host platform determines, at 404, that the communication received from the sending virtual machine and intended for the recipient virtual machine is to be rerouted to a network appliance, the host machine modifies the communication to include rerouting information at 406. In some implementations, when the received communication is compared to the network policy and a determination is made that the received communication is subject to a network rule specified by the network policy, network address information for the network appliance, such as, for example, an IP address for the network appliance, may be returned to the host platform. The host platform then may use the returned network address for the network appliance to perform a lookup of rerouting information, which the host platform then uses to modify the communication. For example, in implementations where the communication received by the host platform is an Ethernet frame, an IP address for the network appliance may be returned to the host platform when comparison of the Ethernet frame to the network policy results in a determination that the Ethernet frame is subject to a network rule specified by the network policy. Thereafter, the host platform may use the IP address returned for the network appliance to perform a lookup of a MAC address to use to forward the communication to the network appliance. Then the host platform may rewrite the destination Ethernet address specified in the Ethernet header of the Ethernet frame with the MAC address to be used to forward the communication to the network appliance.
Referring again to
Alternatively, in the event that the host platform determines, at 404, that the communication is not to be rerouted to a network appliance, the host platform proceeds to 408 and transmits the communication without modifying the communication to include rerouting information.
At 504, the host platform compares the received communication to a network policy that specifies rules for rerouting different communications received by the host platform. Then, at 506, based on having compared the received communication to the network policy, the host determines if any rules specified in the network policy apply to the received communication.
If no rules specified in the network policy apply to the communication, then, at 508, the host platform simply transmits the communication, for example, according to routing information specified within the communication.
Alternatively, if the host platform determines that a rule specified in the network policy applies to the communication, and, therefore, the communication is to be rerouted to a network appliance implemented in the same physical computing device as the host platform, the host platform marks the communication with a network layer address for the network appliance at 510. For example, if the communication is an Ethernet frame, host platform may mark the Ethernet frame with an IP address for the network appliance.
Then, at 512, the host platform performs a lookup of a data link layer address for the network appliance. In some implementations, the host platform may use the network layer address for the network appliance with which the communication has been marked to perform the lookup of the data link layer address for the network appliance. For example, if the communication is an Ethernet frame that has been marked with an IP address for the network appliance, the host platform may use the IP address for the network appliance with which the Ethernet frame has been marked to perform a lookup of a virtual MAC address for the network appliance. At 514, the host platform rewrites existing data link layer address information of the communication with the identified data link layer address information for the network appliance. For example, if the communication is an Ethernet frame, the host platform may rewrite the destination MAC address in the Ethernet header of the Ethernet frame with a virtual MAC address identified as corresponding to the network appliance.
After rewriting the existing data link layer address information of the communication with the identified data link layer address information for the network appliance, the host platform transmits the communication to the network appliance at 518. Thereafter, at 518, the host platform ultimately receives the processed communication back from the network appliance. Upon receipt of the processed communication from the network appliance, the host platform compares the processed communication to the network policy at 520. As a result of comparing the processed communication to the network policy, the host platform determines to bypass any rule(s) in the network policy specifying that the communication is to be rerouted to the network appliance, because the network appliance already has processed the communication and, otherwise, the communication may end up being infinitely looped back to the network appliance.
At 524, the host platform performs a lookup of a data link layer address for the physical computing device that hosts the recipient virtual machine for which the communication is destined. For example, if the communication is an Ethernet frame having a payload that includes an IP packet that specifies an IP address for the sending virtual machine as the source of the communication and that specifies an IP address for the recipient virtual machine as the destination of the communication, the host platform may use the IP address of the recipient virtual machine specified in the IP header of the IP packet to perform a lookup of the MAC address for the physical computing device on which the recipient virtual machine is implemented.
After identifying a data link layer address for the physical computing device on which the recipient virtual machine is implemented, the host platform rewrites existing data link layer address information of the communication with the identified data link layer address information for the physical computing device on which the recipient virtual machine is implemented at 526. For example, if the communication is an Ethernet frame, the host platform may rewrite the destination MAC address in the Ethernet header of the Ethernet frame with the MAC address identified for the physical computing device on which the recipient virtual machine. After rewriting the existing data link layer address information of the communication with the identified data link layer address information for the physical computing device on which the recipient virtual machine is implemented, the host platform transmits the communication to the physical computing device on which the recipient virtual machine is implemented at 508.
At 604, the host platform compares the received communication to a network policy that specifies rules for rerouting different communications received by the host platform. Then, at 606, based on having compared the received communication to the network policy, the host determines if any rules specified in the network policy apply to the received communication.
If the host platform determines that no rule in the network policy applies to the communication, the host platform proceeds to 608, where the host platform determines if the recipient virtual machine for which the communication is destined is hosted locally on the same physical computing device as the host platform. If the host platform determines that the recipient virtual machine is not hosted locally on the same physical computing device as the host platform, the host platform drops the communication at 610. Alternatively, if the host platform determines that the recipient virtual machine is hosted locally on the same physical computing device as host platform, the host platform proceeds to 624, which is described in greater detail below.
Returning again to 606, if, instead of determining that no rule in the network policy applies to the communication, the host platform determines that a rule in the network policy specifies that the communication is to be rerouted to a network appliance, the host platform proceeds to 612, where the host platform determines if the network appliance to which the rule specifies the communication is to be rerouted is hosted locally on the same physical computing device as the host platform. If the host platform determines that the network appliance is hosted locally on the same physical computing device as the host platform, at 614, the host platform processes the rule for the network appliance. For example, the host platform may transmit the communication to the network appliance.
Then, at 616, after the processed communication has been passed back to the host platform by the network appliance, the host platform determines if the recipient virtual machine to which the communication is destined is hosted locally on the same physical computing device as the host platform. If the recipient virtual machine is hosted locally on the same physical computing device as the host platform, the host platform proceeds to 624, which is described in greater detail below. Alternatively, if the recipient virtual machine is not hosted locally on the same physical computing device, the host platform forwards the communication to the recipient virtual machine over the physical network.
Returning again to 612, if the host platform determines that the network appliance is not hosted locally on the same physical computing device as the host platform, the host platform proceeds to 620, where the host platform determines if the recipient virtual machine is hosted locally on the same physical computing device as the host platform. If the host platform determines that the recipient virtual machine is not hosted on the same physical computing device as the host platform, the host platform drops the communication at 622. Alternatively, if the host platform determines at 620 that the recipient virtual machine is hosted on the same physical computing device as the host platform, the process proceeds to 624.
At 624, the host platform performs a lookup of data link addresses for the sending virtual machine and the recipient virtual machine. For example, if the communication is an Ethernet frame having a payload that includes an IP packet that specifies an IP address for the sending virtual machine as the source of the communication and that specifies an IP address for the recipient virtual machine as the destination of the communication, the host platform may use the IP addresses of the sending and recipient virtual machines specified in the IP header of the IP packet to perform a lookup of the MAC addresses for the sending and recipient virtual machines.
After identifying data link layer addresses for the sending and recipient virtual machines, the host platform rewrites existing data link layer address information of the communication with the identified data link layer addresses for the sending and recipient virtual machines at 626. For example, if the communication is an Ethernet frame, the host platform may rewrite the source MAC address in the Ethernet header of the Ethernet frame with the MAC address identified for the sending virtual machine and the host platform may rewrite the destination MAC address in the Ethernet header of the Ethernet frame with the MAC address identified for the recipient virtual machine. After rewriting the existing data link layer address information of the communication with the identified data link layer address information for the sending and recipient virtual machines, the host platform transmits the communication to the recipient virtual machine at 628.
A number of methods, techniques, systems, and apparatuses have been described. The described methods, techniques, systems, and apparatuses may be implemented in digital electronic circuitry or computer hardware, for example, by executing instructions stored in computer-readable storage media.
Apparatuses implementing these techniques may include appropriate input and output devices, a computer processor, and/or a tangible computer-readable storage medium storing instructions for execution by a processor.
A process implementing techniques disclosed herein may be performed by a processor executing instructions stored on a tangible computer-readable storage medium for performing desired functions by operating on input data and generating appropriate output. Suitable processors include, by way of example, both general and special purpose microprocessors. Suitable computer-readable storage devices for storing executable instructions include all forms of non-volatile memory, including, by way of example, semiconductor memory devices, such as Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), and flash memory devices; magnetic disks such as fixed, floppy, and removable disks; other magnetic media including tape; and optical media such as Compact Discs (CDs) or Digital Video Disks (DVDs). Any of the foregoing may be supplemented by, or incorporated in, specially designed application-specific integrated circuits (ASICs).
Although the operations of the disclosed techniques may be described herein as being performed in a certain order and/or in certain combinations, in some implementations, individual operations may be rearranged in a different order, combined with other operations described herein, and/or eliminated, and the desired results still may be achieved. Similarly, components in the disclosed systems may be combined in a different manner and/or replaced or supplemented by other components and the desired results still may be achieved.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2012/028268 | 3/8/2012 | WO | 00 | 8/27/2014 |