Source-dependent address resolution

Information

  • Patent Grant
  • 10205698
  • Patent Number
    10,205,698
  • Date Filed
    Tuesday, November 26, 2013
    10 years ago
  • Date Issued
    Tuesday, February 12, 2019
    5 years ago
Abstract
Systems and method are provided for source-dependent address resolution. Multiple computing devices may be associated with identifiers, such as network names. These computing devices may further be associated with both internally and externally accessible network addresses. A source-dependent address resolution component may resolve a network identifier into an internal or external address based on a network of a requesting device. Specifically, a request for address resolution may be received from a source network, and be resolvable into an address of a target network. If the source network and target network are the same, an internal address of that shared network is returned. If the source network and the target network are different, an external address enabling external communication with the target network is returned. In some embodiments, determination of a source network may be facilitated based on a source port of a request.
Description
BACKGROUND

Generally described, computing devices utilize a communication network, or a series of communication networks, to exchange data. Companies and organizations operate computer networks that interconnect a number of computing devices to support operations or provide services to third parties. The computing systems can be located in a single geographic location or located in multiple, distinct geographic locations (e.g., interconnected via private or public communication networks). Specifically, data centers or data processing centers, herein generally referred to as a “data center,” may include a number of interconnected computing systems to provide computing resources to users of the data center. The data centers may be private data centers operated on behalf of an organization or public data centers operated on behalf, or for the benefit of, the general public.


To facilitate increased utilization of data center resources, virtualization technologies may allow a single physical computing device to host one or more instances of virtual machines that appear and operate as independent computing devices to users of a data center. With virtualization, the single physical computing device can create, maintain, delete or otherwise manage virtual machines in a dynamic matter. In turn, users can request computer resources from a data center, including single computing devices or a configuration of networked computing devices, and be provided with varying numbers of virtual machine resources.


Generally, the physical networks include a number of hardware devices that receive packets from a source network component and forward the packet to a recipient network component. The packet routing hardware devices are typically referred to as routers. With the advent of virtualization technologies, networks and routing for those networks can now be simulated using commodity hardware rather than actual routers. As the scale and scope of data centers has increased, provisioning and managing the physical and virtual computing resources of a data center has become increasingly complicated.


Specifically, in one aspect, a third party data center provider may host a number of virtual machine instances that function as a hosted virtual machine network for users of the data center. Within a hosted virtual machine network, each virtual machine instance may be addressable to other virtual machine instances based on an internal addressing scheme. In addition, one or more virtual machine instances may also be addressable by other computing devices (e.g., physical computing devices or other virtual machine instances) from outside the hosted virtual machine network based on an external addressing scheme. Still further, each virtual machine instance may be associated with a host name, enabling human-readable (or substantially human-readable) identification of the virtual machine instance. In traditional systems, host names may be resolvable to network addresses based on a Domain Name System (DNS).





BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing aspects and many of the attendant advantages of this disclosure will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:



FIG. 1 is a block diagram illustrating an embodiment of a substrate network having computing nodes associated with a virtual computer network;



FIG. 2 is a block diagram of the substrate network of FIG. 1 illustrating logical networking functionality;



FIG. 3 is a block diagram of the substrate network of FIG. 1 illustrating a substrate network configuration associated with overlay networks;



FIGS. 4A and 4B are block diagrams of the substrate network of FIG. 1 illustrating independently determined substrate routing;



FIGS. 5A and 5B are block diagrams of the substrate network of FIG. 1 illustrating virtual route selection propagation to the substrate network;



FIG. 6 is a block diagram of the substrate network of FIG. 1 illustrating the determination of routes into or out of a virtual network by network translation device;



FIG. 7A illustrates a flow diagram for a process of propagating virtual routes to a substrate network;



FIG. 7B illustrates a flow-diagram for a process of determining substrate routing based on target performance characteristics of the associated virtual network;



FIG. 8 is a simplified block diagram of the substrate network of FIG. 1 illustrating hosted virtual machine networks;



FIG. 9 is a simplified block diagram of the substrate network of FIG. 1 illustrating the allocation of network resources to a virtual computing device of a hosted virtual machine network;



FIGS. 10A and 10B are block diagrams of the simplified substrate network of FIG. 1 illustrating resolution of a virtual computing device address based on a source network of an address resolution request; and



FIG. 11 is an illustrative routine for determining a virtual computing device address based on a source network of an address resolution request.





DETAILED DESCRIPTION

Generally described, aspects of the present disclosure relate to the management of virtual machine instances. Specifically, embodiments of present disclosure relate to the resolution of network addresses based on virtual computing device identifiers (e.g., virtual machine names). One or more virtual computing devices may be associated with both an internal network address and an external network address. Internal network addresses may be utilized to route communications between hosted, virtual computing devices that art part of a hosted virtual machine network. External network address may enable communication between virtual computing devices of disparate hosted virtual machine networks, or between a virtual computing device and any other device external to a specific virtual machine network.


In order to provide flexibility to internal or external addressing, as well as to facilitate human identification of virtual computing devices, each virtual computing device may be associated with an identifier. As will be discussed in more detail below, a source-dependent address resolution component may enable intelligent resolution of virtual computing device identifiers to network addresses. Specifically, where an address resolution request is received from a source virtual computing device that is associated with a common hosted virtual machine network to a targeted virtual computing device, an internal address representative of the target virtual computing device may be provided. One skilled in the relevant art will appreciate that the internal address can correspond to any range of network addresses selected for the hosted virtual network regardless of any physical network addresses associated with the underlying physical computing devices utilized to host the virtual instances. However, where an address resolution request is received from a device not associated with the hosted virtual machine network of a targeted virtual computing device, an external address of the target virtual computing device may be provided. The external address is generally addressable by other virtual components or physical computing devices via a communication network. Such source-dependent address resolution may enable efficient use of network resources by minimizing routing within hosted virtual machine networks. In addition, such source-dependent address resolution may ensure the privacy of internal addresses.


Illustratively, a network can have one or more devices configured to receive DNS queries from computing devices, generally referred to as DNS servers. A DNS server can process the DNS query and return one or more network addresses responsive to a particular DNS query. In an embodiment, one or more DNS servers can include a source-dependent address resolution component that may be configured to identify a source network of a request based on information within the request, such as a source address. Illustratively, the source network identifier may be a common identifier used by components of a given hosted virtual network. In other embodiments, the source network identifier may be configured in a manner to identify individual components of a hosted virtual network or groups of components of a hosted virtual network.


In some embodiments, a source address alone may be insufficient to identify a source network of a request. For example, where multiple virtual computing devices of multiple hosted virtual machine networks are hosted within a single physical computing device, address resolution requests from any of the virtual computing devices may appear to come from the same source address: that of the host physical computing device. Accordingly, it may be unclear from which of the multiple hosted virtual machine networks the request was transmitted. In some embodiments, data encapsulation techniques (such as those discussed in more detail below) may be utilized in order to correctly identify a source address of an address resolution request. For example, where multiple virtual computing devices are hosted within a single physical computing device, requests from any virtual computing device may be encapsulated at the physical computing device before being forwarded (e.g., to the source-dependent address resolution component). Prior to decapsulation, these packets would appear to contain a source address of the physical computing device. However, after decapsulation, the packets would contain a source address of the virtual computing device, therefore enabling correct source-dependent address resolution.


In some embodiments, however, encapsulation and decapsulation of all source-dependent address resolution requests may be undesirable. For example, such encapsulation and decapsulation may require a high amount of processing power, or introduce undesired latency into network communications. Accordingly, in some embodiments, source-dependent address resolution may be facilitated, in part, based on a source port of an address resolution request. For example, as noted above, where multiple virtual computing devices are hosted within a single physical computing device, address resolution requests from any of the virtual computing devices may appear to come from the address of the physical computing device. However, by assigning distinct ports for transmission of address resolution requests to each virtual computing device, requests from each virtual computing device may be distinguished. For example, virtual computing devices ‘A’ and ‘B’ may both be hosted by physical computing device ‘Z.’ Address resolution requests generated by either virtual computing device may appear to originate from the physical computing device ‘Z.’ To resolve such an issue, source port ‘1’ may be assigned to virtual computing device ‘A,’ while source port ‘2’ may be assigned to virtual computing device ‘B.’ Thereafter, any address resolution requests from physical computing device ‘Z’ generated at source port ‘1’ may be attributed to virtual computing device ‘A.’ Similarly, any address resolution requests from physical computing device ‘Z’ generated at source port ‘2’ may be attributed to virtual computing device ‘B.’ By utilization of source-port differentiation, source-dependent address resolution may be implemented by a number of virtual computing devices on a single physical computing device, without requiring data packet encapsulation.


The following section discusses various embodiments of managed networks for network data transmission analysis. Following that is further discussion of systems and methods enabling source-dependent address resolution.


Managed Computer Networks for Network Data Transmission Analysis


With the advent of virtualization technologies, networks and routing for those networks can now be simulated using commodity hardware components. For example, virtualization technologies can be adapted to allow a single physical computing machine to be shared among multiple virtual networks by hosting one or more virtual machines on the single physical computing machine. Each such virtual machine can be a software simulation acting as a distinct logical computing system that provides users with the illusion that they are the sole operators and administrators of a given hardware computing resource. In addition, as routing can be accomplished through software, additional routing flexibility can be provided to the virtual network in comparison with traditional routing. As a result, in some implementations, supplemental information other than packet information can be used to determine network routing.


Aspects of the present disclosure will be described with regard to illustrative logical networking functionality for managed computer networks, such as for virtual computer networks that are provided on behalf of users or other entities. In at least some embodiments, the techniques enable a user to configure or specify a network topology, rousing costs, routing paths and/or other information for a virtual or overlay computer network including logical networking devices that are each associated with a specified group of multiple physical computing nodes. For example, a user (e.g., a network administrator for an organization) or service provider may configure a virtual or overlay network based on detected events, processing criteria, or upon request. With the network configuration specified for a virtual computer network, the functionally and operation of the virtual network can be simulated on physical computing nodes operating virtualization technologies. In some embodiments, multiple users or entities (e.g. businesses or other organizations) can access the system as tenants of the system, each having their own virtual network in the system. In one embodiment, a user's access and/or network traffic is transparent to other users. For example, even though physical components of a network may be shared, a user of a virtual network may not see another user's network traffic on another virtual network if monitoring traffic on the virtual network.


By way of overview, FIGS. 1 and 2 discuss embodiments where communications between multiple computing nodes of the virtual computer network emulate functionality that would be provided by logical networking devices if they were physically present. In some embodiments, some or all of the emulation are performed by an overlay network manager system. FIGS. 2-4B and 7B discuss embodiments where substrate routing decisions can be made independently of any simulated routing in the overlay network, allowing, for example, optimization of traffic on the substrate network based on information unavailable to a virtual network user. FIGS. 5A-7A discuss embodiments where routing decisions implemented on the virtual or overlay network are propagated to the substrate network. One skilled in the relevant art will appreciate, however, that the disclosed virtual computer network is illustrative in nature and should not be construed as limiting.


Overlay Network Manager



FIG. 1 is a network diagram illustrating an embodiment of an overlay network manager system (ONM) for managing computing nodes associated with a virtual computer network. Virtual network communications can be overlaid on one or more intermediate physical networks in a manner transparent to the computing nodes. In this example, the ONM system includes a system manager module 110 and multiple communication manager modules 109a, 109b, 109c, 109d, 150 to facilitate the configuring and managing communications on the virtual computer network.


The illustrated example includes an example data center 100 with multiple physical computing systems operated on behalf of the ONM system. The example data center 100 is connected to a global internet 135 external to the data center 100. The global internet can provide access to one or more computing systems 145a via private network 140, to one or more other globally accessible data centers 160 that each have multiple computing systems, and to one or more other computing systems 145b. The global internet 135 can be a publicly accessible network of networks, such as the Internet, and the private network 140 can be an organization's network that is wholly or partially inaccessible from computing systems external to the private network 140. Computing systems 145b can be home computing systems or mobile computing devices that each connects directly to the global internet 135 (e.g., via a telephone line, cable modem, a Digital Subscriber Line (“DSL”), cellular network or other wireless connection, etc.).


The example data center 100 includes a number of physical computing systems 105a-105d and a Communication Manager module 150 that executes on one or more other computing systems. The example data center further includes a System Manager module 110 that executes on one or more computing systems. In this example, each physical computing system 105a-105d hosts multiple virtual machine computing nodes and includes an associated virtual machine (“VM”) communication manager module (e.g., as part of a virtual machine hypervisor monitor for the physical computing system). Such VM communications manager modules and VM computing nodes include VM Communication Manager module 109a and virtual machines 107a on host computing system 105a, and VM Communication Manager module 109d and virtual machines 107d on host computing system 105d.


This illustrative data center 100 further includes multiple physical networking devices, such as switches 115a-115b, edge router devices 125a-125c, and core router devices 130a-130c. Switch 115a is part of a physical sub-network that includes physical computing systems 105a-105c, and is connected to edge router 125a. Switch 115b is part of a distinct physical sub-network that includes the System Manager module 110, and is connected to edge router 125b. The physical sub-networks established by switches 115a-115b, in turn, are connected to each other and other networks (e.g., the global internet 35) via an intermediate communication network 120, which includes the edge routers 125a-125c and the core routers 130a-130c. The edge routers 125a-125c provide gateways between two or more sub-networks or networks. For example, edge router 125a provides a gateway between the physical sub-network established by switch 115a and the interconnection network 120, while edge router 125c provides a gateway between the interconnection network 120 and global internet 135. The core routers 130a-130c manage communications within the interconnection network 120, such as by routing or otherwise forwarding packets or other data transmissions as appropriate based on characteristics of such data transmissions (e.g., header information including source and/or destination addresses, protocol identifiers, etc.) and/or the characteristics of the interconnection network 120 itself (e.g., routes based on the physical network topology, etc.).


The System Manager module 110 and Communication Manager module 109 can configure, authorize, and otherwise manage communications between associated computing nodes, including providing logical networking functionality for one or more virtual computer networks that are provided using the computing nodes. For example, Communication Manager module 109a and 109c manages associated virtual machine computing nodes 107a and 107c and each of the other Communication Manager modules can similarly manage communications for a group of one or more other associated computing nodes. The Communication Manager modules can configure communications between computing nodes so as to overlay a virtual network over one or more intermediate physical networks that are used as a substrate network, such as over the interconnection network 120.


Furthermore, a particular virtual network can optionally be extended beyond the data center 100, such as to one or more other data centers 160 which can be at geographical locations distinct from the first data center 100. Such data centers or other geographical locations of computing nodes can be inter-connected in various manners, including via one or more public networks, via a private connection such as a direct or VPN connection, or the like. In addition, such data centers can each include one or more other Communication Manager modules that manage communications for computing systems at that data. In some embodiments, a central Communication Manager module can coordinate and manage communications among multiple data centers.


Thus, as one illustrative example, one of the virtual machine computing nodes 107a1 on computing system 105a can be part of the same virtual local computer network as one of the virtual machine computing nodes 107d1 on computing system 105d. The virtual machine 107a1 can then direct an outgoing communication to the destination virtual machine computing node 107d1, such as by specifying a virtual network address for that destination virtual machine computing node. The Communication Manager module 109a receives the outgoing communication, and in at least some embodiments determines whether to authorize the sending of the outgoing communication. By filtering unauthorized communications to computing nodes, network isolation and security of entities' virtual computer networks can be enhanced.


The Communication Manager module 109a can determine the actual physical network location corresponding to the destination virtual network address for the communication. For example, the Communication Manager module 109a can determine the actual destination network address by dynamically interacting with the System Manager module 110, or can have previously determined and stored that information. The Communication Manager module 109a then re-headers or otherwise modifies the outgoing communication so that it is directed to Communication Manager module 109d using an actual substrate network address.


When Communication Manager module 109d receives the communication via the interconnection network 120, it obtains the virtual destination network address for the communication (e.g., by extracting the virtual destination network address from the communication), and determines to which virtual machine computing nodes 107d the communication is directed. The Communication Manager module 109d then re-headers or otherwise modifies the incoming communication so that it is directed to the destination virtual machine computing node 107d1 using an appropriate virtual network address for the virtual computer network, such as by using the sending virtual machine computing node 107a1's virtual network address as the source network address and by using the destination virtual machine computing node 107d1's virtual network address as the destination network address. The Communication Manager module 109d then forwards the modified communication to the destination virtual machine computing node 107d1. In at least some embodiments, before forwarding the incoming communication to the destination virtual machine, the Communication Manager module 109d can also perform additional steps related to security.


Further, the Communication Manager modules 109a and/or 109c on the host computing systems 105a and 105c can perform additional actions that correspond to one or more logical specified router devices lying between computing nodes 107a1 and 107c1 in the virtual network topology. For example, the source computing node 107a1 can direct a packet to a logical router local to computing node 107a1 (e.g., by including a virtual hardware address for the logical router in the packet header), with that first logical router being expected to forward the packet to the destination node 107c1 via the specified logical network topology. The source Communication Manager module 109a receives or intercepts the packet for the logical first router device and can emulate functionality of some or all of the logical router devices in the network topology, such as by modifying a TTL (“time to live”) hop value for the communication, modifying a virtual destination hardware address, and/or otherwise modify the communication header. Alternatively, some or all the emulation functionality can be performed by the destination Communication Manager module 109c after it receives the packet.


By providing logical networking functionality, the ONM system provides various benefits. For example, because the various Communication Manager modules manage the overlay virtual network and can emulate the functionality of logical networking devices, in certain embodiments specified networking devices do not need to be physically implemented to provide virtual computer networks, allowing greater flexibility in the design of virtual user networks. Additionally, corresponding modifications to the interconnection network 120 or switches 115a-115b are generally not needed to support particular configured network topologies. Nonetheless, a particular network topology for the virtual computer network can be transparently provided to the computing nodes and software programs of a virtual computer network.


Logical/Virtual Networking



FIG. 2 illustrates a more detailed implementation of the ONM system of FIG. 1 supporting logical networking functionality. The ONM system includes more detailed embodiments of the ONM System Manager and ONM Communication Manager of FIG. 1. In FIG. 2, computing node A is sending a communication to computing node H, and the actions of the physically implemented modules 210 and 260 and devices of network 250 in actually sending the communication are shown, as well as emulated actions of the logical router devices 270a and 270b in logically sending the communication.


In this example, computing nodes A 205a and H 255b are part of a single virtual computer network for entity Z. However, computing nodes can be configured to be part of two distinct sub-networks of the virtual computer network and the logical router devices 270a and 270b separate the computing nodes A and H in the virtual network topology. For example, logical router device J 270a can be a local router device to computing node A and logical router device L 270b can be a local router device to computing node H.


In FIG. 2, computing nodes A 205a and H 255b includes hardware addresses associated with those computing nodes for the virtual computer network, such as virtual hardware addresses that are assigned to the computing nodes by the System Manager module 290 and/or the Communication Manager modules R 210 and S 260. In this example, computing node A has been assigned hardware address “00-05-02-0B-27-44,” and computing node H has been assigned hardware address “00-00-7D-A2-34-11.” In addition, the logical router devices J and L have also each been assigned hardware addresses, which in this example are “00-01-42-09-88-73” and “00-01-42-CD-11-01,” respectively, as well as virtual network addresses, which in this example are “10.0.0.1” and “10.1.5.1,” respectively. The System Manager module 290 maintains provisioning information 292 that identifies where each computing node is actually located and to which entity and/or virtual computer network the computing node belongs.


This example, computing node A 205a first sends an address resolution protocol (ARP) message request 222-a for virtual hardware address information, where the message is expected to first pass through a logical device J before being forwarded to computing node H. Accordingly, the ARP message request 222-a includes the virtual network address for logical router J (e.g., “10.0.0.1”) and requests the corresponding hardware address for logical router J.


Communication Manager module R intercepts the ARP request 222-a, and obtains a hardware address to provide to computing node A as part of spoofed ARP response message 222-b. The Communication Manager module R can determine the hardware address by, for example, looking up various hardware address information in stored mapping information 212, which can cache information about previously received communications. Communication Manager module R can communicate 227 with the System Manager module 290 to translate the virtual network address for logical router J.


The System Manager module 290 can maintain information 294 related to the topology and/or components of virtual computer networks and provide that information to Communication Manager modules. The Communication Manager module R can then store the received information as part of mapping information 212 for future use. Communication Manager module R then provides computing node A with the hardware address corresponding to logical router J as part of response message 222-b. While request 222-a and response message 222-b actually physically pass between computing node A and Communication Manager module R, from the standpoint of computing node A, its interactions occur with local router device J.


