IP Library › Granted Patent US 11,811,877
Granted Patent B2
US 11,811,877 · App. 17/319,738 · Granted Nov 7, 2023

Universal transport framework for heterogeneous data streams

Inventors: Tian Xia (Shanghai, CN); Yong Liu (Shanghai, CN)
Assignee: Agora Lab, Inc.
H04L67/141G06Q10/063114H04L7/0079H04L7/0091H04L67/146H04L67/60H04N7/025
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 11,811,877
App. No.
17/319,738
Granted
Nov 7, 2023
Kind
B2
Abstract

A transport framework for heterogeneous data streams includes session management module and a connection management module. The session management module is configured to receive a request to establish a first stream that is used for transmitting or receiving data, where the request includes an express indication as to whether the first stream is reliable or unreliable; construct a first data frame based on application data; handoff the first data frame to the connection management module; and maintain a record for the first data frame that includes whether the first data frame is successfully transmitted to the receiver. The connection management module is configured to receive the first data frame of the first stream from the session management module; receive a second frame from the session management module; encapsulate the first data frame and the second frame in a packet; and transmit the packet to the receiver using an unreliable protocol.

Claims (104)

1. A device, comprising:

a memory; and

a processor, the processor configured to execute instructions stored in the memory, the instructions implement a network transport-layer transport framework for heterogeneous data streams and comprising:

first instructions that implement a session management module which interfaces between an application executing at the device and a connection management module, wherein the application exchanges data with a corresponding application executing at a receiver, and wherein the first instructions are not instructions of the application; and

second instructions that implement the connection management module which interfaces with the session management module to transmit and receive data of the application over a network,

the first instructions that implement the session management module comprise instructions to:

receive a request from the application to establish a first stream,

 wherein the first stream is used for transmitting data from the application to the corresponding application and receiving data from the corresponding application for the application, and

 wherein the request from the application includes an express indication as to whether the first stream is reliable or unreliable;

receive application data from the application, wherein the application data is to be transmitted to the corresponding application at the receiver;

construct a first data frame to include an identifier of the first stream, a largest packet number of packets acknowledged by the receiver, and the application data as a payload; and

send a request to the connection management module to transmit the first data frame to the receiver over the network; and

the second instructions that implement the connection management module comprise instructions to:

receive the first data frame of the first stream and a second data frame that includes an identification of a second stream from the session management module, wherein the first stream is associated with a first underlying protocol and the second stream is associated with a second underlying protocol, and the first underlying protocol is different than the second underlying protocol; and

transmit the first data frame and the second data frame to the receiver according to the corresponding underlying protocol, wherein the first stream and the second stream are transmitted with different streaming requirements.

2. The device of claim 1 , wherein the first stream is a reliable or unreliable stream, and the second stream is a partially reliable stream.

3. The device of claim 1 , wherein the first instructions comprises instructions that implement a scheduler module, the first instructions that implement the scheduler module comprise instructions to:

receive a first stream frame from the first stream, wherein the first stream has a first priority;

receive a second stream frame from the second stream, wherein the second stream has a second priority that is higher than the first priority; and

responsive to the second priority being higher than the first priority, handing off the second stream frame to the connection management module for transmission before the first stream frame.

4. The device of claim 1 ,

wherein the second instructions that implement the connection management module further comprise instructions to:

receive from the receiver a congestion feedback frame comprising network statistics collected by the receiver, the congestion feedback frame comprises an amount of data transmitted for at least one stream.

5. The device of claim 4 , wherein the second instructions that implement the connection management module further comprise instructions to:

responsive to receiving an acknowledgement of the packet from the receiver:

remove the packet from a cache; and

notify the session management module of acknowledgment of each frame encapsulated in the packet; and

responsive to not receiving the acknowledgement of the packet from the receiver:

notify the session management module of loss of the each frame encapsulated in the packet.

6. The device of claim 4 ,

wherein the packet comprises a packet number, and

wherein the second instructions that implement the connection management module further comprise instructions to:

receive, over the network and from the receiver, an acknowledgment frame, wherein the acknowledgment frame comprises ranges of packet numbers of packets received by the receiver; and

determine whether the packet was received by the receiver based on whether a range of the ranges includes the packet number.

7. The device of claim 6 , wherein the acknowledgment frame further comprises respective indications of received timestamps of packets of the ranges of the packet numbers.

8. The device of claim 4 ,

wherein the first stream is unreliable, and

wherein the second instructions that implement the connection management module further comprise instructions to:

responsive to determining that the packet is lost, notify the first stream of frames included in the packet.

9. The device of claim 4 , wherein the network statistics comprises a stream average queuing time.

10. The device of claim 4 , wherein the second instructions that implement the connection management module further comprise instructions to:

include, in the packet, a packet number of a largest acknowledged packet number that is acknowledged by the receiver.

11. A method for communicating between a sender and a receiver using a transport framework for heterogeneous data streams, comprising:

receiving, at the sender, a request from an application to establish a first stream,

wherein the first stream is used for transmitting data from the application to a corresponding application at the receiver, and receiving data from the corresponding application for the application, and

wherein the request from the application includes an express indication as to whether the first stream is reliable or unreliable;

