IP Library › Granted Patent US 12,206,737
Granted Patent B2
US 12,206,737 · App. 17/354,657 · Granted Jan 21, 2025

Universal transport framework for heterogeneous data streams

Inventors: Tian Xia (Shanghai, CN); Liu Yong (Shanghai, CN)
Assignee: Agora Lab, Inc.
H04L67/141H04L7/0079H04L7/0091H04L67/146H04L67/60
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 12,206,737
App. No.
17/354,657
Granted
Jan 21, 2025
Kind
B2
Abstract

An apparatus for communication between a sending application and a receiving application of a receiving apparatus includes a processor that is configured to establish a stream for transmitting data between the sending application and the receiving application; receive a first request from the sending application to transmit metadata to the receiving application; receive a second request from the sending application to transmit application data to the receiving application; responsive to a determination that a frame that includes the application data and the metadata has a size that is smaller than or equal to a maximum frame size, construct the frame to include the application data and the metadata; and transmit the frame in a packet to the receiving apparatus.

Claims (40)

1. An apparatus for communication between a receiving application executing at the apparatus and a sending application of a sending apparatus, comprising:

a processor configured to:

establish a stream for transmitting data between the sending application and the receiving application;

transmit a first request to the sending application to transmit metadata to the receiving application, wherein the metadata are associated with the stream and are descriptive of an application data transmitted over the stream;

transmit a second request to the sending application to transmit the application data to the receiving application;

receive a first frame from the sending application, wherein the first frame is generated, by the sending application, to include the application data and the metadata based on a determination that the metadata and the application data do not exceed a maximum frame size, and the metadata is included in a second frame based on a determination that that the metadata and the application data exceed the maximum frame size; and

process the application data from the first frame in response to a determination that the metadata has been received and processed, wherein the application data from the first frame is not processed until the metadata associated with the stream is received, wherein the application data is cached by the receiving application until the metadata associated with the stream is received and processed.

2. The apparatus of claim 1 , wherein the first frame and the second frame are received using an unreliable transport protocol.

3. The apparatus of claim 1 , wherein the processor is further configured to:

receive, from the sending application, a metadata frame after a threshold time since receiving the first frame, wherein the metadata frame is received in response to a determination that the metadata of the is lost during transmission.

4. The apparatus of claim 1 , wherein the processor is further configured to:

receive, from the sending application, a metadata frame the includes the metadata, wherein the metadata frame is received responsive to a determination, by the sending application, that no acknowledgment of the metadata has been received from the receiving application and a time difference between a current time and a time of transmission of the first frame not exceeds a threshold time.

5. The apparatus of claim 1 , wherein the sending application retransmits the metadata up to a threshold number of times, responsive to a determination that no acknowledgment of the metadata has been received from the receiving application.

6. The apparatus of claim 5 , wherein the stream is closed by the sending application responsive to a determination that no acknowledgment of the metadata has been received after the threshold number of retransmissions.

7. A method for communication between a receiving application executing at a receiving apparatus and a sending application of a sending apparatus, comprising:

establishing a stream for transmitting data between the sending application and the receiving application, wherein the stream is used to transmit media data;

transmitting, to a session manager module of the sending apparatus, a first request to transmit metadata to the receiving application, wherein the metadata are associated with the stream and are descriptive of data transmitted over the stream;

transmitting, to the session manager module, a second request to transmit application data to the receiving application;

receiving, at the receiving application, a frame from a connection management module of the sending application, wherein the frame is generated, by the sending application, to include the application data and the metadata based on a determination that the metadata and the application data do not exceed a maximum frame size; and

processing, by the receiving application, the application data in response to a determination that the metadata has been received and processed, wherein the application data from the frame is not processed until the metadata associated with the stream is received, wherein the application data is cached by the receiving application until the metadata associated with the stream is received and processed.

8. The method of claim 7 , wherein a second frame includes the metadata based on a determination that the application data and the metadata are of such respective sizes that the application data and the metadata exceed a maximum frame size.

9. The method of claim 7 , wherein the frame is received using an unreliable transport protocol.