After receiving the response message 222-b, computing node A 205a creates and initiates the sending of a communication 222-c to computing node H 255b. From the standpoint of computing node A, the sent communication will be handled as if logical router J 270a were physically implemented. For example, logical router J could modify the header of the communication 265a and forward the modified communication 265b to logical router L 270a, which would similarly modify the header of the communication 265b and forward the modified communication 265c to computing node H. However, communication 222-c is actually intercepted and handled by Communication Manager module R, which modifies the communication as appropriate, and forwards the modified communication over the interconnection network 250 to computing node H by communication 232-3. Communication Manager module R and/or Communication Manager module S may take further actions in this example to modify the communication from computing node A to computing node H or vice versa to provide logical networking functionality. For example, Communication Manager module S can provides computing node H with the hardware address corresponding to logical router L as part of response message 247-e by looking up the hardware address in stored mapping information 262. In one embodiment, a communication manager or computing node encapsulates a packet with another header or label where the additional header specifies the route of the packet. Recipients of the packet can then read the additional header and direct the packet accordingly. A communication manager at the end of the route can remove the additional header.


A user or operator can specify various configuration information for a virtual computer network, such as various network topology information and routing costs associated with the virtual 270a, 270b and/or substrate network 250. In turn, the ONM System Manager 290 can select various computing nodes for the virtual computer network. In some embodiments, the selection of a computing node can be based at least in part on a geographical and/or network location of the computing node, such as an absolute location or a relative location to a resource (e.g., other computing nodes of the same virtual network, storage resources to be used by the computing node, etc.). In addition, factors used when selecting a computing node can include: constraints related to capabilities of a computing node, such as resource-related criteria (e.g., an amount of memory, an amount of processor usage, an amount of network bandwidth, and/or an amount of disk space), and/or specialized capabilities available only on a subset of available computing nodes; constraints related to costs, such as based on fees or operating costs associated with use of particular computing nodes; or the like.


Route Selection on Substrate Network



FIG. 3 illustrates an example embodiment of a substrate network 300 having a route manager 336 capable of determining routes for overlay networks. The substrate network 300 can be composed of one or more substrate components or nodes, such as computing nodes, routing nodes, communication links or the like. In FIG. 3, the substrate network 300 includes computing nodes A 302, B 304, C 306, and D 308, which are capable of simulating various components of one or more associated overlay networks. The nodes can be located on the same data center or in multiple data centers. Computing node A is interconnected to node B via network W 310, node B is connected to node C by network X 312, node C is connected to node D by network Y 314, and node D is connected to node A by network Z 316. Networks W, X, Y, and Z can include one or more physical networking devices, such as routers, switches, or the like, and can include private or public connections. Components shown in FIG. 3, such as the computing nodes and communication manager modules, can implement certain of the features of embodiments described above with respect to FIGS. 1 and 2.


In FIG. 3, nodes A 302, B 304, C 306 and D 308 are associated with a respective Communication Manager module 320, 322, 324 and 326. The communication manager modules can implement certain of the features described in the Communication Manager 150, 210, 260 and VM Communication manager 109a, 109b, 109c, 109d of FIGS. 1 and 2. For example, the Communication Manager module 320 for node A can operate on a hypervisor monitor of the computing node and can direct the communication of one or more virtual computing nodes 330, 332, 334 of node A. The computing nodes, communication managers and Route Manager 336 can be part of the same ONM system. In one embodiment, the computing nodes run the XEN operating system (OS) or similar virtualization OS, with the communication managers operating on domain 0 or the first OS instance and the virtual computing nodes being domain U or additional OS instances.


The communication manager modules in FIG. 3 are in communication with a Route Manager module 336, operating on one or more computing devices, that directs routing for the substrate network 300. In one embodiment, the Route Manager operates as part of the ONM System Manager module 110, 290 of FIGS. 1 and 2, with functionally combined into a single module. The Route Manager can be located within a data center or at a regional level and direct traffic between data centers. In one embodiment, multiple Route Managers can operate in a distributed manner to coordinate routing across multiple data centers.


In FIG. 3, two virtual networks are associated with the substrate network 300. Virtual network 1 (VN1) has components 338, 340, 342, associated with virtual computing nodes on computing nodes A 302, B 304, and C 306. Virtual network 2 (VN2) has components 344, 346, 348 associated with virtual computing nodes on nodes A, C, and D 308.


As the Routing Manager module 336 directs network traffic on the substrate network 300, traffic can be directed flexibly and various network configurations and network costs can be considered. For example, routing paths can be determined based on specified performance levels for the virtual networks. In one embodiment, if the user for VN1 is entitled to a higher service level, such as for faster speed (e.g. lower latency and/or higher bandwidth), traffic associated with VN1 can be routed on a “fast” path of the substrate network 300. For example, in one embodiment, traffic for “platinum” users is prioritized over traffic for “gold” and “silver” users, with traffic from “gold” users prioritized over “silver” users. In one embodiment, at least some packets of the user with the higher service level are prioritized over packets of a user with a lower service level, for example, during times of network congestion. The user may be entitled to a higher level because the user has purchased the higher service level or earned the higher service level through good behavior, such as by paying bills, complying with the operator's policies and rules, not overusing the network, combinations of the same, or the like.


The Route Manager 336 can store user information or communicate with a data store containing user information in order to determine the target performance level for a virtual network. The data store can be implemented using databases, flat files, or any other type of computer storage architecture and can include user network configuration, payment data, user history, service levels and/or the like. Typically, the Route Manager will have access to node and/or link characteristics for the substrate nodes and substrate links collected using various network monitoring technologies or routing protocols. The Route Manager can then select routes that correspond to a selected performance level for the virtual network and send these routes to the computing nodes. For example, network W 310 and Y 312 can be built on fiber optic lines while network Y 314 and Z 316 are built on regular copper wire. The Route Manager can receive network metrics data and determine that the optical lines are faster than the copper wires (or an administrator can designate the optical lines as a faster path). Thus, the Route Manager, in generating a route between node A 302 and node C 306 for “fast” VN1 traffic, would select a path going through network W and Y (e.g., path A-B-C).


In another situation, where the user for VN2 is not entitled to a higher service level, VN2 traffic from node A 302 to node B 306 can be assigned to a “slow” or default path through network Y 314 and Z 316 (e.g. path A-D-C). In order to track routing assignments, the Routing Manager can maintain the routes and/or route association in a data store, such as a Routing Information Base (RIB) or routing table 350. The Route Manager can also track the target performance criteria 351 associated with a particular virtual network.


In order to direct network traffic on the substrate network 300, the Routing Manager 336 can create forwarding entries for one or more of the Communication Manager modules 320, 322, 324, 326 that direct how network traffic is routed by the Communication Manager. The Communication Manager modules can store those entries in forwarding tables 352, 354, 356, or other similar data structure, associated with a Communication Manager. For example, for VN1, the Route Manager can generate a control signal or message, such as a forwarding entry 358, that directs VN1 traffic received or generated on node A 302 through network W 310 (on path A-B-C). Meanwhile, for VN2, the Route Manager can generate a control signal or message, such as a forwarding entry 360, which directs traffic received on node A through network Z. The Route Manager can send these forwarding entries to the node A Communication Manager 320, which can store them on its forwarding table 352. Thus, network traffic associated with VN1 and VN2, destined for node C 306 received or generated on node A can travel by either path A-B-C or path A-D-C based on the designated performance level for VN1 and VN2.


While the example of FIG. 3 depicts only two virtual networks, the Route Manager 336 can similarly generate and maintain routes for any number of virtual networks. Likewise, the substrate network 300 can include any number of computing nodes and/or physical network devices. Routes can be determined based on multiple performance criteria, such as network bandwidth, network security, network latency and network reliability. For example, traffic for a virtual network suspected of being used for spamming (e.g. mass advertisement emailing) can be routed through network filters and scanners in order to reduce spam.



FIGS. 4A and 4B illustrate a virtual network 401 and corresponding substrate network 402 where substrate routing is independently determined from virtual routing. FIG. 4A illustrates a virtual network including several virtual network components. Virtual computing nodes I4404 and I5406 are connected to a logical router 408. The logical router can implement certain of the features described in the logical router 270a, 270b of FIG. 2. The logical router is connected to firewalls I1410 and I2412. The logical router is configured to direct traffic from I5 to I2 and I4 to I2, as would be the case if I2 were a backup firewall. The forwarding table associated with logical router 409 reflects this traffic configuration. I1 and I2 are connected to a second router 414. The second router is connected to another virtual computing node, I3415. Thus, based on the topology and associated forwarding table of the virtual network 401, traffic from I4 and I5 to I3 passed through I2.



FIG. 4B illustrates an example topology of the substrate network 402 associated with the virtual network 401. The substrate network includes computing node A 420, computing node B and a Route Manager 424. Substrate nodes A and B are each associated with a Communication Manager 426, 428. Node A is simulating the operation of virtual components I2, I3 and I5 while Node B is simulating the operation of virtual components on I1 and I4 on their respective virtual machines. The Route Manager can then use information regarding the assignments of virtual components to computing nodes to optimize or otherwise adjust routing tables for the substrate network. The Route Manager can receive such information from the Communication Managers and/or the System Manager. For example, assuming I1 and I2 are identical virtual firewalls, the Route Manager can determine that because I5 and I2 are located on the same computing node, while I4 and I1 are located on the other node, virtual network traffic can be routed from I5 to I2 and from I4 to I1 without leaving the respective computing node, thus reducing traffic on the network. Such a configuration is reflected in the illustrated forwarding tables 430, 432 associated with the Communication Managers. Thus, routes on the substrate network can be determined independently of virtual network routes.


In some embodiments, the Route Manager 424 or System Manager can optimize or otherwise improve network traffic using other techniques. For example, with reference to FIGS. 4A and 4B, another instance of I3 can be operated on node B 422, in addition to the instance of I3 on node A. Thus, virtual network traffic from I5-I2-I3 and I4-I1-I3 can remain on the same computing node without having to send traffic between computing nodes A and B. In one embodiment, substrate traffic can be optimized or otherwise improved without having different forwarding entries on the substrate and the virtual network. For example, with reference to FIG. 4B, I4 can be moved from computing node B 422 to node A 420, thus allowing virtual traffic from I5 and I4 to I2 to remain on the same computing node. In this way, a user monitoring traffic on logical router 408 would see that traffic is flowing according the forwarding table in the router, that is, substrate routing is transparent to the user. Other techniques for optimizing traffic by changing the association of virtual components with virtual machines and/or duplicating components can also be used.


In some situations, it can be desired that substrate routes reflect routes specified in the virtual table. For example, the virtual network user can wish to control how traffic is routed in the substrate network. However, rather than giving the user access to the substrate network, which could put other users at risk or otherwise compromise security, a data center operator can propagate network configuration or virtual network characteristics specified by the user for the virtual network to the substrate network. This propagated data can be used in generating routing paths in the substrate network, thus allowing the user to affect substrate routing without exposing the substrate layer to the user.


Route Selection on Overlay/Virtual Network



FIGS. 5A and 5B illustrate a virtual route selection propagated to the substrate network. FIG. 5A illustrates a virtual network topology where logical network 1 (LN1) 502 is connected to logical network 2 (LN2) 504 and logical network 3 (LN3) 506 by a logical router 508. The current preferred routing path specified by the user is from LN1 to LN2.


A user may wish to specify a route for various reasons. For example, routing costs through LN2 can be cheaper than LN3, such as when LN2 and LN3 are in different locations with different ISPs and one ISP charges lower rates than another. In another example, LN3 can be a backup virtual network for LN2, and used only in some situations, such as for handling overflow from LN2.


Referring back to FIG. 5A, the user can specify preferred routes through the virtual network and/or characteristics or costs associated with the virtual components, such as monetary costs, packet loss rates, reliability rate, and/or other metrics. These characteristics can be assigned to the virtual components, such as the virtual computing nodes, node links, logical routers/switches or the like. The Route Manager 510 can then determine routing tables 512 and/or forwarding tables 514 for the virtual network.



FIG. 5B illustrates an example of a substrate route that can correspond to the virtual route in FIG. 5A. In the figure, there are three data centers 520, 522, 524 corresponding to the logical networks 502, 504, 506 of FIG. 5A. In data center 1 (DC1), a computing node 526 is connected to a network translation device A (NTD A) 528 and a network translation device B (NTD B) 530. The network translation devices are connected to external networks C 532 and D 534, respectively.


The network translation devices can serve as a gateway or entry/exit point into the virtual network. In some embodiments, the network translation devices can translate between a first addressing protocol and a second addressing protocol. For example, if the virtual network is using IPv6 and the external networks are using IPv4, the network translation devices can translate from one addressing protocol to the other for traffic in either direction. In one embodiment, users connect from their private networks to the data centers via a VPN or other connection to a network translation device, which translates and/or filters the traffic between networks.


Referring back to FIG. 5B, network C 532 connects data center 2522 to NTD A 528. Network D 534 connects data center 3524 to NTD B 530. The Route Manager module 510 is in communication with data center 1520, data center 2522, and data center 3524, particularly with the Communication Manager for the computing node 526.


From information associated with the virtual network, the Route Manager 510 can determine that the user wants to route traffic from LN1 to LN2. The Route Manager can then “favor” substrate routes associated with the LN1 to LN2 virtual path. For example, the Route Manager can specify a low routing cost (e.g. cost 1) for communications, such as data packets, travelling on Network C relative to Network D (e.g. cost 10) such that during route determination, routes through Network C are favored. In one embodiment, the Route Manager can apply a coefficient to stored substrate costs in order to favor one route over another. In another example, explicit routing paths can be set up corresponding to the virtual route. The Route Manager can identify routes in its routing table and communicate those routes with one or more Communication Managers.


Referring back to FIG. 5B, when the computing node 526 receives or generates a packet destined for LN2 or a network reachable from LN2, the computing node can be configured by the Route Manager to send packets through NTD A 528 as it lies on the route including network C 532.


By propagating virtual network configuration data to the substrate, and using that configuration data in substrate route calculation, a mechanism is provided for a virtual network user to affect substrate routing. In some embodiments, the virtual configuration data can be used in determining association of the virtual components with the substrate components. For example, components of the same virtual network can be associated with the same substrate computing node or on computing nodes connected to the same switch in order to minimize or otherwise improve substrate network traffic. Configuration data can also be provided the other way and, in some embodiments, the user and/or virtual network can be provided with additional substrate information, such as characteristics of the underlying associated substrate components (e.g. performance, costs) in order to make more informed routing decisions.



FIG. 6 illustrates an example substrate network wherein a network translation device determines routes into or out of a virtual network. In FIG. 6, a communication, such as a data packet, leaves computing node A, which is associated with a virtual network, through NTD B 604. The network translation device can include a Route Determination module 605 for determining the packet route. NTD B is connected to network C 606 and network D 608.


In FIG. 6, the Route Manager 610 receives a network configuration or determines that route A-B-C is preferred or has a cheaper cost. The Route Manager can store the route in a routing table 612. The Route Manager can then send forwarding entries to the NTD B 604 that configure it to send traffic through network C 606. NTD B can contain multiple forwarding entries for multiple virtual networks, such that data for one virtual network can be sent through network C, while another virtual network sends data through network D. In some cases, network packets with the same source and/or destination are sent by different networks based on the associated virtual network.


In some embodiments, the substrate component may not have a Communication Manager or a Route Determination module and other ways of coordinating routing can be used. For example, a substrate component, such as an ordinary router or a network translation device, can be set up multiply on separate paths. Using blacklists, network traffic for a particular virtual network can be allowed on one path but blocked on others. The Route Manager can send a control signal or message updating the blacklists to manage the data flow.


In other embodiments, substrate components can implement IP aliasing, where, for example, “fast” path packets use one set of IP addresses, while “slow” path packets use another set of IP addresses. When the substrate component receives the packet, it can determine which path to use based on the IP address. The Route Manager can send a control signal or message to assign IP addresses to the components based on the type of traffic handled.


Other ways of differentiating how packets are handled by substrate components include: tagging of packets, such as by Multiprotocol Label Switching (MALS); MAC stacking where a packet could have multiple MAC addresses, the first MAC address for a substrate component, such as a switch, and a second MAC address for a next component either on the “fast” or the “slow” path; and using Network Address Translation (NAT) devices on both ends of a network in order to redirect traffic into the network, such as by spoofing or altering an destination address for an incoming packing and/or altering an the source address of an outgoing packet. In some embodiments, the Route Manager generates control signals or messages for coordinating traffic on the substrate network for the various techniques described above.


Virtual Network Route Selection Process



FIG. 7A illustrates a flow diagram for a process 700 of propagating virtual routes to a substrate network usable in the example networks described above. The virtual routes can be based on network configuration data provided by a virtual network user, such as costs, component characteristics, preferred routes and/or the like.


At block 705, the Route Manager module receives user configuration and/or network configuration data, such as, for example, policy based routing decisions made by the user. In some embodiments, a user interface is provided, allowing a user to specify configuration data. The Route Manager can receive the configuration data from a data store, for example, if user configuration and/or network configuration data are stored on the data store after being received on the user interface or otherwise generated. In some embodiments, the configuration data can include explicit routing paths through the virtual network. In some embodiments, the configuration data can specify associated costs for traversing components of the virtual network, such as links and/or nodes. These costs can be based on monetary costs, packet loss rates, reliability rate and/or other metrics. These costs can be provided by the user to configure the virtual network provided by the data center operator. However, costs and other network configuration data can come from the data center operator themselves in addition to or instead of from the user. For example, the data center operator can use the virtual network to provide feedback to the user on routing costs, such as by associating monetary use costs for the substrate computing nodes and/or components. In one example, the data center operator can specify a high cost for a high speed network link or high powered computing node so that the virtual network user can take into account that cost in configuring the virtual network.


At block 710, the Route Manager module determines virtual network routes based on the user configuration and/or network configuration data. In some embodiments, routing protocols or the route determination algorithms of the routing protocols, such as BGP, OSPF, RIP, EIGRP or the like, can be used to determine virtual routes.


At block 715, the Route Manager determines one or more forwarding entries for substrate network components, such as computing nodes, network translation devices, or the like. As the Route Manager can determine routing paths and propagate routing decisions to the substrate components, the Route Manager can coordinate routing within a data center and/or between multiple data centers.


At block 720, the Route Manager transmits the forwarding entries to the substrate components. At block 725, the substrate component receives the forwarding entries. The substrate network components can store the forwarding entries in FIB tables or similar structures. Generally, a Communication Manager on the substrate component receives and processes the forwarding entry and manages communications of the substrate component.


However, as discussed above, network traffic can also be coordinated for substrate components without a Communication Manager using instead, for example, a NAT device or the like. In some embodiments, the Route Manager can send blacklist updates, manage tagging of the packets, generate stacked MAC addresses, or the like.


At block 730, the substrate components route packets received or generated according to the stored forwarding entries. Generally, a Communication Manager on the substrate component manages the packet routing and refers to the forwarding entries to make forwarding decisions.


Substrate Network Route Selection Process



FIG. 7B illustrates a flow-diagram for a process 750 for determining substrate routing based on target performance characteristics of the associated virtual network usable in the example networks described above. In some instances, the Route Manager can optionally generate a virtual routing table for the virtual network before determining substrate routing. The virtual routing table can be used to determine virtual routing paths, allowing optimization of network traffic by selective association of the virtual network components with substrate computing nodes, such as by taking into account physical location and virtual network traffic patterns. However, generation of the virtual routing table is not necessary as the substrate routes can be determined independently of the virtual routes, as will be described below. In addition, user configuration and/or network configuration data provided by the user can be used to describe the virtual network, without needing to generate a virtual routing table.


At block 755, the Route Manager receives characteristics of the substrate nodes and/or node links. The Route Manager can receive the characteristics data from a data store. In some embodiments, a user interface is provided, allowing a user to specify characteristics data. The characteristics can describe such things as monetary costs, network bandwidth, network security, network latency, network reliability and/or the like. These characteristics can be used in a cost function for determining substrate routing paths. This information can be kept by the Route Manager or data source accessible by the Route Manager.


At block 760, the Route Manager receives a target network performance for the virtual network. The target performance can be based on a purchased service level by the user, user history, security data or the like. For example, a service level purchased by a user can have minimum bandwidth, latency or quality of service requirements. In another example, a user can be a new customer with an unknown payment history such that the user is provisioned on a “slow” virtual network in order to minimize incurred expenses in case the user fails to pay. In another example, a user identified as carrying dangerous or prohibited traffic, such as viruses, spam or the like, can be quarantined to particular substrate components. During quarantine, the virtual network components can be assigned to specialized substrate components with more robust security features. For example, the substrate components can have additional monitoring functionally, such as a deep-packet scanning ability, or have limited connectivity from the rest of the substrate network.


At block 765, the Route Manager determines substrate network routes based on the target network performance and/or characteristics of the substrate nodes and/or links. In one embodiment, the Route Manager can use the characteristic data in a cost function for determining routes. Which characteristic to use or what level of service to provide can be determined by the performance criteria or target performance. For example, for a “fast” route, the Route Manager can use bandwidth and/or latency data for the substrate network to generate routes that minimize latency, maximize available bandwidth, and/or otherwise improve network performance.


