Triggering flow analysis at intermediary devices

Information

  • Patent Grant
  • 7706278
  • Patent Number
    7,706,278
  • Date Filed
    Wednesday, January 24, 2007
    17 years ago
  • Date Issued
    Tuesday, April 27, 2010
    14 years ago
Abstract
In one embodiment, a router examines an incoming packet for a flow monitoring request. The router may examine every packet for the flow monitoring request, or preferably may only examine packets including a lifetime value indicating that the packet should be dropped and not forwarded or may only examine packets having a predetermined message format. When the flow monitoring request is included, the router performs detailed flow analysis or other monitoring according to the flow monitoring request.
Description
TECHNICAL FIELD

The present disclosure relates generally to the field of networking.


BACKGROUND

A connection established between two endpoints over a packet switched network can experience packet loss when an on-path intermediary device is overloaded or for many other reasons. When the packet loss rises to a certain threshold, the root cause of the unacceptable packet loss needs to be identified in order to reduce the packet loss back to acceptable levels. Generally, the root cause can be identified after monitoring results from each intermediary device are complied and analyzed.


Network Management Systems (NMSs) or other higher level devices generally control the triggering of monitoring by the intermediary devices. However, these NMSs are not always aware of packet loss observed by one of the calling endpoints. Accordingly, the packet loss or other problem observed by the calling endpoint is often not resolved at all, or not resolved until the NMS observes the packet loss some time after the observation by one of the calling endpoints. The disclosure that follows solves this and other problems.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 illustrates an example computer for triggering a router to analyze a call flow that extends through the router.



FIG. 2 illustrates an example method for using the computer illustrated in FIG. 1.



FIG. 3 illustrates an example method for using the router illustrated in FIG. 1





DESCRIPTION OF EXAMPLE EMBODIMENTS
Overview

In one embodiment, a router examines an incoming packet for a flow monitoring request. The router may examine every packet for the flow monitoring request, or preferably may only examine packets including a lifetime value indicating that the packet should be dropped and not forwarded or may only examine packets having a predetermined message format. When the flow monitoring request is included, the router performs detailed flow analysis or other monitoring according to the flow monitoring request.


Description

Several preferred examples of the present application will now be described with reference to the accompanying drawings. Various other examples of the invention are also possible and practical. This application may be exemplified in many different forms and should not be construed as being limited to the examples set forth herein.


The figures listed above illustrate preferred examples of the application and the operation of such examples. In the figures, the size of the boxes is not intended to represent the size of the various physical components. Where the same element appears in multiple figures, the same reference numeral is used to denote the element in all of the figures where it appears. When two elements operate differently, different reference numerals are used regardless of whether the two elements are the same class of network device.


Only those parts of the various units are shown and described which are necessary to convey an understanding of the examples to those skilled in the art. Those parts and elements not shown are conventional and known in the art.


Co-pending patent application Ser. No. 11/614,843, which is herein incorporated by reference in its entirety, describes a technique for an endpoint to traceroute a call using one or more Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs) (STUN) messages. Briefly, an endpoint sends STUN messages with monotonically increasing Time To Live (TTL) values to identify one or more intermediary devices such as routers that are located on the call path. The STUN messages elicit both error responses from the intermediary devices and a STUN response from the remote endpoint that can be used to identify the intermediary devices located on the call path.


An embodiment of the present application leverages this technique by inserting an additional attribute into these STUN messages. An on-path router examines incoming packets for this additional attribute whenever the TTL value for the incoming packet is decremented to zero. Packets having decremented TTL values greater than zero are preferably not examined for the requests, but other embodiments may examine packets for the request regardless of TTL values. Observation of the request included within the traceroute message triggers flow analysis or other monitoring at those intermediary devices according to the request.



FIG. 1 illustrates an example computer for triggering a router to analyze a call flow that extends through the router.


Referring to FIG. 1, a connection 3 for media exchange between computers A and a remote endpoint (not shown) is established using Interactive Connectivity Establishment (ICE) or a similar protocol. The connection 3 includes a path extending through the router 6. Typically, the path also extends through N other routers; however, for brevity these other routers are not shown. Also, the connection 3 may include more than one path.


