IP Library Granted Patent US 6,996,626
Granted Patent B1
US 6,996,626 · App. 10/065,951 · Granted Feb 7, 2006

Continuous bandwidth assessment and feedback for voice-over-internet-protocol (VoIP) comparing packet's voice duration and arrival rate

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 6,996,626
App. No.
10/065,951
Granted
Feb 7, 2006
Kind
B1
Abstract

A voice-over-Internet-Protocol (VoIP) application estimates bandwidth and congestion of the reception path to the VoIP application from a sending VoIP application. Packet arrivals are timed and the inter-packet delay is compared to the voice duration of the data contained in the more recent packet. When the inter-packet delay is longer than the voice duration the network is slowing and the bandwidth estimate is reduced. The bandwidth estimate is increased when inter-packet delay is smaller than the voice duration. Packet latencies are the difference in send and receive times and are compared to a moving average latency. When the current packet's latency is longer than the moving average, congestion is detected. When the current packet's latency equals the moving average, the network has recovered from congestion and the congestion estimate is reduced. Congestion and bandwidth estimates are added to packets sent out to provide feedback to the other VoIP application.

Claims (39)

1. A voice-over-Internet-Protocol (VoIP) application comprising: a jitter buffer for receiving incoming VOID packets from an Internet, the incoming VOID packets containing compressed audio data from a remote VoIP application; an audio application, receiving the compressed audio data from the incoming VOID packets, for de-compressing the compressed audio data for playback to a user, and for capturing local audio data from the user; a packetizer, receiving the local audio data from the audio application, for compressing the local audio data and encapsulating the local audio data as well as data used to provide or derive an audio duration of the encapsulated data, into outgoing VoIP packets for transmission over the Internet to the remote VOID application; an estimator, receiving a reception time for a current VOID packet that indicates when the current VOID packet was received by the jitter buffer and the jitter buffer, for generating a bandwidth estimate for an incoming path through the Internet taken by the incoming VoIP packets; and a comparator, in the estimator, for comparing an arrival difference of the reception time and the prior reception time to the audio duration that indicates a duration of playback to the user of the compressed audio data encapsulated by the current VoIP packet; wherein the estimator decreases the bandwidth estimate when the comparator determines that the arrival difference exceeds the audio duration but increases the bandwidth estimate when the comparator determines that the arrival difference is below the audio duration; wherein the packetizer receives the bandwidth estimate from the estimator, the packetizer sending the bandwidth estimate to the remote VoIP application, whereby incoming bandwidth is estimated by comparison of the arrival difference to the audio duration.

2. The VoIP application of claim 1 wherein the estimator re-estimates the bandwidth estimate continuously for each incoming VoIP packet or periodically for a subset of the incoming VoIP packets.

3. The VoIP application of claim 1 wherein the packetizer inserts the bandwidth estimate into the outgoing VoIP packets.

4. The VoIP application of claim 1 wherein the jitter buffer re-orders the incoming VoIP packets based on sequence numbers contained in the incoming VoIP packets,

whereby out-of-order incoming VoIP packets are re-ordered prior to audio playback.

5. A computerized method for estimating conditions on a

network path from a remote application to a local application comprising:

receiving incoming audio packets that include audio data and audio duration data from the remote application;

extracting the duration-time from a current packet that indicates a duration of audio playing time of audio data contained in the current packet;

generating a receive-time for the current packet that indicates when the current packet was received by the local application;

calculating an inter-packet arrival time as a difference between receive-times for the current packet and a prior packet;

comparing the inter-packet arrival time to the duration-time of the current packet;

(1) when the inter-packet arrival time is greater than the duration-time, reducing a bandwidth estimate to indicate reduced available bandwidth of the network path;

(2) when the inter-packet arrival time is less than the duration-time, increasing the bandwidth estimate to indicate increased available bandwidth of the network path; and

including the bandwidth estimate for the current packet in an outgoing packet to the remote application,

whereby bandwidth estimates are made by the local application on audio packets received from the remote application and the bandwidth estimates are sent to the remote application.

6. The computerized method of claim 5 wherein the bandwidth estimate is included in an audio packet sent from the local application to the remote application,

whereby the audio packet contains audio data from the local application but the bandwidth estimate for audio packets sent by the remote application.

7. The computerized method of claim 6 further comprising:

(3) when the inter-packet arrival time is substantially equal to the duration-time, increasing the bandwidth estimate by a small fixed amount to test for an increased available bandwidth of the network path.

8. The computerized method of claim 7 wherein reducing the bandwidth estimate comprises reducing the bandwidth estimate by a portion of a difference of the inter-packet arrival time and the duration-time;

wherein increasing the bandwidth estimate comprises increasing the bandwidth estimate by a portion of a difference of the duration-time and the inter-packet arrival time, whereby bandwidth estimate changes are in proportion to differences between the duration-time and the inter-packet arrival time.

9. The computerized method of claim 8 wherein the portion is a multiple of the duration-time.

10. The computerized method of claim 8 wherein the prior packet has a sequence number that is less than a sequence number for the current packet.

11. The computerized method of claim 10 wherein the sequence number of the prior packet is one less than the sequence number of the current packet.

12. A computer-program product comprising:

a computer-usable medium having computer-readable program code means embodied therein for estimating incoming bandwidth, the computer-readable program code means in the computer-program product comprising:

buffer means for receiving incoming packets sent by a remote audio application over a first network path;

wherein an incoming packet contains encoded remote audio data for replay to a local user and a duration value that indicate a duration of audio playback of the encoded remote audio data in the incoming packet;

audio means, receiving the encoded remote audio data, for decoding the encoded remote audio data for replay to the local user, and for encoding local audio captured from the local user to generated encoded local audio;

arrival timer means, coupled to the buffer means, for determining a delay between arrivals of the incoming packets;

analysis means for comparing the duration value to the delay from the arrival timer means and for adjusting a bandwidth estimate based on a comparison result; and

packeting means for generating outbound packets adding a packet header to segments of the encoded local audio, the packet header for assisting routing of the outbound packets to the remote audio application over a second network path that can differ from the first network path;

wherein the packeting means sends the bandwidth estimate from the analysis means to the remote audio application, to indicate a condition of the first network path,

whereby current-status feedback of the first network path is sent to the remote audio application.

13. The computer-program product of claim 12 wherein the packeting means inserts the bandwidth estimate from the analysis means into at least some of the outbound packets to provide current-status feedback to the remote audio application, the current-status feedback indicating a condition of the first network path,

whereby current-status feedback of the first network path is sent to the remote audio application with the encoded local audio.

14. The computer-program product of claim 12 further comprising:

packet loss means for increasing a packet loss counter when an incoming packet sent by the remote audio application fails to arrive at the buffer means within an acceptable delay, wherein the packeting means sends the packet loss counter from the packet loss means to the remote audio application.

Assignments (5)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044127/0735 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2011
From: CRYSTALVOICE COMMUNICATIONS, INC.
To: GOOGLE INC.
Reel/Frame 026340/0985 →
RELEASE OF SECURTIY INTEREST Recorded Jan 16, 2007
From: LA QUERENCIA PARTNERS
To: CRYSTAL VOICE COMMUNICATIONS, INC.
Reel/Frame 018770/0026 →
SECURITY INTEREST Recorded Feb 2, 2004
From: CRYSTALVOICE COMMUNICATIONS, INC.
To: LA QUERENCIA PARTNERS
Reel/Frame 014941/0620 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2003
From: SMITH, SHAWN W.
To: CRYSTALVOICE COMMUNICATIONS, INC.
Reel/Frame 013466/0495 →