# US 10,768,841 B2 · Technologies for managing network statistic counters

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,768,841 B2
- Document ID: US10768841B2
- Status: Granted
- Kind: B2
- Application number: 15/721,817
- Filed: 2017-09-30
- Published: 2018-05-31
- Granted: 2020-09-08
- Earliest claimed: 2016-11-29
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Linden Cornett; Chih-Jen Chang; Manasi Deval; Parthasarathy Sarangam; Naru D. Sundar; Padma Akkiraju; Alexander Nguyen
- Web page: https://patentgrep.com/patent/US10768841B2

## CPC

- G06F 9/5005: {to service a request}
- H04L 41/0895: Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/5038: {considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups)}
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/505: {considering the load}
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- G06F 11/0709: {in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems}
- G06F 11/3006: {where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems (multiprogramming arrangements G06F9/46; allocation of resources G06F9/50)}
- G06F 11/3079: {the data filtering being achieved by reporting only the changes of the monitored data}
- G06F 11/3409: {for performance assessment}
- G06F 13/1652: {in a multiprocessor architecture (interprocessor communication using common memory G06F15/167)}
- G06F 13/4022: {using switching circuits, e.g. switching matrix, connection or expansion network (G06F13/4009 takes precedence)}
- G06F 13/4027: {using bus bridges (G06F13/4022 takes precedence)}
- G06F 15/161: {Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning (casings, cabinets, racks or drawers for data centers H05K5/00)}
- G06F 21/44: Program or device authentication
- G06F 21/57: Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F 21/70: Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F 21/73: by creating or determining hardware identification, e.g. serial numbers
- H03K 19/1731: {Optimisation thereof}
- H04L 41/0816: the condition being an adaptation, e.g. in response to network events
- H04L 41/0853: by actively collecting configuration information or by backing up configuration information
- H04L 41/12: Discovery or management of network topologies
- H04L 41/40: using virtualisation of network functions or resources, e.g. SDN or NFV entities
- H04L 47/83: based on usage prediction
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H05K 7/1492: {having electrical distribution arrangements, e.g. power supply or data communications}
- H04L 47/78: Architectures of resource allocation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H03K: PULSE TECHNIQUE (measuring pulse characteristics G01R; modulating sinusoidal oscillations with pulses H03C; transmission of digital information H04L; discriminator circuits detecting phase difference between two signals by counting or integrating cycles of oscillation H03D3/04; automatic control, starting, synchronisation or stabilisation of generators of electronic oscillations or pulses where the type of generator is irrelevant or unspecified H03L; coding, decoding or code conversion, in general H03M)
- H05K: PRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS

## Abstract

Technologies for managing network statistic counters include a network interface controller (NIC) of a computing device configured to identify a statistic counter of and a software consumer associated with a received network packet and identify an active counter page as a function of the identified software consumer. The NIC is further configured to read a value of the statistic counter stored at a counter memory address of a corresponding counter identifier entry of the identified active counter page, increment a read value of the statistic counter, and write the incremented value of the statistic counter back to the counter memory address. Additionally, in response to detecting a notification triggering event, generating a notification message that includes a present value of the statistic counter and a present value of each of the other statistic counters of the active counter page, and transmit the generated notification message to the software consumer. Other embodiments are described herein.

## Claims

### Claim 1

A computing device for managing network statistic counters, the computing device comprising:
a hardware compute engine; and
a network interface controller (NIC) to:
identify, by the NIC, a statistic counter of a plurality of statistic counters and a software consumer based on a received network packet, wherein the software consumer is presently executing on the computing device;
identify, by the NIC, an active counter page as a function of the identified software consumer, wherein the active counter page includes a plurality of counter identifier entries, and wherein each of the plurality of counter identifier entries includes a counter identifier of the statistic counter and a counter memory address of the statistic counter;
read, by the NIC, a value of the statistic counter stored at the counter memory address of a corresponding counter identifier entry;
increment, by the NIC, the read value of the statistic counter;
write, by the NIC, the incremented value of the statistic counter back to the counter memory address;
determine, by the NIC, whether a notification triggering event has been detected;
generate, by the NIC and in response to having detected the notification triggering event, a notification message, wherein a body of the notification message includes a present value of the statistic counter and a present value of each of the other statistic counters of the active counter page; and
transmit, by the NIC, the generated notification message to the software consumer.

### Claim 2 (depends on 1)

The computing device of claim 1, wherein to transmit the generated notification message to the software consumer comprises to transmit the generated notification message to a consumer control queue associated with the software consumer.

### Claim 3 (depends on 1)

The computing device of claim 1, wherein to generate the notification message includes to capture a time at which the notification message was generated and attach a header to the notification message, and wherein the header includes the captured time.

### Claim 4 (depends on 3)

The computing device of claim 3, wherein to generate the notification message includes to attach a header to the notification message, wherein the header includes an indicator of a total number of statistic counters of the active counter page included in the notification message.

### Claim 5 (depends on 1)

The computing device of claim 1, wherein to determine whether the notification triggering event has been detected comprises to detect whether a timer managed by the NIC has expired.

### Claim 6 (depends on 1)

The computing device of claim 1, wherein to determine whether the notification triggering event has been detected comprises to detect whether a flush request has been received from the software consumer.

### Claim 7 (depends on 1)

The computing device of claim 1, wherein to determine whether the notification triggering event has been detected comprises to detect whether a value of any of the plurality of statistic counters has exceeded a threshold value.

### Claim 8 (depends on 1)

The computing device of claim 1, wherein to determine whether the notification triggering event has been detected comprises to detect whether a value of any of the plurality of statistic counters has grown by a predetermined value.

### Claim 9 (depends on 1)

The computing device of claim 1, wherein the plurality of instructions further cause the computing device to:
add, by the NIC and in response to the lookup operation not having returned a matching counter identifier, a new counter to the active counter page;
allocate, by the NIC, a new statistic counter at a new counter memory address;
set, by the NIC, a value of the new statistic counter to zero; and
write, by the NIC, an identifier of the new statistic counter and the new counter memory address to an empty counter identifier entry of the active counter page.

### Claim 10 (depends on 1)

The computing device of claim 1, wherein the plurality of instructions further cause the computing device to determine, by the NIC, a packet flow associated with the received network packet, and wherein to identify the statistic counter and the software consumer comprises to identify the statistic counter and the software consumer based on the determined packet flow.

### Claim 11 (depends on 1)

The computing device of claim 1, wherein the plurality of instructions further cause the computing device to perform, by the NIC, a lookup operation for the identified statistic counter in the identified active counter page to retrieve a counter memory address associated with the identified statistic counter, and wherein to read the value of the statistic counter stored at the counter memory address of the corresponding counter identifier entry comprises to read the value of the statistic counter at a matching counter identifier entry returned by the lookup operation subsequent to the lookup operation having returned the matching counter identifier entry.

### Claim 12

One or more non-transitory machine-readable storage media comprising a plurality of instructions stored thereon that, in response to being executed, cause a computing device to:
identify, by a network interface controller (NIC) of the computing device, a statistic counter of a plurality of statistic counters and a software consumer based on a received network packet, wherein the software consumer is presently executing on the computing device;
identify, by the NIC, an active counter page as a function of the identified software consumer, wherein the active counter page includes a plurality of counter identifier entries, and wherein each of the plurality of counter identifier entries includes a counter identifier of the statistic counter and a counter memory address of the statistic counter;
read, by the NIC, a value of the statistic counter stored at the counter memory address of a corresponding counter identifier entry;
increment, by the NIC, the read value of the statistic counter;
write, by the NIC, the incremented value of the statistic counter back to the counter memory address;
determine, by the NIC, whether a notification triggering event has been detected;
generate, by the NIC and in response to having detected the notification triggering event, a notification message, wherein a body of the notification message includes a present value of the statistic counter and a present value of each of the other statistic counters of the active counter page; and
transmit, by the NIC, the generated notification message to the software consumer.

### Claim 13 (depends on 12)

The one or more non-transitory machine-readable storage media of claim 12, wherein to transmit the generated notification message to the software consumer comprises to transmit the generated notification message to a consumer control queue associated with the software consumer.

### Claim 14 (depends on 12)

The one or more non-transitory machine-readable storage media of claim 12, wherein to generate the notification message includes to capture a time at which the notification message was generated and attach a header to the notification message, and wherein the header includes the captured time.

### Claim 15 (depends on 14)

