IP Library Granted Patent US 9,549,030
Granted Patent B2
US 9,549,030 · App. 13/365,484 · Granted Jan 17, 2017

Correlating input and output requests between client and server components in a multi-tier application

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,549,030
App. No.
13/365,484
Granted
Jan 17, 2017
Kind
B2
Abstract

The present invention relates to correlating requests between a client and a server to a particular transaction. In one embodiment, transactions in a system of clients and servers are monitored and traced. From this information, a context comprising sets or groupings of transaction call sequences are determined. For example, a sequence of method calls on a client process is traced to a socket carrying data for transmission of a request message to a server. In response to this request message, the server then executes a set of method calls that can be correlated to the request message and the socket. This set of actions is considered part of a causally related grouping, and thus, associated together. In one embodiment, HTTP requests from a client may be comprise a unique custom header that is readily identified and traced. For other protocols, a client socket is associated with a corresponding server socket or to data received over a socket receive call.

Claims (58)

1. A method of marking a transaction at a first node for correlation with a related transaction at a second node, said method comprising:

determining when a socket connection is opened by the first node for a communication destined to the second node;

assigning a connection ID to the socket connection;

emitting the connection ID responsive to a successful socket write action by the first node;

emitting, at offsets within the communication, respective markers for each of the offsets, wherein each offset corresponds to a number of bytes from a start of the socket connection; and

maintaining an index that is keyed on the markers and a timestamp indicating when each marker was created, wherein the markers correspond to checksum values.

2. The method of claim 1 , further comprising emitting an amount of data sent and an amount data received for each socket connection.

3. The method of claim 1 , wherein emitting the respective markers comprises emitting a checksum value calculated based on the offset.

4. The method of claim 1 , wherein emitting the checksum value comprises emitting a Jenkins checksum value based on the offset.

5. The method of claim 1 , wherein emitting the respective markers comprises emitting a checksum and the offset as a pair value.

6. A method for correlating communications between a first node and a second node for a transaction, said method comprising:

monitoring a plurality of method calls and a plurality of socket actions at the first and second nodes;

assigning a socket ID to each socket connection that is opened on the first and second nodes;

emitting, for each successful socket write action and each successful socket read action at the first and second nodes, the socket ID and respective marker corresponding to an offset within the connection, wherein each offset corresponds to a number of bytes from a start of the socket connection;

maintaining an index that is keyed on the markers and a timestamp indicating when each marker was created, wherein the markers correspond to checksum values; and

correlating the communications between the first and second nodes based on the socket ID and the respective markers.

7. The method of claim 6 , wherein emitting the respective markers corresponding to an offset within the connection comprises emitting a checksum value calculated based on the offset.

8. The method of claim 6 further comprising emitting, for each successful socket write action, a local address, a remote address, a number of bytes sent, and a checksum value.

9. The method of claim 6 , further comprising emitting, for each successful socket read action, a local address, a remote address, a number of bytes received, and a checksum value.

10. The method of claim 6 , further comprising recording each of the plurality of method calls and their corresponding emissions to a database.

11. The method of claim 6 , further comprising maintaining an index that is keyed on identifiers for the first and second nodes, an identifier for each process associated with the method calls, and an identifier for the socket connection.

12. The method of claim 6 , wherein correlating the communications between the first and second nodes based on the socket ID and the respective markers comprises a lookup for socket calls matching the socket ID and a corresponding range of markers.

13. The method of claim 6 , wherein correlating the communications between the first and second nodes based on the socket ID and the respective markers comprises a lookup for socket calls matching the socket ID and a corresponding range of checksum values calculated for offsets within the communications.

14. A method for correlating a transaction recorded at two or more nodes, comprising:

monitoring a plurality of method calls and a plurality of socket actions for transactions at each of the two or more nodes;

associating a socket with each socket connection that is opened;

for each successful socket connection, emitting the socket, a local address, and a remote address;

for each successful socket write action, emitting the socket, a current output stream offset, a number of bytes sent, and on selected fixed boundaries and at the end of a socket connection a checksum value, wherein each offset corresponds to a number of bytes from a start of the socket connection;

for each successful socket read action, emitting the socket, a current input stream offset, a number of bytes received, and on selected fixed boundaries and at the end of a socket connection, a checksum value;

associating each emission with at least one of the plurality of method calls;

recording information about each of the plurality of method calls and their corresponding emissions;

maintaining an index that is keyed on checksum values and a timestamp indicating when each checksum value was created; and

identifying a correlation between at least two of the plurality of method calls based on the recorded information.

15. The method of claim 14 , wherein identifying the correlation comprises determining a relation between at least two of the plurality of method calls based on a heuristic matching of the emitted checksums.

16. The method of claim 14 , wherein identifying the correlation comprises determining a relation between at least two of the plurality of method calls based on a heuristic matching of custom headers.

17. The method of claim 14 , further comprising displaying transactions related to correlated method calls as a single transaction to a user.

18. The method of claim 17 , wherein displaying transactions related to correlated method calls as a single transaction to a user comprises displaying the single transaction with method calls that span between the first and second nodes.

19. A first node configured to mark a transaction for correlation with a related transaction at a second node, said first node comprising:

a memory comprising executable program code; and

