IP Library Granted Patent US 9,652,417
Granted Patent B2
US 9,652,417 · App. 14/281,170 · Granted May 16, 2017

Network interface card rate limiting

Inventors: Zhiwei Dai (Campbell, CA); Xu Zhou (San Jose, CA)
Assignee: Fortinet, Inc.
G06F13/28G06F13/1673G06F13/225G06F13/34G06F2213/2408G06F2213/2804
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,652,417
App. No.
14/281,170
Granted
May 16, 2017
Kind
B2
Abstract

Systems and methods for limiting the rate of packet transmission from a NIC to a host CPU are provided. According to one embodiment, data packets are received from a network by the NIC. The NIC is coupled to a host central processing unit (CPU) of a network appliance through a bus system. A status of the host CPU is monitored by the NIC. A rate limiting mode indicator is set by the NIC based on the status. When the rate limiting mode indicator indicates rate limiting is inactive, then the received data packets are transmitted from the NIC to the host CPU for processing. When the rate limiting mode indicator indicates rate limiting is active, then rate limiting is performing by temporarily stopping or slowing transmission of the received data packets from the NIC to the host CPU for processing.

Claims (100)

1. A method comprising:

receiving, by a network interface card (NIC), data packets from a network, wherein the NIC is coupled to a host central processing unit (CPU) of a network appliance through a bus system;

monitoring, by the NIC, a status of the host CPU, including:

responsive to receiving a data packet, notifying the host CPU the data packet is available for processing by the host CPU, by issuing, by the NIC, an interrupt to the host CPU;

disabling, by the NIC, the interrupt;

measuring, by the NIC, a time period during which the interrupt remains disabled by monitoring the interrupt; and

determining, by the NIC, the host CPU is busy when the time period exceeds a threshold;

setting, by the NIC, a rate limiting mode indicator based on the status;

when the rate limiting mode indicator indicates rate limiting is inactive, then transmitting, by the NIC, the received data packets to the host CPU for processing; and

when the rate limiting mode indicator indicates rate limiting is active, then performing, by the NIC, rate limiting by temporarily stopping or slowing transmission of the received data packets to the host CPU for processing.

2. The method of claim 1 , wherein said monitoring, by the NIC, a status of the host CPU further comprises:

monitoring, by the NIC, a length of a data packet queue maintained by the NIC, wherein the data packet queue is used for storing data packets that are received by the NIC but which cannot be immediately processed by the host CPU; and

determining, by the NIC, the host CPU is busy when the length exceeds a threshold.

3. The method of claim 1 , further comprising:

after determining the host CPU is busy, continuing to monitor, by the NIC, the interrupt; and

when the interrupt is observed to be re-enabled, then:

determining, by the NIC, the host CPU is no longer busy; and

resuming transmission of the received data packets to the host CPU after a predetermined amount of time.

4. The method of claim 2 , further comprising:

after determining the host CPU is busy, continuing to monitor, by the NIC, the length of the data packet queue; and

when the length is equal to or less than the threshold, then:

determining, by the NIC, the host CPU is no longer busy; and

resuming transmission of the received data packets to the host CPU after a predetermined amount of time.

5. The method of claim 1 , wherein said setting a rate limiting mode indicator based on the status is performed by a first process running on the NIC and wherein said transmitting the received data packets and said rate limiting is performed by a second process running on the NIC.

6. The method of claim 1 , wherein said temporarily stopping or slowing transmission of the received data packets comprises buffering, by the NIC, the received data packets.

7. The method of claim 1 , further comprising:

determining, by the NIC, a relative priority of each of the received data packets; and

wherein said temporarily stopping or slowing transmission of the received data packets comprises (i) buffering, by the NIC, those of the received data packets determined to have a relatively high priority; and (ii) dropping, by the NIC, those of the received data packets determined to have a relatively low priority.

8. The method of claim 7 , wherein said determining a relative priority of each of the received data packets is based on a protocol associated with the received data packet.

9. A programmable network interface controller (NIC) comprising:

a non-transitory storage device having embodied therein instructions representing a data packet rate limiting routine; and

one or more processors coupled to the non-transitory storage device and operable to execute the data packet rate limiting routing to perform a method comprising:

receiving, data packets from a network, wherein the NIC is coupled to a host central processing unit (CPU) of a network appliance through a bus system;

monitoring a status of the host CPU, including:

responsive to receiving a data packet, notifying the host CPU the data packet is available for processing by the host CPU, by issuing an interrupt to the host CPU;

disabling the interrupt;

measuring a time period during which the interrupt remains disabled by monitoring the interrupt; and

determining the host CPU is busy when the time period exceeds a threshold;

setting a rate limiting mode indicator based on the status;

when the rate limiting mode indicator indicates rate limiting is inactive, then transmitting the received data packets from the NIC to the host CPU for processing; and

when the rate limiting mode indicator indicates rate limiting is active, then performing rate limiting by temporarily stopping or slowing transmission of the received data packets from the NIC to the host CPU for processing.

10. The programmable network interface controller of claim 9 , wherein said monitoring a status of the host CPU further comprises:

monitoring a length of a data packet queue maintained on the NIC, wherein the data packet queue is used for storing data packets that are received by the NIC but which cannot be immediately processed by the host CPU; and

determining the host CPU is busy when the length exceeds a threshold.

11. The programmable network interface controller of claim 9 , wherein the method further comprises:

after determining the host CPU is busy, continuing to monitor the interrupt; and

when the interrupt is observed to be re-enabled, then:

