Provisioning network resources based on environment
Claim Score by NHIP
Abstract
A network appliance sends a configuration request to multiple different servers, each of which is associated with a different environment. A response is received from at least one server. Each received response includes configuration data that pertains to an environment associated with the server from which the response is received. The network appliance is then configured based on the configuration data included in the response to enable the network appliance to operate in the environment associated with the server from which the response originated.

Term
5.2 yearsto projected expiry
Projected expiry 1 December 2031, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
26 claims: 5 independent, 21 dependent
- 1A computer implemented method, comprising:sending a configuration request to a plurality of servers by a network appliance, wherein each of the servers is associated with a different environment;receiving, at the network appliance, a response from at least one server of the plurality of servers, the response including configuration data that pertains to an environment associated with the at least one server;and configuring the network appliance based on the configuration data to enable the network appliance to operate in the environment associated with the at least one server.
- 6Broadest claimClaim Score 84, broad(NHIP)A computer implemented method comprising:receiving, at a proxy server, a configuration request from a network appliance;determining, by the proxy server, an environment in which the network appliance operates;determining, by the proxy server, a configuration server associated with the environment;forwarding the configuration request to the configuration server;and responding to the configuration request, the response including configuration data pertaining the environment, the network appliance to be configured based on the configuration data to enable the network appliance to operate in the environment.
- 11A computer-readable storage medium that, when executed by a machine, causes the machine to perform a method comprising:sending a configuration request to a plurality of servers by a network appliance, wherein each of the servers is associated with a different environment;receiving, at the network applicance, a response from at least one server of the plurality of servers, the response including configuration data that pertains to an environment associated with the at least one server;and configuring the network appliance based on the configuration data to enable the network appliance to operate in the environment associated with the at least one server.
- 16A computer-readable storage medium that, when executed by a machine, causes the machine to perform a method comprising:receiving, by a proxy server, a configuration request from a network appliance;determining, by the proxy server, an environment in which the network appliance operates;determining, by the proxy server, a configuration server associated with the environment;forwarding the configuration request to the configuration server;and responding to the configuration request, the response including configuration data pertaining the environment, the network appliance to be configured based on the configuration data to enable the network appliance to operate in the environment.
- 21A computing system, comprising:a network appliance that includes a memory including instructions for performing configuration and a processor, connected with the memory, to execute the instructions, wherein the instructions cause the processor to: send a configuration request to a plurality of servers, wherein each of the servers is associated with a different environment;receive a response from at least one server of the plurality of servers, the response including configuration data that pertains to an environment associated with the at least one server;and configure the network appliance based on the configuration data to enable the network appliance to operate in the environment associated with the at least one server.
Independent claims5
60 paragraphs in 5 sections, as filed
RELATED APPLICATIONS
p-0002The present application cross references U.S. patent application Ser. No. 12/156,289, entitled “Provisioning Network Resources by Environment and Network Address,” and filed on May 30, 2008.
TECHNICAL FIELD
p-0003Embodiments of the present invention relate to networked computers, and more specifically to provisioning networked computers by environment.
BACKGROUND
p-0004Networked computers are used to transmit and fetch information to and from local sources (e.g., computers used in a business) and remote sources (e.g., enterprise services offered over the Internet). One exemplary network computer is a network appliance that is placed on a customer network to monitor devices of the customer network. While performing its intended operations, the network appliance can communicate with different components of a service provider's system. These components may include, for example, a web server providing user interfaces (UIs) to the customer network's IT administrator and other users, a backend server receiving monitoring data from the network appliance and generating alerts and various reports, a database server storing monitoring data in a database, etc.
p-0005A network appliance can operate in the production environment by default. However, the service provider usually develops and deploys its services in many other environments. For example, the service provider may develop its services in the development environment, test its services in the quality assurance (QA) environment, and deploy its services in the staging environment or the production environment. When the network appliance designated to operate in the production environment by default is used in a different environment, the network appliance needs to be manually switched to the different environment. As with any manual operation, the above switching of the network appliance is prone to human errors, is inefficient, and creates inconvenience for users.
BRIEF DESCRIPTION OF THE DRAWINGS
p-0006The present invention is illustrated by way of example, and not by way of limitation, and can be more fully understood with reference to the following detailed description when considered in connection with the figures in which:
p-0007<figref idrefs="DRAWINGS">FIG. 1A</figref> illustrates an exemplary network architecture in which embodiments of the present invention may operate;
p-0008<figref idrefs="DRAWINGS">FIG. 1B</figref> illustrates a block diagram of a service provider, in accordance with one embodiment of the present invention;
p-0009<figref idrefs="DRAWINGS">FIG. 2A</figref> is a flow diagram illustrating one embodiment of a method for provisioning a network appliance based on environment;
p-0010<figref idrefs="DRAWINGS">FIG. 2B</figref> is a flow diagram illustrating another embodiment of a method for provisioning a network appliance based on environment;
p-0011<figref idrefs="DRAWINGS">FIG. 3A</figref> is a flow diagram illustrating an embodiment of a method for facilitating provisioning of a network appliance based on environment;
p-0012<figref idrefs="DRAWINGS">FIG. 3B</figref> is a flow diagram illustrating another embodiment of a method for facilitating provisioning of a network appliance based on environment; and
p-0013<figref idrefs="DRAWINGS">FIG. 4</figref> illustrates a diagrammatic representation of a machine in the exemplary form of a computer system, in accordance with one embodiment of the present invention.
DETAILED DESCRIPTION
p-0014Described herein is a method and system for provisioning networked devices based on different environments. In one embodiment, a network appliance sends a configuration request to multiple different servers, each of which is associated with a different environment. The different environments may include, for example, a production environment, a quality assurance (QA) environment, a development environment, a staging environment, etc. In one embodiment, configuration requests are sent to each of the servers concurrently. Alternatively, configuration requests may not be sent to subsequent servers until a request times out or a response denying access is received. A response is received from at least one server. Each received response includes configuration data that pertains to an environment associated with the server from which the response is received. If multiple responses are received, the responses are prioritized, and the response having the highest priority is selected. The network appliance is then configured based on the configuration data included in the selected (or only) response to enable the network appliance to operate in the environment associated with the server from which the response originated.
p-0015In the following description, numerous specific details are set forth such as examples of specific systems, languages, components, etc. in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that these specific details need not be employed to practice the present invention. In other instances, well known materials or methods have not been described in detail in order to avoid unnecessarily obscuring the present invention.
p-0016The present invention includes various steps, which will be described below. The steps of the present invention may be performed by hardware components or may be embodied in machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor programmed with the instructions to perform the steps. Alternatively, the steps may be performed by a combination of hardware and software.
p-0017The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
p-0018The present invention may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the present invention. A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium (e.g., read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc.), a machine (e.g., computer) readable transmission medium (electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.)), etc.
p-0019<figref idrefs="DRAWINGS">FIG. 1A</figref> illustrates an exemplary network architecture <b>100</b>, in which embodiments of the present invention may operate. The network architecture <b>100</b> may include a service provider <b>135</b> connected with a customer network <b>125</b> (e.g., a local area network (LAN), wide area network (WAN), intranet, etc.) over a public network <b>114</b> (e.g., the Internet). Alternatively, the customer network <b>125</b> may be connected with the service provider <b>135</b> via a private network (e.g., an intranet, virtual private network (VPN), etc.).
p-0020Referring to <figref idrefs="DRAWINGS">FIG. 1A</figref>, the customer network <b>125</b> may represent a network of an enterprise and may include such devices as desktop computers, laptop computers, network printers, switches, routers, gateways, firewalls, or any other devices having a network address. In one embodiment, the customer network <b>125</b> also includes a network appliance <b>108</b>. The network appliance <b>108</b> is a device that is configurable over a network. The network appliance <b>108</b> may be a computing device such as, for example, a desktop computer, laptop computer, server, etc. The network appliance <b>108</b> may be placed in the customer network <b>125</b> to perform functions related to network monitoring upon connection with the customer network <b>125</b>.
p-0021Service provider <b>135</b> provides one or more services to customer network <b>125</b>. In one embodiment, service provider <b>135</b> uses the network appliance <b>108</b> to collect information about the customer network <b>125</b> and devices on the customer network <b>125</b>. The service provider <b>135</b> then analyzes this information, and generates alerts or presents the analysis to a user such as an IT administrator. Alternatively, the service provider <b>135</b> may provide other services, such as network indexing service, etc.
p-0022The service provider <b>135</b> may develop and deploy its services in several different environments including, for example, a production environment <b>116</b>, a QA environment <b>118</b>, a development environment <b>120</b>, and a staging environment (not shown). Each environment may have its own set of servers responsible for facilitating monitoring operations pertaining to devices in a given environment.
p-0023The devices of the customer network <b>125</b> operate in production environment <b>102</b>. In addition, the development and testing of the service provider's services is accomplished using devices operating in QA environment <b>104</b>, development environment <b>106</b>, and staging environment (not shown). These environments may be part of the service provider's network and/or some external network(s) coupled to the service provider <b>135</b> via a public or private network. For example, QA environment <b>104</b> may be a part of QA environment <b>118</b> and development environment <b>106</b> may be part of development environment <b>120</b>. In one embodiment, devices in a particular subnet are assigned to a given environment, with each subnet having a unique network ID (a binary sequence with which addresses of all nodes in the subnet start). Each environment may have one or more network appliances intended to perform monitoring operations in the relevant environment (e.g., network appliances <b>110</b> through <b>112</b>).
p-0024A set of the service provider's servers in each environment maintained by the service provider <b>135</b> may include, for example, a frontend server, a proxy server, a backend server and a configuration server that may reside on the same or different devices. Alternatively, other server configurations may be implemented (e.g., a specific environment of service provider <b>135</b> may include more or fewer servers, which may have redundant or different functionality).
p-0025Frontend servers <b>122</b>, <b>128</b> and <b>134</b> may provide interfaces to clients in respective environments. Through the frontend servers, users of client devices may request data, initiate actions, receive information, etc. Network appliances <b>108</b>, <b>110</b> and <b>112</b> may also communicate with frontend servers <b>122</b>, <b>128</b> and <b>135</b>, respectively, to request a service, initiate an action, report data, etc. Frontend servers may be web application servers that provide web application interfaces accessible to clients via a web browser. Backend servers <b>126</b>, <b>132</b> and <b>138</b> may communicate with network appliances <b>108</b>, <b>110</b> and <b>112</b>, respectively, to send and/or receive such data as identity certificate information, network status updates, transactions, etc. Backend servers may operate in the background, and may not include a user interface or be addressable by a user.
p-0026Configuration servers <b>142</b>, <b>146</b>, <b>148</b> are servers that provide configuration information to network appliances. In one embodiment, the configuration servers are hypertext transfer protocol daemons (HTTPd), such as the Apache web server. Each configuration server <b>142</b>, <b>146</b>, <b>148</b> stores configuration information for a specific environment in which the configuration server operates. The configuration information may include, for example, internet protocol (IP) addresses, host names and universal resource locators (URLs) of servers operating in a particular environment. For example, configuration server <b>142</b> is associated with the production environment <b>116</b> and may provide IP addresses, host names and URLs of frontend server <b>122</b>, proxy <b>124</b> and backend server <b>126</b>. Similarly, configuration server <b>146</b> is associated with the QA environment <b>118</b> and may provide IP addresses, host names and URLs of frontend server <b>128</b>, proxy <b>130</b> and backend server <b>132</b>, and so on.
p-0027Network appliances may send configuration requests directly to the configuration servers <b>142</b>, <b>146</b>, <b>148</b>. Alternatively, network appliances <b>108</b>, <b>110</b>, <b>112</b> may send configuration requests to the frontend server <b>122</b>, <b>128</b>, <b>134</b> or to the backend server <b>126</b>, <b>132</b>, <b>138</b>. Configuration servers <b>142</b>, <b>146</b><b>148</b> may send responses to the network appliance from which the configuration request is received. The network appliance may then be configured based on the configuration data included in one of the responses.
p-0028Each backend server and/or configuration server may communicate with a respective network appliance through a proxy server (e.g., proxy server <b>124</b>, <b>130</b> or <b>136</b>). A proxy server receives transmissions and, if appropriate, forwards them to a corresponding backend server and/or configuration server. Alternatively, no proxy server may be present, or multiple proxy servers may be used.
p-0029In one embodiment, the QA environment <b>118</b>, development environment <b>120</b> and staging environment (not shown) are behind firewalls that block incoming configuration requests. Therefore, a network appliance may only receive a response from a configuration server of the QA environment <b>118</b>, for example, if the network appliance is behind the firewall (e.g., deployed in the QA environment <b>118</b>). In one embodiment, proxy server <b>130</b> and proxy server <b>136</b> (as well as a proxy server of the staging environment) include a firewall that filters configuration requests. Each firewall may include an access control list that passes configuration requests that originate from particular network addresses (e.g., IP address) and block all other configuration requests. For example, proxy server <b>130</b> may include a firewall that passes a configuration request received from network appliance <b>110</b> in QA environment <b>104</b>, but blocks configuration requests from network appliance <b>108</b> and network appliance <b>112</b>. Proxy server <b>124</b> of production environment <b>116</b> may pass all configuration requests.
p-0030In a further embodiment, the proxy server may perform a reverse name lookup on the network address of the network appliance from which the configuration request is received. Based on the reverse name lookup, the proxy server may determine a specific host name associated with the network appliance. The proxy server may pass or block the configuration request based on the resolved host name. For example, all network appliances in the QA environment may resolve to mpqa.com, and the proxy server may pass any configuration requests that resolve to *.mpqa.com.
p-0031In one embodiment, network appliances communicate with servers in the various environments using HTTP. Alternatively, network appliances may communicate with servers in the environments using one or more proprietary protocols. In such an embodiment, a firewall operating on the proxy server may include rules that block or pass configuration requests. For example, assume that a server uses a proprietary communication protocol that operates on port <b>2011</b>. The server listens on port <b>2011</b> for configuration requests from network appliances. A set of firewall rules are used to check to see if traffic comes that comes in from port <b>2011</b> originates from one of a set of network addresses. If it does, then a connection is established. Otherwise, the firewall blocks the connection.
p-0032<figref idrefs="DRAWINGS">FIG. 1B</figref> illustrates a block diagram of a service provider <b>188</b> that may be a part of network architecture <b>100</b> of <figref idrefs="DRAWINGS">FIG. 1A</figref>, in accordance with one embodiment of the present invention. Service provider <b>188</b> includes multiple different environments, such as a production environment <b>172</b>, a QA environment <b>174</b>, a staging environment (not shown) and a development environment <b>176</b>. Each environment may include a configuration server <b>142</b>, <b>146</b>, <b>148</b> a backend server <b>126</b>, <b>132</b>, <b>138</b> and a frontend server <b>122</b>, <b>128</b>, <b>134</b>. The service provider <b>188</b> may also include a proxy server <b>180</b> through which the configuration servers <b>142</b>, <b>146</b>, <b>148</b> and/or backend servers <b>126</b>, <b>132</b>, <b>138</b> of each environment communicate with network appliances.
p-0033In one embodiment, when the proxy server <b>180</b> receives a configuration request, it determines a network address from which the request originated, and forwards the request to a backend server of an environment that corresponds to the network address. Therefore, each environment <b>172</b>, <b>174</b>, <b>176</b> may only receive configuration requests from appliances that are in a corresponding environment.
p-0034<figref idrefs="DRAWINGS">FIG. 2A</figref> is a flow diagram illustrating one embodiment of a method <b>200</b> for provisioning a network appliance based on environment. The method may be performed by processing logic (that can be executed by the network appliance) that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. In one embodiment, the method <b>200</b> is performed by a network appliance, such as network appliance <b>108</b>, network appliance <b>110</b> or network appliance <b>112</b> of <figref idrefs="DRAWINGS">FIG. 1A</figref>.
p-0035A network appliance placed in a specific environment should perform monitoring of devices operating in this environment. To perform such monitoring, the network appliance should interact with a set of servers from an appropriate environment within a service provider's system. However, a network appliance may be preconfigured to operate in a default environment (e.g., production environment) and may need to switch to a different environment to reflect an environment in which the network appliance is located. Alternatively, a network appliance may not be preconfigured for any default environment, and may need configuration information. In order to obtain configuration information, a network appliance may send out configuration requests.
p-0036Referring to <figref idrefs="DRAWINGS">FIG. 2A</figref>, at block <b>202</b> a network appliance sends a configuration request to a configuration server associated with a particular environment. Examples of environments in which configuration servers may reside include a production environment, a QA environment, a staging environment and a development environment. Other environments are also possible.
p-0037At block <b>208</b>, the network appliance determines whether a response to the configuration request has been received. If the network appliance receives a response from the server in the particular environment, it then stops sending out configuration requests, and continues to block <b>212</b>. If no response is received in a specified time period (e.g., the request times out), or a response stating that access is denied is received, then the method returns to block <b>202</b> and the network appliance sends a configuration request to another environment.
p-0038In one embodiment, the network appliance queries (sends a configuration request to) the production environment only after failing to receive a response from all of the other environments. In another embodiment, the network appliance sends out configuration requests to environments in the following order: 1) development environment, 2) QA environment, 3) staging environment, 4) production environment.
p-0039If at block <b>208</b> a response to the configuration request is received, the method continues to block <b>212</b>. The response to the configuration request includes configuration data that pertains to the environment from which the response originated. The configuration data may include, for example, a network address, URLs, host names etc. of a proxy server, backend server and/or frontend server that operate in the environment. At block <b>212</b> the network appliance configures itself using configuration information included in the response. The method then ends.
p-0040<figref idrefs="DRAWINGS">FIG. 2B</figref> is a flow diagram illustrating another embodiment of a method <b>220</b> for provisioning a network appliance based on environment. The method may be performed by processing logic (that can be executed by the network appliance) that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. In one embodiment, the method <b>220</b> is performed by a network appliance, such as network appliance <b>108</b>, network appliance <b>110</b> or network appliance <b>112</b> of <figref idrefs="DRAWINGS">FIG. 1A</figref>.
p-0041Referring to <figref idrefs="DRAWINGS">FIG. 2B</figref>, at block <b>222</b> a network appliance sends configuration requests to multiple configuration servers, each being associated with a different environment. The network appliance sends the configuration requests to the multiple configuration servers without waiting for responses. For example, the network appliance may simultaneously or closely in time send configuration requests to servers in each of the environments.
p-0042At block <b>224</b>, the network appliance receives one or more responses that include configuration data. Responses to the configuration requests may be received from servers in each environment. Alternatively, responses may be received from only one or a few of the environments. Some servers, for example, may only respond to configuration requests from network appliances having particular network addresses. The response includes configuration data that the network appliance can use to configure itself. Therefore, a network appliance may receive more than one response, and thus multiple sets of configuration data.
p-0043The configuration data in a response is particular to the environment from which the response was received. Therefore, it is important that the network appliance use the configuration data from the appropriate response. The appropriate response is the response that is received from an environment that corresponds to an environment in which the network appliance is to operate.
p-0044At block <b>226</b>, the network appliance determines whether multiple responses have been received. If multiple responses are received, the method proceeds to block <b>228</b>. If only one response is received, the method proceeds to block <b>232</b>.
p-0045At block <b>228</b>, the network appliance prioritizes the received responses based on environment. In one embodiment, the environments are ranked in the following order: 1) development environment, 2) QA environment, 3) staging environment, 4) production environment. In another embodiment, a network appliance in the QA environment, development environment or staging environment will receive up to two responses: one response from the production environment and another response from a respective one of the QA environment, development environment or staging environment. In such an embodiment, the development environment, QA environment and staging environment may be assigned a rank of 1, and the production environment may be assigned a rank of 2. Accordingly, if a network appliance receives a response from any of the QA environment, development environment or staging environment, it can be concluded that the network appliance is in the environment corresponding to the received response.
p-0046At block <b>230</b>, the network appliance selects the response having the highest priority. For example, if a network appliance receives a response from the QA environment and the production environment, the network appliance may select the response received from the QA environment.
p-0047At block <b>232</b>, the network appliance configures itself using the configuration data from the selected (or only) response. The method then ends.
p-0048<figref idrefs="DRAWINGS">FIG. 3A</figref> is a flow diagram illustrating an embodiment of a method <b>300</b> for facilitating provisioning of a network appliance based on environment. The method may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. In one embodiment, the method <b>300</b> is performed by a configuration server (e.g., configuration server <b>142</b>, <b>146</b>, <b>148</b>) of <figref idrefs="DRAWINGS">FIG. 1A</figref> or <b>1</b>B.
p-0049Referring to <figref idrefs="DRAWINGS">FIG. 3A</figref>, at block <b>302</b> a configuration server receives a configuration request from a network appliance. The configuration server may be a configuration server in a production environment, a QA environment, a development environment, a staging environment, or some other environment. At block <b>310</b>, the configuration server determines whether the network is in the same environment as the configuration server. Such a determination may be made based on a network address (e.g., IP address) of the network appliance from which the configuration request was received. If the network appliance is in the same environment as the configuration server, the method proceeds to block <b>316</b>. If the network appliance is not in the same environment as the configuration server, the method proceeds to block <b>312</b>. In one embodiment, if the configuration server is in a production environment, then the method continues to block <b>316</b> whether or not the network appliance is also in the production environment.
p-0050At block <b>316</b>, the configuration server responds to the request by sending configuration information to the network appliance. At block <b>312</b>, the configuration server responds to the request by sending an access denied message. Alternatively, the configuration server may not send any response to the network appliance, and the method may end.
p-0051<figref idrefs="DRAWINGS">FIG. 3B</figref> is a flow diagram illustrating another embodiment of a method <b>320</b> for facilitating provisioning of a network appliance based on environment. The method may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. In one embodiment, the method <b>320</b> is performed by a configuration server and/or a proxy server, such as those shown in <figref idrefs="DRAWINGS">FIGS. 1A-1B</figref>.
p-0052Referring to <figref idrefs="DRAWINGS">FIG. 3B</figref>, at block <b>322</b> a proxy server receives a configuration request from a network appliance. At block <b>324</b>, the proxy server determines an environment in which the network appliance operates. In one embodiment, determining the environment in which the network appliance operates is performed as shown in blocks <b>326</b>, <b>328</b> and <b>330</b>. At block <b>326</b>, the proxy server identifies an IP address of the network appliance. At block <b>328</b>, the proxy server performs a reverse name lookup to find a host name associated with the IP address. At block <b>330</b>, the proxy server determines an environment associated with the IP address and/or host name.
p-0053At block <b>332</b>, the proxy server determines a configuration server associated with the environment. At block <b>334</b>, the proxy server forwards the configuration request to the determined configuration server. At block <b>336</b>, the configuration server responds to the request by sending configuration data to the network appliance. The method then ends.
p-0054Though described as being performed by a proxy server, blocks <b>322</b> and <b>324</b> in one embodiment are performed by a configuration server. In such an embodiment, the actions of blocks <b>332</b> and <b>334</b> may not be performed.
p-0055<figref idrefs="DRAWINGS">FIG. 4</figref> illustrates a diagrammatic representation of a machine in the exemplary form of a computer system <b>400</b> within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In alternative embodiments, the machine may be connected (e.g., networked) to other machines in a Local Area Network (LAN), an intranet, an extranet, or the Internet. The machine may operate in the capacity of a server or a client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines (e.g., computers) that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
p-0056The exemplary computer system <b>400</b> includes a processor <b>402</b>, a main memory <b>404</b> (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory <b>406</b> (e.g., flash memory, static random access memory (SRAM), etc.), and a secondary memory <b>418</b> (e.g., a data storage device), which communicate with each other via a bus <b>430</b>.
p-0057Processor <b>402</b> represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processor <b>402</b> may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processor <b>402</b> may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. Processor <b>402</b> is configured to execute the processing logic <b>426</b> for performing the operations and steps discussed herein.
p-0058The computer system <b>400</b> may further include a network interface device <b>408</b>. The computer system <b>400</b> also may include a video display unit <b>410</b> (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device <b>412</b> (e.g., a keyboard), a cursor control device <b>414</b> (e.g., a mouse), and a signal generation device <b>416</b> (e.g., a speaker).
p-0059The secondary memory <b>418</b> may include a machine-readable storage medium (or more specifically a computer-readable storage medium) <b>431</b> on which is stored one or more sets of instructions (e.g., software <b>422</b>) embodying any one or more of the methodologies or functions described herein. The software <b>422</b> may also reside, completely or at least partially, within the main memory <b>404</b> and/or within the processing device <b>402</b> during execution thereof by the computer system <b>400</b>, the main memory <b>404</b> and the processing device <b>402</b> also constituting machine-readable storage media. The software <b>422</b> may further be transmitted or received over a network <b>420</b> via the network interface device <b>408</b>.
p-0060While the machine-readable storage medium <b>431</b> is shown in an exemplary embodiment to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention. The term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.
p-0061It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Contents5
8 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US8788669B2 | Cited by | United States of America | Search report |
| US9244882B2 | Cited by | United States of America | Search report |
| US2009300024A1 | Cited by | United States of America | Pre-grant |
| CN104541490A | Cited by | China | Search report |
| US9912554B2 | Cited by | United States of America | Search report |
| US9203920B2 | Cited by | United States of America | Search report |
| US2018159748A1 | Cited by | United States of America | Search report |
| US2014068025A1 | Cited by | United States of America | Pre-grant |
| US2012173728A1 | Cited by | United States of America | Pre-grant |
| US10819590B2 | Cited by | United States of America | Search report |
| US9509574B2 | Cited by | United States of America | Search report |
| US9800655B2 | Cited by | United States of America | Applicant |
| US2016062603A1 | Cited by | United States of America | Pre-grant |
| US10476762B2 | Cited by | United States of America | Search report |
| US9990116B2 | Cited by | United States of America | Search report |
| US9094301B2 | Cited by | United States of America | Applicant |
| US2017063649A1 | Cited by | United States of America | Pre-grant |
| US2002152305A1 | Cites | United States of America | Pre-grant |
| US2002184529A1 | Cites | United States of America | Pre-grant |
| US2003115570A1 | Cites | United States of America | Pre-grant |
| US2004249939A1 | Cites | United States of America | Pre-grant |
| US2005251573A1 | Cites | United States of America | Pre-grant |
| US2006002294A1 | Cites | United States of America | Pre-grant |
| US2006047813A1 | Cites | United States of America | Pre-grant |
| US2006104220A1 | Cites | United States of America | Pre-grant |
| US2006164992A1 | Cites | United States of America | Pre-grant |
| US2006179116A1 | Cites | United States of America | Pre-grant |
| US2006200658A1 | Cites | United States of America | Pre-grant |
| US2007038994A1 | Cites | United States of America | Pre-grant |
| US2007116234A1 | Cites | United States of America | Pre-grant |
| US2008063003A1 | Cites | United States of America | Pre-grant |
| US2008114770A1 | Cites | United States of America | Pre-grant |
| US2008208958A1 | Cites | United States of America | Pre-grant |
| US2008235266A1 | Cites | United States of America | Pre-grant |
| US2009003574A1 | Cites | United States of America | Pre-grant |
| US2009007091A1 | Cites | United States of America | Pre-grant |
| US2009043999A1 | Cites | United States of America | Pre-grant |
| US2011029599A1 | Cites | United States of America | Pre-grant |
| US6070191A | Cites | United States of America | Pre-grant |
| US7197574B1 | Cites | United States of America | Pre-grant |
| US7284062B2 | Cites | United States of America | Pre-grant |
| US8850442B2 | Cites | United States of America | Pre-grant |
| US8893146B2 | Cites | United States of America | Pre-grant |
2 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 39400409 | United States of America | A | |
| US20090394004 | – | – | – |
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US2010217841A1 | United States of America | A1 | |
| US9244882B2 | United States of America | B2 |
4 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS |
Numbers
- Publication
- 20100217841
- Publication, DOCDB
- 2010217841
- Publication, EPODOC
- US2010217841
- Application
- 12394004
- Application, DOCDB
- 39400409
- Application, EPODOC
- US20090394004
Titles
- English
- PROVISIONING NETWORK RESOURCES BASED ON ENVIRONMENT
Classification
- CPC, 3
- H04L41/0806
- G06F15/177
- H04L41/0853
- IPC, 1
- G06F15 177
- USPC, 1
- 709220000