IP Library Granted Patent US 9,461,931
Granted Patent B1
US 9,461,931 · App. 14/265,007 · Granted Oct 4, 2016

Methods and apparatus for preventing head of line blocking for RTP over TCP

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 9,461,931
App. No.
14/265,007
Granted
Oct 4, 2016
Kind
B1
Abstract

Methods and apparatus for processing and using TCP packets to communicate RTP packets are described. Head of line blocking is avoided by operating a TCP packet processing module to output RTP packet data to an application irrespective of whether or not a preceding TCP packet was received. Since output of packet data to an application using RTP packets is not delayed when there is a missing TCP packet, head of line blocking is avoided. RTP packet data is subjected to pattern matching in order to identify and process RTP packets in the case where RTP header information such as packet length information is missing due to the failure to receive a TCP packet. The methods are particularly well suited for the communication of audio and/or video by devices operating behind firewalls which block UDP or other types of packets other than TCP packets.

Claims (64)

1. A method of communicating packets using TCP, the method comprising:

receiving a first TCP packet which is part of a TCP packet sequence;

extracting first data from said first TCP packet;

providing said extracted first data and a corresponding first TCP packet sequence number to an RTP application irrespective of whether or not a preceding TCP packet in said packet sequence has been received;

determining if said corresponding first TCP packet sequence number is higher than the highest previously received TCP packet sequence number corresponding to said TCP packet sequence;

incrementing a received TCP sequence counter to set a highest received sequence number of said TCP sequence counter to said corresponding first TCP packet sequence number when it is determined that the received first TCP sequence number is higher than the highest previously received sequence number corresponding to said TCP packet sequence;

receiving a second TCP packet which is part of said TCP packet sequence;

extracting second data from said second TCP packet;

providing said extracted second data and a corresponding second TCP packet sequence number to the RTP application irrespective of whether or not a preceding TCP packet in said packet sequence has been received;

determining if said corresponding second TCP packet sequence number is higher than the highest previously received TCP packet sequence number corresponding to said TCP packet sequence;

incrementing the received TCP sequence counter to set a highest received sequence number of said TCP sequence counter to said corresponding second TCP packet sequence number when it is determined that the corresponding second TCP sequence number is higher than the highest previously received sequence number corresponding to said TCP packet sequence; and

refraining from changing the received TCP sequence counter and refraining from sending an acknowledgement to the sender of the received second TCP packet when it is determined that the corresponding second TCP sequence number is lower than the highest previously received sequence number corresponding to said TCP packet sequence.

2. The method of claim 1 , further comprising:

adding said extracted first data to a sequence of stored packet data at a location in said sequence of stored packet data, said location being a location determined based on the corresponding first TCP packet sequence number associated with the first extracted data.

3. The method of claim 1 , further comprising:

sending an acknowledgement indicating successful receipt of a TCP packet when said received first TCP packet causes incrementing of said received TCP sequence counter.

4. The method of claim 1 , further comprising:

adding said extracted second data to the sequence of stored packet data at a location in said sequence of stored packet data, said location being a location determined based on a second TCP packet number associated with the extracted second data.

5. The method of claim 4 , further comprising:

processing data in said sequence of packet data to identify RTP packet boundaries.

6. The method of claim 5 , wherein said step of processing data in said sequence of packet data to identify RTP packet boundaries includes:

performing a pattern matching operation to identify at least one RTP header field within said data; and

determining a location of a RTP packet boundary based on the location of the identified header field in said data and a known offset from the location of said header field to the start of an RTP packet which includes the at least one identified RTP header field.

7. The method of claim 6 , wherein performing a pattern matching operation includes checking the data for expected patterns matching at least two of the following RTP header fields: a version field, a payload type field, a sequence number field, a timestamp field, and an SSRC field.

8. An apparatus for communicating packets using TCP, comprising:

memory; and

a processor configured to control said apparatus to:

receive a first TCP packet which is part of a TCP packet sequence;

extract first data from said first TCP packet; and

provide said extracted first data and a corresponding first TCP packet sequence number to an RTP application irrespective of whether or not a preceding TCP packet in said packet sequence has been received;

determine if said corresponding first TCP packet sequence number is higher than the highest previously received TCP packet sequence number corresponding to said TCP packet sequence;

increment a received TCP sequence counter to set a highest received sequence number of said TCP sequence counter to said corresponding first TCP packet sequence number when it is determined that the received first TCP sequence number is higher than the highest previously received sequence number corresponding to said TCP packet sequence;

receive a second TCP packet which is part of said TCP packet sequence;

extract second data from said second TCP packet;

provide said extracted second data and a corresponding second TCP packet sequence number to the RTP application irrespective of whether or not a preceding TCP packet in said packet sequence has been received;

determine if said corresponding second TCP packet sequence number is higher than the highest previously received TCP packet sequence number corresponding to said TCP packet sequence;

increment the received TCP sequence counter to set a highest received sequence number of said TCP sequence counter to said corresponding second TCP packet sequence number when it is determined that the corresponding second TCP sequence number is higher than the highest previously received sequence number corresponding to said TCP packet sequence; and