The Route Manager can re-determine routes as needed based on changes in the network, the configuration data and/or the performance level. For example, if a user has purchased N gigabits of “fast” routing but has reached the limit, the Route Manager can generate new routes and shift the user to “slow” routing.


At block 770, the Route Manager transmits forwarding entries for one or more routes to one or more nodes and/or network translation devices. In some embodiments, the Route Manager determines forwarding entries for the substrate components and sends those forwarding entries to the substrate components on the path. In some embodiments, the Route Manager can send blacklist updates, manage tagging of data packets and/or generate stacked MAC addresses.


At block 775, the Route Manager can optionally update the virtual routing table based on substrate network routes. By changing the virtual network routing table based on the substrate routes, the virtual network can stay logically consistent with the behavior of the substrate network. Thus, users won't necessarily be confused by discrepancies in the virtual routing.


Source-Dependent Address Resolution


With reference now to FIGS. 8-11, various embodiments for the implementing and managing source-dependent address resolution will be described. As previously described, the substrate network 100 includes a number of physical computing systems 105 that host one or more virtual machine instances 107 (FIG. 1). As will be explained in greater detail, the number of virtual machine instances hosted on each physical computing system 105 can vary according to the computing device resources associated with each individual physical computing system 105 and in accordance with the management policies of the substrate network 100. As previously described, the substrate network 100 also includes a virtual machine manager component, such as ONM system manager 110, for managing the allocation of virtual machine instances 107 on the various physical computing systems 105. In one embodiment, the hosted virtual machine instances can be configured in a manner to logically represent a network of virtual machine instances, generally referred to as a hosted virtual machine network.


With reference to FIG. 8, a simplified block diagram of the substrate network 100 of FIG. 1 will be described as illustrating interactions between various components of the substrate network for the purposes of source-dependent address resolution. However, one skilled in the relevant art will appreciate that illustrative interaction and communications may include, or otherwise involve, additional components not illustrated in the figures.


The simplified substrate network 100 includes a number of components for facilitating source-dependent address resolution, including a resource allocation component 850, a port association data store 852, a source-dependent address resolution component 860, and an address resolution data store 862, each of which will be described in more detail below. In addition, the simplified substrate network 100 includes one or more physical computing devices 802 hosting a number of virtual computing devices 814, 816, 824 and 826. The virtual computing devices 814, 816, 824 and 826 may be hosted by a single physical computing device or by multiple physical computing devices in communication via the network 840. Network 840 may correspond to any wired or wireless network (or combination thereof) facilitating communication between the one or more physical computing devices 802, the resource allocation component 850, the port association data store 852, the source-dependent address resolution component 860, and the address resolution data store 862.


In FIG. 8, virtual computing devices 814, 816, 824 and 826 are associated into two hosted virtual machine networks 810 and 820. Specifically, hosted virtual machine network 810 can include any number of hosted virtual computing devices, including virtual computing device ‘A’ 814 and virtual computing device ‘B’ 816. Hosted virtual machine network 830 can include any number of hosted virtual computing devices, including virtual computing device ‘X’ 824 and virtual computing device ‘Y’ 826. Each hosted virtual machine network 810 and 820 may enable communication between virtual computing devices within the hosted virtual machine network 810 or 820, respectively, as well as other computing devices (virtual or physical) external to the hosted virtual machine network 810 or 820. Illustratively, the range of network addresses utilized to facilitate the exchange of data between virtual network components associated with a common hosted virtual network can be arbitrarily selected without regard to the network addresses associated with the physical computing devices hosting the components and independent of network addresses associated with other hosted virtual networks. In some embodiments, communication with external computing devices may be facilitated in whole or in part by a peering gateway, such as peering gateways 818 and 828. Each peering gateway 818 and 828 may enable communication with a respective hosted virtual machine network 810 or 820 via an external addressing scheme.


For purposes of an illustrative example, each of the hosted virtual machine networks 810 may be associated with an internal address range of 192.168.1.0/24, as shown in FIG. 8. Because the hosted virtual machine networks 810 and 820 are distinct, overlapping network ranges may be supported. However, overlapping network ranges are not required within the context of the current disclosure. Each virtual computing device 814, 816, 824 and 826 is associated with an internal network address within the above-noted internal address range. For example, virtual computing device ‘A’ 814 is associated with an internal address of 192.168.1.101. Similarly, virtual computing device ‘B’ 816 is associated with an internal address of 192.168.1.102. By addressing network communication to these internal addresses, the virtual computing devices within the common hosted virtual machine network 810 can exchange information utilizing the internal address identifiers.


However, because each of the hosted virtual machine networks 810 and 820 are distinct, computing devices external to the hosted virtual machine network 810 may not address virtual computing devices 814 and 816 by use of the internal addresses above. Accordingly, virtual computing devices 814 and 816 may also be associated with external network addresses 203.0.113.50 and 203.0.113.51, respectively. Each of these addresses may enable communication with computing devices external to the hosted virtual machine network 810. In some embodiments, this external communication may be facilitated by the peering gateway 818. For example, the peering gateway 818 may be configured to receive communication addressed to an eternal network address, and to forward the communications to an appropriate internal network address.


In accordance with common network protocols, each virtual computing device 814, 816, 824 and 826 may be associated with an identifier, such as a network name. Network names may be human-readable (or substantially human-readable) identifiers assigned to a computing device based on a human-created naming schema. For example, the virtual computing device A 814 may be associated with the address name ‘CDA.802.HCN.TLD’ (e.g., indicating the name identifies computing device A of network 810 within a hosted computing network). Virtual computing devices 816, 824 and 826 may be identified as shown in FIG. 8. Each network name may enable communication with other computing devices (e.g., internal or external to a given hosted virtual machine network) by use of a DNS server, that includes a source-dependent address resolution component as described below. Illustratively, a DNS server obtains a DNS query including the identification of a network name. The DNS server then typically resolves the DNS query by returning one or more network addresses that corresponds to the network name. As will be described, the DNS server can vary the network address that is returned by determining whether the DNS query was transmitted by a virtual computing device associated with a common hosted virtual network component.


Internal network addresses, external network address, network identifiers, or any combination thereof may be associated with virtual computing devices 814, 816, 824 and 826 by interaction with the resource allocation component 850. Specifically, the resource allocation component 850 may be configured to receive a request from a physical computing device 802 to allocate network resources to a hosted virtual computing device. For example, a physical computing device 802 may attempt to instantiate a new virtual computing device, and may request allocate of network resources for the virtual computing device from the resource allocation component 850. The resource allocation component may determine available network resources (e.g., available internal addresses, external addresses or identifiers) and return such information to the physical computing device 802. Thereafter, the newly instantiated virtual computing device may be configured to conform to the allocated network resources.


In some embodiments, any one or more of internal addresses, external addresses, or network identifiers may be assigned to virtual computing devices without use of the resource allocation component 850. For example, in one embodiment, the resource allocation component 850 may be configured to allocate external addresses, but to allow individual virtual computing devices or hosted virtual machine networks to allocate internal addresses. In another embodiment, the resource allocation component 850 may be configured to allocate a portion of a network identifier (e.g., a trailing portion), while enabling a virtual computing device or hosted virtual machine network to specify a remainder of the network identifier (e.g., a leading portion). Allocations of internal addresses, external address and network identifiers may be stored within the address resolution data store 862. The address resolution data store 862 may correspond to any persistent or substantially persistent data storage, such as a hard drive (HDD), a solid state drive (SDD), network attached storage (NAS), a tape drive, or any combination thereof. In some embodiments, the port address resolution data store 862 may comprise a distributed collection of storage devices. For example, where a large number of hosted virtual machine networks (not shown in FIG. 8) are hosted within the substrate network 100, multiple resource allocation components 850 and address resolution data store 862 may be provided. Each resource allocation component 850 and address resolution data store 862 may be in communication via the network 840, and may be synchronized accordingly to a number of synchronization techniques known in the art.


As will be discussed in more detail below, the resource allocation component 850 may also be configured to allocate an address resolution source port to one or more of the virtual computing devices 814, 816, 824 and 826. Specifically, the resource allocation component 850 may allocate a distinct address resolution source port to each virtual computing device hosted by a common physical computing device 802. As will be described below, each of the virtual computing devices 814, 816, 824 and 826 may be configured to transmit address resolution requests to the source-dependent address resolution component via a physical computing device 802. Because such address resolution requests are transmitted via a physical computing device 802, they may appear to the source-dependent address resolution component 860 to originate at the physical computing device 802. However, by assigning a unique address resolution source port to each virtual computing device hosted by a single physical computing device 802, an originating virtual computing device for an address resolution request may be determined. Associations between virtual computing devices 814, 816, 824 and 826 and source-ports may be stored within the port association data store 852. Similarly to the address resolution data store 862 discussed above, the port association data store 852 may correspond to any persistent or substantially persistent data storage, such as a hard drive (HDD), a solid state drive (SDD), network attached storage (NAS), a tape drive, or any combination thereof. In some embodiments, the port association data store 852 may comprise a distributed collection of storage devices.


In addition, the substrate network 100 may include one or more DNS severs having a source-dependent address resolution component 860, or access to such a component or service. The source-dependent address resolution component 860 can, among other things, be configured to receive requests for address resolution from a virtual computing device 814, 816, 824 or 826 (or any other computing device), and to return a network address of a targeted computing device. For example, an address resolution request may correspond to a request for the network address of the virtual computing device A 814, identified as “CDA.810.HCN.TLD.” The source-dependent address resolution component 860 may be configured to determine a network from which the request was received (e.g., a source network), and to return an internal or external address of the virtual computing device A 814 based on such a source network. Specifically, if the source network corresponds to hosted virtual machine network 810 (containing virtual computing device A 814), the source-dependent address resolution component 860 may return the internal address of virtual computing device A 814, 192.168.1.101. However, if the source network does not correspond to hosted virtual machine network 810 (containing virtual computing device A 814), the source-dependent address resolution component 860 may return the external address of virtual computing device A, 203.0.113.50. In this manner, computing devices internal to the hosted virtual machine network 810 may communicate directly to the virtual computing device A 814, without requiring interaction with the peering gateway 818. Such direct communication may reduce the network resources required to communicate with the virtual computing device A 814. Similarly, computing devices external to the hosted virtual machine network 810 may communicate to the virtual computing device A 814 via the peering gateway 818. Such indirect communication may maintain the security and anonymity of computing devices within the hosted virtual machine network 810.


In some embodiments, the source-dependent address resolution component 860 may be included within a modified version of a standard DNS component. For example, a typical DNS server may be configured to receive requests for an address corresponding to a given name, and to return the requested address. However, a typical DNS server may not be configured to generate a response based on a source address, but instead may be configured to return the same address regardless of the source of the request. Accordingly, in some embodiments, a typical DNS server may be modified to include a source-dependent address resolution component 860 as discussed herein. For example, in one embodiment, the source-dependent address resolution component 860 may be included as a software module within a computing device implementing the PowerDNS™ service.


In addition, in some instances, typical DNS components may be configured to cache address resolution information in order to provide subsequent rapid access to such information. However, standard caches provided within a DNS component may be insufficient to provide source-dependent address resolution in accordance with embodiments of the present disclosure. Specifically, standard DNS caches may associate a frequently requested identifier (e.g., a network name) of a computing device with a specific network address of the computing device. However, as will be discussed below, where source-dependent address resolution is implemented, an identifier of a computing device may be associated with multiple network addresses of the computing device (e.g., an internal and an external network address). Accordingly, caches associating an identifier with a single network address might be insufficient for providing source-based address resolution. In some embodiments, caches associated with typical DNS components may be disabled, in order to prevent potential errors when providing source-dependent address resolution. For example, each request for address resolution may be processed by the source-dependent address resolution component independently, without regard to address resolution r previously determined by the source-dependent address resolution component. In other embodiments, caches associated with typical DNS components may be enabled only for certain DNS requests (e.g., those where source-dependent address resolution is not required). In still more embodiments, caches associated with typical DNS components may be modified, such that the cache includes associations between a requested identifier (e.g., a network name) of a computing device, an identifier of a source computing device (or source network containing the source computing device), and a specific network address of the computing device. In this regard, a modified cache may provide rapid subsequent access to address resolution information associated with a requesting source computing device (or source network containing the source computing device).


In some embodiments, in order to facilitate a large number of source-dependent address resolution requests without traditional caching techniques (or with use of modified caching techniques described above), multiple source-dependent address resolution components 860 may be provided. For example, a collection of source-dependent address resolution components 860 may function to cooperatively service address resolution requests from a plurality of computing devices. To ensure consistency, the source-dependent address resolution components 860 may synchronize address resolution information according to a number of known synchronization techniques. In another embodiment, a source-dependent address resolution component 860 may be implemented by a number of computing devices, such as within a distributed computing environment. For example, a source-dependent address resolution component 860 may be implemented by a number of computing devices (physical or virtual) in communication with the network 840.


In addition, some DNS systems may include “split-horizon” or “split-view” DNS, which may provide different sets of DNS information based on a source of address of the DNS request. However, such systems are generally limited to a fixed number of “views,” or associations between DNS information and specific sources. Accordingly, such split-view DNS systems are generally insufficient to provide a large amount of diverse source-dependent address resolution to a large number of computing devices. In addition, where multiple virtual computing devices are hosted within a single physical computing device, a traditional split-view DNS may recognize all requests of the virtual computing devices as originating from the physical computing device. Because split-view DNS systems may determine a target address based on a source address of a request, the split-view DNS systems may therefore be unable to provide distinct DNS information to multiple virtual computing devices hosted within the same physical computing device. Still further, while split-view DNS systems may provide distinct DNS information to different requesting computing devices, such split-view DNS systems may not be capable of intelligently determining whether a requesting computing device is within the same internal network as a target computing device. Accordingly, a typical split-view DNS system may be unable to intelligently provide internal or external addresses based on such a determination. Embodiments of the present disclosure therefore represent a number of advantages over traditional split-view DNS systems.


With reference to FIG. 9, one illustrative interaction for the allocation of network resources (e.g., an internal address, external address, identifier, or combination thereof) as well as allocation of a source-port to a virtual computing device, such as virtual computing device A 814 of FIG. 8 will be described. For the purposes of FIG. 9, it will be assumed that the virtual computing device A 814 has been assigned an internal network address (e.g., by an administrator of the virtual computing device A 814), but has not yet been assigned an external network address or a resolvable network identifier (e.g., a network name). The interactions of FIG. 9 may occur, for example, immediately or substantially immediately after launching or instantiating the virtual computing device A 814 on the physical computing device 802.


As shown in FIG. 9, at (1), the virtual computing device A 814 (or the physical computing device 802 on behalf of the virtual computing device A 814) may transmit a request for network interface information to the resource allocation component 850. The request may correspond to any of a number of known protocols. For example, in one embodiment, the request may comprise to a DHCP request. After receiving the request, the resource allocation component 850 may determine appropriate network interface information (e.g., an external address and a network name) to allocate to the physical computing device A 814.


In addition, the resource allocation component 850 may determine an appropriate source port to assign to the virtual computing device A 814 for purposes of source-dependent address resolution services. Specifically, at (2), the resource allocation component 850 may request a set of current port associations from the port association data store 852. Current port associations may correspond to any previously existing association between source ports and virtual computing devices. Such current port associations may be returned to the resource allocation component 850 at (3).


Thereafter, the resource allocation component 850 may determine a new port association to assign to the virtual computing device A 814. As noted above, source ports may be associated with virtual computing devices such that each virtual computing device hosted by an individual physical computing device is assigned a unique source port. For example, where the virtual computing device A 814 is hosted by the same physical computing device 802 as another virtual computing device, each of the virtual computing devices may be assigned distinct source ports. However, where the virtual computing device A 814 is hosted by a different physical computing device 802 than another virtual computing device, these virtual computing devices may be assigned the same source port. Specifically, because the different hosting physical computing devices 802 are each associated with a different network address, address resolution requests may be differentiated based on the network address of the physical computing device, rather than on the source port. However, where the same physical computing devices 802 hosts multiple virtual computing devices, network address may not be possible based solely on a network address of the physical computing device 802. Accordingly, the resource allocation component 850 may, at (4), determine a source port to assign to the virtual computing device A 814 such that a combination of the network address of the physical computing device 802 and the determined source port is unique. At (5), the newly determined port association may be transmitted to the port association data store 852 for storage, such that the port associations contained therein are updated for future use.


Prior to, simultaneously with, or after determination of a source port, the resource allocation component 850 may, at (6), allocate additional network interface information (e.g., an external address or network name) to the virtual computing device A 814. Allocation of network addresses and names is generally known within the art, and therefore will not be discussed in greater detail herein.


Thereafter, at (7), the allocated network interface information (e.g., an external address or network name) as well as the source port association information may be returned to the virtual computing device A 814. Thereafter, the virtual computing device A 814 (or the physical computing device 802 on behalf of the virtual computing device A 814) may utilize the returned information to cause future address resolution requests to be transmitted from the assigned source port.


In addition, at (8), the resource allocation component 850 may transmit the network interface information to the address resolution data store 862. For example, the resource allocation component 850 may update the information within the address resolution data store 862 to reflect that virtual computing device A 814 is associated with an assigned external address, network name, or both.


With reference now to FIGS. 10A and 10B, illustrative interactions depicting the fulfillment of an address resolution request based at least in part on a source of the request will be described. Specifically, FIG. 10A depicts the fulfillment of request for address resolution where the target virtual computing device and the source virtual computing device are within the same hosted virtual machine network. FIG. 10B, in turn, depicts the fulfillment of request for address resolution where the target virtual computing device and the source virtual computing device are within different hosted virtual machine networks.


In FIG. 10A, an address resolution request for the virtual computing device A 814 of FIG. 8 (not shown in FIG. 10A) is depicted. The address resolution request is transmitted by the virtual computing device B 816. As shown in FIG. 8, both the target virtual computing device A 814 and the source virtual computing device B 816 are part of the hosted virtual machine network 810. Accordingly, the target virtual computing device A 814 and the source virtual computing device B 816 are enabled to communicate by use of internal network addresses. However, in order to ensure flexibility in networking, security, and human readability, the virtual computing device B 816 may not be constantly aware of the internal address of virtual computing device A 814. Instead, the virtual computing device B 816 may maintain an identifier of the virtual computing device A 814 (e.g., a network name) Such an identifier may be resolvable to a network address of the virtual computing device A 814 by use of an address resolution component, such as the source-dependent address resolution component 860.


Accordingly, at (1), the virtual computing device B 816 may transmit a request for address resolution to the source-dependent address resolution component 860. The request may include the identifier of the virtual computing device A 814 (e.g., “CDA.810.HCN.TLD”). The request may be transmitted (e.g., via network 840 of FIG. 8) from a physical computing device 802 on behalf of the virtual computing device B 816. Because the request may appear to originate on the physical computing device 802, the request may not be identifiable to the resource allocation component 850 as originating at the virtual computing device B 816. Accordingly, the virtual computing device B 816 (or the physical computing device 802 on behalf of the virtual computing device B 816) may transmit the request on a designated source port associated with the virtual computing device A 814. For example, the virtual computing device B 816 may have previously been associated with source port 8004 (e.g., via the interactions of FIG. 9). The source-dependent address resolution component 860 may therefore receive the request as originating from the physical computing device 802 on source port 8004.


Thereafter, the source-dependent address resolution component 860 may determine a source network (e.g., a hosted virtual machine network) from which the request originated. Specifically, at (2), the source-dependent address resolution component 860 may query the port association data store 852 as to the source network. In some instances, the port association data store 852 may contain information as to associations between specific source port and source address combinations, and a true source of the request. For example, the port association data store 852 may contain information indicating that, for a request from the physical computing device 802 on port 8004, the virtual computing device B 816 is the true source of the request. A source identifier of this source may be returned to the source-dependent address resolution component 860 at (3). The source-dependent address resolution component 860 may thereafter determine, based on the source identifier, a source network of the request. Specifically, the source-dependent address resolution component 860 may determine that, because virtual computing device B 816 is part of the hosted virtual machine network 810, that the hosted virtual machine network 810 corresponds to the source network. In other embodiments, the port association data store 852 may contain information mapping specific source port and source address combinations to source networks. For example, the port association data store 852 may contain information indicating that, for a request from the physical computing device 802 on port 8004, the source network is hosted virtual machine network 810. An identifier of the source network may be returned to the source-dependent address resolution component 860 at (3).


Prior to, simultaneous to, or after determining a source network of the request, the source-dependent address resolution component 860 may also determine a destination network of the request. The destination network may generally correspond to the hosted virtual machine network that includes the virtual computing device identified within the request. Specifically, at (4), the source-dependent address resolution component 860 may transmit a query to the address resolution data store 862 as to the target network including the virtual computing device A 814, as identified within the request (e.g., by network identifier). The address resolution data store 862 may reference the identifier within the request in order to determine a target network. For example, in one embodiment, the address resolution data store 862 may include information mapping a specific identifier to a target network. For example, the address resolution data store 862 may include information mapping identifier “CDA.810.HCN.TLD” (corresponding to virtual computing device A 814) to target hosted virtual machine network 810. Information identifying the target network may be returned at (5).


