Distributed computing platforms, such as in networking products (NP) provided by VMware, Inc., of Palo Alto, Calif. (VMware) include software that allocates computing tasks across group or cluster of distributed software components executed by a plurality of computing devices, enabling large data sets to be processed more quickly than is generally feasible with a single software instance or a single device. Such platforms typically utilize a distributed file system that can support input/output intensive distributed software component running on a large quantity (e.g., thousands) of computing devices to access large quantity of data. For example, the NP distributed file system (HDFS) is typically used in conjunction with NP—a data set to be analyzed by NP may be stored in as a large file on HDFS which enables various computing devices running NP software to simultaneously process different portions of the file.
Typically, distributed computing platforms such as NP are configured and provisioned in a “native” environment, where each “node” of the cluster corresponds to a physical computing device. In such native environment, where each “node” of the cluster corresponds to a physical computing device. In such native environments, administrators typically need to manually configure the settings for the distributed computing platform by generating and editing configuration or metadata files that, for example, specify the names and network addresses of the nodes in the cluster, as well as whether any such nodes perform specific functions for the distributed computing platform. More recently, service providers that offer cloud-based Infrastructure-as-a-Service (LaaS) offerings have begun to provide customers with NP frameworks as a “Platform-as-a-Service” (PaaS).
Such PaaS based NP frameworks however are limited, for example, in their configuration flexibility, reliability and robustness, scalability, quality of service (QoS) and security. These platforms also have the further problem of being able to handle disparate computing endpoints with huge volume of application is a very efficient discoverable manner.
Accurate and comprehensive application awareness (boundary, components, dependencies) is a pre-requisite for effectively driving many data-center operations workflows, including micro-segmentation security planning network troubleshooting, applications performance optimization, application migration.
Manual classification of endpoints (e.g., virtual machines) to applications and tiers is a cumbersome and error-prone process and its quality depends on many factors including proper assignment of attributes (name, tag, etc.) to an endpoint. Besides, to validate such classification, one needs to analyze the network communication pattern among these groups. Also, with the regular influx of new endpoints in the data center, the classification needs to be continually updated. This process is not practical for an environment with thousands of applications.
Automated and continuous discovery of applications (and tiers) addresses these concerns as it requires fewer manual efforts and can dynamically adapt.
The complexity of application discovery increases with the diversity of applications that can exist in a data center. A data center can comprise of simple as well as relatively complex applications that co-exist and interact with each other. The existence of common services like AD, DNS, etc., complicates the task of identifying application boundaries.
Current conventional discoveries to automated discovery suffer from the following drawbacks: (a) any agent-based solution that requires the installation of agents at the hypervisor or operating system level is quite intrusive in nature and can pose security challenges, (b) some of the agentless solutions require pervasive access to all servers in order to execute appropriate commands to collect information related to processes, connections, etc. This is not ideal from a security or performance perspective.
It should also be noted that most computing environments, including virtual network environments are not static. That is, various machines or components are constantly being added to, or removed from, the computer environment. As such changes are made to the computing environment, it is frequently necessary to amend or change which of the various machines or components (virtual and/or physical) are registered with the security system. And even in a perfectly laid out network environment the introduction of components and machines is bound to introduce segmentations and hairpins which affect the performance of the network. These performance problems are more exacerbated in the virtual computing environment with heavy network traffic between them.
In conventional approaches to discovery and monitoring of services and applications in a computing environment, constant and difficult upgrading of agents is often required. Thus, conventional approaches for application and service discovery and monitoring are not acceptable in complex and frequently revised computing environments.
Additionally, many conventional security systems require every machine or component within a computing environment be assigned to a particular scope and service group so that the intended states can be derived from the service type. As the size and complexity of computing environments increases, such a requirement may require a high-level system administrator to manually register as many as thousands (or many more) of the machines or components (such as, for example, virtual machines) with the security system.
Thus, such conventionally mandated registration of the machines or components is not a trivial job. This burden of manual registration is made even more burdensome considering that the target users of many security systems are often experienced or very high-level personnel such as, for example, Chief Information Security Officers (CISOs) and their teams who already have heavy demands on their time.
Furthermore, even such high-level personnel may not have full knowledge of the network topology of the computing environment or understanding of the functionality of every machine or component within the computing environment. Hence, even when possible, the time and/or person-hours necessary to perform and complete such a conventionally required configuration for a computing system can extend to days, weeks, months or even longer.
Moreover, even when such conventionally required manual registration of the various machines or components is completed, it is not uncommon that entities, including the aforementioned very high-level personnel, have failed to properly assign the proper scopes and services to the various machines or components of the computing environment. Furthermore, in conventional computing systems, it not uncommon to find such improper assignment of scopes and services to the various machines or components of the computing environment even after a conventional computing system has been operational for years since its initial deployment. As a result, such improper assignment of the scopes and services to the various machines or components of the computing environment may have significantly and deleteriously impacted the accessibility by applications and the overall performance of conventional computing systems even for a prolonged duration.
Furthermore, as stated above, most computing environments, including machine learning environments are not static. That is, various machines or components are constantly being added to, or removed from, the computing environment. As such changes are made to the computing environment, it is necessary to review the changed computing environment and once again assign the proper scopes and services to the various machines or components of the newly changed computing environment. Hence, the aforementioned overhead associated with the assignment of scopes and services to the various machines or components of the computing environment will not only occur at the initial phase when deploying a conventional security system, but such aforementioned overhead may also occur each time the computing environment is expanded, updated, or otherwise altered. This includes instances in which the computing environment is altered, for example, by expanding, updating, or otherwise altering, for example, the roles of machine or components including, but not limited to, virtual machines of the computing environment.
Thus, conventional approaches for providing application discovery in a distributed computing platform with a large number of disparate components and applications of a computing environment, including a machine learning environment, are highly dependent upon the skill and knowledge of a system administrator. Also, conventional approaches for providing learning to machines or components of a computing environment, are not acceptable in complex and frequently revised computing environments.
Additionally, current enterprises and virtual infrastructure (VI) and network administrators prefer to plan and troubleshoot, for example, but not limited to, datacenters using business Applications and Tiers. Utilizing Applications and Tiers advantageously provides an abstraction level to manage infrastructure, resources and security planning.
Although many of the embodiments provided herein describe various auto discovery of Applications and Tiers it has now become important to have an appropriate and meaningful business name provided and assigned to the auto discovered Applications and Tiers.
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the present technology and, together with the description, serve to explain the principles of the present technology.
The drawings referred to in this description should not be understood as being drawn to scale except if specifically noted.
Reference will now be made in detail to various embodiments of the present technology, examples of which are illustrated in the accompanying drawings. While the present technology will be described in conjunction with these embodiments, it will be understood that they are not intended to limit the present technology to these embodiments. On the contrary, the present technology is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the present technology as defined by the appended Claims. Furthermore, in the following description of the present technology, numerous specific details are set forth in order to provide a thorough understanding of the present technology. In other instances, well-known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present technology.
Some portions of the detailed descriptions which follow are presented in terms of procedures, logic blocks, processing and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. In the present application, a procedure, logic block, process, or the like, is conceived to be one or more self-consistent procedures or instructions leading to a desired result. The procedures are those requiring physical manipulations of physical quantities. Usually, although not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in an electronic device.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the description of embodiments, discussions utilizing terms such as “displaying”, “identifying”, “generating”, “deriving”, “providing,” “utilizing”, “determining,” or the like, refer to the actions and processes of an electronic computing device or system such as: a host processor, a processor, a memory, a virtual storage area network (VSAN), virtual local area networks (VLANS), a virtualization management server or a virtual machine (VM), among others, of a virtualization infrastructure or a computer system of a distributed computing system, or the like, or a combination thereof. The electronic device manipulates and transforms data, represented as physical (electronic and/or magnetic) quantities within the electronic device's registers and memories, into other data similarly represented as physical quantities within the electronic device's memories or registers or other such information storage, transmission, processing, or display components.
Embodiments described herein may be discussed in the general context of processor-executable instructions residing on some form of non-transitory processor-readable medium, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types. The functionality of the program modules may be combined or distributed as desired in various embodiments.
In the Figures, a single block may be described as performing a function or functions; however, in actual practice, the function or functions performed by that block may be performed in a single component or across multiple components, and/or may be performed using hardware, using software, or using a combination of hardware and software. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure. Also, the example mobile electronic device described herein may include components other than those shown, including well-known components.
The techniques described herein may be implemented in hardware, software, firmware, or any combination thereof, unless specifically described as being implemented in a specific manner. Any features described as modules or components may also be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques may be realized at least in part by a non-transitory processor-readable storage medium comprising instructions that, when executed, perform one or more of the methods described herein. The non-transitory processor-readable data storage medium may form part of a computer program product, which may include packaging materials.
The non-transitory processor-readable storage medium may comprise random access memory (RAM) such as synchronous dynamic random access memory (SDRAM), read only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), FLASH memory, other known storage media, and the like. The techniques additionally, or alternatively, may be realized at least in part by a processor-readable communication medium that carries or communicates code in the form of instructions or data structures and that can be accessed, read, and/or executed by a computer or other processor.
The various illustrative logical blocks, modules, circuits and instructions described in connection with the embodiments disclosed herein may be executed by one or more processors, such as one or more motion processing units (MPUs), sensor processing units (SPUs), host processor(s) or core(s) thereof, digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), application specific instruction set processors (ASIPs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. The term “processor,” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. In addition, in some embodiments, the functionality described herein may be provided within dedicated software modules or hardware modules configured as described herein. Also, the techniques could be fully implemented in one or more circuits or logic elements. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of an SPU/MPU and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with an SPU core, MPU core, or any other such configuration.
The following terms will be frequently used throughout the application
With reference now to
System 200 of
System 200 also includes computer usable non-volatile memory 210, e.g., read only memory (ROM), coupled with bus 204 for storing static information and instructions for processor 206. Also present in system 100 is a data storage unit 212 (e.g., a magnetic or optical disc and disc drive) coupled with bus 204 for storing information and instructions. System 200 also includes an alphanumeric input device 214 including alphanumeric and function keys coupled with bus 204 for communicating information and command selections to one or more of processor 206. System 200 also includes a cursor control device 216 coupled with bus 204 for communicating user input information and command selections to one or more of processor 206. In one embodiment, system 200 also includes a display device 218 coupled with bus 204 for displaying information.
Referring still to
Many implementations of cursor control device 216 are known in the art including a trackball, mouse, touch pad, touch screen, joystick or special keys on alphanumeric input device 214 capable of signaling movement of a given direction or manner of displacement. Alternatively, it will be appreciated that a cursor can be directed and/or activated via input from alphanumeric input device 214 using special keys and key sequence commands. System 200 is also well suited to having a cursor directed by other means such as, for example, voice commands. In various embodiments, alpha-numeric input device 214, cursor control device 216, and display device 218, or any combination thereof (e.g., user interface selection devices), may collectively operate to provide a graphical user interface (GUI) 230 under the direction of a processor (e.g., processor 206). GUI 230 allows user to interact with system 200 through graphical representations presented on display device 218 by interacting with alpha-numeric input device 214 and/or cursor control device 216.
System 200 also includes an I/O device 220 for coupling system 200 with external entities. For example, in one embodiment, I/O device 220 is a modem for enabling wired or wireless communications between system 200 and an external network such as, but not limited to, the Internet.
Referring still to
First, a brief overview of an embodiment of the present machine learning based application discovery using netflow information invention, is provided below. Various embodiments of the present invention provide a method and system for automated feature selection within a machine learning within a virtual machine computing network environment.
More specifically, the various embodiments of the present invention provide a novel approach for automatically providing identifying communication patterns between virtual machines (VMs) of different instantiations in a virtual computing network environment to discover applications and tiers of the applications across various components in order to improve access and optimize network traffic by clustering application with a common host in the computing environment. In one embodiment, an IT administrator (or other entity such as, but not limited to, a user/company/organization etc.) registers multiple number of machines or components, such as, for example, virtual machines onto a network system platform, such as, for example, virtual networking products from VMware, Inc. of Palo Alto.
In the present embodiment, the IT administrator is not required to generate agent-based application discovery through any extraneous operating system intrusions of the virtual machines with the corresponding service type or indicate the importance of the particular machine or component. Further, the IT administrator is not required to manually list only those machines or components which the IT administrator feels warrant protection from excessive network traffic utilization. Instead, and as will be described below in detail, in various embodiments, the present invention, will automatically determine which applications and tiers with the associated machines or components are to be monitored by machine learning.
As will also be described below, in various embodiments, the present invention is a computing module which integrated within an application discovery monitoring and optimization system. In various embodiments, the present application discovery and optimization invention, will itself identify application span across multiple diverse virtual machines and determines the associations of these application and clusters the application so that that the application being hosted by a common host are grouped together for easy access and identification after observing the activity by each of the machines or components for a period of time in the computing environment thereby enabling the machines to automatically learn where and how to access these applications and the iterations thereof.
Additionally, for purposes of brevity and clarity, the present application will refer to “machines or components” of a computing environment. It should be noted that for purposes of the present application, the terms “machines or components” is intended to encompass physical (e.g., hardware and software based) computing machines, physical components (such as, for example, physical modules or portions of physical computing machines) which comprise such physical computing machines, aggregations or combination of various physical computing machines, aggregations or combinations or various physical components and the like. Further, it should be noted that for purposes of the present application, the terms “machines or components” is also intended to encompass virtualized (e.g., virtual and software based) computing machines, virtual components (such as, for example, virtual modules or portions of virtual computing machines) which comprise such virtual computing machines, aggregations or combination of various virtual computing machines, aggregations or combinations or various virtual components and the like.
Additionally, for purposes of brevity and clarity, the present application will refer to machines or components of a computing environment. It should be noted that for purposes of the present application, the term “computing environment” is intended to encompass any computing environment (e.g., a plurality of coupled computing machines or components including, but not limited to, a networked plurality of computing devices, a neural network, a machine learning environment, and the like). Further, in the present application, the computing environment may be comprised of only physical computing machines, only virtualized computing machines, or, more likely, some combination of physical and virtualized computing machines.
Furthermore, again for purposes and brevity and clarity, the following description of the various embodiments of the present invention, will be described as integrated within a machine learning based applications discovery system. Importantly, although the description and examples herein refer to embodiments of the present invention integrated within a machine learning based applications discovery system with, for example, its corresponding set of functions, it should be understood that the embodiments of the present invention are well suited to not being integrated into a machine learning based applications discovery system and operating separately from a machine learning based applications discovery system. Specifically, embodiments of the present invention can be integrated into a system other than a machine learning based applications discovery system.
Embodiments of the present invention can operate as a stand-alone module without requiring integration into another system. In such an embodiment, results from the present invention regarding feature selection and/or the importance of various machines or components of a computing environment can then be provided as desired to a separate system or to an end user such as, for example, an IT administrator.
Importantly, the embodiments of the present machine learning based application discovery invention significantly extend what was previously possible with respect to providing applications monitoring tools for machines or components of a computing environment. Various embodiments of the present machine learning based application discovery invention enable the improved capabilities while reducing reliance upon, for example, an IT administrator, to manually monitor and register various machines or components of a computing environment for applications monitoring and tracking. This contrasts with conventional approaches for providing applications discovery tools to various machines or components of a computing environment which highly dependent upon the skill and knowledge of a system administrator. Thus, embodiments of present network topology optimization invention provide a methodology which extends well beyond what was previously known.
Also, although certain components are depicted in, for example, embodiments of the machine learning based applications discovery invention, it should be understood that, for purposes of clarity and brevity, each of the components may themselves be comprised of numerous modules or macros which are not shown.
Procedures of the present machine learning based automated application discovery using network flows information invention are performed in conjunction with various computer software and/or hardware components. It is appreciated that in some embodiments, the procedures may be performed in a different order than described above, and that some of the described procedures may not be performed, and/or that one or more additional procedures to those described may be performed. Further some procedures, in various embodiments, are carried out by one or more processors under the control of computer-readable and computer-executable instructions that are stored on non-transitory computer-readable storage media. It is further appreciated that one or more procedures of the present may be implemented in hardware, or a combination of hardware with firmware and/or software.
Hence, the embodiments of the present machine learning based applications discovery invention greatly extend beyond conventional methods for providing application discovery in machines or components of a computing environment. Moreover, embodiments of the present invention amount to significantly more than merely using a computer to provide conventional applications monitoring measures to machines or components of a computing environment. Instead, embodiments of the present invention specifically recite a novel process, necessarily rooted in computer technology, for improving network communication within a virtual computing environment.
Additionally, as will be described in detail below, embodiments of the present invention provide a machine learning based application discovery system including a novel search feature for machines or components (including, but not limited to, virtual machines) of the computing environment. The novel search feature of the present network optimization system enables ends users to readily assign the proper and scopes and services the machines or components of the computing environment, Moreover, the novel search feature of the present applications discovery system enables end users to identify various machines or components (including, but not limited to, virtual machines) similar to given and/or previously identified machines or components (including, but not limited to, virtual machines) when such machines or component satisfy a particular given criteria and are moved within the computing environment. Hence, as will be described in detail below, in embodiments of the present security system, the novel search feature functions by finding or identifying the “siblings” of various other machines or components (including, but not limited to, virtual machines) within the computing environment.
As stated above, feature selection which is also known as “variable selection”, “attribute selection” and the like, is an import process of machine learning. The process of feature selection helps to determine which features are most relevant or important to use to create a machine learning model (predictive model).
In embodiments of the present invention, a network topology optimization system such as, for example, provided in virtual machines from VMware, Inc. of Palo Alto, Calif. will utilize a network flow identification method to automatically identify application span across computing components and take remediation steps to improve discovery and access in the computing environment. That is, as will be described in detail below, in embodiments of the present network topology optimization invention, a computing module, such as, for example, the application discovery module 299 of
Additionally, it should be understood that in embodiments of the present machine learning based applications discovery module 299 of
Additionally, in one embodiment, the network optimizer of the present invention, micro-segments the network domain to enhance network traffic
Several selection methodologies are currently utilized in the art of feature selection. The common selection algorithms include three classes: Filter Methods, Wrapper Methods and Embedded Methods. In Filter Methods, scores are assigned to each feature based on a statistical measurement. The features are then ranked by their scores and are either selected to be kept as relevant features or they are deemed to not be relevant features and are removed from or not included in dataset of those features defined as relevant features. One of the most popular algorithms of the Filter Methods classification is the Chi Squared Test. Algorithms in the Wrapper Methods classification consider the selection of a set of features as a search result from the best combinations. One such example from the Wrapper Methods classification is called the “recursive feature elimination” algorithm. Finally, algorithms in the Embedded Methods classification learn features while the machine learning model is being created, instead of prior to the building of the model. Examples of Embedded Method algorithms include the “LASSO” algorithm and the “Elastic Net” algorithm.
Embodiments of the present application discovery invention utilize a statistic model to determine the importance of a particular feature within, for example, a machine learning environment.
With reference now to
Cluster 310 utilizes a host group 310 with a first host 314A, a second host 314B and a third host 314C. Each host 314A-314C executes one or more VM nodes 312A-312F of a distributed computing environment. For example, in the embodiment in
VM nodes in hosts 310 communicate with each other via a network 330. For example, the NameNode the functionality of a master VM node may communicate with the Data Node functionality via network 330 to store, delete, and/or copy a data file using a server filesystem. As depicted in the embodiment in
As further depicted in
With reference now to
Still referring to
In one embodiment, the machine learning approach is based on the principles that the overlap in terms of communication profile for a pair of endpoints from the same application is greater than that for a pair of endpoints from different application. Also, the communication graph, the degree of connectivity within an application is significantly greater than the degrees of connectivity between two distinct applications. The similarity of the communication profile and degree of connectivity of endpoints can be exploited to perform the effective clustering of endpoints. Based on these principles the discovery engine 420 utilizes a vector encoding of an endpoint based on the communication patterns with the other endpoints. All endpoints are treated as individual dimensions. The component of the vector in the individual dimension is based on the communication pattern with the corresponding endpoint. In one embodiment, the endpoint could also be treated as a point in the multi-dimensional Euclidean space and coordinates of the point is derived from its vector encoding.
In one embodiment, a set of endpoints which belong to the same application would have the same coordinates values in most of the dimensions whereas the same would not be true for two endpoints of different application. This may be represented by the formula
√(x1−y1)2+(x2−y2)2+ . . . +(xn−yn)2
Based on the Euclidean distance metric, the endpoints corresponding to the same application would relatively be in close proximity to each other compared to endpoints of different applications implemented by the present invention. In one embodiment, the identified application endpoints can be coupled to an application by utilizing micro-segmentation rules to exclude other endpoints from the application.
In one embodiment of the invention, the application boundary endpoints locations (but not necessarily requiring knowledge of the corresponding application's location) are used to define a software defined network to enhance, for example, the security of the application or the computing network environment. As shown in
In SDN 460, the network administrator can shape traffic from a centralized control console without having to touch individual switches in the network. The centralized SDN 460 controllers directs the switches to deliver network services wherever they are needed regardless of the specific connections between a server and devices. The SDN 460 architecture decouples the network control and forwarding functions enabling the network control to become directly programmable and the underlying infrastructure to be abstracted for applications and network services.
With reference now to
The flow layer 535 collects flows from the private cloud 510 and public cloud 520 using, for example, NetFlow and Flow Watcher logs respectively. The flow collection component 535 also collects VM inventory snapshots. With the help of inventory details, flow tuple information provided by 4 Tuple flow information component 540 is enriched with workload information. In one embodiment, the vRNI also enriches flows with traffic type information (e.g., for example East-West and North-South based on RFC 1918 Address Allocation for Private Internets).
Still referring to
The data normalization layer 551 filters out the flow information provided by flow collection 535. In one embodiment, the filtering of the flow data is based on the exclusion of flow data corresponding to Internet traffic and the exclusion of flow data based on user feedback in terms of subnets and port ranges. The data normalizer 551 optimizes the accuracy and time-complexity of the overall discovery process. Data normalization is important as flow data corresponding to dynamic server port or SSH traffic are not important communications from the perspective of identifying application and tier boundaries. For the user-case of application discovery these communications can be seen as noise data as these don't reveal any useful information about the application topology in the datacenter.
Disconnected component layer 552 takes normalized flow data as input. A communication graph is built based on the input flow data. In this graph, nodes correspond to endpoints and the directed edges between nodes represent communication between endpoints. Each of the edges in the communication graph can output is annotated with port information as metadata. Construction of the communication graph can output one or more weakly connected components. Each Weakly connected component is considered separately because in general, it would be the case that an application spans across multiple weakly connected components
Still referring to
The clustering layer 554 takes endpoint communication graph as input and generates clusters of endpoints. An output cluster would contain the endpoints of similar communication patterns. In one embodiment, the cluster layer 554 includes a connection matrix generation component, a dimension reduction component and a clustering component. The clustering layer 554 comprise the step of vectorization of endpoints, dimensionality reduction and clusters. In vectoring the endpoints, the adjacency matrix of the endpoint communication graph is created. For N endpoints a N*N adjacency matrix is created. Each row of the matrix corresponding to an endpoint can be seen as the vector representation of that endpoint in N dimension.
In reducing the dimensionality of the endpoints, for large number of endpoints (e.g., N endpoints) a clustering algorithm cannot be performed directly on the N-dimensional representation of endpoints obtained from the vectorization process. So, a PCA based on singular value decomposition to reduce the number of dimensions is used. To choose the optimal number of dimensions the cumulative explained variance ratio is used as a function of the number of dimensions, the optimal number of dimensions should retain 90% of the variance. Using PCA a representation of endpoints in lower dimensional space such that the variance in the reduced dimensional space is maximized.
After the dimensionality reduction, clustering of the datapoints is performed. In one embodiment, two different clustering algorithms may be used. In a first instance, k-means++ algorithm is used to run cluster with random values of initial cluster centers. A Sum of square distances analysis is used to optimize the final set of clusters and the number of iterations to get the final cluster. Even though the running time of k-means++ is better than other clustering algorithms but is does not show good results with noisy data or outliers.
Still with reference to
In one embodiment, all parts of an application are retrieved and two tags for each port is created (e.g., for port 442 two tags are created—Hosted 443, Accessed:443). A matrix with the tags created are matrixed as columns. Each row of the matrix would correspond to an endpoint. If an endpoint is hosting port 443 then the corresponding cell (Hosted:443) in the matrix is marked as 1 (otherwise 0), similarly, if an endpoint is accessing port 443 then the corresponding cell (Accessed: 443) is marked as 1 (otherwise 0). The columns of the above connection matrix represent the multiple dimensions of the endpoint vector. After that, the dimension reduction algorithm and clustering algorithms are applied to group endpoints within an application across multiple tiers.
Referring now to
At the disconnected component generation step 615, a network communication graph is created based on the input flow data and then produces multiple weakly connected components as output. In one embodiment, for each weakly connected component, an outlier detection is invoked. At outlier detection step 620, a check of the existence is made at Step 625. If any outliers are detected, processing continues at step 630 where the data flow presented to the outlier is forwarded to clustering layer and processing continues at step 630. If on the other hand, no outliers are detected, processing continues at step 640 where the data flow presented to the outlier at step 630 is classified as an application.
At Step 630, if the cluster layer finds more than one cluster in the input connected component a determination is made at step 635 if more than one cluster component is present. If more than one cluster component is present, the information is forwarded to the disconnected component generation at step 615 for processing. If on the other hand, a single cluster component is detected at step 635, the information is forwarded to step 640 where the connected component information is categorized as an application.
At Step 645 the application component from step 640 is processed to be associated with its corresponding tiers.
Based on the application defined by the applications administrator in the computing environment (e.g., VMware's SDDC computing platform), Oepm Staging and Oepm Prod groups should have been part of the same application. However, based on the observed communication patterns, we can see that there are too many communication links within each of these groups but hardly see any communication going across these groups. Hence the present auto-detect component detects Oepm Staging and Oepm Prod groups as two separate applications based on the communication patterns.
Referring now to
As will be described below in detail, various embodiments of the present invention also automatically provide and assign appropriate and meaningful names to automatically discovered Applications and Tiers within a virtual infrastructure (VI). In embodiments of the present invention, the automatically provided/assigned names are meaningful to enable a VI and network administrator to refer these Applications and Tiers having the automatically assigned names, for example but not limited to, security and planning, migration, troubleshooting, day-2 operations and disaster recovery use cases. In various embodiments, the assigned names also represent the business goal(s) of the Applications and Tiers.
For the purpose of describing embodiments of the present invention, consider the following example. A virtual infrastructure (VI) customer, for example, but not limited to, a datacenter client, wants a product to automate network troubleshooting workflow starting from a support ticket itself which only has business details. For example, the VI customer's support ticket only states “a VI portal is responding very slowly”, or “VI portal is down”. In embodiments of the present invention, the VI product will automatically point to the exact discovered application and automate a network troubleshooting workflow based merely on the application name or other details provided in the customer's support ticket. Hence, as will be described below in detail, in embodiments of the present invention, because the discovered application has been provided/assigned a meaningful business name/label, the troubleshooting of various application support tickets can be made completely automated. In various embodiments of the present invention, a customer's support ticket is received and embodiments of the present invention will understand the underlying business meaning and map the appropriate Application to the customer's support ticket and automatically execute an appropriate application troubleshooting workflow. Thus, embodiments of the present invention utilize machine learning/text mining and statistical approaches to obtain the above-described objectives and advantages.
As mentioned above, embodiments of the present invention automatically provide and assign names to Applications and Tiers using various properties of the constituent members of the Applications and Tiers and automatically select a relevant property for the naming thereof. Embodiments of the present invention use various text mining approaches to identify the best property which can then be used to name the Application and Tier. Furthermore, embodiments of the present invention, to assign a meaningful name, identify words in the properties which represent the Applications and Tiers uniquely to ensure that the assigned name is appropriate for the Applications and Tiers.
With reference now to
At 902 of
With reference still to 902 of
Referring still to 902 of
With reference next to 904 of
With reference still to 904 of
With reference next to 906 of
With reference next to 908 of
Referring still to 908 of
With reference again to 908 of
Referring still to 908 of
tf(t,d)=count of t in d/number of words in d
With reference again to 908 of
Referring still to 908 of
df(t)=occurrence of t in documents
Referring once more to 908 of
Referring still to 908 of
idf(t)=N/df(t)
With reference again to 908 of
Referring still to 908 of
idf(t)=log(N/(df(t)+1))
Referring once again to 908 of
tf−idf(t, d)=tf(t, d)*log(N/(df(t)+1))
Various embodiments of the present invention, then utilize the TF-IDF score to fetch the most relevant tokens from the documents of the Applications. In various embodiments of the present invention, the tokens with highest TF-IDF value are then used in the suffix portion of the Application/Tier name as such tokens and the corresponding suffix uniquely represent the Application/Tier.
With reference next to 910 of
With reference next to 912 of
As described above, in various embodiments of the present invention, the prefix portion of the automatically generated name is assigned using the tokens with highest TF score. Further, in various embodiments of the present invention, the tokens with highest TF score usually represent the common part of the names of the hierarchical naming scheme such as, but not limited to, org name, BU (Business Unit) name, location, and the like. Further, in various embodiments of the present invention, the suffix portion of the name represents the tokens which correspond to the Application and Tier uniquely. Hence, in various embodiments of the present invention, tokens with highest TF-IDF score are used to automatically assign the suffix portion of the name.
An example operation of an embodiment of the present invention is provided below. Fetch a set of property of the all the VMs in the applications and tiers. The properties can be modified as per customer requirement. The fetched properties should be stored in local store for further use.
-dc
.example.com
.example.com
.example.com
.example.com
.example.com
.example.com
.example.com
example.com
-portal1
.example.com
.example.com
indicates data missing or illegible when filed
For each property type tokenize the property value of the VMs/members under consideration. Store the tokenized data in as lists. These lists are called documents. Hence, various embodiments of the present invention will have a document for each property type for each Application/Tier. The present example considers, two properties name, security groups. In the example table we have 3 applications where app1, app2 and app3.
Various embodiments of the present invention tokenize the VM name and security groups as mentioned below.
vmware-jira-prod-web-vm1 tokenized to {vmware, jira, prod, vm}
Various embodiments of the present invention remove the number from the tokens. Each group's token is called a document (d). For app1 various embodiments of the present invention will obtain two documents as shown below.
After step 3 embodiments of the present invention call the Property selection layer. For each Application/Tier, this layer selects the property to be used for naming of the application tier.
From the above it is clear that hostname with highest mean is the best property to name the application.
Embodiments of the present invention then call the Name generation layer which calculates the name of the application using both TF and TF-IDF matrix.
Once again, although various embodiments of the present application discovery invention described herein refer to embodiments of the present invention integrated within a virtual computing system with, for example, its corresponding set of functions, it should be understood that the embodiments of the present invention are well suited to not being integrated into an application discovery system and operating separately from an applications discovery system. Specifically, embodiments of the present invention can be integrated into a system other than a security system. Embodiments of the present invention can operate as a stand-alone module without requiring integration into another system. In such an embodiment, results from the present invention regarding feature selection and/or the importance of various machines or components of a computing environment can then be provided as desired to a separate system or to an end user such as, for example, an IT administrator.
Additionally, embodiments of the present invention provide a machine learning based application discovery system including a novel search feature for machines or components (including, but not limited to, virtual machines) of the computing environment. The novel search feature of the present machine learning based applications discovery system enables ends users to readily assign the proper and scopes and services the machines or components of the computing environment, Moreover, the novel search feature of the present machine learning based application discovery system enables end users to identify various machines or components (including, but not limited to, virtual machines) similar to given and/or previously identified machines or components (including, but not limited to, virtual machines) when such machines or component satisfy a particular given criteria. Hence, in embodiments of the present security system, the novel search feature functions by finding or identifying the “siblings” of various other machines or components (including, but not limited to, virtual machines) within the computing environment.
The examples set forth herein were presented in order to best explain, to describe particular applications, and to thereby enable those skilled in the art to make and use embodiments of the described examples. However, those skilled in the art will recognize that the foregoing description and examples have been presented for the purposes of illustration and example only. The description as set forth is not intended to be exhaustive or to limit the embodiments to the precise form disclosed. Rather, the specific features and acts described above are disclosed as example forms of implementing the Claims.
Reference throughout this document to “one embodiment,” “certain embodiments,” “an embodiment,” “various embodiments,” “some embodiments,” “various embodiments”, or similar term, means that a particular feature, structure, or characteristic described in connection with that embodiment is included in at least one embodiment. Thus, the appearances of such phrases in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics of any embodiment may be combined in any suitable manner with one or more other features, structures, or characteristics of one or more other embodiments without limitation.