10. The method of claim 7 , further comprising:

receiving, from the connection management module, metadata frame that includes the metadata, wherein the metadata frame is received responsive to a determination, by the connection management module, that no acknowledgement of the metadata has been received from the receiving application within a threshold time since transmitting the frame.

11. The method of claim 7 , further comprising:

receiving, from the connection management module, a metadata frame that includes the metadata, responsive to a determination, by the connection management module, that no acknowledgment of the metadata has been received from the receiving application and a time difference between a current time and a time of transmission of the frame exceeds a threshold time.

12. The method of claim 7 , wherein the connection management module retransmits the metadata up to a threshold number of times, responsive to receiving no acknowledgment of the metadata from the receiving application.

13. The method of claim 12 , wherein the connection management module closes the stream responsive to a determination that no acknowledgment of the metadata has been received, from the receiving application, after the threshold number of retransmissions.

14. A non-transitory computer-readable storage medium that includes executable instructions that, when executed by a processor, perform operations of a transport framework for communication between a sending application of a sending apparatus and a receiving application of a receiving apparatus, the operations comprising:

establishing, through a session manager module of the transport framework, a stream for transmitting data between the sending application and the receiving application;

transmitting to the session manager module a first request to transmit metadata to the receiving application, wherein the metadata are associated with the stream and are descriptive of data transmitted over the stream;

transmitting to the session manager module a second request to transmit application data to the receiving application;

receiving a first frame from a connection management module of the transport framework, wherein the first frame is generated, by the sending application, to include the application data and the metadata based on a determination that the metadata and the application data do not exceed a maximum frame size, and the metadata is included in a second frame based on a determination that that the metadata and the application data exceed the maximum frame size; and

processing the application data in response to a determination, by the receiving application, that the metadata has been received and processed, wherein the application data from the first frame is not processed until the metadata associated with the stream is received, wherein the application data is cached by the receiving application until the metadata associated with the stream is received and processed.

15. The non-transitory computer-readable storage medium of claim 14 , wherein the first frame and the second frame are received using an unreliable transport protocol.

16. The non-transitory computer-readable storage medium of claim 14 , wherein the operations further comprise:

receiving, from the connection management module, a metadata frame the includes the metadata, wherein the metadata frame is transmitted responsive to a determination, by the connection management module, that no acknowledgement of the metadata has been received from the receiving application with a threshold time since transmitting the first frame.

17. The non-transitory computer-readable storage medium of claim 14 , wherein the operations further comprise:

receiving, from the connection management module, a metadata frame that includes the metadata, responsive to a determination, by the connection management module, that no acknowledgment of the metadata has been received from the receiving application and a time difference between a current time and a time of transmission of the first frame is not exceeding a threshold time.

