Predicting application and network performance

Information

  • Patent Grant
  • 11088929
  • Patent Number
    11,088,929
  • Date Filed
    Wednesday, May 27, 2020
    4 years ago
  • Date Issued
    Tuesday, August 10, 2021
    3 years ago
Abstract
An application and network analytics platform can capture comprehensive telemetry from servers and network devices operating within a network. The platform can discover flows running through the network, applications generating the flows, servers hosting the applications, computing resources provisioned and consumed by the applications, and network topology, among other insights. The platform can generate various models relating one set of application and network performance metrics to another. For example, the platform can model application latency as a function of computing resources provisioned to and/or actually used by the application, its host's total resources, and/or the distance of its host relative to other elements of the network. The platform can change the model by moving, removing, or adding elements to predict how the change affects application and network performance. In some situations, the platform can automatically act on predictions to improve application and network performance.
Description
TECHNICAL FIELD

The subject matter of this disclosure relates in general to the field of computer networks, and more specifically for predicting application and network performance.


BACKGROUND

Modern day data centers can present many challenges to administrators. A typical enterprise network routinely processes millions or billions of flows each day and about 10,000 active flows per rack each second. Administrators must also contend with the ever-expanding attack surface of their networks. In addition, enterprises are seeing workloads that exhibit different behavior from traditional applications and services. For example, the adoption of micro-services has resulted in containerized applications with lifecycles that may last no longer than milliseconds, making their operations difficult to capture. Virtualization and integration of private networks with public networks (i.e., implementing a hybrid cloud) also add to the complexity of assessing the state of the data center. Moreover, the increasing use of massively distributed systems can also make it difficult to evaluate application and network performance.





BRIEF DESCRIPTION OF THE FIGURES


FIG. 1 illustrates an example of an application and network analytics platform for predicting application and network performance in accordance with an embodiment;



FIG. 2 illustrates an example of a forwarding pipeline of an application-specific integrated circuit (ASIC) of a network device in accordance with an embodiment;



FIG. 3 illustrates an example of a request and response sequence in accordance with an embodiment;



FIG. 4 illustrates an example of a network environment in accordance with an embodiment;



FIG. 5 illustrates an example of a predictive performance engine in accordance with an embodiment;



FIG. 6 illustrates an example method for predicting application and network performance in accordance with an embodiment; and



FIG. 7A and FIG. 7B illustrate examples of systems in accordance with some embodiments.





DESCRIPTION OF EXAMPLE EMBODIMENTS
Overview

An application and network analytics platform can capture telemetry (e.g., flow data, server data, process data, user data, policy data, etc.) from servers (e.g., physical and/or virtual servers) (sometimes also referred to as hosts, endpoints, computing devices, machines, and the like) and network devices (e.g., switches, routers, hubs, etc.) operating within a data center. The application and network analytics platform can discover the flows running through the network, the applications generating the flows, the servers hosting the applications, the resources (e.g., CPU, memory, storage, networking, etc.) provisioned and consumed by the applications, and the topology of the network, among other insights. The application and network analytics platform can generate various models relating one set of application and network performance metrics to another. In an embodiment, the application and network analytics platform can model application latency as a function of the computing resources provisioned to and/or actually used by the application, its host's total resources, and/or the distance of its host relative to other elements of the network. The application and network analytics platform can update a model by moving, removing, or adding elements to predict how the update affects application and network performance. In some embodiments, the application and network analytics platform can automatically act on predictions to improve unavailability, load, latency, and other application and network performance issues.


DESCRIPTION


FIG. 1 illustrates an example of an application and network analytics platform 100 in accordance with an embodiment. Tetration Analytics™ provided by Cisco Systems®, Inc. of San Jose Calif. is an example implementation of the application and network analytics platform 100. However, one skilled in the art will understand that FIG. 1 (and generally any system discussed in this disclosure) is but one possible embodiment of an application and network analytics platform and that other embodiments can include additional, fewer, or alternative components arranged in similar or alternative orders, or in parallel, unless otherwise stated.


In the example of FIG. 1, the application and network analytics platform 100 includes a data collection layer 110, an analytics engine 120, and a presentation layer 140. The data collection layer 110 may include software sensors 112, hardware sensors 114, and customer/third party data sources 116. The software sensors 112 can run within servers of a network, such as physical or bare-metal servers; hypervisors, virtual machine monitors, container orchestrators, or other virtual entity managers; virtual machines, containers, or other virtual entities. The hardware sensors 114 can reside on the application-specific integrated circuits (ASICs) of switches, routers, or other network devices (e.g., packet capture (pcap) appliances such as a standalone packet monitor, a device connected to a network device's monitoring port, a device connected in series along a main trunk of a data center, or similar device). The software sensors 112 can capture telemetry (e.g., flow data, server data, process data, user data, policy data, etc.) from the servers and the hardware sensors 114 can capture network telemetry (e.g., flow data) from network devices, and send the telemetry to the analytics engine 120 for further processing. For example, the software sensors 112 can sniff packets sent over their hosts' physical or virtual network interface cards (NICs), or individual processes on each server can report the telemetry to the software sensors 112. The hardware sensors 114 can capture network telemetry at line rate from all ports of the network devices hosting the hardware sensors.



FIG. 2 illustrates an example of a unicast forwarding pipeline 200 of an ASIC for a network device that can capture network telemetry at line rate with minimal impact on the CPU. In some embodiments, one or more network devices may incorporate the Cisco® ASE2 or ASE3 ASICs for implementing the forwarding pipeline 200. For example, certain embodiments include one or more Cisco Nexus® 9000 Series Switches provided by Cisco Systems® that utilize the ASE2 or ASE3 ASICs or equivalent ASICs. The ASICs may have multiple slices (e.g., the ASE2 and ASE3 have six slices and two slices, respectively) in which each slice represents a switching subsystem with both an ingress forwarding pipeline 210 and an egress forwarding pipeline 220. The ingress forwarding pipeline 210 can include an input/output (I/O) component, ingress MAC 212; an input forwarding controller 214; and an input data path controller 216. The egress forwarding pipeline 220 can include an output data path controller 222, an output forwarding controller 224, and an I/O component, egress MAC 226. The slices may connect to a broadcast network 230 that can provide point-to-multipoint connections from each slice and all-to-all connectivity between slices. The broadcast network 230 can provide enough bandwidth to support full-line-rate forwarding between all slices concurrently. When a packet enters a network device, the packet goes through the ingress forwarding pipeline 210 of the slice on which the port of the ingress MAC 212 resides, traverses the broadcast network 230 to get onto the egress slice, and then goes through the egress forwarding pipeline 220 of the egress slice. The input forwarding controller 214 can receive the packet from the port of the ingress MAC 212, parse the packet headers, and perform a series of lookups to determine whether to forward the packet and how to forward the packet to its intended destination. The input forwarding controller 214 can also generate instructions for the input data path controller 216 to store and queue the packet. In some embodiments, the network device may be a cut-through switch such that the network device performs input forwarding while storing the packet in a pause buffer block (not shown) of the input data path controller 216.


As discussed, the input forwarding controller 214 may perform several operations on an incoming packet, including parsing the packet header, performing an L2 lookup, performing an L3 lookup, processing an ingress access control list (ACL), classifying ingress traffic, and aggregating forwarding results. Although describing the tasks performed by the input forwarding controller 214 in this sequence, one of ordinary skill will understand that, for any process discussed herein, there can be additional, fewer, or alternative steps performed in similar or alternative orders, or in parallel, within the scope of the various embodiments unless otherwise stated.


In some embodiments, when a unicast packet enters through a front-panel port (e.g., a port of ingress MAC 212), the input forwarding controller 214 may first perform packet header parsing. For example, the input forwarding controller 214 may parse the first 128 bytes of the packet to extract and save information such as the L2 header, EtherType, L3 header, and TCP IP protocols.


As the packet goes through the ingress forwarding pipeline 210, the packet may be subject to L2 switching and L3 routing lookups. The input forwarding controller 214 may first examine the destination MAC address of the packet to determine whether to switch the packet (i.e., L2 lookup) or route the packet (i.e., L3 lookup). For example, if the destination MAC address matches the network device's own MAC address, the input forwarding controller 214 can perform an L3 routing lookup. If the destination MAC address does not match the network device's MAC address, the input forwarding controller 214 may perform an L2 switching lookup based on the destination MAC address to determine a virtual LAN (VLAN) identifier. If the input forwarding controller 214 finds a match in the MAC address table, the input forwarding controller 214 can send the packet to the egress port. If there is no match for the destination MAC address and VLAN identifier, the input forwarding controller 214 can forward the packet to all ports in the same VLAN.


During L3 routing lookup, the input forwarding controller 214 can use the destination IP address for searches in an L3 host table. This table can store forwarding entries for directly attached hosts and learned /32 host routes. If the destination IP address matches an entry in the host table, the entry will provide the destination port, next-hop MAC address, and egress VLAN. If the input forwarding controller 214 finds no match for the destination IP address in the host table, the input forwarding controller 214 can perform a longest-prefix match (LPM) lookup in an LPM routing table.


In addition to forwarding lookup, the input forwarding controller 214 may also perform ingress ACL processing on the packet. For example, the input forwarding controller 214 may check ACL ternary content-addressable memory (TCAM) for ingress ACL matches. In some embodiments, each ASIC may have an ingress ACL TCAM table of 4000 entries per slice to support system internal ACLs and user-defined ingress ACLs. These ACLs can include port ACLs, routed ACLs, and VLAN ACLs, among others. In some embodiments, the input forwarding controller 214 may localize the ACL entries per slice and program them only where needed.


In some embodiments, the input forwarding controller 214 may also support ingress traffic classification. For example, from an ingress interface, the input forwarding controller 214 may classify traffic based on the address field, IEEE 802.1q class of service (CoS), and IP precedence or differentiated services code point in the packet header. In some embodiments, the input forwarding controller 214 can assign traffic to one of eight quality-of-service (QoS) groups. The QoS groups may internally identify the traffic classes used for subsequent QoS processes as packets traverse the system.


In some embodiments, the input forwarding controller 214 may collect the forwarding metadata generated earlier in the pipeline (e.g., during packet header parsing, L2 lookup, L3 lookup, ingress ACL processing, ingress traffic classification, forwarding results generation, etc.) and pass it downstream through the input data path controller 216. For example, the input forwarding controller 214 can store a 64-byte internal header along with the packet in the packet buffer. This internal header can include 16 bytes of iETH (internal communication protocol) header information, which the input forwarding controller 214 can prepend to the packet when transferring the packet to the output data path controller 222 through the broadcast network 230. The network device can strip the 16-byte iETH header when the packet exits the front-panel port of the egress MAC 226. The network device may use the remaining internal header space (e.g., 48 bytes) to pass metadata from the input forwarding queue to the output forwarding queue for consumption by the output forwarding engine.


In some embodiments, the input data path controller 216 can perform ingress accounting functions, admission functions, and flow control for a no-drop class of service. The ingress admission control mechanism can determine whether to admit the packet into memory based on the amount of buffer memory available and the amount of buffer space already used by the ingress port and traffic class. The input data path controller 216 can forward the packet to the output data path controller 222 through the broadcast network 230.


As discussed, in some embodiments, the broadcast network 230 can comprise a set of point-to-multipoint wires that provide connectivity between all slices of the ASIC. The input data path controller 216 may have a point-to-multipoint connection to the output data path controller 222 on all slices of the network device, including its own slice.


In some embodiments, the output data path controller 222 can perform egress buffer accounting, packet queuing, scheduling, and multicast replication. In some embodiments, all ports can dynamically share the egress buffer resource. In some embodiments, the output data path controller 222 can also perform packet shaping. In some embodiments, the network device can implement a simple egress queuing architecture. For example, in the event of egress port congestion, the output data path controller 222 can directly queue packets in the buffer of the egress slice. In some embodiments, there may be no virtual output queues (VoQs) on the ingress slice. This approach can simplify system buffer management and queuing.


As discussed, in some embodiments, one or more network devices can support up to 10 traffic classes on egress, 8 user-defined classes identified by QoS group identifiers, a CPU control traffic class, and a switched port analyzer (SPAN) traffic class. Each user-defined class can have a unicast queue and a multicast queue per egress port. This approach can help ensure that no single port will consume more than its fair share of the buffer memory and cause buffer starvation for other ports.


In some embodiments, multicast packets may go through similar ingress and egress forwarding pipelines as the unicast packets but instead use multicast tables for multicast forwarding. In addition, multicast packets may go through a multistage replication process for forwarding to multiple destination ports. In some embodiments, the ASIC can include multiple slices interconnected by a non-blocking internal broadcast network. When a multicast packet arrives at a front-panel port, the ASIC can perform a forwarding lookup. This lookup can resolve local receiving ports on the same slice as the ingress port and provide a list of intended receiving slices that have receiving ports in the destination multicast group. The forwarding engine may replicate the packet on the local ports, and send one copy of the packet to the internal broadcast network, with the bit vector in the internal header set to indicate the intended receiving slices. In this manner, only the intended receiving slices may accept the packet off of the wire of the broadcast network. The slices without receiving ports for this group can discard the packet. The receiving slice can then perform local L3 replication or L2 fan-out lookup and replication to forward a copy of the packet to each of its local receiving ports.


In FIG. 2, the forwarding pipeline 200 also includes a flow cache 240, which when combined with direct export of collected telemetry from the ASIC (i.e., data hardware streaming), can enable collection of packet and flow metadata at line rate while avoiding CPU bottleneck or overhead. The flow cache 240 can provide a full view of packets and flows sent and received by the network device. The flow cache 240 can collect information on a per-packet basis, without sampling and without increasing latency or degrading performance of the network device. To accomplish this, the flow cache 240 can pull information from the forwarding pipeline 200 without being in the traffic path (i.e., the ingress forwarding pipeline 210 and the egress forwarding pipeline 220).


In addition to the traditional forwarding information, the flow cache 240 can also collect other metadata such as detailed IP and TCP flags and tunnel endpoint identifiers. In some embodiments, the flow cache 240 can also detect anomalies in the packet flow such as inconsistent TCP flags. The flow cache 240 may also track flow performance information such as the burst and latency of a flow. By providing this level of information, the flow cache 240 can produce a better view of the health of a flow. Moreover, because the flow cache 240 does not perform sampling, the flow cache 240 can provide complete visibility into the flow.


In some embodiments, the flow cache 240 can include an events mechanism to complement anomaly detection. This configurable mechanism can define a set of parameters that represent a packet of interest. When a packet matches these parameters, the events mechanism can trigger an event on the metadata that triggered the event (and not just the accumulated flow information). This capability can give the flow cache 240 insight into the accumulated flow information as well as visibility into particular events of interest. In this manner, networks, such as a network implementing the application and network analytics platform 100, can capture telemetry more comprehensively and not impact application and network performance.


Returning to FIG. 1, the telemetry captured by the software sensors 112 and hardware sensors 114 can include metadata relating to individual packets (e.g., packet size, source address, source port, destination address, destination port, etc.); flows (e.g., number of packets and aggregate size of packets having the same source address/port, destination address/port, L3 protocol type, class of service, router/switch interface, etc. sent/received without inactivity for a certain time (e.g., 15 seconds) or sent/received over a certain duration (e.g., 30 minutes)); flowlets (e.g., flows of sub-requests and sub-responses generated as part of an original request or response flow and sub-flows of these flows); bidirectional flows (e.g., flow data for a request/response pair of flows having corresponding source address/port, destination address/port, etc.); groups of flows (e.g., flow data for flows associated with a certain process or application, server, user, etc.), sessions (e.g., flow data for a TCP session); or other types of network communications of specified granularity. That is, the network telemetry can generally include any information describing communication on all layers of the Open Systems Interconnection (OSI) model. In some embodiments, the network telemetry collected by the sensors 112 and 114 can also include other network traffic data such as hop latency, packet drop count, port utilization, buffer information (e.g., instantaneous queue length, average queue length, congestion status, etc.), and other network statistics.


In some embodiments, the application and network analytics platform 100 can resolve flows into flowlets (i.e., sequences of requests and responses of a larger request and response) of various granularities. For example, a response to a request to an enterprise application may result in multiple sub-requests and sub-responses to various back-end services (e.g., authentication, static content, data, search, sync, etc.). The application and network analytics platform 100 can break a flow into its constituent components to provide greater insight into application and network performance. The application and network analytics platform 100 can perform this resolution in real time or substantially real time (e.g., no more than a few minutes after detecting the flow).


The application and network analytics platform 100 can associate a flow with a server sending or receiving the flow, an application or process triggering the flow, the owner of the application or process, and one or more policies applicable to the flow, among other telemetry. The telemetry captured by the software sensors 112 can thus include server data, process data, user data, policy data, and other data (e.g., virtualization information, tenant information, sensor information, etc.). The server telemetry can include the server name, network address, CPU usage, network usage, disk space, ports, logged users, scheduled jobs, open files, and similar information. In some embodiments, the server telemetry can also include information about the file system of the server, such as the lists of files (e.g., log files, configuration files, device special files, etc.) and/or directories stored within the file system as well as the metadata for the files and directories (e.g., presence, absence, or modifications of a file and/or directory). In some embodiments, the server telemetry can further include physical or virtual configuration information (e.g., processor type, amount of random access memory (RAM), amount of disk or storage, type of storage, system type (e.g., 32-bit or 64-bit), operating system, public cloud provider, virtualization platform, etc.).


The process telemetry can include the process name (e.g., bash, httpd, netstat, etc.), process identifier, parent process identifier, path to the process (e.g., /usr2/username/bin/, /usr/local/bin, /usr/bin, etc.), CPU utilization, memory utilization, memory address, scheduling information, nice value, flags, priority, status, start time, terminal type, CPU time taken by the process, and the command string that initiated the process (e.g., “/opt/tetration/collector/tet-collector --config file/etc/tetration/collector/collector.config --timestamp_flow_info --logtostderr --utc time in file name true --max_num_ssl_sw_sensors 63000 --enable_client_certificate_true”). The user telemetry can include information regarding a process owner, such as the user name, user identifier, user's real name, e-mail address, user's groups, terminal information, login time, expiration date of login, idle time, and information regarding files and/or directories of the user.


The customer/third party data sources 116 can include out-of-band data such as power level, temperature, and physical location (e.g., room, row, rack, cage door position, etc.). The customer/third party data sources 116 can also include third party data regarding a server such as whether the server is on an IP watch list or security report (e.g., provided by Cisco®, Arbor Networks® of Burlington, Mass., Symantec® Corp. of Sunnyvale, Calif., Sophos® Group plc of Abingdon, England, Microsoft® Corp. of Seattle, Wash., Verizon® Communications, Inc. of New York, N.Y., among others), geolocation data, and Whois data, and other data from external sources.


In some embodiments, the customer/third party data sources 116 can include data from a configuration management database (CMDB) or configuration management system (CMS) as a service. The CMDB/CMS may transmit configuration data in a suitable format (e.g., JavaScript® object notation (JSON), extensible mark-up language (XML), yet another mark-up language (YAML), etc.)).


