IP Library Granted Patent US 11,245,546
Granted Patent B2
US 11,245,546 · App. 16/322,073 · Granted Feb 8, 2022

Methods and systems for transmitting and receiving data packets through a bonded connection

Inventors: Patrick Ho Wai Sung (Kowloon, HK); Kam Chiu Ng (New Territories, HK); Wan Chun Leung (New Territories, HK)
Assignee: Pismo Labs Technology Limited
H04L12/2865H04L12/4633H04L43/087H04L67/2852
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,245,546
App. No.
16/322,073
Granted
Feb 8, 2022
Kind
B2
Abstract

The present invention relates to methods and systems for transmitting and receiving data packets between a first network node and a second network node through a bonded connection. At the first network node, a data packet, a session identification of the data packet and a time value of the data packet are encapsulated in an encapsulating packet. The first network node sends the encapsulating packet from the first network node to the second network node through the bonded connection. The second network node then stores the encapsulating packet after receiving it and determines an expiration time of the encapsulating packet. When the expiration time of the encapsulating packet expired, the second network node dequeues the encapsulating packet and forwards the data packet according to destination of the data packet.

Claims (67)

1. A method to transmit and receive data packets between a first network node and a second network node through a plurality of connections, wherein the plurality of connections are bonded to form a bonded connection, comprising:

a. at the first network node, encapsulating a data packet, a session identification of the data packet, a session sequence number of the data packet, and a time value of the data packet in an encapsulating packet;

b. at the first network node, sending the encapsulating packet to the second network node through the bonded connection;

c. at the second network node, after receiving the encapsulating packet, storing the encapsulating packet in a queue;

d. at the second network node, determining whether the queue is empty; and

determining an expiration time of the encapsulating packet; and

e. at the second network node, when the expiration time of the encapsulating packet expires:

i. dequeuing the encapsulating packet; and

ii. forwarding the data packet according to a destination of the data packet;

wherein:

the queue is selected based on the session identification of the data packet;

when the queue is empty, the expiration time of the encapsulating packet is determined based on a buffer period; and

when the queue is not empty, the expiration time of the encapsulating packet is based on time differences of a time value of the encapsulating packet and a time value of at least one currently-stored encapsulating packet;

the session identification of the data packet identifies a session of the data packet; and

the session sequence number of the data packet enables the data packet to be re-ordered per session.

2. The method of claim 1 , further comprising, at the second network node, determining whether the expiration time of the encapsulating packet is expired before the encapsulating packet is received; and

wherein the expiration time of the encapsulating packet is determined based on the time value.

3. The method of claim 2 , further comprising, at the second network node, when the expiration time of the encapsulating packet is expired, forwarding the data packet; and when the expiration time of the encapsulating packet is not expired, storing the encapsulating packet in the queue; and

wherein:

the expiration time of the encapsulating packet sent in step (b) is determined further based on an expiration time of at least one earlier-received encapsulating packet received by the second network node earlier; and

the at least one earlier-received encapsulating packet received by the second network node earlier and the encapsulating packet sent in step (b) have a same session identification.

4. The method of claim 3 , further comprising, at the second network node, adjusting the expiration time of the at least one earlier-received encapsulating packet received by the second network node earlier.

5. The method of claim 1 , wherein the time value is determined based on one of (i) a time the data packets arrived at the first network node, and (ii) the time value is determined based on a time the data packets are to be sent by the first network node or upon being sent by the first network node.

6. The method of claim 1 , wherein the time value is recorded in microsecond precision or nanosecond precision.

7. The method of claim 1 , wherein at least two of the plurality of connections have different latencies.

8. The method of claim 1 , further comprising, at the first network node, encapsulating a global sequence number in the encapsulating packet.

9. The method of claim 1 , further comprising, at the second network node, increasing the expiration time of the encapsulating packet.

10. A system for transmitting and receiving data packets through a plurality of connections established between a first network node and a second network node, comprising:

the first network node; and

the second network node, wherein the first network node is coupled to the second network node via the plurality of connections;