18. The non-transitory computer-readable storage medium of claim 14 , wherein the stream is closed, by the connection management module, responsive to receiving no acknowledgment of the metadata from the receiving apparatus after retransmitting the metadata to the receiving application a threshold number of times.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2021
From: XIA, TIAN; YONG, LIU
To: AGORA LAB, INC.
Reel/Frame 056623/0575 →
Continuity (2)
Continuation 17319738 · May 13, 2021
Related Publication 20220368765A1 · Nov 17, 2022
References Cited (62)
US 6014694A · Aharoni et al. · 2000 [cited by applicant]
US 6831893B1 · Ben Nun et al. · 2004 [cited by applicant]
US 7275152B2 · Goud et al. · 2007 [cited by applicant]
US 7680038B1 · Gourlay · 2010 [cited by applicant]
US 8223788B1 · Perelstain · 2012 [cited by examiner]
US 8732236B2 · Altmaier et al. · 2014 [cited by applicant]
US 9130864B2 · Keith · 2015 [cited by applicant]
US 9804886B1 · Wells · 2017 [cited by examiner]
US 10331612B1 · Petkov · 2019 [cited by examiner]
US 10374900B2 · Dujodwala · 2019 [cited by examiner]
US 10862940B1 · Jones · 2020 [cited by examiner]
US 11244405B2 · Bull et al. · 2022 [cited by applicant]
US 20030023746A1 · Loguinov · 2003 [cited by applicant]
US 20030133462A1 · Schoenblum · 2003 [cited by examiner]
US 20030206549A1 · Mody et al. · 2003 [cited by applicant]
US 20040153491A1 · Harada · 2004 [cited by applicant]
US 20050223114A1 · Hanson · 2005 [cited by examiner]
US 20060095944A1 · Demircin · 2006 [cited by examiner]
US 20070076626A1 · Wise · 2007 [cited by examiner]
US 20070078978A1 · Arnold et al. · 2007 [cited by applicant]
US 20070171829A1 · Kojima · 2007 [cited by examiner]
US 20070183423A1 · Passarella et al. · 2007 [cited by applicant]
US 20070287477A1 · Tran · 2007 [cited by examiner]
US 20080098124A1 · Vaughan et al. · 2008 [cited by applicant]
US 20080259916A1 · Archer · 2008 [cited by examiner]
US 20090028142A1 · Schmidt et al. · 2009 [cited by applicant]
US 20090083803A1 · Alshaykh · 2009 [cited by examiner]
US 20090216796A1 · Slik · 2009 [cited by examiner]
US 20100260180A1 · Wu et al. · 2010 [cited by applicant]
US 20110038259A1 · Bharrat · 2011 [cited by examiner]
US 20110310797A1 · Kobayashi et al. · 2011 [cited by applicant]
US 20120207454A1 · Kim · 2012 [cited by examiner]
US 20140067994A1 · Puttaswamy Naga · 2014 [cited by examiner]
US 20140201318A1 · Dajani et al. · 2014 [cited by applicant]
US 20140244598A1 · Haustein · 2014 [cited by examiner]
US 20140254365A1 · Yanagisawa · 2014 [cited by applicant]
US 20150143405A1 · Hogan · 2015 [cited by examiner]
US 20150243257A1 · Witman · 2015 [cited by examiner]
US 20150271255A1 · Mackay et al. · 2015 [cited by applicant]
US 20150365457A1 · Dvir · 2015 [cited by examiner]
US 20160309364A1 · Maheshwari · 2016 [cited by examiner]
US 20160344715A1 · Kumar · 2016 [cited by examiner]
US 20160359974A1 · Miller · 2016 [cited by examiner]
US 20170180440A1 · Schulz et al. · 2017 [cited by applicant]
US 20170273100A1 · Huang et al. · 2017 [cited by applicant]
US 20170303159A1 · Ma et al. · 2017 [cited by applicant]
US 20170366416A1 · Beecham et al. · 2017 [cited by applicant]
US 20170374130A1 · AbiEzzi · 2017 [cited by examiner]
US 20180262432A1 · Ozen · 2018 [cited by examiner]
US 20190140967A1 · Deval · 2019 [cited by examiner]
US 20190182020A1 · Patel · 2019 [cited by examiner]
US 20190253510A1 · Goodyear · 2019 [cited by examiner]
US 20190280944A1 · Bellini · 2019 [cited by examiner]
US 20190340082A1 · Pradhan · 2019 [cited by examiner]
US 20200117415A1 · Lindblom · 2020 [cited by examiner]
US 20200322243A1 · Xi · 2020 [cited by examiner]
US 20210007172A1 · Lu · 2021 [cited by examiner]
US 20210034571A1 · Bedadala et al. · 2021 [cited by applicant]
US 20220158831A1 · Wing · 2022 [cited by examiner]
Extended European Search Report and Written Opinion for European Application No. 21185450.0 dated Jan. 7, 2022. [cited by applicant]
Koshiba; QUIC Traffic Server Apache Software Foundation; https://cwiki.apache.org/confluence/display/TS/QUIC; pp. 1-4; Mar. 13, 2021. [cited by applicant]
Jia-Ru-Li et al; HPF: A Transport Protocol For Supporting Heterogeneous Packet Flows In the Internet; University of Ilinois at Urbana-Champaign; pp. 543-550; 1999 IEEE. [cited by applicant]