IP Library Granted Patent US 9,584,403
Granted Patent B2
US 9,584,403 · App. 14/477,804 · Granted Feb 28, 2017

Communications scheduler

Inventors: David Anthony Hughes (Los Altos Hills, CA); Balaji Balasubramanian (San Jose, CA); Danny Kwok (Los Altos, CA)
Assignee: Silver Peak Systems, Inc.
H04L45/24H04L43/0894H04L45/00H04L47/22H04L47/24H04L47/6275
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 9,584,403
App. No.
14/477,804
Granted
Feb 28, 2017
Kind
B2
Abstract

A system for providing communications over a communications network includes a communications interface and a processor. The communications interface communicates over the communications network. The processor directs a communications scheduler to determine at least one metric for a path within the communications network. The processor also selects a data flow for the path and determines whether to transmit a packet in the selected data flow based on the at least one metric. The processor then directs a communications protocol handler to generate the packet for the selected data flow.

Claims (37)

1. A system for providing network communications, the system comprising:

a TCP/IP stack module stored in memory and executed by a processor to:

receive a plurality of original application data packets from a data flow, inform a communications scheduler module that the data flow has data to be transmitted over a network, and generate at least one data packet for the data flow from the plurality of original application data packets to be transmitted over the network when directed by the communications scheduler module;

the communications scheduler module stored in memory and executed by the processor to:

determine the capacity of a network path, select a suitable network path, select a prioritized data flow for the selected network path, and direct the TCP/IP stack module to generate the at least one data packet for the selected prioritized data flow from the application data in the selected prioritized data flow for immediate transmission of the selected prioritized data flow over the network, overriding standard TCP flow control; and

a communications interface module stored in memory and executed by the processor to transmit the at least one data packet for the selected prioritized data flow via the selected network path at an optimal transmission rate, regardless of TCP flow control status.

2. The system of claim 1 , wherein the execution of the communications scheduler module to determine the capacity of the network path includes determining a bandwidth estimate.

3. The system of claim 1 , wherein the communications interface module transmits the at least one data packet for the data flow via the selected network path at a rate based on a bandwidth estimate for the capacity of the network path.

4. The system of claim 1 , wherein the communications scheduler module is executable to determine whether a data flow has information to send prior to selecting the data flow for the network path.

5. The system of claim 1 , wherein the communications scheduler module is executable to determine respective priorities of data flows and select the data flow based on the priorities and the capacity of the network path.

6. The system of claim 1 , wherein the prioritized data flow is selected based on a fairness policy.

7. The method of claim 1 , wherein the prioritized data flow is selected based on at least one of the application that originated the data flow, the user of the application, the number of data flows previously sent from the application or the user, and the number of packets previously sent from that data flow.

8. A method for providing network communications, the method comprising:

receiving at a TCP/IP stack module application data in a plurality of original application data packets from a data flow

informing a communications scheduler module that the data flow has data to be transmitted over a network

receiving an instruction at the TCP/IP stack module from the communications scheduler module to send the data to the communications scheduler module;

generating by the TCP/IP stack module at least one data packet for the data flow from the plurality of original application data packets to be transmitted over the network; and

sending the at least one data packet to the communications scheduler module for transmission over the network, wherein the communications scheduler is configured to:

determine the capacity of a network path, select a suitable network path, select a prioritized data flow for the selected network path, and direct the TCP/IP stack module to generate the at least one data packet for the selected prioritized data flow from the application data in the selected prioritized data flow for immediate transmission of the selected prioritized data flow over the network, overriding standard TCP flow control; and

executing by a processor a communications interface module stored in memory to transmit the at least one data packet for selected prioritized data flow via the selected network path at an optimal transmission rate, regardless of TCP flow control status.

9. The method of claim 8 , wherein determining the capacity of the network path by the communications scheduler module includes determining a bandwidth estimate for the network path.

10. The method of claim 8 , wherein the at least one data packet for the data flow is transmitted by the communications interface module via the selected network path at a rate based on a bandwidth estimate for the capacity of the network path.

11. The method of claim 8 , further comprising determining by the communications scheduler module whether a data flow has information to send prior to selecting the data flow for the network path.

12. The method of claim 8 , further comprising determining respective priorities of data flows by the communications scheduler module, wherein the data flow is selected based on the priorities and the capacity of the network path.

13. The method of claim 8 , wherein the prioritized data flow is selected based on a fairness policy.

14. The method of claim 8 , wherein the prioritized data flow is selected based on at least one of the application that originated the data flow, the user of the application, the number of data flows previously sent from the application or the user, and the number of packets previously sent from that data flow.

15. A non-transitory computer readable storage medium having a program embodied thereon, the program executable by a processor to perform a method for providing network communications, the method comprising:

executing a TCP/IP stack module stored in memory to:

receive a plurality of original application data packets from a data flow, inform a communications scheduler module that the data flow has data to be transmitted over a network, and generate at least one data packet for the data flow from the plurality of original application data packets to be transmitted over the network when directed by the communications scheduler module;

executing the communications scheduler module stored in memory to:

determine the capacity of a network path, select a suitable network path, select a prioritized data flow for the selected network path, and direct the TCP/IP stack module to generate the at least one data packet for the selected prioritized data flow from the application data in the selected prioritized data flow for immediate transmission of the selected prioritized data flow over the network, overriding standard TCP flow control; and

executing a communications interface module stored in memory to transmit the at least one data packet for selected prioritized data flow via the selected network path at an optimal transmission rate, regardless of TCP flow control status.

16. The computer readable storage medium of claim 15 , wherein executing the communications scheduler module to determine the capacity of the network path includes determining a bandwidth estimate.

17. The computer readable storage medium of claim 15 , wherein executing the communications interface module transmits the at least one data packet for the data flow via the selected network path at a rate based on a bandwidth estimate for the capacity of the network path.

18. The computer readable storage medium of claim 15 , wherein the method further comprises executing the communications scheduler module to determine whether a data flow has information to send prior to the selection of the data flow for the network path.

19. The computer readable storage medium of claim 15 , wherein the method further comprises executing the communications scheduler module to determine respective priorities of data flows, wherein the data flow is selected based on the priorities and the capacity of the network path.

20. The computer readable storage medium of claim 15 , wherein the prioritized data flow is selected based on a fairness policy.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2022
From: SILVER PEAK SYSTEMS, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 059684/0387 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2022
From: SILVER PEAK SYSTEMS, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 058985/0152 →
RELEASE OF SECURITY INTEREST Recorded Sep 22, 2020
From: GOLUB CAPITAL LLC
To: SILVER PEAK SYSTEMS, INC.
Reel/Frame 053852/0231 →
SECURITY INTEREST Recorded Apr 16, 2019
From: SILVER PEAK SYSTEMS, INC.
To: GOLUB CAPITAL LLC, AS AGENT
Reel/Frame 048921/0455 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2014
From: HUGHES, DAVID ANTHONY; BALASUBRAMANIAN, BALAJI; KWOK, DANNY
To: SILVER PEAK SYSTEMS, INC.
Reel/Frame 033738/0358 →
Continuity (2)
Continuation 11498491 · Aug 2, 2006
Related Publication 20140379937A1 · Dec 25, 2014