The processing pipeline 122 of the analytics engine 120 can collect and process the telemetry. In some embodiments, the processing pipeline 122 can retrieve telemetry from the software sensors 112 and the hardware sensors 114 every 100 ms or faster. Thus, the application and network analytics platform 100 may not miss or is much less likely than conventional systems (which typically collect telemetry every 60 seconds) to miss “mouse” flows. In addition, as the telemetry tables flush so often, the software sensors 112 and the hardware sensors 114 do not or are much less likely than conventional systems to drop telemetry because of overflow/lack of memory. An additional advantage of this approach is that the application and network analytics platform is responsible for flow-state tracking instead of network devices. Thus, the ASICs of the network devices of various embodiments can be simpler or can incorporate other features.


In some embodiments, the processing pipeline 122 can filter out extraneous or duplicative data or it can create summaries of the telemetry. In some embodiments, the processing pipeline 122 may process (and/or the software sensors 112 and hardware sensors 114 may capture) only certain types of telemetry and disregard the rest. For example, the processing pipeline 122 may process (and/or the sensors may monitor) only high-priority telemetry, telemetry associated with a particular subnet (e.g., finance department, human resources department, etc.), telemetry associated with a particular application (e.g., business-critical applications, compliance software, health care applications, etc.), telemetry from external-facing servers, etc. As another example, the processing pipeline 122 may process (and/or the sensors may capture) only a representative sample of telemetry (e.g., every 1,000th packet or other suitable sample rate).


Collecting and/or processing telemetry from multiple servers of the network (including within multiple partitions of virtualized hosts) and from multiple network devices operating between the servers can provide a comprehensive view of network behavior. The capture and/or processing of telemetry from multiple perspectives rather than just at a single device located in the data path (or in communication with a component in the data path) can allow the data to be correlated from the various data sources, which may be used as additional data points by the analytics engine 120. In addition, the granularity of the telemetry can help to create data-rich models for predicting application and network performance as discussed in detail further below.


In addition, collecting and/or processing telemetry from multiple points of view can enable capture of more accurate data. For example, a conventional network may consist of external-facing network devices (e.g., routers, switches, network appliances, etc.) such that the conventional network may not be capable of monitoring east-west traffic, including telemetry for VM-to-VM or container-to-container communications on a same host. As another example, the conventional network may drop some packets before those packets traverse a network device incorporating a sensor. The processing pipeline 122 can substantially mitigate or eliminate these issues altogether by capturing and processing telemetry from multiple points of potential failure. Moreover, the processing pipeline 122 can verify multiple instances of data for a flow (e.g., telemetry from a source (physical server, hypervisor, container orchestrator, other virtual entity manager, VM, container, etc.), one or more network devices, and a destination) against one another.


In some embodiments, the processing pipeline 122 can assess a degree of accuracy of telemetry for a single flow captured by multiple sensors and utilize the telemetry from a single sensor determined to be the most accurate and/or complete. The degree of accuracy can be based on factors such as network topology (e.g., a sensor closer to the source may be more likely to be more accurate than a sensor closer to the destination), a state of a sensor or a server hosting the sensor (e.g., a compromised sensor/server may have less accurate telemetry than an uncompromised sensor/server), or telemetry volume (e.g., a sensor capturing a greater amount of telemetry may be more accurate than a sensor capturing a smaller amount of telemetry).


In some embodiments, the processing pipeline 122 can assemble the most accurate telemetry from multiple sensors. For instance, a first sensor along a data path may capture data for a first packet of a flow but may be missing data for a second packet of the flow while the reverse situation may occur for a second sensor along the data path. The processing pipeline 122 can assemble data for the flow from the first packet captured by the first sensor and the second packet captured by the second sensor.


In some embodiments, the processing pipeline 122 can also disassemble or decompose a flow into sequences of request and response flowlets (e.g., sequences of requests and responses of a larger request or response) of various granularities. For example, a response to a request to an enterprise application may result in multiple sub-requests and sub-responses to various back-end services (e.g., authentication, static content, data, search, sync, etc.). The processing pipeline 122 can break a flow down into its constituent components to provide greater insight into application and network performance. The processing pipeline 122 can perform this resolution in real time or substantially real time (e.g., no more than a few minutes after detecting the flow).



FIG. 3 illustrates an example of a network environment 300. One of ordinary skill will appreciate that, for the network environment 300 and any environment discussed in this disclosure, there can be additional or fewer nodes, devices, links, networks, or components in similar or alternative configurations. Other embodiments may have different numbers and/or types of clients, networks, nodes, cloud components, servers, software components, devices, virtual or physical resources, configurations, topologies, services, appliances, deployments, or network devices. Further, the network environment 300 can include any number or type of resources accessible and utilized by clients or tenants.


The network environment 300 can include a client computing device 302, a wide area network (WAN) 304, and a local area network (LAN) 310. Although not shown here for purposes of simplicity and conciseness, a typical data center may also include a firewall, a load balancer, and/or an additional edge router between an edge network device 306b and the web server 312. The client 302 can be any kind of computing device (i.e., of varying types, capabilities, operating systems, etc.) capable of communication over a network, such as a server (physical or virtual), a desktop computer, a laptop, a tablet, a smartphone, or a wearable device (e.g., a watch; eyeglasses, a visor, a head-mounted display or other device generally worn over a user's eyes; headphones, ear buds, or other device generally worn in or over a user's ears; etc.). The client 302 can also be an “infotainment system” (i.e., a computing device integrated with a means of transportation), a “smart” home device or Internet of Things (IoT) device (e.g., a television, a set-top box, a digital video recorder (DVR), a digital video disc (DVD) player or other media player, a video game console, etc.), or other electronic devices.


The WAN 304 can include one or more networks and/or network devices, such as the network devices 306a and 306b, for interconnecting the client 302 and the LAN 310. WANs can connect geographically dispersed nodes over long-distance communications links, such as common carrier telephone lines, optical light paths, synchronous optical networks (SONET), or synchronous digital hierarchy (SDH) links. LANs and WANs can include L2 and/or L3 networks and servers. The Internet is an example of a WAN that connects disparate networks throughout the world, providing global communication between nodes on various networks. The nodes typically communicate over the network by exchanging discrete frames or packets of data according to predefined protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP). In this context, a protocol can refer to a set of rules defining how the nodes interact with each other. The WAN 304 can also be a private network, such as a global enterprise network, that operates using similar or the same technologies as the public Internet.


LANs can connect nodes over dedicated private communications links located in the same general physical location, such as a building or campus. In the example of FIG. 3, the LAN 310 can be a data center that includes a single web application. A typical data center can include hundreds or thousands of simpler or more complex applications. The web application includes a web server 312 connected to a network device 314 (e.g., a hub, switch, router, etc.) for communicating with an authentication server 316, a content server 318, and a data server 320. The data server 320 can directly or indirectly connect to a database 322. Although FIG. 3 may appear to show that the web server 312, the authentication server 316, the content server 318, and the data server 320 are separate elements, the servers or various combinations of the servers can reside on a single physical machine as virtual machines, containers, or other virtual entities. Similarly, the network device 314 can be one or more physical network devices, virtual network devices, or various combinations of physical and virtual network devices in a variety of configurations (e.g., leaf-spine, three-tier (i.e., including core, aggregation, and access levels), fat tree, mesh, bus, hub and spoke, etc.).


In the example of FIG. 3, the web application can be a website associated with one or more user accounts. Users may login to their accounts and access their personal information and other content. A user may access her account associated with the website/web application from the client device 302 (e.g., via a standalone client application, web browser, plug-in, etc.). The client device 302 may communicate with the website/web application located in the LAN 310 over the WAN 304 (e.g., the Internet, an enterprise network, etc.) for the user to interact with her account in any number of ways, such as updating privileged information (e.g., name, email address, login password, etc.), viewing content, creating content, etc. Each interaction can generate one or more request flows to the website/web application. In turn, the website/web application can respond to the request flows by generating one or more response flows. However, each request may comprise one or more additional sub-requests and sub-responses. Likewise, each response can include one or more sub-requests and sub-responses. The number of sub-requests and sub-responses can largely depend on the complexity of the application. But even a simple web application/website such as illustrated in FIG. 3 can include numerous sub-requests and sub-responses.



FIG. 4 illustrates an example of a time sequence 400 of a request and response for an interaction with the website/web application of FIG. 4. One of ordinary skill will understood that, for any sequence discussed herein, there can be additional, fewer, or alternative steps performed in similar or alternative orders, or in parallel, within the scope of the various embodiments unless otherwise stated. The user interaction may be a user logging into the website/web application, clicking to view certain content, searching for content in the website/web application, among any number of possibilities. In the time sequence 400, the vertical axis corresponds to time and the horizontal axis shows the communications between the various components of the website/web application.


In the example of FIG. 4, the client 302 may send an originating request (i.e., at point A) for a particular page of the website/web application or other content. After traversing the WAN 304, the originating request may arrive at the web server 312 after a duration AB. As discussed above, the originating request A may segments through the WAN 304, one or more of the data center's edge network devices, firewalls, load balancers, among other software and hardware components but FIG. 4 excludes those segments for brevity and clarity. The web server 312 may spend some time BC processing the request to determine that the request is a request for personal content requiring authentication. Thus, the web server 312 may send an authentication request (i.e., at point C) to the authentication server 316 to verify the user's login name and password match the user's information stored by the website/web application. To send the authentication request, the web server 312 may first forward the authentication request to the network device 314 for a duration CD. The network device 314 can receive the authentication request, take some amount of time DE to process the packets of the authentication request and forward the request to the authentication server 316 for a duration EF. The authentication server 316 may process the authentication request and prepare an authentication response (i.e., at point G) for a time FG and forward the authentication request to the network device 314 for a time GH. The network device 314 can spend a time HI to determine where to forward the authentication request GF to the web server 312 upon which the network device 314 may forward the response to the web server 312 over a duration IJ.


The web server 312 may confirm authentication of the user from the authentication response and begin retrieving content to provide a response to the originating request. The response may be a page of the website/web application that includes content from the content server 318 and personal information from the data server 320. The web server 312 may take up a time JK to prepare a content request to the content server 318 and a time KS to prepare a data request to the data server 320. The web server 312 may send the content request (i.e., at point K) to the network device 314 over a time KL, upon which the network device 314 may spend a time LM to forward the request to the content server 318 for a duration MN. The content server 318 can receive the content request K, take a time NO to process the request, and transmit a content response (i.e., at point O) to the network device 314 over a time OP. The network device 314 can process the content response for a time PQ and forward the content response to the web server after which a time QR elapses.


In parallel or very near in time to the request/response to the content server 318, the web server 312 may send the data request (i.e., at point S) to the network device 314 for a time ST. The network device can process the data request for a time TU and forward the data request over a period of time UV. The data server 320 may have an architecture in which it must retrieve requested data from the database 322, and therefore must perform some time VW processing the data request S and preparing a database request. The database request may take a time WX to arrive at the database 322. Fetching the requested data may occur over a duration XY and transmitting a database response (i.e., at point Y) back to the data server 320 may occur over a time YZ. The data server may process the database response within a time Z α before sending a data response (i.e., at point α) back to the network device 314 over a time αβ. The network device may process the data response for a time βγ and forward the data response over a time γδ. The web server 312 may assemble the content retrieved from the content server 318 and the data retrieved from the data server 320 over a time δε before sending the response (i.e., at point ε) to the originating request to the client 302 over a time εζ.


In the example of FIG. 4, the segments beginning from BC through εζ can represent the total latency for sending the response c to the originating request A. The total response latency can thus include latency due to the web server 312, latency due to the authentication server 316, and the maximum between the latency due to the content server 318 and the latency due to the data server 320 (assuming parallel or substantially parallel requests to the content server 318 and the data server 320). Some conventional data centers may be able to derive some of these latencies. For example, a data center relying on telemetry from network devices may be able to calculate the web server latency via the timestamps of the authentication request flowlet and the authentication response flowlet. Likewise, it may be possible for data centers that rely on telemetry from servers to compute the web server latency from web server logs indicating when the web server 312 sent the authentication request flowlet to the authentication server 316 and when the web server received the authentication response flowlet from the authentication server. Various embodiments can improve upon these conventional approaches by computing more granular latencies. For example, the application and network analytics platform 100 can resolve the total latency for providing the response to the authentication request C to include the segment CD representing network latency from the web server 312 to the network device 314, the segment DE representing network device latency (although negligible and ignored in some embodiments), the segment EF representing network latency from the network device 314 to the authentication server 316, the segment FG represent authentication server latency, the segment GH representing network latency from the authentication server 316 to the network device 314, the segment HI representing network device latency, and the segment U representing the network latency from the network device 314 to the web server 312. The conventional data centers could not determine latency at this level of granularity but various embodiments of the present technology can by obtaining telemetry from the web server 312, the network device 314, and the authentication server 316.


Over a period of time, an application and analytics framework in accordance with some embodiments may establish baseline metrics for the network latency between the web server 312 and the authentication server 316 (i.e., segments CD, (sometimes DE), EF), authentication server latency (i.e., segment FG), and the network latency between the authentication server 316 and the web server 312 (i.e., segments GH, (sometimes HI), and IJ). When users experience latency, an administrator may determine quickly whether the issue is due to server latency or network latency based on this manner of decomposing flows into flowlets.