After determining a source network of the request and a target network, the source-dependent address resolution component 860 may determine an appropriate address to return to the requesting virtual computing device. Specifically, in instances where the source network and the target network are the same, an internal address may be returned (enabling communication within the shared network). In instances where the source and target network are different, an external address may be returned (enabling communication across the different networks).


In the illustrative interaction of FIG. 10A, the source network and the target network are both determined to be hosted virtual machine network 810. Accordingly, at (6), the source-dependent address resolution component 860 may query the address resolution data store 862 for the internal address of the target device identified within the request. For example, the source-dependent address resolution component 860 may query the address resolution data store 862 for the internal address corresponding to identifier “CDA.810.HCN.TLD” (identifying virtual computing device A 814). As shown in FIG. 8, the virtual computing device A 814 has an internal address of 192.168.1.101. Accordingly, this internal address may be returned to the source-dependent address resolution component 860 at (7). The internal address may in turn be returned to the virtual computing device B 816 at (8). Thereafter, the virtual computing device B 816 may communicate with the target virtual computing device A 814 by use of internal address 192.168.1.101.


Similarly to FIG. 10A, FIG. 10B depicts the fulfillment of request for address of the virtual computing device A 814 of FIG. 8 (not shown in FIG. 10B). However, in FIG. 10B, the address resolution request is transmitted by the virtual computing device X 824. As shown in FIG. 8, the target virtual computing device A 814 is part of the hosted virtual machine network 810, while the source virtual computing device X 816 is part of the hosted virtual machine network 820. Accordingly, the target virtual computing device A 814 and the source virtual computing device X 824 may communicate by external network addresses. The virtual computing device X 824 may not be constantly aware of the external address of virtual computing device A 814. Instead, the virtual computing device B 816 may maintain an identifier of the virtual computing device A 814 (e.g., a network name). Such an identifier may be resolvable to a network address of the virtual computing device A 814 by use of an address resolution component, such as the source-dependent address resolution component 860.


Accordingly, at (1), the virtual computing device X 824 may transmit a request for address resolution to the source-dependent address resolution component 860. The request may include the identifier of the virtual computing device A 814 (e.g., “CDA.810.HCN.TLD”). The request may be transmitted (e.g., via network 840 of FIG. 8) from a physical computing device 802 on behalf of the virtual computing device A 814. Because the request may appear to originate on the physical computing device 802, the request may not be identifiable to the resource allocation component 850 as originating at the virtual computing device X 824. Accordingly, the virtual computing device X 824 (or the physical computing device 802 on behalf of the virtual computing device X 824) may transmit the request on a designated source port associated with the virtual computing device X 824. For example, the virtual computing device X 824814 may have previously been associated with source port 8006 (e.g., via the interactions of FIG. 9). The source-dependent address resolution component 860 may therefore receive the request as originating from the physical computing device 802 on source port 8006.


Thereafter, the source-dependent address resolution component 860 may determine a source network (e.g., a hosted virtual machine network) from which the request originated. Specifically, at (2), the source-dependent address resolution component 860 may query the port association data store 852 as to the source network. An identifier of the source network may be returned to the source-dependent address resolution component 860 at (3). In the illustrative interaction of FIG. 10B, the source network may correspond to the hosted virtual machine network 820, as shown in FIG. 8.


Prior to, simultaneous to, or after determining a source network of the request, the source-dependent address resolution component 860 may also determine a destination network of the request. Similarly to FIG. 10A, above, at (4), the source-dependent address resolution component 860 may transmit a query to the address resolution data store 862 as to the target network including the virtual computing device A 814, as identified within the request (e.g., by network identifier). At (5), information identifying the target network may be returned. In the illustrative interaction of FIG. 10B, the target network may be identified as corresponding to the hosted virtual machine network 810, as shown in FIG. 8.


After determining a source network of the request and a target network, the source-dependent address resolution component 860 may determine an appropriate address to return to the requesting virtual computing device. Specifically, as noted above, in instances where the source and target network are different, an external address may be returned (enabling communication across the different networks). In the illustrative interaction of FIG. 10B, the source network and the target network are determined to be the hosted virtual machine networks 810 and 820, respectively. Accordingly, at (6), the source-dependent address resolution component 860 may query the address resolution data store 862 for the external address of the target device identified within the request. For example, the source-dependent address resolution component 860 may query the address resolution data store 862 for the external address corresponding to identifier “CDA.810.HCN.TLD” (identifying virtual computing device A 814). As shown in FIG. 8, the virtual computing device A 814 has an internal address of 203.0.113.50. Accordingly, this external address may be returned to the source-dependent address resolution component 860 at (7). The external address may in turn be returned to the virtual computing device X 824 at (8). Thereafter, the virtual computing device X 824 may communicate with the target virtual computing device A 814 by use of external address 203.0.113.50.


With reference to FIG. 11, one illustrative routine 1100 for source-dependent fulfillment of address resolution requests will be described. The routine 1100 may be carried out, for example, by the source-dependent address resolution component 860 of FIG. 8. Specifically, at block 1102, the source-dependent address resolution component 860 may receive a request for resolution of a network address of a virtual computing device. For example, the request may correspond to a request to resolve the network name CDX.812.HCN.TLD (corresponding to virtual computing device X 824 of FIG. 8) into an IP address. Thereafter, at block 1104, the source address and source port of the request may be determined. As noted above, embodiments of the present disclosure include associating specific network address and source port combinations with a given source network (or source virtual computing device associated with a source network). For example, the request may have originated from an address of a physical computing device 802 hosting the virtual computing device B 816 of FIG. 8. The request may have further originated on source port 8004, previously associated with virtual computing device B 816 (exclusively or in addition to other virtual computing devices on other physical computing devices). Accordingly, the request may be determined to have originated from virtual computing device B 816.


Thereafter, at block 1106, the source-dependent address resolution component 860 may determine a source network of the request. For example, if the source port and source address indicate the request was received from virtual computing device B 816, the source-dependent address resolution component 860 may determine the source network to be the hosted virtual machine network 810. In some embodiments, the source-dependent address resolution component 860 may identify a source network by communication with the port association data store 852. Similarly, at block 1108, the source-dependent address resolution component 860 may determine a target network of the request. For example, if the request is targeted to virtual computing device X 824, as identified by network name CDX.812.HCN.TLD, the source-dependent address resolution component 860 may determine the target network to be hosted virtual machine network 820. In some embodiments, the source-dependent address resolution component 860 may identify a source network by communication with the address resolution data store 862.


At block 1110, the source-dependent address resolution component 860 may determine whether the source network and the target network are the same virtual hosted machine network. As discussed above, where the source network and the target network are the same virtual hosted machine network, the requesting device may communicate with the target device via an internal network address. However, where the source network and the target network are not the same virtual hosted machine network, external addressing must be utilized to communicate between devices. Accordingly, if the source network and the target network are the same virtual hosted machine network, the routine may continue at block 1116, where the source-dependent address resolution component 860 may determine an internal address of the target device. For example, the source-dependent address resolution component 860 (e.g., in conjunction with the address resolution data store 862) may determine that network name CDX.812.HCN.TLD (of virtual computing device X 824) corresponds to internal address 192.168.1.101. This internal address may then be returned to the requesting computing device at block 1118. Thereafter, the routine 1100 may end at block 1120.


However, if the source network and the target network are not the same virtual hosted machine network, the routine may continue at block 1112, where the source-dependent address resolution component 860 may determine an external address of the target device. For example, the source-dependent address resolution component 860 (e.g., in conjunction with the address resolution data store 862) may determine that network name CDX.812.HCN.TLD (of virtual computing device X 824) corresponds to external address 203.0.113.20. This external address may then be returned to the requesting computing device at block 1114. Thereafter, the routine 1100 may end at block 1120.


Though described above in sequence, one skilled in the art will appreciate that portions of the routine 1100 described above may implemented or executed simultaneously or in different order than as described above. For example, in some embodiments, determination of a target network (e.g., at block 1108) may occur prior or simultaneously to determination of a source network (e.g., at blocks 1104 and 1106). Accordingly, the elements of the routine 1100 are intended to be illustrative, and not limiting.


In addition, though determination of a source network is discussed herein based at least in part on a source port of a request, a source network may alternatively or additionally be determined based on other criteria. For example, in some embodiments, resolution requests may be modified to include a source network or unique source address corresponding to a source network within the request. Illustratively, encapsulation techniques may be employed to include a source network or information resolvable to a source network. Accordingly, utilization of source-port identification techniques is intended to be illustrative, and not limiting.


Still further, while resolution of network names into network addresses is described herein, embodiments of the present disclosure may enable source-dependent resolution of other aspects of computing devices. For example, in some instances, a virtual computing device may be associated with both an internal network name and an external network name. An internal network name may correspond to a human-readable (or substantially human readable) name resolvable to an address of the computing device within a specific network. An external network name may correspond to a human-readable (or substantially human readable) name resolvable to an address of the computing device outside of the specific network (e.g., as part of a global domain name system). In one embodiment, internal or external network names may be resolvable based on other identifying information of a computing device, such as an external address. For example, a source-dependent address resolution component may be configured to fulfill reverse address resolution requests received from computing devices. Specifically, where a reverse address resolution request is received from a computing device sharing a network with the target device identified in the request, an internal network name may be returned. Where reverse address resolution request is received from a computing device not sharing a network with the target device identified in the request, an external network name may be returned. Accordingly, resolution of network names to network addresses is intended to be illustrative, and not limiting.


All of the processes described herein may be embodied in, and fully automated via, software code modules executed by one or more general purpose computers or processors. The code modules may be stored in any type of computer-readable medium or other computer storage device. Some or all the methods may alternatively be embodied in specialized computer hardware. In addition, the components referred to herein may be implemented in hardware, software, firmware or a combination thereof.


Conditional language such as, among others, “can,” “could,” “might” or “may,” unless specifically stated otherwise, are otherwise understood within the context as used in general to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment.


Conjunctive language such as the phrase “at least one of X, Y and Z,” unless specifically stated otherwise, is otherwise understood with the context as used in general to convey that an item, term, etc. may be either X, Y or Z. Thus, such conjunctive language is not generally intended to imply that certain embodiments require at least one of X, at least one of Y and at least one of Z to each be present.


Any process descriptions, elements or blocks in the flow diagrams described herein and/or depicted in the attached figures should be understood as potentially representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or elements in the process. Alternate implementations are included within the scope of the embodiments described herein in which elements or functions may be deleted, executed out of order from that shown, or discussed, including substantially concurrently or in reverse order, depending on the functionality involved as would be understood by those skilled in the art.


It should be emphasized that many variations and modifications may be made to the above-described embodiments, the elements of which are to be understood as being among other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.

Claims
  • 1. A computer-implemented method for facilitating source-dependent address resolution, the computer-implemented method comprising: maintaining, at an address resolution system associated with a plurality of virtual computing devices, address resolution information mapping network names of the plurality of virtual computing devices to internal and external network addresses of the plurality of virtual computing devices, wherein individual virtual computing devices of the plurality of virtual computing devices are associated with both an internal network address, which enables communication with other computing devices associated with a network of the individual virtual computing device, and an external network address, which enables communication with other computing devices not associated with the network;receiving, at the address resolution system, a DNS query request from a source virtual computing device, wherein DNS query request corresponds to a request for an address of a target virtual computing device, and wherein the request comprises a network name of the target virtual computing device;identifying, at the address resolution system and based at least in part on the received request, a source network of the source virtual computing device;identifying, at the address resolution system and based at least in part on the received request and on the address resolution information, a target network including the target virtual computing device;determining, at the address resolution system, whether the source network and the target network are the same network;selecting, at the address resolution system, at least one of the internal address or the external address of the target virtual computing device for transmission to the source virtual computing device, wherein the address resolution system selects the internal address of the target virtual computing device for transmission to the source virtual computing device when it is determined that the source network and the target network are the same network, and wherein the address resolution system selects the external address of the target virtual computing device for transmission to the source virtual computing device when it is determined that the source network and the target network are not the same network; andtransmitting the selected at least one address from the address resolution system to the source virtual computing device.
  • 2. The computer-implemented method of claim 1, wherein determining a source network of the source computing device is further based at least in part on an address of a physical computing device hosting the source virtual computing device.
  • 3. The computer-implemented method of claim 1, wherein determining a source network of the source virtual computing device is further based at least in part on a source port from which the request is received.
  • 4. The computer-implemented method of claim 1, wherein at least one of the source network and the target network is a hosted virtual machine network simulated by one or more physical computing devices.
  • 5. The computer-implemented method of claim 1, wherein the method is carried out independently of any previously received DNS queries.
  • 6. A system for source-dependent address resolution, the system comprising: at least one data store storing address resolution information mapping identifiers of individual computing devices, of a plurality of computing devices, to both internal and external addresses of the individual computing devices; andone or more computing devices implementing an address resolution system, the address resolution system configured to: receive, at the address resolution system, a request for resolution of an identifier of the target computing device to an address of the target computing device;determine, at the address resolution system and based at least in part on the received request, a source network from which the request was received;determine, at the address resolution system and based at least in part on the received request and on the address resolution information, a target network including the target computing device;determine, at the address resolution system, whether the source network and the target network are the same network; andrespond to the request by resolving the identifier of the target computing device into at least one of an internal address or an external address of the target computing device and transmitting a result of resolving the identifier from the address resolution system to a source computing device associated with the request, wherein the address resolution system resolves the identifier of the target computing device into the internal address of the target computing device when it is determined that the source network and the target network are the same network, and wherein the address resolution system solves the identifier of the target computing device into the external address of the target computing device to the source computing device when it is determined that the source network and the target network are not the same network.
  • 7. The system of claim 6, wherein the source computing device is configured to utilize the transmitted address to communicate with the target computing device.
  • 8. The system of claim 6 further comprising a physical computing device hosting the source computing device.
  • 9. The system of claim 8, wherein the physical computing device is configured to transmit requests for resolution of addresses on behalf of the source computing device from a source port of the physical computing device.
  • 10. The system of claim 8, wherein the request is received from the physical computing device.
  • 11. The system of claim 8, wherein the one or more computing devices are further configured to determine a source network from which the request was received based at least in part on an address of the physical computing device.
  • 12. The system of claim 6, wherein the at least one data store further includes information mapping addresses of physical computing devices and source ports of requests to source networks.
  • 13. The system of claim 12, wherein the one or more computing devices are further configured to determine a source network from which the request was received based at least in part on the information mapping addresses of physical computing devices and source ports of requests to source networks.
  • 14. The system of claim 6, wherein at least one of the source computing device and the target computing device is a virtual computing device.
  • 15. The system of claim 6, wherein the received request is a DNS query.
  • 16. The system of claim 6, wherein the one or more computing devices correspond to a plurality of computing devices within a distributed computing environment.
  • 17. A non-transitory, computer-readable storage medium having computer-executable instructions for facilitating source-dependent address resolution that, when executed by an address resolution system, cause the address resolution system to: receive, at the address resolution system, a request for resolution of an identifier of a target computing device to an address of the target computing device, wherein the target computing device is associated with both an internal network address and an external network address;determine, at the address resolution system and based at least in part on the received request, a source network from which the request was received;determine, at the address resolution system, a target network including the target computing device based at least in part on the received request and on address resolution information mapping the identifier of the target computing device to the internal and the external address of the target computing device;determine, at the address resolution system, whether the source network and the target network are the same network;respond to the request by resolving the identifier of the target computing device into at least one of the internal address or the external address of the target computing device and transmitting a result of resolving the identifier from the address resolution system to a source computing device associated with the request, wherein the address resolution system resolves the identifier of the target computing device into the internal address of the target computing device when it is determined that the source network and the target network are the same network, and wherein the address resolution system solves the identifier of the target computing device into the external address of the target computing device when it is determined that the source network and the target network are not the same network.
  • 18. The non-transitory, computer-readable storage medium of claim 17, wherein the source computing device is configured to utilize the transmitted address to communicate with the target computing device.
  • 19. The non-transitory, computer-readable storage medium of claim 17, wherein the source computing device is hosted by at least one physical computing device.
  • 20. The non-transitory, computer-readable storage medium of claim 19, wherein the physical computing device is configured to transmit requests for resolution of addresses on behalf of the source computing device from a source port of the physical computing device.
  • 21. The non-transitory, computer-readable storage medium of claim 19, wherein the computer-executable instructions further cause the address resolution system to determine a source network from which the request was received based at least in part on an address of the physical computing device.
  • 22. The non-transitory, computer-readable storage medium of claim 17, wherein the computer-executable instructions further cause the address resolution system determine a source network from which the request was received based at least in part on a source port of the request.
  • 23. The non-transitory, computer-readable storage medium of claim 17, wherein the identifier of the target computing device is a network name of the target computing device.
CROSS-REFERENCE TO RELATED APPLICATION

This application claims the benefit of U.S. Provisional Patent Application No. 61/739,627, entitled SOURCE-DEPENDENT ADDRESS RESOLUTION, and filed on Dec. 19, 2012, the entirety of which is hereby incorporated by reference.

