IP Library Granted Patent US 11,258,726
Granted Patent B2
US 11,258,726 · App. 16/808,026 · Granted Feb 22, 2022

Low latency packet switch architecture

Inventors: Deepak Goel (San Jose, CA); Rohit Sunkam Ramanujam (Sunnyvale, CA); Vikas Minglani (Cupertino, CA)
Assignee: FUNGIBLE, INC.
H04L49/30H04L45/74H04L69/22
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 11,258,726
App. No.
16/808,026
Granted
Feb 22, 2022
Kind
B2
Abstract

This disclosure describes techniques that include associating a timestamp with a network packet, and carrying the timestamp or otherwise associating the timestamp with the network packet during some or all processing by the system described herein. In one example, this disclosure describes a method that includes receiving, at an ingress port of a device, an initial portion of a network packet; storing, by the device, timestamp information associated with receiving the initial portion of the packet; and determining, by the device, whether to transmit information derived from the initial portion of the network packet.

Claims (58)

1. A method comprising:

receiving, at an ingress port of a device, an initial portion of a network packet;

storing, by the device, timestamp information associated with receiving the initial portion of the packet;

determining, by the device, whether to transmit information derived from the initial portion of the network packet out an egress port by determining, based on the timestamp information, that information from a later portion of the network packet will be available to be transmitted out the egress port at a later time such that transmitting the information derived from the initial portion of the network packet will not cause an underrun condition, wherein determining whether to transmit information derived from the initial portion of the network packet includes:

determining a first time associated with the timestamp information,

determining a second time associated with a current time, and

subtracting the first time from the second time to calculate how much time has elapsed since the initial portion of the network packet was received; and

transmitting, by the device and out the egress port to a receiving device, the information derived from the initial portion of the network packet.

2. The method of claim 1 , further comprising:

identifying, by the device and based on information included within the network packet, the egress port of the device for outputting information to the receiving device;

receiving, by the device at the ingress port of the device and after transmitting the information derived from the initial portion of the network packet, the later portion of the network packet; and

transmitting, by the device and over the egress port to the receiving device, the information from the later portion of the network packet.

3. The method of claim 2 , wherein the initial portion of the network packet includes a packet header, and wherein identifying an egress port includes:

parsing the packet header before receiving the later portion of the network packet.

4. The method of claim 3 , wherein the packet header includes a first portion of the packet header and a second portion of the packet header, and wherein parsing the packet header includes:

parsing the first portion of the packet header,

determining, based on parsing the first portion of the packet header and to reduce latency, that parsing the second portion of the packet header is unnecessary.

5. The method of claim 2 , wherein the device includes a plurality of ingress ports and a forwarding block shared by each of the ingress ports, and wherein identifying the egress port for each of a plurality of network packets arriving at the plurality of ingress ports is performed by the forwarding block.

6. The method of claim 1 , wherein storing timestamp information includes:

storing the timestamp information within the network packet.

7. The method of claim 1 , wherein storing timestamp information includes:

storing the timestamp information within a parsed result vector.

8. The method of claim 1 , wherein storing the timestamp information includes:

storing the timestamp information so that multiple functional blocks included within the device can access the timestamp information associated with the network packet.

9. The method of claim 1 , wherein the later portion of the network packet is the last portion of the network packet to be received at the ingress port of the device, and wherein determining whether to transmit information derived from the initial portion of the network packet includes:

determining that all portions of the network packet will be received by the device in time to avoid an underrun condition.

10. The method of claim 1 , wherein ingress port and the egress port have different speeds.

11. The method of claim 10 , wherein the egress port speed is higher than the ingress port speed, and wherein determining whether to transmit information derived from the initial portion of the network packet includes:

determining whether to transmit information by accounting for higher egress port speed.

12. The method of claim 1 , further comprising:

storing, by the device and in a buffer, the initial portion of the network packet.

storing, by the device and in the buffer, the later portion of the network packet.

