IP Library Granted Patent US 9,800,478
Granted Patent B2
US 9,800,478 · App. 15/194,398 · Granted Oct 24, 2017

Cross-layer troubleshooting of application delivery

Inventors: Mohit V. Lad (San Francisco, CA); Ricardo V. Oliveira (San Francisco, CA); Michael Meisel (San Francisco, CA); Ryan Braud (San Francisco, CA)
Assignee: ThousandEyes, Inc.
H04L43/045H04L12/4633H04L41/046H04L43/50H04L45/50H04L67/02
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,800,478
App. No.
15/194,398
Granted
Oct 24, 2017
Kind
B2
Abstract

Techniques for cross-layer troubleshooting of application delivery are disclosed. In some embodiments, cross-layer troubleshooting of application delivery includes collecting test results from a plurality of distributed agents for a plurality of application delivery layers; and generating a graphical visualization of an application delivery state based on the test results for the plurality of application delivery layers (e.g., different application delivery layers).

Claims (86)

1. A system, comprising:

a processor configured to:

collect test results from a plurality of distributed agents for a plurality of application delivery layers, wherein each of the plurality of distributed agents performs one or more active measurements for identifying an MultiProtocol Label Switching (MPLS) tunnel and identifying a type of the MPLS tunnel; and

determine whether a link is associated with an implicit MPLS tunnel, wherein the implicit MPLS tunnel is inferred by examining a returned IP Time To Live (TTL) in Internet Control Message Protocol (ICMP) Time Exceeded packets, and in the event that the link is associated with the implicit MPLS tunnel, generate a display output that includes inferred hop information for the link associated with the implicit MPLS tunnel; and

a memory coupled to the processor and configured to provide the processor with instructions.

2. The system recited in claim 1 , wherein the processor is further configured to:

determine whether the link is associated with an opaque MPLS tunnel, wherein a length of the implicit MPLS tunnel is inferred by examining a quoted Time To Live (TTL) in an MPLS stack, and in the event that the link is associated with the opaque MPLS tunnel, generate a display output that includes inferred hop information for the link associated with the opaque MPLS tunnel.

3. The system recited in claim 1 , wherein the processor is further configured to:

determine that the link is one of a plurality of links associated with the MPLS tunnel.

4. The system recited in claim 1 , wherein the processor is further configured to:

output a graphical visualization of an application delivery state based on the test results, wherein the output includes hop information for the link associated with the MPLS tunnel.

5. The system recited in claim 1 , wherein the processor is further configured to:

determine that the link is associated with the MPLS tunnel, wherein the MPLS tunnel is an explicit MPLS tunnel; and

generate a display output that includes label information for the link associated with the MPLS tunnel.

6. The system recited in claim 1 , wherein the processor is further configured to:

determine that a plurality of links are associated with the MPLS tunnel, wherein the MPLS tunnel is an explicit MPLS tunnel; and

generate a display output that includes label information for each of the plurality of links associated with the MPLS tunnel.

7. The system recited in claim 1 , wherein the processor is further configured to:

determine that the link is associated with the MPLS tunnel, wherein the MPLS tunnel is an opaque MPLS tunnel; and

generate a display output that includes inferred hop information for the link associated with the MPLS tunnel.

8. The system recited in claim 1 , wherein the processor is further configured to:

generate a graphical visualization of an application delivery state for the plurality of application delivery layers based on the test results for cross-layer troubleshooting of application delivery.

9. The system recited in claim 1 , wherein the type of the MPLS tunnel is selected from one of the following: an explicit MLS tunnel, an implicit MPLS tunnel, an opaque MPLS tunnel, and an invisible MPLS tunnel, and wherein the processor is further configured to:

generate a graphical visualization of an application delivery state for the plurality of application delivery layers based on the test results for cross-layer troubleshooting of application delivery, wherein the graphic visualization includes a link that is determined to be associated with an identified explicit MPLS tunnel, an identified implicit MPLS tunnel, an identified opaque MPLS tunnel, or an identified invisible MPLS tunnel.

10. A method, comprising:

collecting test results from a plurality of distributed agents for a plurality of application delivery layers using, wherein each of the plurality of distributed agents performs one or more active measurements for identifying an MultiProtocol Label Switching (MPLS) tunnel and identifying a type of the MPLS tunnel; and

