IP Library Granted Patent US 9,942,146
Granted Patent B2
US 9,942,146 · App. 15/226,833 · Granted Apr 10, 2018

Router path selection and creation in a single clock cycle

Inventors: Michael Florea (Lake Forest, CA); Jerome V. Coffin (San Diego, CA)
Assignee: KnuEdge Incorporated
H04L45/745H04L49/109H04L49/3027H04L49/901
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,942,146
App. No.
15/226,833
Granted
Apr 10, 2018
Kind
B2
Abstract

Systems, devices, and techniques for routing packets are described. A described router includes ingress ports to receive packets; egress ports; ingress switch fabric coupled with the ingress ports; egress switch fabric coupled with the egress ports; floating buffers coupled between the ingress switch fabric and the egress switch fabric; and a controller. The controller can be configured to receive a packet via an ingress port, determine an egress port based on the packet's destination address, acquire a floating buffer, send to the egress port a buffer identifier corresponding to the acquired floating buffer, operate the ingress switch fabric to establish a first pathway between the acquired floating buffer and the ingress port to write the packet to the buffer, and operate the egress switch fabric to establish a second pathway between the acquired floating buffer and the egress port to write from the buffer to the egress port.

Claims (78)

1. A method comprising:

receiving a packet via an ingress port of a plurality of ingress ports;

determining an egress port of a plurality of egress ports based on a destination address of the packet;

acquiring a floating buffer from a plurality of floating buffers, wherein the floating buffers are coupled between a plurality of ingress multiplexers and a plurality of egress multiplexers, wherein the ingress multiplexers are coupled with the ingress ports, and wherein the egress multiplexers are coupled with the egress ports;

sending to the egress port, a buffer identifier corresponding to the acquired floating buffer;

identifying an ingress multiplexer of the ingress multiplexers based on the buffer identifier;

writing the packet from the ingress port to the acquired floating buffer via the identified ingress multiplexer;

identifying an egress multiplexer of the egress multiplexers based on the egress port; and

writing the packet from the acquired floating buffer to the egress port via the identified egress multiplexer.

2. The method of claim 1 , comprising:

inserting the buffer identifier into a queue of the egress port; and

causing the egress port to send a ready notification based on a determination that the egress port is ready to handle the packet, wherein the ready notification comprises the buffer identifier, and

wherein identifying the egress multiplexer is triggered by a receipt of the ready notification.

3. The method of claim 1 , wherein acquiring the floating buffer from the plurality of floating buffers comprises retrieving the buffer identifier from an available floating buffer queue.

4. The method of claim 3 , comprising:

releasing the acquired floating buffer based on a completion of writing the packet from the acquired floating buffer to the egress port via the identified egress multiplexer, wherein releasing the acquired floating buffer comprises inserting the buffer identifier into the available floating buffer queue.

5. The method of claim 1 , wherein writing the packet from the ingress port to the acquired floating buffer comprises writing a first portion of the packet to the acquired floating buffer, and wherein writing the packet from the acquired floating buffer to the egress port comprises reading a second portion of the packet concurrently with writing the first portion of the packet.

6. The method of claim 1 , wherein the plurality of ingress ports comprises first ingress ports and second ingress ports,

wherein the plurality of egress ports comprises first egress ports and second egress ports,

wherein the plurality of ingress multiplexers comprises first ingress multiplexers and second ingress multiplexers,

wherein the plurality of egress multiplexers comprises first egress multiplexers and second egress multiplexers,

wherein the first ingress ports, the first egress ports, the first ingress multiplexers, and the first egress multiplexers are associated with an internal network, and

wherein the second ingress ports, the second egress ports, the second ingress multiplexers, and the second egress multiplexers are associated with an external network.

7. The method of claim 6 , comprising:

routing a packet between the external network and the internal network.

8. An apparatus comprising:

ingress ports to receive packets;

egress ports to transmit the packets;

ingress multiplexers coupled with the ingress ports;

egress multiplexers coupled with the egress ports;

floating buffers coupled between the ingress multiplexers and the egress multiplexers; and

a controller configured to perform operations comprising:

receiving a packet via an ingress port of the ingress ports,

determining an egress port of the egress ports based on a destination address of the packet,

acquiring a floating buffer of the floating buffers,

sending to the egress port, a buffer identifier corresponding to the acquired floating buffer,

identifying an ingress multiplexer of the ingress multiplexers based on the buffer identifier,

writing the packet from the ingress port to the acquired floating buffer via the identified ingress multiplexer,

identifying an egress multiplexer of the egress multiplexers based on the egress port, and

writing the packet from the acquired floating buffer to the egress port via the identified egress multiplexer.

