The invention relates in general to controlling a distributed computing environment, and more particularly to methods for controlling a distributed computing environment running different applications or different portions of the same or different applications and data processing system readable media for carrying out the methods.
Internet websites provided by various businesses, government agencies, etc., can become increasingly complex as the various services offered and number of users increase. As they do so, the application infrastructures on which these websites are supported and accessed can also become increasingly complex, and transactions conducted via these websites can become difficult to manage and prioritize. In a typical application infrastructure, many more transactions related to information requests may be received compared to order placement requests. Conventional application infrastructures for websites may be managed by focusing more on the information requests because they greatly outnumber order placement requests. Consequently, merely placing an order at a website may become sluggish, and customers placing those orders can become impatient and not complete their order requests.
In another instance, some actions on the website can overpower an application infrastructure causing it to slow too much, or in some instances to crash. Therefore, all in-progress transactions being processed on the website may be lost. For example, during a holiday season, which may also correspond to a peak shopping season, an organization may allow users to upload pictures at the organization's website that is shared with other transactions, such as information requests for products or services of the organization and order placement requests. Because transmitting pictures over the Internet consumes a lot of resources, potential customers will find browsing and order placement too slow or the application infrastructure may crash during browsing or order placement. If those potential customers become frustrated from the slowness or crashing, the organization has lost potential revenue, which is undesired. Further, unknown, unintended, or unidentified transactions can consume too many resources relative to those transactions that deserve priority. Thus, any unknown or undefined transactions must be managed and controlled in addition to the known and defined transactions.
A distributed computing environment may be controlled by controlling flows, streams, and pipes used by applications within the distributed computing environment in a manner that is more closely aligned with the business objectives of the organization owning or controlling the distributed computing environment. A flow may be an aggregate set of packets having the same header, where the aggregate set of packets is transmitted from a particular physical component to another physical component. A stream lies at a higher level of abstraction and includes all of the flows associated with network traffic between two logical components, as opposed to physical components. A pipe is a physical network segment, and by analogy, is similar to a wire within cable.
The controls on each of the flows, streams, and pipes may include latency, priority, a connection throttle, and a network packet throttle. Parameters for determining the values for each of the controls may be based on any one or more of Virtual Local Area Network Identifier (VLAN ID), source address, destination address, source port, destination port, protocol, connection request, and transaction type load tag. In other embodiments, other parameters may be used.
By controlling the pipes and flows, traffic between physical components may be controlled to better achieve the business objectives of the organization and to substantially reduce the likelihood of (1) a lower priority transaction type (e.g., information requests) consuming too many resources compared to a higher priority transaction type (e.g., order placement), (2) a broadcast storm from a malfunctioning component, or (3) other similar undesired events that may significantly slow down the distributed computing environment or increase the likelihood that a portion or all of the distributed computing environment will crash.
As a physical component is provisioned, the controls for the pipes connected to that physical component are instantiated. Controls for the pipes are typically set at the entry point to the pipe. For example, if packets are being sent from a physical component (e.g., a managed host) to an appliance, the controls for the pipes and flows are set by a management agent residing on the physical component. In the reverse direction, the controls for the pipes and flows are set by the appliance (e.g., by a management blade within the appliance).
Controlling streams helps to provide better continuity of control as individual physical components, e.g., web servers, are being provisioned or de-provisioned within a logical component, e.g., the web server farm. The controls for the pipes, flows, and streams may be applied in a more coherent manner, so that the controls are effectively applied once rather than on a per pipe basis (in the instance when a flow passes through more than one pipe between the source and destination IP address) or on a per flow basis (in the instance when a stream includes flows where one of the flows is received by a different physical component compared to any of the other flows in the stream).
In one set of embodiments, a method of controlling a distributed computing environment includes examining at least one network packet associated with a stream or a flow. The method also includes setting a control for the flow, the stream, or a pipe based at least in part on the examination. In one embodiment, the control may include a priority, latency, a connection throttle, a network packet throttle, or any combination thereof.
In still another set of embodiments, data processing system readable media may comprise code that includes instructions for carrying out the methods and may be used in the distributed computing environment.
The foregoing general description and the following detailed description are only to illustrate and are not restrictive of the invention.
The present invention is illustrated by way of example and not limitation in the accompanying figures, in which the same reference number indicates similar elements in the different figures.
Skilled artisans appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the present invention.
A distributed computing environment may be controlled by controlling flows, streams, and pipes used by applications within the distributed computing environment in a manner that is more closely aligned with the business objectives of the organization owning or controlling the distributed computing environment. The controls on each of the flows, streams, and pipes may include latency, priority, a connection throttle, and a network packet throttle. Parameters for determining the values for each of the controls may be based on any one or more of Virtual Local Area Network Identifier (VLAN ID), source address, destination address, source port, destination port, protocol, connection request, and transaction type load tag. In other embodiments, other parameters may be used.
A few terms are defined or clarified to aid in an understanding of the terms as used throughout the specification.
The term “application” is intended to mean a collection of transaction types that serve a particular purpose. For example, a web site store front may be an application, human resources may be an application, order fulfillment may be an application, etc.
The term “application infrastructure” is intended to mean any and all hardware, software, and firmware within a distributed computing environment. The hardware may include servers and other computers, data storage and other memories, networks, switches and routers, and the like. The software used may include operating systems and other middleware components (e.g., database software, JAVA™ engines, etc.).
The term “component” is intended to mean a part within a distributed computing environment. Components may be hardware, software, firmware, or virtual components. Many levels of abstraction are possible. For example, a server may be a component of a system, a CPU may be a component of the server, a register may be a component of the CPU, etc. Each of the components may be a part of an application infrastructure, a management infrastructure, or both. For the purposes of this specification, component and resource may be used interchangeably.
The term “connection throttle” is intended to mean a control that regulates the number of connections in an application infrastructure. For example, a connection throttle may exist, for example, at a queue where connections are requested by multiple application infrastructure components. Further, the connection throttle may allow none, a portion, or all of the connections requests to be implemented.
The term “de-provisioning” is intended to mean that a physical component is no longer active within an application infrastructure. De-provisioning may include placing a component in an idling, maintenance, standby, or shutdown state or removing the physical component from the application infrastructure.
The term “distributed computing environment” is intended to mean a collection of components comprising at least one application, wherein different types of components reside on different network devices connected to the same network.
The term “flow” is intended to mean an aggregate set of network packets sent between two physical endpoints in an application infrastructure. For example, a flow may be a collection of network packets that are coming from one port at one Internet protocol (IP) address and going to another port at another IP address using a particular protocol.
The term “flow/stream mapping table” is intended to mean a table having one or more entries that correspond to predefined flows or streams. Each entry in a flow/stream mapping table may have one or more predefined characteristics to which actual flows or streams within an application infrastructure may be compared. Moreover, each entry in a flow/stream mapping table may have one or more predefined settings for controls. For example, a particular flow may substantially match a particular entry in a flow/stream mapping table and, as such, inherit the predefined control settings that correspond to that entry in the flow/stream mapping table.
The term “identification mapping table” is intended to mean a table having one or more entries that correspond to predefined characteristics based on one or more values of parameters. Each entry in an identification mapping table may have one or more predefined settings for controls. For example, a particular flow may substantially match a particular entry in an identification mapping table, and as such, inherit the predefined control settings that correspond to that entry in the identification mapping table.
The term “instrument” is intended to mean a gauge or control that may monitor or control at least part of an application infrastructure.
The term “latency” is intended to mean the amount of time it takes a network packet to travel from one application infrastructure component to another application infrastructure component. Latency may include a delay time before a network packet begins traveling from application infrastructure component to another application infrastructure component.
The term “logical component” is intended to mean a collection of the same type of components. For example, a logical component may be a web server farm, and the physical components within that web server farm may be individual web servers.
The term “logical instrument” is intended to mean an instrument that provides a reading reflective of readings from a plurality of other instruments. In many, but not all instances, a logical instrument reflects readings from physical instruments. However, a logical instrument may reflect readings from other logical instruments, or any combination of physical and logical instruments. For example, a logical instrument may be an average memory access time for a storage network. The average memory access time may be the average of all physical instruments that monitor memory access times for each memory device (e.g., a memory disk) within the storage network.
The term “network packet throttle” is intended to mean a control for regulating the delivery of network packets via an application infrastructure. For example, the network packet throttle may exist at a queue where network packets are waiting to be transmitted through a pipe. Moreover, the network packet throttle may allow none, a portion, or all of the network packets to be transmitted through the pipe.
The term “physical component” is intended to mean a component that serves a function even if removed from the distributed computing environment. Examples of physical components include hardware, software, and firmware that may be obtained from any one of a variety of commercial sources.
The term “physical instrument” is intended to mean an instrument for monitoring a physical component.
The term “pipe” is intended to mean a physical network segment between two application infrastructure components. For example, a network packet or a flow may travel between two application infrastructure components via a pipe.
The term “priority” is intended to mean the order in which network packets, flows, or streams are to be delivered via an application infrastructure.
The term “provisioning” is intended to mean that a physical component is in an active state within an application infrastructure. Provisioning includes placing a component in an active state or adding the physical component to the application infrastructure.
The term “stream” is intended to mean an aggregate set of flows between two logic components in a managed application infrastructure.
The term “transaction type” is intended to mean to a type of task or transaction that an application may perform. For example, browse request and order placement are transactions having different transaction types for a store front application.
As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having,” and any variations thereof, are intended to cover a non-exclusive inclusion. For example, a method, process, article, or appliance that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such method, process, article, or appliance. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
Also, use of the “a” or “an” are employed to describe elements and components of the invention. This is done merely for convenience and to give a general sense of the invention. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.
Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Although methods, hardware, software, and firmware similar or equivalent to those described herein may be used in the practice or testing of the present invention, suitable methods, hardware, software, and firmware are described below. All publications, patent applications, patents, and other references mentioned herein are incorporated by reference in their entirety. In case of conflict, the present specification, including definitions, will control. In addition, the methods, hardware, software, and firmware and examples are illustrative only and not intended to be limiting.
Unless stated otherwise, components may be bi-directionally or uni-directionally coupled to each other. Coupling should be construed to include direct electrical connections and any one or more of intervening switches, resistors, capacitors, inductors, and the like between any two or more components.
To the extent not described herein, many details regarding specific networks, hardware, software, firmware components and acts are conventional and may be found in textbooks and other sources within the computer, information technology, and networking arts.
Before discussing embodiments of the present invention, a non-limiting, illustrative hardware architecture for using embodiments of the present invention is described. After reading this specification, skilled artisans will appreciate that many other hardware architectures may be used in carrying out embodiments described herein and to list every one would be nearly impossible.
Software agents may or may not be present on each of A1 components 112 and 132-137. The software agents may allow the appliance 150 to monitor, control, or a combination thereof at least a part of any one or more of A1 components 112 and 132-137. Note that in other embodiments, software agents may not be required in order for the appliance 150 to monitor or control the A1 components.
In the embodiment illustrated in
Although not shown, other connections may be present and additional memory may be coupled to each of the components within appliance 150. Further, nearly any number of management blades 230 may be present. For example, the appliance 150 may include one or four management blades 230. When two or more management blades 230 are present, they may be connected to different components within the A1. Similarly, any number of fabric blades 240. In another embodiment, the control blade 210 and hub 220 may be located outside the appliance 150, and nearly any number of appliances 150 may be bi-directionally coupled to the hub 220 and under the control of control blade 210.
More than one of any or all components may be present within the management blade 230. For example, a plurality of bridges substantially identical to bridge 350 may be used and bi-directionally coupled to the system controller 310, and a plurality of MACs substantially identical to MAC 360 may be used and bi-directionally coupled to the bridge 350. Again, other connections may be made and memories (not shown) may be coupled to any of the components within the management blade 230. For example, content addressable memory, static random access memory, cache, first-in-first-out (“FIFO”) or other memories or any combination thereof may be bi-directionally coupled to FPGA 330.
The appliance 150 is an example of a data processing system. Memories within the appliance 150 or accessible by the appliance 150 may include media that may be read by system controller 310, CPU 320, or both. Therefore, each of those types of memories includes a data processing system readable medium.
Portions of the methods described herein may be implemented in suitable software code that may reside within or accessible to the appliance 150. The instructions in an embodiment of the present invention may be contained on a data storage device, such as a hard disk, magnetic tape, floppy diskette, optical storage device, or other appropriate data processing system readable medium or storage device.
In an illustrative embodiment of the invention, the instructions may be lines of assembly code or compiled C++, Java, or other language code. Other architectures may be used. For example, the functions of the appliance 150 may be performed at least in part by another appliance substantially identical to appliance 150 or by a computer, such as any one or more illustrated in
Attention is now directed to an exemplary, non-limiting embodiment of a method for controlling communication flows or streams in an application infrastructure (A1). The method may examine a flow or a stream, and based on the examination, set a particular control for the flow or stream. The classification may be based on a host of factors, including the application with which the communication is affiliated (including management traffic), the source or destination of the communication, and other factors, or any combination thereof.
Referring now to
At decision diamond 404, a determination is made whether the network packets are management packets. If the network packets are management packets, they are processed as illustrated in
In an exemplary, non-limiting embodiment, the settings for priority are simply based on a range of corresponding numbers, e.g., zero to seven (0-7), where zero (0) is the lowest priority and seven (7) is the highest priority. Further, the range for latency may be zero or one (0 or 1), where zero (0) means drop network packets with normal latency and one (1) means drop network packets with high latency. Also, the range for the connection throttle may be from zero to ten (0-10), where zero (0) means throttle zero (0) out of ten (10) connection requests (i.e., zero throttling) and ten (10) means throttle ten (10) out of every ten (10) connection requests (i.e., complete throttling). The range for network packet throttle may be substantially the same as the range for the connection throttle. The above ranges are exemplary and there may exist numerous other ranges of settings for priority, latency, connection throttle, and network packet throttle. Moreover, the settings may be represented by nearly any group of alphanumeric characters.
Proceeding to block 428, the stream or flow is delivered with the above settings in effect. Accordingly, any network packets that are management packets sent to a managed A1 component by the management blade 230 (
Returning to the logic shown in
In an exemplary, non-limiting embodiment, the above-described settings may be determined by comparing the network packets comprising a flow or stream to an identification table in order to identify that particular flow or stream. Once identified, the control settings for the identified flow or stream may be determined based in part on the identification table. Or, the identified flows or streams may be further compared to a flow/stream mapping table in order to determine the values for the control settings. The control settings can be applied to a flow and a stream or just a flow and not a stream. At block 448, the stream or flow is delivered according to the above-determined settings.
Again, returning to the logic shown in
At decision diamond 408 depicted in
In the above-described method, the controls that are provided (i.e., priority, latency, connection throttle, and network packet throttle), are used to control the components that make up one or more pipes. In an exemplary, non-limiting embodiment, a pipe may be a link between a managed A1 component and a management blade 230 (
It can be appreciated that, in the above-describe method, some or all of the actions may be undertaken at different locations within the system I 00 (FIG. I) in order to provide controls on the pipes. For example, when a flow or stream is to be delivered to a managed A1 component from a management blade 230 (
Depending on which direction a flow or stream is traveling, e.g., to or from a managed A1 component, connection throttling and/or network packet throttling can occur at the management blade 230 (
Further, in an exemplary, non-limiting embodiment, when a flow or stream is being delivered via a VLAN uplink, the latency and priority controls can be implemented on the management blade 230 (
During configuration of the system 100 (FIG. I), streams and flows can be defined and created for each application, transaction type, or both in the system 100. For each managed A1 component, the necessary pipes are also defined and created. Moreover, for each uplink or downlink in each VLAN, the necessary pipes are created.
During operation, the provisioning and de-provisioning of certain A1 components, e.g., servers, can have an impact on the system 100 (
If a managed A1 component is added, corresponding flows and pipes can be created. This can include management flows to and from the management blade 230 (
In one exemplary, non-limiting embodiment, a number of flows within the system 100 may cross network devices that are upstream of a management blade 230 (
The above-described method can be used to control the delivery of flows and streams along pipes to and from managed A1 components within a distributed computing environment. Depending on the direction of travel of a particular flow or stream, some or all of the controls can be implemented at the beginning or end of each pipe. Further, by controlling a distributed computing environment using the method describe above, the efficiency and quality of service of data transfer via the distributed computing environment can be increased.
Note that not all of the activities described in
In the foregoing specification, the invention has been described with reference to specific embodiments. However, one of ordinary skill in the art appreciates that various modifications and changes can be made without departing from the scope of the invention as set forth in the claims below. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of invention.
Benefits, other advantages, and solutions to problems have been described above with regard to specific embodiments. However, the benefits, advantages, solutions to problems, and any component(s) that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as a critical, required, or essential feature or component of any or all the claims.
This application is related to U.S. patent application Ser. No. 10/761,909, entitled: “Methods and Systems for Managing a Network While Physical Components are Being Provisioned or De-provisioned” by Thomas Bishop et al., filed on Jan. 21, 2004. This application is further related to U.S. patent application Ser. No. 10/826,719, entitled: “Method and System For Application-Aware Network Quality of Service” by Thomas Bishop et al., filed on Apr. 16, 2004. This application is even further related to U.S. patent application Ser. No. 10/826,777, entitled: “Method and System For an Overlay Management System” by Thomas Bishop et al., filed on Apr. 16, 2004. All applications cited within this paragraph are assigned to the current assignee hereof and are fully incorporated herein by reference.