Disclosed herein are embodiments of methods and systems to monitor one-way travel time (also known as one-way delay or one-way latency) of real-time packet transport using RTCP. Embodiments are described with reference to
The one-way packet travel times are determined for real-time packet communications between a first communication system 20 and a second communication system 22 via a network 24. The network 24, in general, may exhibit asymmetric latencies such that a one-way travel time for a packet traveling from the first communication system 20 to the second communication system 22 differs from a one-way travel time for a packet traveling from the second communication system 22 to the first communication system 20. The network 24 may comprise an IP network, for example. Communications between the first communication system 20 and the second communication system 22 may be in accordance with RTP and RTCP.
As indicated by block 30, the method comprises the first communication system 20 generating and outputting a first RTCP packet 32 that is to be sent to the second communication system 22. The first RTCP packet 32 comprises a first Network Time Protocol (NTP) timestamp parameter 34 that indicates a time that the first RTCP packet 32 is generated. The first NTP timestamp parameter 34 is a 64-bit value generated according to a first clock 36 of the first communication system 20.
As indicated by block 40, the method comprises transporting the first RTCP packet 32 from the first communication system 20 to the second communication system 22 via the network 24. A first one-way travel time is exhibited for transporting the first RTCP packet 32 from the first communication system 20 to the second communication system 22 via the network 24.
As indicated by block 42, the method comprises the second communication system 22 receiving the first RTCP packet 32. A receiver of the second communication system 22 receives the first RTCP packet 32 via the network 24.
As indicated by block 44, the second communication system 22 can measure the first one-way travel time based on the first RTCP packet 32. The second communication system 22 uses a second clock 46 to determine a time TR1 at which the second communication system 22 receives the first RTCP packet 32. Preferably, the second clock 46 is either synchronized or substantially synchronized with the first clock 36. The second communication system 22 extracts the first NTP timestamp parameter 34 from the first RTCP packet and determines a time value TS1 equal to a middle 32 bits of the 64-bit NTP timestamp parameter 34. The middle 32 bits of a value V represented in a 64-bit unsigned integer form may be determined by └V/65536┘ modulo 4294967296. The second communication system 22 determines a value L12 equal to TR1−TS1 to provide a measurement of the first one-way travel time. A processor of the second communication system 22 may be used to determine the first one-way travel time based on the first RTCP packet 32.
As indicated by block 50, the method comprises the second communication system 22 generating and outputting a second RTCP packet 52 that is to be sent to the first communication system 20. The second RTCP packet 52 is generated at least partially based on the first RTCP packet 32. The second RTCP packet 52 comprises a second NTP timestamp parameter 54 that indicates a time that the second RTCP packet 52 is generated. The second NTP timestamp parameter 54 is a 64-bit value generated according to the second clock 46 of the second communication system 22. The second RTCP packet 52 further comprises a Last Sender Report (LSR) value 56 that is equal to the TS1 value, i.e. the middle 32-bits of the first NTP timestamp value 34. The second RTCP packet 52 further comprises a Delay since LSR (DLSR) value 60. The DLSR value 60, which is the delay between receiving the first RTCP packet 32 and generating the second RTCP packet 52, is generated according to the second clock 46.
As indicated by block 62, the method comprises transporting the second RTCP packet 52 from the second communication system 22 to the first communication system 20 via the network 24. A second one-way travel time, which may differ from the first one-way travel time, is exhibited for transporting the second RTCP packet 52 from the second communication system 22 to the first communication system 20 via the network 24.
As indicated by block 64, the method comprises receiving the second RTCP packet 52 outputted by the second communication system 22. The second RTCP packet 52 is received by a receiver of the first communication system 20 and/or by a receiver of a network performance monitor 66. The network performance monitor 66 may be associated with a third-party that differs from a first party associated with the first communication system 20 and a second party associated with the second communication system 22. The network performance monitor 66 may receive the second RTCP packet 52 at an intermediate node of the network 24, the intermediate node being in a communication path between the second communication system 22 and the first communication system 20. Alternatively, the network performance monitor 66 may receive the second RTCP packet 52, as a copy or an abstract from the second communication system 22, at a node that is not in the communication path between the second communication system 22 and the first communication system 20.
A processor of the first communication system 20 and/or a processor of the network performance monitor 66 can use the second RTCP packet 52 to determine a measure of the first one-way delay time as follows. As indicated by block 70, the method comprises extracting the second NTP timestamp value 54 from the second RTCP packet 52, and determining a time value, TS2, equal to or otherwise based on a middle 32 bits of the second NTP timestamp value 54. As indicated by block 72, the method comprises extracting the LSR value 56 from the second RTCP packet 52. As indicated by block 74, the method comprises extracting the DLSR value 60 from the second RTCP packet 52. As indicated by block 76, the method comprises determining a value L12=TS2−LSR−DLSR to measure the one-way packet travel time from the first communication system 20 to the second communication system 22.
The one-way packet travel time value can be stored, processed, outputted (e.g. displayed, printed, or communicated to another device) or any combination thereof for use in monitoring operation of the network 24. Based on the one-way packet travel time, the network performance monitor 66 or another node can tune the network 24 to improve its performance in transporting packets. Further, the network performance monitor 66 can use the one-way packet travel time to predict and/or correct undesirable conditions in the network 24.
Thus, a measure of one-way packet travel time of a packet sent by the first party can be determined by either the first party, the second party, or a third party to which the RTCP from the second party is made available. The first party and the third party use the same equation to measure the first one-way packet travel time, but the second party uses a different equation to measure the first one-way packet travel time. The accuracy of the value L12 to the actual one-way packet travel time is based on how well the first clock 36 and the second clock 46 are synchronized. The one-way packet travel time can be determined without injecting testing traffic, imposing additional function to transient nodes, or assuming a symmetrical roundtrip delay.
Those having ordinary skill will recognize that the aforementioned acts can be modified to determine the second one-way packet travel time from the second communication system 22 to the first communication system 20.
Referring to
In a networked deployment, the computer system may operate in the capacity of a server or as a client user computer in a server-client user network environment, or as a peer computer system in a peer-to-peer (or distributed) network environment. The computer system 300 can also be implemented as or incorporated into various devices, such as a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile device, a palmtop computer, a laptop computer, a desktop computer, a communications device, a wireless telephone, a land-line telephone, a control system, a camera, a scanner, a facsimile machine, a printer, a pager, a personal trusted device, a web appliance, a network router, switch or bridge, or any other machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. In a particular embodiment, the computer system 300 can be implemented using electronic devices that provide voice, video or data communication. Further, while a single computer system 300 is illustrated, the term “system” shall also be taken to include any collection of systems or sub-systems that individually or jointly execute a set, or multiple sets, of instructions to perform one or more computer functions.
As illustrated in
In a particular embodiment, as depicted in
In an alternative embodiment, dedicated hardware implementations, such as application specific integrated circuits, programmable logic arrays and other hardware devices, can be constructed to implement one or more of the methods described herein. Applications that may include the apparatus and systems of various embodiments can broadly include a variety of electronic and computer systems. One or more embodiments described herein may implement functions using two or more specific interconnected hardware modules or devices with related control and data signals that can be communicated between and through the modules, or as portions of an application-specific integrated circuit. Accordingly, the present system encompasses software, firmware, and hardware implementations.
In accordance with various embodiments of the present disclosure, the methods described herein may be implemented by software programs executable by a computer system. Further, in an exemplary, non-limited embodiment, implementations can include distributed processing, component/object distributed processing, and parallel processing. Alternatively, virtual computer system processing can be constructed to implement one or more of the methods or functionality as described herein.
The present disclosure contemplates a computer-readable medium that includes instructions 324 or receives and executes instructions 324 responsive to a propagated signal, so that a device connected to a network 326 can communicate voice, video or data over the network 326. Further, the instructions 324 may be transmitted or received over the network 326 via the network interface device 320.
While the computer-readable medium is shown to be a single medium, the term “computer-readable medium” includes a single medium or multiple media, such as a centralized or distributed database, and/or associated caches and servers that store one or more sets of instructions. The term “computer-readable medium” shall also include any medium that is capable of storing, encoding or carrying a set of instructions for execution by a processor or that cause a computer system to perform any one or more of the methods or operations disclosed herein.
In a particular non-limiting, exemplary embodiment, the computer-readable medium can include a solid-state memory such as a memory card or other package that houses one or more non-volatile read-only memories. Further, the computer-readable medium can be a random access memory or other volatile re-writable memory. Additionally, the computer-readable medium can include a magneto-optical or optical medium, such as a disk or tapes or other storage device to capture carrier wave signals such as a signal communicated over a transmission medium. A digital file attachment to an e-mail or other self-contained information archive or set of archives may be considered a distribution medium that is equivalent to a tangible storage medium. Accordingly, the disclosure is considered to include any one or more of a computer-readable medium or a distribution medium and other equivalents and successor media, in which data or instructions may be stored.
Although the present specification describes components and functions that may be implemented in particular embodiments with reference to particular standards and protocols, the invention is not limited to such standards and protocols. For example, standards for Internet and other packet switched network transmission (e.g., TCP/IP, UDP/IP, HTML, HTTP) represent examples of the state of the art. Such standards are periodically superseded by faster or more efficient equivalents having essentially the same functions. Accordingly, replacement standards and protocols having the same or similar functions as those disclosed herein are considered equivalents thereof.
The illustrations of the embodiments described herein are intended to provide a general understanding of the structure of the various embodiments. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatus and systems that utilize the structures or methods described herein. Many other embodiments may be apparent to those of skill in the art upon reviewing the disclosure. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. Additionally, the illustrations are merely representational and may not be drawn to scale. Certain proportions within the illustrations may be exaggerated, while other proportions may be minimized. Accordingly, the disclosure and the figures are to be regarded as illustrative rather than restrictive.
One or more embodiments of the disclosure may be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any particular invention or inventive concept. Moreover, although specific embodiments have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the description.
The Abstract of the Disclosure is provided to comply with 37 C.F.R. § 1.72(b) and is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, various features may be grouped together or described in a single embodiment for the purpose of streamlining the disclosure. This disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter may be directed to less than all of the features of any of the disclosed embodiments. Thus, the following claims are incorporated into the Detailed Description, with each claim standing on its own as defining separately claimed subject matter.
The above disclosed subject matter is to be considered illustrative, and not restrictive, and the appended claims are intended to cover all such modifications, enhancements, and other embodiments which fall within the true spirit and scope of the present invention. Thus, to the maximum extent allowed by law, the scope of the present invention is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited by the foregoing detailed description.