13. The method of claim 12 , wherein the buffer is included in a packet switch block within the device.

14. The method of claim 1 , further comprising:

generating the information derived from the initial portion of the network packet by applying rewrite instructions to modify the initial portion of the network packet.

15. The method of claim 1 , wherein transmitting the information derived from the initial portion of network packet includes:

determining that at least a minimum amount of data is available to be transmitted at the egress port before outputting the information derived from the initial portion of the network packet.

16. The method of claim 15 , wherein the minimum amount of data is a cell having a size of 256 bytes.

17. A device comprising:

memory; and

processing circuitry having access to the memory and configured to:

receive, at an ingress port of the device, an initial portion of a network packet,

store timestamp information associated with receiving the initial portion of the packet;

identify, based on information included within the network packet, an egress port of the device for outputting information to a receiving device,

determine whether to transmit information derived from the initial portion of the network packet out the egress port by determining that information from a later portion of the network packet will be available to be transmitted out the egress port such that transmitting the information derived from the initial portion of the network packet will not cause an underrun condition, and wherein to determine whether to transmit the information, the processing circuitry determines a first time associated with the timestamp information, determines a second time associated with a current time, and subtracts the first time from the second time to calculate how much time has elapsed since the initial portion of the network packet was received,

transmit, out the egress port to the receiving device, the information derived from the initial portion of the network packet,

receive, at the ingress port of the device, the later portion of the network packet, and

transmit, over the egress port to the receiving device, the information from the later portion of the network packet.

18. A non-transitory computer-readable storage medium comprising instructions that, when executed, cause processing circuitry of a computing system to:

receive, at an ingress port of the device, an initial portion of a network packet;

store timestamp information associated with receiving the initial portion of the packet;

identify, based on information included within the network packet, an egress port of the device for outputting information to a receiving device;

determine whether to transmit information derived from the initial portion of the network packet out the egress port by determining that information from a later portion of the network packet will be available to be transmitted out the egress port such that transmitting the information derived from the initial portion of the network packet will not cause an underrun condition, wherein determining whether to transmit information includes determining a first time associated with the timestamp information, determining a second time associated with a current time, and subtracting the first time from the second time to calculate how much time has elapsed since the initial portion of the network packet was received;

transmit, over the egress port to the receiving device, the information derived from the initial portion of the network packet;

receive, at the ingress port of the device, the later portion of the network packet; and

transmit, over the egress port to the receiving device, the information from the later portion of the network packet.

19. The non-transitory computer-readable storage medium of claim 18 , wherein the instructions that cause the processing circuitry to store the timestamp information further include instructions that cause the processing circuitry to:

store the timestamp information so that multiple functional blocks included within the device can access the timestamp information associated with the network packet.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2023
From: FUNGIBLE, INC.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 064434/0430 →
RELEASE OF SECURITY INTEREST Recorded Jan 9, 2023
From: HERCULES CAPITAL, INC., AS AGENT
To: FUNGIBLE, INC.
Reel/Frame 062335/0803 →
RELEASE OF SECURITY INTEREST Recorded Jan 5, 2023
From: SILICON VALLEY BANK
To: FUNGIBLE, INC.
Reel/Frame 062308/0191 →
SECURITY INTEREST Recorded Dec 16, 2021
From: FUNGIBLE, INC.
To: SILICON VALLEY BANK
Reel/Frame 058523/0960 →
SECURITY INTEREST Recorded Dec 16, 2021
From: FUNGIBLE, INC.
To: HERCULES CAPITAL, INC., AS AGENT
Reel/Frame 058533/0429 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2020
From: GOEL, DEEPAK; SUNKAM RAMANUJAM, ROHIT; MINGLANI, VIKAS
To: FUNGIBLE, INC.
Reel/Frame 051998/0994 →
Continuity (2)
Provisional Application 62824770 · Mar 27, 2019
Related Publication 20200314030A1 · Oct 1, 2020