IP Library Granted Patent US 9,832,072
Granted Patent B1
US 9,832,072 · App. 15/168,495 · Granted Nov 28, 2017

Self-configuring computer network router

Inventor: Michael T. Piecuch (Hudson, NH)
Assignee: 128 Technology, Inc.
H04L41/0813H04L41/0886H04L47/82H04L49/90
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,832,072
App. No.
15/168,495
Granted
Nov 28, 2017
Kind
B1
Abstract

A self-configuring router includes a resource allocator that automatically assigns processors to queues, such that queue workload is distributed as evenly as possible among the processors, and the processors are as fully utilized as possible. Consequently, packets do not remain on queues longer than necessary, thereby decreasing latency of packets traversing the router, and available and expensive resources, namely the processors, are kept busy. The router automatically allocates its own resources (processors) to its own queues.

Claims (63)

1. A self-configuring router, comprising:

a plurality of P processors, each processor of the plurality of P processor having a normalized processor identifier;

a memory coupled to the plurality of P processors;

a plurality of queues represented by data stored in the memory, each queue of the plurality of queues having a normalized queue identifier;

a plurality of N network interfaces, wherein each network interface of the plurality of N network interfaces: (a) has a normalized network interface identifier, (b) is associated with at least one queue of the plurality of queues and (c) is configured to automatically enqueue messages received thereby onto the at least one queue associated therewith; and

a resource allocator configured to automatically:

(a) calculate, for each network interface/queue combination of the plurality of N network interfaces and the plurality of queues, a processor identifier of a respective processor of the plurality of P processors based on:

(1) the normalized queue identifier of the queue of the network interface/queue combination, (2) the normalized network interface identifier of the network interface associated with the queue, (3) the number N of network interfaces in the plurality of N network interfaces, (4) the number P of processors in the plurality of P processors and (5) a result of a modulo calculation involving the number P; and

(b) assign the processor having the calculated processor identifier to the network interface/queue combination to dequeue and process messages on the queue of the interface/queue combination.

2. The self-configuring router of claim 1 , wherein at least one network interface of the plurality of N network interfaces is associated with at least two queues of the plurality of queues.

3. The self-configuring router of claim 1 , wherein the resource allocator comprises a processor.

4. The self-configuring router of claim 1 , wherein:

each processor of the plurality of processors has a normalized processor identifier;

for each network interface/queue combination, the resource allocator:

calculates a group spacing as a quotient calculated by dividing the number P of processors by the number N of network interfaces and, if the quotient is less than 1, setting the group spacing to 1;

sets an offset to the normalized queue identifier of the queue of the network interface/queue combination;

calculates a group position as a quotient calculated by dividing the normalized queue identifier of the queue of the network interface/queue combination by the group spacing and truncating the quotient to an integer;

compares the group position to the number N of network interfaces;

if, as a result of the comparison, the group position is found to be less than the number N of network interfaces, sets the offset to a value according to the formula:

((the normalized queue identifier MODULO the group spacing)*the number N of network interfaces)+the group position;

calculates a temporary value according to the formula:

(the offset+the normalized network interface identifier) MODULO the number P of processors; and

assigns the processor having a normalized processor identifier equal to the temporary value to the network interface/queue combination.

5. A method for automatically managing hardware resources within a router, the method comprising automatically:

storing data in a memory of the router, the data representing a plurality of queues;

assigning to each queue of the plurality of queues a respective normalized queue identifier;

ascertaining a number P of processors available in the router;

ascertaining a number N of network interfaces available in the router;

assigning to each network interface of the N network interfaces a respective normalized network interface identifier;

associating each network interface of the N network interfaces with at least one queue of the plurality of queues;

configuring each network interface of the N network interfaces to enqueue messages received thereby onto the queue(s) associated therewith;

for each network interface/queue combination of the N network interfaces and the plurality of queues:

calculating a processor identifier of a respective processor of the P processors, based on:

(a) the normalized queue identifier of the queue of the network interface/queue combination, (b) the normalized network interface identifier of the network interface associated with the queue, (c) the number N of network interfaces and (d) the number P of processors available in the router; and

a result of a modulo calculation involving the number P; and

assigning the processor of the P processors having the calculated processor identifier to dequeue and process messages on the queue of the network interface/queue combination.

6. The method of claim 5 , wherein associating each network interface of the N network interfaces with at least one queue of the plurality of queues comprises associating at least one network interface of the N network interfaces with at least two queues of the plurality of queues.

7. The method of claim 5 , further comprising:

assigning to each processor of the P processors a respective normalized processor identifier; and

wherein assigning the respective processor of the P processors to dequeue and process messages on the queue of the network interface/queue combination comprises:

for each network interface/queue combination:

calculating a group spacing as a quotient by dividing the number P of processors by the number N of network interfaces and, if the quotient is less than 1, setting the group spacing to 1;

setting an offset to the normalized queue identifier of the queue of the network interface/queue combination;

calculating a group position as a quotient by dividing the normalized queue identifier of the queue of the network interface/queue combination by the group spacing and truncating the quotient to an integer;

comparing the group position to the number N of network interfaces;

if, as a result of the comparing, the group position is found to be less than the number N of network interfaces, setting the offset to a value according to the formula:

((the normalized queue identifier MODULO the group spacing)*the number N of network interfaces)+the group position;

calculating a temporary value according to the formula:

(the offset+the normalized network interface identifier) MODULO the number P of processors; and

assigning a processor having a normalized processor identifier equal to the temporary value to dequeue and process the messages on the queue of the network interface/queue combination.

8. A non-transitory computer-readable medium encoded with instructions that, when executed by a processor, establish processes for performing a computer-implemented method of managing hardware resources in a router, the processes comprising:

a process storing data in a memory of the router, the data representing a plurality of queues;

a process assigning to each queue of the plurality of queues a respective normalized queue identifier;

a process ascertaining a number P of processors available in the router;

a process ascertaining a number N of network interfaces available in the router;

a process assigning to each network interface of the N network interfaces a respective normalized network interface identifier;

a process associating each network interface of the N network interfaces with at least one queue of the plurality of queues;

a process configuring each network interface of the N network interfaces to enqueue messages received thereby onto the queue(s) associated therewith;

a process, for each network interface/queue combination of the N network interfaces and the plurality of queues:

calculating a processor identifier of a respective processor of the P processors, based on:

(a) the normalized queue identifier of the queue of the network interface/queue combination, (b) the normalized network interface identifier of the network interface associated with the queue, (c) the number N of network interfaces and (d) the number P of processors available in the router; and

a result of a modulo calculation involving the number P; and

assigning the processor of the P processors having the calculated processor identifier to dequeue and process messages on the queue of the network interface/queue combination.

Assignments (3)
NUNC PRO TUNC ASSIGNMENT Recorded May 6, 2026
From: 128 TECHNOLOGY, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 075513/0087 →
CONFIRMATORY ASSIGNMENT Recorded Jun 1, 2023
From: PIECUCH, MICHAEL T.
To: 128 TECHNOLOGY, INC.
Reel/Frame 063822/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2016
From: PIECUCH, MICHAEL T.
To: 128 TECHNOLOGY, INC.
Reel/Frame 038922/0466 →