a processor configured by the executable program code to determine when a socket connection is opened by the client for a communication destined to the second node, assign a connection ID to the socket connection, emit the connection ID responsive to a successful socket write action by the first node, emit, at offsets within the communication, respective markers for each of the offsets, wherein each offset corresponds to a number of bytes from a start of the socket connection, and maintain an index that is keyed on the markers and a timestamp indicating when each marker was created, wherein the markers correspond to checksum values.

20. The first node of claim 19 , wherein the processor is configured to emit an amount of data sent and an amount data received for each socket connection.

21. The first node of claim 19 , wherein the processor is configured to emit a checksum value calculated based on the offset.

22. The first node of claim 19 , wherein the processor is configured to emit a Jenkins checksum value based on the offset.

23. The first node of claim 19 , wherein the processor is configured to emit a checksum and the offset as a pair value.

24. A system configured to correlate communications between a first node and a second node for a transaction of an application running over a network, said system comprising:

a communications interface coupled to the network and configured to receive trace information from at least the first and second nodes;

a processor;

a non-transitory computer-readable medium having computer-readable instructions executable by a computer such that, when executing said instructions, a computer will perform a computer-implemented method for correlating communications between a first node and a second node for a transaction of an application running over a network, the method comprising: monitoring a plurality of method calls and a plurality of socket actions for transactions at each of the two or more nodes,

associating a socket ID with each socket connection that is opened,

wherein for each successful socket connection, the socket ID, a local address, and a remote address has been emitted by the first and second nodes,

wherein for each successful socket write action, the socket ID, a current output stream offset, a number of bytes sent, and on selected fixed boundaries and at the end of a socket connection a checksum value has been emitted by the first and second nodes, wherein each offset corresponds to a number of bytes from a start of the socket connection, wherein for each successful socket read action, the socket ID, a current input stream offset, a number of bytes received, and on selected fixed boundaries and at the end of a socket connection, a checksum value, has been emitted by the first and second nodes,

associating each emission with at least one of the plurality of method calls, record information about each of the plurality of method calls and their corresponding emissions,

maintaining an index that is keyed on checksum values and a timestamp indicating when each checksum value was created, and

identifying a correlation between at least two of the plurality of method calls based on the recorded information.

25. The system of claim 24 , wherein the processor is configured to determine a relation between at least two of the plurality of method calls based on a heuristic matching of the emitted checksums.

26. The system of claim 24 , wherein the processor is configured to determine a relation between at least two of the plurality of method calls based on a heuristic matching of custom headers.

27. The system of claim 24 , wherein the processor is configured to provide information for displaying transactions related to correlated method calls as a single transaction to a user.

28. The system of claim 27 , wherein the processor is configured to provide information for displaying the single transaction with method calls that span between the first and second nodes.

Assignments (21)
RELEASE OF SECURITY INTEREST Recorded Aug 11, 2023
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC; RIVERBED HOLDINGS, INC.
Reel/Frame 064673/0739 →
CHANGE OF NAME Recorded Feb 10, 2022
From: RIVERBED TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY LLC
Reel/Frame 059009/0906 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0169 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
SECURITY INTEREST Recorded Dec 10, 2021
From: RIVERBED TECHNOLOGY LLC (FORMERLY RIVERBED TECHNOLOGY, INC.); ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
Reel/Frame 058486/0216 →
PATENT SECURITY AGREEMENT Recorded Oct 27, 2021
From: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 057943/0386 →
PATENT SECURITY AGREEMENT SUPPLEMENT - FIRST LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 057810/0502 →
PATENT SECURITY AGREEMENT SUPPLEMENT - SECOND LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 057810/0559 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORED AT REEL 056397, FRAME 0750 Recorded Oct 13, 2021
From: MACQUARIE CAPITAL FUNDING LLC
To: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 057983/0356 →
SECURITY INTEREST Recorded May 26, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MACQUARIE CAPITAL FUNDING LLC
Reel/Frame 056397/0750 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2020
From: RIVERBED TECHNOLOGY, INC.
To: ATERNITY LLC
Reel/Frame 054778/0540 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY NAME PREVIOUSLY RECORDED ON REEL 035521 FRAME 0069. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST IN PATENTS. Recorded Jun 2, 2015
From: JPMORGAN CHASE BANK, N.A.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035807/0680 →
SECURITY INTEREST Recorded May 1, 2015
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 035561/0363 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Apr 28, 2015
From: BARCLAYS BANK PLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035521/0069 →
PATENT SECURITY AGREEMENT Recorded Dec 27, 2013
From: RIVERBED TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032421/0162 →
RELEASE OF PATENT SECURITY INTEREST Recorded Dec 26, 2013
From: MORGAN STANLEY & CO. LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 032113/0425 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2013
From: OPNET TECHNOLOGIES LLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 030462/0148 →
CHANGE OF NAME Recorded May 14, 2013
From: OPNET TECHNOLOGIES, INC.
To: OPNET TECHNOLOGIES LLC
Reel/Frame 030411/0273 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2013
From: MALLOY, PATRICK; CROSBY, PETER ANTHONY; MEAGHER, ROBERT
To: OPNET TECHNOLOGIES, INC.
Reel/Frame 030131/0839 →
SECURITY AGREEMENT Recorded Dec 20, 2012
From: RIVERBED TECHNOLOGY, INC.; OPNET TECHNOLOGIES, INC.
To: MORGAN STANLEY & CO. LLC
Reel/Frame 029646/0060 →