IP Library Granted Patent US 7,801,145
Granted Patent B2
US 7,801,145 · App. 11/775,594 · Granted Sep 21, 2010

Method for transmitting network packets

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 7,801,145
App. No.
11/775,594
Granted
Sep 21, 2010
Kind
B2
Abstract

A method for transmitting network packets is provided. Reordered network packets received by a receiving end are put into a buffer queue. When a waiting time expires or when a network packet with a sequence number equal to the current transmission sequence number is received, the receiving end picks and transmits appropriate network packets from the buffer queue. Therefore, reordered network packets are sorted and then sent out sequentially, thereby avoiding waste of network bandwidth caused by retransmitting network packets, and improving the transmitting efficiency of the network.

Claims (44)

1. A method for transmitting network packets, suitable for a tunnel group having at least one tunnel, comprising:

receiving, at a receiving end computer system, a current network packet, the receiving end computer system has stored therein a transmission sequence number and a buffer queue;

comparing, by the receiving end computer system, a packet sequence number in the current network packet with the transmission sequence number;

if the packet sequence number is larger than the transmission sequence number, the receiving end computer system, adding the current network packet to the buffer queue, and correspondingly counting down a waiting time;

if the packet sequence number is equal to the transmission sequence number, the receiving end computer system transmitting the current network packet and network packets in the buffer queue with sequence numbers continuous with the current network packet;

if the packet sequence number is smaller than the transmission sequence number, the receiving end computer system determining whether or not to transmit the current network packet according to a requirement of the receiving end computer system; and

when the waiting time expires, the receiving end computer system transmitting network packets in the buffer queue with continuous sequence numbers, starting from the network packet with the minimum packet sequence number in the buffer queue.

2. The method for transmitting network packets as claimed in claim 1 , further comprising:

whenever a network packet in the buffer queue is transmitted, the receiving end computer system updating the transmission sequence number to be the packet sequence number of the last transmitted network packet plus 1.

3. The method for transmitting network packets as claimed in claim 1 , further comprising:

whenever a network packet in the buffer queue is transmitted, if the buffer queue is empty, the receiving end computer system clearing the waiting time.

4. The method for transmitting network packets as claimed in claim 1 , further comprising:

whenever a network packet in the buffer queue is transmitted, if the buffer queue is not empty, the receiving end computer system restarting the countdown of the waiting time.

5. The method for transmitting network packets as claimed in claim 1 , further comprising:

whenever a network packet in the buffer queue is transmitted, if the buffer queue is not empty, the receiving end computer system calculating a countdown duration, and starting to count down the countdown duration.

6. The method for transmitting network packets as claimed in claim 5 , wherein the step of “calculating the countdown duration” comprises:

the receiving end computer system taking a sum of the time when the first network packet is added to the buffer queue and the waiting time when the first network packet is added as a transmitting time; and

the receiving end computer system taking a difference between the transmitting time and a current time as the countdown duration.

7. The method for transmitting network packets as claimed in claim 1 , wherein the step of “if the packet sequence number is smaller than the transmission sequence number, the receiving end computer system determining whether or not to transmit the current network packet according to a requirement of the receiving end” comprises:

if the receiving end computer system does not require strictly-ordered transmission, the receiving end computer system transmitting the current network packet; and

if the receiving end computer system requires strictly-ordered transmission, the receiving end computer system dropping the current network packet.

8. The method for transmitting network packets as claimed in claim 1 , further comprising:

calculating, by the receiving end computer system, a delay time Lat i of each tunnel of the tunnel group according to a time difference for a network packet transmitted from a transmitting end computer system to the receiving end computer system via each said tunnel respectively, wherein the positive integer i is a tunnel number corresponding to the delay time;

calculating, by the receiving end computer system, a delay time variation Var i of each said tunnel according to a difference between the delay time and the previously-calculated delay time of each said tunnel; and

calculating, by the receiving end computer system, the waiting time according to the delay time and the delay time variation.

9. The method for transmitting network packets as claimed in claim 8 , wherein the time difference is a relative time difference or an absolute time difference, and the step of “calculating, by the receiving end computer system, a delay time Lat i of each said tunnel according to a time difference for a network packet transmitted from a transmitting end computer system to the receiving end computer system via each said tunnel respectively” comprises:

