System and method for hardware accelerated packet multicast in a virtual routing system
First Claim
1. An article comprising a computer-readable storage medium having stored thereon computer-readable instructions for packet multicasting, that when executed by a computing platform, result in:
- identifying a plurality of flow classification indices for a multicast packet;
sending the multicast packet and a first of the flow classification indices to a packet transformer,buffering the multicast packet in a memory associated with the packet transformer;
identifying first transform control instructions from the first flow classification index;
transforming the multicast packet in accordance with the first transform control instructions;
sending a next of the flow classification indices without the multicast packet to the packet transformer;
identifying next transform control instructions from the next of the flow classification indices;
reading the multicast packet from the memory; and
transforming the multicast packet in accordance with the next transform control instructions.
3 Assignments
0 Petitions
Accused Products
Abstract
A packet-forwarding engine (PFE) of a multiprocessor system uses an array of flow classification block (FCB) indices to multicast a packet. Packets are received and buffered in external memory. In one embodiment, when a multicast packet is identified, a bit is set in a packet descriptor and an FCB index is generated and sent with a null-packet to the egress processors which generate multiple descriptors with different indices for each instance of multicasting. All the descriptors may point to the same buffer in the external memory, which stores the multicast packet. A DMA engine reads from the same buffer multiple times and egress processors may access an appropriate transform control block (TCB) index so that the proper headers may be installed on the outgoing packet. The buffer may be released after the last time the packet is read by setting a particular bit of the FCB index.
251 Citations
72 Claims
-
1. An article comprising a computer-readable storage medium having stored thereon computer-readable instructions for packet multicasting, that when executed by a computing platform, result in:
-
identifying a plurality of flow classification indices for a multicast packet; sending the multicast packet and a first of the flow classification indices to a packet transformer, buffering the multicast packet in a memory associated with the packet transformer; identifying first transform control instructions from the first flow classification index; transforming the multicast packet in accordance with the first transform control instructions; sending a next of the flow classification indices without the multicast packet to the packet transformer; identifying next transform control instructions from the next of the flow classification indices;
reading the multicast packet from the memory; andtransforming the multicast packet in accordance with the next transform control instructions. - View Dependent Claims (2, 69, 70, 71, 72)
-
-
3. A method for packet multicasting comprising:
-
identifying a plurality of flow classification indices for a multicast packet; sending the multicast packet and a first of the flow classification indices to a packet transformer; buffering the multicast packet in a memory associated with the packet transformer; identifying first transform control instructions from the first flow classification index; transforming the multicast packet in accordance with the first transform control instructions; sending a next of the flow classification indices without the multicast packet to the packet transformer; identifying next transform control instructions from the next of the flow classification indices; reading the multicast packet from the memory; and transforming the multicast packet in accordance with the next transform control instructions. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method for packet multicasting comprising:
-
identifying a plurality of flow classification indices for a multicast packet; sending the multicast packet and a first of the flow classification indices to a packet transformer; buffering the multicast packet in a memory associated with the packet transformer; identifying first transform control instructions from the first flow classification index; transforming the multicast packet in accordance with the first transform control instructions; and wherein the flow classification index corresponds with a packet flow for a packet, and when the packet flow is a multicast packet, retrieving an additional flow classification index for each instance of multicasting, and sending each additional of the flow classification indices without the multicast packet to the packet transformer, wherein the flow classification indices include a descriptor to identify the flow as a multicast flow. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A method for packet multicasting comprising:
-
identifying a plurality of flow classification indices for a multicast packet; sending the multicast packet and a first of the flow classification indices to a packet transformer; buffering the multicast packet in a memory associated with the packet transformer; identifying first transform control instructions from the first flow classification index; transforming the multicast packet in accordance with the first transform control instructions; performing a hash on header portions of a received packet to determine a flow classification block index; and looking up the flow classification block index in a flow classification block (FCB) to determine a flow classification index for a unicast packet and a location of the plurality of flow classification indices for the multicast packet. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30)
-
-
31. A method for packet multicasting comprising:
-
identifying a plurality of flow classification indices for a multicast packet; sending the multicast packet and a first of the flow classification indices to a packet transformer; buffering the multicast packet in a memory associated with the packet transformer; identifying first transform control instructions from the first flow classification index; transforming the multicast packet in accordance with the first transform control instructions; identifying a single flow classification index for a unicast packet; sending the unicast packet and a single flow classification index to the packet transformer; buffering the unicast packet in the memory associated with the packet transformer; identifying transform control instructions for the unicast packet from the single flow classification index; and transforming the unicast packet in accordance with the identified transform control instructions. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38, 39, 40)
-
-
41. A packet multicasting system comprising:
-
a packet transformer to transform a multicast packet in accordance with transform control instructions; and a packet classifier to identify a plurality of flow classification indices for the multicast packet, and send the multicast packet and a first of the flow classification indices to the packet transformer, wherein the packet classifier sends a next of the flow classification indices without the multicast packet to the packet transformer, and the packet transformer identifies next transform control instructions from the next of the flow classification indices, reads the multicast packet from the memory and transforms the multicast packet in accordance with the next transform control instructions. - View Dependent Claims (42, 43, 44, 45, 46, 47)
-
-
48. A packet multicasting system comprising:
-
a packet transformer to transform a multicast packet in accordance with transform control instructions; and a packet classifier to identify a plurality of flow classification indices for the multicast packet, and send the multicast packet and a first of the flow classification indices to the packet transformer, wherein the packet classifier performs a hash on header portions of a received packet to determine a flow classification block index, and looks up the flow classification block index in a flow classification block (FCB) to determine a flow classification index for a unicast packet and a location of the plurality of flow classification indices for the multicast packet. - View Dependent Claims (49, 50, 51, 52, 53, 54)
-
-
55. A packet multicasting system comprising:
-
a packet transformer, comprised of a first multiprocessor system, to transform a multicast packet in accordance with transform control instructions; and a packet classifier, comprised of a second multiprocessor system, to identify a plurality of flow classification indices for the multicast packet, and send the multicast packet and a first of the flow classification indices to the packet transformer. - View Dependent Claims (56, 57, 58, 59, 60, 61)
-
-
62. In a virtual routing system having a plurality of virtual routers (VRs) instantiated by a virtual routing engine (VRE), wherein the instantiation of each VR includes an associated routing context, a method of multicasting packets comprising:
-
receiving a first multicast packet and a second multicast packet from a same service provider, wherein the first received multicast packet and the second received multicast packet have identical layer-two through layer-four (L2-L4) headers; classifying the first received multicast packet and the second received multicast packet in accordance with different VRs of the plurality of VRs by determining a first selected VR of the plurality of VRs to multicast the first received multicast packet and a second selected VR of the plurality of VRs to multicast the second received multicast packet; switching a routing context of the VRE to a routing context associated with the first selected VR for the first received multicast packet; and reading at least a portion of the first received multicast packet from one of a plurality of multicast address spaces associated with the first selected VR to multicast the first received multicast packet; forwarding the first received multicast packet to a first set of multicast destinations; switching the routing context of the VRE to a routing context associated with the second selected VR for the second received multicast packet; reading at least a portion of the second received multicast packet from a plurality of multicast address spaces associated with the second selected VR to multicast the first received multicast packet; and forwarding the second received multicast packet to a second set of multicast destinations. - View Dependent Claims (63, 64, 65, 66, 67, 68)
-
Specification