Methods and apparatus for preventing head of line blocking for RTP over TCP
First Claim
1. A method of an apparatus for communicating packets using TCP (Transmission Control Protocol), the method comprising:
- detecting a gap in a first TCP packet sequence;
switching from a first mode of processing TCP packets of the first TCP packet sequence to a second mode of processing TCP packets of the first TCP packet sequence when said gap is detected in the first TCP packet sequence;
wherein said first mode of processing TCP packets implements TCP stack with head of line blocking (HOLB);
wherein said second mode of processing TCP packets does not implement TCP stack with HOLB, said second mode of processing TCP packets includes;
receiving a first TCP packet which is part of the first TCP packet sequence;
extracting data from said first TCP packet;
providing said extracted data and a corresponding TCP packet sequence number to an RTP (Real-Time Transport Protocol) application irrespective of whether or not a preceding TCP packet in said first TCP packet sequence has been received;
determining if said corresponding TCP packet sequence number is higher than the highest previously received TCP packet sequence number corresponding to said first TCP packet sequence; and
when it is determined that the received TCP packet sequence number is higher than the highest previously received packet sequence number corresponding to said first TCP packet sequence;
incrementing a received TCP packet sequence counter to set a highest received packet sequence number of said TCP packet sequence counter to said corresponding TCP packet sequence number; and
when it is determined that the received TCP sequence number is not higher than the highest previously received packet sequence number corresponding to said TCP packet sequence;
receiving a second TCP packet which is part of the first TCP packet sequence without changing the received TCP packet sequence counter.
7 Assignments
0 Petitions
Accused Products
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.
8 Citations
20 Claims
-
1. A method of an apparatus for communicating packets using TCP (Transmission Control Protocol), the method comprising:
-
detecting a gap in a first TCP packet sequence; switching from a first mode of processing TCP packets of the first TCP packet sequence to a second mode of processing TCP packets of the first TCP packet sequence when said gap is detected in the first TCP packet sequence; wherein said first mode of processing TCP packets implements TCP stack with head of line blocking (HOLB); wherein said second mode of processing TCP packets does not implement TCP stack with HOLB, said second mode of processing TCP packets includes; receiving a first TCP packet which is part of the first TCP packet sequence; extracting data from said first TCP packet; providing said extracted data and a corresponding TCP packet sequence number to an RTP (Real-Time Transport Protocol) application irrespective of whether or not a preceding TCP packet in said first TCP packet sequence has been received; determining if said corresponding TCP packet sequence number is higher than the highest previously received TCP packet sequence number corresponding to said first TCP packet sequence; and when it is determined that the received TCP packet sequence number is higher than the highest previously received packet sequence number corresponding to said first TCP packet sequence; incrementing a received TCP packet sequence counter to set a highest received packet sequence number of said TCP packet sequence counter to said corresponding TCP packet sequence number; and when it is determined that the received TCP sequence number is not higher than the highest previously received packet sequence number corresponding to said TCP packet sequence;
receiving a second TCP packet which is part of the first TCP packet sequence without changing the received TCP packet sequence counter. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18)
-
-
10. An apparatus for communicating packets using TCP (Transmission Control Protocol), comprising:
-
memory; and a processor configured to control said apparatus to; detect a gap in a first TCP packet sequence; switch from a first mode of processing TCP packets of the first TCP packet sequence to a second mode of processing TCP packets of the first TCP packet sequence when said gap is detected in the first TCP packet sequence; wherein said first mode of processing TCP packets implements TCP stack with head of line blocking (HOLB); wherein said second mode of processing TCP packets does not implement TCP stack with HOLB, said second mode of processing TCP packets includes; receiving a first TCP packet which is part of the first TCP packet sequence; extracting data from said first TCP packet; providing said extracted data and a corresponding TCP packet sequence number to an RTP (Real-Time Transport Protocol) application irrespective of whether or not a preceding TCP packet in said first TCP packet sequence has been received; and determining if said corresponding TCP packet sequence number is higher than the highest previously received TCP packet sequence number corresponding to said first TCP packet sequence; and when it is determined that the received TCP packet sequence number is higher than the highest previously received packet sequence number corresponding to said first TCP packet sequence; incrementing a received TCP packet sequence counter to set a highest received packet sequence number of said TCP packet sequence counter to said corresponding TCP packet sequence number; and when it is determined that the received TCP sequence number is not higher than the highest previously received packet sequence number corresponding to said TCP packet sequence;
receiving a second TCP packet which is part of the first TCP packet sequence without changing the received TCP packet sequence counter. - View Dependent Claims (15)
-
-
11. An apparatus for communicating packets using TCP (Transmission Control Protocol), comprising:
-
a processor configured to control the apparatus to; detect a gap in a first TCP packet sequence, and switch from a first mode of processing TCP packets of the first TCP packet sequence to a second mode of processing TCP packets of the first TCP packet sequence when said gap is detected in the first TCP packet sequence, said first mode of processing TCP packets implementing TCP stack with head of line blocking (HOLB), said second mode of processing TCP packets not implementing TCP stack with HOLB; an interface including a receiver configured to receive a TCP packet which is part of the TCP packet sequence; a data extraction module configured to extract data from said TCP packet; a communications module configured to provide said extracted data and a corresponding TCP packet sequence number to an RTP (Real-Time Transport Protocol) application irrespective of whether or not a preceding TCP packet in said packet sequence has been received when said apparatus is operating in said second mode of processing TCP packets; a determination module configured to determine if said corresponding TCP packet sequence number is higher than the highest previously received TCP packet sequence number corresponding to said first TCP packet sequence; and a sequence counter control module configured to increment a received TCP sequence counter to set a highest received packet sequence number of said TCP sequence counter to said corresponding TCP packet sequence number, when said determination module determines that the received TCP packet sequence number is higher than the highest previously received packet sequence number corresponding to said TCP packet sequence and said apparatus is being operated in said second mode of processing TCP packets. - View Dependent Claims (12, 13, 14, 19, 20)
-
Specification