Method, system, and program for managing congestion in a network controller
First Claim
Patent Images
1. A method of a processor performing operations, the operations comprising:
- determining the level of packet traffic coming into a network controller;
selecting a priority level as a function of the determined traffic level;
assigning priority values to incoming packets;
accepting and processing incoming packets having an assigned priority value above said selected priority level; and
culling incoming packets having an assigned priority value below the selected priority level so that incoming packets having an assigned priority value below the selected priority level are culled as a function of the determined traffic level wherein said culling includes at least one of a) queuing in a processing suspension queue at least some incoming packets having a priority below said selected priority level to separate said packets being culled from unculled incoming packets and suspending processing of all of said packets in said queue, and b) discarding at least some incoming packets having a priority below the selected priority level;
wherein said accepting and processing incoming packets having an assigned priority value above said selected priority level includes bypassing said culling so that said queuing in a processing suspension queue and said discarding are both bypassed so that incoming packets having an assigned priority value above the selected priority level bypass said culling as a function of the determined traffic level.
1 Assignment
0 Petitions
Accused Products
Abstract
Provided are a method, system, and program for managing congestion in a network controller, which in one embodiment, substantially all packets having an assigned priority value below a selected priority level are culled. In another embodiment, selected flows of packets into a network controller are culled at selected culling rates. In one example, a selected flow may be drastically culled. In another example, all flows may be culled at a certain rate which does not exceed a maximum for each flow. In another example, culling techniques may be combined.
58 Citations
72 Claims
-
1. A method of a processor performing operations, the operations comprising:
-
determining the level of packet traffic coming into a network controller; selecting a priority level as a function of the determined traffic level; assigning priority values to incoming packets; accepting and processing incoming packets having an assigned priority value above said selected priority level; and culling incoming packets having an assigned priority value below the selected priority level so that incoming packets having an assigned priority value below the selected priority level are culled as a function of the determined traffic level wherein said culling includes at least one of a) queuing in a processing suspension queue at least some incoming packets having a priority below said selected priority level to separate said packets being culled from unculled incoming packets and suspending processing of all of said packets in said queue, and b) discarding at least some incoming packets having a priority below the selected priority level; wherein said accepting and processing incoming packets having an assigned priority value above said selected priority level includes bypassing said culling so that said queuing in a processing suspension queue and said discarding are both bypassed so that incoming packets having an assigned priority value above the selected priority level bypass said culling as a function of the determined traffic level. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method of a processor performing operations, the operations comprising:
-
determining the level of packet traffic coming into a network controller of a host from a plurality of sources external to said host; identifying individual traffic flows of packets within said incoming packets, each individual traffic flow having a separate network protocol connection between an external source and an internal destination of the network controller host; selecting as a function of said determined traffic level, at least one traffic flow for culling; selecting as a function of said determined traffic level, another traffic flow for accepting and processing incoming packets of said another traffic flow; selecting as a function of said traffic level, a culling rate for each traffic flow to be culled; and culling selected traffic flows to be culled at said selected culling rates wherein said culling includes at least one of a) queuing at least some incoming packets in a processing suspension queue to separate said packets being culled from unculled incoming packets and suspending processing of all of said packets in said queue, and b) discarding at least some incoming packets having a priority below the selected priority level so that incoming packets having an assigned priority value below the selected priority level are culled as a function of the determined traffic level; wherein said accepting and processing incoming packets of said another traffic flow includes bypassing said culling so that said queuing in a processing suspension queue and said discarding are both bypassed so that incoming packets having an assigned priority value above the selected priority level bypass said culling as a function of the determined traffic level. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. An article comprising at least one of hardware and a combination of hardware and software, said at least one including machine readable instructions stored on the hardware that when executed, causes the machine to:
-
determine the level of packet traffic coming into a network controller; select a priority level as a function of the determined traffic level; assign priority values to incoming packets; accept and process incoming packets having an assigned priority value above said selected priority level; and cull incoming packets having an assigned priority value below the selected priority wherein said culling includes at least one of a) queuing in a processing suspension queue at least some incoming packets having a priority below said selected priority level to separate said packets being culled from unculled incoming packets and suspending processing of all of said packets in said queue, and b) discarding at least some incoming packets having a priority below the selected priority level so that incoming packets having an assigned priority value below the selected priority level are culled as a function of the determined traffic level; wherein said accepting and processing incoming packets having an assigned priority value above said selected priority level includes bypassing said culling so that said queuing in a processing suspension queue and said discarding are both bypassed so that incoming packets having an assigned priority value above the selected priority level bypass said culling as a function of the determined traffic level. - View Dependent Claims (20, 21, 22, 23)
-
-
24. An article comprising at least one of hardware and a combination of hardware and software, said at least one including machine readable instructions stored on the hardware that when executed, causes the machine to:
-
determine the level of packet traffic coming into a network controller of a host from a plurality of sources external to said host; identify individual traffic flows of packets within said incoming packets, each individual traffic flow having a separate network protocol connection between an external source and an internal destination of the network controller host; select as a function of said determined traffic level, at least one traffic flow for culling; select as a function of said determined traffic level, another traffic flow for accepting and processing incoming packets of said another traffic flow; select as a function of said traffic level, a culling rate for each traffic flow to be culled; and cull selected traffic flows at said selected culling rates wherein said culling includes at least one of a) queuing in a processing suspension queue at least some incoming packets to separate said packets being culled from unculled incoming packets and suspending processing of all of said packets in said queue, and b) discarding at least some incoming packets having a priority below the selected priority level so that incoming packets having an assigned priority value below the selected priority level are culled as a function of the determined traffic level; wherein said accepting and processing incoming packets of said another traffic flow includes bypassing said culling so that said queuing in a processing suspension queue and said discarding are both bypassed so that incoming packets having an assigned priority value above the selected priority level bypass said culling as a function of the determined traffic level. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36)
-
-
37. A system for use with a network, comprising:
-
at least one system memory which includes an operating system; a motherboard; a processor mounted on the motherboard and coupled to the memory; an expansion card coupled to said motherboard; a network adapter mounted on said expansion card; and a device driver executable by the processor in the system memory for said network adapter, wherein the network adapter is adapted to; determine the level of packet traffic coming into said network adapter; select a priority level as a function of the determined traffic level; assign priority values to incoming packets; accept and process incoming packets having an assigned priority value above said selected priority level; and cull incoming packets having an assigned priority value below the selected priority level so that incoming packets having an assigned priority value below the selected priority level are culled as a function of the determined traffic level wherein said culling includes at least one of a) queuing in a processing suspension queue at least some incoming packets having a priority below said selected priority level to separate said packets being culled from unculled incoming packets and suspending processing of all of said packets in said queue, and b) discarding at least some incoming packets having a priority below the selected priority level; wherein said accepting and processing incoming packets having an assigned priority value above said selected priority level includes bypassing said culling so that said queuing in a processing suspension queue and said discarding are both bypassed so that incoming packets having an assigned priority value above the selected priority level bypass said culling as a function of the determined traffic level. - View Dependent Claims (38, 39, 40, 41)
-
-
42. A system for use with a network having a plurality of sources, comprising:
-
at least one system memory which includes an operating system; a plurality of packet destinations within said system; a motherboard; a processor mounted on the motherboard and coupled to the memory; an expansion card coupled to said motherboard; a network adapter mounted on said expansion card and having a transport protocol offload engine and a plurality of buffers; and a device driver executable by the processor in the system memory for said network adapter wherein the network adapter is adapted to; determine the level of packet traffic coming into said network adapter of a host from a plurality of sources external to said host; identify individual traffic flows of packets within said incoming packets, each individual traffic flow having a separate network protocol connection between a network source and a destination of the system; select as a function of said determined traffic level, at least one traffic flow for culling; select as a function of said determined traffic level, another traffic flow for accepting and processing incoming packets of said another traffic flow; select as a function of said traffic level, a culling rate for each traffic flow to be culled; and cull selected traffic flows at said selected culling rates wherein said culling includes at least one of a) queuing in a processing suspension queue at least some incoming packets to separate said packets being culled from unculled incoming packets and suspending processing of all of said packets in said queue, and b) discarding at least some incoming packets having a priority below the selected priority level so that incoming packets having an assigned priority value below the selected priority level are culled as a function of the determined traffic level; wherein said accepting and processing incoming packets of said another traffic flow includes bypassing said culling so that said queuing in a processing suspension queue and said discarding are both bypassed so that incoming packets having an assigned priority value above the selected priority level bypass said culling as a function of the determined traffic level. - View Dependent Claims (43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54)
-
-
55. A device for use with packets coming from a network, comprising:
-
a network controller adapted to; determine the level of packet traffic coming into said network controller; select a priority level as a function of the determined traffic level; assign priority values to incoming packets; accept and process incoming packets having an assigned priority value above said selected priority level; and cull incoming packets having an assigned priority value below the selected priority level wherein said culling includes at least one of a) queuing in a processing suspension queue at least some incoming packets having a priority below said selected priority level to separate said packets being culled from unculled incoming packets and suspending processing of all of said packets in said queue, and b) discarding at least some incoming packets having a priority below the selected priority level so that incoming packets having an assigned priority value below the selected priority level are culled as a function of the determined traffic level; wherein said accepting and processing incoming packets having an assigned priority value above said selected priority level includes bypassing said culling so that said queuing in a processing suspension queue and said discarding are both bypassed so that incoming packets having an assigned priority value above the selected priority level bypass said culling as a function of the determined traffic level. - View Dependent Claims (56, 57, 58, 59)
-
-
60. A device for use with a network having a plurality of sources, comprising:
-
at least one device memory which includes an operating device; a plurality of packet destinations within said system; a motherboard; a processor mounted on the motherboard and coupled to the memory; an expansion card coupled to said motherboard; a network adapter mounted on said expansion card and having a transport protocol offload engine and a plurality of buffers; and a device driver executable by the processor in the system memory for said network adapter wherein the network adapter is adapted to; determine the level of packet traffic coming into said network adapter of a host from a plurality of sources external to said host; identify individual traffic flows of packets within said incoming packets, each individual traffic flow having a separate network protocol connection between a network source and a destination of the system; select as a function of said determined traffic level, at least one traffic flow for culling; select as a function of said determined traffic level, another traffic flow for accepting and processing incoming packets of said another traffic flow; select as a function of said traffic level, a culling rate for each traffic flow to be culled; and cull selected traffic flows at said selected culling rates wherein said culling includes at least one of a) queuing in a processing suspension queue at least some incoming packets to separate said packets being culled from unculled incoming packets and suspending processing of all of said packets in said queue, and b) discarding at least some incoming packets having a priority below the selected priority level so that incoming packets having an assigned priority value below the selected priority level are culled as a function of the determined traffic level; wherein said accepting and processing incoming packets of said another traffic flow includes bypassing said culling so that said queuing in a processing suspension queue and said discarding are both bypassed so that incoming packets having an assigned priority value above the selected priority level bypass said culling as a function of the determined traffic level. - View Dependent Claims (61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72)
-
Specification