The computer A is generally unaware of the path that the connection 3 takes through the network. To identify the path that the connection 3 takes through the network, as well as for diagnostic reasons, computer A traceroutes the path. In the present example, the computer A uses STUN to traceroute the call path and identify the router 6. When STUN is used to traceroute the call path, the traceroute may occur after ICE, or during ICE by leveraging one of the STUN messages sent during ICE. Other protocols may be used for the traceroute messages, such as the Real Time Protocol (RTP).


The traceroute process involves generating a plurality of messages having monotonically increasing lifetime values. An example of a message generated for the traceroute that uses STUN is shown. The generated message 10 includes both an IP packet 10A with a TTL field 10B and a STUN request 10C. The TTL field 10B includes the value one, which indicates that this generated message 10 will identify the router 6 that conducts the first hop on the call path. More messages similar to message 10 are generated so that messages having TTL values from one to at least N+1 are produced.


The flow analysis triggering software 4 on computer A formats the generated message 10 as well as the other generated messages (not shown) to include the monitoring request 11. In the present example, the request 11 is a Session Diagnostics STUN attribute included in the payload of the STUN request 10C.


The request 11 includes a flow identifier 11A that identifies the flow to be monitored. In the present example, the flow identifier 11A is a Globally Unique Call Identifier (GUCID). This and other fields or attributes included in the request 11 may be Type-Length-Value (TLV) formatted. Instead of or addition to the GUICID, the STUN username, which is a unique call identifier and already present in a normal ICE exchange, may be used to identify the flow.


The request 11 also includes a command field 11B that indicates attributes of the requested flow analysis such as the type of monitoring to be performed. For example, the command field 11B may request an analysis that includes counting packets in the call flow. In addition, the command field 11B may identify measurements to be conducted, such as inter-arrival jitter. The command field 11B may indicate that every packet in the identified call flow should be measured, or only a selected percentage of packets.


The request 11 also may include other monitoring attributes 11C. When a shortened flow analysis is requested that analyzes the call flow for only a portion of the duration of the call flow, these attributes 11C include a duration for the router 6 to conduct the monitoring. The attributes 11C may also include a flag requesting the remote endpoint to launch a traceroute. The attributes 11C may also indicate a Uniform Resource Locator (URL), which indicates a non-default location for posting the flow analysis results 13.


The generated messages including message 10 are transferred from computer A to the first hop router 6. The router 6 decrements the TTL values included in these messages just as the router 6 decrements TTL values of other incoming traffic. The router 6 forwards any messages having a decremented TTL value greater than zero along to a destination address. The message 10, however, has its TTL value decremented to zero, which indicates the lifetime has expired and elicits an Internet Control Message Protocol (ICMP) 12 error from router 6.


The router 6 is configured with the flowing monitoring initiation software 5 that is triggered to respond to an observation of a packet having an expired lifetime. The software 5 in router 6 observes the message 10 having the expired lifetime, and then causes the router 6 to further examine the message 10 for the monitoring request 11. In other words, rather than examining every incoming packet for the monitoring request 11 (which would require great quantities of hardware resources), the router 6 only examines messages having expired lifetimes. When the request 11 is formatted as a STUN message, the software 5 causes the router 6 to examine the message 10 by locating any session diagnostics attributes included in the STUN payload of the message 10.


When a different router (not shown) that does not include the software 5 receives one of the messages containing the monitoring request 11, the different router is not triggered to examine the message for the request 11. Accordingly, the different router without the software 5 simply forwards or drops the message, depending on the decremented lifetime value and without observing the request 11. As a result, the technique for triggering the monitoring by the router 6 does not compromise backwards compatibility for different routers that are not configured with the software 5.


Upon observing that the message 10 includes the monitoring request 11, the router 6 is triggered to begin monitoring the call flow according to the monitoring request 11. The router 6 may perform NetFlow monitoring on the call flow, or any other kind of monitoring. While it is possible that the router 6 may already be monitoring the flow according to some default monitoring, the router 6 still begins monitoring the call flow according to the monitoring request 11 that may be different from default monitoring performed by the router 6.


The router 6 generates flow analysis results 13 that may be stored on the router 6 for transfer to another network device such as a Network Management System (NMS), which may correlate the results 13 with results from other routers to identify the cause of the packet loss, delay, jitter, or other problem. When the monitoring request 11 includes the flow identifier 11A, the software 5 inserts the identifier 11A into the results 13 to assist in the correlation function.


