|Publication number||US7761527 B2|
|Application number||US 11/054,578|
|Publication date||Jul 20, 2010|
|Filing date||Feb 9, 2005|
|Priority date||Feb 10, 2004|
|Also published as||US20050192965, WO2005077070A2, WO2005077070A3|
|Publication number||054578, 11054578, US 7761527 B2, US 7761527B2, US-B2-7761527, US7761527 B2, US7761527B2|
|Inventors||Nelson S. Ferreira, Eyal Yardeni, Salvatore De Simone, Renin Jegadeesan|
|Original Assignee||Emc Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (19), Referenced by (9), Classifications (20), Legal Events (4)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application claims the benefit, pursuant to 35 USC §119(e) to:
U.S. Provisional Patent Application Ser. No. 60/543,196, entitled “Model-Based Application Discovery,” filed on Feb. 10, 2004, and
U.S. Provisional Patent Application Ser. No. 60/604,330, entitled “Method and Apparatus for Identifying and Classifying Network-Based Applications,” filed on Aug. 25, 2004, the contents of both of which are incorporated by reference herein
This application is related to commonly-owned, concurrently filed, U.S. patent application Ser. No. 11/054,577, entitled “Method and Apparatus for Identifying and Classifying Network-Based Applications.”
This application is related to the field of distributed systems, and more specifically, discovery of distributed application components and identification of the related application topology.
The use of computer networks has become an integral part of the way businesses provide goods and services to their customers. One advantage the use of networks provides is to enable the distribution of applications and the underlying business logic closer to the actual user or customer. This enables these businesses to offer higher levels of service to disparate groups of customers in a wider geographic area than ever before. This has also enabled businesses to allow customers access to the business network, albeit limited, for example, to directly track their purchases. In this case, each customer may have access to standardized or “tailored” application software packages or to custom developed software packages to perform desired operations.
Initially, networks were of a client/server type where the client represented a requestor of services and a server was the provider of the requested servers. However, this network configuration proved to be limiting and multi-tier networks were next developed. The multi-tier network configuration provides improved flexibility and scalability over the client/server network
In the multi-tier network, a middle tier, between a client requesting information and server including a data base, developed that provided services such as transaction monitoring, message servicing and applications services. The middle tier layer thus provided queuing of client requests, application execution and data base staging. The middle tier layer may be further divided into units of different functions to further improve flexibility and scalability. In this case, the middle tier may include applications written in HTML (Hyper-Link Textual Markup Language), which is well-known in the art, for communication with the client and application servers written in C++ or Java programming languages, which are also well-known in the art. To fill the gap between the HTML and C++ applications, an intermediate web server layer may be incorporated to translate messages between the two application layers.
In a further network expansion, a distributed/collaborative enterprise architecture based on an Object Request Broker and/or a Common Object Request Broker Architecture was developed. This enterprise architecture allows for the use, and reuse, of business models on an enterprise-wide scale; an enterprise, in this case, represents a system comprised on multiple business systems or multiple subsystems.
However, as businesses take advantage of their networks and their networks expand, either in a planned manner or by the acquisition of other networks, the number of application packages may increase significantly. In some cases, the state of all the application packages, e.g., “running,” “installed but non-running,” and their locations may not be known or appreciated, particularly for those application packages that may be tailored or those that have narrow usage. In addition, enterprise applications, telecom services and other such services, need not be isolated entities existing on a single host, but rather may be distributed with dependent components present on multiple hosts within their enterprise and sometimes even spanning enterprises. In addition, application components may be updated on some servers and not in others. Hence, while application are composed of software-compatible components, a single definition of the application is not necessarily determinable.
In order to determine the existence of the application and their operating state, it is often required to discover many of the distributed pieces or components and the relationships between them, i.e., the application's “topology,” and further to make a determination that the application has indeed been found. This is not a straightforward task as the variability in configuration and deployment options for these applications is high. For example, to discover simple processes that are running in a UNIX-based system, a user may use a command line tool, e.g., an instruction, such as UNIX command “ps” to “dump the process table,” for example. This command line tool creates a list of processes executing on a specific host on the network. The list may then be filtered using the UNIX “grep” command line with known search criteria. This specific methodology is, of course, of limited value as it is unable to discover non-running applications and does not discover the applications topology (i.e., the relationships among distributed components). More sophisticated tools, referred to as agents, may be built or created to probe still deeper into the components and their relationships. However, as in the prior example, there is no knowledge of what the relationships among multiple processes are, and only currently running processes may be discovered.
Thus, as the network expands it can become bloated with forgotten application packages that may have little or no usage, but are left in place as the consequence of their removal is unknown. On the other hand, leaving unused applications where they are installed may cause harm by consuming valuable disk space and/or if running, also consuming valuable CPU cycles. Most importantly, there are critical applications that must be running with optimal performance for a business to service their customers and effectively run their operation.
To manage the applications, whether active, active and forgotten, or not running, it is important to understand or have knowledge of the configuration of the application components. Application configuration information includes the description of the application, its components, the relationship between applications, the relationship between the components, and how the components are related with the underlying system and environment on which they are running. Examples of aspects of an application component include its structure at a device, its structure across devices, its performance characteristics, its dependencies with other applications in the device, and its dependencies with other applications in other devices. However, no systematic method exists to interrogate the network and determine applications residing on the network, and their status based on the discovered components.
Hence, there is a need in the industry for a systematic method and apparatus for discovering distributed application components and identifying the associated application topology.
A method and apparatus for discovering applications having components distributed over a plurality of nodes in a network is disclosed. The method comprises the steps of obtaining information associated with at least one application, said information providing first and second instructions, executing processing associated with the first instructions, determining a tentative identification of at least one application based on responses associated with the processing of the first instructions, executing processing associated with the second instructions based on each of the tentatively identified applications, and confirming an identification of at least one application based on responses associated with the processing of the second instructions. In one aspect of the invention, the method further comprises the step of storing the application identification and characteristics in a representation of the application.
It is to be understood that these drawings are solely for purposes of illustrating the concepts of the invention and are not intended as a definition of the limits of the invention. The embodiments shown in the figures herein and described in the accompanying detailed description are to be used as illustrative embodiments and should not be construed as the only manner of practicing the invention. Also, the same reference numerals, possibly supplemented with reference characters where appropriate, have been used to identify similar elements
At block 320, probes and/or detectors to discover specific applications are further defined and at block 322 probes and/or detectors to discover the relationships of the specific applications are defined. At block 324, the information from the detectors and probes are consolidated and stored into the abstract model.
Abstract model 410 includes network elements or components that are selected for representation and referred to as managed components. The representation of the managed components includes aspects or properties of the component represented. In this case, an application server is represented as a managed object, referred to as ApplicationService 412. ApplicationService 412 is a generalization of objects of class Application 414 and MgmtAgent 416. Application 414 is a generalization of objects of classes ApplicationServer 418, ApplicationCluster420 and WebServer 422. LoadBalancer 424 is an object within the ApplicationCluster 420 object. Also shown is that object class MgmtAgent 416 contains objects NodeAgent 426 and DeploymentManager 428.
The objects and relationships may be more fully described as:
The model shown in
At block 520, processing associated with the detector, i.e., directives or instructions, obtained from the application signature is performed. In this case, the detectors provide a basic capability to find or determine clues with regard to the presence and identity of distributed applications. Detectors may represent elements, such as code or devices, that are responsible for interacting with the environment, i.e., network elements, and provide broad knowledge of the distributed application. The code or devices may, for example, initiate commands such as “presence requests” or an HTTP request of a port and may further operate on received responses to the initiated directives. Detectors provide an initial view, which is relatively broad, of the application and are executed with a low frequency. Detectors, in addition to information contained in the application signature, further provide instruction for more detailed analysis, as will more fully explained.
At block 530, the results of the detector responses are used to determine an initial or tentative classification and/or identification of an application. In one aspect the tentative identification may be made using a correlation function derived from the information contained in the application signatures, as will be more fully discussed.
After the tentative application identification, additional information regarding the application is obtained by selecting one or more of probes 540.1-540.n, which may include instructions or directives and executing the processing associated with the selected information. In this illustrate case, probes represent code responsible for interacting with the environment (network elements) and are provided with knowledge of the application in order to obtain characteristics and properties of the tentatively identified application. Probes 540.1-540.n, e.g., status requests, obtain more detailed information regarding the tentatively identified application to more fully identify the application.
At block 550, the characteristics, attributes, and/or properties obtained by the executed probes are collected and combined to confirm the identification of the tentatively identified application. In one aspect of the invention, the characteristics, attributes and properties obtained by the selected probes are sufficient to confirm the identification of the tentatively identified application and no further processing is necessary. In another aspect of the invention, the characteristics and properties obtained by the selected probes are not sufficient to confirm the identification of the tentatively identified application and additional processing is required. In this aspect of the invention, information from other sources may be utilized to complete the process of determining the identification of the distributed applications. For example, patterns of known relationships among application elements or components may be used to complete the identification and classification process when the information from selected probes is not sufficient to provide the information. This is patterns may be used to substantiate incomplete or known incorrect relationships. In another aspect, knowledge of known relationships, referred to as application endpoints, which are gateways between applications and/or application components, may be used to complete the identification and classification process. In still another aspect of the invention, responses from probes not associated with the tentatively identified application may be used to confirm or deny the identification.
In one aspect of the invention, an application may be initially or tentatively identified as that application having a high correlation determined as the largest accumulated value in response to the detectors activated. In a second aspect of the invention, an application may initially or tentatively be identified as that application having a high correlation determined as the number of responses and/or the probability that a response is required. For example, failure to receive a response from DET1 indicates that the application is not APP1 as a response to the specific detector is required. However, failure to receive a response from DET3, indicates that the application is not APPn,. In this case, the application may be tentatively identified as either APP1 or APP2, dependent upon response from the other detectors.
With regard to
There is also shown a section that may be used to provide instruction for testing the identified application. The testing may include, for example, processing that is performed at a known rate. Details regarding the contents of the detector, probe and test section are more fully disclosed in the commonly-owned patent application, U.S. patent application Ser. No. 11/054,577, entitled “Method and Apparatus for Identifying and Classifying Network-Based Applications, and need not be discussed in further detail herein.
Dependent upon the responses received from the detectors, a tentative identification of the application may be made and the appropriate probe (second instructions processing) may be initiated. The probes are, in this illustrative example, contained in corresponding application information signatures and represented as Probe: WAS Probe and Probe: WAS Domain, respectively.
As would be further recognized, by inspecting and probing the WebSphere Deployment Manager (
Input/output devices 1102, processors 1103 and memories 1104 may communicate over a communication medium 1125. Communication medium 1125 may represent, for example, a bus, a communication network, one or more internal connections of a circuit, circuit card or other apparatus, as well as portions and combinations of these and other communication media. Input data from the devices 1101 is processed in accordance with one or more programs that may be stored in memories 1104 and executed by processors 1103. Processors 1103 may be any means, such as general purpose or special purpose computing system, such as a laptop computer, desktop computer, a server, handheld computer, or may be a hardware configuration, such as dedicated logic circuit, or integrated circuit. Processors 1103 may also be Programmable Array Logic (PAL), or Application Specific Integrated Circuit (ASIC), etc., which may be “programmed” to include software instructions or code that provides a known output in response to known inputs. In one aspect, hardware circuitry may be used in place of, or in combination with, software instructions to implement the invention. The elements illustrated herein may also be implemented as discrete hardware elements that are operable to perform the operations shown using coded logical operations or by executing hardware executable code.
In a one aspect, the processes shown herein may be represented by computer readable code stored on a computer readable medium. The code may also be stored in the memory 1104. The code may be read/downloaded from a memory medium 1183, an I/O device 1185 or magnetic or optical media, such as a floppy disk, a CD-ROM or a DVD, 1187. Although not shown, it would be recognized that the code may be stored on a device and downloaded via a network to processor 1103. The downloaded computer readable code may be stored in memory 1104 or executed directly by processor 1103. Further it would be understood that the code may be processor specific or processor non-specific. Code written in the Java programming language is an example of processor non-specific code. Java is a trademark of the Sun Microsystems Corporation.
Information from device 1101 received by I/O device 1102, after processing in accordance with one or more software programs operable to perform the functions illustrated herein, may also be transmitted over network 1180 to one or more output devices represented as display 1192, reporting device 1190, e.g., printer, or second processing system 1195. As one would recognize, networks 1125, 1150 and 1180 may be physically be the same network or may be different networks that operate on the same or different communication principles.
As one skilled in the art would recognize, the term computer or computer system may represent one or more processing units in communication with one or more memory units and other devices, e.g., peripherals, connected electronically to and communicating with the at least one processing unit. Furthermore, the devices may be electronically connected to the one or more processing units via internal busses, e.g., ISA bus, microchannel bus, PCI bus, PCMCIA bus, USB, etc., or one or more internal connections of a circuit, circuit card or other device, as well as portions and combinations of these and other communication media or external networks, e.g., the Internet and Intranet.
While there has been shown, described, and pointed out fundamental novel features of the present invention as applied to embodiments thereof, it will be understood that various omissions and substitutions and changes in the apparatus described, in the form and details of the devices disclosed, and in their operation, may be made by those skilled in the art without departing from the spirit of the present invention. For example, while the flow charts depict a sequence of operating steps, this is shown for illustrative purposes only as the steps may be executed or performed in another sequence or order. It is expressly intended that all combinations of those elements that perform substantially the same function in substantially the same way to achieve the same results are within the scope of the invention. Substitutions of elements from one described embodiment to another are also fully intended and contemplated.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5655081||Mar 8, 1995||Aug 5, 1997||Bmc Software, Inc.||System for monitoring and managing computer resources and applications across a distributed computing environment using an intelligent autonomous agent architecture|
|US5978594||Mar 6, 1997||Nov 2, 1999||Bmc Software, Inc.||System for managing computer resources across a distributed computing environment by first reading discovery information about how to determine system resources presence|
|US6002869 *||Feb 26, 1997||Dec 14, 1999||Novell, Inc.||System and method for automatically testing software programs|
|US6075943 *||Aug 13, 1997||Jun 13, 2000||International Business Machines Corporation||System and method for client server software installation|
|US6182136||Sep 8, 1998||Jan 30, 2001||Hewlett-Packard Company||Automated service elements discovery using core service specific discovery templates|
|US6182146 *||Jun 27, 1997||Jan 30, 2001||Compuware Corporation||Automatic identification of application protocols through dynamic mapping of application-port associations|
|US6286047||Sep 10, 1998||Sep 4, 2001||Hewlett-Packard Company||Method and system for automatic discovery of network services|
|US6336138||Aug 25, 1998||Jan 1, 2002||Hewlett-Packard Company||Template-driven approach for generating models on network services|
|US6775655 *||Nov 24, 1999||Aug 10, 2004||Microsoft Corporation||Rendering digital content in an encrypted rights-protected form|
|US7200862 *||Sep 30, 2002||Apr 3, 2007||Microsoft Corporation||Securing uniform resource identifier namespaces|
|US7340776 *||Jan 31, 2002||Mar 4, 2008||International Business Machines Corporation||Method and system for configuring and scheduling security audits of a computer network|
|US7418478 *||Dec 19, 2003||Aug 26, 2008||Symantec Operating Corporation||System and method for application discovery in a computing environment|
|US20020178436 *||May 25, 2001||Nov 28, 2002||International Business Machines Corporation||Method and apparatus for the automatic discovery of the relationships between applications and their associated data and configuration files|
|US20040046785 *||Sep 11, 2002||Mar 11, 2004||International Business Machines Corporation||Methods and apparatus for topology discovery and representation of distributed applications and services|
|US20040054690 *||Mar 10, 2003||Mar 18, 2004||Hillerbrand Eric T.||Modeling and using computer resources over a heterogeneous distributed network using semantic ontologies|
|US20040078568 *||Oct 16, 2002||Apr 22, 2004||Duc Pham||Secure file system server architecture and methods|
|US20040111273 *||Sep 23, 2003||Jun 10, 2004||Yoshiaki Sakagami||Receptionist robot system|
|US20040139097 *||Dec 23, 2003||Jul 15, 2004||Kinetech, Inc.||Identifying data in a data processing system|
|US20040193906 *||Mar 24, 2003||Sep 30, 2004||Shual Dar||Network service security|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US8001228 *||Jan 15, 2009||Aug 16, 2011||Oracle International Corporation||System and method to dynamically extend a management information base using SNMP in an application server environment|
|US8028058 *||Mar 18, 2005||Sep 27, 2011||International Business Machines Corporation||Dynamic discovery and reporting of one or more application program topologies in a single or networked distributed computing environment|
|US8422397 *||Dec 28, 2007||Apr 16, 2013||Prodea Systems, Inc.||Method and apparatus for rapid session routing|
|US8838931||Mar 30, 2012||Sep 16, 2014||Emc Corporation||Techniques for automated discovery and performing storage optimizations on a component external to a data storage system|
|US8868797||Mar 30, 2012||Oct 21, 2014||Emc Corporation||Techniques for automated discovery of storage devices and their performance characteristics|
|US20060212569 *||Mar 18, 2005||Sep 21, 2006||International Business Machines Corporation||Dynamic discovery and reporting of one or more application program topologies in a single or networked distributed computing environment|
|US20090168787 *||Dec 28, 2007||Jul 2, 2009||Amir Ansari||Method and Apparatus for Rapid Session Routing|
|US20090182849 *||Jan 15, 2009||Jul 16, 2009||Bea Systems, Inc.||System and Method for Using SNMP in an Application Server Environment|
|US20090182880 *||Jan 15, 2009||Jul 16, 2009||Bea Systems, Inc.||System and Method to Synthesize Custom Metric Attributes from Available MBean Attributes on an Application Server|
|U.S. Classification||709/207, 370/396, 709/204, 709/224, 370/260|
|International Classification||H04Q11/00, G06F15/173, G06F7/00, G06F15/16, H04L12/16|
|Cooperative Classification||H04L67/16, H04L67/10, G06F9/465, H04L41/5058, H04L41/0233, G06F2209/462|
|European Classification||H04L41/50H, G06F9/46M, H04L29/08N15, H04L29/08N9|
|Mar 3, 2005||AS||Assignment|
Owner name: EMC CORPORATION, MASSACHUSETTS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FERREIRA, NELSON S.;YARDENI, EYAL;DE SIMONE, SALVATONE;AND OTHERS;REEL/FRAME:016331/0111;SIGNING DATES FROM 20050208 TO 20050210
Owner name: EMC CORPORATION, MASSACHUSETTS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FERREIRA, NELSON S.;YARDENI, EYAL;DE SIMONE, SALVATONE;AND OTHERS;SIGNING DATES FROM 20050208 TO 20050210;REEL/FRAME:016331/0111
|Jan 20, 2014||FPAY||Fee payment|
Year of fee payment: 4
|Sep 21, 2016||AS||Assignment|
Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLAT
Free format text: SECURITY AGREEMENT;ASSIGNORS:ASAP SOFTWARE EXPRESS, INC.;AVENTAIL LLC;CREDANT TECHNOLOGIES, INC.;AND OTHERS;REEL/FRAME:040134/0001
Effective date: 20160907
Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., A
Free format text: SECURITY AGREEMENT;ASSIGNORS:ASAP SOFTWARE EXPRESS, INC.;AVENTAIL LLC;CREDANT TECHNOLOGIES, INC.;AND OTHERS;REEL/FRAME:040136/0001
Effective date: 20160907
|Sep 29, 2016||AS||Assignment|
Owner name: EMC IP HOLDING COMPANY LLC, MASSACHUSETTS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EMC CORPORATION;REEL/FRAME:040203/0001
Effective date: 20160906