As shown in FIG. 4, a single user interaction with a simple application can comprise more than a dozen requests and responses. A typical enterprise network can include hundreds or thousands of much more complex applications with hundreds or thousands of users possibly performing millions or billions of operations per day. It would not be possible for a human user to process and analyze this volume of data. FIG. 4 also demonstrates the incompleteness of data centers that only rely on telemetry from one of servers or network devices. For example, in a first data center in which telemetry is only available from network devices and in a situation where the network devices' attempt to communicate with a data server is unusually slow or fails altogether, the first data center could not diagnose whether the issue arises due to application unavailability or load. In addition, the first data center may not be able to provide insight as to whether the problem lays in the data server, the database, or the connection between the data server and the database. For instance, in a data request from the web server to the data server, it may be possible for the first data center to recover a flowlet (e.g., segments ST, TU, and UV) from one or more network devices between the web server and the data server but it is not possible for the first data center to recover web server latency (e.g., segments JS or KS), data server latency (e.g., segment VW), a request flowlet from the data server to a database (e.g., segment WX), database latency (e.g., segment XY), and a response flowlet from the database (e.g., segment YZ) because the first data center may not be aware that the data server has a dependency on the database.


A second data center that relies only on telemetry from servers may also suffer from various defects. Such a system may be able to detect anomalous (or no) response times in communications between a web server and a data server but may not be able to ascertain whether latency or failure is due to the web server, network devices between the web server and the data server, the data server, a database connected to the data server, or a connection between the data server and the database. For example, in a data request from the web server to the data server, the second data center may have a view of the data request (e.g., sent at point S) and a data response (e.g., received at point δ) but network latencies (e.g., segments ST, UV, αβ, and γδ), network device latencies (e.g., segments TU and βγ), and database latencies (e.g., segments WX, XY, and YZ) (if there is no sensor on the database) may be a black box.


Returning to FIG. 1, the processing pipeline 122 can store the telemetry in a data lake (not shown), a large-scale storage repository characterized by massive storage for various types of data, enormous processing power, and the ability to handle nearly limitless concurrent tasks or jobs. In some embodiments, the analytics engine 120 may deploy at least a portion of the data lake using the Hadoop® Distributed File System (HDFS™) from Apache® Software Foundation of Forest Hill, Md. HDFS™ is a highly scalable and distributed file system that can scale to thousands of cluster nodes, millions of files, and petabytes of data. A feature of HDFS™ is its optimization for batch processing, such as by coordinating data computation to where data is located. Another feature of HDFS™ is its utilization of a single namespace for an entire cluster to allow for data coherency in a write-once, read-many access model. A typical HDFS™ implementation separates files into blocks, which are typically 64 MB in size and replicated in multiple data nodes. Clients can access data directly from the data nodes.


The processing pipeline 122 can propagate the processed data to one or more engines, monitors, and other components of the analytics engine 120 (and/or the components can retrieve the data from the data lake), such as an application dependency mapping (ADM) engine 124, an inventory monitor 126, a flow monitor 128, and a predictive performance engine (PPE) 130.


The ADM engine 124 can determine dependencies of applications running in the network, i.e., how processes on different servers interact with one another to perform the functions of the application. Particular patterns of traffic may correlate with particular applications. The ADM engine 124 can evaluate telemetry processed by the processing pipeline 122 to determine the interconnectivity or dependencies of the application to generate a graph for the application (i.e., an application dependency mapping). For example, in a conventional three-tier architecture for a web application, first servers of the web tier, second servers of the application tier, and third servers of the data tier make up the web application. From flow data, the ADM engine 124 may determine that there is first traffic flowing between external servers on port 80 of the first servers corresponding to Hypertext Transfer Protocol (HTTP) requests and responses. The flow data may also indicate second traffic between first ports of the first servers and second ports of the second servers corresponding to application server requests and responses and third traffic flowing between third ports of the second servers and fourth ports of the third servers corresponding to database requests and responses. The ADM engine 124 may define an application dependency map or graph for this application as a three-tier application including a first endpoint group (EPG) (i.e., groupings of application tiers or clusters, applications, and/or application components for implementing forwarding and policy logic) comprising the first servers, a second EPG comprising the second servers, and a third EPG comprising the third servers.


The inventory monitor 126 can continuously track the data center's assets (e.g., servers, network devices, applications, etc.) based on the telemetry processed by the processing pipeline 122. In some embodiments, the inventory monitor 126 can assess the state of the network at a specified interval or schedule (e.g., every 1 minute). That is, the inventory monitor 126 can periodically take snapshots of the states of applications, servers, network devices, and/or other elements of the network. In other embodiments, the inventory monitor 126 can capture the snapshots when events of interest occur, such as an application experiencing latency that exceeds an application latency threshold; the network experiencing latency that exceeds a network latency threshold; failure of server, network device, or other network element; and similar circumstances. Snapshots can include a variety of telemetry associated with network elements. For example, a snapshot of a server can represent the processes executing on the server at a time of capture, the amount of CPU utilized by each process (e.g., as an amount of time and/or a relative percentage), the amount of virtual memory utilized by each process (e.g., in bytes and/or as a relative percentage), the amount of physical memory utilized by each process (e.g., in bytes and/or as a relative percentage), a distance (physical and/or logical, relative and/or absolute) from one or more other network elements.


In some embodiments, on a change to the network (e.g., a server updating its operating system or running a new process; a server communicating on a new port; a VM, container, or other virtualized entity migrating to a different host and/or subnet, VLAN, VxLAN, or other network segment; etc.), the inventory monitor 126 can alert the PPE 130 to ensure that applications and the network remain performing as expected in view of the change(s) to the data center.


The flow monitor 128 can analyze flows to detect whether they are associated with anomalous or malicious traffic. In some embodiments, the flow monitor 128 may receive examples of past flows determined to perform at expectation (i.e., the length of time for the flow to reach a network device or a destination is within a threshold length of time) or perform below expectation (i.e., the length of time for the flow to reach the network device and/or destination exceeds the threshold length of time). The flow monitor 128 can utilize machine learning to analyze the telemetry processed by the processing pipeline 122 and classify each current flow based on similarity to past flows. On detection of an anomalous flow, such as a flow taking a shorter or longer duration from source to destination than a specified time range, a flow of a size less or more than a specified amount, and/or a flow previously classified as a network attack, the flow monitor 128 may transmit an alert to the PPE 130. In some embodiments, the network may operate within a trusted environment for a period of time so that the analytics engine 120 can establish a baseline of normal operation.


The PPE 130 can evaluate telemetry to make various predictions regarding application and network performance. In some embodiments, the PPE 130 can predict how adding, removing, or moving one or more network elements (i.e., servers, network devices, applications, application components, computing resources, etc.) within the data center may affect application and network performance. This can include simulating the effects of migrating an application onto a server already hosting other applications, changing the physical and/or logical characteristics of a network element (e.g., operating system, platform, CPU, memory, etc.), and running applications at certain parts of a day, week, month, or other specified interval or schedule, among other application and network performance simulations.



FIG. 5 illustrates an example of a predictive performance engine (PPE) 500 that represents one of many possible implementations of the PPE 130. The PPE 500 can include one or more performance front end processes (PFEs) 510, a coordinator cluster 520, a modeling module 530, a simulation module 532, an auto pilot module 534, a telemetry store 540, and a model store 542. While the PPE 500 includes specific components in this example, one of ordinary skill in the art will understand that the configuration of the PPE 500 is one possible configuration and that other configurations with more or less components are also possible.



FIG. 5 shows the PFEs 510 in communication with sensors 502. The sensors 502 represent one of many possible implementations of the software sensors 112 and/or hardware sensors 114 of FIG. 1. After installation on a server and/or network device of the data center, each sensor 502 can register with the coordinator cluster 520 via communication with one or more of the PFEs 510. Upon successful registration, the sensor 502 may begin capturing telemetry, including flow data, host data, process data, user data, policy data, etc. The sensors 502 may receive new configuration information from time to time, such as to capture additional telemetry for diagnostic purposes or for software upgrades. In some embodiments, the PPE 500 may encode the configuration information in a high-level, platform-independent format. In some embodiments, the sensors 502 can determine their servers' operating environments, convert the high-level configuration information into platform-specific configuration information, and apply certain platform-specific optimizations based on the operating environments. In other embodiments, the PPE 500 may translate the high-level configuration information to the platform-specific format remotely from the sensors 502 before distribution.


In some embodiments, the PFEs 510 can be responsible for storing platform-independent configuration information in memory, handling registration of the sensors 502, monitoring updates to the configuration information, distributing the updates to the sensors 502, and collecting telemetry captured by the sensors 502. In the example of FIG. 5, the PFEs 510 can function as intermediaries between the sensors 502 and the coordinator cluster 520. This can add a layer of security between servers and the PPE 500. For example, the sensors 502 can operate under the least-privileged principle having trust in only the coordinator cluster 520 and no trust in the PFEs 510. The sensors 502 and the PFEs 510 must sign and authenticate all transactions between them, including configuration and registration.


The coordinator cluster 520 can operate as the controller for the PPE 500. In the example of FIG. 5, the coordinator cluster 520 implements a high availability scheme (e.g., ZooKeeper, doozerd, and etcd) in which the cluster elects one coordinator instance master and the remaining coordinator instances serve as standby instances. The coordinator cluster 520 can manage the assignment of the sensors 502 to the PFEs 510. In some embodiments, each sensor 502 may initially register with the PFE 510 closest (e.g., physically and/or logically) to the sensor's host but the coordinator cluster 520 may reassign the sensor to a different PFE, such as for load balancing and/or in the event of the failure of one or more of the PFEs 510. In some embodiments, the coordinator cluster 520 may use sharding for load balancing and providing high availability for the PFEs 510.


In some embodiments, the coordinator cluster 520 may also be responsible for load balancing the PFEs 510, ensuring high availability of the PFEs 510 to the sensors 502, and receiving and storing the telemetry in the telemetry store 540. In other embodiments, the PPE 500 can integrate the functionality of a PFE and a coordinator or further divide the functionality of the PFE and the coordinator into additional components.