In a similar fashion, other on-path routers having the software 5 are also triggered by a respective one of the generated messages to initiate flow analysis. Monitoring results from all the routers are then typically transferred to an NMS for aggregation and analysis. Using the aggregated results the NMS is able to identify the root cause of the packet loss or other problem.


Other embodiments include systems where calling endpoints transfer a monitoring request to a router in other types of communications besides those used for traceroutes. In these systems, the endpoints preferably include the monitoring request in a predetermined message format, which may be a message format corresponding to a communication that is not necessarily functionally equivalent to STUN. Then, software on the router is configured to do an initial check of every received packet to determine whether the received packet includes the predetermined message format. For packets identified as including the predetermined message format, the router does a more intensive check on the identified packets to determine whether they include the monitoring request. The intensive check is thus not required on packets not having the predetermined message format. The router then performs the monitoring according to the included monitoring request.


Still other embodiments include systems where calling endpoints transfer a monitoring request to a router in other types of communications besides those used for traceroutes and a predetermined message type is not included. The router in these systems can be configured to examine every incoming packet for the monitoring request. Like the other embodiments, such a system does not require NMS involvement to initiate or trigger the monitoring by the router.



FIG. 2 illustrates an example method for using the computer illustrated in FIG. 1.


In block 201, the computer A generates packets formatted to elicit one or more on-path intermediary devices to drop the packets and report an error before the packets reach a destination address included in the packets. These packets may comprise a portion of a traceroute, or merely may be configured to reach an expired lifetime before reaching a destination address. The computer A formats the packets to include a command field configured to trigger an intermediary device to perform monitoring on a call flow in block 202. In block 203, the computer A formats the packets to include an identifier specifying the call flow to be monitored. In block 204, the computer A transmits the formatted packets for triggering flow analysis on the intermediary devices.



FIG. 3 illustrates an example method for using the router illustrated in FIG. 1


In block 301, the router 6 decrements a lifetime value included on an incoming packet. The router 6 determines whether the lifetime value is decremented to zero (or whether the packet otherwise indicates that it should be dropped and not forwarded) in block 302. In block 303A, the router 6 forwards the packet according to a destination address when the packet lifetime has not expired.


In block 303B, when the decremented lifetime value is equal to zero, the router 6 examines the packet for a flow analysis request. If a flow analysis request is present, router 6 then monitors a call flow identified by the request according to a command field included in the request in block 304. In block 305, the router 6 sends an error message indicating that the packet was not forwarded.


The above examples describe a computer triggering monitoring on intermediary devices. In other examples, other endpoints such as a personal computer, an IP phone, a Personal Digital Assistant (PDA), a cell phone, a smart phone, a Publicly Switched Telephone Network (PSTN) gateway, etc., may trigger the remote monitoring on any network device.


Several preferred examples have been described above with reference to the accompanying drawings. Various other examples of the invention are also possible and practical. The system may be exemplified in many different forms and should not be construed as being limited to the examples set forth above.


The figures listed above illustrate preferred examples of the application and the operation of such examples. In the figures, the size of the boxes is not intended to represent the size of the various physical components. Where the same element appears in multiple figures, the same reference numeral is used to denote the element in all of the figures where it appears.


Only those parts of the various units are shown and described which are necessary to convey an understanding of the examples to those skilled in the art. Those parts and elements not shown are conventional and known in the art.


The system described above can use dedicated processor systems, micro controllers, programmable logic devices, or microprocessors that perform some or all of the operations. Some of the operations described above may be implemented in software and other operations may be implemented in hardware.


For the sake of convenience, the operations are described as various interconnected functional blocks or distinct software modules. This is not necessary, however, and there may be cases where these functional blocks or modules are equivalently aggregated into a single logic device, program or operation with unclear boundaries. In any event, the functional blocks and software modules or features of the flexible interface can be implemented by themselves, or in combination with other operations in either hardware or software.


Having described and illustrated the principles of the invention in a preferred embodiment thereof, it should be apparent that the invention may be modified in arrangement and detail without departing from such principles. I claim all modifications and variation coming within the spirit and scope of the following claims.