refrain from changing the received TCP sequence counter and refrain from sending an acknowledgement to the sender of the received second TCP packet when it is determined that the corresponding second TCP sequence number is lower than the highest previously received sequence number corresponding to said TCP packet sequence.

9. An apparatus for communicating packets using TCP, comprising:

an interface including a receiver configured to receive a first TCP packet which is part of a TCP packet sequence;

a data extraction module configured to extract first data from said first TCP packet; and

a communications module configured to provide said extracted first data and a corresponding first TCP packet sequence number to an RTP application irrespective of whether or not a preceding TCP packet in said packet sequence has been received;

a determination module configured to determine if said corresponding first TCP packet sequence number is higher than the highest previously received TCP packet sequence number corresponding to said TCP packet sequence;

a sequence counter control module configured to increment a received TCP sequence counter to set a highest received sequence number of said TCP sequence counter to said corresponding first TCP packet sequence number when said determination module determines that the received first TCP sequence number is higher than the highest previously received sequence number corresponding to said TCP packet sequence;

wherein said receiver is further configured to receive a second TCP packet which is part of said TCP packet sequence;

wherein said data extraction module is further configured to extract second data from said second TCP packet;

wherein said communications module is further configured to provide said extracted second data and a corresponding second TCP packet sequence number to the RTP application irrespective of whether or not a preceding TCP packet in said packet sequence has been received;

wherein said determination module is further configured to determine if said corresponding second TCP packet sequence number is higher than the highest previously received TCP packet sequence number corresponding to said TCP packet sequence; and

wherein said sequence counter control module is further configured to:

increment the received TCP sequence counter to set a highest received sequence number of said TCP sequence counter to said corresponding second TCP packet sequence number when it is determined that the corresponding second TCP sequence number is higher than the highest previously received sequence number corresponding to said TCP packet sequence and

refrain from changing the received TCP sequence counter when it is determined that the corresponding second TCP sequence number is lower than the highest previously received sequence number corresponding to said TCP packet sequence; and

wherein said acknowledgement communications control module is configured to refrain from sending an acknowledgement to the sender of the received second TCP packet, when it is determined that the corresponding second TCP sequence number is lower than the highest previously received sequence number corresponding to said TCP packet sequence.

10. The apparatus of claim 9 , further comprising:

a memory including a sequence of stored packet data;

a modification module configured to add said extracted first data to said sequence of stored packet data at a location in said sequence of stored packet data determined based on the corresponding first TCP packet sequence number associated with the extracted first data.

11. The apparatus of claim 9 , further comprising:

an acknowledgement communications control module configured to send an acknowledgement indicating successful receipt of a TCP packet when said received first TCP packet causes incrementing of said received TCP sequence counter.

12. The apparatus of claim 10 ,

wherein said modification module is further configured to add said extracted second data to the sequence of stored packet data at a location in said sequence of stored packet data determined based on the second TCP packet sequence number associated with the extracted second data.

13. The apparatus of claim 12 , further comprising:

a processing module configured to process data in said sequence of packet data to identify RTP packet boundaries.

14. The apparatus of claim 13 , wherein said processing module is further configured, as part of being configured to process data in said sequence of packet data to identify RTP packet boundaries, to perform the following:

perform a pattern matching operation to identify at least one RTP header field within said data; and

determine a location of a RTP packet boundary based on the location of the identified header field in said data and a known offset from the location of said header field to the start of an RTP packet which includes the at least one identified RTP header field.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Jun 24, 2024
From: CITIZENS BANK, N.A.
To: RIBBON COMMUNICATIONS OPERATING COMPANY, INC. (F/K/A GENBAND US LLC AND SONUS NETWORKS, INC.)
Reel/Frame 067822/0433 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 044978/0801 Recorded Dec 6, 2021
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: RIBBON COMMUNICATIONS OPERATING COMPANY, INC. (F/K/A GENBAND US LLC AND SONUS NETWORKS, INC.)
Reel/Frame 058949/0497 →
SECURITY INTEREST Recorded Mar 3, 2020
From: RIBBON COMMUNICATIONS OPERATING COMPANY, INC.
To: CITIZENS BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 052076/0905 →
CHANGE OF NAME Recorded Jan 16, 2019
From: SONUS NETWORKS, INC.
To: RIBBON COMMUNICATIONS OPERATING COMPANY, INC.
Reel/Frame 048078/0036 →
SECURITY INTEREST Recorded Jan 2, 2018
From: GENBAND US LLC; SONUS NETWORKS, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 044978/0801 →
CHANGE OF NAME Recorded Dec 24, 2017
From: SONUS, INC.
To: SONUS NETWORKS, INC.
Reel/Frame 044957/0213 →
MERGER AND CHANGE OF NAME Recorded Dec 24, 2017
From: SOLSTICE SAPPHIRE, INC.; SONUS NETWORKS, INC.; SONUS NETWORKS, INC.
To: SONUS, INC.
Reel/Frame 044957/0243 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2014
From: ASVEREN, TOLGA
To: SONUS NETWORKS, INC.
Reel/Frame 032833/0402 →