IP Library Granted Patent US 8,644,157
Granted Patent B2
US 8,644,157 · App. 13/073,709 · Granted Feb 4, 2014

Systems and methods for handling NIC congestion via NIC aware application

Inventors: Ashok Kumar Jagadeeswaran (Karnataka, IN); Saravana Annamalaisami (Karnataka, IN); Ramanjaneyulu Talla (Karnataka, IN); Jyotheesh Rao Kurma (Karnataka, IN); Mohit Saxena (Karnataka, IN)
Assignee: Citrix Systems, Inc.
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 8,644,157
App. No.
13/073,709
Granted
Feb 4, 2014
Kind
B2
Abstract

The present solution is directed to a system for handling network interface card (NIC) congestion by a NIC aware application. The system may include a device having a plurality of network interface cards (NICs), a transmission queue corresponding to a NIC of the plurality of NICs; and an overflow queue for storing packets for the NIC when congested. The system may also include an application executing on the device outputting a plurality of packets to the transmission queue responsive to detecting that the NIC is identified as not congested. The device identifies the NIC as congested responsive to determining that a number of packets stored in the transmission queue has reached a predetermined threshold and responsive to detecting identification of the NIC as congested, the application stores one or more packets to the overflow queue. The device transmits one or more of the plurality of packets stored in the transmission queue and transmits a predetermined number of packets from the overflow queue.

Claims (30)

1. A method for handling network interface card (NIC) congestion by a NIC aware application, the method comprising:

(a) outputting, by an application executing on device having a plurality of network interface cards (NICs), a plurality of packets to a transmission queue corresponding to a NIC of the plurality of NICs, the application detecting that the NIC is identified as not congested;

(b) identifying, by the device, the NIC as congested responsive to determining that a number of packets stored in the transmission queue has reached a predetermined threshold;

(c) outputting, by the application responsive to detecting identification of the NIC as congested, one or more packets to an overflow queue;

(d) transmitting, by the device while the NIC is identified as congested, one or more of the plurality of packets stored in the transmission queue; and

(e) transmitting, by the device while the NIC is identified as congested, a predetermined number of packets from the overflow queue;

(d) and (e) are performed to maintain a predetermined ratio of transmitted packets from the transmission queue to transmitted packets from the overflow queue.

2. The method of claim 1 , wherein step (a) further comprises determining, by the device, that the number of packets stored in the transmission queue is below the predetermined threshold.

3. The method of claim 1 , wherein step (a) further comprises identifying, by the device, the NIC as not congested.

4. The method of claim 1 , wherein step (a) further comprises outputting, by the application, the plurality of packets for a transport layer connection.

5. The method of claim 1 , wherein step (b) further comprises determining that the number of packets stored in the transmission queue has reached the predetermined threshold comprising a percentage of a size of the transmission queue.

6. The method of claim 1 , wherein step (c) further comprises outputting, by an output function of the application, the one or more packets to the overflow queue and returning to processing by the application.

7. The method of claim 1 , wherein step (d) further comprises transmitting, by the device, the one or more of the plurality of packets stored in the transmission queue on a per connection basis.

8. The method of claim 1 , wherein step (e) further comprises transmitting, by the device, the predetermined number of packets from the overflow queue corresponding to a predetermined number of connections identified in the overflow queue.

9. The method of claim 1 , wherein step (e) further comprises transmitting, by the device, the predetermined number of packets from the overflow queue corresponding to a transport layer connection.

10. A system for handling network interface card (NIC) congestion by a NIC aware application, the system comprising:

a device having a plurality of network interface cards (NICs); a transmission queue corresponding to a NIC of the plurality of NICs; an overflow queue for storing packets for the NIC when congested; and

an application executing on the device outputting a plurality of packets to the transmission queue responsive to detecting that the NIC is identified as not congested;

wherein the device identifies the NIC as congested responsive to determining that a number of packets stored in the transmission queue has reached a predetermined threshold;

wherein the application responsive to detecting identification of the NIC as congested, outputs one or more packets to the overflow queue; and

wherein, while the NIC is identified as congested, the device transmits (j) one or more of the plurality of packets stored in the transmission queue and (ii) a predetermined number of packets from the overflow queue

wherein the device transmits (i) the one or more of the plurality of packets stored in the transmission queue and (ii) the predetermined number of packets from the overflow queue to maintain a predetermined ratio of transmitted packets from the transmission queue to transmitted packets from the overflow queue.

11. The system of claim 10 , wherein the device determines that the number of packets stored in the transmission queue is below the predetermined threshold.

12. The system of claim 10 , wherein the device identifies the NIC as not congested.

13. The system of claim 10 , wherein the application outputs the plurality of packets for a transport layer connection.

14. The system of claim 10 , wherein the device determines that the number of packets stored in the transmission queue has reached the predetermined threshold comprising a percentage of a size of the transmission queue.

15. The system of claim 10 , wherein an output function of the application stores the one or more packets to the overflow queue and returns to processing by the application.

16. The system of claim 10 , wherein the device transmits the one or more of the plurality of packets stored in the transmission queue on a per connection basis.

17. The system of claim 10 , wherein the device transmits the predetermined number of packets from the overflow queue corresponding to a predetermined number of connections identified in the overflow queue.

18. The system of claim 10 , wherein the device transmits the predetermined number of packets from the overflow queue corresponding to a transport layer connection.

Assignments (9)
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: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
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 →
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 Aug 16, 2011
From: JAGADEESWARAN, ASHOK KUMAR; ANNAMALAISAMI, SARAVANA; TALLA, RAMANJANEYULU; KURMA, JYOTHEESH RAO; SAXENA, MOHIT
To: CITRIX SYSTEMS, INC.
Reel/Frame 026760/0297 →
Continuity (1)
Related Publication 20120250512A1 · Oct 4, 2012