US6922417B2 - Method and system to calculate network latency, and to display the same field of the invention - Google Patents

Method and system to calculate network latency, and to display the same field of the invention Download PDF

Info

Publication number
US6922417B2
US6922417B2 US09/770,969 US77096901A US6922417B2 US 6922417 B2 US6922417 B2 US 6922417B2 US 77096901 A US77096901 A US 77096901A US 6922417 B2 US6922417 B2 US 6922417B2
Authority
US
United States
Prior art keywords
packet
network
network location
traversal
timestamps associated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime, expires
Application number
US09/770,969
Other versions
US20010050903A1 (en
Inventor
Paul Vanlint
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dynatrace LLC
Original Assignee
Compuware Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Compuware Corp filed Critical Compuware Corp
Priority to US09/770,969 priority Critical patent/US6922417B2/en
Assigned to COMPUWARE CORPORATION reassignment COMPUWARE CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: VANLINT, PAUL
Publication of US20010050903A1 publication Critical patent/US20010050903A1/en
Application granted granted Critical
Publication of US6922417B2 publication Critical patent/US6922417B2/en
Assigned to JEFFERIES FINANCE, LLC reassignment JEFFERIES FINANCE, LLC SECOND LIEN PATENT SECURITY AGREEMENT Assignors: COMPUWARE CORPORATION
Assigned to JEFFERIES FINANCE, LLC reassignment JEFFERIES FINANCE, LLC FIRST LIEN PATENT SECURITY AGREEMENT Assignors: COMPUWARE CORPORATION
Assigned to DYNATRACE LLC reassignment DYNATRACE LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: COMPUWARE CORPORATION
Assigned to COMPUWARE CORPORATION reassignment COMPUWARE CORPORATION TERMINATION OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 035201/0065 Assignors: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Assigned to COMPUWARE CORPORATION, DYNATRACE LLC reassignment COMPUWARE CORPORATION RELEASE OF FIRST LIEN PATENT SECURITY AGREEMENT RECORDED AT REEL\FRAME 035200\0973 AND 035200\0955 Assignors: JEFFERIES FINANCE LLC
Assigned to JEFFERIES FINANCE LLC reassignment JEFFERIES FINANCE LLC FIRST LIEN PATENT SECURITY AGREEMENT Assignors: DYNATRACE LLC
Assigned to JEFFERIES FINANCE LLC reassignment JEFFERIES FINANCE LLC SECOND LIEN PATENT SECURITY AGREEMENT Assignors: DYNATRACE LLC
Assigned to DYNATRACE LLC reassignment DYNATRACE LLC RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL RECORDED AT R/F 46923/0528 Assignors: JEFFERIES FINANCE LLC, COLLATERAL AGENT
Assigned to DYNATRACE, LLC reassignment DYNATRACE, LLC RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 046923/0557 Assignors: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/24Testing correct operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/22Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0858One way delays

Definitions

  • the present invention relates generally to the field of network application performance analysis and, more specifically, to a method and system to calculate network latency, and to display information pertaining to such network latency, for example, via a graphical user interface.
  • a method of calculating network latency includes correlating a first packet identifier recorded at a first network location with a second packet identifier recorded at a second network location, wherein the first and second packet identifiers indicate a common first packet and have respective first and second timestamps associated therewith.
  • a first network traversal time for the first packet is calculated as the difference between the first and second timestamps associated with the first and second packet identifiers respectively.
  • FIG. 1 is a diagrammatic representation of an exemplary network environment 10 , within which the present invention may be employed to perform application performance analysis, to calculate network latencies, and to output such latencies.
  • FIG. 2 is a block diagram illustrating the architecture of a diagnostic engine 28 , according to an exemplary embodiment of the present invention.
  • FIG. 3 is a flowchart illustrating a method 60 , according to an exemplary embodiment of the present invention, of merging one or more trace files to provide a consolidated view of network traffic.
  • FIG. 4 is a flowchart illustrating an exemplary method 62 , according to one embodiment of the present invention, of performing a correlation operation.
  • FIG. 5 is a diagrammatic representation of an exemplary trace file that includes entries for N packets, each entry recording a packet identifier, a timestamp, a packet size, and packet data.
  • FIGS. 6A-6C illustrate header information for the IP, TCP and UDP protocols respectively.
  • FIG. 7 is a diagrammatic representation of an exemplary correlated list, according to one embodiment of the present invention.
  • FIG. 8 is a flowchart illustrating a method, according to an exemplary embodiment of the present invention, of synchronizing timelines for multiple trace files.
  • FIG. 9A illustrates a series of calculated offsets that exhibited acceptable time variances and consistency over a time interval indicative of an absence of clock drift.
  • FIG. 9B illustrates a series of calculated offsets that exhibited a trend of increasing offset values over a interval, the trend being indicative of clock drift.
  • FIG. 10 illustrates an exemplary packet traffic diagram showing packet traffic between a client and server via a network including at least two routers.
  • the limitations of conventional approaches to application performance are at least partially addressed by combining packet traces generated at multiple network locations on a subject network into a single, coherent model from which packet behavior on a subject network can be determined, thus allowing latency and bandwidth problems to be attributed, for example, to a client, server or a network itself.
  • a client may send a request to the server utilizing one or more request packets.
  • request packets will take a finite time to traverse a network due to network latency and bandwidth bottlenecks.
  • the server will process the request and then send a response back to the client utilizing one or more response packets.
  • the server may wait until the request is fully completed before sending the response back to the client, or may begin sending response packets when only a portion of the response data has been accumulated. Again, these response packets will take a finite time to traverse the network due to network latency and bandwidth bottlenecks. However, the actual network route taken on the return journey by the response packets may well be different from the route taken by the request packets.
  • network capture agents or applications may be deployed to capture trace files of the request and response packets.
  • the trace files include timestamps indicating a time at which observed packets passed the capture agents.
  • the present invention receives multiple trace files generated at multiple network nodes and identifies an instance of each packet that appears in each of the multiple trace files, and correlates the appearance (or recording) of packets in the multiple trace files. In this way, the times at which a particular packet passed multiple capture agents may be determined.
  • the present invention may correlate packets seen in a trace file with and only with instances of the same packet that appear in other trace files. Further, this operation includes determining the direction that a particular packet was traveling in, determining the location of one or more network nodes, and the synchronizing of start times of each trace file with other trace files.
  • FIG. 1 is a diagrammatic representation of an exemplary network environment 10 within which the present invention may be deployed to perform application performance analysis and, more specifically, to calculate network latencies and to output such latencies, for example, as a graphical display.
  • the network environment 10 is shown to include a client machine 12 that hosts a client application 13 .
  • the client application 13 communicates with a server application 19 , hosted on a server machine 16 , via a network 14 .
  • the network 14 may be any one of a number of well-known network types, such as an intranet, the Internet, a Wide Area Network (WAN) or a Local Area Network (LAN) and may employ any one or more of a number of well-known communication protocols (e.g., IP, TCP, UDP etc.).
  • the client machine 12 is further shown to host a data capture application 18 (e.g., a sniffer or program protocol analyzer) that generates a trace file 20 .
  • a data capture application 18 e.g., a sniffer or program protocol analyzer
  • Commercially available examples of such a data capture application 18 include the Microsoft Network Monitor (NetMon) developed by Microsoft Corp. of the Redmond, Wash. and the Optimal Smart Agent developed by the Optimal Networks Corp. of Mountain View, Calif., now owned by the Compuware Corp. of Detroit Mich.
  • the trace file 20 generated by the data capture application 18 includes an entry for each packet observed by the data capture application 18 to be transmitted from, or received at, the client machine 12 . While an entry within the trace file 20 may include any data contained in a packet that the data capture application 18 is configured to capture, for the purpose of the present invention, each entry includes at least (1) a packet identifier, preferably comprising unique, static content extracted from the packets, and (2) a timestamp indicating a time at which the data capture application 18 observed a specific packet.
  • FIG. 5 provides an illustration of an exemplary trace file 20 that includes entries for N packets, each entry recording a packet identifier 30 , a timestamp 32 , a packet size 34 , and packet data 36 , which may include header information.
  • the packet identifier 30 is determined by the data capture application 18 so as to be highly unique (although not necessarily absolutely unique) and static for a packet observed by the application 18 .
  • the exact content of the packet identifier may vary from protocol to protocol.
  • IP Internet Protocol
  • TCP packets may have packet identifiers 30 composed of TCP ports, a TCP sequence and/or TCP acknowledge numbers in addition to IP fields.
  • UDP packets may have packet identifier 30 composed of UDP ports used in conjunction with IP fields.
  • the server machine 16 is similarly shown to host a server data capture application 22 that produces a trace file 24 .
  • the trace file 24 includes entries for packets observed being received at, or transmitted from, the server machine 16 .
  • the network 14 may include any number of further nodes (e.g., switches, routers etc.), each of which may similarly host a data capture application that generates a trace file for packets observed at the relevant node.
  • the trace files 20 and 24 generated at the client machine 12 and the server machine 16 respectively are shown to be communicated to a further server machine 26 that hosts a diagnostic engine 28 , according to exemplary embodiment of the present invention.
  • the diagnostic engine 28 operates to correlate entries within multiple trace files, received from the various nodes on a network route, by identifying entries for common packets within such multiple trace files.
  • the diagnostic engine 28 further operates to determine the direction of transmission of a particular network packet, and to synchronize multiple trace files to a common timeline.
  • the diagnostic engine 28 facilitates meaningful analysis and provides a unified view of information embodied in multiple trace files generated at multiple nodes along multiple network paths or routes.
  • FIG. 2 is a block diagram illustrating the architecture of the diagnostic engine 28 , according to an exemplary embodiment of the present invention.
  • a collection module 40 is responsible for requesting and/or receiving trace files 20 from multiple nodes along a network route or path.
  • the trace files may, in one embodiment, be requested by the collection module 40 , responsive to which the data capture applications communicate trace files to the collection module 40 .
  • the data capture applications may periodically communicate trace files to the collection module 40 .
  • a merge module 42 is responsible for the “merging” of multiple trace files received by the collection module 40 . Specifically, the merging of trace files is performed by a correlation engine 52 that operates to correlate entries for common packets that appear within multiple trace files.
  • the synchronization engine 54 operates to synchronize information retrieved from multiple trace files to a common timeline.
  • the synchronization engine 54 may call upon a clock drift compensator 56 to compensate for clock drift that may be exhibited in the timestamps recorded within one or more trace files.
  • the merge module 42 operates to provide a consolidated view of network traffic based on information contained within trace files generated at multiple nodes along a network path for route.
  • a transaction analysis module 44 performs automated analysis of the output of the merge module 42 to provide meaningful and customizable views of the consolidated, correlated data.
  • the performance module 46 utilizing the output of the transaction analysis module 44 and the merge module 42 , operates to provide an analysis of the performance of a network application as affected by network conditions (e.g., latency and bandwidth bottlenecks) and may provide certain automated suggestions regarding improvements to application performance.
  • a visualization and reporting module 48 operates to provide various graphical user interfaces and graphical displays of the outputs of the merge module 42 , the transaction analysis module 44 and the performance module 46 . Examples of graphical displays generated by the visualization and reporting module 48 are discussed in further detail below.
  • Each of the modules 42 , 44 , 46 and 48 is configured to write data to, and retrieve data from, a database 50 . Examples of various tables that may be stored in the database 50 are also discussed below.
  • FIG. 3 is a flowchart illustrating a method 60 , according to exemplary embodiment of the present invention, of merging one or more trace files to provide a consolidated view of network traffic.
  • the method 60 comprises two primary operations, namely (1) a correlation operation performed at block 62 and (2) a synchronization operation performed at block 64 .
  • the correlation engine 52 of the merge module 42 proceeds to correlate packets (or frames) recorded in such trace files 20 .
  • the collection module 40 produces a correlated list 72 of packets together with references to the location of each packet in each trace file.
  • An exemplary correlated list 72 is illustrated in FIG. 7 .
  • a time-to-live (TTL) field may be compared across correlate entries within multiple trace files to determine the direction of a packet transmission. Specifically, when an IP packet traverses a router, that router decrements the TTL field.
  • TTL time-to-live
  • hop count fields can be compared across trace files. Specifically, when an IPX packet traverses a router, the router will increment the hop count field. Differences in the TTL field and/or the hop count fields may be utilized to determine the direction of transmission of an IP packet.
  • a statistical analysis of the response times for each node can be performed. If the differences in the response times between the traces are significant compared to an error each packet's timestamp, then the transmission direction of the packet may be deduced.
  • a data capture application that generated the trace file performs an active trace route to the node to gain additional information not already contained in a relevant trace file. By comparing such a “node map”, direction information may be deduced.
  • node location may also be determined. Specifically, nodes that exhibit common direction information across all trace files can be grouped as being at a common logical location to aid in the visualization of the data. Alternatively, if “node maps” have been generated, nodes may be grouped based on such maps.
  • the start times of multiple trace files are synchronized by the synchronization engine 54 .
  • such trace files must be synchronized to a common timeline.
  • the timeline of a chosen first trace file e.g., the trace file 20 generated by the data capture application 18 hosted by the client machine 12
  • the synchronization engine 54 is able to perform an analysis to determine upper and lower limits on how far a trace file can be shifted in time, while maintaining physical consistency within the system (e.g., no packet should appear to travel backwards in time).
  • the synchronization engine 54 makes a determination as to whether the calculated latencies (or offsets) are consistent for packets over time, within certain parameters. If not the method 60 proceeds to block 68 where the synchronization engine 54 may engage the clock drift compensator 56 to compensate for clock drift. On the other hand, should the calculated latencies (or offsets) be consistent within the defined parameters over time, the method 60 proceeds to block 70 , where the transaction analysis module 44 and the performance module 46 perform their respective functions, and the visualization and reporting module 48 generates a graphical display of the calculated offsets as output.
  • FIG. 4 is a flowchart illustrating an exemplary method 62 , according to one embodiment of the present invention, of performing the correlation operation discussed above with reference to block 64 of FIG. 3 .
  • the collection module 40 receives multiple trace files from respective data capture applications hosted on nodes that constitute a network route.
  • the correlation engine 52 identifies a primary trace file and at least one secondary trace file to be correlated or “merged”. The identification of the primary trace file may, in one embodiment, be performed responsive to manual input from an analyst.
  • the primary trace file may be the trace file 20 generated at the client machine 12 .
  • the correlation engine 52 proceeds to step through entries for packets in each of the primary and secondary trace files, and performs a low-level decode to identify unique, static content (e.g., TCP or IP header information) within each entry that may be utilized to identify the relevant packet across multiple trace files.
  • unique static content e.g., TCP or IP header information
  • FIGS. 6A-6C illustrate header information 92 , 94 and 96 for IP, TCP and UDP protocols respectively. The fields within these headers that may be utilized as the unique static content are discussed above.
  • the correlation engine 52 compares static information for packets extracted from both the primary and secondary trace files to identify entries for corresponding packets within both the primary and secondary trace files.
  • the correlation engine 52 determines the transmission direction of packets that are common to both the primary and secondary trace files, utilizing any of the methodologies discussed above.
  • the correlation engine 52 writes an entry into a correlated list 72 , illustrated in FIG. 7 , for each unique packet identified within both, or either of, the primary and secondary trace files.
  • Each entry written into the correlated list 72 includes primary and secondary timestamps for the relevant packet, as extracted from the primary and secondary trace files.
  • each entry within the correlated list 72 includes a packet identifier 100 that constitutes, in one embodiment, the identify unique static content common to both entries for the packet within the primary and secondary trace files, a primary timestamp 102 , a secondary timestamp 104 , and a direction indicator 106 . Accordingly, the correlated list 72 provides a merged view of information contained for respective packets within both the secondary and primary trace files.
  • the clock for the machine at which the secondary trace file is generated may not have been fully synchronize with the clock utilized to generate the primary timestamps 102 or an error may exist with the frequency of such clock. For this reason, as described above with respect to the block 64 illustrated in FIG. 3 , it may be required to synchronize the primary and secondary timestamps to a common timeline.
  • the timeline for the primary trace file is arbitrarily chosen as the common timeline, and the timestamps for all other trace files are synchronized to this timeline.
  • the timeline of any trace file may be chosen as the common timeline, and the timelines of the other trace files synchronized to this common timeline.
  • the synchronization maintains the physical consistency of the system (i.e., no packet should appear to travel backwards and time).
  • FIG. 8 is a flowchart illustrating a method 64 , according to exemplary embodiment of the present invention, of synchronizing the timelines (e.g., timestamps) of multiple trace files for the reasons set out above.
  • the method 64 provides an exemplary embodiment of the operation performed at block 64 illustrated in FIG. 3 .
  • the method 64 commences at block 110 with the synchronization engine 54 dividing the correlated list 72 into primary-to-secondary and secondary-to-primary list components (i.e., the correlated list 72 is divided into list components according to the direction indication 106 ).
  • the synchronization engine 54 for each of the list components (e.g., the primary-to-secondary and secondary-to-primary list components) and for each unique packet (e.g., for multiple entries for packet (i) within each of the list components) identified within each list component, determines the smallest latency (or offset) between the primary and secondary timestamps. This operation may be required in view of the fragmentation of a packet as discussed above, where multiple entries for each unique packet may appear in the correlated list 72 .
  • the list components e.g., the primary-to-secondary and secondary-to-primary list components
  • each unique packet e.g., for multiple entries for packet (i) within each of the list components
  • the smallest latencies (or offsets) in both directions are determined (i.e., the smallest offset (primary-secondary) and the smallest offset (secondary-primary) are each determined). This is achieved by separately processing each of the list components.
  • the method 64 proceeds to decision block 118 to determine whether any further unique packets, for which an offset has not as yet been calculated, are described in the relevant list component. If so, the method 64 loops through the operations performed at blocks 112 - 118 until all unique packets within the relevant list component have been processed. It will be appreciated that once all unique packets within a list component have been processed, the determined minimum offset will be the minimum offset determined in a particular direction.
  • the further list component e.g., the secondary-to-primary list component
  • the output of the method 64 includes a first minimum offset value in a first direction (e.g., the primary-to-secondary direction) and a second minimum offset value in a second direction (e.g., the secondary-to-primary direction).
  • FIG. 9A a series of calculated offsets is illustrated that exhibited acceptable time variances and a consistency across multiple unique packets, this consistency being indicative of an absence of clock drift.
  • FIG. 9B indicates a trend of increasing offsets for unique packets, this trend being indicative of clock drift. It will be appreciated that the success of the synchronization method 64 is dependent upon the accuracy of the timestamps, within the correlated list 72 and as extracted from the multiple trace files.
  • the secondary timestamps 104 of the correlated list 72 are calibrated, utilizing the clock drift compensator 56 , so as to compensate for the clock drift.
  • the offset values are then recalculated and the minimum offsets for each of the list components bargain determined by looping through the operations described with reference to blocks 112 - 118 .
  • a symmetrical network with a common minimum latency in both request and response directions is assumed.
  • the timestamps derived from the secondary trace file i.e., the secondary timestamps 104 within the correlated list 72
  • the timestamps derived from the secondary trace file are adjusted in accordance with this assumption utilizing the average offset so as to time shift in these secondary timestamps 104 according to the timeline of the primary trace file. For example, where the average offset is positive, the secondary timestamps 104 may simply be increased by the average offset.
  • the merge module 42 may utilize different protocols to limit a search space within a trace file and may utilize actual data in the datagram of a packet as an additional correlation point when the potential for incorrect correlation exists.
  • certain fields from IP and PC packets may be utilized to correlate packets. These may be reused by the TCP stack in a number of ways. For example, IP addresses may be used by different nodes if DHCP is implemented, TCP and UDP ports may be reused by subsequent connections, IP fragment identifiers repeat after 65536 packets have been sent, and TCP sequence and acknowledge numbers will repeat after 4294967296 bytes of data have been sent.
  • the merge module 42 may utilize only IP addresses and fragment identifiers to correlate IP packets. Accordingly, if more than 65535 packets of pure IP traffic are transmitted between the same two nodes, correlation may become unreliable. To address this potential problem, the present invention proposes that if correlated TCP packets are seen in the same trace file, these may be utilized to limit search space for matching IP packets and thereby improved reliablity. Additionally, the merge module 42 may utilize actual data in the datagram as an additional correlation point.
  • a further issue is the existence of inspection firewalls, which may implement address translation.
  • Address translation allows an IP packet to mutate by modifying certain fields as the packet passes through the inspection file. Only IP addresses and port numbers are likely to be changed by such an inspection firewall.
  • the present invention proposes, for such scenarios involving address translation, that correlation requirements may be relaxed. Specifically, IP addresses and ports may be discarded for correlation purposes. As previously discussed, the discarding of IP addresses and ports presents few problems for TCP packets, as correlation still has sufficient correlation requirements to succeed. However, for UDP and other IP protocols, there is a greater likelihood of incorrect correlation as the only remaining correlation requirements may be IP fragment identifiers. Incorrect correlation may occur where ranges of IP fragment identifiers overlap.
  • TCP packets in a trace file may be utilized to limit the search space for matching IP packets, and thus improve correlation reliability. Data in the datagram may also be used as an additional correlation point when correlating non-TCP, address-translated traffic.
  • the correlation operation described above with reference to FIG. 4 may be performed, but the synchronization operation described with respect to FIG. 8 will fail unless there is bi-directional traffic between the nodes that operators capture points.
  • unidirectional traffic only a lower limit on a shift to be applied to the timestamps of the secondary trace file would be obtained.
  • the merge module 42 may utilize a minimum round-trip latency to each node to estimate the minimum network delay (or offset) and use that as an upper limit.

Abstract

A method to calculate network latency includes correlating a first packet identifier recorded at a first network location with a second packet identifier recorded at a second network location, wherein the first and second packet identifiers indicate a common first packet and have respective first and second timestamps associated therewith. A first network traversal time for the first packet is calculated as the difference between the first and second timestamps associated with the first and second packet identifiers respectively. The network traversal time for the first packet is then the graphically display.

Description

This application claims the benefit of provisional application No. 60/178,678, filed Jan. 28, 2000.
FIELD OF THE INVENTION
The present invention relates generally to the field of network application performance analysis and, more specifically, to a method and system to calculate network latency, and to display information pertaining to such network latency, for example, via a graphical user interface.
BACKGROUND OF THE INVENTION
Conventional approaches to application performance analysis assume static values for latency and bandwidth, based on known values. The known values may be utilized to estimate the effect of a subject network on traffic generated by a particular application. However, in many situations, latency and available bandwidth are variable over time, and these variations may cause performance problems for applications. In order to determine whether latency and bandwidth are negatively impacting the performance of an application, an analyst preferably requires exact knowledge of packet behavior on the subject network. By simply capturing packet traces at various locations on the subject network along a network traffic route, an analyst may be able to ascertain that delays are occurring. However, the simple identification of a delay does not provide sufficient information regarding the cause of the delay. For example, an analyst is not readily able to ascertain whether the delay is being caused by a client, a server, or the network device.
SUMMARY OF THE INVENTION
According to one embodiment of the present invention, there is provided a method of calculating network latency. The method includes correlating a first packet identifier recorded at a first network location with a second packet identifier recorded at a second network location, wherein the first and second packet identifiers indicate a common first packet and have respective first and second timestamps associated therewith. A first network traversal time for the first packet is calculated as the difference between the first and second timestamps associated with the first and second packet identifiers respectively. Other features of the present invention will be apparent from the accompanying drawings and from the detailed description that follows.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
FIG. 1 is a diagrammatic representation of an exemplary network environment 10, within which the present invention may be employed to perform application performance analysis, to calculate network latencies, and to output such latencies.
FIG. 2 is a block diagram illustrating the architecture of a diagnostic engine 28, according to an exemplary embodiment of the present invention.
FIG. 3 is a flowchart illustrating a method 60, according to an exemplary embodiment of the present invention, of merging one or more trace files to provide a consolidated view of network traffic.
FIG. 4 is a flowchart illustrating an exemplary method 62, according to one embodiment of the present invention, of performing a correlation operation.
FIG. 5 is a diagrammatic representation of an exemplary trace file that includes entries for N packets, each entry recording a packet identifier, a timestamp, a packet size, and packet data.
FIGS. 6A-6C illustrate header information for the IP, TCP and UDP protocols respectively.
FIG. 7 is a diagrammatic representation of an exemplary correlated list, according to one embodiment of the present invention.
FIG. 8 is a flowchart illustrating a method, according to an exemplary embodiment of the present invention, of synchronizing timelines for multiple trace files.
FIG. 9A illustrates a series of calculated offsets that exhibited acceptable time variances and consistency over a time interval indicative of an absence of clock drift.
FIG. 9B illustrates a series of calculated offsets that exhibited a trend of increasing offset values over a interval, the trend being indicative of clock drift.
FIG. 10 illustrates an exemplary packet traffic diagram showing packet traffic between a client and server via a network including at least two routers.
DETAILED DESCRIPTION
A method and system to calculate network latency, and to display the same, are described. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details.
In one embodiment of the present invention, the limitations of conventional approaches to application performance are at least partially addressed by combining packet traces generated at multiple network locations on a subject network into a single, coherent model from which packet behavior on a subject network can be determined, thus allowing latency and bandwidth problems to be attributed, for example, to a client, server or a network itself.
In an exemplary client-server application, a client may send a request to the server utilizing one or more request packets. Such request packets will take a finite time to traverse a network due to network latency and bandwidth bottlenecks. Once such request packets are received by the server, the server will process the request and then send a response back to the client utilizing one or more response packets. The server may wait until the request is fully completed before sending the response back to the client, or may begin sending response packets when only a portion of the response data has been accumulated. Again, these response packets will take a finite time to traverse the network due to network latency and bandwidth bottlenecks. However, the actual network route taken on the return journey by the response packets may well be different from the route taken by the request packets. At several points along each of these request and response routes, network capture agents or applications (e.g., a sniffer or program protocol analyzer) may be deployed to capture trace files of the request and response packets. The trace files include timestamps indicating a time at which observed packets passed the capture agents.
The present invention, in one exemplary embodiment, receives multiple trace files generated at multiple network nodes and identifies an instance of each packet that appears in each of the multiple trace files, and correlates the appearance (or recording) of packets in the multiple trace files. In this way, the times at which a particular packet passed multiple capture agents may be determined. In performing this operation, the present invention may correlate packets seen in a trace file with and only with instances of the same packet that appear in other trace files. Further, this operation includes determining the direction that a particular packet was traveling in, determining the location of one or more network nodes, and the synchronizing of start times of each trace file with other trace files.
Exemplary Network Environment
FIG. 1 is a diagrammatic representation of an exemplary network environment 10 within which the present invention may be deployed to perform application performance analysis and, more specifically, to calculate network latencies and to output such latencies, for example, as a graphical display. The network environment 10 is shown to include a client machine 12 that hosts a client application 13. In an exemplary embodiment, the client application 13 communicates with a server application 19, hosted on a server machine 16, via a network 14. The network 14 may be any one of a number of well-known network types, such as an intranet, the Internet, a Wide Area Network (WAN) or a Local Area Network (LAN) and may employ any one or more of a number of well-known communication protocols (e.g., IP, TCP, UDP etc.). The client machine 12 is further shown to host a data capture application 18 (e.g., a sniffer or program protocol analyzer) that generates a trace file 20. Commercially available examples of such a data capture application 18 include the Microsoft Network Monitor (NetMon) developed by Microsoft Corp. of the Redmond, Wash. and the Optimal Smart Agent developed by the Optimal Networks Corp. of Mountain View, Calif., now owned by the Compuware Corp. of Detroit Mich. The trace file 20 generated by the data capture application 18 includes an entry for each packet observed by the data capture application 18 to be transmitted from, or received at, the client machine 12. While an entry within the trace file 20 may include any data contained in a packet that the data capture application 18 is configured to capture, for the purpose of the present invention, each entry includes at least (1) a packet identifier, preferably comprising unique, static content extracted from the packets, and (2) a timestamp indicating a time at which the data capture application 18 observed a specific packet. FIG. 5 provides an illustration of an exemplary trace file 20 that includes entries for N packets, each entry recording a packet identifier 30, a timestamp 32, a packet size 34, and packet data 36, which may include header information. The packet identifier 30 is determined by the data capture application 18 so as to be highly unique (although not necessarily absolutely unique) and static for a packet observed by the application 18. The exact content of the packet identifier may vary from protocol to protocol. For example, Internet Protocol (IP) packets may have a packet identifier 30 comprised from the IP source and destination addresses, an IP fragment identifier, and an IP fragment offset. TCP packets, on the other hand, may have packet identifiers 30 composed of TCP ports, a TCP sequence and/or TCP acknowledge numbers in addition to IP fields. UDP packets may have packet identifier 30 composed of UDP ports used in conjunction with IP fields.
Returning to FIG. 1, the server machine 16 is similarly shown to host a server data capture application 22 that produces a trace file 24. The trace file 24 includes entries for packets observed being received at, or transmitted from, the server machine 16. It will be appreciated that the network 14 may include any number of further nodes (e.g., switches, routers etc.), each of which may similarly host a data capture application that generates a trace file for packets observed at the relevant node.
In the exemplary embodiment, the trace files 20 and 24 generated at the client machine 12 and the server machine 16 respectively are shown to be communicated to a further server machine 26 that hosts a diagnostic engine 28, according to exemplary embodiment of the present invention. The diagnostic engine 28 operates to correlate entries within multiple trace files, received from the various nodes on a network route, by identifying entries for common packets within such multiple trace files. In addition to performing a correlation operation, the diagnostic engine 28 further operates to determine the direction of transmission of a particular network packet, and to synchronize multiple trace files to a common timeline. The diagnostic engine 28 facilitates meaningful analysis and provides a unified view of information embodied in multiple trace files generated at multiple nodes along multiple network paths or routes.
Diagnostic Engine
FIG. 2 is a block diagram illustrating the architecture of the diagnostic engine 28, according to an exemplary embodiment of the present invention. A collection module 40 is responsible for requesting and/or receiving trace files 20 from multiple nodes along a network route or path. The trace files may, in one embodiment, be requested by the collection module 40, responsive to which the data capture applications communicate trace files to the collection module 40. In an alternative embodiment, the data capture applications may periodically communicate trace files to the collection module 40.
A merge module 42 is responsible for the “merging” of multiple trace files received by the collection module 40. Specifically, the merging of trace files is performed by a correlation engine 52 that operates to correlate entries for common packets that appear within multiple trace files. The synchronization engine 54 operates to synchronize information retrieved from multiple trace files to a common timeline. The synchronization engine 54 may call upon a clock drift compensator 56 to compensate for clock drift that may be exhibited in the timestamps recorded within one or more trace files. In summary, the merge module 42 operates to provide a consolidated view of network traffic based on information contained within trace files generated at multiple nodes along a network path for route.
A transaction analysis module 44 performs automated analysis of the output of the merge module 42 to provide meaningful and customizable views of the consolidated, correlated data. The performance module 46, utilizing the output of the transaction analysis module 44 and the merge module 42, operates to provide an analysis of the performance of a network application as affected by network conditions (e.g., latency and bandwidth bottlenecks) and may provide certain automated suggestions regarding improvements to application performance. A visualization and reporting module 48 operates to provide various graphical user interfaces and graphical displays of the outputs of the merge module 42, the transaction analysis module 44 and the performance module 46. Examples of graphical displays generated by the visualization and reporting module 48 are discussed in further detail below.
Each of the modules 42, 44, 46 and 48 is configured to write data to, and retrieve data from, a database 50. Examples of various tables that may be stored in the database 50 are also discussed below.
Merging of Trace Files—Methodology Overview
FIG. 3 is a flowchart illustrating a method 60, according to exemplary embodiment of the present invention, of merging one or more trace files to provide a consolidated view of network traffic. The method 60 comprises two primary operations, namely (1) a correlation operation performed at block 62 and (2) a synchronization operation performed at block 64.
At block 62, following receipt of multiple trace files 20 at the collection module 40, the correlation engine 52 of the merge module 42 proceeds to correlate packets (or frames) recorded in such trace files 20. Specifically, the collection module 40 produces a correlated list 72 of packets together with references to the location of each packet in each trace file. An exemplary correlated list 72 is illustrated in FIG. 7.
Further, at block 62, the direction of transmission of each packet is determined to aid in the synchronization of the trace files at block 64. In a first embodiment, for IP packets, a time-to-live (TTL) field may be compared across correlate entries within multiple trace files to determine the direction of a packet transmission. Specifically, when an IP packet traverses a router, that router decrements the TTL field. For IPX, hop count fields can be compared across trace files. Specifically, when an IPX packet traverses a router, the router will increment the hop count field. Differences in the TTL field and/or the hop count fields may be utilized to determine the direction of transmission of an IP packet. In a second embodiment, for protocols other than the IP and IPX protocols, or for packets that cannot cross a logical router, a statistical analysis of the response times for each node can be performed. If the differences in the response times between the traces are significant compared to an error each packet's timestamp, then the transmission direction of the packet may be deduced. In a third embodiment, a data capture application that generated the trace file performs an active trace route to the node to gain additional information not already contained in a relevant trace file. By comparing such a “node map”, direction information may be deduced.
At block 62, node location may also be determined. Specifically, nodes that exhibit common direction information across all trace files can be grouped as being at a common logical location to aid in the visualization of the data. Alternatively, if “node maps” have been generated, nodes may be grouped based on such maps.
At block 64, the start times of multiple trace files are synchronized by the synchronization engine 54. Specifically, to successfully combined (or merged) two or more trace files, such trace files must be synchronized to a common timeline. In one embodiment, the timeline of a chosen first trace file (e.g., the trace file 20 generated by the data capture application 18 hosted by the client machine 12) is allocated as the common timeline and all other trace files are synchronized to this timeline. Utilizing the packet direction information determined by the correlation engine 52 at block 62, the synchronization engine 54 is able to perform an analysis to determine upper and lower limits on how far a trace file can be shifted in time, while maintaining physical consistency within the system (e.g., no packet should appear to travel backwards in time). These upper and lower limits related to the minimum network delay in each direction (e.g., request and response directions). Once these upper and lower limits have been determined, an assumption is made that the minimum network delay in each direction is equal, and each trace file is shifted by that minimum network delay. It should be noted that not all networks have symmetrical latency characteristics, especially if response packets take a different route from request packets. Such an assumption may provide the appearance that latency problems are split equally between two directions, whereas one direction may have a particular high latency. Further details regarding the synchronization of multiple trace files are discussed below with reference to FIG. 8.
At decision block 66, the synchronization engine 54 makes a determination as to whether the calculated latencies (or offsets) are consistent for packets over time, within certain parameters. If not the method 60 proceeds to block 68 where the synchronization engine 54 may engage the clock drift compensator 56 to compensate for clock drift. On the other hand, should the calculated latencies (or offsets) be consistent within the defined parameters over time, the method 60 proceeds to block 70, where the transaction analysis module 44 and the performance module 46 perform their respective functions, and the visualization and reporting module 48 generates a graphical display of the calculated offsets as output.
Correlation—Methodology
FIG. 4 is a flowchart illustrating an exemplary method 62, according to one embodiment of the present invention, of performing the correlation operation discussed above with reference to block 64 of FIG. 3. At block 74, the collection module 40 receives multiple trace files from respective data capture applications hosted on nodes that constitute a network route. At block 76, the correlation engine 52 identifies a primary trace file and at least one secondary trace file to be correlated or “merged”. The identification of the primary trace file may, in one embodiment, be performed responsive to manual input from an analyst. For example, the primary trace file may be the trace file 20 generated at the client machine 12.
At block 78, the correlation engine 52 proceeds to step through entries for packets in each of the primary and secondary trace files, and performs a low-level decode to identify unique, static content (e.g., TCP or IP header information) within each entry that may be utilized to identify the relevant packet across multiple trace files. As discussed above, the unique static content utilized to identify a packet may vary according to protocol, with different static content being utilized for IP, IPX, UDP and TCP protocols. FIGS. 6A-6C illustrate header information 92, 94 and 96 for IP, TCP and UDP protocols respectively. The fields within these headers that may be utilized as the unique static content are discussed above.
At block 80, the correlation engine 52 then compares static information for packets extracted from both the primary and secondary trace files to identify entries for corresponding packets within both the primary and secondary trace files.
At block 82, the correlation engine 52 determines the transmission direction of packets that are common to both the primary and secondary trace files, utilizing any of the methodologies discussed above.
At block 84, the correlation engine 52 writes an entry into a correlated list 72, illustrated in FIG. 7, for each unique packet identified within both, or either of, the primary and secondary trace files. Each entry written into the correlated list 72 includes primary and secondary timestamps for the relevant packet, as extracted from the primary and secondary trace files. As illustrated in FIG. 7, each entry within the correlated list 72 includes a packet identifier 100 that constitutes, in one embodiment, the identify unique static content common to both entries for the packet within the primary and secondary trace files, a primary timestamp 102, a secondary timestamp 104, and a direction indicator 106. Accordingly, the correlated list 72 provides a merged view of information contained for respective packets within both the secondary and primary trace files.
Upon the transmission of a packet from a source to destination, it is not uncommon for the packet to experience fragmentation. For this reason, multiple entries for a unique packet may be written into the correlated list 72 where the secondary (or destination) trace file contains multiple entries for the relevant unique packet. It will be appreciated that the creation of such multiple entries requires the correlation of a packet identifier from the primary trace file with multiple packet identifiers from the secondary trace file, and vice versa.
At decision box 86, a determination is made by the correlation engine 52 whether any further trace files exist that require processing. If so, the method 64 proceeds to block 88, where the correlated list 72 is designated as the primary “trace file” and the further identified trace file is designated as the secondary trace file. The method 62 then again loops through the operations performed at blocks 78-86 until all trace files received at the diagnostic engine 28 have been processed. The method 64 then terminates at block 90.
Synchronization—Methodology
When considering the correlated list 72 illustrated in FIG. 7, it will be appreciated that the clock for the machine at which the secondary trace file is generated, and accordingly that was utilized to generate the secondary timestamps 104, may not have been fully synchronize with the clock utilized to generate the primary timestamps 102 or an error may exist with the frequency of such clock. For this reason, as described above with respect to the block 64 illustrated in FIG. 3, it may be required to synchronize the primary and secondary timestamps to a common timeline. In one embodiment, the timeline for the primary trace file is arbitrarily chosen as the common timeline, and the timestamps for all other trace files are synchronized to this timeline. Of course, the timeline of any trace file may be chosen as the common timeline, and the timelines of the other trace files synchronized to this common timeline. The synchronization maintains the physical consistency of the system (i.e., no packet should appear to travel backwards and time).
FIG. 8 is a flowchart illustrating a method 64, according to exemplary embodiment of the present invention, of synchronizing the timelines (e.g., timestamps) of multiple trace files for the reasons set out above. The method 64 provides an exemplary embodiment of the operation performed at block 64 illustrated in FIG. 3.
The method 64 commences at block 110 with the synchronization engine 54 dividing the correlated list 72 into primary-to-secondary and secondary-to-primary list components (i.e., the correlated list 72 is divided into list components according to the direction indication 106).
At block 112, the synchronization engine 54, for each of the list components (e.g., the primary-to-secondary and secondary-to-primary list components) and for each unique packet (e.g., for multiple entries for packet (i) within each of the list components) identified within each list component, determines the smallest latency (or offset) between the primary and secondary timestamps. This operation may be required in view of the fragmentation of a packet as discussed above, where multiple entries for each unique packet may appear in the correlated list 72. It should furthermore be noted that the smallest latencies (or offsets) in both directions (e.g., a request and response direction) are determined (i.e., the smallest offset (primary-secondary) and the smallest offset (secondary-primary) are each determined). This is achieved by separately processing each of the list components.
Having determined the smallest offset (or latency) for a particular packet (i) in a particular direction at block 112, at decision block 114 a determination is made as to whether the offset for the relevant packet is smaller than a minimum offset for the relevant list component as previously determined by examining other packets described in the relevant list component. In the event that the offset for packet (i) is smaller than the previously determined minimum offset, then the value for the minimum offset is set to the offset for the packet (i) at block 116. On the other hand, should the previously determined minimum offset be smaller than the smallest offset for the packet (i), or upon completion of the operation at block 116, the method 64 proceeds to decision block 118 to determine whether any further unique packets, for which an offset has not as yet been calculated, are described in the relevant list component. If so, the method 64 loops through the operations performed at blocks 112-118 until all unique packets within the relevant list component have been processed. It will be appreciated that once all unique packets within a list component have been processed, the determined minimum offset will be the minimum offset determined in a particular direction.
Once a particular list component (e.g., the primary-to-secondary list component) has been processed by performing the operations at blocks 112-118, the further list component (e.g., the secondary-to-primary list component) may then be processed in a similar manner. Accordingly, the output of the method 64 includes a first minimum offset value in a first direction (e.g., the primary-to-secondary direction) and a second minimum offset value in a second direction (e.g., the secondary-to-primary direction).
At decision block 122, a determination is made as to whether clock drift is exhibited by the calculated offsets. Referring to FIG. 9A, a series of calculated offsets is illustrated that exhibited acceptable time variances and a consistency across multiple unique packets, this consistency being indicative of an absence of clock drift. FIG. 9B, on the other hand, indicates a trend of increasing offsets for unique packets, this trend being indicative of clock drift. It will be appreciated that the success of the synchronization method 64 is dependent upon the accuracy of the timestamps, within the correlated list 72 and as extracted from the multiple trace files.
Two types of inaccuracies commonly appear in the packet timestamps. First, a systematic shift in all timestamps recorded over a time interval may be exhibited (i.e., the clock drift that is illustrated in FIG. 9B). This may be caused by an error in the clock frequency used to time packets. This cause may be determined by applying a windowed synchronization algorithm that attempts to synchronize trace files over a small time window. By analyzing how upper and lower limits vary over time, a systematic shift can be detected and compensated for by applying a relative correction. Second, random errors may appear in timestamps (e.g., a timestamp is actually a value from a bell-curve centered on a real timestamps value).
At block 124, should clock drift be detected, in one exemplary embodiment, the secondary timestamps 104 of the correlated list 72 are calibrated, utilizing the clock drift compensator 56, so as to compensate for the clock drift. In a completion of the operation at block 124, the offset values are then recalculated and the minimum offsets for each of the list components bargain determined by looping through the operations described with reference to blocks 112-118.
Following a determination at decision block 122 that clock drift is not present with in the calculated offsets, at block 126, an average offset is calculated utilizing the minimum offsets in each direction (i.e., offset
 (average)=(offset (minimum) (primary-to-secondary)+offset (minimum) (secondary-to-primary))/2).
At block 128, a symmetrical network with a common minimum latency in both request and response directions is assumed. The timestamps derived from the secondary trace file (i.e., the secondary timestamps 104 within the correlated list 72) are adjusted in accordance with this assumption utilizing the average offset so as to time shift in these secondary timestamps 104 according to the timeline of the primary trace file. For example, where the average offset is positive, the secondary timestamps 104 may simply be increased by the average offset.
At block 130, the network latency for each packet, as reflected within the correlated list 72, can accordingly be determined as the difference between the primary timestamp 102 and the adjusted secondary timestamp 104. This determined latency, as well as the values for primary and secondary timestamps 102 and 104 may then be outputted for viewing by an analyst. The output may be in the form of a numerical output, or maybe a graphical output.
FIG. 10 illustrates an exemplary packet traffic diagram 140 showing packet traffic between a client 142 and a server 144 via a network including at least two routers 146 and 148. The packet traffic diagram 140, for the purposes of illustration, shows the transmission of the first and second packets 150 and 152. The Y-axis of the diagram 140 is time and the packet 150 is accordingly shown to be transmitted from the client 142 to the first router 146, where it experiences fragmentation. Accordingly, multiple packets are shown to be received at the server 144. The offset for the packet 150, in the request direction, is accordingly graphically illustrated at 154 as being the difference between the transmission time of the packets 150 from the client 142 and the receipt time at the server 144 of a first fragment.
Following a certain time period, the server 144 is shown to transmit a response packet back to the client 142, this response packet experiencing fragmentation at the router 148. The offset for the packet 150, in the response direction, is a graphically illustrated at 156 as being the difference between the transmission time of the packet 150 from the server 144 and the receipt time at the client 142 of a first fragment.
In addition to the clock drift and fragmentation issues discussed above, in further embodiments, a number of other issues may be addressed by the present invention. First, the merge module 42 may utilize different protocols to limit a search space within a trace file and may utilize actual data in the datagram of a packet as an additional correlation point when the potential for incorrect correlation exists. As discussed above, certain fields from IP and PC packets may be utilized to correlate packets. These may be reused by the TCP stack in a number of ways. For example, IP addresses may be used by different nodes if DHCP is implemented, TCP and UDP ports may be reused by subsequent connections, IP fragment identifiers repeat after 65536 packets have been sent, and TCP sequence and acknowledge numbers will repeat after 4294967296 bytes of data have been sent. For TCP packets, there is a very small probability that a correlation, performed in the above-described manner, would be incorrect even if traces are compared from different days of traffic between the same IP addresses and ports. However, simpler protocols (e.g., IP) have much less correlation data to rely on. Specifically, as described above, the merge module 42 may utilize only IP addresses and fragment identifiers to correlate IP packets. Accordingly, if more than 65535 packets of pure IP traffic are transmitted between the same two nodes, correlation may become unreliable. To address this potential problem, the present invention proposes that if correlated TCP packets are seen in the same trace file, these may be utilized to limit search space for matching IP packets and thereby improved reliablity. Additionally, the merge module 42 may utilize actual data in the datagram as an additional correlation point.
A further issue is the existence of inspection firewalls, which may implement address translation. Address translation allows an IP packet to mutate by modifying certain fields as the packet passes through the inspection file. Only IP addresses and port numbers are likely to be changed by such an inspection firewall. The present invention proposes, for such scenarios involving address translation, that correlation requirements may be relaxed. Specifically, IP addresses and ports may be discarded for correlation purposes. As previously discussed, the discarding of IP addresses and ports presents few problems for TCP packets, as correlation still has sufficient correlation requirements to succeed. However, for UDP and other IP protocols, there is a greater likelihood of incorrect correlation as the only remaining correlation requirements may be IP fragment identifiers. Incorrect correlation may occur where ranges of IP fragment identifiers overlap. Again, as proposed above, TCP packets in a trace file may be utilized to limit the search space for matching IP packets, and thus improve correlation reliability. Data in the datagram may also be used as an additional correlation point when correlating non-TCP, address-translated traffic.
For broadcast traffic or unidirectional traffic, such as seen from a streaming media server, the correlation operation described above with reference to FIG. 4 may be performed, but the synchronization operation described with respect to FIG. 8 will fail unless there is bi-directional traffic between the nodes that operators capture points. With unidirectional traffic, only a lower limit on a shift to be applied to the timestamps of the secondary trace file would be obtained. If a “node map” is known, then the merge module 42 may utilize a minimum round-trip latency to each node to estimate the minimum network delay (or offset) and use that as an upper limit.
Thus, a method and system to calculate network latency, and to display the same, have been described. Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

Claims (57)

1. A method of calculating network latency, the method including:
correlating a first packet identifier recorded at a first network location with a second packet identifier recorded at a second network location, wherein the first and second packet identifiers indicate a common first packet and have respective first and second timestamps associated therewith; and
calculating a first network traversal time for the first packet as the difference between the first and second timestamps associated with the first and second packet identifiers respectively,
wherein the first packet identifier and the first timestamp are contained in a first trace file captured at the first network location, and the second packet identifier and the second timestamp are contained in a second trace file captured at the second network location.
2. The method of claim 1 including at least partially merging the first and second trace files into a merged file, the merged file containing an entry for each correlation of a first packet identifier with a second packet identifier.
3. The method of claim 1 wherein the correlating includes correlating the first packet identifier with multiple packet identifiers recorded at the second network location as a result of fragmentation of the first packet during transmission from the first network location to the second network location.
4. The method of claim 3 wherein the calculating includes calculating multiple traversal times as the respective differences between the first timestamp and each of multiple timestamps associated with the respective multiple packet identifiers.
5. The method of claim 4 including identifying a minimum traversal time from among the multiple traversal times as a selected offset.
6. The method of claim 1 including determining whether clock drift influenced a plurality of traversal times for a plurality of packets transmitted between the first and second network locations and, if so, then adjusting the plurality of traversal times to compensate for the clock drift.
7. The method of claim 6 wherein the adjusting of the plurality of traversal times includes calibrating each of a plurality of timestamps associated with a plurality of packet identifiers recorded at the second network location.
8. The method of claim 1 wherein bi-directional packet transmissions occur between the first and second network locations, and the correlating includes determining a direction of transmission of the first packet between the first and second network locations.
9. The method of claim 1 wherein the first packet is transmitted from the first network location to the second network location, the method including correlating a third packet identifier recorded at the second network location with a fourth packet identifier recorded at the first network location, wherein the third and fourth packet identifiers identify a second packet transmitted from the second network location to the first network location responsive to the first packet, and wherein the third and fourth packet identifiers have respective third and fourth timestamps associated therewith.
10. The method of claim 9 including calculating a second network traversal time for the second packet as the difference between the third and fourth timestamps.
11. The method of claim 10 including calculating an average traversal time between the first and second network locations as the average of the first and second network traversal times.
12. The method of claim 10 wherein the first and second network traversal times are minimum traversal times for fragmented transmissions of the first and second packets respectively.
13. The method of claim 11 including adjusting at least the first traversal time based on the average traversal time.
14. The method of claim 11 including adjusting the first and second traversal times based on the average traversal time.
15. The method of claim 13 wherein the adjusting includes calibrating timestamps associated with the second network location utilizing the average traversal time.
16. The method of claim 1 including outputting at least the first traversal time.
17. The method of claim 16 wherein the outputting comprises generating a graphical display of the first traversal time.
18. A system to calculate network latency, the system including:
a correlation engine to correlate a first packet identifier recorded at a first network location with a second packet identifier recorded at a second network location, wherein the first and second packet identifiers indicate a common first packet and have respective first and second timestamps associated therewith; and
a synchronization engine to calculate a first network traversal time for the first packet as the difference between the first and second timestamps associated with the first and second packet identifiers respectively,
wherein the first packet identifier and the first timestamp are contained in a first trace file captured at the first network location, and the second packet identifier and the second timestamp are contained in a second trace file captured at the second network location.
19. The system of claim 18 wherein the synchronization engine is to at least partially merge the first and second trace files into a merged file, the merged file containing an entry for each correlation of a first packet identifier with a second packet identifier.
20. The system of claim 18 wherein the correlation engine is to correlate the first packet identifier with multiple packet identifiers recorded at the second network location as a result of fragmentation of the first packet during transmission from the first network location to the second network location.
21. The system of claim 20 wherein the synchronization engine is to calculate multiple traversal times as the respective differences between the first timestamp and each of multiple timestamps associated with the respective multiple packet identifiers.
22. The system of claim 21 wherein the synchronization engine is to identify a minimum traversal time from among the multiple traversal times as a selected offset.
23. The system of claim 18 wherein the synchronization engine is to determine whether clock drift influenced a plurality of traversal times for a plurality of packets transmitted between the first and second network locations and, if so, then to adjust the plurality of traversal times to compensate for the clock drift.
24. The system of claim 23 wherein the synchronization engine is to calibrate each of a plurality of timestamps associated with a plurality of packet identifiers recorded at the second network location.
25. The system of claim 18 wherein bi-directional packet transmissions occur between the first and second network locations, and the correlation engine is to determine a direction of transmission of the first packet between the first and second network locations.
26. The system of claim 18 wherein the first packet is transmitted from the first network location to the second network location, the correlation engine is to correlate a third packet identifier recorded at the second network location with a fourth packet identifier recorded at the first network location, wherein the third and fourth packet identifiers a second packet transmitted from the second network location to the first network location responsive to the first packet, and wherein the third and fourth packet identifiers have respective third and fourth timestamps associated therewith.
27. The system of claim 26 wherein the synchronization engine is to calculate a second network traversal time for the second packet as the difference between the third and fourth timestamps.
28. The system of claim 27 wherein the synchronization engine is to calculate an average traversal time between the first and second network locations as the average of the first and second network traversal times.
29. The system of claim 27 wherein the first and second network traversal times are minimum traversal times for fragmented transmissions of the first and second packets respectively.
30. The system of claim 28 wherein the synchronization engine is to adjust at least the first traversal time based on the average traversal time.
31. The system of claim 28 wherein the synchronization engine is to adjust the first and second traversal times based on the average traversal time.
32. The system of claim 30 wherein the synchronization engine is to calibrate timestamps associated with the second network location utilizing the average traversal time.
33. The system of claim 18 including a visualization module to output at least the first traversal time.
34. The system of claim 33 wherein the visualization module is to generate a graphical display of the first traversal time.
35. A computer-readable medium storing a sequence of instructions that, when executed by machine, causing machine to perform method of calculating network latency, the method including:
correlating a first packet identifier recorded at a first network location with a second packet identifier recorded at a second network location, wherein the first and second packet identifiers indicate a common first packet and have respective first and second timestamps associated therewith; and
calculating a first network traversal time for the first packet as the difference between the first and second timestamps associated with the first and second packet identifiers respectively,
wherein the first packet identifier and the first timestamp are contained in a first trace file captured at the first network location, and the second packet identifier and the second timestamp are contained in a second trace file captured at the second network location.
36. A method of calculating network latency, the method including:
correlating a first packet identifier recorded at a first network location with a second packet identifier recorded at a second network location, wherein the first and second packet identifiers indicate a common first packet and have respective first and second timestamps associated therewith;
calculating a first network traversal time for the first packet as the difference between the first and second timestamps associated with the first and second packet identifiers respectively; and
determining whether clock drift influenced a plurality of traversal times for a plurality of packets transmitted between the first and second network locations and, if so, then adjusting the plurality of traversal times to compensate for the clock drift, including calibrating each of a plurality of timestamps associated with a plurality of packet identifiers recorded at the second network location.
37. A method of calculating network latency, the method including:
correlating a first packet identifier recorded at a first network location with a second packet identifier recorded at a second network location, wherein the first and second packet identifiers indicate a common first packet and have respective first and second timestamps associated therewith;
calculating a first network traversal time for the first packet as the difference between the first and second timestamps associated with the first and second packet identifiers respectively, wherein the first packet is transmitted from the first network location to the second network location, the method including correlating a third packet identifier recorded at the second network location with a fourth packet identifier recorded at the first network location, wherein the third and fourth packet identifiers identify a second packet transmitted from the second network location to the first network location responsive to the first packet, and wherein the third and fourth packet identifiers have respective third and fourth timestamps associated therewith; and
calculating a second network traversal time for the second packet as the difference between the third and fourth timestamps, and wherein the first and second network traversal times are minimum traversal times for fragmented transmissions of the first and second packets respectively.
38. A method of calculating network latency, the method including:
correlating a first packet identifier recorded at a first network location with a second packet identifier recorded at a second network location, wherein the first and second packet identifiers indicate a common first packet and have respective first and second timestamps associated therewith;
calculating a first network traversal time for the first packet as the difference between the first and second timestamps associated with the first and second packet identifiers respectively, wherein the first packet is transmitted from the first network location to the second network location, the method including correlating a third packet identifier recorded at the second network location with a fourth packet identifier recorded at the first network location, wherein the third and fourth packet identifiers identify a second packet transmitted from the second network location to the first network location responsive to the first packet, and wherein the third and fourth packet identifiers have respective third and fourth timestamps associated therewith;
calculating a second network traversal time for the second packet as the difference between the third and fourth timestamps;
calculating an average traversal time between the first and second network locations as the average of the first and second network traversal times; and
adjusting at least the first traversal time based on the average traversal time, including calibrating timestamps associated with the second network location utilizing the average traversal time.
39. The method of claim 38, wherein the first and second network traversal times are minimum traversal times for fragmented transmissions of the first and second packets respectively.
40. The method of claim 38, including adjusting the second traversal times based on the average traversal time.
41. The method of claim 38, including outputting at least the first traversal time.
42. The method of claim 39, wherein the outputting comprises generating a graphical display of the first traversal time.
43. A system to calculate network latency, the system including:
a correlation engine to correlate a first packet identifier recorded at a first network location with a second packet identifier recorded at a second network location, wherein the first and second packet identifiers indicate a common first packet and have respective first and second timestamps associated therewith; and
a synchronization engine to calculate a first network traversal time for the first packet as the difference between the first and second timestamps associated with the first and second packet identifiers respectively, the synchronization engine configured to
determine whether clock drift influenced a plurality of traversal times for a plurality of packets transmitted between the first and second network locations and, if so, then to adjust the plurality of traversal times to compensate for the clock drift, and
calibrate each of a plurality of timestamps associated with a plurality of packet identifiers recorded at the second network location.
44. The system of claim 43, wherein the synchronization engine is to at least partially merge the first and second trace files into a merged file, the merged file containing an entry for each correlation of a first packet identifier with a second packet identifier.
45. The system of claim 43, wherein the correlation engine is to correlate the first packet identifier with multiple packet identifiers recorded at the second network location as a result of fragmentation of the first packet during transmission from the first network location to the second network location.
46. The system of claim 45, wherein the synchronization engine is to calculate multiple traversal times as the respective differences between the first timestamp and each of multiple timestamps associated with the respective multiple packet identifiers.
47. The system of claim 46, wherein the synchronization engine is to identify a minimum traversal time from among the multiple traversal times as a selected offset.
48. The system of claim 43, wherein bi-directional packet transmissions occur between the first and second network locations, and the correlation engine is to determine a direction of transmission of the first packet between the first and second network locations.
49. The system of claim 43, wherein the first packet is transmitted from the first network location to the second network location, the correlation engine is to correlate a third packet identifier recorded at the second network location with a fourth packet identifier recorded at the first network location, wherein the third and fourth packet identifiers identify a second packet transmitted from the second network location to the first network location responsive to the first packet, and wherein the third and fourth packet identifiers have respective third and fourth timestamps associated therewith.
50. The system of claim 49, wherein the synchronization engine is to calculate a second network traversal time for the second packet as the difference between the third and fourth timestamps.
51. The system of claim 50, wherein the synchronization engine is to calculate an average traversal time between the first and second network locations as the average of the first and second network traversal times.
52. The system of claim 50, wherein the first and second network traversal times are minimum traversal times for fragmented transmissions of the first and second packets respectively.
53. The system of claim 51, wherein the synchronization engine is to adjust at least the first traversal time based on the average traversal time.
54. The system of claim 51, wherein the synchronization engine is to adjust the first and second traversal times based on the average traversal time.
55. The system of claim 53, wherein the synchronization engine is to calibrate timestamps associated with the second network location utilizing the average traversal time.
56. The system of claim 43, including a visualization module to output at least the first traversal time.
57. The system of claim 56, wherein the visualization module is to generate a graphical display of the first traversal time.
US09/770,969 2000-01-28 2001-01-25 Method and system to calculate network latency, and to display the same field of the invention Expired - Lifetime US6922417B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/770,969 US6922417B2 (en) 2000-01-28 2001-01-25 Method and system to calculate network latency, and to display the same field of the invention

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17867800P 2000-01-28 2000-01-28
US09/770,969 US6922417B2 (en) 2000-01-28 2001-01-25 Method and system to calculate network latency, and to display the same field of the invention

Publications (2)

Publication Number Publication Date
US20010050903A1 US20010050903A1 (en) 2001-12-13
US6922417B2 true US6922417B2 (en) 2005-07-26

Family

ID=26874543

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/770,969 Expired - Lifetime US6922417B2 (en) 2000-01-28 2001-01-25 Method and system to calculate network latency, and to display the same field of the invention

Country Status (1)

Country Link
US (1) US6922417B2 (en)

Cited By (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030065769A1 (en) * 2000-02-18 2003-04-03 Kryskow Joseph M. Real time mesh measurement system stream latency and jitter measurements
US20030110274A1 (en) * 2001-08-30 2003-06-12 Riverhead Networks Inc. Protecting against distributed denial of service attacks
US20030223367A1 (en) * 2002-03-29 2003-12-04 Shay A. David Methods for identifying network traffic flows
US20040194066A1 (en) * 2002-12-10 2004-09-30 Frey Gregor K System and method for monitoring program code
US20050030979A1 (en) * 2003-08-08 2005-02-10 Malloy Patrick J. Synchronizing packet traces
US20050216585A1 (en) * 2004-03-26 2005-09-29 Tsvetelina Todorova Monitor viewer for an enterprise network monitoring system
US20050223282A1 (en) * 2004-03-26 2005-10-06 Frey Gregor K Unified logging service with a log viewer
US20050223283A1 (en) * 2004-03-26 2005-10-06 Frey Gregor K Unified logging service with a logging formatter
US20060080575A1 (en) * 2004-10-07 2006-04-13 Daniel Golparian Hardware-based network packet timestamps: improved network clock synchronization
US7080138B1 (en) * 2001-04-11 2006-07-18 Cisco Technology, Inc. Methods and apparatus for content server selection
US20060182039A1 (en) * 2005-02-15 2006-08-17 Microsoft Corporation High-accuracy packet pair for network bottleneck bandwidth measurement
US20060248177A1 (en) * 2005-04-29 2006-11-02 Sap Aktiengesellschaft Common trace files
US20060277441A1 (en) * 2005-06-02 2006-12-07 Seagate Technology Llc Unified debug system with multiple user-configurable trace volumes and trace buffers
US20070150895A1 (en) * 2005-12-06 2007-06-28 Kurland Aaron S Methods and apparatus for multi-core processing with dedicated thread management
US7296088B1 (en) * 2000-11-17 2007-11-13 Microsoft Corporation System and method for determining the geographic location of internet hosts
US20080005354A1 (en) * 2002-08-16 2008-01-03 Kryskow Joseph M Jr Real time mesh measurement systen stream latency and jitter measurements
US7366790B1 (en) * 2003-07-24 2008-04-29 Compuware Corporation System and method of active latency detection for network applications
US20080168559A1 (en) * 2007-01-04 2008-07-10 Cisco Technology, Inc. Protection against reflection distributed denial of service attacks
US20090144806A1 (en) * 2007-12-03 2009-06-04 Cisco Technology, Inc. Handling of DDoS attacks from NAT or proxy devices
US7573831B1 (en) * 2004-07-01 2009-08-11 Sprint Communications Company L.P. System and method for analyzing transmission of billing data
US20090234968A1 (en) * 2008-03-13 2009-09-17 Cisco Technology, Inc. Server selection for routing content to a client using application layer redirection
US7624447B1 (en) 2005-09-08 2009-11-24 Cisco Technology, Inc. Using threshold lists for worm detection
US7643414B1 (en) 2004-02-10 2010-01-05 Avaya Inc. WAN keeper efficient bandwidth management
US7725572B1 (en) 2003-12-30 2010-05-25 Sap Ag Notification architecture and method employed within a clustered node configuration
US7756968B1 (en) 2003-12-30 2010-07-13 Sap Ag Method and system for employing a hierarchical monitor tree for monitoring system resources in a data processing environment
US7822826B1 (en) 2003-12-30 2010-10-26 Sap Ag Deployment of a web service
US7836341B1 (en) 2003-03-24 2010-11-16 Netapp, Inc. System and method for automatically diagnosing protocol errors from packet traces
US7941521B1 (en) 2003-12-30 2011-05-10 Sap Ag Multi-service management architecture employed within a clustered node configuration
US20110150008A1 (en) * 2009-12-09 2011-06-23 Michel Le Pallec Automatic management of timestamp-based synchronisation protocols
US20130016739A1 (en) * 2010-04-08 2013-01-17 Nicusor Penisoara Multi-channel sniffer system and method for multi-channel sniffer synchronization
US8806005B2 (en) 2011-09-12 2014-08-12 Microsoft Corporation Cross-machine event log correlation
US9438517B2 (en) 2012-10-30 2016-09-06 Viavi Solutions Inc. Method and system for identifying matching packets
US9800482B2 (en) 2015-04-29 2017-10-24 Ixia Signature-based latency extraction systems and related methods for network packet communications
US10630567B1 (en) * 2018-02-05 2020-04-21 Illuminate Technologies, Llc Methods, systems and computer readable media for monitoring communications networks using cross-correlation of packet flows
US11496500B2 (en) 2015-04-17 2022-11-08 Centripetal Networks, Inc. Rule-based network-threat detection
US11683401B2 (en) 2015-02-10 2023-06-20 Centripetal Networks, Llc Correlating packets in communications networks

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001285296A (en) * 2000-03-29 2001-10-12 Fujitsu Ltd Repeater
US7299489B1 (en) * 2000-05-25 2007-11-20 Lucent Technologies Inc. Method and apparatus for host probing
US6738355B1 (en) * 2000-11-01 2004-05-18 Agilent Technologies, Inc. Synchronization method for multi-probe communications network monitoring
US6868069B2 (en) * 2001-01-16 2005-03-15 Networks Associates Technology, Inc. Method and apparatus for passively calculating latency for a network appliance
US20030033430A1 (en) * 2001-07-20 2003-02-13 Lau Chi Leung IP flow discovery for IP probe auto-configuration and SLA monitoring
US8949468B2 (en) 2001-09-21 2015-02-03 International Business Machines Corporation Method and system for time synchronization among systems using parallel sysplex links
US7327676B2 (en) * 2001-10-11 2008-02-05 Nippon Telegraph And Telephone Corporation Data transmission control method, program therefor and data transmission unit using the same
US7127508B2 (en) * 2001-12-19 2006-10-24 Tropic Networks Inc. Method and system of measuring latency and packet loss in a network by using probe packets
US7747729B2 (en) * 2002-06-14 2010-06-29 Hanoch Levy Determining client latencies over a network
US7602728B2 (en) * 2003-06-12 2009-10-13 Avaya Inc. Method and apparatus for determination of network topology
US7876703B2 (en) * 2003-06-13 2011-01-25 International Business Machines Corporation System and method for enabling connection among devices in a network
JP3791921B2 (en) * 2003-07-04 2006-06-28 インターナショナル・ビジネス・マシーンズ・コーポレーション Method for analyzing network trace, processing device for analyzing network trace, computer-executable program for controlling computer as processing device, and method for correcting time difference between nodes in network
US7181647B2 (en) * 2003-10-15 2007-02-20 International Business Machines Corporation Error tracking method and system
JP4264035B2 (en) * 2004-06-25 2009-05-13 株式会社東芝 Information processing apparatus, information processing program, and information processing method
KR100667785B1 (en) * 2004-12-16 2007-01-12 삼성전자주식회사 Synchronization method, apparatus therefor and location awareness method and apparatus therefor in chaotic communication system
GB2422505A (en) * 2005-01-20 2006-07-26 Agilent Technologies Inc Sampling datagrams
WO2006090408A2 (en) * 2005-02-24 2006-08-31 Hewlett-Packard Development Company, L.P. Input/output tracing in a protocol offload system
AU2006257287B2 (en) * 2005-06-10 2012-12-06 Accenture Global Services Limited Electronic vehicle indentification
US20060285509A1 (en) * 2005-06-15 2006-12-21 Johan Asplund Methods for measuring latency in a multicast environment
US8824429B2 (en) * 2005-08-19 2014-09-02 Riverbed Technology, Inc. Automatic estimation of node location based on trace information
US20070116044A1 (en) * 2005-10-25 2007-05-24 Xyratex Technology Limited Capture buffer, a network analyser, a network analyser card and a method of capturing network data
US9549025B2 (en) * 2006-05-09 2017-01-17 International Business Machines Corporation Protocol optimization for client and server synchronization
US8379638B2 (en) * 2006-09-25 2013-02-19 Certes Networks, Inc. Security encapsulation of ethernet frames
EP1936867B1 (en) * 2006-12-22 2013-02-20 Corvil Limited Delay measurements in network traffic
US20080162922A1 (en) * 2006-12-27 2008-07-03 Swartz Troy A Fragmenting security encapsulated ethernet frames
US7940758B2 (en) * 2007-03-20 2011-05-10 Avaya Inc. Data distribution in a distributed telecommunications network
US8737216B2 (en) * 2007-04-12 2014-05-27 Telefonaktiebolaget L M Ericsson (Publ) Measuring network performance with reference packet probing
US8073976B2 (en) * 2008-03-27 2011-12-06 Microsoft Corporation Synchronizing clocks in an asynchronous distributed system
US7793001B2 (en) * 2008-05-09 2010-09-07 Microsoft Corporation Packet compression for network packet traffic analysis
US8804535B2 (en) 2009-03-25 2014-08-12 Avaya Inc. System and method for sending packets using another device's network address
US8165030B2 (en) * 2009-04-30 2012-04-24 Avaya Inc. System and method for monitoring a network communication at multiple network layers
US8072890B2 (en) * 2009-05-01 2011-12-06 Avaya Inc. System and method for testing a dynamic communication across a network
US8144734B2 (en) * 2009-05-06 2012-03-27 Avaya Inc. Intelligent multi-packet header compression
US8238254B2 (en) * 2009-05-14 2012-08-07 Avaya Inc. Detection and display of packet changes in a network
US8619594B2 (en) * 2009-07-31 2013-12-31 Avaya Inc. System and method for comparing packet traces for failed and successful communications
EP2677690A1 (en) * 2012-06-21 2013-12-25 ABB Research Ltd. Determining the network topology of a communication network
US10412550B2 (en) 2012-10-29 2019-09-10 T-Mobile Usa, Inc. Remote driving of mobile device diagnostic applications
US10952091B2 (en) 2012-10-29 2021-03-16 T-Mobile Usa, Inc. Quality of user experience analysis
US9538409B2 (en) 2012-10-29 2017-01-03 T-Mobile Usa, Inc. Quality of user experience analysis
US9237474B2 (en) * 2012-10-29 2016-01-12 T-Mobile Usa, Inc. Network device trace correlation
US10237144B2 (en) 2012-10-29 2019-03-19 T-Mobile Usa, Inc. Quality of user experience analysis
US10313905B2 (en) 2012-10-29 2019-06-04 T-Mobile Usa, Inc. Contextual quality of user experience analysis using equipment dynamics
US9288128B1 (en) * 2013-03-15 2016-03-15 Google Inc. Embedding network measurements within multiplexing session layers
US9621448B2 (en) * 2014-04-08 2017-04-11 AppDynamics, Inc. Network analysis and monitoring tool
US20160006526A1 (en) * 2014-07-03 2016-01-07 Qualcomm Incorporated Systems and methods of network clock comparison
US10728130B2 (en) * 2016-04-21 2020-07-28 Cisco Technology, Inc. Distributed stateless inference of hop-wise delays and round-trip time for internet protocol traffic
US10565149B2 (en) * 2018-04-06 2020-02-18 Embrionix Design Inc. Standardized hot-pluggable transceiving unit, hosting unit and method for applying delays based on port positions
US10880028B2 (en) * 2018-11-13 2020-12-29 The United States Of America, As Represented By The Secretary Of The Navy System and method for clock-skew-based covert communication
TWI825992B (en) * 2022-09-14 2023-12-11 財團法人工業技術研究院 Monitoring system and monitoring method of network latency

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5101402A (en) * 1988-05-24 1992-03-31 Digital Equipment Corporation Apparatus and method for realtime monitoring of network sessions in a local area network
US6012096A (en) * 1998-04-23 2000-01-04 Microsoft Corporation Method and system for peer-to-peer network latency measurement
US20010039579A1 (en) * 1996-11-06 2001-11-08 Milan V. Trcka Network security and surveillance system
US6587875B1 (en) * 1999-04-30 2003-07-01 Microsoft Corporation Network protocol and associated methods for optimizing use of available bandwidth
US6651099B1 (en) * 1999-06-30 2003-11-18 Hi/Fn, Inc. Method and apparatus for monitoring traffic in a network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5101402A (en) * 1988-05-24 1992-03-31 Digital Equipment Corporation Apparatus and method for realtime monitoring of network sessions in a local area network
US20010039579A1 (en) * 1996-11-06 2001-11-08 Milan V. Trcka Network security and surveillance system
US6012096A (en) * 1998-04-23 2000-01-04 Microsoft Corporation Method and system for peer-to-peer network latency measurement
US6587875B1 (en) * 1999-04-30 2003-07-01 Microsoft Corporation Network protocol and associated methods for optimizing use of available bandwidth
US6651099B1 (en) * 1999-06-30 2003-11-18 Hi/Fn, Inc. Method and apparatus for monitoring traffic in a network

Cited By (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7260627B2 (en) * 2000-02-18 2007-08-21 Infrastructure Innovations, Llc Real time mesh measurement system stream latency and jitter measurements
US20030065769A1 (en) * 2000-02-18 2003-04-03 Kryskow Joseph M. Real time mesh measurement system stream latency and jitter measurements
US7711846B2 (en) 2000-11-17 2010-05-04 Microsoft Corporation System and method for determining the geographic location of internet hosts
US20080037536A1 (en) * 2000-11-17 2008-02-14 Microsoft Corporation System and method for determining the geographic location of internet hosts
US7296088B1 (en) * 2000-11-17 2007-11-13 Microsoft Corporation System and method for determining the geographic location of internet hosts
US7080138B1 (en) * 2001-04-11 2006-07-18 Cisco Technology, Inc. Methods and apparatus for content server selection
US7171683B2 (en) * 2001-08-30 2007-01-30 Riverhead Networks Inc. Protecting against distributed denial of service attacks
US20030110274A1 (en) * 2001-08-30 2003-06-12 Riverhead Networks Inc. Protecting against distributed denial of service attacks
US20030223367A1 (en) * 2002-03-29 2003-12-04 Shay A. David Methods for identifying network traffic flows
US7461163B2 (en) 2002-08-16 2008-12-02 Infrastructure Innovations Llc Real time mesh measurement system stream latency and jitter measurements
US20080005354A1 (en) * 2002-08-16 2008-01-03 Kryskow Joseph M Jr Real time mesh measurement systen stream latency and jitter measurements
US7577731B2 (en) 2002-12-10 2009-08-18 Sap Ag System and method for monitoring program code
US20040194066A1 (en) * 2002-12-10 2004-09-30 Frey Gregor K System and method for monitoring program code
US7836341B1 (en) 2003-03-24 2010-11-16 Netapp, Inc. System and method for automatically diagnosing protocol errors from packet traces
US7366790B1 (en) * 2003-07-24 2008-04-29 Compuware Corporation System and method of active latency detection for network applications
US20050030979A1 (en) * 2003-08-08 2005-02-10 Malloy Patrick J. Synchronizing packet traces
US7570669B2 (en) * 2003-08-08 2009-08-04 Opnet Technologies, Inc. Synchronizing packet traces
US7756968B1 (en) 2003-12-30 2010-07-13 Sap Ag Method and system for employing a hierarchical monitor tree for monitoring system resources in a data processing environment
US7725572B1 (en) 2003-12-30 2010-05-25 Sap Ag Notification architecture and method employed within a clustered node configuration
US7822826B1 (en) 2003-12-30 2010-10-26 Sap Ag Deployment of a web service
US7941521B1 (en) 2003-12-30 2011-05-10 Sap Ag Multi-service management architecture employed within a clustered node configuration
US7643414B1 (en) 2004-02-10 2010-01-05 Avaya Inc. WAN keeper efficient bandwidth management
US20050223283A1 (en) * 2004-03-26 2005-10-06 Frey Gregor K Unified logging service with a logging formatter
US20050223282A1 (en) * 2004-03-26 2005-10-06 Frey Gregor K Unified logging service with a log viewer
US7526550B2 (en) 2004-03-26 2009-04-28 Sap Ag Unified logging service with a log viewer
US7721266B2 (en) 2004-03-26 2010-05-18 Sap Ag Unified logging service with a logging formatter
US20050216585A1 (en) * 2004-03-26 2005-09-29 Tsvetelina Todorova Monitor viewer for an enterprise network monitoring system
US7573831B1 (en) * 2004-07-01 2009-08-11 Sprint Communications Company L.P. System and method for analyzing transmission of billing data
US20060080575A1 (en) * 2004-10-07 2006-04-13 Daniel Golparian Hardware-based network packet timestamps: improved network clock synchronization
US7768931B2 (en) * 2004-10-07 2010-08-03 Westerngeco L.L.C. Hardware-based network packet timestamps: improved network clock synchronization
US20060182039A1 (en) * 2005-02-15 2006-08-17 Microsoft Corporation High-accuracy packet pair for network bottleneck bandwidth measurement
US7545749B2 (en) * 2005-02-15 2009-06-09 Microsoft Corporation High-accuracy packet pair for network bottleneck bandwidth measurement
US7810075B2 (en) * 2005-04-29 2010-10-05 Sap Ag Common trace files
US20060248177A1 (en) * 2005-04-29 2006-11-02 Sap Aktiengesellschaft Common trace files
US20060277441A1 (en) * 2005-06-02 2006-12-07 Seagate Technology Llc Unified debug system with multiple user-configurable trace volumes and trace buffers
US8694970B2 (en) * 2005-06-02 2014-04-08 Seagate Technology Llc Unified debug system with multiple user-configurable trace volumes and trace buffers
US7624447B1 (en) 2005-09-08 2009-11-24 Cisco Technology, Inc. Using threshold lists for worm detection
US20070150895A1 (en) * 2005-12-06 2007-06-28 Kurland Aaron S Methods and apparatus for multi-core processing with dedicated thread management
US20080168559A1 (en) * 2007-01-04 2008-07-10 Cisco Technology, Inc. Protection against reflection distributed denial of service attacks
US8156557B2 (en) 2007-01-04 2012-04-10 Cisco Technology, Inc. Protection against reflection distributed denial of service attacks
US20090144806A1 (en) * 2007-12-03 2009-06-04 Cisco Technology, Inc. Handling of DDoS attacks from NAT or proxy devices
US8370937B2 (en) 2007-12-03 2013-02-05 Cisco Technology, Inc. Handling of DDoS attacks from NAT or proxy devices
US20090234968A1 (en) * 2008-03-13 2009-09-17 Cisco Technology, Inc. Server selection for routing content to a client using application layer redirection
US8667175B2 (en) 2008-03-13 2014-03-04 Cisco Technology, Inc. Server selection for routing content to a client using application layer redirection
US20110150008A1 (en) * 2009-12-09 2011-06-23 Michel Le Pallec Automatic management of timestamp-based synchronisation protocols
US8588258B2 (en) * 2009-12-09 2013-11-19 Alcatel Lucent Automatic management of timestamp-based synchronisation protocols
US20130016739A1 (en) * 2010-04-08 2013-01-17 Nicusor Penisoara Multi-channel sniffer system and method for multi-channel sniffer synchronization
US8806005B2 (en) 2011-09-12 2014-08-12 Microsoft Corporation Cross-machine event log correlation
US9438517B2 (en) 2012-10-30 2016-09-06 Viavi Solutions Inc. Method and system for identifying matching packets
US9736039B2 (en) 2012-10-30 2017-08-15 Viavi Solutions Inc. Method and system for identifying matching packets
US11683401B2 (en) 2015-02-10 2023-06-20 Centripetal Networks, Llc Correlating packets in communications networks
US11956338B2 (en) 2015-02-10 2024-04-09 Centripetal Networks, Llc Correlating packets in communications networks
US11496500B2 (en) 2015-04-17 2022-11-08 Centripetal Networks, Inc. Rule-based network-threat detection
US11516241B2 (en) 2015-04-17 2022-11-29 Centripetal Networks, Inc. Rule-based network-threat detection
US11700273B2 (en) 2015-04-17 2023-07-11 Centripetal Networks, Llc Rule-based network-threat detection
US11792220B2 (en) 2015-04-17 2023-10-17 Centripetal Networks, Llc Rule-based network-threat detection
US9800482B2 (en) 2015-04-29 2017-10-24 Ixia Signature-based latency extraction systems and related methods for network packet communications
US10630567B1 (en) * 2018-02-05 2020-04-21 Illuminate Technologies, Llc Methods, systems and computer readable media for monitoring communications networks using cross-correlation of packet flows
US11134000B2 (en) * 2018-02-05 2021-09-28 Illuminate Technologies, Llc Methods, systems and computer readable media for monitoring communications networks using cross-correlation of packet flows

Also Published As

Publication number Publication date
US20010050903A1 (en) 2001-12-13

Similar Documents

Publication Publication Date Title
US6922417B2 (en) Method and system to calculate network latency, and to display the same field of the invention
Mahajan et al. User-level Internet path diagnosis
EP2044514B1 (en) Methods and apparatus for improved determination of network metrics
US7787438B2 (en) Delay measurements in network traffic
US20060274791A1 (en) Method measuring a delay time metric and measurement system
Paxson Towards a framework for defining Internet performance metrics
US7889656B2 (en) Binned duration flow tracking
JP5646090B2 (en) Traceroute_delay diagnostic command
EP1367771A2 (en) Passive network monitoring system
US9814008B2 (en) Methods, systems, and computer readable media for receiving a clock synchronization message
US20050060403A1 (en) Time-based correlation of non-translative network segments
US20060165003A1 (en) Method and apparatus for monitoring data routing over a network
US9424268B2 (en) System and method for aligning data frames in time
US9634851B2 (en) System, method, and computer readable medium for measuring network latency from flow records
US20060268718A1 (en) Systems and methods for monitoring packet delivery
US11133980B2 (en) Detecting sources of computer network failures
US20050078606A1 (en) Pattern-based correlation of non-translative network segments
EP3474499A1 (en) Network performance detection method and apparatus
US20080301271A1 (en) Method of ip address de-aliasing
CN113812119B (en) Network node for performance measurement
EP1879349A1 (en) Method of measuring packet loss
US20200052989A1 (en) Method for devices in a network to participate in an end-to-end measurement of latency
Partridge et al. HEMS variable definitions
Cheng et al. Explaining BGP slow table transfers
Partridge et al. RFC1024: HEMS variable definitions

Legal Events

Date Code Title Description
AS Assignment

Owner name: COMPUWARE CORPORATION, MICHIGAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:VANLINT, PAUL;REEL/FRAME:011754/0087

Effective date: 20010411

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: JEFFERIES FINANCE, LLC, NEW YORK

Free format text: FIRST LIEN PATENT SECURITY AGREEMENT;ASSIGNOR:COMPUWARE CORPORATION;REEL/FRAME:035200/0973

Effective date: 20141215

Owner name: JEFFERIES FINANCE, LLC, NEW YORK

Free format text: SECOND LIEN PATENT SECURITY AGREEMENT;ASSIGNOR:COMPUWARE CORPORATION;REEL/FRAME:035201/0065

Effective date: 20141215

AS Assignment

Owner name: DYNATRACE LLC, MICHIGAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:COMPUWARE CORPORATION;REEL/FRAME:035489/0529

Effective date: 20150401

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: COMPUWARE CORPORATION, MICHIGAN

Free format text: TERMINATION OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 035201/0065;ASSIGNOR:JEFFERIES FINANCE LLC, AS COLLATERAL AGENT;REEL/FRAME:045325/0384

Effective date: 20180208

AS Assignment

Owner name: COMPUWARE CORPORATION, MICHIGAN

Free format text: RELEASE OF FIRST LIEN PATENT SECURITY AGREEMENT RECORDED AT REEL\FRAME 035200\0973 AND 035200\0955;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:046922/0886

Effective date: 20180823

Owner name: DYNATRACE LLC, MASSACHUSETTS

Free format text: RELEASE OF FIRST LIEN PATENT SECURITY AGREEMENT RECORDED AT REEL\FRAME 035200\0973 AND 035200\0955;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:046922/0886

Effective date: 20180823

AS Assignment

Owner name: JEFFERIES FINANCE LLC, NEW YORK

Free format text: SECOND LIEN PATENT SECURITY AGREEMENT;ASSIGNOR:DYNATRACE LLC;REEL/FRAME:046923/0528

Effective date: 20180823

Owner name: JEFFERIES FINANCE LLC, NEW YORK

Free format text: FIRST LIEN PATENT SECURITY AGREEMENT;ASSIGNOR:DYNATRACE LLC;REEL/FRAME:046923/0557

Effective date: 20180823

AS Assignment

Owner name: DYNATRACE LLC, MASSACHUSETTS

Free format text: RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL RECORDED AT R/F 46923/0528;ASSIGNOR:JEFFERIES FINANCE LLC, COLLATERAL AGENT;REEL/FRAME:049966/0518

Effective date: 20190805

AS Assignment

Owner name: DYNATRACE, LLC, MASSACHUSETTS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 046923/0557;ASSIGNOR:JEFFERIES FINANCE LLC, AS COLLATERAL AGENT;REEL/FRAME:062056/0562

Effective date: 20221202