Claims
  • 1. An apparatus, comprising: processing circuitry; anda memory coupled to the processing circuitry comprising instructions executable by the processing circuitry, the processing circuitry operable when executing the instructions to:decrement lifetime values of incoming packets before performing a forwarding function;filter the packets according to whether they are expired or not by analyzing the decremented lifetime values;examine only the filtered packets having the exceeded lifetime for a monitoring request, wherein the processing circuitry does not conduct the monitoring request examination for the non-expired packets;if the monitoring request is located in an expired one the packets according to the examination, extract a call flow identifier from the monitoring request;compare the extracted call flow identifier to received call flows to identify any call flows corresponding to the extracted call flow identifier; andconduct an ongoing monitoring of any identified call flows, said ongoing call flow monitoring performed according to any monitoring parameters included in the monitoring request and, said ongoing call flow monitoring including at least one selected from the group including counting packets in the call flow and measuring inter-arrival jitter of the call flow packets.
  • 2. The apparatus of claim 1, wherein the examined packets correspond to a traceroute initiated by an endpoint for the call flow.
  • 3. The apparatus of claim 1, wherein the monitoring request is located in a payload of an address request message.
  • 4. The apparatus of claim 1, wherein the processing circuitry is further operable to insert the call flow identifier into locally generated monitoring results.
  • 5. The apparatus of claim 1, wherein the processing circuitry is further operable to send an error message usable by an endpoint to discover the presence of a router located on a call path.
  • 6. An apparatus, comprising: processing circuitry; anda memory coupled to the processing circuitry comprising instructions executable by the processing circuitry, the processing circuitry operable when executing the instructions to:perform an initial inspection of incoming packets to identify those ones of the incoming packets that are expired;perform a subsequent inspection only on the expired packets to locate any triggers included therein for initiating data streams analysis;analyze received data streams to identify any data streams corresponding to the triggers from the expired packets; andif any data streams are identified, initiate an analysis of the identified data streams according to the corresponding triggers from the expired packets;wherein the triggers are included in payloads of Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs) (STUN) requests.
  • 7. The apparatus of claim 6, wherein only those ones of the packets that have exceeded lifetimes and that are to be dropped without forwarding receive the subsequent inspection.
  • 8. The apparatus of claim 6 wherein the processing circuitry is configured to, if the corresponding trigger from the expired packet includes a Universal Resource Location (URL), store results of the data stream analysis in a non-default location.
  • 9. The apparatus of claim 6, wherein the data streams associated with the analysis are selected to correspond with identifiers included in the triggers.
  • 10. An apparatus, comprising: processing circuitry; anda memory coupled to the processing circuitry comprising instructions executable by the processing circuitry, the processing circuitry operable when executing the instructions to:perform an initial inspection of incoming packets to identify those ones of the incoming packets that are expired;perform a subsequent inspection only on the expired packets to locate any triggers included in payloads of Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs) (STUN) requests, the triggers for initiating data stream analysis;analyze received data streams to identify any data streams corresponding to the triggers from the expired packets; andif any data streams are identified, initiate an analysis of the identified data streams according to the corresponding trigger from the expired packet;wherein the data streams associated with the analysis are selected to correspond with an identifier included in the expired packets; andwherein the initiated analysis is different than any default packet flow analysis performed on the data streams before the initiated analysis begins.
  • 11. An apparatus, comprising: means for generating a plurality of trace packets formatted to elicit a plurality of on-path intermediary devices to drop the packets and report an error before the packets reach a destination address included in the packets;means for inserting Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs) (STUN) requests into the trace packets; andmeans for inserting a monitoring request into payloads of the STUN requests, the monitoring request formatted to trigger the on-path intermediary devices to initiate call flow monitoring, the monitoring request including an identifier to be used by the on-path intermediary devices to select amongst received call flows and perform the monitoring on only the selected flow or flows.
  • 12. The apparatus of claim 11, wherein the packets include a request for a remote endpoint to send back a STUN response.
  • 13. The apparatus of claim 11, further comprising means for formatting the monitoring request to specify an inter-arrival jitter analysis.
  • 14. The apparatus of claim 11, wherein the packets comprise a portion of a traceroute.
  • 15. The apparatus of claim 14, wherein the traceroute is a Real Time Protocol (RTP) traceroute.
  • 16. The apparatus of claim 11, wherein each of the packets are formatted to achieve a different amount of network hops prior to being dropped.
  • 17. The apparatus of claim 11, wherein each of the packets are formatted to initiate monitoring on a different respective one of the on-path intermediary devices that drops the packet.
  • 18. The apparatus of claim 6, wherein the data stream analysis includes at least one selected from the group including counting packets in the data streams and measuring inter-arrival jitter of the data stream packets.
  • 19. The apparatus of claim 18, wherein the data stream analysis is continuous for a duration specified in the identified packets.
  • 20. The apparatus of claim 10, wherein the data stream analysis includes at least one selected from the group including counting packets in the data streams and measuring inter-arrival jitter of the data stream packets.
  • 21. The apparatus of claim 11, wherein the call flow monitoring to be initiated by the on-path intermediary devices includes at least one selected from the group including counting packets in data streams and measuring inter-arrival jitter of the data stream packets.