The modeling module 530 can build and update data models for representing various elements of the data center. For example, in FIG. 3 and FIG. 4, the PPE 500 can model latency of providing a client response (i.e., server/application/application latency (e.g., the segments BC, JK, JS or KS, Rδ, and δε for the web server 312, the segment FG for the authentication server 316, the segment NO for the content server 318, the segments VW and Zα for the data server 320, and the segment XY for the database 322) and network latency (e.g., the segments AB, CD, DE, EF, GH, HI, U, KL, LM, MN, OP, PQ, QR, WX, YZ, αβ, βγ, γδ, and εζ) as a function of the application's resource utilization and/or resource requirements (e.g., CPU, memory, storage, network, etc.), its host's total computing resources, and the relative distance among the servers and network devices making up the application:

L=F(Q,R,D),


where L can represent the total latency of providing the client response, Q can represent the application or application component's resource requirements and/or actual utilization of its host's resources (e.g., CPU, memory, storage, etc.), R can represent its host's total computing resources, and D can represent one or more distances between its host and other elements of the data center. In some embodiments, the modeling module 530 may represent Q and R as features vector including one or more features such as CPU utilization as a percentage, physical memory in utilization in bytes, total amount of physical memory in bytes, memory utilization in bytes, total amount of memory, disk utilization in bytes, total amount of disk, and so forth. In some embodiments, the features for Q and R can also include other server metadata, such as operating system, virtualization platform, public cloud provider, and other configuration information.


The distance(s) D can be physical and/or logical (e.g., number of hops) distances. In some embodiments, the application and network analytics platform 100 can determine the distance(s) D from a network topology of the data center. For example, the PPE 500 can acquire the network topology and/or the distance(s) D from customer/third party data sources (e.g., the customer/third party data sources 116 of FIG. 1), including from customer configuration data indicating the room, row, rack, cage door position, etc. of the server; a CMDB/CMS; geocoordinates; etc. In other embodiments, the PPE 500 can approximate the distance(s) D and/or the network topology as relative distances from baselines derived from telemetry. For example, from FIG. 4, the PPE 500 may determine that the baseline network latency between the web server 312 and the authentication server (e.g., the segments CD, DE, and EF) is a time t, and the baseline network latency between the web server 312 and the content server 318 (e.g., the segments KL, LM, and MN) is a time 2t. Accordingly, the PPE 500 may approximate the distance between the web server 312 and the authentication server 316 as d and the distance between the web server 312 and the content server 318 as 2d.


Each time the sensors 502 capture a snapshot of the state of the data center is a data point for a model of a server with a particular profile (i.e., a server with particular processing power, memory, storage, etc.). Over time, the modeling module 530 will have ample data points for assessing, within determined confidence levels, the relationships between and among server resources (e.g., CPU, memory, storage, networking, etc.), server location, latency, etc. For example, some models can express how changes to the computing resources (e.g., total amounts or actual utilization amounts) of a server can affect network latency, some models can relate how relative or absolute distances can affect server/application latency, some models can express the relationship between latency and a particular operating system, and so forth. The modeling module 530 can store these models in the models store 542. In some embodiments, the modeling module 530 may also store aggregate models or models of models, such as a model of the entire data center, a model of an application, a model of a cluster associated with an application component, or models of other granularities. In other embodiments, the modeling module 530 can build aggregate models upon a client request, such as via the presentation layer 140.


The simulation module 532 can retrieve a model or assemble a model of models, adapt the model for a specified scenario, and run the adapted model to predict application and network performance under the specified scenario. For example, in some embodiments, the simulation module 532 can retrieve a model of the data center in its current configuration. The simulation module 532 can adapt the model, such as by adding a new element (e.g., server, network device, application, application component, etc.), removing an existing element, moving the existing element from one location to another location, modifying an existing element (e.g., changing server resources, adding an application to a server, removing an application from the server, etc.), and the like. The simulation module 532 can run the updated model to determine whether the update increases latency or decreases latency in one or more segments of the network or has no effect with respect to latency in the network.


The auto pilot module 534 can automate certain application and network monitoring and management tasks within the data center. For example, in an embodiment, the auto pilot module 534 can periodically determine the optimal configuration for the data center with respect to latency by solving a constraint satisfaction problem (CSP) for minimizing latency given the current data center configuration. A CSP is a problem whose solution satisfies a set of given constraints. Formally, a CSP is a triple <V, D, C>, where V is the set of variables involved in the problem, D is a set of functions associating each variable with its domain (i.e., the set of the respective domains of values), and C is the set of constraints. In this example, the auto pilot module 534 can formulate the problem of determining the optimal configuration for the data center as follows:


Let A={A1, A2, A3, . . . , An} represent a set of applications/application components in the data center, P={P1, P2, P3, . . . , Pm} represent the set of physical servers in the data center, where m<n. Further let ADM=(A, E) represent an application dependency map where ADM is the set of applications/application components and E is the set of edges E between applications/application components when there is a dependency between a pair (Ai, Aj) of applications/application components. In addition, let T(Ai, Aj) represent a function of traffic/network latency for each edge Ei; Q(Ai) represent a feature vector of resource requirements (e.g., CPU, memory, storage, etc.) Q for an application/application component Ai; R(Pi) represent a feature vector of resources R of a physical server Pi. Let the cost C of migrating applications/application components Ai, Aj to physical servers be Pk, Pl=D(Ai, Aj)×T(Ai, Aj), where D is the distance (e.g., latency, delay, and/or number of hops between physical servers). In addition, let M(Ai, Pk) be a function of whether to migrate an application Ai to physical server Pk, where M is 1 if migrating an application/application component Ai to physical server Pk, and 0 otherwise. From these definitions, the optimization problem involves solving for:

min ΣC(Ai,Pk,AjPlMikjl, where Mikjl=Mik*Mjl


The constraints to the optimization formula can include ΣiAQ(i)×M(AiPk)≤R(k),∀k, Pk to ensure that the total load on a physical server is not greater than its capacity. In some embodiments, the auto pilot module 534 can periodically determine the optimal configuration for the data center by solving the above constraint satisfaction problem and automatically migrating applications/virtual entities in accordance with the optimized configuration. In other embodiments, the PPE 500 may recommend the optimized configuration via the presentation layer 140.


The telemetry store 540 can maintain telemetry captured by the sensors 502. The model store 542 can maintain the models generated by the modeling module 530. In some embodiments, the PPE 500 can maintain recently captured and/or accessed telemetry and models in more readily-accessible data stores (e.g., solid state devices (SSD), optimized hard disk drives (HDD), etc.) and migrate older and/or unaccessed telemetry and models to less accessible data stores (e.g., commodity HDDs, tape, etc.). In some embodiments, the PPE 500 may implement the telemetry store 540 and/or the model store 542 using Druid® or other relational database platform. In other embodiments, the PPE 500 may implement the telemetry store 540 using software provided by MongoDB®, Inc. of New York, N.Y. or other NoSQL database.


Returning to FIG. 1, the presentation layer 140 can include a web graphical user interface (GUI) 142, API endpoints 144, and an event-based notification system 146. In some embodiments, the application and network analytics platform 100 may implement the web GUI 142 using Ruby on Rails™ as the web application framework. Ruby on Rails™ is model-view-controller (MVC) framework that provides default structures for a database, a web service, and web pages. Ruby on Rails™ relies on web standards such as JSON or XML for data transfer, and hypertext markup language (HTML), cascading style sheets, (CSS), and JavaScript® for display and user interfacing.


In some embodiments, the application and network analytics platform 100 can expose application programming interface (API) endpoints (e.g., such as those based on the simple object access protocol (SOAP), a service oriented architecture (SOA), a representational state transfer (REST) architecture, a resource oriented architecture (ROA), etc.) for monitor the performance of applications executing in a network and the network itself. In some embodiments, the application and network analytics platform 100 may implement the API endpoints 144 using Hadoop® Hive from Apache® for the back end, and Java® Database Connectivity (JDBC) from Oracle® Corporation of Redwood Shores, Calif., as an API layer. Hive is a data warehouse infrastructure that provides data summarization and ad hoc querying. Hive provides a mechanism to query data using a variation of structured query language (SQL) called HiveQL. JDBC is an application programming interface (API) for the programming language Java®, which defines how a client may access a database.


In some embodiments, the application and network analytics platform 100 may implement the event-based notification system using Hadoop® Kafka. Kafka is a distributed messaging system that supports partitioning and replication. Kafka uses the concept of topics. Topics are feeds of messages in specific categories. In some embodiments, Kafka can take raw packet captures and telemetry information as input, and output messages to a security information and event management (SIEM) platform that provides users with the capability to search, monitor, and analyze machine-generated data.


In some embodiments, each server in the network may include a software sensor 112 and each network device may include a hardware sensor 114. In other embodiments, the software sensors 112 and hardware sensors 114 can reside on a portion of the servers and network devices of the network. In some embodiments, the software sensors 112 and/or hardware sensors 114 may operate in a full-visibility mode in which the sensors collect telemetry from every packet and every flow or a limited-visibility mode in which the sensors provide only the conversation view required for application insight and policy generation.



FIG. 6 illustrates an example of a method 600 for predicting application and network performance from telemetry. One of ordinary skill will understood that, for any method discussed herein, there can be additional, fewer, or alternative steps performed in similar or alternative orders, or in parallel, within the scope of the various embodiments unless otherwise stated. A network, and particularly, an application and network analytics platform (e.g., the application and network analytics platform 100 of FIG. 1), an analytics engine (e.g., the analytics engine 120 of FIG. 1), a PPE (e.g., the PPE 130 of FIG. 1 or the PPE 500 of FIG. 5), a network operating system, a virtual entity manager, or similar system can perform the method 600.


In the example of FIG. 6, the method 600 may begin at step 602 in which sensors (e.g., the software sensors 112 and hardware sensors 114 of FIG. 1) capture telemetry for servers and network devices of the network (e.g., flow data, host data, process data, user data, policy data, etc.) over a first period of time to establish a baseline for application and network performance. In some embodiments, the application and network analytics platform may also collect virtualization information, network topology information, and application information (e.g., configuration information, previously generated application dependency maps, application policies, etc.). In addition, the application and network analytics platform may also collect out-of-band data (e.g., power level, temperature, and physical location) and customer/third party data (e.g., CMDB or CMS as a service, Whois, geocoordinates, etc.). As discussed, the software sensors 112 and hardware sensors 114 can collect the captured data from multiple perspectives to provide a comprehensive view of network behavior. The software sensors 112 may include sensors along multiple points of a data path (e.g., network devices, physical or bare metals servers) and within multiple partitions of a physical host (e.g., hypervisor, container orchestrator, virtual entity manager, VM, container, other virtual entity, etc.).


After collection of the telemetry, the method 600 may continue on to step 604, in which the application and network analytics platform can generate models representing applications, servers, network devices, and/or other elements of the data center. For example, one model can define total latency of providing a response to a client request (i.e., server/application/application component latencies and network latencies) as a function of the application or application component's resource requirements and/or utilization of its host's resources, its host's resources, and one or more distances (e.g., physical distance, number of hops, etc.) between its host and other elements of the data center (e.g., physical or virtual servers, network devices, etc.). However, models can associate relationships between and among any of these domains and not limited to modeling total latency for providing a response to a client request as a function of the application's resource requirements/resource utilization, its host's resources, distance, etc. Some models may associate or parameterize fewer features, such as a model of latency associated with responding to a user request as a function of distance alone (i.e., without application resource requirements/resource utilization, host resources, etc.). Some models may associate more features, such as a model of latency as a function of an application's resource requirements/resource utilization, its host's resources, distance, and its host's temperature. Some models may express different associations or parameterizations, such as a model that defines network latency as a function of CPU utilization. One of ordinary skill in the art will understand that various other combinations of associations or parameterizations are also possible in view of the telemetry captured by the application and network analytics platform.


In some embodiments, generating the models can include determining an application dependency map (ADM) (although the application and network analytics platform can also obtain an ADM via customer/third party data sources as discussed elsewhere in this disclosure). In an embodiment, the nodes of the ADM can represent a pairing or concatenation of a server and a process (or application tier, application, application component, or other application granularity in other embodiments), and the edges of the ADM graph can represent the application and network analytics framework detecting flows between nodes. Clusters of nodes (i.e., host-process pairings within a similarity threshold of one another) can represent application components and each connected graph of the ADM can represent an application.


As discussed, the application and network analytics platform can derive the nodes of the ADM by concatenating servers (e.g., the telemetry identifies that a server is a source or a destination in packet header metadata of a packet/flow) and applications/application components (e.g., the telemetry identifies a process generating a packet/flow). The application and network analytics platform can compute the edges of the ADM by detecting one or more flows between nodes of the ADM. The application and network analytics platform can further compute feature vectors for the nodes. The feature vector for each node may include a concatenation of server features, process features, and/or other features.


The server features can include the server name, network address, operating system, CPU usage, network usage, disk space, ports, logged users, scheduled jobs, open files, and information regarding files and/or directories stored on the server. The process features can include the process name, process identifier, parent process identifier, process path, CPU utilization, memory utilization, memory address, scheduling information, nice value, flags, priority, status, start time, terminal type, CPU time taken by the process, the command string that started the process, and the process owner (e.g., user name, user identifier, user's real name, e-mail address, user's groups, terminal information, login time, expiration date of login, idle time, and information regarding files and/or directories of the user. In some embodiments, the feature vectors can also include features extracted from customer/third party data such as and customer/third party data (e.g., CMDB or CMS as a service, Whois, geocoordinates, etc.)


Telemetry used to detect flows between the nodes of the ADM may include packet header fields such as source address, source port, destination address, destination port, protocol type, class of service, etc. and/or aggregate packet data such as flow start time, flow end time, number of packets for a flow, number of bytes for a flow, the union of TCP flags for a flow, etc.


The application and network analytics platform can also determine similarity between the nodes of the ADM by comparing their feature vectors. Similarity can be a measure of how much alike two nodes are relative to other nodes, or a measure of two nodes being less distant to one another than other nodes. In some embodiments, the application and network analytics platform can use as similarity/distance measures one or more of Euclidean distance, Manhattan distance, Minkowski distance, cosine similarity, Jaccard similarity, and the like. In some embodiments, the application and network analytics platform can set the similarity threshold for clusters to specify a level of granularity with respect to a view of the applications executing in the network. For example, setting the similarity threshold to a very coarse degree of similarity can result in a single cluster representing the data center as a monolithic application. On the other hand, setting the similarity threshold to a very fine degree of similarity can result in singleton clusters for each host-process pairing in the network. Setting the similarity threshold can depend largely on the number and types of applications executing in the network and the level of granularity desired for the task at hand. In most situations, the similarity threshold may lie somewhere between very coarse and very fine. As discussed, clusters can represent application components, and a connected graph can represent an application.


Generating the models can further involve resolving flows into one or more flowlets. That is, the application and network analytics platform can break a flow down into a series of sub-requests and sub-responses by tracing a flow from source to destination. A request flow can include hops over network devices from source to destination and processing of the flow by the network devices. A response flow can include hops over network devices, processing of the flow by the network devices, and sub-requests and sub-responses to intermediate endpoints (including hops over network devices and processing by these network devices) performed to generate a response to the originating request flow. For example, in FIG. 4, the application and network analytics platform may decompose the response of the web server 312 to the originating request from the client 302 as a sequence including the segments BC, CD, DE, EF, FG, GH, HI, U, JK, KL, LM, MN, NO, OP, PQ, QR, ST, TU, UV, WX, XY, YZ, Zα, αβ, βγ, γδ, δε, and ϵζ. The application and network analytics platform can determine timing information for each of these segments from telemetry, and generate a model that associates application latency with the resources utilized by the application, its host's total resources, and its host's distance to other elements of the data center at or around the time these segments occurred. Over time, the application and network analytics platform may collect sufficient data points to determine the functions or models that fit the data points to within a specified level of confidence.


The method 600 may continue to step 606 in which the application and network analytics platform can update one or more of the models. In some embodiments, the application and network analytics platform can include a website (e.g., the web GUI 142) or a REST API (e.g., the API endpoints 144) for a user to specify the update. In the example of FIG. 6, the application and network analytics platform can update the models to match a current configuration of the data center. In some embodiments, the application and network analytics platform can update the models upon receiving an alert of a change to the network, such as through an inventory monitor (e.g., the inventory monitor 126 of FIG. 1). In other embodiments, the application and network analytics platform can automatically evaluate the configuration of the data center at a specified interval or schedule to determine whether application and network performance can improve by changing the current configuration.


The modeling update(s) can include adding, removing, or moving a server resource (e.g., CPU, memory, storage, etc.), a network device resource, a data center element (e.g., a physical or virtual server, a network device, etc.), a combination of data center elements (e.g., a cluster representing an application component, a sub-network representing an application, a data center zone, a geographic region, a public cloud, etc.), or a data center element at a different level of granularity. Updating the model(s) can also include changing the configuration (e.g., available ports, operating system, virtualization platform, public cloud provider, etc.) of a data center element or combination of data center elements. In some embodiments, updating the model(s) can also include modifying the execution times (e.g., a different time of day, day of week, month, etc.) of applications if the applications execute at a regular interval or schedule. In some embodiments, updating the model(s) may also include re-scheduling times applications execute, such as when the applications execute at a specified interval.


At step 608, the application and network analytics platform can run the updated model(s) against telemetry to evaluate how the changes to the model(s) affect application and network performance. In some embodiments, the application and network analytics platform may generate data points for the updated model(s) using historical ground truth telemetry (i.e., actual telemetry captured by sensors over a specified time period in the past). In other embodiments, the application and network analytics platform may generate the data points from real time telemetry (i.e., telemetry currently captured by the sensors). In this manner, the application and network analytics platform may determine whether the changes break or misconfigure operation of any application or the network in a realistic simulated environment before actual implementation.


The application and network analytics platform can also determine whether the changes improve application and network performance. In some embodiments, the application and network analytics platform may determine an optimal configuration for the data center for minimizing latency. For example, the application and network analytics platform may represent the optimal data center configuration as a constraint satisfaction problem (CSP) (i.e., a triple <V, D, C>) in which the variables can include a mapping of applications/application components A={A1, A2, A3, . . . An} to physical servers P={P1, P2, P3, . . . Pm}, where m<n. The domains or functions for limiting/relating the variables can include an application dependency map ADM=(A, E), where A is the set of applications/applications components and E is the set of edges between applications/application components when there is a dependency between a pair (Ai, Aj) of applications/application components. Further, each edge E is associated with traffic/network latency by a function T(Ai, Aj). The domain definitions can further include a vector of resource requirements (e.g., CPU, memory, storage, etc.) Q(Ai) for an application Ai, a vector of resources R(Pi) of a physical server Pi; a cost C of migrating applications Ai, Aj to physical servers Pk, Pl=D(Ai, Aj)×T(Ai, Aj), where D is the distance (e.g., latency, delay, and/or number of hops between the physical servers; and a function M(Ai, Pk) whether to migrate an application/application component Ai to physical server Pk, where M is 1 if migrating an application/application component Ai to physical server Pk, and 0 otherwise, and Mikjl=Mik*Mjl. With these variables and domain functions/definitions, the application and network analytics platform may determine the optimal configuration for the data center to minimize latency by solving for min ΣC(Ai,Pk,AjPl)×Mikjl. The constraints can include ΣiAQ(i)×M(AiPk)≤R(k), ∀k, Pk to limit the total resources required/utilized Q by any applications/application components A1 on each physical server Pk to the physical server's resources R.


At decision point 610, if the application and network analytics platform determines that a different data center configuration reduces overall latency than the current configuration, then the application and network analytics platform can facilitate implementation of the new configuration. In some embodiments, the application and network analytics platform can generate a recommendation to update the data center to the new configuration and present the recommendation via a website (e.g., the web GUI 142 of FIG. 1), API endpoints (e.g., the API endpoints 144, an event notification system (e.g., the event notification system 146). In other embodiments, the application and network analytics platform may automatically reconfigure the data center according to the new configuration determined by modeling to reduce latency of the data center. However, if the application and network analytics platform determines from modeling that no change to the data center improves application and network analytics platform may wait for a different change to the data center or wait until the next specified interval.



FIG. 7A and FIG. 7B illustrate systems in accordance with various embodiments. The more appropriate system will be apparent to those of ordinary skill in the art when practicing the various embodiments. Persons of ordinary skill in the art will also readily appreciate that other systems are possible.



FIG. 7A illustrates an example architecture for a conventional bus computing system 700 wherein the components of the system are in electrical communication with each other using a bus 705. The computing system 700 can include a processing unit (CPU or processor) 710 and a system bus 705 that may couple various system components including the system memory 715, such as read only memory (ROM) in a storage device 770 and random access memory (RAM) 775, to the processor 710. The computing system 700 can include a cache 712 of high-speed memory connected directly with, in close proximity to, or integrated as part of the processor 710. The computing system 700 can copy data from the memory 715 and/or the storage device 730 to the cache 712 for quick access by the processor 710. In this way, the cache 712 can provide a performance boost that avoids processor delays while waiting for data. These and other modules can control the processor 710 to perform various actions. Other system memory 715 may be available for use as well. The memory 715 can include multiple different types of memory with different performance characteristics. The processor 710 can include any general purpose processor and a hardware module or software module, such as module 1732, module 2734, and module 3736 stored in storage device 730, configured to control the processor 710 as well as a special-purpose processor where software instructions are incorporated into the actual processor design. The processor 710 may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.


To enable user interaction with the computing system 700, an input device 745 can represent any number of input mechanisms, such as a microphone for speech, a touch-protected screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth. An output device 735 can also be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems can enable a user to provide multiple types of input to communicate with the computing system 700. The communications interface 740 can govern and manage the user input and system output. There may be no restriction on operating on any particular hardware arrangement and various other embodiments may substitute the basic features here for improved hardware or firmware arrangements.


Storage device 730 can be a non-volatile memory and can be a hard disk or other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, solid state memory devices, digital versatile disks, cartridges, random access memories (RAMs) 725, read only memory (ROM) 720, and hybrids thereof.


The storage device 730 can include software modules 732, 734, 736 for controlling the processor 710. Other embodiments may utilize other hardware or software modules. The storage device 730 can connect to the system bus 705. In one aspect, a hardware module that performs a particular function can include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as the processor 710, bus 705, output device 735, and so forth, to carry out the function.



FIG. 7B illustrates an example architecture for a conventional chipset computing system 750 that can be used in accordance with an embodiment. The computing system 750 can include a processor 755, representative of any number of physically and/or logically distinct resources capable of executing software, firmware, and hardware configured to perform identified computations. The processor 755 can communicate with a chipset 760 that can control input to and output from the processor 755. In this example, the chipset 760 can output information to an output device 765, such as a display, and can read and write information to storage device 770, which can include magnetic media, and solid state media, for example. The chipset 760 can also read data from and write data to RAM 775. A bridge 780 for connecting a variety of user interface components 785 can interface with the chipset 760. The user interface components 785 can include a keyboard, a microphone, touch detection and processing circuitry, a pointing device, such as a mouse, and so on. Inputs to the computing system 750 can come from any of a variety of sources, machine generated and/or human generated.


The chipset 760 can also interface with one or more communication interfaces 790 that can have different physical interfaces. The communication interfaces 790 can include interfaces for wired and wireless LANs, for broadband wireless networks, as well as personal area networks. Some applications of the methods for generating, displaying, and using the GUI disclosed herein can include receiving ordered datasets over the physical interface or be generated by the machine itself by processor 755 analyzing data stored in the storage device 770 or the RAM 775. Further, the computing system 700 can receive inputs from a user via the user interface components 785 and execute appropriate functions, such as browsing functions by interpreting these inputs using the processor 755.


It will be appreciated that computing systems 700 and 750 can have more than one processor 710 and 755, respectively, or be part of a group or cluster of computing devices networked together to provide greater processing capability.


For clarity of explanation, in some instances the various embodiments may be presented as including individual functional blocks including functional blocks comprising devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software.


In some embodiments the computer-readable storage devices, mediums, and memories can include a cable or wireless signal containing a bit stream and the like. However, when mentioned, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.


Methods according to the above-described examples can be implemented using computer-executable instructions that are stored or otherwise available from computer readable media. Such instructions can comprise, for example, instructions and data which cause or otherwise configure a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Portions of computer resources used can be accessible over a network. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, firmware, or source code. Examples of computer-readable media that may be used to store instructions, information used, and/or information created during methods according to described examples include magnetic or optical disks, flash memory, USB devices provided with non-volatile memory, networked storage devices, and so on.


Devices implementing methods according to these disclosures can comprise hardware, firmware, and/or software, and can take any of a variety of form factors. Typical examples of such form factors include laptops, smart phones, small form factor personal computers, personal digital assistants, rack mount devices, standalone devices, and so on. Other embodiments may implement functionality described in the disclosure in peripherals or add-in cards. Other embodiments may also implement this functionality on a circuit board among different chips or different processes executing in a single device, by way of further example.


The instructions, media for conveying such instructions, computing resources for executing them, and other structures for supporting such computing resources are means for providing the functions described in these disclosures.


Although the disclosure uses a variety of examples and other information to explain aspects within the scope of the appended claims, a person having ordinary skill in art will understand not to limit the claims to particular features or arrangements in such examples, as one of ordinary skill can use these examples to derive a wide variety of implementations. Further, although the disclosure describes some subject matter in language specific to examples of structural features and/or method steps, one of ordinary skill will understand that the subject matter defined in the appended claims is not necessarily limited to these described features or acts. For example, such functionality can be distributed differently or performed in components other than those identified herein. Rather, the disclosure provides described features and steps as examples of components of systems and methods within the scope of the appended claims.

Claims
  • 1. A method comprising: capturing telemetry from a plurality of servers and a plurality of network devices of a network;analyzing the telemetry;generating, based on the analyzed telemetry, one or more models associating a first amount of latency of an application with one or more amounts of computing resources of a server utilized to execute the application;generating one or more updated models by applying one or more changes to the one or more models that affect either or both application performance at the plurality of servers and network performance at the plurality of network devices;determining whether the one or more changes decreases a latency of the application from the first amount of latency; andin response to determining the decrease, applying the one or more changes to the network to modify either or both the application performance at the plurality of servers and the network performance at the plurality of network devices.
  • 2. The method of claim 1, further comprising: determining a plurality of nodes of an application dependency map for the network by concatenating server features and process features;determining a plurality of edges of the application dependency map based on the telemetry including one or more flows between pairs of nodes of the plurality of nodes;determining a first feature vector for a first node of the plurality of nodes; anddetermining a cluster including the first node and a second node of the plurality of nodes based on a similarity metric between the first feature vector and a second feature vector of the second node satisfying a similarity threshold.
  • 3. The method of claim 2, further comprising: determining a plurality of flowlets for at least one flow between the first node and the second node;determining one or more server latencies and one or more network latencies within at least one flowlet of the plurality of flowlets;generating a data point including the one or more server latencies and the one or more network latencies; andupdating a model of the one or more models using the data point.
  • 4. The method of claim 1, further comprising: determining a least one of: an amount of CPU provisioned to execute the application, an amount of storage provisioned to execute the application, or an amount of disk provisioned to execute the application; anddetermining at least one of: a total amount of CPU of the server, a total amount of storage of the server, or a total amount of disk of the server.
  • 5. The method of claim 1, wherein the one or more changes includes at least one of: altering a configuration of a node of the network, adding a new node to the network, removing an existing node of the network, or migrating a node of the network from a first location to a second location.
  • 6. The method of claim 1, further comprising: determining that the application executes at a first schedule; anddetermining a second schedule for the application that reduces an amount of latency of the application,wherein the one or more changes includes changing a schedule of the application from the first schedule to the second schedule.
  • 7. The method of claim 1, further comprising: determining, based on the telemetry, one or more distances of the server relative to one or more of the plurality of servers and the plurality of network devices.
  • 8. A system comprising: a processor; anda memory storing instructions, which when executed by the processor, causes the processor to: capture telemetry from a plurality of servers and a plurality of network devices of a network;analyze the telemetry;generate, based on the analyzed telemetry, one or more models associating a first amount of latency of an application with one or more amounts of computing resources of a server utilized to execute the application;generate one or more updated models by applying one or more changes to the one or more models that affect either or both application performance at the plurality of servers and network performance at the plurality of network devices;determine whether the one or more changes decreases a latency of the application from the first amount of latency; andin response to the determination of a decrease, apply the one or more changes to the network to modify either or both the application performance at the plurality of servers and the network performance at the plurality of network devices.
  • 9. The system of claim 8, further comprising instructions, which when executed causes the processor to: determine a plurality of nodes of an application dependency map for the network by concatenating server features and process features;determine a plurality of edges of the application dependency map based on the telemetry including one or more flows between pairs of nodes of the plurality of nodes;determine a first feature vector for a first node of the plurality of nodes; anddetermine a cluster including the first node and a second node of the plurality of nodes based on a similarity metric between the first feature vector and a second feature vector of the second node satisfying a similarity threshold.
  • 10. The system of claim 9, further comprising instructions, which when executed causes the processor to: determine a plurality of flowlets for at least one flow between the first node and the second node;determine one or more server latencies and one or more network latencies within at least one flowlet of the plurality of flowlets;generate a data point including the one or more server latencies and the one or more network latencies; andupdate a model of the one or more models using the data point.
  • 11. The system of claim 8, further comprising instructions, which when executed causes the processor to: determine at least one of: an amount of CPU provisioned to execute the application, an amount of storage provisioned to execute the application, or an amount of disk provisioned to execute the application; anddetermine at least one of: a total amount of CPU of the server, a total amount of storage of the server, or a total amount of disk of the server.
  • 12. The system of claim 8, wherein the one or more changes includes at least one of: alter a configuration of a node of the network, add a new node to the network, remove an existing node of the network, or migrate a node of the network from a first location to a second location.
  • 13. The system of claim 8, further comprising instructions, which when executed causes the processor to: determine that the application executes at a first schedule; anddetermine a second schedule for the application that reduces an amount of latency of the application,wherein the one or more changes includes a change in a schedule of the application from the first schedule to the second schedule.
  • 14. The system of claim 8, further comprising instructions, which when executed causes the processor to: determine, based on the telemetry, one or more distances of the server relative to one or more of the plurality of servers and the plurality of network devices.
  • 15. A non-transitory computer-readable medium storing instructions which when executed by a processor, causes the processor to: capture telemetry from a plurality of servers and a plurality of network devices of a network;analyze the telemetry;generate, based on the analyzed telemetry, one or more models associating a first amount of latency of an application with one or more amounts of computing resources of a server utilized to execute the application;generate one or more updated models by applying one or more changes to the one or more models that affect either or both application performance at the plurality of servers and network performance at the plurality of network devices; anddetermine whether the one or more changes decreases a latency of the application from the first amount of latency; andin response to the determination of a decrease, apply the one or more changes to the network to modify either or both the application performance at the plurality of servers and the network performance at the plurality of network devices.
  • 16. The non-transitory computer-readable medium of claim 15, further comprising instructions, which when executed causes the processor to: determine a plurality of nodes of an application dependency map for the network by concatenating server features and process features;determine a plurality of edges of the application dependency map based on the telemetry including one or more flows between pairs of nodes of the plurality of nodes;determine a first feature vector for a first node of the plurality of nodes; anddetermine a cluster including the first node and a second node of the plurality of nodes based on a similarity metric between the first feature vector and a second feature vector of the second node satisfying a similarity threshold.
  • 17. The non-transitory computer-readable medium of claim 16, further comprising instructions, which when executed causes the processor to: determine a plurality of flowlets for at least one flow between the first node and the second node;determine one or more server latencies and one or more network latencies within at least one flowlet of the plurality of flowlets;generate a data point including the one or more server latencies and the one or more network latencies; andupdate a model of the one or more models using the data point.
  • 18. The non-transitory computer-readable medium of claim 15, further comprising instructions, which when executed causes the processor to: determine at least one of: an amount of CPU provisioned to execute the application, an amount of storage provisioned to execute the application, or an amount of disk provisioned to or utilized to execute the application; anddetermine at least one of: a total amount of CPU of the server, a total amount of storage of the server, or a total amount of disk of the server.
  • 19. The non-transitory computer-readable medium of claim 15, wherein the one or more changes includes at least one of: alter a configuration of a node of the network, add a new node to the network, remove an existing node of the network, or migrate a node of the network from a first location to a second location.
  • 20. The non-transitory computer-readable medium of claim 15, further comprising instructions, which when executed causes the processor to: determine that the application executes at a first schedule; anddetermine a second schedule for the application that reduces an amount of latency of the application,wherein the one or more changes includes a change in a schedule of the application from the first schedule to the second schedule.
CROSS-REFERENCE TO RELATED APPLICATION

The instant application is a Continuation of, and claims priority to, U.S. patent application Ser. No. 15/467,788, entitled Predicting Application And Network Performance, filed Mar. 23, 2017, the contents of which are herein incorporated by reference in its entirety.

US Referenced Citations (668)
Number Name Date Kind
5086385 Launey et al. Feb 1992 A
5319754 Meinecke et al. Jun 1994 A
5400246 Wilson et al. Mar 1995 A
5436909 Dev et al. Jul 1995 A
5555416 Owens et al. Sep 1996 A
5726644 Jednacz et al. Mar 1998 A
5742829 Davis et al. Apr 1998 A
5822731 Schultz Oct 1998 A
5831848 Rielly et al. Nov 1998 A
5903545 Sabourin et al. May 1999 A
6012096 Link et al. Jan 2000 A
6141595 Gloudeman et al. Oct 2000 A
6144962 Weinberg et al. Nov 2000 A
6239699 Ronnen May 2001 B1
6247058 Miller et al. Jun 2001 B1
6249241 Jordan et al. Jun 2001 B1
6330562 Boden et al. Dec 2001 B1
6353775 Nichols Mar 2002 B1
6525658 Streetman et al. Feb 2003 B2
6546420 Lemler et al. Apr 2003 B1
6597663 Rekhter Jul 2003 B1
6611896 Mason, Jr. et al. Aug 2003 B1
6654750 Adams et al. Nov 2003 B1
6728779 Griffin et al. Apr 2004 B1
6801878 Hintz et al. Oct 2004 B1
6816461 Scrandis et al. Nov 2004 B1
6847993 Novaes et al. Jan 2005 B1
6848106 Hipp Jan 2005 B1
6925490 Novaes et al. Aug 2005 B1
6958998 Shorey Oct 2005 B2
6983323 Cantrell et al. Jan 2006 B2
6996817 Birum et al. Feb 2006 B2
6999452 Drummond-Murray et al. Feb 2006 B1
7002464 Bruemmer et al. Feb 2006 B2
7024468 Meyer et al. Apr 2006 B1
7096368 Kouznetsov et al. Aug 2006 B2
7111055 Falkner Sep 2006 B2
7120934 Ishikawa Oct 2006 B2
7133923 MeLampy et al. Nov 2006 B2
7162643 Sankaran et al. Jan 2007 B1
7181769 Keanini et al. Feb 2007 B1
7185103 Jain Feb 2007 B1
7203740 Putzolu et al. Apr 2007 B1
7302487 Ylonen et al. Nov 2007 B2
7337206 Wen et al. Feb 2008 B1
7349761 Cruse Mar 2008 B1
7353511 Ziese Apr 2008 B1
7356679 Le et al. Apr 2008 B1
7360072 Soltis et al. Apr 2008 B1
7370092 Aderton et al. May 2008 B2
7395195 Suenbuel et al. Jul 2008 B2
7444404 Wetherall et al. Oct 2008 B2
7466681 Ashwood-Smith et al. Dec 2008 B2
7467205 Dempster et al. Dec 2008 B1
7496040 Seo Feb 2009 B2
7496575 Buccella et al. Feb 2009 B2
7530105 Gilbert et al. May 2009 B2
7539770 Meier May 2009 B2
7568107 Rathi et al. Jul 2009 B1
7610330 Quinn et al. Oct 2009 B1
7633942 Bearden et al. Dec 2009 B2
7644438 Dash et al. Jan 2010 B1
7676570 Levy et al. Mar 2010 B2
7681131 Quarterman et al. Mar 2010 B1
7693947 Judge et al. Apr 2010 B2
7743242 Oberhaus et al. Jun 2010 B2
7752307 Takara Jul 2010 B2
7774498 Kraemer et al. Aug 2010 B1
7783457 Cunningham Aug 2010 B2
7787480 Mehta et al. Aug 2010 B1
7788477 Huang et al. Aug 2010 B1
7808897 Mehta et al. Oct 2010 B1
7813822 Hoffberg Oct 2010 B1
7844696 Labovitz et al. Nov 2010 B2
7844744 Abercrombie et al. Nov 2010 B2
7864707 Dimitropoulos et al. Jan 2011 B2
7873025 Patel et al. Jan 2011 B2
7873074 Boland Jan 2011 B1
7874001 Beck et al. Jan 2011 B2
7885197 Metzler Feb 2011 B2
7895649 Brook et al. Feb 2011 B1
7904420 Ianni Mar 2011 B2
7930752 Hertzog et al. Apr 2011 B2
7934248 Yehuda et al. Apr 2011 B1
7957934 Greifeneder Jun 2011 B2
7961637 McBeath Jun 2011 B2
7970946 Djabarov et al. Jun 2011 B1
7975035 Popescu et al. Jul 2011 B2
8001610 Chickering et al. Aug 2011 B1
8005935 Pradhan et al. Aug 2011 B2
8040232 Oh et al. Oct 2011 B2
8040822 Proulx et al. Oct 2011 B2
8056134 Ogilvie Nov 2011 B1
8115617 Thubert et al. Feb 2012 B2
8135657 Kapoor et al. Mar 2012 B2
8156430 Newman Apr 2012 B2
8160063 Maltz et al. Apr 2012 B2
8179809 Eppstein et al. May 2012 B1
8181248 Oh et al. May 2012 B2
8185824 Mitchell et al. May 2012 B1
8239365 Salman Aug 2012 B2
8239915 Satish et al. Aug 2012 B1
8250657 Nachenberg et al. Aug 2012 B1
8255972 Azagury et al. Aug 2012 B2
8266697 Coffman Sep 2012 B2
8272875 Jurmain Sep 2012 B1
8281397 Vaidyanathan et al. Oct 2012 B2
8291495 Burns et al. Oct 2012 B1
8296847 Mendonca et al. Oct 2012 B2
8311973 Zadeh Nov 2012 B1
8365286 Poston Jan 2013 B2
8370407 Devarajan et al. Feb 2013 B1
8381289 Pereira et al. Feb 2013 B1
8391270 Van Der Stok et al. Mar 2013 B2
8407164 Malik et al. Mar 2013 B2
8407798 Lotem et al. Mar 2013 B1
8413235 Chen et al. Apr 2013 B1
8442073 Skubacz et al. May 2013 B2
8451731 Lee et al. May 2013 B1
8462212 Kundu et al. Jun 2013 B1
8489765 Vasseur et al. Jul 2013 B2
8499348 Rubin Jul 2013 B1
8516590 Ranadive et al. Aug 2013 B1
8527977 Cheng et al. Sep 2013 B1
8549635 Muttik et al. Oct 2013 B2
8570861 Brandwine et al. Oct 2013 B1
8572600 Chung et al. Oct 2013 B2
8572734 McConnell et al. Oct 2013 B2
8572735 Ghosh et al. Oct 2013 B2
8572739 Cruz et al. Oct 2013 B1
8588081 Salam et al. Nov 2013 B2
8600726 Varshney et al. Dec 2013 B1
8613084 Dalcher Dec 2013 B2
8615803 Dacier et al. Dec 2013 B2
8630316 Haba Jan 2014 B2
8631464 Belakhdar et al. Jan 2014 B2
8640086 Bonev et al. Jan 2014 B2
8656493 Capalik Feb 2014 B2
8661544 Yen et al. Feb 2014 B2
8677487 Balupari et al. Mar 2014 B2
8683389 Bar-Yam et al. Mar 2014 B1
8706914 Duchesneau Apr 2014 B2
8713676 Pandrangi et al. Apr 2014 B2
8719452 Ding et al. May 2014 B1
8719835 Kanso et al. May 2014 B2
8750287 Bui et al. Jun 2014 B2
8752042 Ratica Jun 2014 B2
8752179 Zaitsev Jun 2014 B2
8755396 Sindhu et al. Jun 2014 B2
8762951 Kosche et al. Jun 2014 B1
8769084 Westerfeld et al. Jul 2014 B2
8775577 Alford et al. Jul 2014 B1
8776180 Kumar et al. Jul 2014 B2
8812448 Anderson et al. Aug 2014 B1
8812725 Kulkarni Aug 2014 B2
8813236 Saha et al. Aug 2014 B1
8825848 Dotan et al. Sep 2014 B1
8832013 Adams et al. Sep 2014 B1
8832461 Saroiu et al. Sep 2014 B2
8849926 Marzencki et al. Sep 2014 B2
8881258 Paul et al. Nov 2014 B2
8887238 Howard et al. Nov 2014 B2
8904520 Nachenberg et al. Dec 2014 B1
8908685 Patel et al. Dec 2014 B2
8914497 Xiao et al. Dec 2014 B1
8931043 Cooper et al. Jan 2015 B2
8954610 Berke et al. Feb 2015 B2
8955124 Kim et al. Feb 2015 B2
8966021 Allen Feb 2015 B1
8966625 Zuk et al. Feb 2015 B1
8973147 Pearcy et al. Mar 2015 B2
8984331 Quinn Mar 2015 B2
8990386 He et al. Mar 2015 B2
8996695 Anderson et al. Mar 2015 B2
8997227 Mhatre et al. Mar 2015 B1
9014047 Alcala et al. Apr 2015 B2
9015716 Fletcher et al. Apr 2015 B2
9071575 Lemaster et al. Jun 2015 B2
9088598 Zhang et al. Jul 2015 B1
9110905 Polley et al. Aug 2015 B2
9117075 Yeh Aug 2015 B1
9130836 Kapadia et al. Sep 2015 B2
9152789 Natarajan et al. Oct 2015 B2
9160764 Stiansen et al. Oct 2015 B2
9170917 Kumar et al. Oct 2015 B2
9178906 Chen et al. Nov 2015 B1
9185127 Neou et al. Nov 2015 B2
9191400 Ptasinski et al. Nov 2015 B1
9191402 Yan Nov 2015 B2
9197654 Ben-Shalom et al. Nov 2015 B2
9225793 Dutta et al. Dec 2015 B2
9237111 Banavalikar et al. Jan 2016 B2
9246702 Sharma et al. Jan 2016 B1
9246773 Degioanni Jan 2016 B2
9253042 Lumezanu et al. Feb 2016 B2
9253206 Fleischman Feb 2016 B1
9258217 Duffield et al. Feb 2016 B2
9281940 Matsuda et al. Mar 2016 B2
9286047 Avramov et al. Mar 2016 B1
9294486 Chiang et al. Mar 2016 B1
9317574 Brisebois et al. Apr 2016 B1
9319384 Yan et al. Apr 2016 B2
9369435 Short et al. Jun 2016 B2
9369479 Lin Jun 2016 B2
9378068 Anantharam et al. Jun 2016 B2
9396327 Shimomura et al. Jul 2016 B2
9405903 Xie et al. Aug 2016 B1
9417985 Baars et al. Aug 2016 B2
9418222 Rivera et al. Aug 2016 B1
9426068 Dunbar et al. Aug 2016 B2
9454324 Madhavapeddi Sep 2016 B1
9462013 Boss et al. Oct 2016 B1
9465696 McNeil et al. Oct 2016 B2
9501744 Brisebois et al. Nov 2016 B1
9531589 Clemm et al. Dec 2016 B2
9563517 Natanzon et al. Feb 2017 B1
9621413 Lee Apr 2017 B1
9634915 Bley Apr 2017 B2
9645892 Patwardhan May 2017 B1
9684453 Holt et al. Jun 2017 B2
9697033 Koponen et al. Jul 2017 B2
9733973 Prasad et al. Aug 2017 B2
9749145 Banavalikar et al. Aug 2017 B2
9800608 Korsunsky et al. Oct 2017 B2
9904584 Konig et al. Feb 2018 B2
9916538 Zadeh et al. Mar 2018 B2
9935851 Gandham et al. Apr 2018 B2
10009240 Rao et al. Jun 2018 B2
10284928 Teflian May 2019 B2
20010028646 Arts et al. Oct 2001 A1
20020053033 Cooper et al. May 2002 A1
20020097687 Meiri et al. Jul 2002 A1
20020103793 Koller et al. Aug 2002 A1
20020107857 Teraslinna Aug 2002 A1
20020141343 Bays Oct 2002 A1
20020184393 Leddy et al. Dec 2002 A1
20030023601 Fortier, Jr. et al. Jan 2003 A1
20030065986 Fraenkel et al. Apr 2003 A1
20030097439 Strayer et al. May 2003 A1
20030126242 Chang Jul 2003 A1
20030145232 Poletto et al. Jul 2003 A1
20030151513 Herrmann et al. Aug 2003 A1
20030154399 Zuk et al. Aug 2003 A1
20030177208 Harvey, IV Sep 2003 A1
20040019676 Iwatsuki et al. Jan 2004 A1
20040030776 Cantrell et al. Feb 2004 A1
20040213221 Civanlar et al. Oct 2004 A1
20040220984 Dudfield et al. Nov 2004 A1
20040243533 Dempster et al. Dec 2004 A1
20040255050 Takehiro et al. Dec 2004 A1
20040268149 Aaron Dec 2004 A1
20050028154 Smith et al. Feb 2005 A1
20050039104 Shah et al. Feb 2005 A1
20050063377 Bryant et al. Mar 2005 A1
20050083933 Fine et al. Apr 2005 A1
20050108331 Osterman May 2005 A1
20050122325 Twait Jun 2005 A1
20050138157 Jung et al. Jun 2005 A1
20050166066 Ahuja et al. Jul 2005 A1
20050177829 Vishwanath Aug 2005 A1
20050182681 Bruskotter et al. Aug 2005 A1
20050185621 Sivakumar et al. Aug 2005 A1
20050198247 Perry et al. Sep 2005 A1
20050198371 Smith et al. Sep 2005 A1
20050198629 Vishwanath Sep 2005 A1
20050207376 Ashwood-Smith et al. Sep 2005 A1
20050257244 Joly et al. Nov 2005 A1
20050289244 Sahu et al. Dec 2005 A1
20060048218 Lingafelt et al. Mar 2006 A1
20060077909 Saleh et al. Apr 2006 A1
20060080733 Khosmood et al. Apr 2006 A1
20060089985 Poletto Apr 2006 A1
20060095968 Portolani et al. May 2006 A1
20060143432 Rothman et al. Jun 2006 A1
20060156408 Himberger et al. Jul 2006 A1
20060159032 Ukrainetz et al. Jul 2006 A1
20060173912 Lindvall et al. Aug 2006 A1
20060195448 Newport Aug 2006 A1
20060272018 Fouant Nov 2006 A1
20060274659 Ouderkirk Dec 2006 A1
20060280179 Meier Dec 2006 A1
20060294219 Ogawa et al. Dec 2006 A1
20070014275 Bettink et al. Jan 2007 A1
20070025306 Cox et al. Feb 2007 A1
20070044147 Choi et al. Feb 2007 A1
20070097976 Wood et al. May 2007 A1
20070118654 Jamkhedkar et al. May 2007 A1
20070127491 Verzijp et al. Jun 2007 A1
20070162420 Ou et al. Jul 2007 A1
20070169179 Narad Jul 2007 A1
20070195729 Li et al. Aug 2007 A1
20070195794 Fujita et al. Aug 2007 A1
20070195797 Patel et al. Aug 2007 A1
20070201474 Isobe Aug 2007 A1
20070211637 Mitchell Sep 2007 A1
20070214348 Danielsen Sep 2007 A1
20070230415 Malik Oct 2007 A1
20070232265 Park et al. Oct 2007 A1
20070250930 Aziz et al. Oct 2007 A1
20070300061 Kim et al. Dec 2007 A1
20080002697 Anantharamaiah et al. Jan 2008 A1
20080022385 Crowell et al. Jan 2008 A1
20080028389 Genty et al. Jan 2008 A1
20080043716 Toombs Feb 2008 A1
20080046708 Fitzgerald et al. Feb 2008 A1
20080049633 Edwards et al. Feb 2008 A1
20080056124 Nanda et al. Mar 2008 A1
20080082662 Danliker et al. Apr 2008 A1
20080101234 Nakil et al. May 2008 A1
20080120350 Grabowski et al. May 2008 A1
20080126534 Mueller et al. May 2008 A1
20080141246 Kuck et al. Jun 2008 A1
20080155245 Lipscombe et al. Jun 2008 A1
20080250122 Zsigmond et al. Oct 2008 A1
20080270199 Chess et al. Oct 2008 A1
20080282347 Dadhia et al. Nov 2008 A1
20080295163 Kang Nov 2008 A1
20080301765 Nicol et al. Dec 2008 A1
20080304715 Ishida Dec 2008 A1
20090059934 Aggarwal et al. Mar 2009 A1
20090064332 Porras et al. Mar 2009 A1
20090109849 Wood et al. Apr 2009 A1
20090133126 Jang et al. May 2009 A1
20090138590 Lee et al. May 2009 A1
20090180393 Nakamura Jul 2009 A1
20090241170 Kumar et al. Sep 2009 A1
20090292795 Ford et al. Nov 2009 A1
20090296593 Prescott Dec 2009 A1
20090300180 Dehaan et al. Dec 2009 A1
20090307753 Dupont et al. Dec 2009 A1
20090313373 Hanna et al. Dec 2009 A1
20090313698 Wahl Dec 2009 A1
20090319912 Serr et al. Dec 2009 A1
20090323543 Shimakura Dec 2009 A1
20090328219 Narayanaswamy Dec 2009 A1
20100005288 Rao et al. Jan 2010 A1
20100049839 Parker et al. Feb 2010 A1
20100054241 Shah et al. Mar 2010 A1
20100077445 Schneider et al. Mar 2010 A1
20100095293 O'Neill et al. Apr 2010 A1
20100095367 Narayanaswamy Apr 2010 A1
20100095377 Krywaniuk Apr 2010 A1
20100138526 DeHaan et al. Jun 2010 A1
20100138810 Komatsu et al. Jun 2010 A1
20100148940 Gelvin et al. Jun 2010 A1
20100153316 Duffield et al. Jun 2010 A1
20100153696 Beachem et al. Jun 2010 A1
20100180016 Bugwadia et al. Jul 2010 A1
20100194741 Finocchio Aug 2010 A1
20100220584 DeHaan et al. Sep 2010 A1
20100235514 Beachem Sep 2010 A1
20100235879 Burnside et al. Sep 2010 A1
20100235915 Memon et al. Sep 2010 A1
20100287266 Asati et al. Nov 2010 A1
20100303240 Beachem Dec 2010 A1
20100306180 Johnson et al. Dec 2010 A1
20100317420 Hoffberg Dec 2010 A1
20100319060 Aiken et al. Dec 2010 A1
20110004935 Moffie et al. Jan 2011 A1
20110010585 Bugenhagen et al. Jan 2011 A1
20110022641 Werth et al. Jan 2011 A1
20110055381 Narasimhan et al. Mar 2011 A1
20110055388 Yumerefendi et al. Mar 2011 A1
20110066719 Miryanov et al. Mar 2011 A1
20110069685 Tofighbakhsh Mar 2011 A1
20110072119 Bronstein et al. Mar 2011 A1
20110083125 Komatsu et al. Apr 2011 A1
20110085556 Breslin et al. Apr 2011 A1
20110103259 Aybay et al. May 2011 A1
20110107074 Chan et al. May 2011 A1
20110107331 Evans et al. May 2011 A1
20110126136 Abella et al. May 2011 A1
20110126275 Anderson et al. May 2011 A1
20110145885 Rivers et al. Jun 2011 A1
20110153039 Gvelesiani et al. Jun 2011 A1
20110153811 Jeong et al. Jun 2011 A1
20110158088 Lofstrand et al. Jun 2011 A1
20110170860 Smith et al. Jul 2011 A1
20110173490 Narayanaswamy et al. Jul 2011 A1
20110185423 Sallam Jul 2011 A1
20110196957 Ayachitula et al. Aug 2011 A1
20110202655 Sharma et al. Aug 2011 A1
20110214174 Herzog et al. Sep 2011 A1
20110225207 Subramanian et al. Sep 2011 A1
20110228696 Agarwal et al. Sep 2011 A1
20110238793 Bedare et al. Sep 2011 A1
20110246123 DelloStritto Oct 2011 A1
20110246663 Melsen et al. Oct 2011 A1
20110277034 Hanson Nov 2011 A1
20110283277 Castillo et al. Nov 2011 A1
20110302652 Westerfeld Dec 2011 A1
20110314148 Petersen et al. Dec 2011 A1
20110317982 Xu et al. Dec 2011 A1
20120005542 Petersen et al. Jan 2012 A1
20120079592 Pandrangi Mar 2012 A1
20120089664 Igelka Apr 2012 A1
20120102361 Sass et al. Apr 2012 A1
20120102543 Kohli et al. Apr 2012 A1
20120110188 Van Biljon et al. May 2012 A1
20120117226 Tanaka et al. May 2012 A1
20120117642 Lin et al. May 2012 A1
20120136996 Seo et al. May 2012 A1
20120137278 Draper et al. May 2012 A1
20120137361 Yi et al. May 2012 A1
20120140626 Anand et al. Jun 2012 A1
20120147890 Kikuchi Jun 2012 A1
20120195198 Regan Aug 2012 A1
20120197856 Banka et al. Aug 2012 A1
20120198541 Reeves Aug 2012 A1
20120216271 Cooper et al. Aug 2012 A1
20120218989 Tanabe et al. Aug 2012 A1
20120219004 Balus et al. Aug 2012 A1
20120233348 Winters Sep 2012 A1
20120233473 Vasseur et al. Sep 2012 A1
20120240232 Azuma Sep 2012 A1
20120246303 Petersen et al. Sep 2012 A1
20120254109 Shukla et al. Oct 2012 A1
20120260227 Shukla et al. Oct 2012 A1
20120278021 Lin et al. Nov 2012 A1
20120281700 Koganti et al. Nov 2012 A1
20120300628 Prescott et al. Nov 2012 A1
20130003538 Greenburg et al. Jan 2013 A1
20130003733 Venkatesan et al. Jan 2013 A1
20130006935 Grisby Jan 2013 A1
20130007435 Bayani Jan 2013 A1
20130038358 Cook et al. Feb 2013 A1
20130041934 Annamalaisami et al. Feb 2013 A1
20130054682 Malik et al. Feb 2013 A1
20130085889 Fitting et al. Apr 2013 A1
20130086272 Chen et al. Apr 2013 A1
20130103827 Dunlap et al. Apr 2013 A1
20130107709 Campbell et al. May 2013 A1
20130124807 Nielsen et al. May 2013 A1
20130125107 Bandakka et al. May 2013 A1
20130145099 Liu et al. Jun 2013 A1
20130148663 Xiong Jun 2013 A1
20130159999 Chiueh et al. Jun 2013 A1
20130173784 Wang et al. Jul 2013 A1
20130174256 Powers Jul 2013 A1
20130179487 Lubetzky et al. Jul 2013 A1
20130179879 Zhang et al. Jul 2013 A1
20130198517 Mazzarella Aug 2013 A1
20130198839 Wei et al. Aug 2013 A1
20130201986 Sajassi et al. Aug 2013 A1
20130205293 Levijarvi et al. Aug 2013 A1
20130219161 Fontignie et al. Aug 2013 A1
20130219500 Lukas et al. Aug 2013 A1
20130232498 Mangtani et al. Sep 2013 A1
20130242999 Kamble et al. Sep 2013 A1
20130246925 Ahuja et al. Sep 2013 A1
20130247201 Alperovitch et al. Sep 2013 A1
20130254879 Chesla et al. Sep 2013 A1
20130268994 Cooper et al. Oct 2013 A1
20130275579 Hernandez et al. Oct 2013 A1
20130283374 Zisapel et al. Oct 2013 A1
20130290521 Labovitz Oct 2013 A1
20130297771 Osterloh et al. Nov 2013 A1
20130301472 Allan Nov 2013 A1
20130304900 Trabelsi et al. Nov 2013 A1
20130305369 Karta et al. Nov 2013 A1
20130318357 Abraham et al. Nov 2013 A1
20130326623 Kruglick Dec 2013 A1
20130333029 Chesla et al. Dec 2013 A1
20130336164 Yang et al. Dec 2013 A1
20130346736 Cook et al. Dec 2013 A1
20130347103 Veteikis et al. Dec 2013 A1
20140006610 Formby et al. Jan 2014 A1
20140006871 Lakshmanan et al. Jan 2014 A1
20140012814 Bercovici et al. Jan 2014 A1
20140019972 Yahalom et al. Jan 2014 A1
20140031005 Sumcad et al. Jan 2014 A1
20140033193 Palaniappan Jan 2014 A1
20140036688 Stassinopoulos et al. Feb 2014 A1
20140040343 Nickolov et al. Feb 2014 A1
20140047185 Peterson et al. Feb 2014 A1
20140047372 Gnezdov et al. Feb 2014 A1
20140056318 Hansson et al. Feb 2014 A1
20140059200 Nguyen et al. Feb 2014 A1
20140074946 Dirstine et al. Mar 2014 A1
20140089494 Dasari et al. Mar 2014 A1
20140092884 Murphy et al. Apr 2014 A1
20140096058 Molesky et al. Apr 2014 A1
20140105029 Jain et al. Apr 2014 A1
20140115219 Ajanovic et al. Apr 2014 A1
20140129942 Rathod May 2014 A1
20140137109 Sharma et al. May 2014 A1
20140140244 Kapadia et al. May 2014 A1
20140143825 Behrendt et al. May 2014 A1
20140149490 Luxenberg et al. May 2014 A1
20140156814 Barabash et al. Jun 2014 A1
20140156861 Cruz-Aguilar et al. Jun 2014 A1
20140164607 Bai et al. Jun 2014 A1
20140165200 Singla Jun 2014 A1
20140165207 Engel et al. Jun 2014 A1
20140173623 Chang et al. Jun 2014 A1
20140192639 Smirnov Jul 2014 A1
20140201717 Mascaro et al. Jul 2014 A1
20140215573 Cepuran Jul 2014 A1
20140215621 Xaypanya et al. Jul 2014 A1
20140224784 Kohler Aug 2014 A1
20140225603 Auguste et al. Aug 2014 A1
20140233387 Zheng et al. Aug 2014 A1
20140269777 Rothstein et al. Sep 2014 A1
20140280499 Basavaiah et al. Sep 2014 A1
20140281030 Cui et al. Sep 2014 A1
20140286354 Van De Poel et al. Sep 2014 A1
20140289854 Mahvi Sep 2014 A1
20140298461 Hohndel et al. Oct 2014 A1
20140307686 Su et al. Oct 2014 A1
20140317278 Kersch et al. Oct 2014 A1
20140317737 Shin et al. Oct 2014 A1
20140330616 Lyras Nov 2014 A1
20140331048 Casas-Sanchez et al. Nov 2014 A1
20140331276 Frascadore et al. Nov 2014 A1
20140331280 Porras et al. Nov 2014 A1
20140331304 Wong Nov 2014 A1
20140348182 Chandra et al. Nov 2014 A1
20140351203 Kunnatur et al. Nov 2014 A1
20140351415 Harrigan et al. Nov 2014 A1
20140359695 Chari et al. Dec 2014 A1
20150006689 Szilagyi et al. Jan 2015 A1
20150006714 Jain Jan 2015 A1
20150009840 Pruthi et al. Jan 2015 A1
20150012339 Onischuk Jan 2015 A1
20150026809 Altman et al. Jan 2015 A1
20150033305 Shear et al. Jan 2015 A1
20150036480 Huang et al. Feb 2015 A1
20150036533 Sodhi et al. Feb 2015 A1
20150039751 Harrigan et al. Feb 2015 A1
20150046882 Menyhart et al. Feb 2015 A1
20150052441 Degioanni Feb 2015 A1
20150058976 Carney et al. Feb 2015 A1
20150067143 Babakhan et al. Mar 2015 A1
20150067786 Fiske Mar 2015 A1
20150082151 Liang et al. Mar 2015 A1
20150082430 Sridhara et al. Mar 2015 A1
20150085665 Kompella et al. Mar 2015 A1
20150095332 Beisiegel et al. Apr 2015 A1
20150112933 Satapathy Apr 2015 A1
20150113133 Srinivas et al. Apr 2015 A1
20150124608 Agarwal et al. May 2015 A1
20150124652 Dhamapurikar et al. May 2015 A1
20150128133 Pohlmann May 2015 A1
20150128205 Mahaffey et al. May 2015 A1
20150138993 Forster et al. May 2015 A1
20150142962 Srinivas et al. May 2015 A1
20150195291 Zuk et al. Jul 2015 A1
20150222939 Gallant et al. Aug 2015 A1
20150249622 Phillips et al. Sep 2015 A1
20150256555 Choi et al. Sep 2015 A1
20150261842 Huang et al. Sep 2015 A1
20150261886 Wu et al. Sep 2015 A1
20150265150 Darty Sep 2015 A1
20150271008 Jain et al. Sep 2015 A1
20150271255 Mackay et al. Sep 2015 A1
20150295945 Canzanese, Jr. et al. Oct 2015 A1
20150312233 Graham, III et al. Oct 2015 A1
20150347554 Vasantham et al. Dec 2015 A1
20150356297 Yang et al. Dec 2015 A1
20150358352 Chasin et al. Dec 2015 A1
20160006753 McDaid et al. Jan 2016 A1
20160019030 Shukla et al. Jan 2016 A1
20160020959 Rahaman Jan 2016 A1
20160021131 Heilig Jan 2016 A1
20160026552 Holden et al. Jan 2016 A1
20160036636 Erickson et al. Feb 2016 A1
20160036837 Jain et al. Feb 2016 A1
20160050132 Zhang et al. Feb 2016 A1
20160072815 Rieke et al. Mar 2016 A1
20160080414 Kolton et al. Mar 2016 A1
20160087861 Kuan et al. Mar 2016 A1
20160094394 Sharma et al. Mar 2016 A1
20160094529 Mityagin Mar 2016 A1
20160103692 Guntaka et al. Apr 2016 A1
20160105350 Greifeneder et al. Apr 2016 A1
20160112270 Danait et al. Apr 2016 A1
20160112284 Pon et al. Apr 2016 A1
20160119234 Valencia Lopez et al. Apr 2016 A1
20160127395 Underwood et al. May 2016 A1
20160147585 Konig et al. May 2016 A1
20160162308 Chen et al. Jun 2016 A1
20160162312 Doherty et al. Jun 2016 A1
20160173446 Nantel Jun 2016 A1
20160173535 Barabash et al. Jun 2016 A1
20160183093 Vaughn et al. Jun 2016 A1
20160191476 Schutz Harald et al. Jun 2016 A1
20160205002 Rieke et al. Jul 2016 A1
20160216994 Sefidcon et al. Jul 2016 A1
20160217022 Velipasaoglu et al. Jul 2016 A1
20160255082 Rathod Sep 2016 A1
20160269424 Chandola et al. Sep 2016 A1
20160269442 Shieh Sep 2016 A1
20160269482 Jamjoom et al. Sep 2016 A1
20160287189 Modai Oct 2016 A1
20160294691 Joshi Oct 2016 A1
20160308908 Kirby et al. Oct 2016 A1
20160337204 Dubey et al. Nov 2016 A1
20160357424 Pang et al. Dec 2016 A1
20160357546 Chang et al. Dec 2016 A1
20160357587 Yadav et al. Dec 2016 A1
20160357957 Deen et al. Dec 2016 A1
20160359592 Kulshreshtha et al. Dec 2016 A1
20160359628 Singh et al. Dec 2016 A1
20160359658 Yadav et al. Dec 2016 A1
20160359673 Gupta et al. Dec 2016 A1
20160359677 Kulshreshtha et al. Dec 2016 A1
20160359678 Madani et al. Dec 2016 A1
20160359679 Parasdehgheibi et al. Dec 2016 A1
20160359680 Parasdehgheibi et al. Dec 2016 A1
20160359686 Parasdehgheibi et al. Dec 2016 A1
20160359695 Yadav et al. Dec 2016 A1
20160359696 Yadav et al. Dec 2016 A1
20160359697 Scheib et al. Dec 2016 A1
20160359698 Deen et al. Dec 2016 A1
20160359699 Gandham et al. Dec 2016 A1
20160359700 Pang et al. Dec 2016 A1
20160359701 Pang et al. Dec 2016 A1
20160359703 Gandham et al. Dec 2016 A1
20160359704 Gandham et al. Dec 2016 A1
20160359705 Parasdehgheibi et al. Dec 2016 A1
20160359708 Gandham et al. Dec 2016 A1
20160359709 Deen et al. Dec 2016 A1
20160359711 Deen et al. Dec 2016 A1
20160359712 Alizadeh Attar et al. Dec 2016 A1
20160359740 Parasdehgheibi et al. Dec 2016 A1
20160359759 Singh et al. Dec 2016 A1
20160359872 Yadav et al. Dec 2016 A1
20160359877 Kulshreshtha et al. Dec 2016 A1
20160359878 Prasad et al. Dec 2016 A1
20160359879 Deen et al. Dec 2016 A1
20160359880 Pang et al. Dec 2016 A1
20160359881 Yadav et al. Dec 2016 A1
20160359888 Gupta et al. Dec 2016 A1
20160359889 Yadav et al. Dec 2016 A1
20160359890 Deen et al. Dec 2016 A1
20160359891 Pang et al. Dec 2016 A1
20160359897 Yadav et al. Dec 2016 A1
20160359905 Touboul et al. Dec 2016 A1
20160359912 Gupta et al. Dec 2016 A1
20160359913 Gupta et al. Dec 2016 A1
20160359914 Deen et al. Dec 2016 A1
20160359915 Gupta et al. Dec 2016 A1
20160359917 Rao et al. Dec 2016 A1
20160373481 Sultan et al. Dec 2016 A1
20160380865 Dubai et al. Dec 2016 A1
20170006141 Bhadra Jan 2017 A1
20170024453 Raja et al. Jan 2017 A1
20170032310 Mimnaugh Feb 2017 A1
20170034018 Parasdehgheibi et al. Feb 2017 A1
20170048121 Hobbs et al. Feb 2017 A1
20170070582 Desai et al. Mar 2017 A1
20170085483 Mihaly et al. Mar 2017 A1
20170208487 Ratakonda et al. Jul 2017 A1
20170250880 Akens et al. Aug 2017 A1
20170250951 Wang et al. Aug 2017 A1
20170289067 Lu et al. Oct 2017 A1
20170295141 Thubert et al. Oct 2017 A1
20170302691 Singh et al. Oct 2017 A1
20170331747 Singh et al. Nov 2017 A1
20170346736 Chander et al. Nov 2017 A1
20170364380 Frye, Jr. et al. Dec 2017 A1
20180006911 Dickey Jan 2018 A1
20180007115 Nedeltchev et al. Jan 2018 A1
20180013670 Kapadia et al. Jan 2018 A1
20180048850 Bostick Feb 2018 A1
20180145906 Yadav et al. May 2018 A1
20180193672 Hirai Jul 2018 A1
20180278496 Kulshreshtha et al. Sep 2018 A1
Foreign Referenced Citations (25)
Number Date Country
101093452 Dec 2007 CN
101770551 Jul 2010 CN
102521537 Jun 2012 CN
103023970 Apr 2013 CN
103716137 Apr 2014 CN
104065518 Sep 2014 CN
107196807 Sep 2017 CN
0811942 Dec 1997 EP
1076848 Jul 2002 EP
1383261 Jan 2004 EP
1450511 Aug 2004 EP
2045974 Apr 2008 EP
2043320 Apr 2009 EP
2860912 Apr 2015 EP
2887595 Jun 2015 EP
2009-016906 Jan 2009 JP
1394338 May 2014 KR
WO 2007014314 Feb 2007 WO
WO 2007070711 Jun 2007 WO
WO 2008069439 Jun 2008 WO
WO 2013030830 Mar 2013 WO
WO 2015042171 Mar 2015 WO
WO 2015099778 Jul 2015 WO
WO 2016004075 Jan 2016 WO
WO 2016019523 Feb 2016 WO
Non-Patent Literature Citations (100)
Entry
Australian Government Department of Defence, Intelligence and Security, “Top 4 Strategies to Mitigate Targeted Cyber Intrusions,” Cyber Security Operations Centre Jul. 2013, http://www.asd.gov.au/infosec/top-mitigations/top-4-strategies-explained.htm.
Author Unknown, “Blacklists & Dynamic Reputation: Understanding Why the Evolving Threat Eludes Blacklists,” www.dambala.com, 9 pages, Dambala, Atlanta, GA, USA.
Aydin, Galip, et al., “Architecture and Implementation of a Scalable Sensor Data Storage and Analysis Using Cloud Computing and Big Data Technologies,” Journal of Sensors, vol. 2015, Article ID 834217, Feb. 2015, 11 pages.
Backes, Michael, et al., “Data Lineage in Malicious Environments,” IEEE 2015, pp. 1-13.
Bayati, Mohsen, et al., “Message-Passing Algorithms for Sparse Network Alignment,” Mar. 2013, 31 pages.
Berezinski, Przemyslaw, et al., “An Entropy-Based Network Anomaly Detection Method,” Entropy, 2015, vol. 17, www.mdpi.com/journal/entropy, pp. 2367-2408.
Berthier, Robin, et al. “Nfsight: Netflow-based Network Awareness Tool,” 2010, 16 pages.
Bhuyan, Dhiraj, “Fighting Bots and Botnets,” 2006, pp. 23-28.
Blair, Dana, et al., U.S. Appl. No. 62/106,006, filed Jan. 21, 2015, entitled “Monitoring Network Policy Compliance.”
Chandran, Midhun, et al., “Monitoring in a Virtualized Environment,” GSTF International Journal on Computing, vol. 1, No. 1, Aug. 2010.
Chari, Suresh, et al., “Ensuring continuous compliance through reconciling policy with usage,” Proceedings of the 18th ACM symposium on Access control models and technologies (SACMAT '13). ACM, New York, NY, USA, 49-60.
Chen, Xu, et al., “Automating network application dependency discovery: experiences, limitations, and new solutions,” 8th USENIX conference on Operating systems design and implementation (OSDI'08), USENIX Association, Berkeley, CA, USA, 117-130.
Cisco Systems, “Cisco Network Analysis Modules (NAM) Tutorial,” Cisco Systems, Inc., Version 3.5.
Cisco Systems, Inc., “Addressing Compliance from One Infrastructure: Cisco Unified Compliance Solution Framework,” 2014.
Cisco Systems, Inc., “Cisco Application Dependency Mapping Service,” 2009.
Cisco Systems, Inc., “White Paper—New Cisco Technologies Help Customers Achieve Regulatory Compliance,” 1992-2008.
Cisco Systems, Inc., “A Cisco Guide to Defending Against Distributed Denial of Service Attacks,” May 3, 2016, 34 pages.
Cisco Technology, Inc., “Cisco Lock-and-Key:Dynamic Access Lists,” http://www.cisco.com/c/en/us/support/docs/security-vpn/lock-key/7604-13.html; Updated Jul. 12, 2006, 16 pages.
Di Lorenzo, Guisy, et al., “EXSED: An Intelligent Tool for Exploration of Social Events Dynamics from Augmented Trajectories,” Mobile Data Management (MDM), pp. 323-330, Jun. 3-6, 2013.
Feinstein, Laura, et al., “Statistical Approaches to DDoS Attack Detection and Response,” Proceedings of the DARPA Information Survivability Conference and Exposition (DISCEX '03), Apr. 2003, 12 pages.
George, Ashley, et al., “NetPal: A Dynamic Network Administration Knowledge Base,” 2008, pp. 1-14.
Goldsteen, Abigail, et al., “A Tool for Monitoring and Maintaining System Trustworthiness at Run Time,” REFSQ (2015), pp. 142-147.
Hamadi, S., et al., “Fast Path Acceleration for Open vSwitch in Overlay Networks,” Global Information Infrastructure and Networking Symposium (GIIS), Montreal, QC, pp. 1-5, Sep. 15-19, 2014.
Hewlett-Packard, “Effective use of reputation intelligence in a security operations center,” Jul. 2013, 6 pages.
Hideshima, Yusuke, et al., “STARMINE: A Visualization System for Cyber Attacks,” https://www.researchgate.net/publication/221536306, Feb. 2006, 9 pages.
InternetPerils, Inc., “Control Your Internet Business Risk,” 2003-2015, http://www.internetperils.com.
Janoff, Christian, et al., “Cisco Compliance Solution for HIPAA Security Rule Design and Implementation Guide,” Cisco Systems, Inc., Updated Nov. 14, 2015, part 1 of 2, 350 pages.
Janoff, Christian, et al., “Cisco Compliance Solution for HIPAA Security Rule Design and Implementation Guide,” Cisco Systems, Inc., Updated Nov. 14, 2015, part 2 of 2, 588 pages.
Kerrison, Adam, et al., “Four Steps to Faster, Better Application Dependency Mapping—Laying the Foundation for Effective Business Service Models,” BMCSoftware, 2011.
Kraemer, Brian, “Get to know your data center with CMDB,” TechTarget, Apr. 5, 2006, http://searchdatacenter.techtarget.com/news/118820/Get-to-know-your-data-center-with-CMDB.
Lab SKU, “VMware Hands-on Labs—HOL-SDC-1301” Version: 20140321-160709, 2013; http://docs.hol.vmware.com/HOL-2013/holsdc-1301_html_en/ (part 1 of 2).
Lab SKU, “VMware Hands-on Labs—HOL-SDC-1301” Version: 20140321-160709, 2013; http://docs.hol.vmware.com/HOL-2013/holsdc-1301_html_en/ (part 2 of 2).
Lachance, Michael, “Dirty Little Secrets of Application Dependency Mapping,” Dec. 26, 2007.
Landman, Yoav, et al., “Dependency Analyzer,” Feb. 14, 2008, http://jfrog.com/confluence/display/DA/Home.
Lee, Sihyung, “Reducing Complexity of Large-Scale Network Configuration Management,” Ph.D. Dissertation, Carniege Mellon University, 2010.
Li, Ang, et al., “Fast Anomaly Detection for Large Data Centers,” Global Telecommunications Conference (GLOBECOM 2010, Dec. 2010, 6 pages.
Li, Bingbong, et al, “A Supervised Machine Learning Approach to Classify Host Roles on Line Using sFlow,” in Proceedings of the first edition workshop on High performance and programmable networking, 2013, ACM, New York, NY, USA, 53-60.
Liu, Ting, et al., “Impala: A Middleware System for Managing Autonomic, Parallel Sensor Systems,” In Proceedings of the Ninth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming(PPoPP '03), ACM, New York, NY, USA, Jun. 11-13, 2003, pp. 107-118.
Lu, Zhonghai, et al., “Cluster-based Simulated Annealing for Mapping Cores onto 2D Mesh Networks on Chip,” Design and Diagnostics of Electronic Circuits and Systems, pp. 1, 6, 16-18, Apr. 2008.
Matteson, Ryan, “Depmap: Dependency Mapping of Applications Using Operating System Events: a Thesis,” Master's Thesis, California Polytechnic State University, Dec. 2010.
Natarajan, Arun, et al., “NSDMiner: Automated Discovery of Network Service Dependencies,” Institute of Electrical and Electronics Engineers INFOCOM, Feb. 2012, 9 pages.
Navaz, A.S. Syed, et al., “Entropy based Anomaly Detection System to Prevent DDoS Attacks in Cloud,” International Journal of computer Applications (0975-8887), vol. 62, No. 15, Jan. 2013, pp. 42-47.
Neverfail, “Neverfail IT Continuity Architect,” 2015, https://web.archive.org/web/20150908090456/http://www.neverfailgroup.com/products/it-continuity-architect.
Nilsson, Dennis K., et al., “Key Management and Secure Software Updates in Wireless Process Control Environments,” In Proceedings of the First ACM Conference on Wireless Network Security (WiSec '08), ACM, New York, NY, USA, Mar. 31-Apr. 2, 2008, pp. 100-108.
Nunnally, Troy, et al., “P3D: A Parallel 3D Coordinate Visualization for Advanced Network Scans,” IEEE 2013, Jun. 9-13, 2013, 6 pages.
O'Donnell, Glenn, et al., “The CMDB Imperative: How to Realize the Dream and Avoid the Nightmares,” Prentice Hall, Feb. 19, 2009.
Ohta, Kohei, et al., “Detection, Defense, and Tracking of Internet-Wide Illegal Access in a Distributed Manner,” 2000, pp. 1-16.
Pathway Systems International Inc., “How Blueprints does Integration,” Apr. 15, 2014, 9 pages, http://pathwaysystems.com/company-blog/.
Pathway Systems International Inc., “What is Blueprints?” 2010-2016, http://pathwaysystems.com/blueprints-about/.
Popa, Lucian, et al., “Macroscope: End-Point Approach to Networked Application Dependency Discovery,” CoNEXT'09, Dec. 1-4, 2009, Rome, Italy, 12 pages.
Prasad, K. Munivara, et al., “An Efficient Detection of Flooding Attacks to Internet Threat Monitors (ITM) using Entropy Variations under Low Traffic,” Computing Communication & Networking Technologies (ICCCNT '12), Jul. 26-28, 2012, 11 pages.
Sachan, Mrinmaya, et al., “Solving Electrical Networks to incorporate Supervision in Random Walks,” May 13-17, 2013, pp. 109-110.
Sammarco, Matteo, et al., “Trace Selection for Improved WLAN Monitoring,” Aug. 16, 2013, pp. 9-14.
Shneiderman, Ben, et al., “Network Visualization by Semantic Substrates,” Visualization and Computer Graphics, vol. 12, No. 5, pp. 733,740, Sep.-Oct. 2006.
Wang, Ru, et al., “Learning directed acyclic graphs via bootstarp aggregating,” 2014, 47 pages, http://arxiv.org/abs/1406.2098.
Wang, Yongjun, et al., “A Network Gene-Based Framework for Detecting Advanced Persistent Threats,” Nov. 2014, 7 pages.
Woodberg, Brad, “Snippet from Juniper SRX Series” Jun. 17, 2013, 1 page, O'Reilly Media, Inc.
Zhang, Yue, et al., “Cantina: A Content-Based Approach to Detecting Phishing Web Sites,” May 8-12, 2007, pp. 639-648.
Arista Networks, Inc., “Application Visibility and Network Telemtry using Splunk,” Arista White Paper, Nov. 2013, 11 pages.
Bauch, Petr, “Reader's Report of Master's Thesis, Analysis and Testing of Distributed NoSQL Datastore Riak,” May 28, 2015, Brno. 2 pages.
Cisco Systems, Inc., “Cisco Application Visibility and Control,” Oct. 2011, 2 pages.
Cisco Systems, Inc., “Cisco Tetration Platform Data Sheet”, Updated Mar. 5, 2018, 21 pages.
Duan, Yiheng, et al., Detective: Automatically Identify and Analyze Malware Processes in Forensic Scenarios via DLLs, IEEE ICC 2015—Next Generation Networking Symposium, pp. 5691-5696.
Heckman, Sarah, et al., “On Establishing a Benchmark for Evaluating Static Analysis Alert Prioritization and Classification Techniques,” IEEE, 2008; 10 pages.
Kim, Myung-Sup, et al. “A Flow-based Method for Abnormal Network Traffic Detection, ” IEEE, 2004, pp. 599-612.
Thomas, R., “Bogon Dotted Decimal List,” Version 7.0, Team Cymru NOC, Apr. 27, 2012, 5 pages.
Bosch, Greg, “Virtualization,” 2010, 33 pages.
Breen, Christopher, “Mac 911, How to dismiss Mac App Store Notifications,” Macworld.com, Mar. 24, 2014, 3 pages.
Chou, C.W., et al., “Optical Clocks and Relativity,” Science vol. 329, Sep. 24, 2010, pp. 1630-1633.
Huang, Hing-Jie, et al., “Clock Skew Based Node Identification in Wireless Sensor Networks,” IEEE, 2008, 5 pages.
Ives, Herbert, E., et al., “An Experimental Study of the Rate of a Moving Atomic Clock,” Journal of the Optical Society of America, vol. 28, No. 7, Jul. 1938, pp. 215-226.
Witze, Alexandra, “Special relativity aces time trial, ‘Time dilation’ predicted by Einstein confirmed by lithium ion experiment,” Nature, Sep. 19, 2014, 3 pages.
Zatrochova, Zuzana, “Analysis and Testing of Distributed NoSQL Datastore Riak,” Spring, 2015, 76 pages.
Al-Fuqaha, Ala, et al., “Internet of Things: A Survey on Enabling Technologies, Protocols, and Applications,” IEEE Communication Surveys & Tutorials. vol. 17, No. 4, Nov. 18, 2015, pp. 2347-2376.
Brocade Communications Systems, Inc., “Chapter 5—Configuring Virtual LANs (VLANs),” Jun. 2009, 38 pages.
Cisco Systems, Inc. “Cisco, Nexus 3000 Series NX-OS Release Notes, Release 5.0(3)U3(1),” Feb. 29, 2012, Part Number: OL-26631-01, 16 pages.
Cisco Systems, Inc., “Cisco—VPN Client User Guide for Windows,” Release 4.6, Aug. 2004, 148 pages.
Cisco Systems, Inc., “Cisco 4710 Application Control Engine Appliance Hardware Installation Guide,” Nov. 2007, 66 pages.
Cisco Systems, Inc., “Cisco Data Center Network Architecture and Solutions Overview,” Feb. 2006, 19 pages.
Cisco Systems, Inc., “Cisco IOS Configuration Fundamentals Configuration Guide: Using Autoinstall and Setup,” Release 12.2, first published Apr. 2001, last updated Sep. 2003, 32 pages.
Cisco Systems, Inc., “Cisco VN-Link: Virtualization-Aware Networking,” White Paper, Mar. 2009, 10 pages.
Cisco Systems, Inc., “Cisco, Nexus 5000 Series and Cisco Nexus 2000 Series Release Notes, Cisco NX-OS Release 5.1(3)N2(1b), NX-OS Release 5.1(3)N2(1a) and NX-OS Release 5.1(3)N2(1),” Sep. 5, 2012, Part No. OL-26652-03 CO, 24 pages.
Cisco Systems, Inc., “Nexus 3000 Series NX-OS Fundamentals Configuration Guide, Release 5.0(3)U3(1): Using PowerOn Auto Provisioning,” Feb. 29, 2012, Part No. OL-26544-01, 10 pages.
Cisco Systems, Inc., “Quick Start Guide, Cisco ACE 4700 Series Application Control Engine Appliance,” Software Ve740rsion A5(1.0), Sep. 2011, 138 pages.
Cisco Systems, Inc., “Routing and Bridging Guide, Cisco ACE Application Control Engine,” Software Version A5(1.0), Sep. 2011, 248 pages.
Cisco Systems, Inc., “VMWare and Cisco Virtualization Solution: Scale Virtual Machine Networking,” Jul. 2009, 4 pages.
Cisco Systems, Inc., “Cisco Remote Integrated Service Engine for Citrix NetScaler Appliances and Cisco Nexus 7000 Series Switches Configuration Guide,” Last modified Apr. 29, 2014, 78 pages.
Cisco Technology, Inc., “Cisco IOS Software Release 12.4T Features and Hardware Support,” Feb. 2009, 174 pages.
Cisco Systems, Inc., “Cisco Application Control Engine (ACE) Troubleshooting Guide—Understanding the ACE Module Architecture and Traffic Flow,” Mar. 11, 2011, 6 pages.
Costa, Raul, et al., “An Intelligent Alarm Management System for Large-Scale Telecommunication Companies,” In Portuguese Conference on Artificial Intelligence, Oct. 2009, 14 pages.
De Carvalho, Tiago Filipe Rodrigues, “Root Cause Analysis in Large and Complex Networks,” Dec. 2008, Repositorio.ul.pt, pp. 1-55.
Foundation for Intelligent Physical Agents, “FIPA Agent Message Transport Service Specification,” Dec. 3, 2002, http://www.fipa.org; 15 pages.
Gia, Tuan Nguyen, et al., “Fog Computing in Healthcare Internet of Things: A Case Study on ECG Feature Extraction,” 2015 IEEE International Conference on Computer and Information Technology; Ubiquitous Computing and Communications; Dependable, Autonomic and Secure Computing; Pervasive Intelligence and Computing, Oct. 26, 2015, pp. 356-363.
Joseph, Dilip, et al., “Modeling Middleboxes,” IEEE Network, Sep./Oct. 2008, pp. 20-25.
Kent, S., et al. “Security Architecture for the Internet Protocol,” Network Working Group, Nov. 1998, 67 pages.
Online Collins English Dictionary, 1 page (Year: 2018).
Voris, Jonathan, et al., “Bait and Snitch: Defending Computer Systems with Decoys,” Columbia University Libraries, Department of Computer Science, 2013, pp. 1-25.
Baek, Kwang-Hyun, et al., “Preventing Theft of Quality of Service on Open Platforms,” 2005 Workshop of the 1st International Conference on Security and Privacy for Emerging Areas in Communication Networks, 2005, 12 pages.
Theodorakopoulos, George, et al., “On Trust Models and Trust Evaluation Metrics for Ad Hoc Networks,” IEEE Journal on Selected Areas in Communications. vol. 24, Issue 2, Feb. 2006, pp. 318-328.
Zeng, Sai, et al., “Managing Risk in Multi-node Automation of Endpoint Management,” 2014 IEEE Network Operations and Management Symposium (NOMS), 2014, 6 pages.
Related Publications (1)
Number Date Country
20200287806 A1 Sep 2020 US
Continuations (1)
Number Date Country
Parent 15467788 Mar 2017 US
Child 16884449 US