IP Library Granted Patent US 9,967,197
Granted Patent B2
US 9,967,197 · App. 14/595,070 · Granted May 8, 2018

Large scale bandwidth management of IP flows using a hierarchy of traffic shaping devices

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,967,197
App. No.
14/595,070
Granted
May 8, 2018
Kind
B2
Abstract

Described herein are approaches for shaping traffic within a data network. In particular, methods and systems herein describe devices configured to classify packets based on particular criteria. Based on a classification associated with a packet, a packet can be queued at a subscriber mux device, one of a plurality of subscriber devices, and an application device. In addition, the subscriber devices and the application device include qdiscs to shape traffic. Once the traffic is shaped, it is queued based on properties associated with packets.

Claims (46)

1. An appliance comprising:

a memory and a processor cooperating therewith to run a Classification kernel module, the Classification kernel module being configured to:

inspect a packet comprising a control buffer that comprises an array of values;

populate at least a portion of the control buffer with values based at least in part on criteria associated with the packet;

determine one or more traffic shaping rules comprising a first traffic shaping rule associated with a subscriber mux device and at least one subscriber device of a set of subscriber devices, wherein each subscriber device of the set of subscriber devices comprises at least one qdisc; and

provide the packet from the Classification kernel module to the subscriber mux device based on the first traffic shaping rule, wherein the subscriber mux device provides the packet to a subscriber device of the set of subscriber devices, and wherein the subscriber device provides the packet to a network interface;

wherein a wireless head device is configured to populate at least a portion of the control buffer, and wherein the packet is provided from an application device to the network interface based at least in part on the values in the control buffer populated by the wireless head device.

2. The appliance of claim 1 , wherein the Classification kernel module is further configured to: determine a second traffic shaping rule, the second traffic shaping rule comprising a traffic shaping rule associated with an application device, wherein the application device comprises at least one qdisc, and wherein the application device is configured to received packets from the subscriber device.

3. The appliance of claim 1 , wherein the criteria associated with the packet is based at least in part on subscriber data.

4. The appliance of claim 1 , wherein the criteria associated with the packet is based at least in part on application data.

5. The appliance of claim 1 , wherein the subscriber mux device provides the packet to the subscriber device of the set of subscriber devices based at least in part on subscriber data.

6. The appliance of claim 1 , wherein an Internet head device is configured to populate at least a portion of the control buffer, and wherein the packet is provided from an application device to the network interface based at least in part on the values in the control buffer populated by the Internet head device.

7. A method for traffic shaping, the method being performed by one or more processors and comprising:

determining criteria associated with a packet;

populating, at a Classification kernel module, at least subscriber data into an array of values, wherein the subscriber data is based at least in part on the criteria associated with the packet;

queuing the packet from the Classification kernel module to a wireless head device or an Internet head device;

populating, at the wireless head device or the Internet head device, interface data into the array of values,

providing the packet from the wireless head device or Internet head device to a subscriber mux device;

determining, based at least in part on the subscriber data, a subscriber device of a plurality of subscriber devices;

providing the packet from the subscriber mux device to the determined subscriber device of the plurality of subscriber devices; and

providing the packet from the determined subscriber device to a network interface;

wherein the interface data is based at least in part on whether the packet was transmitted to a wireless head device or an Internet head device, and the network interface is determined based at least in part on the interface data.

8. The method of claim 7 , further comprising: populating, at the Classification kernel module, application data into the array of values, wherein the application data is based at least in part on the criteria associated with the packet, and wherein providing the packet from the determined subscriber device comprises providing the packet from the determined subscriber device to an application device based at least in part on the application data, wherein the application device provides the packet to the network interface.

9. The method of claim 7 , wherein the subscriber devices comprise a plurality of qdiscs.

10. The method of claim 7 , wherein subscriber data comprises at least two values, wherein a first value of the at least two values indicates which subscriber device of the plurality of subscriber devices to queue the packet to, and a second value of the at least two values indicates a subscriber device class identifier (ID).

11. The method of claim 10 , wherein the subscriber device class ID determines a class within the determined subscriber device to shape the packet.

12. A non-transitory computer-readable medium having computer-executable instructions for causing a processor of a computer to perform steps comprising:

determining criteria associated with a packet;

populating, at a Classification kernel module, at least subscriber data into an array of values, wherein the subscriber data is based at least in part on the criteria associated with the packet;

queuing the packet from the Classification kernel module to a wireless head device or an Internet head device;

populating, at the wireless head device or the Internet head device, interface data into the array of values, providing the packet from the wireless head device or Internet head device to a subscriber mux device;

determining, based at least in part on the subscriber data, a subscriber device of a plurality of subscriber devices;

providing the packet from the subscriber mux device to the determined subscriber device of the plurality of subscriber devices; and

providing the packet from the determined subscriber device to a network interface;

wherein the interface data is based at least in part on whether the packet was transmitted to a wireless head device or an Internet head device, and the network interface is determined based at least in part on the interface data.

13. The non-transitory computer-readable medium of claim 12 , further having computer executable instructions for causing the computer to perform a step comprising: populating, at the Classification kernel module, application data into the array of values, wherein the application data is based at least in part on the criteria associated with the packet, and wherein providing the packet from the determined subscriber device comprises providing the packet from the determined subscriber device to an application device based at least in part on the application data, wherein the application device provides the packet to the network interface.

14. The non-transitory computer-readable medium of claim 12 , wherein the subscriber devices comprise a plurality of qdiscs.

15. The non-transitory computer-readable medium of claim 12 , wherein subscriber data comprises at least two values, wherein a first value of the at least two values indicates which subscriber device of the plurality of subscriber devices to queue the packet to, and a second value of the at least two values indicates a subscriber device class identifier (ID).

16. The non-transitory computer-readable medium of claim 15 , wherein the subscriber device class ID determines a class within the determined subscriber device to shape the packet.

17. An appliance comprising:

a memory and a processor cooperating therewith to run a Classification kernel module, the Classification kernel module being configured to:

inspect a packet comprising a control buffer that comprises an array of values;

populate at least a portion of the control buffer with values based at least in part on criteria associated with the packet;

determine one or more traffic shaping rules comprising a first traffic shaping rule associated with a subscriber mux device and at least one subscriber device of a set of subscriber devices, wherein each subscriber device of the set of subscriber devices comprises at least one qdisc; and

provide the packet from the Classification kernel module to the subscriber mux device based on the first traffic shaping rule, wherein the subscriber mux device provides the packet to a subscriber device of the set of subscriber devices, and wherein the subscriber device provides the packet to a network interface;

wherein an Internet head device is configured to populate at least a portion of the control buffer, and wherein the packet is provided from an application device to the network interface based at least in part on the values in the control buffer populated by the Internet head device.

Assignments (11)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2015
From: BYTEMOBILE, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 037289/0606 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2015
From: CITRIX SYSTEMS, INC.
To: BYTEMOBILE, INC.
Reel/Frame 035440/0599 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2015
From: HARAN, JEFFREY; WASON, ASHWANI; STAVRAKOS, NICHOLAS; KOTLYAR, GRISHA
To: CITRIX SYSTEMS, INC.
Reel/Frame 034994/0385 →