determining the host CPU is no longer busy; and

resuming transmission of the received data packets from the NIC to the host CPU after a predetermined amount of time.

12. The programmable network interface controller of claim 10 , wherein the method further comprises:

after determining the host CPU is busy, continuing to monitor the length of the data packet queue; and

when the length is equal to or less than the threshold, then:

determining the host CPU is no longer busy; and

resuming transmission of the received data packets from the NIC to the host CPU after a predetermined amount of time.

13. The programmable network interface controller of claim 9 , wherein said setting a rate limiting mode indicator based on the status is performed by a first process associated with the data packet rate limiting routine and wherein said transmitting the received data packets and said rate limiting is performed by a second process associated with the data packet rate limiting routine.

14. The programmable network interface controller of claim 9 , wherein said temporarily stopping or slowing transmission of the received data packets comprises buffering the received data packets.

15. The programmable network interface controller of claim 9 , wherein the method further comprises:

determining a relative priority of each of the received data packets; and

wherein said temporarily stopping or slowing transmission of the received data packets comprises (i) buffering those of the received data packets determined to have a relatively high priority; and (ii) dropping those of the received data packets determined to have a relatively low priority.

16. The programmable network interface controller of claim 15 , wherein said determining a relative priority of each of the received data packets is based on a protocol associated with the received data packet.

17. A method comprising:

receiving, by a network interface card (NIC), data packets from a network, wherein the NIC is coupled to a host central processing unit (CPU) of a network appliance through a bus system;

monitoring, by the NIC, a status of the host CPU;

setting, by a first process running on the NIC, a rate limiting mode indicator based on the status;

when the rate limiting mode indicator indicates rate limiting is inactive, then transmitting, by a second process running on the NIC, the received data packets to the host CPU for processing; and

when the rate limiting mode indicator indicates rate limiting is active, then performing, by the NIC, rate limiting by temporarily stopping or slowing transmission of the received data packets to the host CPU for processing.

18. The method of claim 17 , wherein said monitoring, by the NIC, a status of the host CPU further comprises:

monitoring, by the NIC, a length of a data packet queue maintained by the NIC, wherein the data packet queue is used for storing data packets that are received by the NIC but which cannot be immediately processed by the host CPU; and

determining, by the NIC, the host CPU is busy when the length exceeds a threshold.

19. The method of claim 18 , further comprising:

after determining the host CPU is busy, continuing to monitor, by the NIC, the length of the data packet queue; and

when the length is equal to or less than the threshold, then:

determining, by the NIC, the host CPU is no longer busy; and

resuming transmission of the received data packets to the host CPU after a predetermined amount of time.

20. The method of claim 17 , wherein said temporarily stopping or slowing transmission of the received data packets comprises buffering, by the NIC, the received data packets.

21. The method of claim 17 , further comprising:

determining, by the NIC, a relative priority of each of the received data packets; and

wherein said temporarily stopping or slowing transmission of the received data packets comprises (i) buffering, by the NIC, those of the received data packets determined to have a relatively high priority; and (ii) dropping, by the NIC, those of the received data packets determined to have a relatively low priority.

22. The method of claim 21 , wherein said determining a relative priority of each of the received data packets is based on a protocol associated with the received data packet.

23. A programmable network interface controller (NIC) comprising:

a non-transitory storage device having embodied therein instructions representing a data packet rate limiting routine; and

one or more processors coupled to the non-transitory storage device and operable to execute the data packet rate limiting routing to perform a method comprising:

receiving data packets from a network, wherein the NIC is coupled to a host central processing unit (CPU) of a network appliance through a bus system;

monitoring a status of the host CPU;

setting, by a first process associated with the data packet rate limiting routine, a rate limiting mode indicator based on the status;

when the rate limiting mode indicator indicates rate limiting is inactive, then transmitting, by a second process associated with the data packet rating limiting routine, the received data packets from the NIC to the host CPU for processing; and

when the rate limiting mode indicator indicates rate limiting is active, then performing rate limiting by temporarily stopping or slowing transmission of the received data packets from the NIC to the host CPU for processing.

24. The programmable network interface controller of claim 23 , wherein said monitoring a status of the host CPU further comprises:

monitoring a length of a data packet queue maintained on the NIC, wherein the data packet queue is used for storing data packets that are received by the NIC but which cannot be immediately processed by the host CPU; and

determining the host CPU is busy when the length exceeds a threshold.

25. The programmable network interface controller of claim 24 , wherein the method further comprises:

after determining the host CPU is busy, continuing to monitor the length of the data packet queue; and

when the length is equal to or less than the threshold, then:

determining the host CPU is no longer busy; and

resuming transmission of the received data packets from the NIC to the host CPU after a predetermined amount of time.

26. The programmable network interface controller of claim 23 , wherein said temporarily stopping or slowing transmission of the received data packets comprises buffering the received data packets.

27. The programmable network interface controller of claim 23 , wherein the method further comprises:

determining a relative priority of each of the received data packets; and

wherein said temporarily stopping or slowing transmission of the received data packets comprises (i) buffering those of the received data packets determined to have a relatively high priority; and (ii) dropping those of the received data packets determined to have a relatively low priority.

28. The programmable network interface controller of claim 27 , wherein said determining a relative priority of each of the received data packets is based on a protocol associated with the received data packet.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 19, 2014
From: DAI, ZHIWEI; ZHOU, XU
To: FORTINET, INC.
Reel/Frame 032924/0477 →
Continuity (1)
Related Publication 20150331815A1 · Nov 19, 2015