IP Library Granted Patent US 12701073
Granted Patent B1
US 12701073 · App. 18/068,610 · Granted Aug 4, 2026

System, method, and non-transitory computer-readable medium for forwarding data using ingress processing with multicast data replication

Inventors: Brian Arnold Petersen (San Francisco, CA); Tom Quoc Wellbaum (San Jose, CA)
Assignee: Ethernovia Inc.
H04L45/16H04L12/18H04L45/74
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 12701073
App. No.
18/068,610
Granted
Aug 4, 2026
Kind
B1
Abstract

Various embodiments described herein provide for forwarding multicast data units using ingress processing with multicast data replication, which can address or overcome some of the complexities and challenges faced by conventional data unit forwarding systems.

Claims (83)

1 . A system comprising:

a port manager comprising a set of receive ports to receive data packets from a transmitting network device, the port manager being configured to receive a data packet via a select receive port of the set of receive ports and to assign a data packet identifier to the data packet, the data packet comprising a header portion and a non-header portion;

an ingress processor configured to perform operations comprising:

receiving the data packet identifier and the header portion of the data packet from the port manager;

generating a metadata item for the data packet by analyzing the header portion, the metadata item being separate from the data packet, the metadata item describing a network destination of the data packet, the metadata item comprising the data packet identifier;

determining whether the network destination is a multicast group of network devices; and

in response to the network destination being a multicast group of network devices:

determining a plurality of different network paths for the data packet based on the metadata item, each different network path in the plurality of different network paths comprising information for forwarding the data packet to at least one network device in the multicast group; and

generating, for the data packet, a plurality of updated metadata items that corresponds to the plurality of different network paths, each updated metadata item of the plurality of updated metadata items representing a copy of the metadata item that is updated based on a corresponding network path in the plurality of different network paths, the plurality of updated metadata items being iteratively generated such that after generating a first updated metadata item of the plurality of updated metadata items, the ingress processor delivers the first updated metadata item to a data packet buffer prior to generating a second updated metadata item of the plurality of updated metadata items; and

the data packet buffer comprising a set of output queues, the data packet buffer being configured to perform operations comprising:

receiving the data packet identifier and the data packet from the port manager;

storing a single copy of the data packet at a select storage location on the data packet buffer that is referenceable by the data packet identifier;

receiving the plurality of updated metadata items from the ingress processor; and

causing forwarding of the data packet using the single copy of the data packet and the plurality of updated metadata items stored on the data packet buffer, the causing of the forwarding comprising, for each individual updated metadata item of the plurality of updated metadata items received from the ingress processor:

queuing the individual updated metadata item in an individual output queue of the set of output queues that is associated with the data packet identifier from the individual updated metadata item, the individual updated metadata item being stored in the individual output queue in a different storage location from the select storage location storing the single copy of the data packet; and

generating and enqueuing a pointer to the storage location of the single copy of the data packet in the individual output queue, the pointer associating the individual updated metadata item queued in the individual output queue with the single copy of the data packet at the select storage location.

2 . The system of claim 1 , wherein for each individual metadata item of the plurality of updated metadata items:

determining, based on the individual metadata item, the individual output queue of the set of output queues.

3 . The system of claim 2 , comprising:

an egress processor configured to perform operations comprising:

receiving a select pointer from a select output queue of the data packet buffer;

receiving a select metadata item from the select output queue;

retrieving a select data packet referenced by the select pointer; and

processing the select data packet for transmission based on the select metadata item.

4 . The system of claim 3 , wherein the port manager comprises a set of transmit ports, and wherein the processing of the select data packet for transmission based on the select metadata item comprises:

providing the select data packet to the port manager to be transmitted via a select transmit port in the set of transmit ports.

5 . The system of claim 2 , wherein the data packet is a first data packet received via the select receive port, wherein the port manager receives a second data packet via the select receive port after the port manager receives the first data packet via the select receive port, wherein the plurality of updated metadata items is a first plurality of updated metadata items, and wherein the ingress processor comprises:

a data packet reorder component configured to queue the first plurality of updated metadata items of the first data packet and a second plurality of updated metadata items of the second data packet such that the first plurality of updated metadata items is delivered to the data packet buffer prior to the second plurality of updated metadata items being delivered to the data packet buffer.