receiving application data from the application, wherein the application data is to be transmitted to the corresponding application at the receiver;

constructing a first data frame to include an identifier of the first stream, a largest packet number of packets acknowledged by the receiver, and the application data as a payload;

sending a request to the connection management module to transmit the first data frame to the receiver over the network; and

receive the first data frame of the first stream and a second data frame that includes an identification of a second stream,

wherein the first stream is associated with a first underlying protocol and the second stream is associated with a second underlying protocol, and the first underlying protocol is different than the second underlying protocol;

transmitting the first data frame and the second data frame to the receiver according to the corresponding underlying protocol, and

wherein the first stream and the second stream are transmitted with different streaming requirements.

12. The method of claim 11 , wherein the first stream is a reliable or unreliable stream, and the second stream is a partially reliable stream further comprising:

receiving a first stream frame from the first stream, wherein the first stream has a first priority;

receiving a second stream frame from the second stream, wherein the second stream has a second priority that is higher than the first priority; and

handing off the second stream frame for transmission before the first stream frame in response to the second priority being higher than the first priority.

13. The method of claim 11 , further comprising: receiving, from the receiver, a congestion feedback frame comprising network statistics collected by the receiver, the congestion feedback frame comprises an amount of data transmitted for at least one stream.

14. The method of claim 13 , further comprising:

removing the packet from a cache in response to receiving an acknowledgement of the packet from the receiver;

notifying the sender of acknowledgment of each frame encapsulated in the packet; and

notifying the sender of loss of the each frame encapsulated in the packet in response to not receiving the acknowledgement of the packet from the receiver.

15. The method of claim 13 ,

wherein the packet comprises a packet number,

wherein the acknowledgment frame further comprises:

ranges of packet numbers of packets received by the receiver,

respective indications of received timestamps of packets of the ranges of the packet numbers, and

further comprising:

determining whether the packet was received by the receiver based on whether a range of the ranges includes the packet number.

16. A non-transitory computer-readable storage medium, comprising executable instructions that, when executed by a processor, facilitate performance of operations of a transport framework for heterogeneous data streams, the operations comprising:

first operations that implement a session management module which interfaces between an application executing at the device and a connection management module, wherein the application exchanges data with a corresponding application executing at a receiver, and wherein the first operations are not operations of the application; and

second operations that implement the connection management module which interfaces with the session management module to transmit and receive data of the application over a network,

the first operations that implement the session management module comprise operations to:

receive a request from the application to establish a first stream,

wherein the first stream is used for transmitting data from the application to the corresponding application and receiving data from the corresponding application for the application, and

wherein the request from the application includes an express indication as to whether the first stream is reliable or unreliable;

receive application data from the application, wherein the application data is to be transmitted to the corresponding application at the receiver;

construct a first data frame to include an identifier of the first stream, a largest packet number of packets acknowledged by the receiver, and the application data as a payload;

send a request to the connection management module to transmit the first data frame to the receiver over the network; and

the second operations that implement the connection management module comprise operations to:

receive the first data frame of the first stream and a second data frame that includes an identification of a second stream from the session management module, wherein the first stream is associated with a first underlying protocol and the second stream is associated with a second underlying protocol, and the first underlying protocol is different than the second underlying protocol; and

transmit the first data frame and the second data frame to the receiver according to the corresponding underlying protocol, wherein the first stream and the second stream are transmitted with different streaming requirements.

17. The non-transitory computer-readable storage medium of claim 16 ,

wherein the first stream is a reliable or unreliable stream, and the second stream is a partially reliable stream, and

wherein the first operations comprises operations that implement a scheduler module, the first operations that implement the scheduler module comprise operations to:

receive a first stream frame from the first stream, wherein the first stream has a first priority;

receive a second stream frame from the second stream, wherein the second stream has a second priority that is higher than the first priority; and

responsive to the second priority being higher than the first priority, handing off the second stream frame to the connection management module for transmission before the first stream frame.

18. The non-transitory computer-readable storage medium of claim 16 ,

wherein the second operations that implement the connection management module further comprise operations to:

receive from the receiver a congestion feedback frame comprising network statistics collected by the receiver, the congestion feedback frame comprises an amount of data transmitted for at least one stream.

19. The non-transitory computer-readable storage medium of claim 18 , wherein the second operations that implement the connection management module further comprise operations to:

responsive to receiving an acknowledgement of the packet from the receiver:

remove the packet from a cache; and

notify the session management module of acknowledgment of each frame encapsulated in the packet; and

responsive to not receiving the acknowledgement of the packet from the receiver:

notify the session management module of loss of the each frame encapsulated in the packet.

20. The non-transitory computer-readable storage medium of claim 18 ,

wherein the packet comprises a packet number,

wherein the acknowledgment frame further comprises:

ranges of packet numbers of packets received by the receiver,

respective indications of received timestamps of packets of the ranges of the packet numbers, and

wherein the second operations that implement the connection management module further comprise operations to:

determine whether the packet was received by the receiver based on whether a range of the ranges includes the packet number.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2021
From: XIA, TIAN; LIU, YONG
To: AGORA LAB, INC.
Reel/Frame 056233/0970 →
Continuity (1)
Related Publication 20220368764A1 · Nov 17, 2022