The one or more non-transitory machine-readable storage media of claim 14, wherein to generate the notification message includes to attach a header to the notification message, wherein the header includes an indicator of a total number of statistic counters of the active counter page included in the notification message.

### Claim 16 (depends on 12)

The one or more non-transitory machine-readable storage media of claim 12, wherein to determine whether the notification triggering event has been detected comprises to detect whether a timer managed by the NIC has expired.

### Claim 17 (depends on 12)

The one or more non-transitory machine-readable storage media of claim 12, wherein to determine whether the notification triggering event has been detected comprises to detect whether a flush request has been received from the software consumer.

### Claim 18 (depends on 12)

The one or more non-transitory machine-readable storage media of claim 12, wherein to determine whether the notification triggering event has been detected comprises to detect whether a value of any of the plurality of statistic counters has one of exceeded a threshold value or grown by a predetermined value.

### Claim 19 (depends on 12)

The one or more non-transitory machine-readable storage media of claim 12, wherein the plurality of instructions further cause the computing device to:
add, by the NIC and in response to the lookup operation not having returned a matching counter identifier, a new counter to the active counter page;
allocate, by the NIC, a new statistic counter at a new counter memory address;
set, by the NIC, a value of the new statistic counter to zero; and
write, by the NIC, an identifier of the new statistic counter and the new counter memory address to an empty counter identifier entry of the active counter page.

### Claim 20 (depends on 12)

The one or more non-transitory machine-readable storage media of claim 12, wherein the plurality of instructions further cause the computing device to determine, by the NIC, a packet flow associated with the received network packet, and wherein to identify the statistic counter and the software consumer comprises to identify the statistic counter and the software consumer based on the determined packet flow.

### Claim 21 (depends on 12)

The one or more non-transitory machine-readable storage media of claim 12, wherein the plurality of instructions further cause the computing device to perform, by the NIC, a lookup operation for the identified statistic counter in the identified active counter page to retrieve a counter memory address associated with the identified statistic counter, and wherein to read the value of the statistic counter stored at the counter memory address of the corresponding counter identifier entry comprises to read the value of the statistic counter at a matching counter identifier entry returned by the lookup operation subsequent to the lookup operation having returned the matching counter identifier entry.

### Claim 22

A method for managing network statistic counters, the method comprising:
identifying, by a network interface controller (NIC) of a computing device, a statistic counter of a plurality of statistic counters and a software consumer based on a received network packet, wherein the software consumer is presently executing on the computing device;
identifying, by the NIC, an active counter page as a function of the identified software consumer, wherein the active counter page includes a plurality of counter identifier entries, and wherein each of the plurality of counter identifier entries includes a counter identifier of the statistic counter and a counter memory address of the statistic counter;
reading, by the NIC, a value of the statistic counter stored at the counter memory address of a corresponding counter identifier entry;
incrementing, by the NIC, the read value of the statistic counter;
writing, by the NIC, the incremented value of the statistic counter back to the counter memory address;
determining, by the NIC, whether a notification triggering event has been detected;
generating, by the NIC and in response to having detected the notification triggering event, a notification message, wherein a body of the notification message includes a present value of the statistic counter and a present value of each of the other statistic counters of the active counter page; and
transmitting, by the NIC, the generated notification message to the software consumer.

### Claim 23 (depends on 22)

The method of claim 22, further comprising:
adding, by the NIC and in response to the lookup operation not having returned a matching counter identifier, a new counter to the active counter page;
allocating, by the NIC, a new statistic counter at a new counter memory address;
setting, by the NIC, a value of the new statistic counter to zero; and
writing, by the NIC, an identifier of the new statistic counter and the new counter memory address to an empty counter identifier entry of the active counter page.

### Claim 24 (depends on 22)

The method of claim 22, further comprising determining, by the NIC, a packet flow associated with the received network packet, and wherein identifying the statistic counter and the software consumer comprises identifying the statistic counter and the software consumer based on the determined packet flow.

### Claim 25 (depends on 22)

The method of claim 22, further comprising performing, by the NIC, a lookup operation for the identified statistic counter in the identified active counter page to retrieve a counter memory address associated with the identified statistic counter, and wherein reading the value of the statistic counter stored at the counter memory address of the corresponding counter identifier entry comprises reading the value of the statistic counter at a matching counter identifier entry returned by the lookup operation subsequent to the lookup operation having returned the matching counter identifier entry.