US Referenced Citations (145)
Number Name Date Kind
4006320 Markl Feb 1977 A
4486877 Turner Dec 1984 A
4569042 Larson Feb 1986 A
4630268 Rodenbaugh Dec 1986 A
4907277 Callens et al. Mar 1990 A
5010544 Chang et al. Apr 1991 A
5014265 Hahne et al. May 1991 A
5121382 Yang et al. Jun 1992 A
5159592 Perkins Oct 1992 A
5243342 Kattemalalavadi et al. Sep 1993 A
5274643 Fisk Dec 1993 A
5343461 Barton et al. Aug 1994 A
5353283 Tsuchiya Oct 1994 A
5371852 Attanasio et al. Dec 1994 A
5394402 Ross Feb 1995 A
5416842 Aziz May 1995 A
5422876 Turudic Jun 1995 A
5426637 Derby et al. Jun 1995 A
5430715 Corbalis et al. Jul 1995 A
5450449 Kroon Sep 1995 A
5452294 Natarajan Sep 1995 A
5473599 Li et al. Dec 1995 A
5491692 Gunner et al. Feb 1996 A
5500851 Kozaki et al. Mar 1996 A
5500860 Perlman et al. Mar 1996 A
5519704 Farinacci et al. May 1996 A
5555256 Calamvokis Sep 1996 A
5561669 Lenny et al. Oct 1996 A
5563875 Hefel et al. Oct 1996 A
5594732 Bell et al. Jan 1997 A
5602918 Chen et al. Feb 1997 A
5604803 Aziz Feb 1997 A
5617417 Sathe et al. Apr 1997 A
5617421 Chin et al. Apr 1997 A
5621721 Vantuone Apr 1997 A
5623492 Teraslinna Apr 1997 A
5623605 Keshav et al. Apr 1997 A
5642515 Jones et al. Jun 1997 A
5650993 Lakshman et al. Jul 1997 A
5651002 Van Seters et al. Jul 1997 A
5659542 Bell et al. Aug 1997 A
5673265 Gupta et al. Sep 1997 A
5675741 Aggarwal et al. Oct 1997 A
5689566 Nguyen Nov 1997 A
5699478 Nahumi Dec 1997 A
5699485 Shoham Dec 1997 A
5715399 Bezos Feb 1998 A
5740171 Mazzola et al. Apr 1998 A
5740176 Gupta et al. Apr 1998 A
5742604 Edsall et al. Apr 1998 A
5764636 Edsall Jun 1998 A
5793763 Mayes et al. Aug 1998 A
5835494 Hughes et al. Nov 1998 A
5838994 Valizadeh Nov 1998 A
5850388 Anderson et al. Dec 1998 A
5867666 Harvey Feb 1999 A
5870397 Chauffour et al. Feb 1999 A
5884010 Chen et al. Mar 1999 A
5918019 Valencia Jun 1999 A
5931961 Ranganathan et al. Aug 1999 A
5943347 Shepard Aug 1999 A
6023455 Takahashi Feb 2000 A
6032194 Gai et al. Feb 2000 A
6061454 Malik et al. May 2000 A
6104695 Wesley et al. Aug 2000 A
6118796 Best et al. Sep 2000 A
6192036 Buhler et al. Feb 2001 B1
6230271 Wadlow et al. May 2001 B1
6275471 Bushmitch et al. Aug 2001 B1
6337861 Rosen Jan 2002 B1
6356545 Vargo et al. Mar 2002 B1
6389006 Bialik May 2002 B1
6445717 Gibson et al. Sep 2002 B1
6515967 Wei et al. Feb 2003 B1
6526044 Cookmeyer, II et al. Feb 2003 B1
6584438 Manjunath et al. Jun 2003 B1
6614781 Elliott et al. Sep 2003 B1
6665637 Bruhn Dec 2003 B2
6687225 Kawarai et al. Feb 2004 B1
6687360 Kung et al. Feb 2004 B2
6700874 Takihiro et al. Mar 2004 B1
6725191 Mecayten Apr 2004 B2
6731609 Hirni et al. May 2004 B1
6741600 Weiss et al. May 2004 B1
6757654 Westerlund et al. Jun 2004 B1
6775703 Burns et al. Aug 2004 B1
6785261 Schuster et al. Aug 2004 B1
6798739 Lee Sep 2004 B1
6804244 Anandakumar et al. Oct 2004 B1
6836804 Jagadeesan Dec 2004 B1
6839353 DeJager Jan 2005 B1
6944132 Aono et al. Sep 2005 B1
6947381 Wen et al. Sep 2005 B2
7013267 Huart et al. Mar 2006 B1
7039716 Jagadeesan May 2006 B1
7047190 Kapilow May 2006 B1
7068607 Partain et al. Jun 2006 B2
7072968 Mikami et al. Jul 2006 B2
7099820 Huart et al. Aug 2006 B1
7212517 Dzik May 2007 B2
7286467 Sylvain Oct 2007 B1
7310334 FitzGerald et al. Dec 2007 B1
7336620 Bennett Feb 2008 B2
7352705 Adhikari et al. Apr 2008 B1
20020003775 Nakano et al. Jan 2002 A1
20020067693 Kodialam et al. Jun 2002 A1
20020083186 Stringer Jun 2002 A1
20030053419 Kanazawa et al. Mar 2003 A1
20030072269 Teruhi et al. Apr 2003 A1
20030097438 Bearden et al. May 2003 A1
20030110276 Riddle Jun 2003 A1
20030163772 Jaworski Aug 2003 A1
20030165114 Kusama et al. Sep 2003 A1
20030208616 Laing et al. Nov 2003 A1
20030219022 Dillon et al. Nov 2003 A1
20030220971 Kressin Nov 2003 A1
20040008715 Barrack et al. Jan 2004 A1
20040052257 Abdo et al. Mar 2004 A1
20040073690 Hepworth et al. Apr 2004 A1
20040125965 Alberth et al. Jul 2004 A1
20040170163 Yik et al. Sep 2004 A1
20040193709 Selvaggi et al. Sep 2004 A1
20040218617 Sagfors Nov 2004 A1
20040223458 Gentle Nov 2004 A1
20040240431 Makowski et al. Dec 2004 A1
20040252646 Adhikari et al. Dec 2004 A1
20050036519 Balakrishnan et al. Feb 2005 A1
20050117576 McDysan et al. Jun 2005 A1
20050226172 Richardson Oct 2005 A1
20050243733 Crawford et al. Nov 2005 A1
20050246041 Kreifeldt et al. Nov 2005 A1
20050283639 Le Pennec et al. Dec 2005 A1
20060041431 Maes Feb 2006 A1
20060098586 Farrell et al. May 2006 A1
20060112400 Zhang et al. May 2006 A1
20060122835 Huart et al. Jun 2006 A1
20060215684 Capone Sep 2006 A1
20060268742 Chu et al. Nov 2006 A1
20060274760 Loher Dec 2006 A1
20070064616 Miranda et al. Mar 2007 A1
20070107034 Gotwals May 2007 A1
20070153774 Shay et al. Jul 2007 A1
20070171835 Gobara et al. Jul 2007 A1
20070212065 Shin et al. Sep 2007 A1
20070286165 Chu et al. Dec 2007 A1
Related Publications (1)
Number Date Country
20080175162 A1 Jul 2008 US