6 . The system of claim 5 , wherein the data packet reorder component is configured to serially receive each separate metadata item of the first plurality of updated metadata items as it is generated by ingress processor, and wherein the data packet reorder component queues a serially received metadata item according to a receive port associated with the serially received metadata item and then queues the serially received metadata item according to a multicast index value associated with the serially received metadata item.

7 . The system of claim 1 , wherein the header portion comprises a header byte string.

8 . The system of claim 1 , wherein the data packet is defined by an IEEE network standard.

9 . A method comprising:

receiving, by a port manager of a forwarding network device, a data packet via a select receive port of a set of receive ports, the data packet comprising a header portion and a non-header portion;

assigning, by the port manager, a data packet identifier to the data packet;

generating, by an ingress processor of the forwarding network device, a metadata item for the data packet by analyzing the header portion, the metadata item being separate from the data packet, the metadata item describing a network destination of the data packet, the metadata item comprising the data packet identifier;

determining, by the ingress processor, that the network destination is a multicast group of network devices;

in response to determining that the network destination is a multicast group of network devices:

determining, by the ingress processor, a plurality of different network paths for the data packet based on the metadata item, each different network path in the plurality of different network paths comprising information for forwarding the data packet to at least one network device in the multicast group; and

generating, by the ingress processor for the data packet, a plurality of updated metadata items that corresponds to the plurality of different network paths, each updated metadata item of the plurality of updated metadata items representing a copy of the metadata item that is updated based on a corresponding network path in the plurality of different network paths, the plurality of updated metadata items being iteratively generated such that after generating a first updated metadata item of the plurality of updated metadata items, the ingress processor delivers the first updated metadata item to a data packet buffer prior to generating a second updated metadata item of the plurality of updated metadata items;

receiving, by the data packet buffer of the forwarding network device, the data packet identifier and the data packet from the port manager;

storing, by the data packet buffer, a single copy of the data packet at a select storage location on the data packet buffer that is referenceable by the data packet identifier;

receiving, by the data packet buffer, the plurality of updated metadata items from the ingress processor; and

causing, by the data packet buffer, forwarding of the data packet using the single copy of the data packet and the plurality of updated metadata items stored on the data packet buffer, the causing of the forwarding comprising, for each individual updated metadata item of the plurality of updated metadata items received from the ingress processor:

queuing the individual updated metadata item in an individual output queue of the set of output queues that is associated with the data packet identifier from the individual updated metadata item, the individual updated metadata item being stored in the individual output queue in a different storage location from the select storage location storing the single copy of the data packet; and

generating and enqueuing a pointer to the storage location of the single copy of the data packet in the individual output queue, the pointer associating the individual updated metadata item queued in the individual output queue with the single copy of the data packet at the select storage location.

10 . The method of claim 9 , wherein for each individual metadata item of the plurality of updated metadata items:

determining, based on the individual metadata item, an individual output queue of a set of output queues of the data packet buffer.

11 . The method of claim 10 , comprising:

receiving, by an egress processor of the forwarding network device, a select pointer from a select output queue of the data packet buffer;

receiving, by the egress processor, a select metadata item from the select output queue;

retrieving, by the egress processor, a select data packet referenced by the select pointer; and

processing, by the egress processor, the select data packet for transmission based on the select metadata item.

12 . The method of claim 11 , wherein the port manager comprises a set of transmit ports, and wherein the processing of the select data packet for transmission based on the select metadata item comprises:

providing the select data packet to the port manager to be transmitted via a select transmit port in the set of transmit ports.

13 . The method of claim 10 , wherein the data packet is a first data packet received via the select receive port, wherein the port manager receives a second data packet via the select receive port after the port manager receives the first data packet via the select receive port, wherein the plurality of updated metadata items is a first plurality of updated metadata items, and wherein the ingress processor comprises:

a data packet reorder component configured to queue the first plurality of updated metadata items of the first data packet and a second plurality of updated metadata items of the second data packet such that the first plurality of updated metadata items is delivered to the data packet buffer prior to the second plurality of updated metadata items being delivered to the data packet buffer.

