Patent Publication Number: US-2019180141-A1

Title: Unsupervised machine learning for clustering datacenter nodes on the basis of network traffic patterns

Description:
BACKGROUND 
     Clustering nodes performing similar functions for security policy enforcement within a datacenter is a hard problem. Network administrators today either group nodes together using existing knowledge of the applications running on the nodes, by the tier (Web, App, or DB tier), or by grouping together nodes on the basis of application or service ports open on them. These methods require domain knowledge, knowledge of the network topology, and that the administrator keeps track of all new node and application deployments. As new applications and nodes are added, they have to be moved to an existing cluster of nodes, to enforce security policies. 
     The difficulty is only compounded by the fact that clusters are not inherently static. Once network administrators have identified a cluster, there is little guarantee that its constituent nodes will continue to behave in a similar way, or that its future traffic patterns will match its past patterns. Thus, when applications and nodes are constantly being added and removed, nodes are shifting between clusters, and the definition of a cluster itself is dynamic, keeping track of clusters becomes time-consuming and tedious. 
     BRIEF SUMMARY 
     For a managed network including multiple nodes providing multiple services and executing multiple applications some embodiments provide a method for generating groupings of network addresses associated with different applications or services. The method analyzes network traffic patterns to generate the groupings of network addresses. Network traffic patterns are related to the different flows in the network. The method analyzes information about the different flows such as some combination of the network addresses in the network that are a source or destination of the flow, the source or destination port, the number of packets in each flow, the number of bytes exchanged during the life of the flow, a start time of a flow, the direction of a flow, the protocol (e.g., TCP or UDP), and the duration of the flow. In some embodiments, the information is collected as part of an internet protocol flow information export (IPFIX) operation or a tcpdump operation. 
     The information about each flow is used to generate a single data point (“word”) associated with at least one network address (“document”) in the managed network that is a source or destination of the flow. In some embodiments, the information is processed to bin certain attributes of a flow, such as the number of packets in each flow, the number of bytes exchanged during the life of the flow, and the duration of the flow, in order to generate the data point. Additional information about the time the flow occurred is also collected in some embodiments to provide the ability to analyze the data based on time intervals. Over time, a corpus of data points associated with network addresses or nodes is developed. This corpus of data points in some embodiments is organized by “document” (e.g., network address or node). 
     A probabilistic topic modeling algorithm (e.g., latent Dirichlet allocation (LDA)) is used to analyze the corpus to identify the composition of a number of topics contained in the corpus. In some embodiments, the number of topics is set by a user. The topics in some embodiments are defined by a probability distribution over the “words” (e.g., information about an individual flow) in the corpus. Each topic in some embodiments represents a traffic pattern that the probabilistic topic modeling algorithm has inferred from the corpus. These inferred traffic patterns may represent the traffic pattern associated with a particular application or service or a subset of traffic associated with the particular application or service. The distribution of topics within the individual “documents” (e.g., network addresses) is also calculated as part of the probabilistic topic modeling algorithm. 
     Once individual network addresses or nodes are associated with probability distributions over the topics, a clustering algorithm (e.g., k-means clustering) can be applied to identify clusters or groups of network addresses or nodes sharing similar probability distribution over the topics. It is expected that network addresses or nodes (e.g., servers) running the same application will show similar network traffic patterns and therefore have similar probability distribution over the topics. These clusters in some embodiments are presented to a network administrator for the network administrator to use in determining which policies (e.g., security policies, firewall policies, etc.) to apply to each cluster of network addresses or nodes and whether certain nodes have been placed in an incorrect cluster. In some embodiments, once a cluster has been identified and a policy applied to the cluster, new network addresses or nodes that are identified as belonging to the cluster have the same policy applied automatically. 
     In some embodiments, data is collected and analyzed periodically. The “documents” defined for some embodiments using periodical analysis include both network address and time stamp. A network administrator defines the granularity of the time stamps in some embodiments to monitor changes in network traffic patterns over time for each network address or node and/or for the network as a whole. In some embodiments, cluster identification depends on a subset of the corpus (e.g., “documents” having either a current time stamp or an immediately prior time stamp). 
     The resulting probability distribution over the topics for each network address or node is used in some embodiments to update cluster membership or, for newly added network addresses or nodes, to assign the new network address or node to an existing cluster. For each network address or node, a probability distribution over the topics at a given time is stored in some embodiments. The stored distributions are then used to determine a divergence over time of the application or service provided by the network address or node (as indicated by the probability distribution over topics). Additionally, the stored distributions can be used to detect anomalous behavior. 
     The preceding Summary is intended to serve as a brief introduction to some embodiments of the invention. It is not meant to be an introduction or overview of all inventive subject matter disclosed in this document. The Detailed Description that follows and the Drawings that are referred to in the Detailed Description will further describe the embodiments described in the Summary as well as other embodiments. Accordingly, to understand all the embodiments described by this document, a full review of the Summary, Detailed Description, and the Drawings is needed. Moreover, the claimed subject matters are not to be limited by the illustrative details in the Summary, Detailed Description, and the Drawings, but rather are to be defined by the appended claims, because the claimed subject matters can be embodied in other specific forms without departing from the spirit of the subject matters. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The novel features of the invention are set forth in the appended claims. However, for purposes of explanation, several embodiments of the invention are set forth in the following figures. 
         FIG. 1  conceptually illustrates a process for identifying clusters of network addresses exhibiting similar traffic patterns. 
         FIG. 2  conceptually illustrates a set of flow records and possible sets of words that can be generated based on the flow records. 
         FIG. 3  conceptually illustrates two word-frequency tables for a set of documents. 
         FIGS. 4A-B  conceptually illustrate initial and final probability distributions of words in topics and topics in documents. 
         FIG. 5  conceptually illustrates identified clusters of similar documents. 
         FIG. 6  conceptually illustrates a process for providing identified clusters to a user and receiving input to apply policies. 
         FIG. 7  illustrates an exemplary set of DCNs in different tiers of two multi-tier applications being organized into separate microsegments in three stages. 
         FIG. 8  conceptually illustrates a process for updating the identification of clusters and documents in clusters. 
         FIG. 9  conceptually illustrates identified clusters of similar documents at different times. 
         FIG. 10  conceptually illustrates a topic probability table for a single document at different points in time. 
         FIG. 11  conceptually illustrates a process for monitoring a particular document for changes in behavior over time. 
         FIG. 12  conceptually illustrates an electronic system with which some embodiments of the invention are implemented. 
     
    
    
     DETAILED DESCRIPTION 
     In the following description, numerous details are set forth for the purpose of explanation. However, one of ordinary skill in the art will realize that the invention may be practiced without the use of these specific details. In other instances, well-known structures and devices are shown in block diagram form in order not to obscure the description of the invention with unnecessary detail. 
     For a managed network including multiple nodes providing multiple services and executing multiple applications some embodiments provide a method for generating groupings of network addresses associated with different applications or services. The method analyzes network traffic patterns to generate the groupings of network addresses. Network traffic patterns are related to the different flows in the network. The method analyzes information about the different flows such as some combination of the network addresses in the network that are a source or destination of the flow, the source or destination port, the number of packets in each flow, the number of bytes exchanged during the life of the flow, a start time of a flow, the direction of a flow, the protocol (e.g., TCP or UDP), and the duration of the flow. 
     As used in this document, the term flow, traffic flow, or data message flow refers to a set of packets or data messages exchanged between a source network address and a destination network address that share identifying characteristics. In some embodiments, the shared characteristics are an n-tuple (e.g., a 5-tuple made up of header fields such as source Internet protocol (IP) address, source port number, destination IP address, destination port number, and protocol). A flow consists of all packets in a specific transport connection in some embodiments. 
     As used in this document, the term data packet, packet, data message, or message refers to a collection of bits in a particular format sent across a network. It should be understood that the term data packet, packet, data message, or message may be used herein to refer to various formatted collections of bits that may be sent across a network, such as Ethernet frames, IP packets, TCP segments, UDP datagrams, etc. While the examples below refer to data packets, packets, data messages, or messages, it should be understood that the invention should not be limited to any specific format or type of data message. Also, as used in this document, references to L2, L3, L4, and L7 layers (or layer 2, layer 3, layer 4, layer 7) are references to the second data link layer, the third network layer, the fourth transport layer, and the seventh application layer of the OSI (Open System Interconnection) layer model, respectively. 
       FIG. 1  conceptually illustrates a process  100  for identifying clusters of network addresses exhibiting similar traffic patterns. The process collects (at  110 ) information regarding flows involving nodes or network addresses in a computer network. In some embodiments, the information is collected as part of an internet protocol flow information export (IPFIX) operation or a tcpdump operation. The information included in some embodiments includes some combination of source network (e.g., IP) address, destination network address, source port, destination port, the number of packets in each flow, the number of bytes exchanged during the life of the flow, a start time of a flow, and the duration of the flow. One of ordinary skill in the art will appreciate that other methods of collecting information regarding traffic flows also provide the data necessary to perform the method. 
     The process than generates (at  120 ) a set of data points (“words”) associated with at least one network address or node (“document”) in the managed network that is a source or destination of the flow. The information about each flow is used to generate a single data point (“word”) associated with at least one network address or node (“document”) in the managed network that is a source or destination of the flow. In some embodiments, the information is processed to bin certain attributes of a flow such as the number of packets in each flow, the number of bytes exchanged during the life of the flow, and the duration of the flow to generate the data point. The bins may be organized in any way that is useful such as bins of equal size (e.g., each 10000 bytes or 100 packets exchanged is a new bin) or logarithmic/exponential bins (e.g., bins broken up in powers of ten, [10 0 -10 1 ), [10 1 -10 2 ), [10 2 -10 3 ), etc.). A person of ordinary skill in the art would recognize that other types of bin distributions may be useful depending on the situation. Additional information about the time the flow occurred is also collected in some embodiments to provide the ability to analyze the data based on time intervals. Details about flow information collection and word generation are provided in  FIG. 2 . 
       FIG. 2  conceptually illustrates a set of flow records ( 205 ) and possible sets of words ( 215  and  225 ) that are generated based on the flow records in different embodiments.  FIG. 2  shows a set of flow records  205  that includes six flows, flows  201 A-F, for which data relating to the flow data fields  210  is collected. Flow data fields  210  include a source IP address, destination IP address, bytes exchanged, packets exchanged, source port, duration of the flow in milliseconds, a timestamp (e.g., a timestamp when the first packet of the flow is received in UNIX time), the protocol, and a direction (e.g., to (“in”) or from (“out”) the IP address that defines a document). For the sake of simplifying the example, all flow records are from the IP addresses of interest. Additional or alternative fields in some embodiments include a destination port and other relevant fields given the context. One of ordinary skill in the art will appreciate that other embodiments collect only a subset of the flow data fields  210 . 
     Once data regarding flows has been collected, words are generated.  FIG. 2  illustrates word lists  215  and  225  as two possible word lists that can be generated based on flows  201 A-F. To generate each of the word lists  215  and  225 , the data (except for the source port) for each flow is organized into summarized data (i.e., subnets of IP addresses; logarithmic bins for each of bytes, packets, and duration; and hours for the time stamp). As noted above the summarization in different embodiments may be done differently. For example, timestamps may be organized by day, or to distinguish weekdays from weekends. Additionally, the same data in some embodiments is summarized differently for independent analyses of the flow traffic. For example, a network administrator may wish to identify clusters over all time and ignore the timestamp data entirely, while at the same time analyzing how the clusters or network traffic relating to a particular network address change over the course of multiple days with timestamps summarized into 6-hour blocks. 
     Word list  215  illustrates a set of words generated using a set of word fields  220  that includes a destination IP subnet (assuming a /24 subnet mask), the number of bytes, packets, and duration of the flow in milliseconds binned using logarithmic scales, the source port, and an hour during which the flow originated. Word list  225  uses a similar set of word fields  230  that omits the destination IP subnet and hour fields as irrelevant, for example if a user is not interested in time behavior and is concerned only with the files that a source IP address is serving but not the destinations that they are being served to. In each of word lists  215  and  225 , four words are identified that summarize the data collected for the flows. As additional data is collected more words are expected to be identified. 
     Returning to  FIG. 1 , the process generates (at  130 ) a set of network addresses or nodes (“documents”) and their associated summarized data flows (“words”) from the collected data. For each flow, the collected flow information indicates, in either a source or destination network address, a network address or node that defines a “document” which is then associated with the word that the flow information defines. As the data for the individual flows is analyzed word counts per document are developed that will be used to identify topics and eventually clusters of related addresses or nodes. Over time, a corpus of data points (“words”) associated with network addresses or nodes is developed. This corpus of data points in some embodiments is organized by “document” (e.g., network address or node).  FIG. 3  shows an example of a word count per document for the flows identified in  FIG. 2  and an example of a table for a set of M documents over a larger number of flows from which V words have been identified. 
       FIG. 3  conceptually illustrates two word-frequency tables for a set of documents, one ( 305 ) for the reduced set of flows depicted in  FIG. 2  and one ( 310 ) an example of a full table based on a larger set of flows. Word frequency table  305  represents a word frequency table for the six flows depicted in  FIG. 2 . IP address 192.168.1.100 is identified as document 1 and is associated with word 1 with frequency 2 and word 4 with frequency 1, while IP address 192.168.1.110 is identified as document 2 and is associated with word 2 with frequency 2 and word 3 with frequency 1. As more data is received, eventually a word frequency table such as word frequency table  310  is generated for M identified documents (e.g., network addresses or nodes) and V unique words (e.g., summarized flow characteristics). 
     Returning to  FIG. 1 , the process analyzes (at  140 ) the documents (or the word frequency table) to calculate probability distributions of topics in the documents. A probabilistic topic modeling algorithm (e.g., latent Dirichlet allocation (LDA)) is used in some embodiments to analyze the corpus. The analysis in some embodiments is described in relation to  FIGS. 4A-B . Before the analysis begins, a number of topics to use (e.g., K topics) in the analysis is determined. The number of topics in some embodiments is chosen by a user, while in some embodiments the number of topics is chosen by the process based on the number of documents and words identified. The analysis begins by generating two tables: a word-probability table  410  over the topics and a topic-probability table  420  over the documents. The initial generation of tables  410 A and  420 A assigns words to topics with a probability distribution and assigns topics to documents with a probability distribution. In some embodiments (as in  FIG. 4A ), the initial distributions are random distributions while in other embodiments the initial distributions are uniform distributions or some other fixed initial distribution. 
     The probabilistic topic modeling algorithm in some embodiments then iterates through a series of calculations relating to the probability of generating the documents including the identified words with the identified frequencies (table  310 ) based on the word-probability composition of the topics (table # 410 ) and the topic-probability composition of the documents (table  420 ). Tables  410  and  420  are adjusted in each iteration until a sufficiently stable set of probability distributions is achieved in some embodiments.  FIG. 4B  illustrates a sufficiently stable set of word-probability distributions over the topics (table # 410 ) and topic-probability distributions over the documents. Each topic in some embodiments represents a traffic pattern that the probabilistic topic modeling algorithm has inferred from the corpus. These inferred traffic patterns may represent the traffic pattern associated with a particular application or service or a subset of traffic associated with the particular application or service. The probability distributions of topics over the documents can then be used to evaluate the similarity of different documents (e.g., network addresses or nodes) and identify clusters of similar documents. 
     Returning to  FIG. 1 , once individual network addresses or nodes are associated with probability distributions over the topics (at  140 ), documents are compared (at  150 ) to identify document clusters (e.g., network addresses sharing similar traffic patterns as indicated by similar topic-probability distributions). In some embodiments, a clustering algorithm (e.g., k-means clustering) can be applied to identify clusters or groups of network addresses or nodes sharing similar probability distribution over the topics. It is expected that network addresses or nodes (e.g., servers) running the same application will show similar network traffic patterns and therefore have similar probability distribution over the topics. In some embodiments, the clustering algorithm calculates a distance between documents (e.g., using a Jensen-Shannon divergence or distance) to determine clusters of sufficiently-similar documents. A threshold distance is used to determine whether documents are sufficiently similar in some embodiments. The threshold distance may be measured from a centroid, medoid, median, or mean of an identified cluster at each iteration of the clustering algorithm. The calculated distance, in some embodiments, is a measurement of the dissimilarity of topic probability distribution between documents.  FIG. 5  provides a graphical representation of “similarity” in a 2-topic space. 
       FIG. 5  conceptually illustrates identified clusters of similar documents.  FIG. 5  shows a 2-dimensional space with each axis representing the probability associated with one of two topics (topic 1 (x-axis) and topic 2 (y-axis)). Documents  520  are plotted based only on the probability of each document&#39;s association with the topic, for example a document  520  having a probability associated with Topic 1 of 0.4 and a probability associated with Topic 2 of 0.1 would be plotted at (0.4, 0.1) using Cartesian coordinates.  FIG. 5  illustrates three identified clusters (i.e., clusters  510 A-C) based on the distribution in this 2-dimensional space. Cluster  510 A in this example is correlated to topic 2 with a relatively high probability and to topic 1 with a smaller, but still significant, probability. Cluster  510 B in this example is correlated to topics 1 and 2 with a relatively low probability. Cluster  510 C in this example is correlated to topic 1 with a relatively high probability and to topic 2 with a smaller, but still significant, probability. In this two-dimensional example, the distance between points in Cartesian space is related to the distance between documents calculated using the clustering algorithm. This simplified example is merely to provide a basic understanding of the process used to determine similarity in the full K-dimensional space. Once clusters have been identified, Process  100  ends. In some embodiments, the identified documents are automatically clustered according to the identified clusters. Process  100  may be run as an initialization process, or may be run as an independent analysis tool (e.g., using timestamp information) to develop knowledge of clusters and network traffic patterns for particular network addresses or nodes over time. In some embodiments, process  100  is followed by process  600  as depicted in  FIG. 6 . 
       FIG. 6  conceptually illustrates a process for providing identified clusters to a user and receiving input to apply policies. Process  600  displays (at  610 ) the identified clusters to a network administrator. In some embodiments, the display is part of a user interface (e.g., a graphical user interface or a command-line interface). A network administrator in some embodiments would review the identified clusters to determine whether they made sense based on his knowledge of the network structure. In some cases, this would be useful to classify network addresses or nodes that were at the boundary of a cluster in the K-dimensional space or to indicate that a given network address or node is not appearing in the expected cluster. 
     After reviewing the suggested clusters, the process receives (at  620 ) input from the user to accept or adjust the identified cluster membership. The input in some embodiments changes the number of clusters based on network structure. For example, if two web servers for different internal clients (e.g., divisions or product lines) are placed in a cluster based on the similarity of web server traffic, an administrator may add a separate cluster in which one set of web servers is placed. 
     After receiving the input (at  620 ) to accept or adjust the cluster membership, the process receives at ( 630 ) input to associate each cluster with a set of policies. In some embodiments, the policies are security policies that are applied based on the applications or services provided by the network addresses or nodes in the cluster. Security policies in some embodiments include any combination of access control lists (ACLs), firewalls, and encryption policies. The process ends and the policies associated with each cluster are applied to the network addresses or nodes for that cluster. 
     Identified clusters, in some embodiments, correspond to microsegments in a network. A microsegment, as used in this document, refers to a set of compute nodes (e.g., VMs) in a larger network that a user desires to separately protect (e.g., using a distributed firewall applying microsegment-specific firewall rules). In some embodiments, separately protecting microsegments provides additional security against data breaches within a datacenter by not allowing east-west traffic within the datacenter unless it is a trusted communication. Each microsegment may have specific policies that are applicable for the compute nodes in the microsegment but are unnecessary for others. In some embodiments, a microsegment is created or identified for each type of application executing in the logical network. In some embodiments, each tier in a multi-tier application defines a separate microsegment. For example, a multi-tiered application may have a Web tier, an App tier, and a Database (DB) tier that an administrator desires to protect with different firewall rules. 
       FIG. 7  illustrates an exemplary set of DCNs  705 - 765  in different tiers of two multi-tier applications being organized into separate microsegments in three stages. The organization into microsegments, in some embodiments, is based on the processes depicted in  FIGS. 1 and 6  discussed above and would occur similarly for multiple applications, each associated with a different “document” (e.g., IP address), executing on a single DCN.  FIG. 7  depicts DCNs  705  and  710  executing a first Web tier (Web A) for a first multi-tier application and DCNs  715  and  720  executing a second Web tier (Web B) for a second multi-tier application.  FIG. 7  also depicts Application tier DCNs  725 - 740 , Database tier DCNs  745 - 755 , and service DCNs  760 - 765  (e.g., load balancers) that are each associated with one of the multi-tier applications. However, at stage  700   a , the traffic patterns between the different tiers and different applications have not been recorded and no relationship between the different DCNs has been identified. 
     At stage  700   b , flows between different DCNs are recorded and traffic patterns emerge (as conceptually shown by the lines connecting different DCNs in the figure). Each DCN in some embodiments will have its own network address (e.g., IP address) that defines a document used to identify clusters as in process  100  of  FIG. 1 . These traffic patterns can then be used to group the DCNs into clusters as described above in relation to  FIGS. 1 and 6 . 
     Once the clusters of similar DCNs are identified each cluster (i.e., microsegment) in some embodiments has a separate set of firewall rules applied. Such firewall rules in some embodiments are based on a positive control model that defines permitted traffic in the network (e.g., implementing a least privilege and unit-level trust model). In some embodiments, firewall rules are based on a negative control model that defines forbidden traffic, but allows all other traffic. Some exemplary firewall rules applicable to the microsegments of  FIG. 7  include: (1) allowing flows from web DCNs (e.g., servers) to application DCNs, (2) allowing flows from application DCNs to database DCNs, and (3) forbidding (e.g., dropping) flows from web DCNs to database DCNs. Other firewall rules are derived based on different application related criteria. 
     In some embodiments, once the clusters have been defined using process  100  or processes  100  and  600 , additional nodes or network addresses that are added to the computer network are added to the identified (or identified and verified) clusters based on a subsequent use of process  100  based on new data that reflect the flows related to the additional network addresses or nodes collected since their addition. The newly added network addresses or nodes in some embodiments have the policies of the cluster applied automatically without needing input from a user. 
       FIG. 8  conceptually illustrates a process  800  for updating the identification of clusters and documents in clusters. The description of process  800  assumes that process  100  (or a similar process for initially identifying clusters) has already been performed. The process  800  in some embodiments is done periodically to update the cluster memberships. Additionally, the process  800  is used in some embodiments to monitor the changes in the cluster memberships and the probability distributions over topics for individual documents over time. 
     Process  800  begins (at  810 ) by collecting additional information regarding network traffic. The additional data is collected continuously during certain time periods. In some embodiments, process  800  is run periodically (e.g., every 6 hours) or after the addition of a certain number of network addresses or nodes and the additional information is collected for a limited time (e.g., 1 hour) so as not to produce too big a burden on the network. 
     The process then analyzes the additional collected information and updates (at  820 ) the corpus based on the additional collected information. In some embodiments, the collected information includes new “words” or “documents.” These new words may relate to newly added network addresses or nodes (new “documents”) or may indicate a new type of behavior of existing nodes. In some embodiments, each set of additional collected data is time-stamped to enable a user to define the corpus based on a particular subset of the collected data or to perform multiple analyses based on different combinations of data. 
     The process then analyzes (at  830 ) the updated corpus to identify updated topics and calculate the probability distributions over the topics for the updated set of documents. The updated corpus in some embodiments includes all previously collected information. In some embodiments, a subset of collected information is analyzed to determine current probability distributions over the topics for the updated set of documents. The subset of previously collected information of some embodiments is the information collected in the current time period and the immediately prior time period (e.g., if we assume that the current probability distribution depends only on the immediately prior distribution (a Markovian assumption)). 
     After analyzing (at  830 ) the corpus, the process compares (at  840 ) the probability distributions over the topics for the updated set of documents to identify the clusters of similar documents. In some embodiments, the identified clusters are based on the previously-identified cluster. Basing current cluster identification on previously-identified clusters in some embodiments includes comparing the similarity of clusters (e.g., comparing the centroids or medoids of identified clusters in the k-dimensional topic space, or comparing the membership in the previously-identified clusters with the membership of the currently-identified clusters). Correlating previously identified clusters with currently identified clusters in some embodiments allows for application of security policies without further input from a user. 
     After the clusters are identified based on the updated corpus, the process (at  850 ) stores information regarding the analysis. In some embodiments, the process stores (at  850 ) information regarding the cluster to which each document is assigned. The stored information in some embodiments is a set of probability distributions over the topics for each document. The stored information is useful to determine a divergence over time of the application or service provided by the network address or node (as indicated by the probability distribution over topics). Additionally, the stored distributions can be used to detect anomalous behavior. 
     As an example of the results of processes  100  and  800 ,  FIG. 9  conceptually illustrates identified clusters of similar documents at different times. A cluster of documents (Docs 1-9) representing a set of network addresses or nodes are depicted at a first time (t_0) before analysis is performed. Process  100  is performed at a time t_1 and identifies cluster 1 (comprising Docs 1, 2, 6, and 9), cluster 2 (comprising Docs 3, 4, and 8), and cluster 3 (comprising Docs 5 and 7). An additional node or network address is added (represented by Doc 10) between time t_1 and t_2 and process  800  is then performed at t_2. Process  800  identifies newly added Doc 10 as belonging to the cluster 1 and identifies Doc 9 as belonging to cluster 2 instead of cluster 1. As described in relation to  FIG. 8 , the policies applied to cluster 1 are applied to Doc 10 as a member of cluster 1. 
       FIG. 10  conceptually illustrates a topic probability table for a single document at different points in time as stored in some embodiments as part of process  800 . Temporal Topic Probability Table  1010  illustrates a probability distribution over topics 1-K at times 1-J. In some embodiments, these probability distributions over topics are stored at each iteration of process  800 . In other embodiments, the process  100  can be used on the entire corpus of timestamped documents to determine a set of topics and then calculate probability distributions based on the identified topics for each time period of interest (e.g., as defined by a user). An analysis that uses the entire corpus for topic identification removes any confusion that might occur if topics change between time periods based on the different network traffic information collected. Once table  1010  has been constructed an individual network address or node can be analyzed as in process  1100  of  FIG. 11 . 
       FIG. 11  conceptually illustrates a process  1100  for monitoring a particular document for changes in behavior over time. Process  1100  starts by calculating (at  1110 ) the divergence of the probability distributions over topics for a particular document (e.g., network address or node) based on stored information as described above in relation to  FIGS. 8 and 10 . The divergence in some embodiments is calculated as an information radius (e.g., using a Jensen-Shannon divergence). The divergence in some embodiments is calculated over all the distributions and is divided by the log base 2 of the number of points in time to normalize the result to a range of [0-1], with 0 representing no change and 1 representing maximal change with no correlation between points in time. 
     The process continues by correlating (at  1120 ) the divergence with cluster and flow data. In some embodiments, the correlation shows how and why applications change over time. When process  1100  is performed for a plurality of documents, it can show how and why applications change over time within the individual nodes as well as the cluster of nodes. For example, a web server may begin serving a different type of document or a particular document may be requested by clients more often and skew the probability distribution towards the topic that is more closely related to that type of flow. The process then ends. 
     Once the divergence is correlated with cluster and flow data, the correlation is used in some embodiments to determine that a network address or node is behaving anomalously. Once anomalous behavior has been detected a network administrator can take appropriate remedial action. Referring to table  1010  of  FIG. 10 , it can be seen that at time 4 the document (e.g., network address or node) has a very different probability distribution over the topics. This may indicate a type of denial of service attack that skews the traffic towards a particular set of files or flows. The anomaly detection is inherently application-centric and thus more accurate than a method that identifies outliers in basic metrics such as traffic volume or burstiness. This accuracy generates fewer false positives and makes it easier to find actual anomalies among the identified possibilities. 
       FIG. 12  conceptually illustrates an electronic system  1200  with which some embodiments of the invention are implemented. The electronic system  1200  can be used to execute any of the control, virtualization, or operating system applications described above. The electronic system  1200  may be a computer (e.g., a desktop computer, personal computer, tablet computer, server computer, mainframe, a blade computer etc.), phone, PDA, or any other sort of electronic device. Such an electronic system includes various types of computer readable media and interfaces for various other types of computer readable media. Electronic system  1200  includes a bus  1205 , processing unit(s)  1210 , a system memory  1225 , a read-only memory (ROM)  1230 , a permanent storage device  1235 , input devices  1240 , and output devices  1245 . 
     The bus  1205  collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system  1200 . For instance, the bus  1205  communicatively connects the processing unit(s)  1210  with the read-only memory  1230 , the system memory  1225 , and the permanent storage device  1235 . 
     From these various memory units, the processing unit(s)  1210  retrieve instructions to execute and data to process in order to execute the processes of the invention. The processing unit(s) may be a single processor or a multi-core processor in different embodiments. 
     The read-only-memory  1230  stores static data and instructions that are needed by the processing unit(s)  1210  and other modules of the electronic system. The permanent storage device  1235 , on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the electronic system  1200  is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device  1235 . 
     Other embodiments use a removable storage device (such as a floppy disk, flash drive, etc.) as the permanent storage device. Like the permanent storage device  1235 , the system memory  1225  is a read-and-write memory device. However, unlike storage device  1235 , the system memory is a volatile read-and-write memory, such as random access memory. The system memory stores some of the instructions and data that the processor needs at runtime. In some embodiments, the invention&#39;s processes are stored in the system memory  1225 , the permanent storage device  1235 , and/or the read-only memory  1230 . From these various memory units, the processing unit(s)  1210  retrieve instructions to execute and data to process in order to execute the processes of some embodiments. 
     The bus  1205  also connects to the input and output devices  1240  and  1245 . The input devices enable the user to communicate information and select commands to the electronic system. The input devices  1240  include alphanumeric keyboards and pointing devices (also called “cursor control devices”). The output devices  1245  display images generated by the electronic system. The output devices include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD). Some embodiments include devices such as a touchscreen that function as both input and output devices. 
     Finally, as shown in  FIG. 12 , bus  1205  also couples electronic system  1200  to a network  1265  through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet, or a network of networks, such as the Internet. Any or all components of electronic system  1200  may be used in conjunction with the invention. 
     Some embodiments include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media may store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter. 
     While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some embodiments are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions that are stored on the circuit itself. 
     As used in this specification, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification, the terms “computer readable medium,” “computer readable media,” and “machine readable medium” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals. 
     This specification refers throughout to computational and network environments that include virtual machines (VMs). However, virtual machines are merely one example of data compute nodes (DCNs) or data compute end nodes, also referred to as addressable nodes. DCNs may include non-virtualized physical hosts, virtual machines, containers that run on top of a host operating system without the need for a hypervisor or separate operating system, and hypervisor kernel network interface modules. 
     VMs, in some embodiments, operate with their own guest operating systems on a host machine using resources of the host machine virtualized by virtualization software (e.g., a hypervisor, virtual machine monitor, etc.). The tenant (i.e., the owner of the VM) can choose which applications to operate on top of the guest operating system. Some containers, on the other hand, are constructs that run on top of a host operating system without the need for a hypervisor or separate guest operating system. In some embodiments, the host operating system uses name spaces to isolate the containers from each other and therefore provides operating-system level segregation of the different groups of applications that operate within different containers. This segregation is akin to the VM segregation that is offered in hypervisor-virtualized environments that virtualize system hardware, and thus can be viewed as a form of virtualization that isolates different groups of applications that operate in different containers. Such containers are more lightweight than VMs. 
     Hypervisor kernel network interface modules, in some embodiments, is a non-VM DCN that includes a network stack with a hypervisor kernel network interface and receive/transmit threads. One example of a hypervisor kernel network interface module is the vmknic module that is part of the ESXi™ hypervisor of VMware, Inc. 
     It should be understood that while the specification refers to VMs, the examples given could be any type of DCNs, including physical hosts, VMs, non-VM containers, and hypervisor kernel network interface modules. In fact, the example networks could include combinations of different types of DCNs in some embodiments. 
     While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. In addition, a number of the figures (including  FIGS. 4 and 5 ) conceptually illustrate processes. The specific operations of these processes may not be performed in the exact order shown and described. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, the process could be implemented using several sub-processes, or as part of a larger macro process. Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.