9. The apparatus of claim 8 , wherein the operations comprise:

inserting the buffer identifier into a queue of the egress port; and

causing the egress port to send a ready notification based on a determination that the egress port is ready to handle the packet, wherein the ready notification comprises the buffer identifier, and

wherein identifying the egress multiplexer is triggered by a receipt of the ready notification.

10. The apparatus of claim 8 , wherein acquiring the floating buffer comprises retrieving the buffer identifier from an available floating buffer queue.

11. The apparatus of claim 10 , wherein the operations comprise releasing the acquired floating buffer based on a completion of writing the packet from the acquired floating buffer to the egress port via the identified egress multiplexer, and wherein releasing the acquired floating buffer comprises inserting the buffer identifier into the available floating buffer queue.

12. The apparatus of claim 8 , wherein writing the packet from the ingress port to the acquired floating buffer comprises writing a first portion of the packet to the acquired floating buffer, and wherein writing the packet from the acquired floating buffer to the egress port comprises reading a second portion of the packet concurrently with writing the first portion of the packet.

13. The apparatus of claim 8 , comprising:

an integrated circuit chip, wherein the integrated circuit chip comprises the ingress ports, the ingress multiplexers, the egress multiplexers, the floating buffers, and the controller.

14. The apparatus of claim 13 , wherein the ingress ports comprise first ingress ports and second ingress ports,

wherein the egress ports comprise first egress ports and second egress ports,

wherein the ingress multiplexers comprise first ingress multiplexers and second ingress multiplexers,

wherein the egress multiplexers comprise first egress multiplexers and second egress multiplexers,

wherein the first ingress ports, the first egress ports, the first ingress multiplexers, and the first egress multiplexers are associated with an internal network, the internal network being internal to the integrated circuit chip, and

wherein the second ingress ports, the second egress ports, the second ingress multiplexers, and the second egress multiplexers are associated with an external network, the external network being external to the integrated circuit chip.

15. The apparatus of claim 14 , wherein the operations comprise:

routing a packet between the external network and the internal network.

16. An apparatus comprising:

ingress ports to receive packets;

egress ports to transmit the packets;

ingress switch fabric coupled with the ingress ports;

egress switch fabric coupled with the egress ports;

floating buffers coupled between the ingress switch fabric and the egress switch fabric; and

a controller configured to:

receive a packet via an ingress port of the ingress ports,

determine an egress port of the egress ports based on a destination address of the packet,

acquire a floating buffer of the floating buffers to produce an acquired floating buffer,

send to the egress port a buffer identifier corresponding to the acquired floating buffer,

operate the ingress switch fabric to establish a first pathway between the acquired floating buffer and the ingress port,

write the packet from the ingress port to the acquired floating buffer via the first pathway,

operate the egress switch fabric to establish a second pathway between the acquired floating buffer and the egress port, and

write the packet from the acquired floating buffer to the egress port via the second pathway.

17. The apparatus of claim 16 , wherein the controller is configured to insert the buffer identifier into a queue of the egress port, and cause the egress port to send a ready notification based on a determination that the egress port is ready to handle the packet, wherein the ready notification comprises the buffer identifier.

18. The apparatus of claim 16 , wherein the controller is configured to acquire the floating buffer by retrieving the buffer identifier from an available floating buffer queue.

19. The apparatus of claim 18 , wherein the controller is configured to release the acquired floating buffer by inserting the buffer identifier into the available floating buffer queue in response to completion of writing the packet from the acquired floating buffer to the egress port via the second pathway.

20. The apparatus of claim 16 , comprising:

a dual-port memory structure to store the floating buffers,

wherein the controller is configured to use the dual-port memory to overlap writing of at least a first portion of the packet to the acquired floating buffer and reading of at least a second portion of the packet from the acquired floating buffer.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2026
From: PATTI, ROBERT S
To: TEATRO, INC.
Reel/Frame 074966/0181 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2018
From: KNUEDGE, INC.
To: FRIDAY HARBOR LLC
Reel/Frame 047156/0582 →
SECURITY INTEREST Recorded Oct 27, 2017
From: KNUEDGE INCORPORATED
To: XL INNOVATE FUND, LP
Reel/Frame 044637/0011 →
SECURITY INTEREST Recorded Nov 11, 2016
From: KNUEDGE INCORPORATED
To: XL INNOVATE FUND, L.P.
Reel/Frame 040601/0917 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2016
From: FLOREA, MICHAEL; COFFIN, JEROME V.
To: KNUEDGE INCORPORATED
Reel/Frame 039607/0523 →
Continuity (2)
Provisional Application 62275149 · Jan 5, 2016
Related Publication 20180041434A1 · Feb 8, 2018