calculating, by the receiving end computer system, the delay time Lat i =Lat i old *N+Delta_t i /(N+1), where the Lat i old is the previously-calculated delay time of the tunnel, Delta_t i is the time difference, and N is an integer greater than 0.

10. The method for transmitting network packets as claimed in claim 8 , wherein the step of “calculating, by the receiving end computer system, a delay time variation Var i of each said tunnel according to a difference between the delay time and the previously-calculated delay time of each said tunnel” comprises:

calculating, by the receiving end computer system, the delay time variation Var i =(Var i old *M+|Delta_t i −Lat i old |)/(M+1), where Var i old is the previously-calculated delay time variation of the tunnel, Delta_t i is the time difference, Lat i old is the previously-calculated delay time of the tunnel, and M is an integer greater than 0.

11. The method for transmitting network packets as claimed in claim 8 , wherein the step of “if the packet sequence number is larger than the transmission sequence number, adding, by the receiving end computer system, the current network packet to the buffer queue, and correspondingly counting down a waiting time” further comprises:

if the buffer queue is empty before the current network packet is added to the buffer queue, starting, by the receiving end computer system, to count down the waiting time.

12. The method for transmitting network packets as claimed in claim 11 , wherein the step of “calculating, by the receiving end computer system, the waiting time according to the delay time and the delay time variation” further comprises:

calculating, by the receiving end computer system, a maximum value of the delay time Lat max =MAX(Lat 1 , Lat 2 , . . . , Lat k ), where k is a maximum tunnel number;

calculating, by the receiving end computer system, a maximum value of the delay time variation Var max =MAX(Var 1 ,Var 2 , . . . , Var k );

calculating, by the receiving end computer system, a maximum difference of the delay times Lat_Diff max =MAX((Lat max −Lat 1 ),(Lat 2 ), . . . , (Lat max −Lat k )); and

calculating, by the receiving end computer system, the waiting time=Lat_Diff max +Var max .

13. The method for transmitting network packets as claimed in claim 8 , wherein the waiting time comprises a tunnel waiting time Tun_wtime i of each said tunnel, and the step of “if the packet sequence number is larger than the transmission sequence number, adding, by the receiving end computer system, the current network packet to the buffer queue, and correspondingly counting down the waiting time” further comprises:

before the current network packet is added, starting, by the receiving end computer system, to count down the tunnel waiting time of the tunnel transmitting the current network packet.

14. The method for transmitting network packets as claimed in claim 13 , further comprising:

calculating, by the receiving end computer system, a maximum value of the delay time Lat max =MAX(Lat 1 ,Lat 2 , . . . , Lat k ), where k is the maximum tunnel number;

calculating, by the receiving end computer system, a maximum value of the delay time variation Var max =MAX(Var 1 ,Var 2 , . . . , Var k ); and

calculating, by the receiving end computer system, the tunnel waiting time Tun_wtime i =(Lat max −Lat i )+Var max .

15. The method for transmitting network packets as claimed in claim 13 , wherein the step of “transmitting, by the receiving end computer system, network packets in the buffer queue with continuous packet sequence numbers, starting from the network packet with the minimum packet sequence number” further comprises:

sequentially transmitting, by the receiving end computer system, network packets in the buffer queue from the network packet with the minimum packet sequence number to the network packet whose tunnel waiting time has expired, and the network packets having packet sequence numbers continuous with the network packet whose tunnel waiting time has expired.

Assignments (4)
SECURITY INTEREST Recorded Oct 6, 2015
From: XTERA COMMUNICATIONS, INC.
To: SQUARE 1 BANK
Reel/Frame 036795/0849 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2013
From: XTERA COMMUNICATIONS TAIWAN CO., LTD.
To: FORTINET, INC.
Reel/Frame 031342/0514 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2008
From: ASCEN VISION TECHNOLOGY INC.
To: XTERA COMMUNICATIONS TAIWAN CO., LTD.
Reel/Frame 020583/0676 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 10, 2007
From: XIA, XU-DONG; YUNG, YIH
To: ASCEN VISION TECHNOLOGY INC.
Reel/Frame 019545/0549 →