wherein:

the plurality of connections are bonded to form a bonded connection;

the first network node comprises:

at least one first network interface;

at least one first processing unit;

at least one first main memory; and

at least one first secondary storage storing program instructions executable by the at least one first processing unit and configured to cause the at least one first processing unit to perform:

a. encapsulating a data packet, a session identification of the data packet, a session sequence number of the data packet, and a time value of the data packet in an encapsulating packet; and

b. sending the encapsulating packet to the second network node through the bonded connection; and

the second network node comprises:

at least one second network interface;

at least one second processing unit;

at least one second main memory;

at least one second secondary storage storing program instructions executable by the at least one second processing unit and configured to cause the at least one second processing unit to perform:

c. after receiving the encapsulating packet, storing the encapsulating packet in a queue;

d. determining whether the queue is empty; and determining an expiration time of the encapsulating packet; and

e. when the expiration time of the encapsulating packet expires:

 i. dequeuing the encapsulating packet; and

 ii. forwarding the data packet according to a destination of the data packet;

wherein:

the queue is selected based on the session identification of the data packet;

when the queue is empty, the expiration time of the encapsulating packet is determined based on a buffer period; and

when the queue is not empty, the expiration time of the encapsulating packet is based on time differences of a time value of the encapsulating packet and a time value of at least one currently-stored encapsulating packet;

the session identification of the data packet identifies a session of the data packet; and

the session sequence number of the data packet enables the data packet to be re-ordered per session.

11. The system of claim 10 , wherein the at least one second secondary storage unit further stores program instructions executable by the at least one second processing unit and configured to cause the at least one second processing unit to perform determining whether the expiration time of the encapsulating packet is expired before the encapsulating packet is received; and

wherein the expiration time of the encapsulating packet is determined based on the time value.

12. The system of claim 11 , wherein the at least one second secondary storage unit further stores program instructions executable by the at least one second processing unit and configured to cause the at least one second processing unit to perform when the expiration time of the encapsulating packet is expired, forwarding the data packet; and when the expiration time of the encapsulating packet is not expired, storing the encapsulating packet in the queue; and

wherein:

the expiration time of the encapsulating packet sent in step (b) is determined further based on an expiration time of at least one earlier-received encapsulating packet received by the second network node earlier; and

the at least one earlier-received encapsulating packet received by the second network node earlier and the encapsulating packet sent in step (b) have a same session identification.

13. The system of claim 12 , wherein the at least one second secondary storage unit further stores program instructions executable by the at least one second processing unit and configured to cause the at least one second processing unit to perform adjusting the expiration time of the at least one earlier-received encapsulating packet received by the second network node earlier.

14. The system of claim 10 , wherein the time value is determined based on one of (i) a time the data packets arrived at the first network node, and (ii) the time value is determined based on a time the data packets are to be sent by the first network node or upon being sent by the first network node.

15. The system of claim 10 , wherein the time value is recorded in microsecond precision or nanosecond precision.

16. The system of claim 10 , wherein at least two of the plurality of connections have different latencies.

17. The system of claim 10 , wherein the at least one first secondary storage unit further stores program instructions executable by the at least one first processing unit and configured to cause the at least one first processing unit to perform encapsulating a global sequence number in the encapsulating packet.

18. The system of claim 10 , wherein the at least one second secondary storage further stores program instructions executable by the at least one second processing unit and configured to cause the at least one second processing unit to perform increasing the expiration time of the encapsulating packet.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2019
From: SUNG, PATRICK HO WAI; NG, KAM CHIU; LEUNG, WAN CHUN
To: PISMO LABS TECHNOLOGY LTD
Reel/Frame 050561/0745 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2019
From: SUNG, PATRICK HO WAI; NG, KAM CHIU; LEUNG, WAN CHUN
To: PISMO LABS TECHNOLOGY LIMITED
Reel/Frame 048368/0348 →
Continuity (1)
Related Publication 20200052926A1 · Feb 13, 2020