To detect the presence of at least one other terminal in a data session (e.g., an rtp session), terminal a generates a request to solicit a response from each terminal, forms an app packet in rtcp for the request, encapsulates the app packet in at least one IP packet, and sends the IP packet(s) to the other terminal(s). terminal a then monitors for a response from each terminal to which the request is sent. terminal a declares a terminal to be present in the data session if a response is received from that terminal. terminal a may send one or more additional requests to each terminal from which a response is not received. terminal a declares a terminal to be absent from the data session if a predetermined number of (e.g., two) requests have been sent to that terminal and a response is not received from the terminal.
|
13. A method, comprising:
sending by a first terminal a Real-time Transport Control Protocol (rtcp) echo request to at least one second terminal to ascertain whether the at least one second terminal is present in a data session;
monitoring for a rtcp echo response from each of the at least one second terminal; and
wherein sending the rtcp echo request further comprises generating an application-Defined rtcp packet in rtcp (app racket) having a predetermined subtype value in a subtype field, wherein the predetermined subtype value identifies the app packet as being for a Real-time Transport Protocol (rtp) echo request that solicits a response from a recipient.
17. An apparatus, comprising:
means for sending a Real-time Transport Control Protocol (rtcp) echo request to at least one terminal to ascertain whether the at least one terminal is present in a data session;
means for monitoring for a rtcp echo response from each of the at least one terminal; and
wherein means for sending the rtcp echo request further comprises means for generating an application-Defined rtcp packet in rtcp (app packet) having predetermined subtype value in a subtype field, wherein the predetermined subtype value identifies the app packet as being for a Real-time Transport Protocol (rtp) echo request that solicits a response from a recipient.
1. An apparatus, comprising:
at least one processor configured to send a Real-time Transport Control Protocol (rtcp) echo request to at least one terminal to ascertain whether the at least one terminal is present in a data session, and to monitor for a rtcp echo response from each of the at least one terminal;
a memory coupled to the at least one processor; and
wherein the rtcp echo request further comprises an application-Defined rtcp packet in rtcp (app packet) having a predetermined subtype value in a subtype field, wherein the predetermined subtype value identifies the app packet as being for a Real-time Transport Protocol (rtp) echo request that solicits a response from a recipient.
21. A processor readable storage medium having stored thereon processor executable instructions, when executed by the processor operable to:
send a Real-time Transport Control Protocol (rtcp) echo request to at least one terminal to ascertain whether the at least one terminal is present in a data session;
monitor for a rtcp echo response from each of the at least one terminal; and
wherein the rtcp echo request further comprises an application-Defined rtcp packet in rtcp (app packet) having a predetermined subtype value in a subtype field, wherein the predetermined subtype value identifies the app packet as being fix a Real-time Transport Protocol (rtp) echo request that solicits a response from a recipient.
25. An apparatus comprising:
at least one processor configured
to receive, at a first terminal, a Real-time Transport Control Protocol (rtcp) echo request from a second terminal soliciting a rtcp echo response from the first terminal to ascertain whether the first terminal is present in a data session, wherein the rtcp echo request further comprises a first application Defined rtcp packet in rtcp (app packet) having a first predetermined subtype value in a subtype field, wherein the first predetermined subtype value identifies the first app packet as being for a Real-time Transport Protocol (rtp) echo request that solicits a response from a recipient; and
to send the rtcp echo response to the second terminal, wherein the rtcp echo response further comprises a second app packet having a second predetermined subtype value in the subtype field, wherein the second predetermined subtype value identifies the app packet as being for an rtp echo response; and
a memory coupled to the at least one processor.
2. The apparatus of
3. The apparatus of
4. The apparatus of
5. The apparatus of
6. The apparatus of
7. The apparatus of
8. The apparatus of
9. The apparatus of
10. The apparatus of
11. The apparatus of
12. The apparatus of
a transmitter configured to send the at least one rtcp echo request to a wireless communication network.
14. The method of
declaring by the first terminal each of the at least one second terminal to ho present in the data session if a response is received from the terminal.
15. The method of
declaring by the first terminal each of the at least one second terminal to be absent from the data session if a predetermined number of requests have been sent to the terminal and a response is not received from the terminal.
16. The method of
sending by the first terminal data using Real-time Transport Protocol (rtp).
18. The apparatus of
means for declaring each of the at least one terminal to be present in the data session if a response is received from the terminal.
19. The apparatus of
means for declaring each of the at least one terminal to be absent from the data session it a predetermined number of requests have been sent to the terminal and a response is not received from the terminal.
20. The apparatus of
means for sending data using Real-time Transport Protocol (rtp).
22. The processor readable storage medium of
declare each of the at least one terminal to be preset in the data session if a response is received from the terminal.
23. The processor readable storage medium of
declare each of the at least one terminal to be absent from the data session if a predetermined number of requests have been sent to the terminal and a response is not received from the terminal.
24. The processor readable storage medium of
send data using Real-time Transport Protocol (rtp).
26. The apparatus of
27. The apparatus of
28. The apparatus of
29. The method of
30. The apparatus of
31. The processor readable storage medium of
32. The apparatus of
|
This application claims the benefit of provisional U.S. application Ser. No. 60/732,419, entitled “METHOD AND APPARATUS FOR DETECTING THE PRESENCE OF A TERMINAL IN A DATA SESSION,” filed Oct. 31, 2005, assigned to the assignee of the present application, and incorporated herein by reference in its entirety for all purposes.
1. Field
The present disclosure relates generally to communication, and more specifically to techniques for detecting the presence of a terminal in a data session.
2. Background
Wireless and wireline communication networks are widely deployed to provide various communication services such as voice, video, packet data, messaging, broadcast, multimedia, and so on. Each service may have different characteristics and requirements. For example, a packet data call may be bursty in nature but may be able to tolerate variable and long delay. In contrast, a voice call may generate data at regular intervals and may have a relatively stringent delay requirement.
Multiple terminals may establish a data session via one or more networks to exchange real-time data such as voice, video, and so on. For example, the data session may be for a teleconference call between multiple participants located at different sites. During the data session, each terminal may send data to other terminals if and when there is data to send. The data exchanges between the terminals may be sporadic. Furthermore, the data session may last a long time, and terminals may join and leave the data session at any time during the session. Because of the dynamic nature of the data session, it may be desirable to ascertain whether a given terminal is still present in the data session.
Various schemes are available to ascertain whether a given terminal is present in a data session. In one scheme, each terminal sends idle packets periodically during the data session to notify other terminals of the presence of the sending terminal. This scheme may result in many idle packets being sent, which may be highly undesirable for a wireless network since radio resources are scarce. Furthermore, idle packets may not be defined for all types of media, e.g., images, text, and so on. In another scheme, each terminal periodically generates and sends reports to other terminals. These reports may convey information regarding packets that have been sent and/or packets that have been received by the terminal sending the report. These reports may be sent infrequently (e.g., every 5 seconds) and may be lost due to packet errors. In yet another scheme, a timer is maintained for each terminal in the data session and is refreshed periodically. If the timer for a terminal expires, then that terminal is deemed to have left the data session. The timer is typically set to a large value to reduce the refresh rate, which then takes a long time to detect the absence of a terminal in the data session. Furthermore, network resources are utilized to maintain the timers for the terminals. In general, all of the schemes described above for detecting the presence of terminals in the data session consume network resources and are not very efficient.
There is therefore a need in the art for techniques to efficiently detect the presence of a terminal in a data session.
Techniques for efficiently detecting the presence of a terminal in a data session are described herein. In an exemplary embodiment, a given terminal a desires to detect the presence of at least one other terminal in a data session, e.g., a Real-time Transport Protocol (RTP) session. This desire may arise, for example, if terminal a has not received data from the other terminal(s) within a predetermined time period or if terminal a suspects that the connection has gone bad. In an embodiment, terminal a generates a request to solicit a response from each of the other terminal(s), forms an APP packet in RTP Control Protocol (RTCP) for the request, encapsulates the APP packet in at least one Internet Protocol (IP) packet, and sends the IP packet(s) to the other terminal(s). Terminal a then monitors for a response from each terminal to which the request is sent. Terminal a declares a terminal to be present in the data session if a response is received from that terminal. Terminal a may send one or more additional requests to each terminal from which a response is not received. Terminal a declares a terminal to be absent from the data session if a predetermined number of (e.g., two) requests have been sent to that terminal and a response is not received from the terminal.
The techniques described herein efficiently detect the presence of a terminal since (1) a request may be sent immediately, if and when knowledge of the presence of that terminal is desired, and (2) the request and response may be sent using a small amount of network resources. Various aspects and embodiments of the invention are described in further detail below.
The features and nature of the present invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings in which like reference characters identify correspondingly throughout.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments or designs.
WWAN 110 provides communication coverage for a large geographic area and may be a code division multiple access (CDMA) network, a time division multiple access (TDMA) network, a frequency division multiple access (FDMA) network, an orthogonal frequency division multiple access (OFDMA) network, or some other network. A CDMA network may implement one or more radio access technologies (RATs) such as cdma2000, Wideband-CDMA (W-CDMA), and so on. cdma2000 covers IS-2000, IS-95 and IS-856 standards. WWAN 110 may thus be a cdma2000 network that utilizes. IS-2000, IS-95 and IS-856 or a Universal Mobile Telecommunications System (UMTS) network that utilizes W-CDMA. A TDMA network may implement one or more RATs such as Global System for Mobile Communications (GSM), Digital Advanced Mobile Phone System (D-AMPS), and so on. These various RATs and standards are known in the art.
WWAN 110 includes multiple base stations 114, with each base station providing communication coverage for a particular geographic area. A base station is generally a fixed station that communicates with the terminals and may also be called an access point, a Node B, or some other terminology. A system controller 116 couples to base stations 114 and provides coordination and control for these base stations. System controller 116 may be a single network entity or a collection of network entities. For example, system controller 116 may include a packet control function (PCF) and a packet data serving node (PDSN) for a cdma2000 network. System controller 116 may include a serving GPRS support node (SGSN) and a gateway GPRS support node (GGSN) for a UMTS network.
Terminals 112 communicate with base stations 114. A terminal may also be called a mobile station, an access terminal, user equipment, or some other terminology. A terminal may be a wireless device, a cellular phone, a wireless modem, a personal digital assistant (PDA), and so on. A terminal may communicate with zero, one, or multiple base stations 114 on the forward and/or reverse links at any given moment.
WLAN 120 provides communication coverage for a limited geographic area. WLAN 120 may be an IEEE 802.11 network, a Bluetooth network, or some other type of network. WLAN 120 includes one or more access points 124 that communicate with terminals 122 and further exchange packet data with Internet 140. Telephone network 130 includes a public switch telephone network (PSTN) 134 and a private branch exchange (PBX) 136. PSTN 134 supports voice communication for conventional plain old telephone system (POTS). PBX 136 routes inbound voice and data calls to the appropriate destinations and facilitates the exchange of telephony and data between telephone 132 and other entities. Other entities and devices may also exchange data via Internet 140, such as a home personal computer (PC) 142.
Terminals 112 and 122 may communicate using Real-time Transport Protocol (RTP) that operates with User Datagram Protocol (UDP) or some other protocol at the transport layer. UDP typically operates on top of Internet Protocol (IP) at the network layer. Terminals 112 and 122 may encapsulate transport layer data (e.g., for UDP) in IP packets and may exchange these IP packets via WWAN 110, Internet 140, and WLAN 120.
The link layer and physical layer between terminal 112 and WWAN 110 are typically dependent on the wireless technology. For a cdma2000 network, the link layer is implemented with Point-to-Point Protocol (PPP) over Radio Link Protocol (RLP). RLP operates on top of an air-link interface, e.g., IS-2000, IS-95 or IS-856. The link layer and physical layer between terminal 122 and WLAN 120 are also dependent on the wireless technology, e.g., IEEE 802.11 or Bluetooth. WWAN 110 and WLAN 120 exchange IP packets via a link layer and a physical layer.
Protocol stack 200 or some other protocol stack may be used for communication between two or more terminals in
A data session may be established for any number of terminals and any combination of terminals 112, 122, 132 and 142 in
In general, a data session may utilize various protocols in various layers to send data and signaling. In an embodiment that is described in detail below, the data session utilizes RTP and RTCP. RTP provides end-to-end network transport functions and is suitable for applications transmitting real-time data. RTCP allows for monitoring of the data delivery with RTP. In essence, data may be sent using RTP, and signaling may be sent using RTCP. RTP and RTCP are described in RFC 3550, entitled “RTP: A Transport Protocol for Real-Time Applications,” July 2003, which is publicly available. RTP and RTCP typically operate in conjunction with UDP, which typically operates on top of IP, as shown in
Terminals may join and leave a data session at any time. In certain instances, a given terminal may desire to know whether another terminal is present in the data session. This may be achieved using the schemes described above. However, these schemes consume more network resources than necessary to achieve this detection function and hence waste network resources.
Techniques to efficiently determine whether a given terminal is present in a data session are described herein. The techniques may be used for a unicast data session with two terminals as well as a multicast data session with more than two terminals. The techniques may be used for various layers, such as the link layer, the network layer, the transport layer, and so on. For clarity, the techniques are described below for a data session with RTP/RTCP.
Although not shown in
Terminal a may use process 300 to ascertain the presence of terminal b, as described above. Terminal a may also use process 300 to check the condition of its connection. For example, terminal a may not have received any packets for a predetermined time period, e.g., 200 milliseconds (ms), 500 ms, or 1 second. As another example, terminal a may not have received acknowledgments for packets sent to other terminals. The absence of activity and/or acknowledgments may result from the connection for terminal a going bad without knowledge of terminal a. In general, terminal a may use various criteria to determine whether its connection has gone bad. Terminal a may then check the connection by sending an RTCP echo request to another terminal. Terminal a may declare the connection to be good if an RTCP echo response is received from another terminal. Alternatively, terminal a may declare the connection to be bad if a predetermined number of RTCP echo requests has been sent and no RTCP echo response is received.
Terminal b receives the RTCP echo request and responds by sending an RTCP echo response back to terminal a at time T2. Each of terminals c through n may also receive the RTCP echo request and may respond by sending an RTCP echo response back to terminal a. In general, terminal a may receive RTCP echo responses from all, some, or none of terminals b through n. Terminal a declares the source terminal of each RTCP echo response received by terminal a as being present in the data session.
Although not shown in
For the embodiments shown in
An RTCP echo request and an RTCP echo response may be sent using various types of packet. In an embodiment, an RTCP echo request and an RTCP echo response may each be sent using an APP packet, which is an Application-Defined RTCP packet in RTCP. APP packet is intended for proprietary use and may be defined for new applications and new features.
TABLE 1
APP packet format for RTCP echo request
Num
Field
bits
Description
Version (V)
2
Set to 2 for RTP and RTCP defined in
RFC 3550.
Padding (P)
1
Indicate whether the packet contains
padding.
Subtype
5
May be used to identify an APP packet
as being for an RTP echo request.
Packet Type
8
Set to 204 for an APP packet.
Length
16
Indicate the length of the APP packet.
SSRC
32
Contain a synchronization source
(SSRC) identifier for the sender of the
APP packet.
Name
32
Contain a unique name (e.g., “RTP
echo request”) for the APP packet.
Broadcast (B)
1
Set to true (‘1’) if the APP packet is
being sent to all terminals in an
RTP session.
Ping_Sequence
23
Contain a sequence number for the
RTCP echo request.
Num_Dest_SSRC
8
Indicate the number of destination
SSRC identifiers included in the
APP packet.
Destination_SSRC
Variable
Contain an SSRC identifier for each
terminal requested to send an RTCP
echo response.
Ping_Length
32
The length of the subsequent Data field.
Data
Variable
Contain the data for the RTCP echo
request.
A data session may be a multimedia session that is composed of one or more RTP sessions. For example, a multimedia session such as a videoconference may be composed of an audio RTP session and a video RTP session. Each RTP session is an association among a group of terminals communicating with RTP. Each RTP session maintains a separate set of synchronization source (SSRC) identifiers for the terminals participating in that RTP session. Each terminal in a given RTP session is identified by an SSRC identifier that is unique among all terminals in that RTP session. The individual terminals in each RTP session may be uniquely identified by their SSRC identifiers. A given terminal may participate in multiple RTP sessions at the same time.
An APP packet for an RTCP echo request may be sent to all terminals in a given RTP session by setting the Broadcast (B) field to true (‘1’). In this case, the Num_Dest_SSRC field may be set to zero, and the Destination_SSRC field may be omitted. An APP packet for an RTCP echo request may also be sent to one or more specific terminals in a given RTP session by setting the broadcast (B) field to false (‘0’), setting the Num_Dest_SSRC field to the number of terminals to which the RTCP echo request is sent, and including the SSRC identifier for each recipient terminal in an instance of the Destination_SSRC field. The Ping_Sequence is set to a new value (e.g., by incrementing the last value) each time a new RTCP echo request is sent. The Ping_Sequence value is used to associate the RTCP echo request with the corresponding RTCP echo responses. The Data field may carry any data, e.g., data used to check the condition of the connection.
APP packet 500 may also be used for an RTCP echo response. However, a different unique name may be defined for the Name field and/or a different value may be used for the Subtype field of an APP packet for an RTCP echo response. An APP packet for an RTCP echo response may be sent to the terminal that sent the RTCP echo request (or requesting terminal) by setting the Broadcast field to false and including the SSRC identifier of the requesting terminal in the Destination_SSRC field. An APP packet for an RTCP echo response may also be sent to (1) all terminals in the data session by setting the Broadcast field to true or (2) one or more other specific terminals by including the SSRC identifier for each terminal in the Destination_SSRC field.
A specific design of an APP packet suitable for both RTCP echo request and RTCP echo response has been described above. Various other designs may also be used for the APP packets for RTCP echo request and RTCP echo response. The RTCP echo request and RTCP echo response may also be sent in other types of packets besides APP packet.
A data session may include multiple RTP sessions. In an embodiment, terminal a sends an RTCP echo request to another terminal b for each RTP session in which both terminals are participants. For this embodiment, terminal a can ascertain whether terminal b is present in each RTP session. In another embodiment, terminal a sends an RTCP echo request to terminal b for one RTP session. For this embodiment, terminal a can ascertain the presence of terminal b in the RTP session for which the RTCP echo request was sent and may then presume terminal b to be similarly present or absent in all other RTP sessions.
Terminal a sends the IP packet(s) for the request to the other terminal(s) to ascertain whether the other terminal(s) are present in the data session (block 614). Terminal a then monitors for a response from each terminal to which the request is sent (block 616). Terminal a declares a terminal to be present in the data session if a response is received from that terminal (block 618). Terminal a may send one or more additional requests to each terminal from which a response is not received (block 620). Terminal a may declare a terminal to be absent from the data session if a predetermined number of (e.g., two) requests have been sent to that terminal and a response is not received from the terminal (block 622).
A controller/processor 740 directs the operation of various units within terminal 112. Controller/processor 740 may implement process 300, 400 and/or 600 shown in
The techniques described herein may be advantageously used to detect for the liveliness of individual terminals in a packet-switched session. For the packet-switched session, no dedicated connections are set up between the terminals in the session, packets are routed as appropriate, and there is no easy way to detect when a circuit for a terminal is broken. In contrast, for a circuit-switched session, a dedicated connection is set up between the terminals in the session, and each terminal may be able to detect when the connection is broken. The techniques described herein allow for detection of the presence of terminals that do not have dedicated connections.
The techniques described herein allow for detection of terminals without using keep-alive mechanisms such as idle packets, timers, and so on. These techniques are particularly advantageous for a wireless network since few packets are sent for echo requests and echo responses, if and when desired. The techniques also avoid the use of timers, which conserves network resources needed to maintain the timers.
The techniques described herein may be implemented by various means. For example, these techniques may be implemented in hardware, firmware, software, or a combination thereof. For a hardware implementation, the processing units used to send echo requests and echo responses may be implemented within one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), processors, controllers, micro-controllers, microprocessors, electronic devices, other electronic units designed to perform the functions described herein, or a combination thereof.
For a firmware and/or software implementation, the techniques may be implemented with modules (e.g., procedures, functions, and so on) that perform the functions described herein. The software codes may be stored in a memory (e.g., memory 742 in
The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
Kottilingal, Sudeep Ravi, Ling, Fan
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
7013346, | Oct 06 2000 | Apple Inc | Connectionless protocol |
7315898, | Dec 04 2001 | Sony Corporation | Data communication system, data transmission apparatus, data reception apparatus, data communication method, and computer program |
7327676, | Oct 11 2001 | Nippon Telegraph and Telephone Corporation | Data transmission control method, program therefor and data transmission unit using the same |
7333439, | Aug 24 2000 | Apple Inc | Sending/receiving method, and device for the same |
20020075844, | |||
20030120789, | |||
20030126238, | |||
20040158704, | |||
20050094557, | |||
20050114496, | |||
20050207399, | |||
20060034188, | |||
20060050705, | |||
20070021133, | |||
WO217664, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Nov 22 2005 | Qualcomm Incorporated | (assignment on the face of the patent) | / | |||
May 18 2006 | LING, FAN | Qualcomm Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 017711 | /0243 | |
May 19 2006 | KOTTILINGAL, SUDEEP RAVI | Qualcomm Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 017711 | /0243 |
Date | Maintenance Fee Events |
Nov 26 2013 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Feb 05 2018 | REM: Maintenance Fee Reminder Mailed. |
Jul 23 2018 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Jun 22 2013 | 4 years fee payment window open |
Dec 22 2013 | 6 months grace period start (w surcharge) |
Jun 22 2014 | patent expiry (for year 4) |
Jun 22 2016 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jun 22 2017 | 8 years fee payment window open |
Dec 22 2017 | 6 months grace period start (w surcharge) |
Jun 22 2018 | patent expiry (for year 8) |
Jun 22 2020 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jun 22 2021 | 12 years fee payment window open |
Dec 22 2021 | 6 months grace period start (w surcharge) |
Jun 22 2022 | patent expiry (for year 12) |
Jun 22 2024 | 2 years to revive unintentionally abandoned end. (for year 12) |