14 . The method of claim 13 , wherein the data packet reorder component is configured to serially receive each separate metadata item of the first plurality of updated metadata items as it is generated by ingress processor, and wherein the data packet reorder component queues a serially received metadata item according to a receive port associated with the serially received metadata item and then queues the serially received metadata item according to a multicast index value associated with the serially received metadata item.

15 . The method of claim 9 , wherein the header portion comprises a header byte string.

16 . A non-transitory computer-readable medium comprising instructions that, when executed by a hardware processor of a forwarding network device, cause the forwarding network device to perform operations comprising:

receiving, by a port manager of the forwarding network device, a data packet via a select receive port of a set of receive ports, the data packet comprising a header portion and a non-header portion;

assigning, by the port manager, a data packet identifier to the data packet;

generating, by an ingress processor of the forwarding network device, a metadata item for the data packet by analyzing the header portion, the metadata item being separate from the data packet, the metadata item describing a network destination of the data packet, the metadata item comprising the data packet identifier;

determining, by the ingress processor, whether the network destination is a multicast group of network devices;

in response to determining that the network destination is a multicast group of network devices:

determining, by the ingress processor, a plurality of different network paths for the data packet based on the metadata item, each different network path in the plurality of different network paths comprising information for forwarding the data packet to at least one network device in the multicast group; and

generating, by the ingress processor for the data packet, a plurality of updated metadata items that corresponds to the plurality of different network paths, each updated metadata item of the plurality of updated metadata items representing a copy of the metadata item that is updated based on a corresponding network path in the plurality of different network paths, the plurality of updated metadata items being iteratively generated such that after generating a first updated metadata item of the plurality of updated metadata items, the ingress processor delivers the first updated metadata item to a data packet buffer prior to generating a second updated metadata item of the plurality of updated metadata items;

receiving, by the data packet buffer of the forwarding network device, the data packet identifier and the data packet from the port manager;

storing, by the data packet buffer, a single copy of the data packet at a select storage location on the data packet buffer that is referenceable by the data packet identifier;

receiving, by the data packet buffer, the plurality of updated metadata items from the ingress processor; and

causing, by the data packet buffer, forwarding of the data packet using the single copy of the data packet and the plurality of updated metadata items stored on the data packet buffer, the causing of the forwarding comprising, for each individual updated metadata item of the plurality of updated metadata items received from the ingress processor:

queuing the individual updated metadata item in an individual output queue of the set of output queues that is associated with the data packet identifier from the individual updated metadata item, the individual updated metadata item being stored in the individual output queue in a different storage location from the select storage location storing the single copy of the data packet; and

generating and enqueuing a pointer to the storage location of the single copy of the data packet in the individual output queue, the pointer associating the individual updated metadata item queued in the individual output queue with the single copy of the data packet at the select storage location.

17 . The non-transitory computer-readable medium of claim 16 , wherein for each individual metadata item of the plurality of updated metadata items:

determining, based on the individual metadata item, an individual output queue of a set of output queues of the data packet buffer.

18 . The non-transitory computer-readable medium of claim 17 , wherein the operations comprise:

receiving, by an egress processor of the forwarding network device, a select pointer from a select output queue of the data packet buffer;

receiving, by the egress processor, a select metadata item from the select output queue;

retrieving, by the egress processor, a select data packet referenced by the select pointer; and

processing, by the egress processor, the select data packet for transmission based on the select metadata item.

19 . The non-transitory computer-readable medium of claim 18 , wherein the port manager comprises a set of transmit ports, and wherein the processing of the select data packet for transmission based on the select metadata item comprises:

providing the select data packet to the port manager to be transmitted via a select transmit port in the set of transmit ports.

20 . The non-transitory computer-readable medium of claim 17 , wherein the data packet is a first data packet received via the select receive port, wherein the port manager receives a second data packet via the select receive port after the port manager receives the first data packet via the select receive port, wherein the plurality of updated metadata items is a first plurality of updated metadata items, and wherein the ingress processor comprises:

a data packet reorder component configured to queue the first plurality of updated metadata items of the first data packet and a second plurality of updated metadata items of the second data packet such that the first plurality of updated metadata items is delivered to the data packet buffer prior to the second plurality of updated metadata items being delivered to the data packet buffer.