The present invention relates generally to network media streams and particularly to monitoring network media streams.
Real Time Transfer Protocol (“RTP”) is the standard protocol defining the real-time transmission of media streams (e.g., voice) over data networks, such as in Voice Over IP. A companion protocol to RTP is the Real Time Control Protocol or RTCP. Referring to
RTCP is specifically designed to provide such information to the network monitor 112 via an IP multicast architecture. In IP multicast, a single packet is transmitted to a group of recipients by first being sent to a multicast address and then being distributed by the network to multiple addresses associated with the multicast address. The group of recipients includes not only the other (receiving) party in the session, namely A or B as appropriate, but also the monitor. When IP multicast is used for RTCP information, it also should be used for RTP information. Timing calculations for RTP packets are made based on the behavior of RTCP packets, and such timing calculations are only an accurate predictor of RTP packet transmission characteristics if both RTP and RTCP packets are transmitted by IP multicast techniques. IP multicast is generally disfavored because multicast is complicated which causes administration complications and difficulties.
A common architecture for transmitting media streams between two session participants is known as unicast. In unicast, the packets are transmitted to only one and not multiple destinations. It is more difficult for the monitor to collect and analyze RTCP packets as the packets are transmitted only to the other session participant and not to the monitor.
To enable the monitor to obtain RTCP packets, a dual unicast architecture has been developed. In dual unicast, one session participant (A) transmits both RTP and RTCP packets to the other session participant (B) and RTCP packets to the monitor. Dual unicast, however, exposes design limitations in the RTCP protocol itself. Although endpoint session ids are unique to a particular (first) session (such as between A and B), an endpoint in a concurrent (second) session (such as between C and D) can have the same session id or synchronization source id (“SSRC”) as an endpoint (A or B) in the other (first) session. When duplicate endpoint session ids are concurrently in use, the monitor can have substantial difficulty determining which RTCP packets correspond to which session, potentially causing inaccurate performance analysis.
By way of illustration, in the example above assume that A sends an RTCP packet addressed to B and an RTCP packet addressed to the monitor. The RTCP packet addressed to the monitor includes A's transport address, A's SSRC, and B's SSRC but does not include the transport address of B. Likewise, C sends an RTCP packet addressed to D and an RTCP packet addressed to the monitor. The RTCP packet addressed to the monitor includes C's transport address, C's SSRC, and D's SSRC but does not include the transport address of D. If B and D have the same SSRC, the monitor is unable to definitively determine that a selected RTCP packet sent to either B or D corresponds to the A-B session or the C-D session.
These and other needs are addressed by the various embodiments and configurations of the present invention. The present invention generally matches or associates session packets communicated in a session between two or more endpoints or participants with the identities of the participants, e.g., session ids (e.g., SSRC) and/or network addresses (e.g., transport addresses), creating new sessions if appropriate. Each session participant is typically identified by network address (e.g., UDP port and Internet Protocol address) and/or session (e.g., SSRC).
In one embodiment, a method for identifying a corresponding session for a packet is provided that includes the steps of:
(a) receiving at least a first packet communicated between first and second endpoints (or participants) to a first session, the first packet comprising at least one of a network address of the first endpoint (e.g., port or UDP), a session id of the first endpoint (e.g. SSRC), and a session id of the second endpoint;
(b) comparing the at least one of a network address of the first endpoint, a session id of the first endpoint, and a session id of the second endpoint in the packet with a listing of at least one of network addresses and session ids contained in previously received packets; and
(c) when the at least one of a network address of the first endpoint, a session id of the first endpoint, and a session id of the second endpoint in the packet matches an entry in the listing, determining a network address of the second endpoint in the first session (which is typically unknown).
The listing can be a single table or a plurality of tables. In one configuration, the listing is in the form of or includes an active session table, which includes the network addresses of all of the participants of a selected session and optionally the session ids of all of the selected session participants. In one configuration, the listing is in the form of or includes an orphan session table, which includes, in each entry, the network address of one (but not the other) session participant and optionally the session ids of one or both participants. The active and orphan session tables are typically disjoint.
In another embodiment, a method for monitoring a multi-party session is provided that includes the steps of:
(a) receiving, at a first endpoint, at least a first packet communicated between the first endpoint and a second endpoint to a first session, the first packet comprising a network address of the first endpoint and a network address of the second endpoint; and
(b) transmitting at least a second packet to a session monitor, the second packet including the respective first and second network addresses of the first and second endpoints. In one configuration, the first packet is effectively retransmitted or reflected by the receiving first endpoint to the session monitor. This is particularly useful to third-party endpoints that do not implement dual-unicast.
In yet another embodiment, a session (e.g., RTP or RTCP) packet for transmission on a network, comprises:
In other embodiments, the systems and hardware are provided to implement the above embodiments.
The various embodiments of the present invention can have numerous advantages. For example, the window of opportunity for confusing concurrent sessions and attributing data in RTCP packets to the wrong session can be much smaller than with current architectures. The window of opportunity for possible confusion using the above algorithm(s) exists only when two different endpoints join different sessions at the same time and with the same SSRCs. This window of opportunity or startup interval closes once either of the endpoints (or their peers) has sent an RTCP packet with a reception block corresponding to either endpoint. Once the reception block is exchanged, the SSRCs of both parties to the session are known to the monitor. Before such an exchange, the monitor typically has only the SSRC and network address of one party to the session. The SSRC and network address of the other party is unknown. The startup interval is typically fairly short, e.g., typically on the order of 5 seconds or less. Even this potential period of confusion can be eliminated by choosing an SSRC for each endpoint that is globally unique. The use of the active session table and network address to define the session (rather than only pairings of SSRCs) can, after the startup interval, at least substantially eliminate misinterpretation of RTCP packets and incorrect analysis of performance data. The accuracy of the algorithm(s) in matching RTCP packets with the corresponding session results in more accurate statistical analysis of the communication link in the network.
The above-described embodiments and configurations are neither complete nor exhaustive. As will be appreciated, other embodiments of the invention are possible utilizing, alone or in combination, one or more of the features set forth above or described in detail below.
The monitor of the present invention, in one embodiment, includes data structures and applications to track multiple concurrent sessions. Referring to
The orphan table 304 typically includes, for each known endpoint, transport address of a first endpoint in a selected session, SSRC of the first endpoint, optionally SSRC of a second endpoint in the selected session, and associated data structures in the RTCP packet, such as jitter, packet loss, and round-trip time, related to the selected session. The network address of the second endpoint is unknown. The SSRC of the second (unknown) endpoint is typically contained in a reception report of the RTCP packet. The SSRC of the second endpoint is generally unavailable in the first RTCP packet received by the monitor from an endpoint in a session. The SSRC of the second endpoint is commonly generated only after one session participant receives an initial packet from the other session packet (or after packets have been exchanged by the session participants).
The active session table 308 typically includes, for each known or matched session, transport address of a first endpoint in a selected session, optionally SSRC of the first endpoint, network address of a second endpoint in the selected session, optionally SSRC of the second endpoint, and associated data structures in the RTCP packet, such as jitter, packet loss, and round-trip time, associated with the selected session. As will be appreciated, the entry in the orphan table in which the network address of the first endpoint is known is moved to the active session table when the monitor is able to identify the network address of the second (unknown) endpoint. As discussed below, this is typically determined by matching information in a newly received RTCP packet with one or more entries in the orphan table.
The operations of the matching algorithm(s) in the monitor 300 will now be discussed with reference to
In step 204, the matcher 316 first determines whether the APP field includes the destination transport address. If the APP field contains the destination transport address, the matcher 316 in step 208 updates the orphan and active tables. The orphan table can contain an entry corresponding to a first session participant where the first participant is not configured to place the transport address of the other (second) party in the APP field. In other configurations, however, the first packet received is from a party that is configured to include the destination transport address of the other session participant in the APP field and no entry will be made in the orphan table as the packet itself contains the transport addresses of both session participants. In any event, the matcher 316 removes the entry, if any, from the orphan table and, if necessary, creates a new entry in the active session table for the session. If an entry is already in the active session table, the entry is updated in step 208 by updating the associated data fields with the performance information included in the packet. The monitor 300 then returns to step 300 to await the next RTCP packet.
If the APP field does not include a transport address, the monitor 300 next proceeds to step 212 where the matcher 316 determines whether the source identified in the packet corresponds to an endpoint in the active session table. Matcher 316 makes this determination by matching on transport address or UDP and endpoint SSRC pair.
If the matcher 316 receives a hit (or match), the matcher 316, in step 216, updates the fields in the active session table and returns to step 200. As noted, each entry in the active session table includes at least endpoint pairs (identified by transport address, UDP and/or endpoint SSRC's).
If the matcher 316 receives a no hit (or no match), the matcher 316, in step 220, determines if the source or endpoint in the packet has a matching entry in the orphan table. This is typically determined by matching on transport address or UDP and endpoint SSRC pair.
If the matcher 316 receives a hit, the monitor in step 224 updates the entry for the orphan session. This is typically done by updating the other party's SSRC (if available) and updating the associated data in the packet. As noted, each entry in the orphan session table includes at least UDP or transport address of an endpoint, an endpoint SSRC, and optionally reception report SSRC.
If the matcher 316 receives a no hit, the matcher 316 in step 228 creates an entry (if necessary) in the orphan session table 304.
After both steps 224 and 228, the monitor 300 next determines in step 232 whether a pair of entries corresponding to a pair of orphans have matching endpoint SSRC and reception report SSRC's. If no match is found, the monitor proceeds to step 200 to await the next packet. If a match is found, the monitor in step removes the matched end-point entries from the orphan table and creates one entry in the active session table with the data in the two entries in corresponding fields. The monitor then returns to step 200 to await the next packet.
A number of variations and modifications of the invention can be used. It would be possible to provide for some features of the invention without providing others. For example in one alternative embodiment, the algorithm is used for protocols besides RTP and/or RTCP. In another alternative embodiment, steps 200, 204, and 208 are used alone to match session endpoints with RTCP packets. This embodiment is useful where both endpoints to a session input into the APP field the transport address of the other party to the session. In another embodiment, steps 212, 216, 220, 224, 228, 232, and 236 are used independently to match session endpoints with RTCP packets. This embodiment is useful where neither endpoint to a session inputs into the APP field the transport address of the other party. In yet another embodiment, the algorithm(s) is useful for other network topologies. For example, the algorithm(s) can be used with a unicast architecture where a packet redirector or copier such as a sniffer, probe, or router is positioned between the two parties to the session to intercept RTCP packets and either send a copy of the packet or the packet itself to the monitor. In yet another embodiment, the orphan and active session tables can be combined into one table, with a flag or other indicator being used to indicate when an entry has been completed (i.e., both endpoints to the session have been identified by transport address).
The present invention, in various embodiments, includes components, methods, processes, systems and/or apparatus substantially as depicted and described herein, including various embodiments, subcombinations, and subsets thereof. Those of skill in the art will understand how to make and use the present invention after understanding the present disclosure. The present invention, in various embodiments, includes providing devices and processes in the absence of items not depicted and/or described herein or in various embodiments hereof, including in the absence of such items as may have been used in previous devices or processes, e.g. for improving performance, achieving ease and\or reducing cost of implementation.
The foregoing discussion of the invention has been presented for purposes of illustration and description. The foregoing is not intended to limit the invention to the form or forms disclosed herein. Although the description of the invention has included description of one or more embodiments and certain variations and modifications, other variations and modifications are within the scope of the invention, e.g. as may be within the skill and knowledge of those in the art, after understanding the present disclosure. It is intended to obtain rights which include alternative embodiments to the extent permitted, including alternate, interchangeable and/or equivalent structures, functions, ranges or steps to those claimed, whether or not such alternate, interchangeable and/or equivalent structures, functions, ranges or steps are disclosed herein, and without intending to publicly dedicate any patentable subject matter.
Number | Name | Date | Kind |
---|---|---|---|
4791660 | Oye et al. | Dec 1988 | A |
5067127 | Ochiai | Nov 1991 | A |
5206903 | Kohler et al. | Apr 1993 | A |
5506872 | Mohler | Apr 1996 | A |
5594740 | LaDue | Jan 1997 | A |
5828747 | Fisher et al. | Oct 1998 | A |
5905793 | Flockhart et al. | May 1999 | A |
5933425 | Iwata | Aug 1999 | A |
5946618 | Agre et al. | Aug 1999 | A |
5953312 | Crawley et al. | Sep 1999 | A |
5961572 | Craport et al. | Oct 1999 | A |
5982873 | Flockhart et al. | Nov 1999 | A |
6038214 | Shionozaki | Mar 2000 | A |
6067300 | Baumert et al. | May 2000 | A |
6073013 | Agre et al. | Jun 2000 | A |
6088732 | Smith et al. | Jul 2000 | A |
6122665 | Bar et al. | Sep 2000 | A |
6163607 | Bogart et al. | Dec 2000 | A |
6173053 | Bogart et al. | Jan 2001 | B1 |
6192122 | Flockhart et al. | Feb 2001 | B1 |
6256300 | Ahmed et al. | Jul 2001 | B1 |
6381639 | Thebaut et al. | Apr 2002 | B1 |
6463470 | Mohaban et al. | Oct 2002 | B1 |
6463474 | Fuh et al. | Oct 2002 | B1 |
6502131 | Vald et al. | Dec 2002 | B1 |
6529475 | Wan et al. | Mar 2003 | B1 |
6529499 | Doshi et al. | Mar 2003 | B1 |
6532241 | Ferguson et al. | Mar 2003 | B1 |
6578077 | Rakoshitz et al. | Jun 2003 | B1 |
6601101 | Lee et al. | Jul 2003 | B1 |
6754710 | McAlear | Jun 2004 | B1 |
6760312 | Hitzeman | Jul 2004 | B1 |
6765905 | Gross et al. | Jul 2004 | B2 |
6778534 | Tal et al. | Aug 2004 | B1 |
6798751 | Voit et al. | Sep 2004 | B1 |
6857020 | Chaar et al. | Feb 2005 | B1 |
6954435 | Billhartz et al. | Oct 2005 | B2 |
6973033 | Chiu et al. | Dec 2005 | B1 |
6988133 | Zavalkovsky et al. | Jan 2006 | B1 |
20010037406 | Philbrick et al. | Nov 2001 | A1 |
20010039210 | ST-Denis | Nov 2001 | A1 |
20020073232 | Hong et al. | Jun 2002 | A1 |
20020091844 | Craft et al. | Jul 2002 | A1 |
20020105911 | Pruthi et al. | Aug 2002 | A1 |
20020176404 | Girard | Nov 2002 | A1 |
20030016653 | Davis | Jan 2003 | A1 |
Number | Date | Country |
---|---|---|
WO 9114278 | Sep 1991 | WO |
WO 9846035 | Oct 1998 | WO |
WO 9951038 | Oct 1999 | WO |
WO 0041090 | Jul 2000 | WO |
WO 0126393 | Apr 2001 | WO |
WO 0175705 | Oct 2001 | WO |
WO 0200316 | Jan 2002 | WO |
Number | Date | Country | |
---|---|---|---|
20030120789 A1 | Jun 2003 | US |