US Referenced Citations (1197)
Number Name Date Kind
5063500 Shorter Nov 1991 A
5341477 Pitkin et al. Aug 1994 A
5459837 Caccavale Oct 1995 A
5611049 Pitts Mar 1997 A
5649185 Antognini et al. Jul 1997 A
5701467 Freeston Dec 1997 A
5764910 Shachar Jun 1998 A
5774660 Brendel et al. Jun 1998 A
5852717 Bhide et al. Dec 1998 A
5892914 Pitts Apr 1999 A
5893116 Simmonds et al. Apr 1999 A
5895462 Toki Apr 1999 A
5905248 Russell et al. May 1999 A
5933811 Angles et al. Aug 1999 A
5937427 Shinagawa et al. Aug 1999 A
5974454 Apfel et al. Oct 1999 A
5991306 Burns et al. Nov 1999 A
5999274 Lee et al. Dec 1999 A
6016512 Huitema Jan 2000 A
6018619 Allard et al. Jan 2000 A
6026452 Pitts Feb 2000 A
6038601 Lambert et al. Mar 2000 A
6052718 Gifford Apr 2000 A
6078960 Ballard Jun 2000 A
6085234 Pitts et al. Jul 2000 A
6092100 Berstis et al. Jul 2000 A
6098096 Tsirigotis et al. Aug 2000 A
6108703 Leighton et al. Aug 2000 A
6128279 O'Neil et al. Oct 2000 A
6151631 Ansell et al. Nov 2000 A
6157942 Chu et al. Dec 2000 A
6167438 Yates et al. Dec 2000 A
6167446 Lister et al. Dec 2000 A
6173316 De Boor et al. Jan 2001 B1
6182111 Lnohara et al. Jan 2001 B1
6182125 Borella et al. Jan 2001 B1
6185598 Farber et al. Feb 2001 B1
6192051 Lipman et al. Feb 2001 B1
6205475 Pitts Mar 2001 B1
6223288 Byrne Apr 2001 B1
6243761 Mogul et al. Jun 2001 B1
6275496 Burns et al. Aug 2001 B1
6286043 Cuomo et al. Sep 2001 B1
6286084 Wexler et al. Sep 2001 B1
6304913 Rune Oct 2001 B1
6324580 Jindal et al. Nov 2001 B1
6330602 Law et al. Dec 2001 B1
6338082 Schneider Jan 2002 B1
6345308 Abe Feb 2002 B1
6351743 DeArdo et al. Feb 2002 B1
6351775 Yu Feb 2002 B1
6363411 Dugan et al. Mar 2002 B1
6366952 Pitts Apr 2002 B2
6374290 Scharber et al. Apr 2002 B1
6377257 Borrel et al. Apr 2002 B1
6386043 Millins May 2002 B1
6405252 Gupta et al. Jun 2002 B1
6408360 Chamberlain et al. Jun 2002 B1
6411967 Van Renesse Jun 2002 B1
6415280 Farber et al. Jul 2002 B1
6430607 Kavner Aug 2002 B1
6438592 Killian Aug 2002 B1
6442165 Sitaraman et al. Aug 2002 B1
6452925 Sistanizadeh et al. Sep 2002 B1
6457047 Chandra et al. Sep 2002 B1
6459909 Bilcliff et al. Oct 2002 B1
6473804 Kaiser et al. Oct 2002 B1
6484143 Swildens et al. Nov 2002 B1
6484161 Chipalkatti et al. Nov 2002 B1
6493765 Cunningham et al. Dec 2002 B1
6505241 Pitts Jan 2003 B2
6523036 Hickman et al. Feb 2003 B1
6529910 Fleskes Mar 2003 B1
6529953 Van Renesse Mar 2003 B1
6553413 Leighton et al. Apr 2003 B1
6560610 Eatherton et al. May 2003 B1
6611873 Kanehara Aug 2003 B1
6622168 Datta Sep 2003 B1
6633324 Stephens, Jr. Oct 2003 B2
6643357 Lumsden Nov 2003 B2
6643707 Booth Nov 2003 B1
6654807 Farber et al. Nov 2003 B2
6658462 Dutta Dec 2003 B1
6665706 Kenner et al. Dec 2003 B2
6678717 Schneider Jan 2004 B1
6678791 Jacobs et al. Jan 2004 B1
6681282 Golden et al. Jan 2004 B1
6694358 Swildens et al. Feb 2004 B1
6697805 Choquier et al. Feb 2004 B1
6724770 Van Renesse Apr 2004 B1
6732237 Jacobs et al. May 2004 B1
6754699 Swildens et al. Jun 2004 B2
6754706 Swildens et al. Jun 2004 B1
6760721 Chasen et al. Jul 2004 B1
6769031 Bero Jul 2004 B1
6782398 Bahl Aug 2004 B1
6785704 McCanne Aug 2004 B1
6795434 Kumar et al. Sep 2004 B1
6799214 Li Sep 2004 B1
6804706 Pitts Oct 2004 B2
6810291 Card et al. Oct 2004 B2
6810411 Coughlin et al. Oct 2004 B1
6829654 Jungck Dec 2004 B1
6862607 Vermeulen Mar 2005 B1
6868439 Basu et al. Mar 2005 B2
6874017 Inoue et al. Mar 2005 B1
6917951 Orbits et al. Jul 2005 B2
6928467 Peng et al. Aug 2005 B2
6928485 Krishnamurthy et al. Aug 2005 B1
6941562 Gao et al. Sep 2005 B2
6963850 Bezos et al. Nov 2005 B1
6976090 Ben-Shaul et al. Dec 2005 B2
6981017 Kasriel et al. Dec 2005 B1
6985945 Farhat et al. Jan 2006 B2
6986018 O'Rourke et al. Jan 2006 B2
6990526 Zhu Jan 2006 B1
6996616 Leighton et al. Feb 2006 B1
7003555 Jungck Feb 2006 B1
7006099 Gut et al. Feb 2006 B2
7007089 Freedman Feb 2006 B2
7009943 O'Neil Mar 2006 B2
7010578 Lewin et al. Mar 2006 B1
7010598 Sitaraman et al. Mar 2006 B2
7023465 Stephens, Jr. Apr 2006 B2
7024466 Outten et al. Apr 2006 B2
7031445 Lumsden Apr 2006 B2
7032010 Swildens et al. Apr 2006 B1
7058633 Gnagy et al. Jun 2006 B1
7058706 Iyer et al. Jun 2006 B1
7058953 Willard et al. Jun 2006 B2
7065496 Subbloie et al. Jun 2006 B2
7065587 Huitema et al. Jun 2006 B2
7072982 Teodosiu et al. Jul 2006 B2
7076633 Tormasov et al. Jul 2006 B2
7082476 Cohen et al. Jul 2006 B1
7086061 Joshi et al. Aug 2006 B1
7092505 Allison et al. Aug 2006 B2
7092997 Kasriel et al. Aug 2006 B1
7096193 Beaudoin et al. Aug 2006 B1
7096266 Lewin et al. Aug 2006 B2
7099936 Chase et al. Aug 2006 B2
7103645 Leighton et al. Sep 2006 B2
7114160 Suryanarayana et al. Sep 2006 B2
7117262 Bai et al. Oct 2006 B2
7120874 Shah et al. Oct 2006 B2
7133905 Dilley et al. Nov 2006 B2
7136922 Sundaram et al. Nov 2006 B2
7139808 Anderson et al. Nov 2006 B2
7139821 Shah et al. Nov 2006 B1
7143169 Champagne et al. Nov 2006 B1
7143170 Swildens et al. Nov 2006 B2
7146560 Dang et al. Dec 2006 B2
7149809 Barde et al. Dec 2006 B2
7152118 Anderson, IV et al. Dec 2006 B2
7162539 Garcie-Luna-Aceves Jan 2007 B2
7174382 Ramanathan et al. Feb 2007 B2
7185063 Kasriel et al. Feb 2007 B1
7185084 Sirivara et al. Feb 2007 B2
7188214 Kasriel et al. Mar 2007 B1
7194522 Swildens et al. Mar 2007 B1
7194552 Schneider Mar 2007 B1
7200667 Teodosiu et al. Apr 2007 B2
7216170 Ludvig et al. May 2007 B2
7225254 Swildens et al. May 2007 B1
7228350 Hong et al. Jun 2007 B2
7228359 Monteiro Jun 2007 B1
7233978 Overton et al. Jun 2007 B2
7240100 Wein et al. Jul 2007 B1
7249196 Peiffer et al. Jul 2007 B1
7251675 Kamakura et al. Jul 2007 B1
7254626 Kommula et al. Aug 2007 B1
7254636 O'Toole, Jr. et al. Aug 2007 B1
7257581 Steele et al. Aug 2007 B1
7260598 Liskov et al. Aug 2007 B1
7260639 Afergan et al. Aug 2007 B2
7269784 Kasriel et al. Sep 2007 B1
7272227 Beran Sep 2007 B1
7274658 Bornstein et al. Sep 2007 B2
7284056 Ramig Oct 2007 B2
7289519 Liskov Oct 2007 B1
7293093 Leighton Nov 2007 B2
7308499 Chavez Dec 2007 B2
7310686 Uysal Dec 2007 B2
7316648 Kelly et al. Jan 2008 B2
7318074 Iyengar et al. Jan 2008 B2
7320131 O'Toole, Jr. Jan 2008 B1
7321918 Burd et al. Jan 2008 B2
7337968 Wilz, Sr. et al. Mar 2008 B2
7339937 Mitra et al. Mar 2008 B2
7340505 Lisiecki et al. Mar 2008 B2
7363291 Page Apr 2008 B1
7363626 Koutharapu et al. Apr 2008 B2
7370089 Boyd et al. May 2008 B2
7372809 Chen May 2008 B2
7373416 Kagan et al. May 2008 B2
7376736 Sundaram et al. May 2008 B2
7380078 Ikegaya et al. May 2008 B2
7392236 Rusch et al. Jun 2008 B2
7398301 Hennessey et al. Jul 2008 B2
7406512 Swildens et al. Jul 2008 B2
7406522 Riddle Jul 2008 B2
7409712 Brooks et al. Aug 2008 B1
7430610 Pace et al. Sep 2008 B2
7441045 Skene et al. Oct 2008 B2
7441261 Slater et al. Oct 2008 B2
7454457 Lowery et al. Nov 2008 B1
7454500 Hsu et al. Nov 2008 B1
7461170 Taylor et al. Dec 2008 B1
7464142 Flurry et al. Dec 2008 B2
7478148 Neerdaels Jan 2009 B2
7492720 Pruthi et al. Feb 2009 B2
7496651 Joshi Feb 2009 B1
7499998 Toebes et al. Mar 2009 B2
7502836 Menditto et al. Mar 2009 B1
7505464 Okmianski et al. Mar 2009 B2
7506034 Coates et al. Mar 2009 B2
7519720 Fishman et al. Apr 2009 B2
7519726 Palliyil et al. Apr 2009 B2
7523181 Swildens et al. Apr 2009 B2
7543024 Holstege Jun 2009 B2
7548947 Kasriel et al. Jun 2009 B2
7552235 Chase et al. Jun 2009 B2
7555542 Ayers et al. Jun 2009 B1
7561571 Lovett et al. Jul 2009 B1
7565407 Hayball Jul 2009 B1
7568032 Feng et al. Jul 2009 B2
7573916 Bechtolsheim et al. Aug 2009 B1
7574499 Swildens et al. Aug 2009 B1
7581009 Hsu et al. Aug 2009 B1
7594189 Walker et al. Sep 2009 B1
7596619 Leighton et al. Sep 2009 B2
7617222 Coulthard et al. Nov 2009 B2
7623460 Miyazaki Nov 2009 B2
7624169 Lisiecki et al. Nov 2009 B2
7631101 Sullivan et al. Dec 2009 B2
7640296 Fuchs et al. Dec 2009 B2
7650376 Blumenau Jan 2010 B1
7653700 Bahl et al. Jan 2010 B1
7653725 Yahiro et al. Jan 2010 B2
7657613 Hanson et al. Feb 2010 B1
7657622 Douglis et al. Feb 2010 B1
7661027 Langen et al. Feb 2010 B2
7664831 Cartmell et al. Feb 2010 B2
7664879 Chan et al. Feb 2010 B2
7676570 Levy et al. Mar 2010 B2
7680897 Carter et al. Mar 2010 B1
7684394 Cutbill Mar 2010 B1
7685251 Houlihan et al. Mar 2010 B2
7693813 Cao et al. Apr 2010 B1
7693959 Leighton et al. Apr 2010 B2
7702724 Brydon et al. Apr 2010 B1
7706740 Collins et al. Apr 2010 B2
7707071 Rigole Apr 2010 B2
7707173 Nanavati et al. Apr 2010 B2
7707314 McCarthy et al. Apr 2010 B2
7711647 Gunaseelan et al. May 2010 B2
7711788 Lev Ran et al. May 2010 B2
7716367 Leighton et al. May 2010 B1
7725602 Liu et al. May 2010 B2
7730187 Raciborski et al. Jun 2010 B2
7739400 Lindbo et al. Jun 2010 B2
7747720 Toebes et al. Jun 2010 B2
7756913 Day Jul 2010 B1
7756965 Joshi Jul 2010 B2
7757202 Dahlsted et al. Jul 2010 B2
7761572 Auerbach Jul 2010 B1
7765304 Davis et al. Jul 2010 B2
7769823 Jenny et al. Aug 2010 B2
7773596 Marques Aug 2010 B1
7774342 Virdy Aug 2010 B1
7783727 Foley et al. Aug 2010 B1
7787380 Aggarwal et al. Aug 2010 B1
7792989 Toebes et al. Sep 2010 B2
7805516 Kettler et al. Sep 2010 B2
7809597 Das et al. Oct 2010 B2
7813308 Reddy et al. Oct 2010 B2
7814229 Cabrera et al. Oct 2010 B1
7818454 Kim et al. Oct 2010 B2
7827256 Phillips et al. Nov 2010 B2
7836177 Kasriel et al. Nov 2010 B2
7853719 Cao et al. Dec 2010 B1
7865594 Baumback et al. Jan 2011 B1
7865953 Hsieh et al. Jan 2011 B1
7873065 Mukerji et al. Jan 2011 B1
7890612 Todd et al. Feb 2011 B2
7899899 Joshi Mar 2011 B2
7904875 Hegyi Mar 2011 B2
7912921 O'Rourke et al. Mar 2011 B2
7925782 Sivasubramanian et al. Apr 2011 B2
7930393 Baumback et al. Apr 2011 B1
7930402 Swildens et al. Apr 2011 B2
7930427 Josefsberg et al. Apr 2011 B2
7933988 Nasuto et al. Apr 2011 B2
7937456 McGrath May 2011 B2
7937477 Day et al. May 2011 B1
7945693 Farber et al. May 2011 B2
7949779 Farber et al. May 2011 B2
7958222 Pruitt et al. Jun 2011 B1
7958258 Yeung et al. Jun 2011 B2
7961736 Ayyagari Jun 2011 B2
7962597 Richardson et al. Jun 2011 B2
7966404 Hedin et al. Jun 2011 B2
7970816 Chess et al. Jun 2011 B2
7970940 van de Ven et al. Jun 2011 B1
7979509 Malmskog et al. Jul 2011 B1
7991910 Richardson et al. Aug 2011 B2
7996533 Leighton et al. Aug 2011 B2
7996535 Auerbach Aug 2011 B2
8000724 Rayburn et al. Aug 2011 B1
8001187 Stochosky Aug 2011 B2
8010707 Elzur et al. Aug 2011 B2
8019869 Kriegsman Sep 2011 B2
8024441 Kommula et al. Sep 2011 B2
8028090 Richardson et al. Sep 2011 B2
8041773 Abu-Ghazaleh et al. Oct 2011 B2
8041809 Sundaram et al. Oct 2011 B2
8041818 Gupta et al. Oct 2011 B2
8042054 White et al. Oct 2011 B2
8051166 Baumback et al. Nov 2011 B1
8065275 Eriksen et al. Nov 2011 B2
8069231 Schran et al. Nov 2011 B2
8073940 Richardson et al. Dec 2011 B1
8082348 Averbuj et al. Dec 2011 B1
8108623 Krishnaprasad et al. Jan 2012 B2
8117306 Baumback et al. Feb 2012 B1
8122098 Richardson et al. Feb 2012 B1
8122124 Baumback et al. Feb 2012 B1
8132242 Wu Mar 2012 B1
8135820 Richardson et al. Mar 2012 B2
8156199 Hoche-Mong et al. Apr 2012 B1
8156243 Richardson et al. Apr 2012 B2
8175863 Ostermeyer et al. May 2012 B1
8190682 Paterson-Jones et al. May 2012 B2
8195837 McCarthy et al. Jun 2012 B2
8224971 Miller Jul 2012 B1
8224986 Liskov et al. Jul 2012 B1
8224994 Schneider Jul 2012 B1
8234403 Richardson et al. Jul 2012 B2
8239530 Sundaram et al. Aug 2012 B2
8250135 Driesen et al. Aug 2012 B2
8250211 Swildens et al. Aug 2012 B2
8250219 Raciborski et al. Aug 2012 B2
8266288 Banerjee et al. Sep 2012 B2
8266327 Kumar et al. Sep 2012 B2
8271471 Kamvar et al. Sep 2012 B1
8280998 Joshi Oct 2012 B2
8281035 Farber et al. Oct 2012 B2
8286176 Baumback et al. Oct 2012 B1
8291046 Farber et al. Oct 2012 B2
8291117 Eggleston et al. Oct 2012 B1
8296393 Alexander et al. Oct 2012 B2
8296429 Baumback et al. Oct 2012 B2
8301645 Crook Oct 2012 B1
8321568 Sivasubramanian et al. Nov 2012 B2
8331370 Hamilton et al. Dec 2012 B2
8380831 Barber Feb 2013 B2
8402137 Sivasuramanian et al. Mar 2013 B2
8423408 Barnes et al. Apr 2013 B1
8433749 Wee et al. Apr 2013 B2
8447831 Sivasubramanian et al. May 2013 B1
8447876 Verma et al. May 2013 B2
8452745 Ramakrishna May 2013 B2
8452874 MacCarthaigh et al. May 2013 B2
8463877 Richardson Jun 2013 B1
8468222 Sakata et al. Jun 2013 B2
8468245 Farber et al. Jun 2013 B2
8473613 Farber et al. Jun 2013 B2
8478903 Farber et al. Jul 2013 B2
8504721 Hsu et al. Aug 2013 B2
8510428 Joshi Aug 2013 B2
8510807 Elazary et al. Aug 2013 B1
8521851 Richardson et al. Aug 2013 B1
8521880 Richardson et al. Aug 2013 B1
8521908 Holmes et al. Aug 2013 B2
8526405 Curtis et al. Sep 2013 B2
8527639 Liskov et al. Sep 2013 B1
8527658 Holmes et al. Sep 2013 B2
8549646 Stavrou Oct 2013 B2
8572208 Farber et al. Oct 2013 B2
8572210 Farber et al. Oct 2013 B2
8577992 Richardson et al. Nov 2013 B1
8589996 Ma et al. Nov 2013 B2
8606996 Richardson et al. Dec 2013 B2
8612565 Schneider Dec 2013 B2
8615549 Knowles et al. Dec 2013 B2
8626950 Richardson et al. Jan 2014 B1
8635340 Schneider Jan 2014 B1
8639817 Sivasubramanian et al. Jan 2014 B2
8645539 McCarthy et al. Feb 2014 B2
8676918 Richardson et al. Mar 2014 B2
8683023 Brandwine Mar 2014 B1
8683076 Farber et al. Mar 2014 B2
8688837 Richardson et al. Apr 2014 B1
8712950 Smith et al. Apr 2014 B2
8732309 Richardson et al. May 2014 B1
8745177 Kazerani et al. Jun 2014 B1
8756322 Lynch Jun 2014 B1
8756325 Sivasubramanian et al. Jun 2014 B2
8756341 Richardson et al. Jun 2014 B1
8782236 Marshall et al. Jul 2014 B1
8782279 Eggleston et al. Jul 2014 B2
8819283 Richardson et al. Aug 2014 B2
8902897 Hamilton et al. Dec 2014 B2
8904009 Marshall et al. Dec 2014 B1
8914514 Jenkins et al. Dec 2014 B1
8924528 Richardson et al. Dec 2014 B1
8930513 Richardson et al. Jan 2015 B1
8930544 Richardson et al. Jan 2015 B2
8938526 Richardson et al. Jan 2015 B1
8949459 Scholl Feb 2015 B1
8966318 Shah Feb 2015 B1
8971328 Judge et al. Mar 2015 B2
9003035 Richardson et al. Apr 2015 B1
9009286 Sivasubramanian et al. Apr 2015 B2
9009334 Jenkins et al. Apr 2015 B1
9021127 Richardson et al. Apr 2015 B2
9021128 Sivasubramanian et al. Apr 2015 B2
9021129 Richardson et al. Apr 2015 B2
9026616 Sivasubramanian et al. May 2015 B2
9037975 Taylor et al. May 2015 B1
9071502 Baumback et al. Jun 2015 B2
9075893 Jenkins Jul 2015 B1
9083675 Richardson et al. Jul 2015 B2
9083743 Patel et al. Jul 2015 B1
9106701 Richardson et al. Aug 2015 B2
9116803 Agrawal et al. Aug 2015 B1
9130756 Richardson et al. Sep 2015 B2
9130977 Zisapel et al. Sep 2015 B2
9137302 Makhijani et al. Sep 2015 B1
9154551 Watson Oct 2015 B1
9160703 Richardson et al. Oct 2015 B2
9172674 Patel et al. Oct 2015 B1
9176894 Marshall et al. Nov 2015 B2
9185012 Richardson et al. Nov 2015 B2
9191338 Richardson et al. Nov 2015 B2
9191458 Richardson et al. Nov 2015 B2
9195996 Walsh et al. Nov 2015 B1
9208097 Richardson et al. Dec 2015 B2
9210099 Baumback et al. Dec 2015 B2
9210235 Sivasubramanian et al. Dec 2015 B2
9237087 Risbood Jan 2016 B1
9237114 Richardson et al. Jan 2016 B2
9240954 Ellsworth et al. Jan 2016 B1
9246776 Ellsworth et al. Jan 2016 B2
9251112 Richardson et al. Feb 2016 B2
9253065 Richardson et al. Feb 2016 B2
9282032 Judge et al. Mar 2016 B2
9294391 Mostert Mar 2016 B1
9323577 Marr et al. Apr 2016 B2
9332078 Sivasubramanian et al. May 2016 B2
9386038 Martini Jul 2016 B2
9391949 Richardson et al. Jul 2016 B1
9407681 Richardson et al. Aug 2016 B1
9407699 Sivasubramanian et al. Aug 2016 B2
9444759 Richardson et al. Sep 2016 B2
9479476 Richardson et al. Oct 2016 B2
9495338 Hollis et al. Nov 2016 B1
9497259 Richardson et al. Nov 2016 B1
9515949 Richardson et al. Dec 2016 B2
9525659 Sonkin et al. Dec 2016 B1
9544394 Richardson et al. Jan 2017 B2
9571389 Richardson et al. Feb 2017 B2
9590946 Richardson et al. Mar 2017 B2
9608957 Sivasubramanian et al. Mar 2017 B2
9621660 Sivasubramanian et al. Apr 2017 B2
9628554 Marshall et al. Apr 2017 B2
9705922 Foxhoven et al. Jul 2017 B2
9712325 Richardson et al. Jul 2017 B2
9712484 Richardson et al. Jul 2017 B1
9734472 Richardson et al. Aug 2017 B2
9742795 Radlein et al. Aug 2017 B1
20010000811 May et al. May 2001 A1
20010025305 Yoshiasa et al. Sep 2001 A1
20010032133 Moran Oct 2001 A1
20010034704 Farhat et al. Oct 2001 A1
20010049741 Skene et al. Dec 2001 A1
20010052016 Skene et al. Dec 2001 A1
20010056416 Garcia-Luna-Aceves Dec 2001 A1
20010056500 Farber et al. Dec 2001 A1
20020002613 Freeman et al. Jan 2002 A1
20020004846 Garcia-Luna-Aceves et al. Jan 2002 A1
20020007413 Garcia-Luna-Aceves et al. Jan 2002 A1
20020010783 Primak et al. Jan 2002 A1
20020010798 Ben-Shaul et al. Jan 2002 A1
20020035624 Kim Mar 2002 A1
20020048269 Hong et al. Apr 2002 A1
20020049608 Hartsell et al. Apr 2002 A1
20020049857 Farber et al. Apr 2002 A1
20020052942 Swildens et al. May 2002 A1
20020062372 Hong et al. May 2002 A1
20020068554 Dusse Jun 2002 A1
20020069420 Russell et al. Jun 2002 A1
20020078233 Biliris et al. Jun 2002 A1
20020082858 Heddaya et al. Jun 2002 A1
20020083118 Sim Jun 2002 A1
20020083148 Shaw et al. Jun 2002 A1
20020083178 Brothers Jun 2002 A1
20020087374 Boubez et al. Jul 2002 A1
20020091786 Yamaguchi et al. Jul 2002 A1
20020091801 Lewin Jul 2002 A1
20020092026 Janniello et al. Jul 2002 A1
20020099616 Sweldens Jul 2002 A1
20020099850 Farber et al. Jul 2002 A1
20020101836 Dorenbosch Aug 2002 A1
20020103820 Cartmell et al. Aug 2002 A1
20020103972 Satran et al. Aug 2002 A1
20020107944 Bai et al. Aug 2002 A1
20020112049 Elnozahy et al. Aug 2002 A1
20020116481 Lee Aug 2002 A1
20020116491 Boyd et al. Aug 2002 A1
20020116582 Copeland et al. Aug 2002 A1
20020120666 Landsman et al. Aug 2002 A1
20020120782 Dillon et al. Aug 2002 A1
20020124047 Gartner et al. Sep 2002 A1
20020124098 Shaw Sep 2002 A1
20020129123 Johnson et al. Sep 2002 A1
20020131428 Pecus et al. Sep 2002 A1
20020133741 Maeda et al. Sep 2002 A1
20020135611 Deosaran et al. Sep 2002 A1
20020138286 Engstrom Sep 2002 A1
20020138437 Lewin et al. Sep 2002 A1
20020138443 Schran et al. Sep 2002 A1
20020143675 Orshan Oct 2002 A1
20020143989 Huitema et al. Oct 2002 A1
20020145993 Chowdhury et al. Oct 2002 A1
20020147770 Tang Oct 2002 A1
20020147774 Lisiecki et al. Oct 2002 A1
20020150094 Cheng et al. Oct 2002 A1
20020150276 Chang Oct 2002 A1
20020152326 Orshan Oct 2002 A1
20020154157 Sherr et al. Oct 2002 A1
20020156884 Bertram et al. Oct 2002 A1
20020156911 Croman et al. Oct 2002 A1
20020161745 Call Oct 2002 A1
20020161767 Shapiro et al. Oct 2002 A1
20020163882 Bornstein et al. Nov 2002 A1
20020165912 Wenocur et al. Nov 2002 A1
20020169890 Beaumont et al. Nov 2002 A1
20020184368 Wang Dec 2002 A1
20020188722 Banerjee et al. Dec 2002 A1
20020194324 Guha Dec 2002 A1
20020194382 Kausik et al. Dec 2002 A1
20020198953 O'Rourke et al. Dec 2002 A1
20030002484 Freedman Jan 2003 A1
20030005111 Allan Jan 2003 A1
20030007482 Khello et al. Jan 2003 A1
20030009488 Hart, III Jan 2003 A1
20030009591 Hayball et al. Jan 2003 A1
20030026410 Lumsden Feb 2003 A1
20030028642 Agarwal et al. Feb 2003 A1
20030033283 Evans et al. Feb 2003 A1
20030037108 Peiffer et al. Feb 2003 A1
20030037139 Shteyn Feb 2003 A1
20030041094 Lara et al. Feb 2003 A1
20030046343 Krishnamurthy et al. Mar 2003 A1
20030065739 Shnier Apr 2003 A1
20030074401 Connell et al. Apr 2003 A1
20030074471 Anderson et al. Apr 2003 A1
20030074472 Lucco et al. Apr 2003 A1
20030079027 Slocombe et al. Apr 2003 A1
20030093523 Cranor et al. May 2003 A1
20030099202 Lear et al. May 2003 A1
20030099237 Mitra et al. May 2003 A1
20030101278 Garcia-Luna-Aceves et al. May 2003 A1
20030112792 Cranor et al. Jun 2003 A1
20030120741 Wu et al. Jun 2003 A1
20030133554 Nykanen et al. Jul 2003 A1
20030135467 Okamoto Jul 2003 A1
20030135509 Davis et al. Jul 2003 A1
20030140087 Lincoln et al. Jul 2003 A1
20030145038 Tariq et al. Jul 2003 A1
20030145066 Okada et al. Jul 2003 A1
20030149581 Chaudhri et al. Aug 2003 A1
20030154239 Davis et al. Aug 2003 A1
20030154284 Bernardin et al. Aug 2003 A1
20030163722 Anderson, IV Aug 2003 A1
20030172145 Nguyen Sep 2003 A1
20030172183 Anderson, IV et al. Sep 2003 A1
20030172291 Judge et al. Sep 2003 A1
20030174648 Wang et al. Sep 2003 A1
20030182305 Balva et al. Sep 2003 A1
20030182413 Allen et al. Sep 2003 A1
20030182447 Schilling Sep 2003 A1
20030187935 Agarwalla et al. Oct 2003 A1
20030187970 Chase et al. Oct 2003 A1
20030191822 Leighton et al. Oct 2003 A1
20030200394 Ashmore et al. Oct 2003 A1
20030204602 Hudson et al. Oct 2003 A1
20030229682 Day Dec 2003 A1
20030233423 Dilley et al. Dec 2003 A1
20030233445 Levy et al. Dec 2003 A1
20030233455 Leber et al. Dec 2003 A1
20030236700 Arning et al. Dec 2003 A1
20030236779 Choi et al. Dec 2003 A1
20040003032 Ma et al. Jan 2004 A1
20040010563 Forte et al. Jan 2004 A1
20040010588 Slater et al. Jan 2004 A1
20040010621 Afergan et al. Jan 2004 A1
20040015584 Cartmell et al. Jan 2004 A1
20040019518 Abraham et al. Jan 2004 A1
20040024841 Becker et al. Feb 2004 A1
20040030620 Benjamin et al. Feb 2004 A1
20040034744 Karlsson et al. Feb 2004 A1
20040039798 Hotz et al. Feb 2004 A1
20040044731 Chen et al. Mar 2004 A1
20040044791 Pouzzner Mar 2004 A1
20040049579 Ims et al. Mar 2004 A1
20040054757 Ueda et al. Mar 2004 A1
20040059805 Dinker et al. Mar 2004 A1
20040064335 Yang Apr 2004 A1
20040064501 Jan et al. Apr 2004 A1
20040068542 Lalonde et al. Apr 2004 A1
20040073596 Kloninger et al. Apr 2004 A1
20040073707 Dillon Apr 2004 A1
20040073867 Kausik et al. Apr 2004 A1
20040078468 Hedin et al. Apr 2004 A1
20040078487 Cernohous et al. Apr 2004 A1
20040083283 Sundaram et al. Apr 2004 A1
20040083307 Uysal Apr 2004 A1
20040117455 Kaminksy et al. Jun 2004 A1
20040128344 Trossen Jul 2004 A1
20040128346 Melamed et al. Jul 2004 A1
20040148520 Talpade et al. Jul 2004 A1
20040167981 Douglas et al. Aug 2004 A1
20040167982 Cohen et al. Aug 2004 A1
20040172466 Douglas et al. Sep 2004 A1
20040194085 Beaubien et al. Sep 2004 A1
20040194102 Neerdaels Sep 2004 A1
20040203630 Wang Oct 2004 A1
20040205149 Dillon et al. Oct 2004 A1
20040205162 Parikh Oct 2004 A1
20040215823 Kleinfelter et al. Oct 2004 A1
20040221019 Swildens et al. Nov 2004 A1
20040221034 Kausik et al. Nov 2004 A1
20040246948 Lee et al. Dec 2004 A1
20040249939 Amini et al. Dec 2004 A1
20040249971 Klinker Dec 2004 A1
20040249975 Tuck et al. Dec 2004 A1
20040250119 Shelest et al. Dec 2004 A1
20040254921 Cohen et al. Dec 2004 A1
20040267906 Truty Dec 2004 A1
20040267907 Gustafsson Dec 2004 A1
20050010653 McCanne Jan 2005 A1
20050021706 Maggi et al. Jan 2005 A1
20050021862 Schroeder et al. Jan 2005 A1
20050027882 Sullivan et al. Feb 2005 A1
20050038967 Umbehocker et al. Feb 2005 A1
20050044270 Grove et al. Feb 2005 A1
20050086645 Diao et al. Apr 2005 A1
20050102683 Branson et al. May 2005 A1
20050108169 Balasubramanian et al. May 2005 A1
20050108529 Juneau May 2005 A1
20050114296 Farber et al. May 2005 A1
20050117717 Lumsden Jun 2005 A1
20050132083 Raciborski et al. Jun 2005 A1
20050147088 Bao et al. Jul 2005 A1
20050157712 Rangarajan et al. Jul 2005 A1
20050160133 Greenlee et al. Jul 2005 A1
20050163168 Sheth et al. Jul 2005 A1
20050168782 Kobashi et al. Aug 2005 A1
20050171959 Deforche et al. Aug 2005 A1
20050181769 Kogawa Aug 2005 A1
20050188073 Nakamichi et al. Aug 2005 A1
20050192008 Desai et al. Sep 2005 A1
20050198170 LeMay et al. Sep 2005 A1
20050198334 Farber et al. Sep 2005 A1
20050198571 Kramer et al. Sep 2005 A1
20050216483 Armstrong Sep 2005 A1
20050216569 Coppola et al. Sep 2005 A1
20050216674 Robbin et al. Sep 2005 A1
20050223095 Volz Oct 2005 A1
20050228856 Swildens et al. Oct 2005 A1
20050229119 Torvinen Oct 2005 A1
20050232165 Brawn et al. Oct 2005 A1
20050234864 Shapiro Oct 2005 A1
20050240574 Challenger et al. Oct 2005 A1
20050256880 Koong et al. Nov 2005 A1
20050259645 Chen et al. Nov 2005 A1
20050259672 Eduri Nov 2005 A1
20050262248 Jennings, III et al. Nov 2005 A1
20050266835 Agrawal et al. Dec 2005 A1
20050267937 Daniels et al. Dec 2005 A1
20050267991 Huitema et al. Dec 2005 A1
20050267992 Huitema et al. Dec 2005 A1
20050267993 Huitema et al. Dec 2005 A1
20050278259 Gunaseelan et al. Dec 2005 A1
20050283759 Peteanu et al. Dec 2005 A1
20050283784 Suzuki Dec 2005 A1
20060013158 Ahuja et al. Jan 2006 A1
20060020596 Liu et al. Jan 2006 A1
20060020684 Mukherjee et al. Jan 2006 A1
20060020714 Girouard et al. Jan 2006 A1
20060020715 Jungck Jan 2006 A1
20060021001 Giles et al. Jan 2006 A1
20060026067 Nicholas et al. Feb 2006 A1
20060026154 Altinel et al. Feb 2006 A1
20060031239 Koenig Feb 2006 A1
20060031319 Nelson et al. Feb 2006 A1
20060031503 Gilbert Feb 2006 A1
20060034494 Holloran Feb 2006 A1
20060036720 Faulk, Jr. Feb 2006 A1
20060036966 Yevdayev Feb 2006 A1
20060037037 Miranz Feb 2006 A1
20060039352 Karstens Feb 2006 A1
20060041614 Oe Feb 2006 A1
20060047787 Aggarwal et al. Mar 2006 A1
20060047813 Aggarwal et al. Mar 2006 A1
20060059246 Grove Mar 2006 A1
20060063534 Kokkonen et al. Mar 2006 A1
20060064476 Decasper et al. Mar 2006 A1
20060064500 Roth et al. Mar 2006 A1
20060070060 Tantawi et al. Mar 2006 A1
20060074750 Clark et al. Apr 2006 A1
20060075084 Lyon Apr 2006 A1
20060075139 Jungck Apr 2006 A1
20060083165 McLane et al. Apr 2006 A1
20060085536 Meyer et al. Apr 2006 A1
20060088026 Mazur et al. Apr 2006 A1
20060112066 Hamzy May 2006 A1
20060112176 Liu et al. May 2006 A1
20060120385 Atchison et al. Jun 2006 A1
20060129665 Toebes et al. Jun 2006 A1
20060136453 Kwan Jun 2006 A1
20060143293 Freedman Jun 2006 A1
20060146820 Friedman et al. Jul 2006 A1
20060149529 Nguyen et al. Jul 2006 A1
20060155823 Tran et al. Jul 2006 A1
20060155862 Kathi et al. Jul 2006 A1
20060161541 Cencini Jul 2006 A1
20060165051 Banerjee et al. Jul 2006 A1
20060168088 Leighton et al. Jul 2006 A1
20060173957 Robinson Aug 2006 A1
20060179080 Meek et al. Aug 2006 A1
20060184936 Abels et al. Aug 2006 A1
20060190605 Franz et al. Aug 2006 A1
20060193247 Naseh et al. Aug 2006 A1
20060195866 Thukral Aug 2006 A1
20060206568 Verma et al. Sep 2006 A1
20060206586 Ling et al. Sep 2006 A1
20060209701 Zhang et al. Sep 2006 A1
20060218265 Farber et al. Sep 2006 A1
20060218304 Mukherjee et al. Sep 2006 A1
20060224752 Parekh et al. Oct 2006 A1
20060227740 McLaughlin et al. Oct 2006 A1
20060227758 Rana et al. Oct 2006 A1
20060230137 Gare et al. Oct 2006 A1
20060230265 Krishna Oct 2006 A1
20060233155 Srivastava Oct 2006 A1
20060253546 Chang et al. Nov 2006 A1
20060253609 Andreev et al. Nov 2006 A1
20060259581 Piersol Nov 2006 A1
20060259690 Vittal et al. Nov 2006 A1
20060259984 Juneau Nov 2006 A1
20060265497 Ohata et al. Nov 2006 A1
20060265508 Angel et al. Nov 2006 A1
20060265516 Schilling Nov 2006 A1
20060265720 Cai et al. Nov 2006 A1
20060271641 Stavrakos et al. Nov 2006 A1
20060282522 Lewin et al. Dec 2006 A1
20060288119 Kim et al. Dec 2006 A1
20070005689 Leighton et al. Jan 2007 A1
20070005801 Kumar et al. Jan 2007 A1
20070005892 Mullender et al. Jan 2007 A1
20070011267 Overton et al. Jan 2007 A1
20070014241 Banerjee et al. Jan 2007 A1
20070021998 Laithwaite et al. Jan 2007 A1
20070028001 Phillips et al. Feb 2007 A1
20070038729 Sullivan et al. Feb 2007 A1
20070038994 Davis et al. Feb 2007 A1
20070041393 Westhead et al. Feb 2007 A1
20070043859 Ruul Feb 2007 A1
20070050522 Grove et al. Mar 2007 A1
20070050703 Lebel Mar 2007 A1
20070055764 Dilley et al. Mar 2007 A1
20070061440 Sundaram et al. Mar 2007 A1
20070064610 Khandani Mar 2007 A1
20070076872 Juneau Apr 2007 A1
20070086429 Lawrence et al. Apr 2007 A1
20070094361 Hoynowski et al. Apr 2007 A1
20070101061 Baskaran et al. May 2007 A1
20070101377 Six et al. May 2007 A1
20070118667 McCarthy et al. May 2007 A1
20070118668 McCarthy et al. May 2007 A1
20070134641 Lieu Jun 2007 A1
20070156919 Potti et al. Jul 2007 A1
20070162331 Sullivan Jul 2007 A1
20070168517 Weller Jul 2007 A1
20070174426 Swildens et al. Jul 2007 A1
20070174442 Sherman et al. Jul 2007 A1
20070174490 Choi et al. Jul 2007 A1
20070183342 Wong et al. Aug 2007 A1
20070198982 Bolan et al. Aug 2007 A1
20070204107 Greenfield et al. Aug 2007 A1
20070208737 Li et al. Sep 2007 A1
20070219795 Park et al. Sep 2007 A1
20070220010 Ertugrul Sep 2007 A1
20070233705 Farber et al. Oct 2007 A1
20070233706 Farber et al. Oct 2007 A1
20070233846 Farber et al. Oct 2007 A1
20070233884 Farber et al. Oct 2007 A1
20070243860 Aiello et al. Oct 2007 A1
20070244964 Challenger et al. Oct 2007 A1
20070245010 Arn et al. Oct 2007 A1
20070245022 Olliphant et al. Oct 2007 A1
20070250467 Mesnik et al. Oct 2007 A1
20070250560 Wein et al. Oct 2007 A1
20070250601 Amlekar et al. Oct 2007 A1
20070250611 Bhogal et al. Oct 2007 A1
20070253377 Janneteau et al. Nov 2007 A1
20070255843 Zubev Nov 2007 A1
20070263604 Tal Nov 2007 A1
20070266113 Koopmans et al. Nov 2007 A1
20070266311 Westphal Nov 2007 A1
20070266333 Cossey et al. Nov 2007 A1
20070270165 Poosala Nov 2007 A1
20070271375 Hwang Nov 2007 A1
20070271385 Davis et al. Nov 2007 A1
20070271560 Wahlert et al. Nov 2007 A1
20070271608 Shimizu et al. Nov 2007 A1
20070280229 Kenney Dec 2007 A1
20070288588 Wein et al. Dec 2007 A1
20070291739 Sullivan et al. Dec 2007 A1
20080005057 Ozzie et al. Jan 2008 A1
20080008089 Bornstein et al. Jan 2008 A1
20080016233 Schneider Jan 2008 A1
20080025304 Venkataswami et al. Jan 2008 A1
20080037536 Padmanabhan et al. Feb 2008 A1
20080046550 Mazur et al. Feb 2008 A1
20080046596 Afergan et al. Feb 2008 A1
20080056207 Eriksson et al. Mar 2008 A1
20080065724 Seed et al. Mar 2008 A1
20080065745 Leighton et al. Mar 2008 A1
20080071859 Seed et al. Mar 2008 A1
20080071987 Karn et al. Mar 2008 A1
20080072264 Crayford Mar 2008 A1
20080082551 Farber et al. Apr 2008 A1
20080082662 Dandliker et al. Apr 2008 A1
20080086434 Chesla Apr 2008 A1
20080086559 Davis et al. Apr 2008 A1
20080086574 Raciborski et al. Apr 2008 A1
20080092242 Rowley Apr 2008 A1
20080101358 Van Ewijk et al. May 2008 A1
20080103805 Shear et al. May 2008 A1
20080104268 Farber et al. May 2008 A1
20080114829 Button et al. May 2008 A1
20080125077 Velazquez et al. May 2008 A1
20080126706 Newport et al. May 2008 A1
20080134043 Georgis et al. Jun 2008 A1
20080140800 Farber et al. Jun 2008 A1
20080147866 Stolorz et al. Jun 2008 A1
20080147873 Matsumoto Jun 2008 A1
20080155059 Hardin et al. Jun 2008 A1
20080155061 Afergan et al. Jun 2008 A1
20080155613 Benya et al. Jun 2008 A1
20080155614 Cooper et al. Jun 2008 A1
20080162667 Verma et al. Jul 2008 A1
20080162821 Duran et al. Jul 2008 A1
20080162843 Davis et al. Jul 2008 A1
20080172488 Jawahar et al. Jul 2008 A1
20080183721 Bhogal et al. Jul 2008 A1
20080189437 Halley Aug 2008 A1
20080201332 Souders et al. Aug 2008 A1
20080215718 Stolorz et al. Sep 2008 A1
20080215730 Sundaram et al. Sep 2008 A1
20080215735 Farber et al. Sep 2008 A1
20080215747 Menon et al. Sep 2008 A1
20080215750 Farber et al. Sep 2008 A1
20080215755 Farber et al. Sep 2008 A1
20080222281 Dilley et al. Sep 2008 A1
20080222291 Weller et al. Sep 2008 A1
20080222295 Robinson et al. Sep 2008 A1
20080228574 Stewart et al. Sep 2008 A1
20080228920 Souders et al. Sep 2008 A1
20080235400 Slocombe et al. Sep 2008 A1
20080256175 Lee et al. Oct 2008 A1
20080263135 Olliphant Oct 2008 A1
20080275772 Suryanarayana et al. Nov 2008 A1
20080281946 Swildens et al. Nov 2008 A1
20080281950 Wald et al. Nov 2008 A1
20080288722 Lecoq et al. Nov 2008 A1
20080301670 Gouge et al. Dec 2008 A1
20080312766 Couckuyt Dec 2008 A1
20080319862 Golan et al. Dec 2008 A1
20080320123 Houlihan et al. Dec 2008 A1
20080320269 Houlihan et al. Dec 2008 A1
20090013063 Soman Jan 2009 A1
20090016236 Alcala et al. Jan 2009 A1
20090029644 Sue et al. Jan 2009 A1
20090031367 Sue Jan 2009 A1
20090031368 Ling Jan 2009 A1
20090031376 Riley et al. Jan 2009 A1
20090049098 Pickelsimer et al. Feb 2009 A1
20090063038 Shrivathsan et al. Mar 2009 A1
20090063704 Taylor et al. Mar 2009 A1
20090070533 Elazary et al. Mar 2009 A1
20090083228 Shatz et al. Mar 2009 A1
20090083279 Hasek Mar 2009 A1
20090086728 Gulati Apr 2009 A1
20090086741 Zhang Apr 2009 A1
20090089869 Varghese Apr 2009 A1
20090103707 McGary et al. Apr 2009 A1
20090106381 Kasriel et al. Apr 2009 A1
20090112703 Brown Apr 2009 A1
20090125393 Hwang et al. May 2009 A1
20090125934 Jones et al. May 2009 A1
20090132368 Cotter et al. May 2009 A1
20090132648 Swildens et al. May 2009 A1
20090138533 Iwasaki et al. May 2009 A1
20090144411 Winkler et al. Jun 2009 A1
20090144412 Ferguson et al. Jun 2009 A1
20090150926 Schlack Jun 2009 A1
20090157850 Gagliardi et al. Jun 2009 A1
20090158163 Stephens et al. Jun 2009 A1
20090164331 Bishop et al. Jun 2009 A1
20090164614 Christian et al. Jun 2009 A1
20090177667 Ramos et al. Jul 2009 A1
20090182815 Czechowski et al. Jul 2009 A1
20090182837 Rogers Jul 2009 A1
20090182945 Aviles et al. Jul 2009 A1
20090187575 DaCosta Jul 2009 A1
20090198817 Sundaram et al. Aug 2009 A1
20090204682 Jeyaseelan et al. Aug 2009 A1
20090210549 Hudson et al. Aug 2009 A1
20090233623 Johnson Sep 2009 A1
20090241167 Moore Sep 2009 A1
20090248697 Richardson et al. Oct 2009 A1
20090248786 Richardson et al. Oct 2009 A1
20090248787 Sivasubramanian et al. Oct 2009 A1
20090248852 Fuhrmann et al. Oct 2009 A1
20090248858 Sivasubramanian et al. Oct 2009 A1
20090248893 Richardson et al. Oct 2009 A1
20090249222 Schmidt et al. Oct 2009 A1
20090253435 Olofsson Oct 2009 A1
20090254661 Fullagar et al. Oct 2009 A1
20090259588 Lindsay Oct 2009 A1
20090259971 Rankine et al. Oct 2009 A1
20090262741 Jungck et al. Oct 2009 A1
20090271498 Cable Oct 2009 A1
20090271577 Campana et al. Oct 2009 A1
20090271730 Rose et al. Oct 2009 A1
20090276771 Nickolov et al. Nov 2009 A1
20090279444 Ravindran et al. Nov 2009 A1
20090282038 Subotin et al. Nov 2009 A1
20090287750 Banavar et al. Nov 2009 A1
20090307307 Igarashi Dec 2009 A1
20090327489 Swildens et al. Dec 2009 A1
20090327517 Sivasubramanian et al. Dec 2009 A1
20090327914 Adar et al. Dec 2009 A1
20100005175 Swildens et al. Jan 2010 A1
20100011061 Hudson et al. Jan 2010 A1
20100011126 Hsu et al. Jan 2010 A1
20100020699 On Jan 2010 A1
20100023601 Lewin et al. Jan 2010 A1
20100030662 Klein Feb 2010 A1
20100030914 Sparks et al. Feb 2010 A1
20100034470 Valencia-Campo et al. Feb 2010 A1
20100036944 Douglis et al. Feb 2010 A1
20100042725 Jeon et al. Feb 2010 A1
20100057894 Glasser Mar 2010 A1
20100070603 Moss et al. Mar 2010 A1
20100082320 Wood et al. Apr 2010 A1
20100082787 Kommula et al. Apr 2010 A1
20100088367 Brown et al. Apr 2010 A1
20100088405 Huang et al. Apr 2010 A1
20100095008 Joshi Apr 2010 A1
20100100629 Raciborski et al. Apr 2010 A1
20100111059 Bappu et al. May 2010 A1
20100115133 Joshi May 2010 A1
20100115342 Shigeta et al. May 2010 A1
20100121953 Friedman et al. May 2010 A1
20100121981 Drako May 2010 A1
20100122069 Gonion May 2010 A1
20100125626 Lucas et al. May 2010 A1
20100125673 Richardson et al. May 2010 A1
20100125675 Richardson et al. May 2010 A1
20100128638 Navas et al. May 2010 A1
20100131646 Drako May 2010 A1
20100138559 Sullivan et al. Jun 2010 A1
20100150155 Napierala Jun 2010 A1
20100161799 Maloo Jun 2010 A1
20100169392 Lev Ran et al. Jul 2010 A1
20100169452 Atluri et al. Jul 2010 A1
20100174811 Musiri Jul 2010 A1
20100192225 Ma et al. Jul 2010 A1
20100217801 Leighton et al. Aug 2010 A1
20100217856 Falkena Aug 2010 A1
20100223364 Wei Sep 2010 A1
20100226372 Watanabe Sep 2010 A1
20100228819 Wei Sep 2010 A1
20100257024 Holmes et al. Oct 2010 A1
20100257266 Holmes et al. Oct 2010 A1
20100257566 Matila Oct 2010 A1
20100268789 Yoo et al. Oct 2010 A1
20100268814 Cross et al. Oct 2010 A1
20100274765 Murphy et al. Oct 2010 A1
20100281482 Pike et al. Nov 2010 A1
20100293296 Hsu et al. Nov 2010 A1
20100293479 Rousso et al. Nov 2010 A1
20100299427 Joshi Nov 2010 A1
20100299438 Zimmerman et al. Nov 2010 A1
20100299439 McCarthy et al. Nov 2010 A1
20100312861 Kolhi et al. Dec 2010 A1
20100318508 Brawer et al. Dec 2010 A1
20100322255 Hao et al. Dec 2010 A1
20100325365 Colglazier et al. Dec 2010 A1
20100332595 Fullagar et al. Dec 2010 A1
20110010244 Hatridge Jan 2011 A1
20110029598 Arnold et al. Feb 2011 A1
20110040893 Karaoguz et al. Feb 2011 A1
20110055714 Vemulapalli et al. Mar 2011 A1
20110055921 Narayanaswamy et al. Mar 2011 A1
20110058675 Brueck et al. Mar 2011 A1
20110072138 Canturk et al. Mar 2011 A1
20110072366 Spencer Mar 2011 A1
20110078000 Ma et al. Mar 2011 A1
20110078230 Sepulveda Mar 2011 A1
20110085654 Jana et al. Apr 2011 A1
20110087769 Holmes et al. Apr 2011 A1
20110096987 Morales et al. Apr 2011 A1
20110113467 Agarwal et al. May 2011 A1
20110153938 Verzunov et al. Jun 2011 A1
20110153941 Spatscheck et al. Jun 2011 A1
20110154318 Oshins et al. Jun 2011 A1
20110161461 Niven-Jenkins Jun 2011 A1
20110166935 Armentrout et al. Jul 2011 A1
20110182290 Perkins Jul 2011 A1
20110191445 Dazzi Aug 2011 A1
20110191449 Swildens et al. Aug 2011 A1
20110191459 Joshi Aug 2011 A1
20110196892 Xia Aug 2011 A1
20110208876 Richardson et al. Aug 2011 A1
20110208958 Stuedi et al. Aug 2011 A1
20110209064 Jorgensen et al. Aug 2011 A1
20110219120 Farber et al. Sep 2011 A1
20110219372 Agarwal et al. Sep 2011 A1
20110238501 Almeida Sep 2011 A1
20110238793 Bedare et al. Sep 2011 A1
20110239215 Sugai Sep 2011 A1
20110252142 Richardson et al. Oct 2011 A1
20110252143 Baumback et al. Oct 2011 A1
20110258049 Ramer et al. Oct 2011 A1
20110258614 Tamm Oct 2011 A1
20110270964 Huang et al. Nov 2011 A1
20110276623 Girbal Nov 2011 A1
20110296053 Medved et al. Dec 2011 A1
20110302304 Baumback et al. Dec 2011 A1
20110320522 Endres Dec 2011 A1
20110320559 Foti Dec 2011 A1
20120011190 Driesen et al. Jan 2012 A1
20120023090 Holloway et al. Jan 2012 A1
20120036238 Sundaram et al. Feb 2012 A1
20120066360 Ghosh Mar 2012 A1
20120072600 Richardson et al. Mar 2012 A1
20120078998 Son et al. Mar 2012 A1
20120079115 Richardson et al. Mar 2012 A1
20120089972 Scheidel et al. Apr 2012 A1
20120096065 Suit et al. Apr 2012 A1
20120110515 Abramoff et al. May 2012 A1
20120124184 Sakata et al. May 2012 A1
20120131177 Brandt et al. May 2012 A1
20120136697 Peles et al. May 2012 A1
20120159476 Ramteke et al. Jun 2012 A1
20120166516 Simmons et al. Jun 2012 A1
20120169646 Berkes et al. Jul 2012 A1
20120173677 Richardson et al. Jul 2012 A1
20120173760 Jog Jul 2012 A1
20120179817 Bade et al. Jul 2012 A1
20120179839 Raciborski et al. Jul 2012 A1
20120198043 Hesketh et al. Aug 2012 A1
20120198071 Black et al. Aug 2012 A1
20120224516 Stojanovski et al. Sep 2012 A1
20120226649 Kovacs et al. Sep 2012 A1
20120233522 Barton et al. Sep 2012 A1
20120233668 Leafe et al. Sep 2012 A1
20120254961 Kim Oct 2012 A1
20120257628 Bu Oct 2012 A1
20120278831 van Coppenolle et al. Nov 2012 A1
20120303785 Sivasubramanian et al. Nov 2012 A1
20120303804 Sundaram et al. Nov 2012 A1
20120311648 Swildens et al. Dec 2012 A1
20120324089 Joshi Dec 2012 A1
20130003735 Chao et al. Jan 2013 A1
20130007100 Trahan et al. Jan 2013 A1
20130007101 Trahan et al. Jan 2013 A1
20130007102 Trahan et al. Jan 2013 A1
20130007241 Trahan et al. Jan 2013 A1
20130007273 Baumback et al. Jan 2013 A1
20130019311 Swildens et al. Jan 2013 A1
20130034099 Hikichi Feb 2013 A1
20130041872 Aizman et al. Feb 2013 A1
20130046869 Jenkins et al. Feb 2013 A1
20130054675 Jenkins et al. Feb 2013 A1
20130055374 Kustarz et al. Feb 2013 A1
20130067530 Spektor Mar 2013 A1
20130080420 Taylor et al. Mar 2013 A1
20130080421 Taylor et al. Mar 2013 A1
20130080576 Taylor et al. Mar 2013 A1
20130080577 Taylor et al. Mar 2013 A1
20130086001 Bhogal et al. Apr 2013 A1
20130117282 Mugali, Jr. et al. May 2013 A1
20130117849 Golshan et al. May 2013 A1
20130130221 Kortemeyer et al. May 2013 A1
20130133057 Yoon May 2013 A1
20130151646 Chidambaram et al. Jun 2013 A1
20130198341 Kim Aug 2013 A1
20130212300 Eggleston et al. Aug 2013 A1
20130227165 Liu Aug 2013 A1
20130246567 Green et al. Sep 2013 A1
20130254269 Sivasubramanian et al. Sep 2013 A1
20130263256 Dickinson et al. Oct 2013 A1
20130268616 Sakata et al. Oct 2013 A1
20130279335 Ahmadi Oct 2013 A1
20130305046 Mankovski et al. Nov 2013 A1
20130311583 Humphreys et al. Nov 2013 A1
20130311605 Richardson et al. Nov 2013 A1
20130311989 Ota et al. Nov 2013 A1
20130318153 Sivasubramanian et al. Nov 2013 A1
20130339429 Richardson et al. Dec 2013 A1
20130346567 Richardson et al. Dec 2013 A1
20140006577 Joe Jan 2014 A1
20140007239 Sharpe et al. Jan 2014 A1
20140019605 Boberg Jan 2014 A1
20140036675 Wang et al. Feb 2014 A1
20140040478 Hsu et al. Feb 2014 A1
20140053022 Forgette et al. Feb 2014 A1
20140059120 Richardson et al. Feb 2014 A1
20140059198 Richardson et al. Feb 2014 A1
20140059379 Ren et al. Feb 2014 A1
20140075109 Richardson et al. Mar 2014 A1
20140089917 Attalla et al. Mar 2014 A1
20140108672 Ou et al. Apr 2014 A1
20140137111 Dees et al. May 2014 A1
20140143320 Sivasubramanian et al. May 2014 A1
20140164817 Bartholomy Jun 2014 A1
20140165061 Greene et al. Jun 2014 A1
20140215019 Ahrens Jul 2014 A1
20140257891 Richardson et al. Sep 2014 A1
20140280679 Dey et al. Sep 2014 A1
20140297870 Eggleston et al. Oct 2014 A1
20140310402 Giaretta et al. Oct 2014 A1
20140310811 Hentunen Oct 2014 A1
20140325155 Marshall et al. Oct 2014 A1
20140331328 Wang et al. Nov 2014 A1
20140337472 Newton et al. Nov 2014 A1
20140365666 Richardson et al. Dec 2014 A1
20150006615 Wainner et al. Jan 2015 A1
20150067171 Yum Mar 2015 A1
20150081842 Richardson et al. Mar 2015 A1
20150089621 Khalid Mar 2015 A1
20150172379 Richardson et al. Jun 2015 A1
20150172407 MacCarthaigh et al. Jun 2015 A1
20150172414 Richardson et al. Jun 2015 A1
20150172415 Richardson et al. Jun 2015 A1
20150180988 Sivasubramanian et al. Jun 2015 A1
20150188734 Petrov Jul 2015 A1
20150188994 Marshall et al. Jul 2015 A1
20150189042 Sun et al. Jul 2015 A1
20150195244 Richardson et al. Jul 2015 A1
20150207733 Richardson et al. Jul 2015 A1
20150215270 Sivasubramanian et al. Jul 2015 A1
20150215656 Pulung et al. Jul 2015 A1
20150229710 Sivasubramanian et al. Aug 2015 A1
20150244580 Saavedra Aug 2015 A1
20150249579 Ellsworth et al. Sep 2015 A1
20150256647 Richardson et al. Sep 2015 A1
20150263927 Baumback et al. Sep 2015 A1
20150288647 Chhabra et al. Oct 2015 A1
20150319194 Richardson et al. Nov 2015 A1
20150319260 Watson Nov 2015 A1
20150334082 Richardson et al. Nov 2015 A1
20160006672 Saavedra Jan 2016 A1
20160021197 Pogrebinsky et al. Jan 2016 A1
20160026568 Marshall et al. Jan 2016 A1
20160028644 Richardson et al. Jan 2016 A1
20160028755 Vasseur et al. Jan 2016 A1
20160036857 Foxhoven et al. Feb 2016 A1
20160041910 Richardson et al. Feb 2016 A1
20160057072 Baumback et al. Feb 2016 A1
20160065665 Richardson et al. Mar 2016 A1
20160072720 Richardson et al. Mar 2016 A1
20160134492 Ellsworth et al. May 2016 A1
20160142367 Richardson et al. May 2016 A1
20160182454 Phonsa et al. Jun 2016 A1
20160182542 Staniford Jun 2016 A1
20160205062 Mosert Jul 2016 A1
20160241637 Marr et al. Aug 2016 A1
20160241639 Brookins et al. Aug 2016 A1
20160241651 Sivasubramanian et al. Aug 2016 A1
20160308959 Richardson et al. Oct 2016 A1
20170041428 Katsev Feb 2017 A1
20170085495 Richardson et al. Mar 2017 A1
20170126557 Richardson et al. May 2017 A1
20170126796 Hollis et al. May 2017 A1
20170142062 Richardson et al. May 2017 A1
20170180217 Puchala et al. Jun 2017 A1
20170180267 Puchala et al. Jun 2017 A1
20170214755 Sivasubramanian et al. Jul 2017 A1
Foreign Referenced Citations (41)
Number Date Country
2741 895 May 2010 CA
1422468 Jun 2003 CN
1511399 Jul 2004 CN
1605182 Apr 2005 CN
101189598 May 2008 CN
101460907 Jun 2009 CN
101473598 Jul 2009 CN
103731481 Apr 2014 CN
1603307 Dec 2005 EP
1351141 Oct 2007 EP
2008167 Dec 2008 EP
3156911 Apr 2017 EP
07-141305 Jun 1995 JP
2001-0506093 May 2001 JP
2001-249907 Sep 2001 JP
2002-024192 Jan 2002 JP
2002-044137 Feb 2002 JP
2002-323986 Nov 2002 JP
2003-167810 Jun 2003 JP
2003-167813 Jun 2003 JP
2003-522358 Jul 2003 JP
2003188901 Jul 2003 JP
2004-070935 Mar 2004 JP
2004-532471 Oct 2004 JP
2004-533738 Nov 2004 JP
2005-537687 Dec 2005 JP
2007-133896 May 2007 JP
2007-207225 Aug 2007 JP
2008-515106 May 2008 JP
2009-071538 Apr 2009 JP
2012-509623 Apr 2012 JP
2012-209623 Oct 2012 JP
WO 2002069608 Sep 2002 WO
WO 2005071560 Aug 2005 WO
WO 2007007960 Jan 2007 WO
WO 2007126837 Nov 2007 WO
WO 2009124006 Oct 2009 WO
WO 2010002603 Jan 2010 WO
WO 2012044587 Apr 2012 WO
WO 2012065641 May 2012 WO
WO 2017106455 Jun 2017 WO
Non-Patent Literature Citations (170)
Entry
Non-Final Office Action dated Jan. 3, 2012, U.S. Appl. No. 12/652,541; Jan. 3, 2012; 35 pages.
Final Office Action dated Sep. 5, 2012, U.S. Appl. No. 12/652,541; Sep. 5, 2012; 40 pages.
Notice of Allowance dated Jan. 4, 2013, U.S. Appl. No. 12/652,541; Jan. 4, 2013; 11 pages.
Non-Final Office Action dated Apr. 30, 2014, U.S. Appl. No. 13/842,970; 20 pages.
Final Office Action dated Aug. 19, 2014, U.S. Appl. No. 13/842,970; 13 pages.
Notice of Allowance dated Dec. 5, 2014, U.S. Appl. No. 13/842,970; 6 pages.
Canonical Name (CNAME) DNS Records, domainavenue.com, Feb. 1, 2001, XP055153783, Retrieved from the Internet: URL:http://www.domainavenue.com/cname.htm [retrieved on Nov. 18, 2014].
“Content delivery network”, Wikipedia, the free encyclopedia, Retrieved from the Internet: URL:http://en.wikipedia.org/w/index.php?title=Contentdelivery network&oldid=601009970, XP055153445, Mar. 24, 2008.
“Global Server Load Balancing with ServerIron,” Foundry Networks, retrieved Aug. 30, 2007, from http://www.foundrynet.com/pdf/an-global-server-load-bal.pdf, 7 pages.
“Grid Computing Solutions,” Sun Microsystems, Inc., retrieved May 3, 2006, from http://www.sun.com/software/grid, 3 pages.
“Grid Offerings,” Java.net, retrieved May 3, 2006, from http://wiki.java.net/bin/view/Sungrid/OtherGridOfferings, 8 pages.
“Recent Advances Boost System Virtualization,” eWeek.com, retrieved from May 3, 2006, http://www.eWeek.com/article2/0,1895,1772626,00.asp, 5 pages.
“Scaleable Trust of Next Generation Management (STRONGMAN),” retrieved May 17, 2006, from http://www.cis.upenn.edu/˜dsl/STRONGMAN/, 4 pages.
“Sun EDA Compute Ranch,” Sun Microsystems, Inc., retrieved May 3, 2006, from http://sun.com/processors/ranch/brochure.pdf, 2 pages.
“Sun Microsystems Accelerates UltraSP ARC Processor Design Program With New Burlington, Mass. Compute Ranch,” Nov. 6, 2002, Sun Microsystems, Inc., retrieved May 3, 2006, from http://www.sun.com/smi/Press/sunflash/2002-11/sunflash.20021106.3 .xml, 2 pages.
“Sun N1 Grid Engine 6,” Sun Microsystems, Inc., retrieved May 3, 2006, from http://www.sun.com/software/gridware/index.xml, 3 pages.
“Sun Opens New Processor Design Compute Ranch,” Nov. 30, 2001, Sun Microsystems, Inc., retrieved May 3, 2006, from http://www.sun.com/smi/Press/sunflash/2001-11/sunflash.20011130.1.xml, 3 pages.
“The Softricity Desktop,” Softricity, Inc., retrieved May 3, 2006, from http://www.softricity.com/products/, 3 pages.
“Xen—The Xen virtual Machine Monitor,” University of Cambridge Computer Laboratory, retrieved Nov. 8, 2005, from http://www.cl.cam.ac.uk/Research/SRG/netos/xen/, 2 pages.
“XenFaq,” retrieved Nov. 8, 2005, from http://wiki.xensource.com/xenwiki/XenFaq?action=print, 9 pages.
Abi, Issam, et al., “A Business Driven Management Framework for Utility Computing Environments,” Oct. 12, 2004, HP Laboratories Bristol, HPL-2004-171, retrieved Aug. 30, 2007, from http://www.hpl.hp.com/techreports/2004/HPL-2004-171.pdf, 14 pages.
American Bar Association; Digital Signature Guidelines Tutorial [online]; Feb. 10, 2002 [retrieved on Mar. 2, 2010]; American Bar Association Section of Science and Technology Information Security Committee; Retrieved from the internet: (URL: http://web.archive.org/web/20020210124615/www.abanet.org/scitech/ec/isc/dsg-tutorial.html; pp. 1-8.
Armour et al., “A Heuristic Algorithm and Simulation Approach to Relative Location of Facilities”; Management Science, vol. 9, No. 2 (Jan. 1963); pp. 294-309.
Baglioni et al., “Preprocessing and Mining Web Log Data for Web Personalization”, LNAI 2829, 2003, pp. 237-249.
Barbir, A., et al., “Known Content Network (CN) Request-Routing Mechanisms”, Request for Comments 3568, [online], IETF, Jul. 2003, [retrieved on Feb. 26, 2013], Retrieved from the Internet: (URL: http://tools.ietf.org/rfc/rfc3568.txt).
Bellovin, S., “Distributed Firewalls,”;login;:37-39, Nov. 1999, http://www.cs.columbia.edu/-smb/papers/distfw. html, 10 pages, retrieved Nov. 11, 2005.
Blaze, M., “Using the KeyNote Trust Management System,” Mar. 1, 2001, from http://www.crypto.com/trustmgt/kn.html, 4 pages, retrieved May 17, 2006.
Brenton, C., “What is Egress Filtering and How Can I Implement It?—Egress Filtering v 0.2,” Feb. 29, 2000, SANS Institute, http://www.sans.org/infosecFAQ/firewall/egress.htm, 6 pages.
Byun et al., “A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning”, IEEE International Symposium on Cluster Computing and the Grid:863-870, 2005.
Chipara et al, “Realtime Power-Aware Routing in Sensor Network”, IEEE, 2006, 10 pages.
Clark, C., “Live Migration of Virtual Machines,” May 2005, NSDI '05: 2nd Symposium on Networked Systems Design and Implementation, Boston, MA, May 2-4, 2005, retrieved from http://www.usenix.org/events/nsdi05/tech/full_papers/clark/clark.pdf, 14 pages.
Coulson, D., “Network Security Iptables,” Apr. 2003, Linuxpro, Part 2, retrieved from http://davidcoulson.net/writing/lxf/38/iptables.pdf, 4 pages.
Coulson, D., “Network Security Iptables,” Mar. 2003, Linuxpro, Part 1, retrieved from http://davidcoulson.net/writing/lxf/39/iptables.pdf, 4 pages.
Deleuze, C., et al., A DNS Based Mapping Peering System for Peering CDNs, draft-deleuze-cdnp-dnsmap-peer-00.txt, Nov. 20, 2000, 20 pages.
Demers, A., “Epidemic Algorithms for Replicated Database Maintenance,” 1987, Proceedings of the sixth annual ACM Symposium on Principles of Distributed Computing, Vancouver, British Columbia, Canada, Aug. 10-12, 1987, 12 pages.
Gruener, J., “A Vision of Togetherness,” May 24, 2004, NetworkWorld, retrieved May 3, 2006, from, http://www.networkworld.com/supp/2004/ndc3/0524virt.html, 9 pages.
Gunther et al, “Measuring Round Trip Times to determine the Distance between WLAN Nodes”,May 2005, In Proc. Of Networking 2005, all pages.
Gunther et al, “Measuring Round Trip Times to determine the Distance between WLAN Nodes”, Dec. 18, 2004, Technical University Berlin, all pages.
Hartung et al.; Digital rights management and watermarking of multimedia content for m-commerce applications; Published in: Communications Magazine, IEEE (vol. 38, Issue: 11 ); Date of Publication: Nov. 2000; pp. 78-84; IEEE Xplore.
Horvath et al., “Enhancing Energy Efficiency in Multi-tier Web Server Clusters via Prioritization,” in Parallel and Distributed Processing Symposium, 2007. IPDPS 2007. IEEE International , vol., No., pp. 1-6, Mar. 26-30, 2007.
Ioannidis, S., et al., “Implementing a Distributed Firewall,” Nov. 2000, (ACM) Proceedings of the ACM Computer and Communications Security (CCS) 2000, Athens, Greece, pp. 190-199, retrieved from http://www.cis.upenn.edu/˜dls/STRONGMAN/Papers/df.pdf, 10 pages.
Joseph, Joshy, et al., “Introduction to Grid Computing,” Apr. 16, 2004, retrieved Aug. 30, 2007, from http://www.informit.com/articles/printerfriendly.aspx?p=169508, 19 pages.
Kalafut et al., Understanding Implications of DNS Zone Provisioning., Proceeding IMC '08 Proceedings of the 8th AMC SIGCOMM conference on Internet measurement., pp. 211-216., ACM New York, NY, USA., 2008.
Kato, Yoshinobu , Server load balancer—Difference in distribution technique and supported protocol—Focus on function to meet the needs, Nikkei Communications, Japan, Nikkei Business Publications, Inc., Mar. 20, 2000, vol. 314, pp. 114 to 123.
Kenshi, P., “Help File Library: Iptables Basics,” Justlinux, retrieved Dec. 1, 2005, from http://www.justlinux.com/nhf/Security/Iptables Basics.html, 4 pages.
Liu et al., “Combined mining of Web server logs and web contents for classifying user navigation patterns and predicting users' future requests,” Data & Knowledge Engineering 61 (2007) pp. 304-330.
Maesono, et al., “A Local Scheduling Method considering Data Transfer in Data Grid,” Technical Report of IEICE, vol. 104, No. 692, pp. 435-440, The Institute of Electronics, Information and Communication Engineers, Japan, Feb. 2005.
Meng et al., “Improving the Scalability of Data Center Networks with Traffic-Aware Virtual Machine Placement”; Proceedings of the 29th Conference on Information Communications, INFOCOM'10, pp. 1154-1162. Piscataway, NJ. IEEE Press, 2010.
Mulligan et al.; How DRM-based content delivery systems disrupt expectations of “personal use”; Published in: Proceeding DRM '03 Proceedings of the 3rd ACM workshop on Digital rights management; 2003; pp. 77-89; ACM Digital Library.
Shankland, S., “Sun to buy start-up to bolster N1 ,” Jul. 30, 2003, CNet News.com, retrieved May 3, 2006, http://news.zdnet.com/2100-3513_22-5057752.html, 8 pages.
Strand, L., “Adaptive distributed firewall using intrusion detection,” Nov. 1, 2004, University of Oslo Department of Informatics, retrieved Mar. 8, 2006, from http://gnist.org/˜lars/studies/master/StrandLars-master.pdf, 158 pages.
Takizawa, et al., “Scalable MultiReplication Framework on the Grid,” Report of Study of Information Processing Society of Japan, Information Processing Society, vol. 2004, No. 81, pp. 247-252, Japan, Aug. 1, 2004.
Tan et al., “Classification: Basic Concepts, Decision Tree, and Model Evaluation”, Introduction in Data Mining; http://www-users.cs.umn.edu/˜kumar/dmbook/ch4.pdf, 2005, pp. 245-205.
Van Renesse, R., “Astrolabe: A Robust and Scalable Technology for Distributed System Monitoring, Management, and Data Mining,” May 2003, ACM Transactions on Computer Systems (TOCS), 21 (2): 164-206, 43 pages.
Vijayan, J., “Terraspring Gives Sun's N1 a Boost,” Nov. 25, 2002, Computerworld, retrieved May 3, 2006, from http://www.computerworld.com/printthis/2002/0,4814, 76159,00.html, 3 pages.
Virtual Iron Software Home, Virtual Iron, retrieved May 3, 2006, from http://www.virtualiron.com/, 1 page.
Waldspurger, CA., “Spawn: A Distributed Computational Economy,” Feb. 1992, IEEE Transactions on Software Engineering, 18(2): 103-117, 15 pages.
Watanabe, et al., “Remote Program Shipping System for GridRPC Systems,” Report of Study of Information Processing Society of Japan, Information Processing Society, vol. 2003, No. 102, pp. 73-78, Japan, Oct. 16, 2003.
Xu et al., “Decision tree regression for soft classification of remote sensing data”, Remote Sensing of Environment 97 (2005) pp. 322-336.
Yamagata, et al., “A virtual-machine based fast deployment tool for Grid execution environment,” Report of Study of Information Processing Society of Japan, Information Processing Society, vol. 2006, No. 20, pp. 127-132, Japan, Feb. 28, 2006.
Zhu, Xiaoyun, et al., “Utility-Driven Workload Management Using Nested Control Design,” Mar. 29, 2006, HP Laboratories Palo Alto, HPL-2005-193(R.1), retrieved Aug. 30, 2007, from http://www.hpl.hp.com/techreports/2005/HPL-2005-193R1.pdf, 9 pages.
Supplementary European Search Report in Application No. 09729072.0 2266064 dated Dec. 10, 2014.
First Singapore Written Opinion in Application No. 201006836-9, dated Oct. 12, 2011 in 12 pages.
Singapore Written Opinion in Application No. 201006836-9, dated Apr. 30, 2012 in 10 pages.
First Office Action in Chinese Application No. 200980111422.3 dated Apr. 13, 2012.
First Office Action in Japanese Application No. 2011-502138 dated Feb. 1, 2013.
Singapore Written Opinion in Application No. 201006837-7, dated Oct. 12, 2011 in 11 pages.
Supplementary European Search Report in Application No. 09727694.3 dated Jan. 30, 2012 in 6 pages.
Singapore Examination Report in Application No. 201006837-7 dated Mar. 16, 2012.
First Office Action in Chinese Application No. 200980111426.1 dated Feb. 16, 2013.
Second Office Action in Chinese Application No. 200980111426.1 dated Dec. 25, 2013.
Third Office Action in Chinese Application No. 200980111426.1 dated Jul. 7, 2014.
Fourth Office Action in Chinese Application No. 200980111426.1 dated Jan. 15, 2015.
Fifth Office Action in Chinese Application No. 200980111426.1 dated Aug. 14, 2015.
First Office Action in Japanese Application No. 2011-502139 dated Nov. 5, 2013.
Decision of Rejection in Application No. 2011-502139 dated Jun. 30, 2014.
Singapore Written Opinion in Application No. 201006874-0, dated Oct. 12, 2011 in 10 pages.
First Office Action in Japanese Application No. 2011-502140 dated Dec. 7, 2012.
First Office Action in Chinese Application No. 200980119995.0 dated Jul. 6, 2012.
Second Office Action in Chinese Application No. 200980119995.0 dated Apr. 15, 2013.
Examination Report in Singapore Application No. 201006874-0 dated May 16, 2012.
Search Report for European Application No. 09839809.2 dated May 11, 2015.
Supplementary European Search Report in Application No. 09728756.9 dated Jan. 8, 2013.
First Office Action in Chinese Application No. 200980119993.1 dated Jul. 4, 2012.
Second Office Action in Chinese Application No. 200980119993.1 dated Mar. 12, 2013.
Third Office Action in Chinese Application No. 200980119993.1 dated Oct. 21, 2013.
First Office Action in Japanese Application No. 2011-503091 dated Nov. 18, 2013.
Search Report and Written Opinion issued in Singapore Application No. 201006873-2 dated on Oct. 12, 2011.
First Office Action is Chinese Application No. 200980125551.8 dated Jul. 4, 2012.
First Office Action in Japanese Application No. 2011-516466 dated Mar. 6, 2013.
Second Office Action in Japanese Application No. 2011-516466 dated Mar. 17, 2014.
Decision of Refusal in Japanese Application No. 2011-516466 dated Jan. 16, 2015.
Office Action in Canadian Application No. 2726915 dated May 13, 2013.
First Office Action in Korean Application No. 10-2011-7002461 dated May 29, 2013.
First Office Action in Chinese Application No. 200980145872.4 dated Nov. 29, 2012.
First Office Action in Canadian Application No. 2741895 dated Feb. 25, 2013.
Second Office Action in Canadian Application No. 2741895 dated Oct. 21, 2013.
Search Report and Written Opinion in Singapore Application No. 201103333-9 dated Nov. 19, 2012.
Examination Report in Singapore Application No. 201103333-9 dated Aug. 13, 2013.
International Search Report and Written Opinion in PCT/US2011/053302 dated Nov. 28, 2011 in 11 pages.
International Preliminary Report on Patentability in PCT/US2011/053302 dated Apr. 2, 2013.
First Office Action in Japanese Application No. 2013-529454 dated Feb. 3, 2014 in 6 pages.
Office Action in Japanese Application No. 2013-529454 dated Mar. 9, 2015 in 8 pages.
First Office Action issued in Australian Application No. 2011307319 dated Mar. 6, 2014 in 5 pages.
Search Report and Written Opinion in Singapore Application No. 201301573-0 dated Jul. 1, 2014.
First Office Action in Chinese Application No. 201180046104.0 dated Nov. 3, 2014.
Second Office Action in Chinese Application No. 201180046104.0 dated Sep. 29, 2015.
Examination Report in Singapore Application No. 201301573-0 dated Dec. 22, 2014.
International Preliminary Report on Patentability in PCT/US2011/061486 dated May 22, 2013.
International Search Report and Written Opinion in PCT/US2011/061486 dated Mar. 30, 2012 in 11 pages.
First Office Action in Chinese Application No. 201180053405.6 dated May 3, 2015.
Office Action in Japanese Application No. 2013-540982 dated Jun. 2, 2014.
Written Opinion in Singapore Application No. 201303521-7 dated May 20, 2014.
International Search Report and Written Opinion in PCT/US07/07601 dated Jul. 18, 2008 in 11 pages.
International Preliminary Report on Patentability in PCT/US2007/007601 dated Sep. 30, 2008 in 8 pages.
Supplementary European Search Report in Application No. 07754164.7 dated Dec. 20, 2010 in 7 pages.
Office Action in Chinese Application No. 200780020255.2 dated Mar. 4, 2013.
Office Action in Indian Application No. 3742/KOLNP/2008 dated Nov. 22, 2013.
Office Action in Japanese Application No. 2012-052264 dated Dec. 11, 2012 in 26 pages.
Office Action in Japanese Application No. 2013-123086 dated Apr. 15, 2014 in 3 pages.
Office Action in Japanese Application No. 2013-123086 dated Dec. 2, 2014 in 2 pages.
Al-Fares, M. et al., A Scalable, Commodity Data Center Network Architecture, SIGCOMM '08 Proceedings, Aug. 17, 2008, pp. 63-74, 66-68, 70-71, Seattle, WA.
Bennami, M., et al., Resource Allocation for Autonomic Data Centers Using Analytic Performance Models, 2005, IEEE, 12 pages.
Chang, F., et al., Automatic Configuration and Run-time Adaptation of Distributed Applications, 2000, IEEE, 10 pages.
Greenberg, A. et al., Networking the Cloud, 29th IEEE International Conference on Distributed Computing Systems (ICDCS 2009), Jun. 22, 2009-Jun. 26, 2009 [online] retrieved from the Internet on Mar. 10, 2011: http://www.cse.ohio-state.edu/icdcs2009/Keynote_files/greenberg-keynote.pdf, pp. 1-45.
Greenberg, A. et al., Towards a Next Generation Data Center Architecture: Scalability and Commoditization, SIGCOMM '08: Proceedings of the 2008 SIGCOMM Conference and Co-Located Workshops NSDR'08, WOSN '08, MOBIARCH '08, NETECON '08, & Presto '08, Seattle, WA, Aug. 17-28, 2008, ACM, Aug. 17, 2008, pp. 57-62, New York, NY.
Greenberg, A. et al., VL2: A scalable and flexible data center network, SIGCOMM '09, Proceedings of the ACM SIGCOMM 2009 Conference on Data Communication, Aug. 17, 2009, vol. 39, Issue 4, pp. 51-62.
Guo, Understanding Memory Resource Management in Vmware vSphere 5.0, Vmware, 2011, 29 pages.
Kounev, S., et al., Autonomic QoS-Aware Resource Management in Grid Computing Using Online Performance Models, 2007, ICST, Valuetools, 2007, 10 pages.
Mysore, R.N. et al., Portland: a scalable fault-tolerant layer 2 data center network fabric, SIGCOMM '09, Proceedings of the ACM SIGCOMM 2009 Conference on Data Communication, Aug. 17, 2009, pp. 39-50.
Nilsson et al., IP-Address Lookup Using LC-Tries, IEEE Journal on Selected Areas of Communication, Jun. 1999, vol. 17, Issue 6, pp. 1083-1092.
Sharif et al, “Secure In-VM Monitoring Using Hardware Virtualization”, Microsoft, Oct. 2009 http://research.microsoft.com/pubs/153179/sim-ccs09.pdf; 11 pages.
Office Action in Japanese Application No. 2014-225580 dated Oct. 26, 2015.
International Search Report and Written Opinion in PCT/US2010/060567 dated Mar. 28, 2012.
International Preliminary Report on Patentability and Written Opinion in PCT/US2010/060567 dated Jun. 19, 2012.
Office Action in Canadian Application No. 2784699 dated Apr. 28, 2014.
Office Action in Chinese Application No. 201080057225.0 dated Jul. 2, 2014.
Office Action in Chinese Application No. 201080057225.0 dated May 14, 2015.
International Preliminary Report on Patentability and Written Opinion in PCT/US2010/060573 dated Jun. 19, 2012.
Office Action in Chinese Application No. 201080057155.9 dated Jul. 24, 2014.
Office Action in Chinese Application No. 201080057155.9 dated May 21, 2015.
International Preliminary Report on Patentability and Written Opinion in PCT/US2010/060569 dated Jun. 19, 2012.
Office Action in Canadian Application No. 2784706 dated May 22, 2014.
First Office Action in Chinese Application No. 201080057229.9 dated May 14, 2014.
Second Office Action in Chinese Application No. 201080057229.9 dated Mar. 18, 2015.
Office Action in Canadian Application No. 2816612 dated Nov. 3, 2015.
Second Office Action in Chinese Application No. 201180053405.6 dated Dec. 4, 2015.
Office Action in European Application No. 07754164.7 dated Dec. 14, 2015.
Office Action in Japanese Application No. 2011-502139 dated Aug. 17, 2015.
Office Action in Japanese Application No. 2011-516466 dated May 30, 2016.
Third Office Action in Chinese Application No. 201180046104.0 dated Apr. 14, 2016.
Office Action in Japanese Application No. 2015-533132 dated Apr. 25, 2016.
Office Action in Canadian Application No. 2884796 dated Apr. 28, 2016.
Office Action in Russian Application No. 2015114568 dated May 16, 2016.
Office Action in Japanese Application No. 2015-075644 dated Apr. 5, 2016.
Office Action in Chinese Application No. 201310537815.9 dated Jul. 5, 2016.
Hameed, CC, “Disk Fragmentation and System Performance”, Mar. 14, 2008, 3 pages.
Liu, “The Ultimate Guide to Preventing DNS-based DDoS Attacks”, Retrieved from http://www.infoworld.com/article/2612835/security/the-ultimate-guide-to-preventing-dns-based-ddos-attacks.html, Published Oct. 30, 2013.
Ragan, “Three Types of DNS Attacks and How to Deal with Them”, Retrieved from http://www.csoonline.com/article/2133916/malware-cybercrime/three-types-of-dns-attacks-and-how-to-deal-with-them.html, Published Aug. 28, 2013.
Office Action in European Application No. 11767118.0 dated Feb. 3, 2017.
Office Action in European Application No. 09839809.2 dated Dec. 8, 2016.
Office Action in Japanese Application No. 2014-225580 dated Oct. 3, 2016.
Partial Supplementary Search Report in European Application No. 09826977.2 dated Oct. 4, 2016.
Office Action in Chinese Application No. 201310717573.1 dated Jul. 29, 2016.
Decision of Rejection in Chinese Application No. 201180046104.0 dated Oct. 17, 2016.
Office Action in Canadian Application No. 2816612 dated Oct. 7, 2016.
Office Action in Canadian Application No. 2816612 dated Aug. 8, 2017.
Supplementary Examination Report in Singapore Application No. 11201501987U dated May 17, 2017.
Office Action in Chinese Application No. 201310537815.9 dated Jun. 2, 2017.
International Search Report and Written Opinion in PCT/US/2016/ 066848 dated May 1, 2017.
Provisional Applications (1)
Number Date Country
61739627 Dec 2012 US