determining whether a link is associated with an implicit MPLS tunnel, wherein the implicit MPLS tunnel is inferred by examining a returned IP Time To Live (TTL) in Internet Control Message Protocol (ICMP) Time Exceeded packets, and in the event that the link is associated with the implicit MPLS tunnel, generating a display output that includes inferred hop information for the link associated with the implicit MPLS tunnel.

11. The method of claim 10 , further comprising:

determining whether the link is associated with an opaque MPLS tunnel, wherein a length of the implicit MPLS tunnel is inferred by examining a quoted Time To Live (TTL) in an MPLS stack, and in the event that the link is associated with the opaque MPLS tunnel, generating a display output that includes inferred hop information for the link associated with the opaque MPLS tunnel.

12. The method of claim 10 , further comprising:

determining that the link is associated with the MPLS tunnel, wherein the MPLS tunnel is an explicit MPLS tunnel; and

generating a display output that includes label information for the link associated with the MPLS tunnel.

13. The method of claim 10 , further comprising:

determining that a plurality of links are associated with the MPLS tunnel, wherein the MPLS tunnel is an explicit MPLS tunnel; and

generating a display output that includes label information for each of the plurality of links associated with the MPLS tunnel.

14. The method of claim 10 , further comprising:

determining that the link is associated with the MPLS tunnel, wherein the MPLS tunnel is an opaque MPLS tunnel; and

generating a display output that includes inferred hop information for the link associated with the MPLS tunnel.

15. The method of claim 10 , further comprising:

generating a graphical visualization of an application delivery state for the plurality of application delivery layers based on the test results for cross-layer troubleshooting of application delivery.

16. A computer program product, the computer program product comprising a non-transitory tangible computer readable storage medium and comprising computer instructions for:

collecting test results from a plurality of distributed agents for a plurality of application delivery layers, wherein each of the plurality of distributed agents performs one or more active measurements for identifying an MultiProtocol Label Switching (MPLS) tunnel and identifying a type of the MPLS tunnel; and

determining whether a link is associated with an implicit MPLS tunnel, wherein the implicit MPLS tunnel is inferred by examining a returned IP Time To Live (TTL) in Internet Control Message Protocol (ICMP) Time Exceeded packets, and in the event that the link is associated with the implicit MPLS tunnel, generating a display output that includes inferred hop information for the link associated with the implicit MPLS tunnel.

17. The computer program product recited in claim 16 , further comprising computer instructions for:

determining whether the link is associated with an opaque MPLS tunnel, wherein a length of the implicit MPLS tunnel is inferred by examining a quoted Time To Live (TTL) in an MPLS stack, and in the event that the link is associated with the opaque MPLS tunnel, generating a display output that includes inferred hop information for the link associated with the opaque MPLS tunnel.

18. The computer program product recited in claim 16 , further comprising computer instructions for:

determining that the link is associated with the MPLS tunnel, wherein the MPLS tunnel is an explicit MPLS tunnel; and

generating a display output that includes label information for the link associated with the MPLS tunnel.

19. The computer program product recited in claim 16 , further comprising computer instructions for:

determining that a plurality of links are associated with the MPLS tunnel, wherein the MPLS tunnel is an explicit MPLS tunnel; and

generating a display output that includes label information for each of the plurality of links associated with the MPLS tunnel.

20. The computer program product recited in claim 16 , further comprising computer instructions for:

determining that the link is associated with the MPLS tunnel, wherein the MPLS tunnel is an opaque MPLS tunnel; and

generating a display output that includes inferred hop information for the link associated with the MPLS tunnel.

21. The computer program product recited in claim 16 , further comprising computer instructions for:

generating a graphical visualization of an application delivery state for the plurality of application delivery layers based on the test results for cross-layer troubleshooting of application delivery.

22. A system, comprising:

a processor configured to:

collect test results from a plurality of distributed agents for a plurality of application delivery layers, wherein each of the plurality of distributed agents executes a Path Maximum Transmission Unit (PMTU) discovery process to infer one or more links that show a decrease in Maximum Transmission Unit (MTU); and

determine whether an MTU value is below a threshold MTU value or if the PMTU discovery process failed based on the test results for cross-layer troubleshooting of application delivery; and

a memory coupled to the processor and configured to provide the processor with instructions.

23. The system recited in claim 22 , wherein the processor is further configured to:

generate a graphical visualization of an application delivery state for the plurality of application delivery layers based on the test results for cross-layer troubleshooting of application delivery, wherein the graphic visualization includes a visualization of routing paths annotated with MTU data.

24. A system, comprising:

a processor configured to:

collect test results from a plurality of distributed agents for a plurality of application delivery layers, wherein each of the plurality of distributed agents executes TCP-based network tests to measure a TCP Maximum Segment Size (MSS) for a TCP-based network; and

determine whether the measured TCP MSS for the TCP-based network is above a threshold MSS value for cross-layer troubleshooting of application delivery, wherein exceeding the threshold MSS value is associated with IP fragmentation; and

a memory coupled to the processor and configured to provide the processor with instructions.

25. The system recited in claim 24 , wherein the processor is further configured to:

generate a graphical visualization of an application delivery state for the plurality of application delivery layers based on the test results for cross-layer troubleshooting of application delivery, wherein the graphic visualization includes a visualization of routing paths annotated with the measured TCP MSS.

26. A method, comprising:

collecting test results from a plurality of distributed agents for a plurality of application delivery layers, wherein each of the plurality of distributed agents executes a Path Maximum Transmission Unit (PMTU) discovery process to infer one or more links that show a decrease in Maximum Transmission Unit (MTU);

determining whether an MTU value is below a threshold MTU value or if the PMTU discovery process failed based on the test results for cross-layer troubleshooting of application delivery; and

generating a graphical visualization of an application delivery state for the plurality of application delivery layers based on the test results for cross-layer troubleshooting of application delivery, wherein the graphic visualization includes a visualization of routing paths annotated with MTU data.

27. A computer program product, the computer program product comprising a non-transitory tangible computer readable storage medium and comprising computer instructions for:

collecting test results from a plurality of distributed agents for a plurality of application delivery layers, wherein each of the plurality of distributed agents executes a Path Maximum Transmission Unit (PMTU) discovery process to infer one or more links that show a decrease in Maximum Transmission Unit (MTU);

determining whether an MTU value is below a threshold MTU value or if the PMTU discovery process failed based on the test results for cross-layer troubleshooting of application delivery; and

generating a graphical visualization of an application delivery state for the plurality of application delivery layers based on the test results for cross-layer troubleshooting of application delivery, wherein the graphic visualization includes a visualization of routing paths annotated with MTU data.

28. A method, comprising:

collecting test results from a plurality of distributed agents for a plurality of application delivery layers, wherein each of the plurality of distributed agents executes TCP-based network tests to measure a TCP Maximum Segment Size (MSS) for a TCP-based network;

determining whether the measured TCP MSS for the TCP-based network is above a threshold MSS value for cross-layer troubleshooting of application delivery, wherein exceeding the threshold MSS value is associated with IP fragmentation; and

generating a graphical visualization of an application delivery state for the plurality of application delivery layers based on the test results for cross-layer troubleshooting of application delivery, wherein the graphic visualization includes a visualization of routing paths annotated with the measured TCP MSS.

29. A computer program product, the computer program product comprising a non-transitory tangible computer readable storage medium and comprising computer instructions for:

collecting test results from a plurality of distributed agents for a plurality of application delivery layers, wherein each of the plurality of distributed agents executes TCP-based network tests to measure a TCP Maximum Segment Size (MSS) for a TCP-based network;

determining whether the measured TCP MSS for the TCP-based network is above a threshold MSS value for cross-layer troubleshooting of application delivery, wherein exceeding the threshold MSS value is associated with IP fragmentation; and

generating a graphical visualization of an application delivery state for the plurality of application delivery layers based on the test results for cross-layer troubleshooting of application delivery, wherein the graphic visualization includes a visualization of routing paths annotated with the measured TCP MSS.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2021
From: THOUSANDEYES LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 056348/0993 →
CHANGE OF NAME Recorded Nov 18, 2020
From: THOUSANDEYES, INC.
To: THOUSANDEYES LLC
Reel/Frame 054476/0337 →
CONFIRMATORY LICENSE Recorded Jul 10, 2020
From: THOUSANDEYES, INC.
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 053185/0340 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2020
From: LAD, MOHIT V.; OLIVEIRA, RICARDO V.; MEISEL, MICHAEL; BRAUD, RYAN
To: THOUSAND EYES, INC.
Reel/Frame 052795/0327 →
CHANGE OF NAME Recorded May 31, 2020
From: THOUSAND EYES, INC.
To: THOUSANDEYES, INC.
Reel/Frame 052797/0840 →
Continuity (3)
Continuation 14210131 · Mar 13, 2014
Provisional Application 61793283 · Mar 15, 2013
Related Publication 20170005887A1 · Jan 5, 2017