WO2006015513A1 - Method and system for processing multicast packets - Google Patents

Method and system for processing multicast packets Download PDF

Info

Publication number
WO2006015513A1
WO2006015513A1 PCT/CN2004/000935 CN2004000935W WO2006015513A1 WO 2006015513 A1 WO2006015513 A1 WO 2006015513A1 CN 2004000935 W CN2004000935 W CN 2004000935W WO 2006015513 A1 WO2006015513 A1 WO 2006015513A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
destination address
indicator
payload
entry
Prior art date
Application number
PCT/CN2004/000935
Other languages
French (fr)
Inventor
Yongxiang Han
Wei Shao
Jian Dou
Hang Yuan
Jun Tang
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Priority to PCT/CN2004/000935 priority Critical patent/WO2006015513A1/en
Priority to US10/567,001 priority patent/US7940764B2/en
Publication of WO2006015513A1 publication Critical patent/WO2006015513A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast

Definitions

  • Systems in a network environment communicate information in packets that encapsulate the information according to network communication protocols.
  • Packets transmitted from one node to another node may be transmitted through one or more intervening routers that route the packets throughout the network or between networks.
  • the router typically includes one or more network processors to process the packets and may also include a core processor.
  • the network processor stores packets in a memory device, such as a Static Dynamic Random Access Memory (SDRAM).
  • SDRAM Static Dynamic Random Access Memory
  • an entry referred to as a buffer descriptor
  • SRAM Static Random Access Memory
  • the SRAM may include multiple queues for packets in the SDRAM.
  • a network processor may include a plurality of packet engines, also known as microengines, that process and forward the packets being transmitted from one node to another and may also include a core processor to perform other related processing information.
  • packet engines may process unicast packets and the core processor may process multicast packets having a payload to transmit to different destination addresses.
  • the core processor may write an instance of the multicast packet payload to the SDRAM for each destination address to which the packet is directed.
  • a buffer descriptor may also be created and queued for the entries added to the SDRAM for the destination addresses of the multicast packet.
  • multiple entries in the SDRAM are used to buffer the same payload sent to the different destination addresses.
  • the entries in the SDRAM include a unique header for the different destination addresses, where the header includes address and other information to route the payload of the multicast packet to the destination address.
  • FIG. 1 illustrates a network processor
  • FIGs. 2a and 2b illustrate information maintained in a control information memory.
  • FIG. 3 illustrates data structures to maintain information for a multicast packet.
  • FIG. 4 illustrates information maintained in a buffer indicator.
  • FIG. 5 illustrates content of a multicast packet.
  • FIG. 6 illustrates a packet entry in the packet memory.
  • FIG. 7 illustrates the packet engines that process a multicast packet.
  • FIGs. 8 and 10 illustrate operations to process a multicast packet.
  • FIG. 9 illustrates information maintained in local memory of a packet engine to process a multicast packet.
  • FIG. 11 is a diagram of a network processor.
  • FIG. 12 is a diagram of a network device.
  • a network processor comprises devices that execute programs to handle packets in a data network, such as processors on router line cards, network access equipment and packet forwarding devices.
  • FIG. 1 illustrates a network processor 2 according to one embodiment including packet engines 4a, 4b...4n comprising high speed processors specialized for packet processing.
  • the packet engines may comprise any programmable engine or processor for processing packets, such as a microengine, etc.
  • the packet engines may execute program logic, such as microblocks, to process packets, where a microblock comprises fast-path packet processing logic executed by the packet engines 4a, 4b...4n.
  • the network processor packet engines 4a, 4b...4n buffer packets and other information used to process packets in a local memory, such as local memory 6 for packet engine 4c.
  • the local memory 6 may be implemented on the same integrated circuit die on which the packet engine 4c is implemented and may comprise a content address memory.
  • the network processor 2 may communicate over one or more memory interfaces 10 with a packet memory 12 for storing packet entries 14 and a control information memory 18 storing packet queues 20 and queue descriptors 22 defining the packet queues 20.
  • the packet entries 14 comprise buffers, each including the payload and header information for a packet transmission.
  • the packet queues 20 include the buffer indicators, where for a multicast packet there is one buffer indicator associated with each descriptor and packet entry for a destination address. Thus, for each destination address, there are buffer indicators referencing the same buffer descriptors, which reference packet buffers 14 in the packet memory 12.
  • the packet memory 12 may comprise at least one SDRAM and the control information memory 18 may comprise at least one SRAM, such as a Quad Data Rate (QDR) high bandwidth SRAM.
  • QDR Quad Data Rate
  • other types of memory devices known in the art may also be used.
  • the packet memory 12 and control information memory 18 may be within different memory areas of the same memory device or in different memory areas of different memory devices.
  • FIG. 2a illustrates one embodiment of packet queues 20a...2On for a single buffer packet, i.e., where the multicast packet requires one buffer.
  • the buffer indicators for each destination address in each packet queue 20a...2On address the same buffer descriptors, as shown in FIG. 2a.
  • the buffer indicators at the same position in the packet queues 20a...2On reference the same buffer descriptors of data to send for the multi-cast operation.
  • each buffer indicator in one queue provides the data for a separate multi- cast packet. For instance, the first buffer indicator in each packet queue 20a....20bn addresses the same buffer descriptor 32a corresponding to one packet entry having the payload to send to the destination address.
  • FIG. 2b illustrates one embodiment of the information included in the control information memory 18 for a multi-buffer payload in a multicast packet.
  • Each packet queue 40a...4On includes one start of packet (SOP) buffer indicator, which points to the (SOP) buffer descriptor to include in the payload for each multicast packet.
  • SOP start of packet
  • Each packet 42a, 42b...42n provides the payload for the destination addresses in a multi- cast packet and includes a first buffer descriptor addressed by the SOP buffer indicator in each packet queue 40a, 40b...4On and following buffer descriptors addressing further packet buffers for the payload.
  • the first SOP buffer indicator in each packet queue 40a...4On points to the same buffer descriptor in the same packet 42a providing the payload for the multicast packet.
  • the second SOP buffer indicator in each packet queue 40a, 40b...4On points to the same buffer descriptor in the same packet 42b providing the payload for a next multi-cast packet.
  • FIG. 3 illustrates one embodiment of a data structure having a plurality of buffer indicators 50a, 50b...5On. In certain embodiments, one buffer indicator is generated for each destination address of the multicast packet.
  • Each buffer indicator 50a, 50b ...50n generated for the multicast packet includes the address of the buffer descriptor 52 that may be used to access the payload for the multicast packet that is sent to all destination addresses.
  • abuffer handle 54a, 54b ...54n is generated, where the buffer handle 54a, 54b...54n includes the address of the corresponding buffer indicator 50a, 50b...5On in the control information memory 18, e.g., SEAM address.
  • the buffer descriptor 52 is used to access a packet buffer entry 56 in the packet memory 12.
  • the packet buffer 56 address in the packet memory 12 may be calculated from the buffer descriptor 52 address stored in each buffer indicator 50a, 50b ...5On.
  • the buffer descriptor 68 may include the address of the packet buffer 56 corresponding to the buffer descriptor 52.
  • one buffer indicator 50a, 50b...5On generated for each destination address addresses one buffer descriptor 52, so that one packet buffer entry in the packet memory 12 maintains the payload used for multiple destination addresses of the multicast packet. If multiple buffer indicators are generated for a destination address, i.e., output packet, then the buffer indicators address different buffer descriptors corresponding to different packet buffer entries containing the data for the multi-buffer packet.
  • the buffer handles 54a, 54b...54n may include an end of packet (EOP) field 60 indicating whether the buffer handle 54a, 54b...54 is associated with the last data buffer for a packet in the multicast transmission; a packet length field 62 indicating the length of the packet to be transmitted to the destination address; and an address field 64 having the address of the associated buffer indicator 50a, 50b...5On in the control information memory 18.
  • the buffer descriptor 52 addressed by the buffer indicators 50a, 50b...5On further includes a reference counter 66 indicating the number of destination addresses to receive the multicast packet and an address 66 of the packet buffer entry 54 in the packet memory 12 including the payload to transmit to each destination address.
  • a packet may require multiple data buffers, i.e., a multi-buffer packet. For instance, if the size of the packet buffer is 2048 bytes and the packet is larger than 2048 bytes, then the packet requires multiple packet buffers. In such case, there may be one buffer handle and buffer indicator for each of the data buffers used by the packet.
  • the buffer handles for the data buffers at the start of the packet and middle of the packets may have an end of packet field 60 of zero, indicating that they are not the end of the packet and the buffer handle for the last data buffer of the packet has an end of packet field of one.
  • FIG. 3 illustrates the buffer handles and buffer indicators for a single data buffer for the multicast packet if the multicast packet is a single buffer packet.
  • the multicast packet occupies multiple buffers, then there may be a set of buffer handles, indicators and buffer descriptor shown in FIG. 3 generated for each packet buffer entry in the packet memory 12 having payload data.
  • the- bufferjiext handle for each indicator may address the next indicator for an output packet, i.e., destination address, addressing the buffer descriptor containing the next buffer to include in the packet.
  • the EOP field 60a, 60b. for a multi-buffer packet, the EOP field 60a, 60b..
  • ,60bn indicates whether the buffer handle, buffer indicator and buffer descriptor for one destination address are for the start of the packet, i.e., first buffer in the packet, a middle of the packet, or the end of packet, i.e., the last packet in the buffer.
  • the EOP value for a start of packet and middle of packet in a multi-buffer packet may be the same value, i.e., indicating that the indicator buffer handle is not for the last indicator.
  • FIG. 4 illustrates one embodiment of the information that may be included with each buffer indicator 50a, 50b...5On, including:
  • Next Buffer Indicator 70 indicates a next buffer 50b, 50c...5On indicator for the subsequent destination address, where the information on the next buffer in each buffer indicator forms a linked list or chain of buffer indicators, where the last buffer indicator 5On may include a null value for the next buffer indicator field 70.
  • the buffer_next indicates that there is no next indicator and next buffer descriptor for the packet.
  • the buffer next indicator points to the next buffer indicator and buffer descriptor for a next buffer to be included in the packet. If the buffer indicator is for a middle of packet or start of packet buffer handle, then the next buffer indicator points to the next indicator corresponding to next buffer for the packet. If the buffer indicator is for the end of packet buffer handle, then the next buffer indicator indicates no next indicator for that packet.
  • Pay load Length 72 The length of the payload to be included in the packet transmitted to the destination address associated with the buffer indicator 50a, 50b...5On.
  • Payload Offset 74 an offset into the packet buffer entry 54 where the payload starts. The payload to include in the packet to the destination address is determined from the payload offset 74 and payload length 72.
  • Header Length 76 the length of a header to include in the packet transmitted to the destination address associated with the buffer indicator 50a, 50b ...5On.
  • Header Offset 78 an offset into the packet buffer entry 54 where the header for the destination address starts. The header to include in the packet to the destination address is determined from the header offset 64 and header length 78.
  • Buffer Descriptor 80 the address of the buffer descriptor 52 in the control information memory 18.
  • FIG. 5 illustrates one embodiment of a multicast packet 90 having a header 92 and payload 94.
  • the header 92 indicates the destination addresses, where the payload 94 is transmitted to the destination addresses and is comprised of one or more buffers.
  • FIG. 6 illustrates one embodiment of the content in the packet entries, e.g., 14 (FIG. 1), 56 (FIG. 3).
  • the packet entry 14, 56 includes headers 96a, 96b...96n for each destination address of the multicast packet 90 and the payload 98. In this way, only one entry having one payload for all the destination addresses is maintained.
  • the packet entry 96 may be addressed by one buffer descriptor 52.
  • FIG. 1 illustrates one embodiment of a multicast packet 90 having a header 92 and payload 94.
  • the header 92 indicates the destination addresses, where the payload 94 is transmitted to the destination addresses and is comprised of one or more buffers.
  • FIG. 6 illustrates one embodiment of the content in the packet entries, e.g
  • a multicast packet 90 (FIG. 5) is received on a media switch fabric 100 and forwarded to one packet engine functioning as a receiving block (Rx) 102 that receives the multicast packet from the media switch fabric 100.
  • the multicast packet 90 is then received by a packet engine 4a, 4b...4n function as a packet processing block 104, which generates and sets the buffer handles 54a, 54b ...54n, buffer indicators 50a, 50b ...50n, buffer descriptors, and the packet buffer entries in the packet memory 12.
  • the packet processing block 104 uses local memory 6 when generating and setting the buffer handles, indicators, and descriptors.
  • a packet engine functioning as a queue manager 106 uses the buffer handles to enqueue and dequeue the buffer indicators 30a...3On into and out of packet queues 20a...2On in the control information memory 18.
  • a packet engine functioning as a transmission (Tx) block 108 uses buffer handles sent by the queue manager to access the buffer indicators, corresponding buffer descriptors and packet buffers in the packet memory 12 by reading the header and payload of the multicast packet to transmit the payloads to media switch fabric 110.
  • FIG. 8 illustrates one embodiment of operations the packet processing 104 block implemented in one packet engine, e.g., packet engine 4c, performs to setup the buffer indicators 50a, 50b...5On and other data structures for a multicast packet 90.
  • the packet processing block 104 Upon the packet engine 4c receiving (at block 150) a multicast packet 90 (FIG. 5) to transmit to a plurality of destination addresses, the packet processing block 104 writes (at block 152) the packet payload 94 for the multicast packet 90 to the payload 98 (FIG. 6) in one or more packet entries, e.g., 14 (FIG. 1), 56 (FIG. 3), in the packet memory 12.
  • multi-buffer packets occupy multiple packet buffers 14 in the packet memory 12.
  • the packet processing block 104 For each destination address, the packet processing block 104 generates (at block 154) a header for the transmission to the destination address and writes (at block 156) the generated headers 96a, 96b...96n (FIG. 6) to the one or more entries, e.g., 54 (FIG. 3), in the packet memory 12 including the packet payload 98. In certain embodiments, the generated headers 96a, 96b...96n may be written preceding the payload packet entries as shown in FIG. 6. The packet processing block 104 further generates (at block 158) and queue indicator(s) other than the queue descriptors.
  • the packet processing block 104 further generates (at block 160), for each destination address and buffer descriptor, an indicator 50a, 50b ...5On including the information on the generated header 96a, 96b...96n (FIG. 6) for the destination address and the descriptor 52 (FIG. 3), wherein the indicators 50a, 50b...5On for the destination addresses address the one or more descriptors 54.
  • the information on the header in the indicator 50a, 50b...5On may further include (at block 162) a header length 76 (FIG. 4) and offset 78 that is used to extract the header 96a, 96b.. ,96n (FIG.
  • the indicator information may also include (at block 164) a payload length 72 and payload offset 74 that is used to extract the payload 98 from the entry 56 for the destination address for which the indicator 50a, 50b ...50n is generated.
  • the packet processing block 104 generates (at block 166) a handle 54a, 54b ...54n for each generated indicator 50a, 50b...50n, where the handle includes an address of the indicator 64a in the control information memory 18.
  • the packet processing block 104 writes, for each destination address, (at block 168) the one or more handles 54a, 54b...54n addressing the one or more indicators 50a, 50b...5On for the destination address to the local memory 6.
  • the packet processing block 104 further writes (at block 170) to the local memory 6 information on one output queue for the handles 54a, 54b...54n written to the memory 6 indicating the output queue to which the buffer handle is queued to make available to the queue manager 106.
  • the packet processing block 104 queues the buffer handles in the output queues to make available to the queue manager 106.
  • FIG. 9 illustrates one embodiment of the information the packet processing block 104 writes to the local memory 6.
  • the packet processing block 104 For each destination address, for which a corresponding buffer indicator 50a, 50b ...50n and buffer handle 54a, 54b ...54n are generated, the packet processing block 104 writes four lines 200a...20On to the local memory 6, including the buffer handle 202a...202n, , the end of packet (EOP) field 204a...204n indicating whether the buffer handle is the last; the next block 206a.. ,206n comprising the address in the local memory 6 of the next buffer handle to process; an output queue 208a...208n, such as output queue 170, in which to enqueue the packet generated for the destination address; and additional user defined information 160a...16On. Further, the packet engine 4c may generate multiple " threads to process different multicast packets. FIG. 9 shows the packet processing block 104 spawning threads 0....n, where thread 0 processing a set of entries in the local memory 6 for one multicast packet and another thread n independently processes entries in the local memory 6 for another multicast packet.
  • FIG. 10 illustrates one embodiment of the operations performed by the queue manager 106 and transmission 108 blocks to transmit the packets.
  • the queue manager block 106 executing in one packet engine 4a, 4b...4n uses buffer handles to queue buffer indicators 30a...3On into packet queues 20a...2On, so each packet queue includes one or more indicators for a multicast destination address.
  • the queue manager block 106 may access the buffer handles from the output queue 170 (FIG. 8).
  • the transmission block 108 then uses the buffer handles to process the indicators to transmit the packet data to the multicast destination addresses.
  • the transmission block 108 performs a loop at blocks 202 through 222 for each packet queue 20a...2On, where each packet queue corresponds to one destination address to receive the payload for the multicast packet.
  • the transmission block 108 accesses (at block 206) a descriptor, e.g., buffer descriptor 52, associated with the indicator 50a, 50b ...50n.
  • the packet entry 56 in the packet memory 12 addressed by the accessed buffer descriptor 52 is accessed (at block 208).
  • the transmission block 108 uses (at block 210) the header length 76 and offset 78 (FIG. 4) from the indicator 50a, 50b...5On to access the header 96a, 96b...96n (FIG.
  • FIG. 11 illustrates one embodiment of a network processor 300.
  • the network processor 300 shown is an Intel® Internet eXchange network Processor (IXP). Other network processors feature different designs.
  • the network processor 300 shown features a collection of packet engines 304, also known as microengines, programmable engine, etc.
  • the packet engines 304 may be Reduced Instruction Set Computing (RISC) processors tailored for packet processing.
  • RISC Reduced Instruction Set Computing
  • the packet engines 304 may not include floating point instructions or instructions for integer multiplication or division commonly provided by general purpose processors.
  • the network processor 300 components maybe implemented on a single integrated circuit die.
  • An individual packet engine 304 may offer multiple threads. For example, the multi-threading capability of the packet engines 304 may be supported by hardware that reserves different registers for different threads and can quickly swap thread contexts.
  • a packet engine may also feature local memory and a content addressable memory (CAM).
  • the packet engines 304 may communicate with neighboring processors 304, for example, using neighbor registers wired to the adjacent engine(s) or via shared memory.
  • the network processor 300 also includes a core processor 310 (e.g., a StrongARM® XScale®) that is often programmed to perform "control plane" tasks involved in network operations. (StrongARM and XScale are registered trademarks of Intel Corporation).
  • the core processor 310 may also handle "data plane" tasks and may provide additional packet processing threads.
  • the network processor 300 also features interfaces 302 that can carry packets between the processor 300 and other network components.
  • the processor 300 can feature a switch fabric interface 302 (e.g., a CSIX interface) that enables the processor 300 to transmit a packet to other processor(s) or circuitry connected to the fabric.
  • the processor 300 can also feature an interface 302 (e.g., a System Packet Interface Level 4 (SPI-4) interface) that enables to the processor 300 to communicate with physical layer (PHY) and/or link layer devices.
  • SPI-4 System Packet Interface Level 4
  • the processor 300 also includes an interface 308 (e.g., a Peripheral Component Interconnect (PCI) bus interface) for communicating, for example, with a host. As shown, the processor 300 also includes other components shared by the engines such as memory controllers 306, 312, a hash engine, and scratch pad memory.
  • the multicast packet processing operations described above may be implemented on a network processor, such as the IXP, in a wide variety of ways. For example, one or more threads of a packet engine 304 may perform specific queue manager.
  • the packet engine implementing the queue manager operations described with respect to FIGs. 6 and 8 may be implemented in one of the packet engines 304.
  • FIG. 12 illustrates one embodiment of a network device incorporating techniques described above.
  • the device features a collection of line cards 400 ("blades") interconnected by a switch fabric 410 (e.g., a crossbar or shared memory switch fabric).
  • the switch fabric may conform to CSIX or other fabric technologies such as HyperTransport, Infmiband, PCI-X, Packet-Over- Synchronous Optical Network (SONET), RapidIO, and Utopia.
  • CSIX is described in the publication “CSIX-Ll : Common Switch Interface Specification-Li”, Version 1.0, published August, 2000 by CSIX; HyperTransport is described in the publication "HyperTransport I/O Link Specification", Rev.
  • Individual line cards include one or more physical layer (PHY) devices 402 (e.g., optic, wire, and wireless PHYs) that handle communication over network connections.
  • PHY physical layer
  • the PHYs translate between the physical signals carried by different network mediums and the bits (e.g., "0"-s and "l”-s) used by digital systems.
  • the line cards 300 may also include framer devices (e.g., Ethernet, Synchronous Optic Network (SONET), High-Level Data Link (HDLC) framers or other "layer 2" devices) 404 that can perform operations on frames such as error detection and/or correction.
  • framer devices e.g., Ethernet, Synchronous Optic Network (SONET), High-Level Data Link (HDLC) framers or other "layer 2" devices
  • the line cards 400 shown also include one or more network processors 406 or integrated circuits (e.g., ASICs) that perform packet processing operations for packets received via the PHY(s) 400 and direct the packets, via the switch fabric 410, to a line card providing the selected egress interface.
  • the network processor(s) 406 may perform "layer 2" duties instead of the framer devices 404 and the network processor operations described herein.
  • FIGs. 11 and 12 describe embodiments of a network processor and a device incorporating network processors
  • the techniques may be implemented in other hardware, firmware, and/or software.
  • the techniques may be implemented in integrated circuits (e.g., Application Specific Integrated Circuits (ASICs), Gate Arrays, and so forth).
  • ASICs Application Specific Integrated Circuits
  • Gate Arrays and so forth
  • the techniques may be applied to a wide variety of networking protocols at different levels in a protocol stack and in a wide variety of network devices (e.g., a router, switch, bridge, hub, traffic generator, and so forth).
  • the described embodiments may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof.
  • article of manufacture refers to code or logic implemented in hardware logic (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application
  • ASIC Specific Integrated Circuit
  • computer accessible medium or a computer readable medium such as magnetic storage medium (e.g., hard disk drives, floppy disks,, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non ⁇ volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, firmware, programmable logic, etc.).
  • Code in the computer readable medium is accessed and executed by a processor.
  • the code in which preferred embodiments are implemented may further be accessible through a transmission media or from a file server over a network.
  • the article of manufacture in which the code is implemented may comprise a transmission media, such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc.
  • the "article of manufacture” may comprise the medium in which the code is embodied.
  • the “article of manufacture” may comprise a combination of hardware and software components in which the code is embodied, processed, and executed.
  • circuitry refers to either hardware or software or a combination thereof.
  • the circuitry for performing the operations of the described embodiments may comprise a hardware device, such as an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.
  • the circuitry may also comprise a processor component, such as an integrated circuit, and code in a computer readable medium, such as memory, wherein the code is executed by the processor to perform the operations of the described embodiments.
  • the multicast packet processing operations are performed by a process implemented in a microblock executed by a packet engine, e.g., microengine of a network processor.
  • a packet engine e.g., microengine of a network processor.
  • the multicast processing operations may be performed by different types of processors, including central processing units, Input/Output controllers, etc.
  • packet was sometimes used in the above description to refer to a packet conforming to a network communication protocol.
  • a packet may also be a frame, fragment, ATM cell, and so forth, depending on the network technology being used.
  • a packet may refer to a unit of data transferred from devices other than network devices, such as storage controllers, printer controllers, etc.
  • the threads are implemented in computer programs such as a high level procedural or object oriented programming language.
  • the program(s) can be implemented in assembly or machine language if desired.
  • the language may be compiled or interpreted. Additionally, these techniques may be used in a wide variety of networking environments.
  • n when used to indicate an instance of an element, e.g., buffer handle 54n, buffer indicator 5On, etc., may refer to any integer value and indicate the same or different integer values when used with different elements.
  • FIGs. 8 and 10 show certain events occurring in a certain order. In alternative embodiments, certain operations may be performed in a different order, modified or removed. Moreover, operations may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.

Abstract

Provided are a method, system, and program for processing multicast packets. A multicast packet is received to transmit to destination addresses. A payload of the multicast packet is written to at least one packet entry in a packet memory. Headers are generated for the destination addresses and at least one descriptor is generated addressing the at least one packet entry in the packet memory including the payload to transmit to the destination addresses. For each destination address, at least one indicator is generated including information on the generated header for the destination address and the at least one descriptor, wherein indicators for the destination addresses address the at least one descriptor.

Description

METHOD AND SYSTEM FOR PROCESSING MULTICAST PACKETS
BACKGROUND
[0001] Systems in a network environment communicate information in packets that encapsulate the information according to network communication protocols. Packets transmitted from one node to another node may be transmitted through one or more intervening routers that route the packets throughout the network or between networks. The router typically includes one or more network processors to process the packets and may also include a core processor. The network processor stores packets in a memory device, such as a Static Dynamic Random Access Memory (SDRAM). When a packet is added to the SDRAM, an entry, referred to as a buffer descriptor, is added to a packet queue in another memory device, such as a Static Random Access Memory (SRAM), which is used to maintain control information on the packets added to the SDRAM. The SRAM may include multiple queues for packets in the SDRAM.
[0002] A network processor may include a plurality of packet engines, also known as microengines, that process and forward the packets being transmitted from one node to another and may also include a core processor to perform other related processing information. In certain prior art network processors having packet engines as well as a core processor, the packet engines may process unicast packets and the core processor may process multicast packets having a payload to transmit to different destination addresses.
[0003] Further, when processing a multicast packet, the core processor may write an instance of the multicast packet payload to the SDRAM for each destination address to which the packet is directed. A buffer descriptor may also be created and queued for the entries added to the SDRAM for the destination addresses of the multicast packet. Thus, multiple entries in the SDRAM are used to buffer the same payload sent to the different destination addresses. The entries in the SDRAM include a unique header for the different destination addresses, where the header includes address and other information to route the payload of the multicast packet to the destination address. BRIEF DESCRIPTION QF THE DRAWINGg
[0004] FIG. 1 illustrates a network processor.
[0005] FIGs. 2a and 2b illustrate information maintained in a control information memory. [0006] FIG. 3 illustrates data structures to maintain information for a multicast packet.
[0007] FIG. 4 illustrates information maintained in a buffer indicator.
[0008] FIG. 5 illustrates content of a multicast packet.
[0009] FIG. 6 illustrates a packet entry in the packet memory. [0010] FIG. 7 illustrates the packet engines that process a multicast packet.
[0011] FIGs. 8 and 10 illustrate operations to process a multicast packet.
[0012] FIG. 9 illustrates information maintained in local memory of a packet engine to process a multicast packet.
[0013] FIG. 11 is a diagram of a network processor. [0014} FIG. 12 is a diagram of a network device.
DETAILED DESCRIPTION
[0015] In the following description, reference is made to the accompanying drawings which form a part hereof and which illustrate several embodiments. It is understood that other embodiments may be utilized and structural and operational changes may be made without departing from the scope of the embodiments. [0016] A network processor comprises devices that execute programs to handle packets in a data network, such as processors on router line cards, network access equipment and packet forwarding devices. FIG. 1 illustrates a network processor 2 according to one embodiment including packet engines 4a, 4b...4n comprising high speed processors specialized for packet processing. The packet engines may comprise any programmable engine or processor for processing packets, such as a microengine, etc. The packet engines may execute program logic, such as microblocks, to process packets, where a microblock comprises fast-path packet processing logic executed by the packet engines 4a, 4b...4n.
[0017] The network processor packet engines 4a, 4b...4n buffer packets and other information used to process packets in a local memory, such as local memory 6 for packet engine 4c. The local memory 6 may be implemented on the same integrated circuit die on which the packet engine 4c is implemented and may comprise a content address memory.
[0018] The network processor 2 may communicate over one or more memory interfaces 10 with a packet memory 12 for storing packet entries 14 and a control information memory 18 storing packet queues 20 and queue descriptors 22 defining the packet queues 20. The packet entries 14 comprise buffers, each including the payload and header information for a packet transmission. The packet queues 20 include the buffer indicators, where for a multicast packet there is one buffer indicator associated with each descriptor and packet entry for a destination address. Thus, for each destination address, there are buffer indicators referencing the same buffer descriptors, which reference packet buffers 14 in the packet memory 12. If the multicast packet payload occupies multiple buffers, then there may be one buffer descriptor for each packet buffer used by the multicast packet and for each buffer used by the multicast packet, there is one indicator for each destination address. Otherwise, if the multicast packet payload uses only one data buffer, then there may be just one buffer descriptor and one buffer indicator for each destination address. In certain embodiments, the packet memory 12 may comprise at least one SDRAM and the control information memory 18 may comprise at least one SRAM, such as a Quad Data Rate (QDR) high bandwidth SRAM. However, other types of memory devices known in the art may also be used. Further, in alternative embodiments, the packet memory 12 and control information memory 18 may be within different memory areas of the same memory device or in different memory areas of different memory devices. The reference numbers 14, 20, and 22 may represent one or more of the referenced items. [0019] FIG. 2a illustrates one embodiment of packet queues 20a...2On for a single buffer packet, i.e., where the multicast packet requires one buffer. There is one packet queue 20a...2On for each destination address and each queue 20a...2On includes one buffer indicator 30a...3On for each buffer descriptor addressing a packet buffer storing the payload. Because each output packet has the same data, the buffer indicators for each destination address in each packet queue 20a...2On, address the same buffer descriptors, as shown in FIG. 2a. The buffer indicators at the same position in the packet queues 20a...2On reference the same buffer descriptors of data to send for the multi-cast operation. If a packet queue includes multiple buffer indicators, each buffer indicator in one queue provides the data for a separate multi- cast packet. For instance, the first buffer indicator in each packet queue 20a....20bn addresses the same buffer descriptor 32a corresponding to one packet entry having the payload to send to the destination address.
[0020] FIG. 2b illustrates one embodiment of the information included in the control information memory 18 for a multi-buffer payload in a multicast packet. For each destination address, there is one packet queue 40a...4On. Each packet queue 40a...4On includes one start of packet (SOP) buffer indicator, which points to the (SOP) buffer descriptor to include in the payload for each multicast packet. Each packet 42a, 42b...42n provides the payload for the destination addresses in a multi- cast packet and includes a first buffer descriptor addressed by the SOP buffer indicator in each packet queue 40a, 40b...4On and following buffer descriptors addressing further packet buffers for the payload. For instance, the first SOP buffer indicator in each packet queue 40a...4On points to the same buffer descriptor in the same packet 42a providing the payload for the multicast packet. The second SOP buffer indicator in each packet queue 40a, 40b...4On points to the same buffer descriptor in the same packet 42b providing the payload for a next multi-cast packet. [0021] In situations where the packet occupies only a single data buffer, there is only one buffer indicator in each packet queue addressing the same buffer descriptor. [0022] FIG. 3 illustrates one embodiment of a data structure having a plurality of buffer indicators 50a, 50b...5On. In certain embodiments, one buffer indicator is generated for each destination address of the multicast packet. Each buffer indicator 50a, 50b ...50n generated for the multicast packet includes the address of the buffer descriptor 52 that may be used to access the payload for the multicast packet that is sent to all destination addresses. For each buffer indicator 50a, 50b...5On, abuffer handle 54a, 54b ...54n is generated, where the buffer handle 54a, 54b...54n includes the address of the corresponding buffer indicator 50a, 50b...5On in the control information memory 18, e.g., SEAM address. The buffer descriptor 52 is used to access a packet buffer entry 56 in the packet memory 12. For instance, the packet buffer 56 address in the packet memory 12 may be calculated from the buffer descriptor 52 address stored in each buffer indicator 50a, 50b ...5On. Alternatively, the buffer descriptor 68 may include the address of the packet buffer 56 corresponding to the buffer descriptor 52.
[0023] With the described embodiments, one buffer indicator 50a, 50b...5On generated for each destination address addresses one buffer descriptor 52, so that one packet buffer entry in the packet memory 12 maintains the payload used for multiple destination addresses of the multicast packet. If multiple buffer indicators are generated for a destination address, i.e., output packet, then the buffer indicators address different buffer descriptors corresponding to different packet buffer entries containing the data for the multi-buffer packet.
[0024] The buffer handles 54a, 54b...54n may include an end of packet (EOP) field 60 indicating whether the buffer handle 54a, 54b...54 is associated with the last data buffer for a packet in the multicast transmission; a packet length field 62 indicating the length of the packet to be transmitted to the destination address; and an address field 64 having the address of the associated buffer indicator 50a, 50b...5On in the control information memory 18. The buffer descriptor 52 addressed by the buffer indicators 50a, 50b...5On further includes a reference counter 66 indicating the number of destination addresses to receive the multicast packet and an address 66 of the packet buffer entry 54 in the packet memory 12 including the payload to transmit to each destination address.
[0025] If a packet requires only one data buffer, then there is only one buffer handle and buffer indicator for the packet for each destination address. In such case of a single buffer packet, the EOP field 60 is set to a fixed value. However, in certain situations, a packet may require multiple data buffers, i.e., a multi-buffer packet. For instance, if the size of the packet buffer is 2048 bytes and the packet is larger than 2048 bytes, then the packet requires multiple packet buffers. In such case, there may be one buffer handle and buffer indicator for each of the data buffers used by the packet. The buffer handles for the data buffers at the start of the packet and middle of the packets may have an end of packet field 60 of zero, indicating that they are not the end of the packet and the buffer handle for the last data buffer of the packet has an end of packet field of one.
[0026] FIG. 3 illustrates the buffer handles and buffer indicators for a single data buffer for the multicast packet if the multicast packet is a single buffer packet. In embodiments where the multicast packet occupies multiple buffers, then there may be a set of buffer handles, indicators and buffer descriptor shown in FIG. 3 generated for each packet buffer entry in the packet memory 12 having payload data. Further, the- bufferjiext handle for each indicator may address the next indicator for an output packet, i.e., destination address, addressing the buffer descriptor containing the next buffer to include in the packet. Further, for a multi-buffer packet, the EOP field 60a, 60b.. ,60bn indicates whether the buffer handle, buffer indicator and buffer descriptor for one destination address are for the start of the packet, i.e., first buffer in the packet, a middle of the packet, or the end of packet, i.e., the last packet in the buffer.
The EOP value for a start of packet and middle of packet in a multi-buffer packet may be the same value, i.e., indicating that the indicator buffer handle is not for the last indicator.
[0027] FIG. 4 illustrates one embodiment of the information that may be included with each buffer indicator 50a, 50b...5On, including:
Next Buffer Indicator 70: indicates a next buffer 50b, 50c...5On indicator for the subsequent destination address, where the information on the next buffer in each buffer indicator forms a linked list or chain of buffer indicators, where the last buffer indicator 5On may include a null value for the next buffer indicator field 70. For a single buffer packet, the buffer_next indicates that there is no next indicator and next buffer descriptor for the packet. For a multi-buffer packet, the buffer next indicator points to the next buffer indicator and buffer descriptor for a next buffer to be included in the packet. If the buffer indicator is for a middle of packet or start of packet buffer handle, then the next buffer indicator points to the next indicator corresponding to next buffer for the packet. If the buffer indicator is for the end of packet buffer handle, then the next buffer indicator indicates no next indicator for that packet.
Pay load Length 72: The length of the payload to be included in the packet transmitted to the destination address associated with the buffer indicator 50a, 50b...5On. Payload Offset 74: an offset into the packet buffer entry 54 where the payload starts. The payload to include in the packet to the destination address is determined from the payload offset 74 and payload length 72. Header Length 76: the length of a header to include in the packet transmitted to the destination address associated with the buffer indicator 50a, 50b ...5On. Header Offset 78: an offset into the packet buffer entry 54 where the header for the destination address starts. The header to include in the packet to the destination address is determined from the header offset 64 and header length 78. Buffer Descriptor 80: the address of the buffer descriptor 52 in the control information memory 18.
[0028] FIG. 5 illustrates one embodiment of a multicast packet 90 having a header 92 and payload 94. The header 92 indicates the destination addresses, where the payload 94 is transmitted to the destination addresses and is comprised of one or more buffers. [0029] FIG. 6 illustrates one embodiment of the content in the packet entries, e.g., 14 (FIG. 1), 56 (FIG. 3). The packet entry 14, 56 includes headers 96a, 96b...96n for each destination address of the multicast packet 90 and the payload 98. In this way, only one entry having one payload for all the destination addresses is maintained. The packet entry 96 may be addressed by one buffer descriptor 52. [0030] FIG. 7 illustrates one embodiment of the functional role of the packet engines 4a, 4b..4n to process packets. A multicast packet 90 (FIG. 5) is received on a media switch fabric 100 and forwarded to one packet engine functioning as a receiving block (Rx) 102 that receives the multicast packet from the media switch fabric 100. The multicast packet 90 is then received by a packet engine 4a, 4b...4n function as a packet processing block 104, which generates and sets the buffer handles 54a, 54b ...54n, buffer indicators 50a, 50b ...50n, buffer descriptors, and the packet buffer entries in the packet memory 12. The packet processing block 104 uses local memory 6 when generating and setting the buffer handles, indicators, and descriptors. A packet engine functioning as a queue manager 106 uses the buffer handles to enqueue and dequeue the buffer indicators 30a...3On into and out of packet queues 20a...2On in the control information memory 18. A packet engine functioning as a transmission (Tx) block 108 uses buffer handles sent by the queue manager to access the buffer indicators, corresponding buffer descriptors and packet buffers in the packet memory 12 by reading the header and payload of the multicast packet to transmit the payloads to media switch fabric 110.
[0031] FIG. 8 illustrates one embodiment of operations the packet processing 104 block implemented in one packet engine, e.g., packet engine 4c, performs to setup the buffer indicators 50a, 50b...5On and other data structures for a multicast packet 90. Upon the packet engine 4c receiving (at block 150) a multicast packet 90 (FIG. 5) to transmit to a plurality of destination addresses, the packet processing block 104 writes (at block 152) the packet payload 94 for the multicast packet 90 to the payload 98 (FIG. 6) in one or more packet entries, e.g., 14 (FIG. 1), 56 (FIG. 3), in the packet memory 12. As discussed, multi-buffer packets occupy multiple packet buffers 14 in the packet memory 12. For each destination address, the packet processing block 104 generates (at block 154) a header for the transmission to the destination address and writes (at block 156) the generated headers 96a, 96b...96n (FIG. 6) to the one or more entries, e.g., 54 (FIG. 3), in the packet memory 12 including the packet payload 98. In certain embodiments, the generated headers 96a, 96b...96n may be written preceding the payload packet entries as shown in FIG. 6. The packet processing block 104 further generates (at block 158) and queue indicator(s) other than the queue descriptors. The packet processing block 104 further generates (at block 160), for each destination address and buffer descriptor, an indicator 50a, 50b ...5On including the information on the generated header 96a, 96b...96n (FIG. 6) for the destination address and the descriptor 52 (FIG. 3), wherein the indicators 50a, 50b...5On for the destination addresses address the one or more descriptors 54. [0032] The information on the header in the indicator 50a, 50b...5On may further include (at block 162) a header length 76 (FIG. 4) and offset 78 that is used to extract the header 96a, 96b.. ,96n (FIG. 6) from the entry 56 in the packet memory 12 for the destination address for which the indicator 50a, 50b...5On is generated. The indicator information may also include (at block 164) a payload length 72 and payload offset 74 that is used to extract the payload 98 from the entry 56 for the destination address for which the indicator 50a, 50b ...50n is generated. The packet processing block 104 generates (at block 166) a handle 54a, 54b ...54n for each generated indicator 50a, 50b...50n, where the handle includes an address of the indicator 64a in the control information memory 18. The packet processing block 104 writes, for each destination address, (at block 168) the one or more handles 54a, 54b...54n addressing the one or more indicators 50a, 50b...5On for the destination address to the local memory 6. The packet processing block 104 further writes (at block 170) to the local memory 6 information on one output queue for the handles 54a, 54b...54n written to the memory 6 indicating the output queue to which the buffer handle is queued to make available to the queue manager 106. The packet processing block 104 queues the buffer handles in the output queues to make available to the queue manager 106. [0033] FIG. 9 illustrates one embodiment of the information the packet processing block 104 writes to the local memory 6. For each destination address, for which a corresponding buffer indicator 50a, 50b ...50n and buffer handle 54a, 54b ...54n are generated, the packet processing block 104 writes four lines 200a...20On to the local memory 6, including the buffer handle 202a...202n, , the end of packet (EOP) field 204a...204n indicating whether the buffer handle is the last; the next block 206a.. ,206n comprising the address in the local memory 6 of the next buffer handle to process; an output queue 208a...208n, such as output queue 170, in which to enqueue the packet generated for the destination address; and additional user defined information 160a...16On. Further, the packet engine 4c may generate multiple " threads to process different multicast packets. FIG. 9 shows the packet processing block 104 spawning threads 0....n, where thread 0 processing a set of entries in the local memory 6 for one multicast packet and another thread n independently processes entries in the local memory 6 for another multicast packet.
[0034] FIG. 10 illustrates one embodiment of the operations performed by the queue manager 106 and transmission 108 blocks to transmit the packets. At block 200, the queue manager block 106 executing in one packet engine 4a, 4b...4n uses buffer handles to queue buffer indicators 30a...3On into packet queues 20a...2On, so each packet queue includes one or more indicators for a multicast destination address. The queue manager block 106 may access the buffer handles from the output queue 170 (FIG. 8). The transmission block 108 then uses the buffer handles to process the indicators to transmit the packet data to the multicast destination addresses. The transmission block 108 performs a loop at blocks 202 through 222 for each packet queue 20a...2On, where each packet queue corresponds to one destination address to receive the payload for the multicast packet. For each packet queue/destination address, another loop of operations is performed at blocks 204 through 220 for each indicator 30a...3On in the packet queue 20a...2On being processed. [0035] For each indicator, the transmission block 108 accesses (at block 206) a descriptor, e.g., buffer descriptor 52, associated with the indicator 50a, 50b ...50n. The packet entry 56 in the packet memory 12 addressed by the accessed buffer descriptor 52 is accessed (at block 208). The transmission block 108 uses (at block 210) the header length 76 and offset 78 (FIG. 4) from the indicator 50a, 50b...5On to access the header 96a, 96b...96n (FIG. 6) for the destination address from the accessed entry 56 in the packet memory 12. The accessed payload and header are forwarded (at block 212) to the media, e.g., media switch fabric 110, to transmit to the destination address indicated in the accessed header. In this way, the transmission block 108 transmits the payloads in one or more buffers corresponding to the indicators in multiple packet queues 20a...2On that provide indicators for each destination address. [0036] FIG. 11 illustrates one embodiment of a network processor 300. The network processor 300 shown is an Intel® Internet eXchange network Processor (IXP). Other network processors feature different designs. The network processor 300 shown features a collection of packet engines 304, also known as microengines, programmable engine, etc. The packet engines 304 may be Reduced Instruction Set Computing (RISC) processors tailored for packet processing. For example, the packet engines 304 may not include floating point instructions or instructions for integer multiplication or division commonly provided by general purpose processors. The network processor 300 components maybe implemented on a single integrated circuit die.
[0037] An individual packet engine 304 may offer multiple threads. For example, the multi-threading capability of the packet engines 304 may be supported by hardware that reserves different registers for different threads and can quickly swap thread contexts. In addition to accessing shared memory, a packet engine may also feature local memory and a content addressable memory (CAM). The packet engines 304 may communicate with neighboring processors 304, for example, using neighbor registers wired to the adjacent engine(s) or via shared memory. [0038] The network processor 300 also includes a core processor 310 (e.g., a StrongARM® XScale®) that is often programmed to perform "control plane" tasks involved in network operations. (StrongARM and XScale are registered trademarks of Intel Corporation). The core processor 310, however, may also handle "data plane" tasks and may provide additional packet processing threads. [0039] As shown, the network processor 300 also features interfaces 302 that can carry packets between the processor 300 and other network components. For example, the processor 300 can feature a switch fabric interface 302 (e.g., a CSIX interface) that enables the processor 300 to transmit a packet to other processor(s) or circuitry connected to the fabric. The processor 300 can also feature an interface 302 (e.g., a System Packet Interface Level 4 (SPI-4) interface) that enables to the processor 300 to communicate with physical layer (PHY) and/or link layer devices. The processor 300 also includes an interface 308 (e.g., a Peripheral Component Interconnect (PCI) bus interface) for communicating, for example, with a host. As shown, the processor 300 also includes other components shared by the engines such as memory controllers 306, 312, a hash engine, and scratch pad memory. [0040] The multicast packet processing operations described above may be implemented on a network processor, such as the IXP, in a wide variety of ways. For example, one or more threads of a packet engine 304 may perform specific queue manager. [0041] In certain embodiments, the packet engine implementing the queue manager operations described with respect to FIGs. 6 and 8 may be implemented in one of the packet engines 304.
[0042] FIG. 12 illustrates one embodiment of a network device incorporating techniques described above. As shown, the device features a collection of line cards 400 ("blades") interconnected by a switch fabric 410 (e.g., a crossbar or shared memory switch fabric). The switch fabric, for example, may conform to CSIX or other fabric technologies such as HyperTransport, Infmiband, PCI-X, Packet-Over- Synchronous Optical Network (SONET), RapidIO, and Utopia. CSIX is described in the publication "CSIX-Ll : Common Switch Interface Specification-Li", Version 1.0, published August, 2000 by CSIX; HyperTransport is described in the publication "HyperTransport I/O Link Specification", Rev. 1.03, published by the HyperTransport Tech. Consort., October, 2001; InfiniBand is described in the publication "InfiniBand Architecture, Specification Volume 1", Release 1.1, published by the InfiniBand trade association, Nov. 2002; PCI-X is described in the publication PCI-X 2.0 Specification by PCI-SIG; SONET is described in the publication "Synchronous Optical Network (SONET) - Basic Description including Multiplex Structure, Rates and Formats," document no. TlXl.5 by ANSI (Jan. 2001); RapidIO is described in the publication "RapidIO Interconnect Specification", Rev. 1.2, published by RapidIO Trade Ass'n, June 2002; and Utopia is described in the publication "UTOPIA: Specification Level 1 , Version 2.01", published by the ATM Forum Tech. Comm., March, 1994.
[0043] Individual line cards (e.g., 400a) include one or more physical layer (PHY) devices 402 (e.g., optic, wire, and wireless PHYs) that handle communication over network connections. The PHYs translate between the physical signals carried by different network mediums and the bits (e.g., "0"-s and "l"-s) used by digital systems. The line cards 300 may also include framer devices (e.g., Ethernet, Synchronous Optic Network (SONET), High-Level Data Link (HDLC) framers or other "layer 2" devices) 404 that can perform operations on frames such as error detection and/or correction. The line cards 400 shown also include one or more network processors 406 or integrated circuits (e.g., ASICs) that perform packet processing operations for packets received via the PHY(s) 400 and direct the packets, via the switch fabric 410, to a line card providing the selected egress interface. Potentially, the network processor(s) 406 may perform "layer 2" duties instead of the framer devices 404 and the network processor operations described herein.
[0044] While FIGs. 11 and 12describe embodiments of a network processor and a device incorporating network processors, the techniques may be implemented in other hardware, firmware, and/or software. For example, the techniques may be implemented in integrated circuits (e.g., Application Specific Integrated Circuits (ASICs), Gate Arrays, and so forth). Additionally, the techniques may be applied to a wide variety of networking protocols at different levels in a protocol stack and in a wide variety of network devices (e.g., a router, switch, bridge, hub, traffic generator, and so forth).
Additional Embodiment Details
[0045] The described embodiments may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The term "article of manufacture" as used herein refers to code or logic implemented in hardware logic (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application
Specific Integrated Circuit (ASIC), etc.), computer accessible medium or a computer readable medium, such as magnetic storage medium (e.g., hard disk drives, floppy disks,, tape, etc.), optical storage (CD-ROMs, optical disks, etc.), volatile and non¬ volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, firmware, programmable logic, etc.). Code in the computer readable medium is accessed and executed by a processor. The code in which preferred embodiments are implemented may further be accessible through a transmission media or from a file server over a network. In such cases, the article of manufacture in which the code is implemented may comprise a transmission media, such as a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc. Thus, the "article of manufacture" may comprise the medium in which the code is embodied. Additionally, the "article of manufacture" may comprise a combination of hardware and software components in which the code is embodied, processed, and executed. Of course, those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the embodiments, and that the article of manufacture may comprise any information bearing medium known in the art. [0046] The described operations may be performed by circuitry, where "circuitry" refers to either hardware or software or a combination thereof. The circuitry for performing the operations of the described embodiments may comprise a hardware device, such as an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc. The circuitry may also comprise a processor component, such as an integrated circuit, and code in a computer readable medium, such as memory, wherein the code is executed by the processor to perform the operations of the described embodiments.
[0047] In certain embodiments, the multicast packet processing operations are performed by a process implemented in a microblock executed by a packet engine, e.g., microengine of a network processor. In additional embodiments, the multicast processing operations may be performed by different types of processors, including central processing units, Input/Output controllers, etc.
[0048] The term packet was sometimes used in the above description to refer to a packet conforming to a network communication protocol. However, a packet may also be a frame, fragment, ATM cell, and so forth, depending on the network technology being used. Alternatively, a packet may refer to a unit of data transferred from devices other than network devices, such as storage controllers, printer controllers, etc.
[0049] Preferably, the threads are implemented in computer programs such as a high level procedural or object oriented programming language. However, the program(s) can be implemented in assembly or machine language if desired. The language may be compiled or interpreted. Additionally, these techniques may be used in a wide variety of networking environments.
[0050] The reference "n" when used to indicate an instance of an element, e.g., buffer handle 54n, buffer indicator 5On, etc., may refer to any integer value and indicate the same or different integer values when used with different elements.
[0051] The illustrated operations of FIGs. 8 and 10 show certain events occurring in a certain order. In alternative embodiments, certain operations may be performed in a different order, modified or removed. Moreover, operations may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.
[0052] The foregoing description of various embodiments has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the embodiments to the precise form disclosed. Many modifications and variations are possible in light of the above teaching.

Claims

WHAT IS CLAIMED IS: 1. A method, comprising: receiving a multicast packet to transmit to destination addresses; writing a payload of the multicast packet to at least one packet entry in a packet memory; generating headers for the destination addresses; generating at least one descriptor addressing the at least one packet entry in the packet memory including the payload to transmit to the destination addresses; and generating, for each destination address, at least one indicator including information on the generated header for the destination address and the at least one descriptor, wherein indicators for the destination addresses address the at least one descriptor.
2. The method of claim 1 , wherein the payload is written to multiple packet entries in the packet memory, wherein one descriptor is generated for each packet entry including the payload, and wherein one indicator is generated for each descriptor and destination address to which the payload in the packet entry addressed by the descriptor is transmitted.
3. The method of claim 2, further comprising: for each destination address, setting a next handle in the indicators for the destination address to point to the indicator corresponding to the descriptor addressing a next entry in the packet memory including further payload data for the destination address.
4. The method of claim 1 , wherein the payload is written to one packet entry in the packet memory, wherein one descriptor is generated for the packet entry including the payload, and wherein one indicator is generated for each destination address to which the payload in the packet entry addressed by the descriptor is transmitted.
5. The method of claim 1 , further comprising: generating a handle for each generated indicator addressing the indicator in a queue.
6. The method of claim 1, further comprising; using, for each destination address and indicator associated with the destination address, the information on the generated header in the at least one indicator for the destination address to access the header for the destination address; and transmitting, for each destination address and indicator associated with the destination address, the payload from the entry in the packet memory associated with the indicator and the accessed header for the destination address.
7. The method of claim 6, further comprising: using, for each destination address, the header length and offset from the at least one indicator for the destination address to access the header for the destination address from the at least one entry in the packet memory addressed by the at least one descriptor identified in the at least one indicator for the destination address; and transmitting, for each destination address, the payload from the entry in the packet memory and the accessed header for the destination address.
8. The method of claim 1 , further comprising: writing the generated headers to each entry in the packet memory including packet payload, wherein the information on the header in one indicator for one destination address includes a header length and offset used to extract the header from the entry in the packet memory for the destination address for which the indicator is generated.
9. The method of claim 8, wherein the indicator further includes information on a payload length and payload offset used to extract the payload from the entry for the destination address for which the indicator is generated, further comprising: using, for each destination address, the payload length and offset information in the at leas tone indicator for the destination address to access the payload from the at least one entry in the packet memory addressed by the at least one descriptor identified in the at least one indicator for the destination address.
10. The method of claim 1 , further comprising: writing to a local memory at least one handle for each destination address addressing the at least one indicator for the destination address; and writing the handles in the local memory to an output queue; and queuing the indicators corresponding to the handles in the output queue to at least one packet queue.
11. The method of claim 10, further comprising: writing to the local memory information on one output queue for the handle written to the memory indicating the output queue to which the destination packet generated from the indicator addressed by the handle is queued.
12. The method of claim 10, wherein a packet processing block performs the operations of writing the payload, generating the headers, generating the at least one descriptor, generating the at least one indicator, writing the handles to the local memory, and writing the handles to the output queue, and where a transmission block uses the handles to access the indicators for the destination address to send the payload to the destination addresses.
13. A system, comprising: a packet memory; and circuitry in communication with the packet memory and enabled to : (i) receive a multicast packet to transmit to destination addresses; (ii) write a payload of the multicast packet to at least one packet entry in the packet memory; (iii) generate headers for the destination addresses; (iv) generate at least one descriptor addressing the at least one packet entry in the packet memory including the payload to transmit to the destination addresses; and (v) generate, for each destination address, at least one indicator including information on the generated header for the destination address and the at least one descriptor, wherein indicators for the destination addresses address the at least one descriptor.
14. The system of claim 13, wherein the payload is written to multiple packet entries in the packet memory, wherein one descriptor is generated for each packet entry including the payload, and wherein one indicator is generated for each descriptor and destination address to which the payload in the packet entry addressed by the descriptor is transmitted.
15. The system of claim 14, wherein the circuitry is enabled to: for each destination address, set a next handle in the indicators for the destination address to point to the indicator corresponding to the descriptor addressing a next entry in the packet memory including further payload data for the destination address.
16. The system of claim 13, wherein the payload is written to one packet entry in the packet memory, wherein one descriptor is generated for the packet entry including the payload, and wherein one indicator is generated for each destination address to which the payload in the packet entry addressed by the descriptor is transmitted.
17. The system of claim 13 , wherein the circuitry is further enabled to : generate a handle for each generated indicator addressing the indicator in a queue.
18. The system of claim 13, wherein the circuitry is further enabled to: use, for each destination address and indicator associated with the destination address, the information on the generated header in the at least one indicator for the destination address to access the header for the destination address; and transmit, for each destination address and indicator associated with the destination address, the payload from the entry in the packet memory associated with the indicator and the accessed header for the destination address.
19. The system of claim 18, wherein the circuitry is further enabled to: use, for each destination address, the header length and offset from the at least one indicator for the destination address to access the header for the destination address from the at least one entry in the packet memory addressed by the at least one descriptor identified in the at least one indicator for the destination address; and transmit, for each destination address, the payload from the entry in the packet memory and the accessed header for the destination address.
20. The system of claim 13 , wherein the circuitry is further enabled to : write the generated headers to each entry in the packet memory including packet payload, wherein the information on the header in one indicator for one destination address includes a header length and offset used to extract the header from the entry in the packet memory for the destination address for which the indicator is generated.
21. The system of claim 20,wherein the indicator further includes information on a payload length and payload offset used to extract the payload from the entry for the destination address for which the indicator is generated, wherein the circuitry is further enabled to: use, for each destination address, the payload length and offset information in the at leas tone indicator for the destination address to access the payload from the at least one entry in the packet memory addressed by the at least one descriptor identified in the at least one indicator for the destination address.
22. The system of claim 13, further comprising: a local memory; wherein the circuitry is further enabled to: (i) write to the local memory at least one handle for each destination address addressing the at least one indicator for the destination address; and (ii) write the handles in the local memory to an output queue; and (iii) queue the indicators corresponding to the handles in the output queue to at least one packet queue.
23. The system of claim 22, wherein the circuitry is further enabled to : write to the local memory information on one output queue for the handle written to the memory indicating the output queue to which the destination packet generated from the indicator addressed by the handle is queued.
24. The system of claim 22, wherein a packet processing block performs the operations of writing the payload, generating the headers, generating the at least one descriptor, generating the at least one indicator, writing the handles to the local memory, and writing the handles to the output queue, and where a transmission block uses the handles to access the indicators for the destination address to send the payload to the destination addresses.
25. The system of claim 24, wherein the circuitry comprises a plurality of packet engines, wherein one packet engine executes the packet processing block and another packet engine executes the transmission block.
26. A system, comprising: a switch fabric; and a plurality of line cards coupled to the switch fabric, wherein each line card includes a network processor, wherein each network processor includes: (i) a packet memory; and (ii) circuitry in communication with the packet memory and enabled to: (a) receive a multicast packet to transmit to destination addresses; (b) write a payload of the multicast packet to at least one packet entry in the packet memory; (c) generate headers for the destination addresses; (d) generate at least one descriptor addressing the at least one packet entry in the packet memory including the payload to transmit to the destination addresses; and (e) generate, for each destination address, at least one indicator including information on the generated header for the destination address and the at least one descriptor, wherein indicators for the destination addresses address the at least one descriptor.
27. The system of claim 26, wherein the payload is written to multiple packet entries in the packet memory, wherein one descriptor is generated for each packet entry including the payload, and wherein one indicator is generated for each descriptor and destination address to which the payload in the packet entry addressed by the descriptor is transmitted.
28. The system of claim 26, wherein the circuitry is further enabled to: write the generated headers to each entry in the packet memory including packet payload, wherein the information on the header in one indicator for one destination address includes a header length and offset used to extract the header from the entry in the packet memory for the destination address for which the indicator is generated.
29. An article of manufacture for transmitting packets, wherein the article of manufacture is in communication with a packet memory and causes operations to be performed, the operations comprising: receiving a multicast packet to transmit to destination addresses; writing a payload of the multicast packet to at least one packet entry in a packet memory; generating headers for the destination addresses; generating at least one descriptor addressing the at least one packet entry in the packet memory including the payload to transmit to the destination addresses; and generating, for each destination address, at least one indicator including information on the generated header for the destination address and the at least one descriptor, wherein indicators for the destination addresses address the at least one descriptor.
30. The article of manufacture of claim 29, wherein the payload is written to multiple packet entries in the packet memory, wherein one descriptor is generated for each packet entry including the payload, and wherein one indicator is generated for each descriptor and destination address to which the payload in the packet entry addressed by the descriptor is transmitted.
31. The article of manufacture of claim 29, wherein the operations further comprise: for each destination address, setting a next handle in the indicators for the destination address to point to the indicator corresponding to the descriptor addressing a next entry in the packet memory including further payload data for the destination address.
32. The article of manufacture of claim 29, wherein the payload is written to one packet entry in the packet memory, wherein one descriptor is generated for the packet entry including the payload, and wherein one indicator is generated for each destination address to which the payload in the packet entry addressed by the descriptor is transmitted.
33. The article of manufacture of claim 29, wherein the operations further comprise: generating a handle for each generated indicator addressing the indicator in a queue.
34. The article of manufacture of claim 29, wherein the operations further comprise: using, for each destination address and indicator associated with the destination address, the information on the generated header in the at least one indicator for the destination address to access the header for the destination address; and transmitting, for each destination address and indicator associated with the destination address, the payload from the entry in the packet memory associated with the indicator and the accessed header for the destination address.
35. The article of manufacture of claim 34, wherein the operations further comprise: using, for each destination address, the header length and offset from the at least one indicator for the destination address to access the header for the destination address from the at least one entry in the packet memory addressed by the at least one descriptor identified in the at least one indicator for the destination address; and transmitting, for each destination address, the payload from the entry in the packet memory and the accessed header for the destination address.
36. The article of manufacture of claim 29, wherein the operations further comprise: writing the generated headers to each entry in the packet memory including packet payload, wherein the information on the header in one indicator for one destination address includes a header length and offset used to extract the header from the entry in the packet memory for the destination address for which the indicator is generated.
37. The article of manufacture of claim 36, wherein the indicator further includes information on a payload length and payload offset used to extract the payload from the entry for the destination address for which the indicator is generated, further comprising: using, for each destination address, the payload length and offset information in the at leas tone indicator for the destination address to access the payload from the at least one entry in the packet memory addressed by the at least one descriptor identified in the at least one indicator for the destination address.
38. The article of manufacture of claim 29, wherein the article of manufacture is further coupled to a local memory, wherein the operations further comprise: writing to the local memory at least one handle for each destination address addressing the at least one indicator for the destination address; and writing the handles in the local memory to an output queue; and queuing the indicators corresponding to the handles in the output queue to at least one packet queue.
39. The article of manufacture of claim 38, further comprising: writing to the local memory information on one output queue for the handle written to the memory indicating the output queue to which the destination packet generated from the indicator addressed by the handle is queued.
40. The article of manufacture of claim 38, wherein a packet processing block performs the operations of writing the payload, generating the headers, generating the at least one descriptor, generating the at least one indicator, writing the handles to the local memory, and writing the handles to the output queue, and where a transmission block uses the handles to access the indicators for the destination address to send the payload to the destination addresses.
PCT/CN2004/000935 2004-08-12 2004-08-12 Method and system for processing multicast packets WO2006015513A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2004/000935 WO2006015513A1 (en) 2004-08-12 2004-08-12 Method and system for processing multicast packets
US10/567,001 US7940764B2 (en) 2004-08-12 2004-08-12 Method and system for processing multicast packets

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2004/000935 WO2006015513A1 (en) 2004-08-12 2004-08-12 Method and system for processing multicast packets

Publications (1)

Publication Number Publication Date
WO2006015513A1 true WO2006015513A1 (en) 2006-02-16

Family

ID=35839117

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2004/000935 WO2006015513A1 (en) 2004-08-12 2004-08-12 Method and system for processing multicast packets

Country Status (2)

Country Link
US (1) US7940764B2 (en)
WO (1) WO2006015513A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1981227A2 (en) 2007-04-12 2008-10-15 Xancom Limited Maintenance of bandwidth allocation for traffic including multicasts
CN101437004B (en) * 2007-11-15 2012-12-05 中兴通讯股份有限公司 IQ data transmission method

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070097970A1 (en) * 2005-11-01 2007-05-03 Georgios Margaritis Packet retransmitter
US8391354B2 (en) * 2007-05-14 2013-03-05 Broadcom Corporation Method and system for transforming uncompressed video traffic to network-aware ethernet traffic with A/V bridging capabilities and A/V bridging extensions
US8321651B2 (en) * 2008-04-02 2012-11-27 Qualcomm Incorporated System and method for memory allocation in embedded or wireless communication systems
US8442063B1 (en) * 2009-12-21 2013-05-14 Xuyang Zhou System and method for scheduling unicast and multicast traffic

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020054228A (en) * 2000-12-27 2002-07-06 오길록 A Flow Control Method For Multiparty Communications Using Active Networking
US20030093557A1 (en) * 2001-10-30 2003-05-15 Alcatel Forwarding of IP packets for routing protocols
US6724761B1 (en) * 1999-09-29 2004-04-20 Northrop Grumman Corporation Method and apparatus for serial cell replication for multicast in a cell switch

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69329709D1 (en) * 1993-04-29 2001-01-04 Ibm Method and device for multiple transmission of data in a communication system
CA2151180C (en) * 1994-09-14 2003-11-04 Robert Brownhill Method and apparatus for multicast of atm cells
US6873627B1 (en) * 1995-01-19 2005-03-29 The Fantastic Corporation System and method for sending packets over a computer network
US6246682B1 (en) * 1999-03-05 2001-06-12 Transwitch Corp. Method and apparatus for managing multiple ATM cell queues
JP2001186142A (en) * 1999-12-27 2001-07-06 Toshiba Corp Packet buffer device and packet switching device
JP4501230B2 (en) * 2000-05-30 2010-07-14 株式会社日立製作所 IPv4-IPv6 multicast communication method and apparatus
KR100454336B1 (en) * 2000-07-07 2004-10-26 엘지전자 주식회사 Apparatus and Method of Managing Cells in the ATM Switch
US7079501B2 (en) * 2001-01-31 2006-07-18 International Business Machines Corporation Method and system for efficiently delivering content to multiple requesters
US6836480B2 (en) * 2001-04-20 2004-12-28 International Business Machines Corporation Data structures for efficient processing of multicast transmissions
US7339928B2 (en) * 2001-08-29 2008-03-04 Alcatel Lucent Micro-mobility network routing system and method
FR2831367B1 (en) * 2001-10-18 2004-01-30 Cit Alcatel METHOD AND DEVICE FOR CONTROLLING SERVICE TIMES OF MULTIDESTINATION CELLS COPIED INTO THE INPUT MODULES OF AN ASYNCHRONOUS SWITCHING NODE
US7280542B2 (en) * 2002-10-25 2007-10-09 Alcatel Lucent Multicasting system and method for use in an access node's ATM switch fabric
US7266120B2 (en) * 2002-11-18 2007-09-04 Fortinet, Inc. System and method for hardware accelerated packet multicast in a virtual routing system
US7397809B2 (en) * 2002-12-13 2008-07-08 Conexant Systems, Inc. Scheduling methods for combined unicast and multicast queuing
US7095739B2 (en) * 2003-11-25 2006-08-22 Cisco Technology, Inc. Reliable multicast communication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6724761B1 (en) * 1999-09-29 2004-04-20 Northrop Grumman Corporation Method and apparatus for serial cell replication for multicast in a cell switch
KR20020054228A (en) * 2000-12-27 2002-07-06 오길록 A Flow Control Method For Multiparty Communications Using Active Networking
US20030093557A1 (en) * 2001-10-30 2003-05-15 Alcatel Forwarding of IP packets for routing protocols

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1981227A2 (en) 2007-04-12 2008-10-15 Xancom Limited Maintenance of bandwidth allocation for traffic including multicasts
EP1981227A3 (en) * 2007-04-12 2011-01-19 Broadcom Corporation Maintenance of bandwidth allocation for traffic including multicasts
US8077714B2 (en) 2007-04-12 2011-12-13 Broadcom Corporation Maintenance of bandwidth allocation for traffic including multicasts
CN101437004B (en) * 2007-11-15 2012-12-05 中兴通讯股份有限公司 IQ data transmission method

Also Published As

Publication number Publication date
US20060268868A1 (en) 2006-11-30
US7940764B2 (en) 2011-05-10

Similar Documents

Publication Publication Date Title
US6157623A (en) Apparatus and method for selectively outputting data using a MAC layer interface or a PCI bus interface
US6151316A (en) Apparatus and method for synthesizing management packets for transmission between a network switch and a host controller
US7100020B1 (en) Digital communications processor
US6226267B1 (en) System and process for application-level flow connection of data processing networks
US7002982B1 (en) Apparatus and method for storing data
US7017020B2 (en) Apparatus and method for optimizing access to memory
US20060069869A1 (en) Enqueueing entries in a packet queue referencing packets
US6522188B1 (en) High-speed data bus for network switching
US20120027029A1 (en) System and method for offloading packet protocol encapsulation from software
US7483377B2 (en) Method and apparatus to prioritize network traffic
US9274586B2 (en) Intelligent memory interface
US6084878A (en) External rules checker interface
WO1999059078A9 (en) Digital communications processor
US6804234B1 (en) External CPU assist when peforming a network address lookup
US7940764B2 (en) Method and system for processing multicast packets
KR100836947B1 (en) Tag generation based on priority or differentiated services information
US20050238009A1 (en) Address validating data structure used for validating addresses
US7289455B2 (en) Network statistics
EP1631906B1 (en) Maintaining entity order with gate managers
US6947437B1 (en) Programmable output queues in a network device
US7340570B2 (en) Engine for comparing a key with rules having high and low values defining a range
US6963566B1 (en) Multiple address lookup engines running in parallel in a switch for a packet-switched network
US6963567B1 (en) Single address lookup table with multiple address lookup engines running in parallel in a switch for a packet-switched network
US6940854B1 (en) Systems and methods for determining priority based on previous priority determinations

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2006268868

Country of ref document: US

Ref document number: 10567001

Country of ref document: US

AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWP Wipo information: published in national office

Ref document number: 10567001

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase