WO2002087156A2 - Method and device for multicast transmissions - Google Patents

Method and device for multicast transmissions Download PDF

Info

Publication number
WO2002087156A2
WO2002087156A2 PCT/GB2002/000383 GB0200383W WO02087156A2 WO 2002087156 A2 WO2002087156 A2 WO 2002087156A2 GB 0200383 W GB0200383 W GB 0200383W WO 02087156 A2 WO02087156 A2 WO 02087156A2
Authority
WO
WIPO (PCT)
Prior art keywords
frame
buffer
queue
multicast
store
Prior art date
Application number
PCT/GB2002/000383
Other languages
French (fr)
Other versions
WO2002087156A3 (en
Inventor
Claude Basso
Jean Louis Calvignac
Marco Heddes
Joseph Franklin Logan
Fabrice Jean Verplanken
Original Assignee
International Business Machines Corporation
Ibm United Kingdom Limited
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 International Business Machines Corporation, Ibm United Kingdom Limited filed Critical International Business Machines Corporation
Priority to AT02715591T priority Critical patent/ATE291802T1/en
Priority to AU2002225237A priority patent/AU2002225237A1/en
Priority to EP02715591A priority patent/EP1380133B1/en
Priority to KR1020037013729A priority patent/KR100690418B1/en
Priority to JP2002584540A priority patent/JP3777161B2/en
Priority to DE60203380T priority patent/DE60203380T2/en
Publication of WO2002087156A2 publication Critical patent/WO2002087156A2/en
Publication of WO2002087156A3 publication Critical patent/WO2002087156A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • 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
    • H04L12/1881Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/20Traffic policing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/43Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]

Definitions

  • the present invention is drawn to a method for multicast transmission on a network processor, as claimed in claim 1.
  • the invention is also drawn to a network processor as claimed in claim 7, and a computer program as claimed in claim 6.
  • the new approach eliminates the need to copy the entire frame for each multicast instance (i.e., each multicast target) , thereby both reducing memory requirements and solving problems due to port performance discrepancies.
  • leased buffers are returned to the free queue as they are used (independent of when other instances complete transmission) and a counter is used to determine when all instances ' are transmitted so that a reference frame can likewise be returned to the free queue.
  • Figure 1 is a block diagram ' illustrating the data structures
  • FIG. 2 is a block diagram showing the chip set system environment of the preferred embodiment of the present invention.
  • Figure 3 is a block diagram showing in more detail the embedded processor complex and the dataflow chips used in the chip set of Figure 2 ;
  • Figure 4 is a diagram showing the general message format
  • Figure 5 is a block diagram illustrating the data structures according to the preferred embodiments of the present invention.
  • FIG. 6 is * a flow diagram showing the process implemented by the preferred embodiment of the invention.
  • a frame is stored in a series of buffers 101 ⁇ to 101 s .
  • Each buffer 101 has a corresponding Buffer Control Block (BCB) 102 ⁇ to 102 s , which is used to link the series of buffers into a frame.
  • Each frame has a corresponding Frame Control Block (FCB) 103 ⁇ to 103 ⁇ , which is used to link a series of frames into a queue .
  • Each queue has a Queue Control Block (QCB) 104, which maintains the address of the first and last FcB 103 in the queue, and a count of the number of frames in the queue.
  • QB Queue Control Block
  • Buffers 101 are used for storage of data. Each buffer 101 is 64-bytes in size and may store from 1 to 64 bytes of valid data. All valid data within a buffer 101 must be stored as a single contiguous range of bytes . Multiple buffers are chained together via a linked list to store frames larger than 64- bytes.-
  • a Buffer Control Block (BCB) 102 forms the linked list for chaining multiple buffers into a frame. It also records which bytes of the buffer 101 contain valid data. For every buffer 101 there is a corresponding BCB 102.
  • the address of a buffer 101 in Datastore Memory (205 and 206 shown in Figure 2) also serves as the address of the corresponding BCB 102 in the BCB Array.
  • a BCB 102 contains the following fields.-
  • the Next Buffer Address (NBA) field is used to store the pointer to the next buffer 101 in a frame.
  • the NBA field in the BCB 102 for the current buffer 101 contains the address of the frame's next buffer 101 (and corresponding BCB 102) .
  • the Starting Byte Position (SBP) field is used to store the offset of the first valid byte of data in the next buffer 101 of a frame.
  • Valid values are from 0 to 63.
  • EBP Ending Byte Position
  • the Transient Buffer (TBUP) bit is used only when transmitting multicast frames ' to specify whether the next buffer 101 in the frame should be returned to the free buffer queue after its data is read for transmission. This bit is valid only for multicast frames. It is set to a default state of zero upon frame reception.
  • the SBP, EBP, and TBUF fields apply to the "next" buffer 101 in the frame and not the buffer 101 corresponding to the current BCB 102. These fields are defined in this way to permit the SBP, EBP, and TBUF information for the next buffer 101 to be fetched concurrently with its address (NBA) .
  • Each of the fields in a BCB 102 is initially loaded by the Dataflow hardware 202 ( Figure 2) during frame reception. Picocode may subsequently modify the fields in the BCB 102 to "edit" the frame prior to transmission.
  • the NBA field may be modified to add or delete buffers in a frame.
  • the SBP and EBP fields may be modified to change the number of valid bytes in a buffer 101.
  • the TBUF bit may be set for buffers that are part of a multicast frame to request that the buffer 101 be returned to the free buffer queue immediately after its data is transmitted.
  • the NBA field of the BCB 102 is also used to form the linked list of buffers in the free buffer queue.
  • the NBA is the only field in the BCB 102 that contains valid information when the corresponding buffer 101 is in the free buffer queue .
  • a Frame Control Block (FCB) 103 forms the linked list of frames in a queue. It also records the total number of valid bytes in the frame, the buffer address and SBP/EBP of the first buffer 101 in the frame, and a two bit frame "Type" field.
  • FCB 103 -includes the following fields:
  • the Next Frame Address (NFA) field is used to store the pointer to the next frame in a queue of frames .
  • the NFA field in the FCB 103 for the current frame contains the address of the FCB 103 for the next frame in the queue. This field contains no valid data if the corresponding frame is the last frame in the queue. If the "QCNT" field in the QCB is zero, then no frames exist in the queue. If the "QCNT" field in the QCB is 1, then the "NFA" field in the FCB at the head of the queue is not valid as there is no "next frame” in the queue.
  • the Byte Count (BCNT) field is used to store a count of the total number of valid bytes in all buffers of the next frame in a queue of frames. Note that the BCNT applies to the "next" frame in the queue, and not ' the frame associated with the FCB 103 in which the BCNT field is stored.
  • the BCNT field is defined in this way to permit the address (NFA) and length (BCNT) of the next frame in the queue to be fetched concurrently.
  • the First Buffer Address (FBA) field is used to store the address of the first buffer 101 (and corresponding BCB 102) in a frame.
  • the SBP and EBP fields are used to store the starting and ending byte positions of valid data in the first buffer 101 of a frame.
  • the Type field is used by picocode to instruct the Dataflow hardware 202 on the format and type of the frame to be transmitted.
  • 00 "Unicast frame with FACB” The frame is to be transmitted to a single destination (unicast) , and each buffer 101 is to be returned to the free buffer queue as data is read for transmission.
  • One or more Frame Alteration Control Blocks (FACBs) are stored in the first buffer 101 of the frame.
  • the frame is to be transmitted without returning any of the buffers to the free buffer queue .
  • One or more Frame Alteration Control Blocks (FACBs) are stored in the first buffer 101 of the frame.
  • Multicast -frame with FACB and first buffer is TBUF
  • the frame is to be transmitted to multiple destinations (multicast) , and the buffers that are common to all instances of the frame are to be returned to the free buffer queue only after the frame has been completely transmitted to all destinations.
  • One or more Frame Alteration Control Blocks are to be transmitted to multiple destinations (multicast) , and the buffers that are common to all instances of the frame are to be returned to the free buffer queue only after the frame has been completely transmitted to all destinations.
  • FACBs are stored in the first buffer 101 of each frame instance. Also, the first buffer 101 of the frame, and any subsequent buffer 101 with the TBUF bit set in the BCB 102, are assumed to be associated with a single frame instance and are returned to the free buffer queue immediately after data is transmitted from the buffer 101.
  • Each of the fields in an FCB 103 is initially loaded by the Dataflow hardware 202 ( Figure 2) during frame " reception.
  • Picocode may subsequently overlay the BCNT,- FBA, SBP, EBP,_ and Type fields of the FCB 103 prior to frame transmission.
  • the BCNT -field may be modified if the length of the frame was changed as a result of editing.
  • the FBA, SBP, and EBP fields may be modified if there is a change in the address or valid data range of the first buffer 101 of the frame.
  • the Type field is written to set the type of frame transmission.
  • a free FCB queue is used to maintain a linked list of FCBs that are not currently allocated to a frame.
  • the NFA field of the FCB 103 is used to form the linked list of FCBs in the free FCB queue.
  • the NFA is the only field in the FCB 103 that contains valid information when the corresponding FCB 103 is in the free FCB queue.
  • a Queue Control Block ('QCB) 104 maintains a queue of frames by storing the address of the first and last FCBs in the queue, and a count of the total number of frames in the queue.
  • a QCB 104 contains the following fields:
  • FCBA FCB Address
  • Head BCNT Used to store a count of the total number of valid bytes in the frame at -the top of the queue .
  • Frames are added to the tail of a queue as follows :
  • the NFA and BCNT fields in the FCB 103 originally at the tail of the queue are written to chain to the new frame onto the tail of the queue . If no frames were previously in the queue (QCNT equal to 0) , the Head FCBA and Head BCNT fields of the QCB 104 are written to establish the new frame as the head of the queue.
  • Tail FCBA of the QCB 104 is written to point to the new FCB 103 added to the tail of the queue .
  • the QCNT of the QCB 104 is incremented by 1 to reflect one additional frame in the queue.
  • Frames are removed from the head of a queue as follows:
  • FCBA and BCNT values are then written to the Head FCBA and Head BCNT of the QCB 104 to establish the new frame at the head of the queue.
  • the QCNT of the QCB 104 is decremented by 1 to reflect one less frame in the queue .
  • This section describes the use of the data structures from frame reception through dispatch to the network processor.
  • Step 1 As the first frame data is received, a free buffer address is popped from the head of the free buffer queue and a free FCB 103 is popped from the head of the free FCB queue. Up to 64-bytes of frame data are written to the buffer 101. The FCB 103 is written with the FBA, SBP, and EBP values for the first- buffer 101. A working byte count register is set to the number of bytes' written to the first buffer 101. If the entire frame fits in the first buffer 101, then go to step 3; otherwise, continue with step 2.
  • Step 2 An additional buffer 101 is popped from the free buffer queue and up to 64-bytes of data are written to the buffer 101.
  • the BCB 102 for the previous buffer 101 is written with the NBA, SBP, and EBP values for the current ' buffer 101.
  • the number of bytes written to the buffer 101 is added to the working byte count register. If the end of the frame is received, then go to step 3; otherwise, repeat step 2.
  • Step 3 The frame is then enqueued onto the tail of an input-queue to await dispatch to the network processor.
  • the Head FCBA and Tail FCBA in the input-queue's QCB 104 are written with the address of the new frame's FCB 103.
  • the Head BCNT in the QCB 104 is written with the working byte count register to record the total length of the new frame.
  • the QCNT in the QCB 104 is incremented by 1.
  • the " NFA and BCNT fields of the FCB 103 for the prior frame on the tail of the input-queue are written.
  • the NFA field is written with the address of the new frame's FCB 103.
  • the BCNT field is written with the working byte count register to record the length of the new frame .
  • the Tail FCBA of the input-queue's QCB 104 is then written with the address of the new frame's FCB 103.
  • the QCNT in the QCB 104 is incremented by 1.
  • the frame When the frame reaches the head of the input-queue, it is then de-queued for dispatch to the network processor.
  • the Head FCBA and Head BCNT fields are read from the input-queue' s QCB 104.
  • the Head FCBA value is then used to read the contents of the FCB 103 at the head of the queue.
  • a picocode instruction store is integrated within the EPC chip. Incoming frames are received from the Dataflow chip 202 (204) via the Dataflow interface 302 and temporarily stored in a packet buffer 303.
  • a dispatch function distributes incoming frames to the Protocol Processors 301. Twelve input queue categories permit frames to be targeted to specific threads or distributed across all threads.
  • a completion unit function ensures frame order is maintained at the output of the Protocol Processors 301.
  • An embedded PowerPC ® microprocessor core 304 allows execution of higher level ' system management software.
  • An 18-bit interface to external DDR SDRAM provides for up to ' 64 Mbytes of instruction store.
  • a 32-bit PCI interface is provided for attachment to other control functions or for configuring peripheral circuitry such as MAC or framer components .
  • a hardware based classification function parses frames as they are dispatched to the Protocol Processors to identify well known Layer-2 and Layer-3 frame formats.
  • the output of classifier is used to precondition the state of a picocode thread before it begins processing of each frame.
  • a table search engine provides hardware assist for performing table searches .
  • Tables are maintained as Patricia trees with the termination of a search resulting in the address of a "leaf" entry which picocode uses to store information relevant to a flow.
  • Three table search algorithms are supported: Fixed Match (FM) , Longest Prefix Match (LPM) , and a unique Software Managed Tree (SMT) algorithm for complex rules based searches.
  • Control Store Memory 206 (207) provides large DRAM tables and fast SRAM tables to support wire speed classification of millions of lows.
  • the SRAM interface may be optionally used for attachment of a Content Addressable Memory (CAM) (217 in Figure 2) for increased lookup performance .
  • CAM Content Addressable Memory
  • Picocode may directly edit a frame by reading and writing Datastore Memory 205 (206) attached to the Dataflow chip 202 (204) .
  • picocode may also generate frame alteration commands to instruct the Dataflow chip to perform modifications as a frame is transmitted via the output port .
  • a Counter Manager function assists picocode in maintaining statistical counters.
  • On-chip SRAMs and an optional external SRAM may be used for counting events that occur at frame inter-arrival rates.
  • One of the external Control Store DDR SDRAMs (shared with the table search function) may be used to maintain large numbers of counters for events that occur at a slower rate.
  • a Policy Manager function assists picocode in policing incoming traffic flows. It maintains thousands of leaky bucket meters with selectable parameters and algorithms.
  • IK Policing Control Blocks (PolCBs) may be maintained in an on-chip SRAM.
  • An optional external SRAM (shared with the Counter Manager) may be added to increase the number of PolCBs .
  • the Dataflow chip 202 .(204) implements transmit and receive interfaces that may be independently configured to operate in "port" or "switch” interface mode.
  • the Dataflow chip exchanges frames for attachment of various network media such as Ethernet MACs or Packet- Over- SONET (POS) framers . ' It does this by means of a receive controller 305 and a transmit controller -306.
  • the Dataflow chip exchanges frames in the form " of 64-byte cell segments for attachment to cell based switch fabrics.
  • the physical bus implemented by the Dataflow chip's transmit and receive interfaces 306 and 305, respectively, is a 64-bit data bus.
  • the interface supports direct attachment of industry POS framers, and may be adapted to industry Ethernet MACs and switch fabric interfaces (such as CSIX) -via Field Programmable Gate Array' (FPGA) logic.
  • a large data memory 205 (206) attached to the Dataflow chip 202 (204) via a database arbiter 307 provides a "network buffer” for absorbing traffic bursts when the incoming frame rate exceeds the outgoing frame rate. It also serves as a repository for -reassembling IP Fragments, and as a repository for frames awaiting possible retransmission in applications like TCP termination. Multiple DRAM interfaces are supported to provide sustained transmit and receive bandwidth for the port interface and switch interfaces. Additional bandwidth is reserved for direct read/write of Datastore Memory by EPC picocode.
  • the Datastore Memory 205 (206) is managed via linked lists of buffers. Two external SRAMs are used for maintaining linked lists of " buffers and frames.
  • the Dataflow chip 202 (204) implements advanced congestion control algorithms such as "random early discard” (RED) to prevent overflow of the Datastore Memory 205 (206) .
  • the congestion control algorithms operate from input provided by the EPC picocode, EPC policing function, both communicated via the EPC interface 308 and various queue thresholds maintained by the Dataflow and Scheduler chips.
  • a "discard probability memory" within the Dataflow is maintained by EPC picocode and referenced by the congestion control function to allow implementation of various standard or proprietary discard algorithms.
  • the Dataflow chip 202 (204) implements a rich set of hardware assist functions for performing frame alterations in frame alteration logic 309 based on commands stored in the Frame Alteration Control Block (FACB) (shown in Figure 5) .
  • Well known alterations include modifications of the following frame fields: Ethernet DA/SA, VLAN, DIX, SAP, SNAP, MPLS, IP TTL, IP TOS byte, and IP header checksum.
  • the FACB serves two purposes It stores the Reference FCB address for use in the multicast algorithm, and it stores frame alteration commands that instruct the frame alteration logic 309 (part of the Dataflow's transmit controller 306) to perform modifications to the frame data as it is transmitted via an output port .
  • Examples of well known frame modifications performed by the frame alteration logic 309 are as follows: Ethernet destination or source address overlay, Ethernet protocol type overlay, Multiprotocol Label Switching (MPLS) label insert. and deletes, Internet Protocol (IP) Time-to-Live (TTL) decrements., etc. Note that the frame alteration logic is not required to implement this invention. The same multicast technique could be used even if the Dataflow chip 202 (204) does not contain the frame alteration logic function.
  • the Dataflow chip 202 (204) implements a technique known as "virtual output queuing" where separate output queues are maintained for frames destined to different output ports * or target destinations. This scheme prevents "head of line blocking” from occurring if a single output port becomes blocked. High and low priority queues are maintained for each output port to permit reserved and non-reserved bandwidth traffic to be queued independently.
  • the optional Scheduler chip 211 (212) provides for "quality of service” by maintaining flow queues that may be scheduled using various algorithms such as “guaranteed bandwidth”, “best effort”, “peak bandwidth”, etc. Two external SRAMs are used to maintain thousands of flow queues with hundreds of thousands of frames actively queued.
  • the Scheduler chip 211 (212) supplements the Dataflow chip's congestion control algorithms by permitting frames to be discarded based on per low queue thresholds .
  • the general message format is depicted in Figure 4.
  • the message format contains the following components: Message-ID:
  • the Message_ID field is an 8-bit encoded value in the first word of the message that uniquely identifies the message type.
  • the Message_Param ' eters field is a 24-bit value in the first word of a message that may be specified on a per message-type basis for various purposes as follows:
  • the remainder of the message may consist of from “0" to "N-l” additional 32-bit "Data” words.
  • FIG. 5 illustrates an example of a multicast transmission.
  • the multicast frame is being transmitted to three destinations and is therefore said to have three "instances”.
  • the FCB that was assigned when the " frame was originally received is retained throughout the life of the frame and is called the "Reference FCB" 501.
  • the network processor obtains additional FCBs (named FCB 1, FCB 2, and FCB 3 in Figure 5) 502!, 502 2 and 502 3 and buffers 503 ⁇ , 503 2 and 503 3 , and links them into the original Reference Frame 501 to create each instance of the multicast frame transmission. Each instance is then queued for transmission.
  • the FCBs 502 and buffers 503 unique to each instance are discarded as each instance is transmitted. But the Reference FCB 501 and associated buffers 505 ⁇ to 505 5 are discarded only after all instances have been transmitted. Because each instance of the frame may be transmitted via a different port, they may complete transmission in a different order than they were enqueued.
  • a Multicast Counter (MCC) is used to determine when all the instances have been transmitted so that the reference frame can be discarded.
  • the MCC is stored in the unused NFA field of the Reference FCB 501, as indicated in the upper left of Figure 5. It is initialized with the number of instances in the multicast, and then decremented as each multicast instance is transmitted. When the MCC reaches zero, the Reference FCB 501 and its associated buffers 505 ⁇ to 505 5 are discarded by returning them to the free FCB and free buffer queues respectively.
  • FCB 501 and .the other FCBs 50.2 ⁇ , ,502 and 502 3 all come from the same free pool of FCBs.
  • the NFA/MCC field is used as an MCC.
  • the NFA/MCC field is used as an NFA.
  • the relationship between QCBs and FCBs is illustrated in Figure 1.
  • FCBs 502 ⁇ , 502 2 and 502 3 are all placed into a queue for transmission.
  • the Dataflow includes a QCB for every output queue .
  • Each output queue is typically associated with " a port (i.e., network communications link via the POS framer/Ethernet MAC, or another Network Processor via the Switch Fabric) .
  • a port i.e., network communications link via the POS framer/Ethernet MAC, or another Network Processor via the Switch Fabric.
  • Each of the three multicast instances illustrated in Figure 5 are queued into an output queue. It is possible all three instances may be queued for transmission via the same port, or they may be queued for transmission via different ports. But each of the three FCBs will be placed in a queue of frames for transmission via exactly one port. The NFA field in these FCBs is used to form the linked list of frames in the queue.
  • the Reference FCB 501 is not included in any queue.- It stores parameters that are used to return the buffers of the original (reference) frame to the free queue of buffers after all instances of the frame have been . transmitted.- Since the Reference FCB 501 is not included in a queue of frames, the NFA field is not required to form a linked list. Instead these bits of the NFA are used for storage of the MCC.
  • the address of the Reference FCB is stored in the FACB (illustrated in Figure 5) in front of the frame data where is used to locate the Reference FCB as each frame instances is transmitted.
  • the EPC chip 202 performs the following actions to enqueue each instanc:ee of the multicast frame:
  • An FCB 502 is obtained from the free FCB queue and is assigned to the instance .
  • One or more buffers 503 are obtained from the free buffer queue to contain the FACB and any unique header data for the instance. Use of the FACB is mandatory for multicast transmissions. Any unique data for the instance is written to the buffers 503 obtained above. It is common for different instances of a multicast to have different header data. For example, one instance of the multicast may have an Ethernet header because it is being transmitted via an Ethernet port, while another instance requires a POS header because it is being transmitted via a POS port.
  • the BCBs 504 associated with the unique instance buffers are written to create a linked list that attaches them to the buffers of the original "reference frame" .
  • the unique instance buffers are not required to be linked -to the first buffer of the reference frame. If some of the leading bytes in the reference frame are to be omitted from the instance, then the unique buffers for the instance may be linked to a buffer other than the first buffer in the reference frame.
  • the SBP and EBP values are written in each BCB 504 to reflect the valid bytes in the next buffer. This permits the BCB 504 for the last unique buffer for the instance to specify a starting byte offset " in the first linked buffer from the reference frame that is different from other the byte offset specified for other instances .
  • the TBUF bit is set to indicate if the next buffer should be returned to the free buffer queue immediately after its data is transmitted.
  • the last unique buffer for the instance shall have the TBUF bit in its BCB 504 set to zero.
  • the TBUF bit in the BCB 504 of all other unique buffers for the instance shall have their TBUF bit set to one.
  • the network processor then issues an enqueue operation to release the instance to the Dataflow 202 for transmission.
  • the following information is provided to the Dataflow 202 as part of the enqueue ' operation:
  • Target Queue Number - Specifies which output queue the multicast instance is to be enqueued into.
  • FCBA - Specifies the Frame Control Block Address (FCBA) assigned to the multicast instance by the network processor.
  • BCNT - Specifies the total length of the frame. It may be different for each multicast instance.
  • FBA - Specifies the address of the first buffer 101 in the multicast instance.
  • the first buffer 101 is always unique to the multicast instance.
  • SBP / EBP - Specifies the starting and ending byte position of valid data in the first buffer 101.
  • FACB - Frame Alteration Control Block (FACB) information that specifies the alterations for the.
  • the FACB may include different frame alteration requests for each multicast instance. However, each instance shall include the address of the Reference FCB 501 for use in discarded the reference frame after all instances have been transmitted.
  • the network processor specifies whether the current enqueue is the first, middle, or last instance of the multicast transmission.
  • Multicast middle 10 * 10 - Multicast Middle - If the multicast frame consists of more than two instances, then any intermediate instances are identified as "multicast middle" .
  • the Dataflow chip 202 writes the FACB information to the frame's first buffer 502 ⁇ using the FBA and SBP values provided in the enqueue as the buffer address and offset where the information is to be written.
  • the Dataflow chip 202 extracts the address of the Reference FCB 501 from within the FACB information. This address is used to access the Reference FCB 501 for storage of an MCC value.
  • the MCC value is stored in the NFA field of the Reference FCB 501 (the NFA field of the Reference FCB 501 is unused since the Reference Frame is not directly in any queue) .
  • the value of the MCC 506 is updated as follows on enqueue:
  • Multicast Action is 01 - Multicast First, then the MCC 506 is set to 2.
  • Multicast Action is 10 - Multicast Middle, then the MCC 506 is incremented by 1.
  • Multicast Act-ion is 11 - Multicast Last, then the MCC 506 is not modified.
  • the Dataflow chip 202 writes the FBA, SBP, EBP and Type values to the FCB 502 specified by the FCBA value provided in the enqueue.
  • the Dataflow chip 202 enqueues the frame into the requested output queue specified by the Target Queue Number value provided in the enqueue. It does this as follows:
  • the Head FCBA and Tail FCBA in the output queue's QCB 104 ( Figure 1) are written with the FCBA value provided in the enqueue .
  • the Head BCNT in the QCB 104 is written with the BCNT value provided in the enqueue.
  • the QCNT in the QCB 104 is incremented by 1.
  • the NFA and BCNT fields of the FCB 502 for the frame previously on the tail of the output queue are written.
  • the NFA and BCNT fields are written with the FCBA and BCNT values provided in the enqueue.
  • the Tail FCBA field of the output queue's QCB 104 ( Figure 1) is then written with the FCBA value provided in the enqueue.
  • the QCNT in the QCB 104 is incremented by 1.
  • the Head FCBA and Head BCNT fields are read from the output queue's QCB 104.
  • the Head BCNT value is loaded into a working byte count register for use during transmission of the frame.
  • the Head FCBA value is used to read the contents of the FCB 502 at the head of the queue.
  • the NFA and BCNT values read from the FCB 502 are used to update Head FCBA and Head BCNT fields of the QCB 104 ( Figure 1) .
  • the FBA, SBP, EBP, and Type fields read from the FCB 502 are loaded into working registers for use during transmission of the data from the first buffer 504..
  • the MCC value is greater than one, then it is decremented by one and written back to the NFA field of the Reference FCB 501. Transmission of this multicast instance is then complete. However the reference frame may not be discarded because the other multicast instances have not completed transmission.
  • the Reference FCB 501 is enqueued into a "discard queue" to return the FCB and buffers associated with the reference frame to the free queue . Transmission of all instances of the multicast frame are then complete .
  • Static Frame transmission also applies to Figure 5.
  • Static Frame transmission is identical to Multicast transmission except that no FCBs or buffers are returned to the free FCB or buffer queues, and the MCC value in the Reference FCB 501 is not decremented.
  • Static Frame transmission is used in cases where it is necessary to retain a copy of a frame for re-transmission at a later time.
  • Each of the frame instances illustrated in Figure 5 may be transmitted one or more times as static frames (by setting the Type field of the FCB to binary "01" to indicate static frame) .
  • each frame instance may be transmitted as a static frame one to "N" times followed by a single transmission as a normal multicast frame.
  • the Reference FCB 501 and buffers from the reference frame are returned to the free FCB and buffer queues.
  • Picocode software executing in the EPC chip 209 determines whether frames instances are transmitted as static or multicast frames .
  • the Dataflow chip 202 transmits a static frame exactly like a "Unicast with FACB" frame Type with the one exception that the frame's FCB 103 and buffers 101 are not returned to the free queues.
  • the EPC chip 202 may then issue another enqueue operation specifying the same FCB 103 to re-transmit the frame.
  • the frame can be re-transmitted any number of times by specifying the Static Frame type value.
  • the Static Frame type may be applied to permit re-transmission of either a unicast or multicast frame type. In the case of multicast, the TBUF parameter is ignored for Static Frames so that no buffers are discarded even if the TBUF bit is set .
  • Figure 6 depicts a flowchart for use in describing the operation of the preferred embodiment of the invention.
  • the process begins in function block 601 by the EPC 209 issuing credits for the Dataflow chip 202 to dispatch frames to the EPC 209.. determination is made in decision block 602 as to whether a frame has- been- dispatched. If not, the process waits in function block 603. When a frame has been dispatched, the EPC 209 requests a lease of "N" free FCB addresses from the Dataflow chip 202 in function block 604. A determination is made in decision block 605 as to whether the FCB addresses have been transferred. If not, the process waits in function block 606.
  • the EPC 209 When the FCB addresses have been transferred, the EPC 209 requests lease of "N" buffers from the Dataflow chip 202 in function block " 607. A " determination is then made in decision block 608 as to whether the buffers have been transferred. If not, the process waits in function block 609. When the buffers have been transferred, the EPC 209 chains a new first buffer or buffers to an original first buffer 101 in function block 610. Next, the EPC 209 enqueues each instance with FACB (frame alteration control block) information in. function block 611. Finally, the EPC 209 signals the Dataflow chip 202 to update the counter for each transmitted packet in function block 612. A similar process applies to the EPC chip 210 and Dataflow chip 202.
  • FACB frame alteration control block

Abstract

Multicast transmission on network processors is disclosed in order both to minimize multicast transmission memory requirements and to account for port performance discrepancies. Frame data for multicast transmission on a network processor is read into buffers to which are associated various control structures and a reference frame. The reference frame and the associated control structures permit multicast targets to be serviced without creating multiple copies of the frame. Furthermore this same reference frame and control structures allow buffers allocated for each multicast target to be returned to the free buffer queue without waiting until all multicast transmissions are complete.

Description

Figure imgf000003_0001
The present invention is drawn to a method for multicast transmission on a network processor, as claimed in claim 1.
The invention is also drawn to a network processor as claimed in claim 7, and a computer program as claimed in claim 6.
According to the invention, the new approach eliminates the need to copy the entire frame for each multicast instance (i.e., each multicast target) , thereby both reducing memory requirements and solving problems due to port performance discrepancies. In addition, preferably, leased buffers are returned to the free queue as they are used (independent of when other instances complete transmission) and a counter is used to determine when all instances' are transmitted so that a reference frame can likewise be returned to the free queue.
The foregoing and other objects, aspects and advantages will be better understood from the following detailed description of a preferred embodiment of the invention with reference to the drawings, in which:
Figure 1 is a block diagram 'illustrating the data structures;
Figure 2 is a block diagram showing the chip set system environment of the preferred embodiment of the present invention;
Figure 3 is a block diagram showing in more detail the embedded processor complex and the dataflow chips used in the chip set of Figure 2 ;
Figure 4 is a diagram showing the general message format;
Figure 5 is a block diagram illustrating the data structures according to the preferred embodiments of the present invention; and
Figure 6 is* a flow diagram showing the process implemented by the preferred embodiment of the invention.
Referring now to the drawings, and more particularly to Figure 1, there is shown the data structures according to a preferred embodiment of the invention. A frame is stored in a series of buffers 101ι to 101s. Each buffer 101 has a corresponding Buffer Control Block (BCB) 102ι to 102s, which is used to link the series of buffers into a frame. Each frame has a corresponding Frame Control Block (FCB) 103ι to 103π, which is used to link a series of frames into a queue . Each queue has a Queue Control Block (QCB) 104, which maintains the address of the first and last FcB 103 in the queue, and a count of the number of frames in the queue. Data Structure Definitions
Buffers 101 are used for storage of data. Each buffer 101 is 64-bytes in size and may store from 1 to 64 bytes of valid data. All valid data within a buffer 101 must be stored as a single contiguous range of bytes . Multiple buffers are chained together via a linked list to store frames larger than 64- bytes.-
Initially, all buffers are placed in the free buffer queue. When a frame arrives, buffers are popped (removed) from the head of the free buffer queue and used to store -the frame data. When the final transmission 'of a frame is performed, the buffers used to store the frame data are pushed onto the tail of the free buffer queue .
A Buffer Control Block (BCB) 102 forms the linked list for chaining multiple buffers into a frame. It also records which bytes of the buffer 101 contain valid data. For every buffer 101 there is a corresponding BCB 102. The address of a buffer 101 in Datastore Memory (205 and 206 shown in Figure 2) also serves as the address of the corresponding BCB 102 in the BCB Array. A BCB 102 contains the following fields.-
The Next Buffer Address (NBA) field is used to store the pointer to the next buffer 101 in a frame. The NBA field in the BCB 102 for the current buffer 101 contains the address of the frame's next buffer 101 (and corresponding BCB 102) .
The Starting Byte Position (SBP) field is used to store the offset of the first valid byte of data in the next buffer 101 of a frame. Valid, values are from 0 to 63.
The Ending Byte Position (EBP) field is used to store the offset of the last valid byte of data in the next buffer 101 of a frame. Valid value's are from 0 to. 63.
The Transient Buffer (TBUP) bit is used only when transmitting multicast frames' to specify whether the next buffer 101 in the frame should be returned to the free buffer queue after its data is read for transmission. This bit is valid only for multicast frames. It is set to a default state of zero upon frame reception.
Note that the SBP, EBP, and TBUF fields apply to the "next" buffer 101 in the frame and not the buffer 101 corresponding to the current BCB 102. These fields are defined in this way to permit the SBP, EBP, and TBUF information for the next buffer 101 to be fetched concurrently with its address (NBA) . Each of the fields in a BCB 102 is initially loaded by the Dataflow hardware 202 (Figure 2) during frame reception. Picocode may subsequently modify the fields in the BCB 102 to "edit" the frame prior to transmission. The NBA field may be modified to add or delete buffers in a frame. The SBP and EBP fields may be modified to change the number of valid bytes in a buffer 101. The TBUF bit may be set for buffers that are part of a multicast frame to request that the buffer 101 be returned to the free buffer queue immediately after its data is transmitted.
The NBA field of the BCB 102 is also used to form the linked list of buffers in the free buffer queue. The NBA is the only field in the BCB 102 that contains valid information when the corresponding buffer 101 is in the free buffer queue .
A Frame Control Block (FCB) 103 forms the linked list of frames in a queue. It also records the total number of valid bytes in the frame, the buffer address and SBP/EBP of the first buffer 101 in the frame, and a two bit frame "Type" field. An FCB 103 -includes the following fields:
The Next Frame Address (NFA) field is used to store the pointer to the next frame in a queue of frames . The NFA field in the FCB 103 for the current frame contains the address of the FCB 103 for the next frame in the queue. This field contains no valid data if the corresponding frame is the last frame in the queue. If the "QCNT" field in the QCB is zero, then no frames exist in the queue. If the "QCNT" field in the QCB is 1, then the "NFA" field in the FCB at the head of the queue is not valid as there is no "next frame" in the queue.
The Byte Count (BCNT) field is used to store a count of the total number of valid bytes in all buffers of the next frame in a queue of frames. Note that the BCNT applies to the "next" frame in the queue, and not' the frame associated with the FCB 103 in which the BCNT field is stored. The BCNT field is defined in this way to permit the address (NFA) and length (BCNT) of the next frame in the queue to be fetched concurrently.
The First Buffer Address (FBA) field is used to store the address of the first buffer 101 (and corresponding BCB 102) in a frame.
The SBP and EBP fields are used to store the starting and ending byte positions of valid data in the first buffer 101 of a frame.
The Type field is used by picocode to instruct the Dataflow hardware 202 on the format and type of the frame to be transmitted. 00 "Unicast frame with FACB" The frame is to be transmitted to a single destination (unicast) , and each buffer 101 is to be returned to the free buffer queue as data is read for transmission. One or more Frame Alteration Control Blocks (FACBs) are stored in the first buffer 101 of the frame.
01 "Static Frame .with FACB" The frame is to be transmitted without returning any of the buffers to the free buffer queue . One or more Frame Alteration Control Blocks (FACBs) are stored in the first buffer 101 of the frame.
10 "Unicast frame -without FACB" The frame is to be transmitted to a single destination (unicast) , and each buffer 101 is to be returned to the free buffer queue as data is read for transmission. No Frame Alteration Control Blocks (FACBs) are stored in the first buffer 101 of the frame.
11 "Multicast -frame with FACB and first buffer is TBUF" The frame is to be transmitted to multiple destinations (multicast) , and the buffers that are common to all instances of the frame are to be returned to the free buffer queue only after the frame has been completely transmitted to all destinations. One or more Frame Alteration Control Blocks
(FACBs) are stored in the first buffer 101 of each frame instance. Also, the first buffer 101 of the frame, and any subsequent buffer 101 with the TBUF bit set in the BCB 102, are assumed to be associated with a single frame instance and are returned to the free buffer queue immediately after data is transmitted from the buffer 101.
Each of the fields in an FCB 103 is initially loaded by the Dataflow hardware 202 (Figure 2) during frame" reception. Picocode may subsequently overlay the BCNT,- FBA, SBP, EBP,_ and Type fields of the FCB 103 prior to frame transmission. The BCNT -field may be modified if the length of the frame was changed as a result of editing. The FBA, SBP, and EBP fields may be modified if there is a change in the address or valid data range of the first buffer 101 of the frame. The Type field is written to set the type of frame transmission.
A free FCB queue is used to maintain a linked list of FCBs that are not currently allocated to a frame. The NFA field of the FCB 103 is used to form the linked list of FCBs in the free FCB queue. The NFA is the only field in the FCB 103 that contains valid information when the corresponding FCB 103 is in the free FCB queue. A Queue Control Block ('QCB) 104 maintains a queue of frames by storing the address of the first and last FCBs in the queue, and a count of the total number of frames in the queue. A QCB 104 contains the following fields:
Head FCBA - Used to store the FCB Address (FCBA) of the frame at the head of the queue .
Head BCNT - Used to store a count of the total number of valid bytes in the frame at -the top of the queue .
Tail FCBA - Used to store the FCB Address" (FCBA) of the frame at the tail of the queue .
QCNT - Used to store a count of the number of frames currently in the queue .
Frames are added to the tail of a queue as follows :
1. If one or more frames are already in the queue (QCNT greater than or equal to 1) , the NFA and BCNT fields in the FCB 103 originally at the tail of the queue are written to chain to the new frame onto the tail of the queue . If no frames were previously in the queue (QCNT equal to 0) , the Head FCBA and Head BCNT fields of the QCB 104 are written to establish the new frame as the head of the queue.
2. The Tail FCBA of the QCB 104 is written to point to the new FCB 103 added to the tail of the queue .
3. The QCNT of the QCB 104 is incremented by 1 to reflect one additional frame in the queue.
Frames are removed from the head of a queue as follows:
1. If more than one frame is already in the queue (QCNT greater than 1) , the NFA and BCNT fields in the FCB 103 at the head of the queue are read to obtain the FCBA and BCNT for the new frame that will be at the head of the queue. These FCBA and BCNT values are then written to the Head FCBA and Head BCNT of the QCB 104 to establish the new frame at the head of the queue.
2. The QCNT of the QCB 104 is decremented by 1 to reflect one less frame in the queue . Frame Reception
This section describes the use of the data structures from frame reception through dispatch to the network processor.
Step 1: As the first frame data is received, a free buffer address is popped from the head of the free buffer queue and a free FCB 103 is popped from the head of the free FCB queue. Up to 64-bytes of frame data are written to the buffer 101. The FCB 103 is written with the FBA, SBP, and EBP values for the first- buffer 101. A working byte count register is set to the number of bytes' written to the first buffer 101. If the entire frame fits in the first buffer 101, then go to step 3; otherwise, continue with step 2.
Step 2: An additional buffer 101 is popped from the free buffer queue and up to 64-bytes of data are written to the buffer 101. The BCB 102 for the previous buffer 101 is written with the NBA, SBP, and EBP values for the current' buffer 101. ' The number of bytes written to the buffer 101 is added to the working byte count register. If the end of the frame is received, then go to step 3; otherwise, repeat step 2.
Step 3: The frame is then enqueued onto the tail of an input-queue to await dispatch to the network processor.
1. If there were previously no frames in the input-queue, then the Head FCBA and Tail FCBA in the input-queue's QCB 104 are written with the address of the new frame's FCB 103. The Head BCNT in the QCB 104 is written with the working byte count register to record the total length of the new frame. The QCNT in the QCB 104 is incremented by 1.
2. If there were already one or more frames in the input-queue, then the" NFA and BCNT fields of the FCB 103 for the prior frame on the tail of the input-queue are written. The NFA field is written with the address of the new frame's FCB 103. The BCNT field is written with the working byte count register to record the length of the new frame . The Tail FCBA of the input-queue's QCB 104 is then written with the address of the new frame's FCB 103. The QCNT in the QCB 104 is incremented by 1.
When the frame reaches the head of the input-queue, it is then de-queued for dispatch to the network processor. The Head FCBA and Head BCNT fields are read from the input-queue' s QCB 104. The Head FCBA value is then used to read the contents of the FCB 103 at the head of the queue. The NFA and
Figure imgf000010_0001
supports two threads. Zero overhead context switching is supported between threads. A picocode instruction store is integrated within the EPC chip. Incoming frames are received from the Dataflow chip 202 (204) via the Dataflow interface 302 and temporarily stored in a packet buffer 303. A dispatch function distributes incoming frames to the Protocol Processors 301. Twelve input queue categories permit frames to be targeted to specific threads or distributed across all threads. A completion unit function ensures frame order is maintained at the output of the Protocol Processors 301.
An embedded PowerPC® microprocessor core 304 allows execution of higher level 'system management software. An 18-bit interface to external DDR SDRAM provides for up to' 64 Mbytes of instruction store. A 32-bit PCI interface is provided for attachment to other control functions or for configuring peripheral circuitry such as MAC or framer components .
A hardware based classification function parses frames as they are dispatched to the Protocol Processors to identify well known Layer-2 and Layer-3 frame formats. The output of classifier is used to precondition the state of a picocode thread before it begins processing of each frame.
A table search engine provides hardware assist for performing table searches . Tables are maintained as Patricia trees with the termination of a search resulting in the address of a "leaf" entry which picocode uses to store information relevant to a flow. Three table search algorithms are supported: Fixed Match (FM) , Longest Prefix Match (LPM) , and a unique Software Managed Tree (SMT) algorithm for complex rules based searches. Control Store Memory 206 (207) provides large DRAM tables and fast SRAM tables to support wire speed classification of millions of lows. The SRAM interface may be optionally used for attachment of a Content Addressable Memory (CAM) (217 in Figure 2) for increased lookup performance .
Picocode may directly edit a frame by reading and writing Datastore Memory 205 (206) attached to the Dataflow chip 202 (204) . For higher performance, picocode may also generate frame alteration commands to instruct the Dataflow chip to perform modifications as a frame is transmitted via the output port .
A Counter Manager function assists picocode in maintaining statistical counters. On-chip SRAMs and an optional external SRAM (shared with the Policy Manager) may be used for counting events that occur at frame inter-arrival rates. One of the external Control Store DDR SDRAMs (shared with the table search function) may be used to maintain large numbers of counters for events that occur at a slower rate. A Policy Manager function assists picocode in policing incoming traffic flows. It maintains thousands of leaky bucket meters with selectable parameters and algorithms. IK Policing Control Blocks (PolCBs) may be maintained in an on-chip SRAM. An optional external SRAM (shared with the Counter Manager) may be added to increase the number of PolCBs .
The Dataflow chip 202 .(204) implements transmit and receive interfaces that may be independently configured to operate in "port" or "switch" interface mode. In port mode, the Dataflow chip exchanges frames for attachment of various network media such as Ethernet MACs or Packet- Over- SONET (POS) framers . ' It does this by means of a receive controller 305 and a transmit controller -306. In switch mode, the Dataflow chip exchanges frames in the form" of 64-byte cell segments for attachment to cell based switch fabrics. The physical bus implemented by the Dataflow chip's transmit and receive interfaces 306 and 305, respectively, is a 64-bit data bus. The interface supports direct attachment of industry POS framers, and may be adapted to industry Ethernet MACs and switch fabric interfaces (such as CSIX) -via Field Programmable Gate Array' (FPGA) logic.
A large data memory 205 (206) attached to the Dataflow chip 202 (204) via a database arbiter 307 provides a "network buffer" for absorbing traffic bursts when the incoming frame rate exceeds the outgoing frame rate. It also serves as a repository for -reassembling IP Fragments, and as a repository for frames awaiting possible retransmission in applications like TCP termination. Multiple DRAM interfaces are supported to provide sustained transmit and receive bandwidth for the port interface and switch interfaces. Additional bandwidth is reserved for direct read/write of Datastore Memory by EPC picocode. The Datastore Memory 205 (206) is managed via linked lists of buffers. Two external SRAMs are used for maintaining linked lists of" buffers and frames.
The Dataflow chip 202 (204) implements advanced congestion control algorithms such as "random early discard" (RED) to prevent overflow of the Datastore Memory 205 (206) . The congestion control algorithms operate from input provided by the EPC picocode, EPC policing function, both communicated via the EPC interface 308 and various queue thresholds maintained by the Dataflow and Scheduler chips. A "discard probability memory" within the Dataflow is maintained by EPC picocode and referenced by the congestion control function to allow implementation of various standard or proprietary discard algorithms.
The Dataflow chip 202 (204) implements a rich set of hardware assist functions for performing frame alterations in frame alteration logic 309 based on commands stored in the Frame Alteration Control Block (FACB) (shown in Figure 5) . Well known alterations include modifications of the following frame fields: Ethernet DA/SA, VLAN, DIX, SAP, SNAP, MPLS, IP TTL, IP TOS byte, and IP header checksum. The FACB serves two purposes It stores the Reference FCB address for use in the multicast algorithm, and it stores frame alteration commands that instruct the frame alteration logic 309 (part of the Dataflow's transmit controller 306) to perform modifications to the frame data as it is transmitted via an output port . Examples of well known frame modifications performed by the frame alteration logic 309 are as follows: Ethernet destination or source address overlay, Ethernet protocol type overlay, Multiprotocol Label Switching (MPLS) label insert. and deletes, Internet Protocol (IP) Time-to-Live (TTL) decrements., etc. Note that the frame alteration logic is not required to implement this invention. The same multicast technique could be used even if the Dataflow chip 202 (204) does not contain the frame alteration logic function.
The Dataflow chip 202 (204) implements a technique known as "virtual output queuing" where separate output queues are maintained for frames destined to different output ports* or target destinations. This scheme prevents "head of line blocking" from occurring if a single output port becomes blocked. High and low priority queues are maintained for each output port to permit reserved and non-reserved bandwidth traffic to be queued independently.
The optional Scheduler chip 211 (212) provides for "quality of service" by maintaining flow queues that may be scheduled using various algorithms such as "guaranteed bandwidth", "best effort", "peak bandwidth", etc. Two external SRAMs are used to maintain thousands of flow queues with hundreds of thousands of frames actively queued. The Scheduler chip 211 (212) supplements the Dataflow chip's congestion control algorithms by permitting frames to be discarded based on per low queue thresholds .
Note that all information flowing between the Dataflow 202 (204) , EPC 209 (210) and Scheduler 211 (212) is exchanged in a format called "messages". Information flowing between the Switch Fabric 201, Dataflow 202, and POS Framer/Ethernet MAC 203 is in the form of "frames". Messages are used only for the exchange of "control" information between the Dataflow, EPC and Scheduler chips. Examples of such messages include: dispatch, enqueue, interrupt/exception, data read, data write, register read and register write. A message may consist of a request or response.
The general message format is depicted in Figure 4. With reference to Figure 4, the message format contains the following components: Message-ID: The Message_ID field is an 8-bit encoded value in the first word of the message that uniquely identifies the message type.
Message-Parameters: The Message_Param'eters field is a 24-bit value in the first word of a message that may be specified on a per message-type basis for various purposes as follows:
May be used as an extension to the Message_ID field to define other message types.
May be used 'on a per message-type basis to further qualify the purpose of the message.
May be used to carry "sequence numbers" or other "reference id" information that correlates the data returned in a response .
May be used to specify the message length in the case of variable length messages .
May be used to carry any other data parameter specific to the message.
Data: The remainder of the message may consist of from "0" to "N-l" additional 32-bit "Data" words.
Mul ticast Transmission
This section describes the process of enqueuing and transmitting a multicast frame. Figure 5 illustrates an example of a multicast transmission. In this case, the multicast frame is being transmitted to three destinations and is therefore said to have three "instances". The FCB that was assigned when the" frame was originally received is retained throughout the life of the frame and is called the "Reference FCB" 501. The network processor obtains additional FCBs (named FCB 1, FCB 2, and FCB 3 in Figure 5) 502!, 5022 and 5023 and buffers 503ι, 5032 and 5033, and links them into the original Reference Frame 501 to create each instance of the multicast frame transmission. Each instance is then queued for transmission.
The FCBs 502 and buffers 503 unique to each instance are discarded as each instance is transmitted. But the Reference FCB 501 and associated buffers 505ι to 5055 are discarded only after all instances have been transmitted. Because each instance of the frame may be transmitted via a different port, they may complete transmission in a different order than they were enqueued. A Multicast Counter (MCC) is used to determine when all the instances have been transmitted so that the reference frame can be discarded. The MCC is stored in the unused NFA field of the Reference FCB 501, as indicated in the upper left of Figure 5. It is initialized with the number of instances in the multicast, and then decremented as each multicast instance is transmitted. When the MCC reaches zero, the Reference FCB 501 and its associated buffers 505ι to 5055 are discarded by returning them to the free FCB and free buffer queues respectively.
Reference FCB 501 and .the other FCBs 50.2ι, ,502 and 5023 all come from the same free pool of FCBs. When the FCB is being used as the Reference FCB, the NFA/MCC field is used as an MCC. When the FCB is being used as a regular (non Reference FCB) , the NFA/MCC field is used as an NFA. The relationship between QCBs and FCBs is illustrated in Figure 1. FCBs 502ι, 5022 and 5023 are all placed into a queue for transmission. The Dataflow includes a QCB for every output queue . Each output queue is typically associated with "a port (i.e., network communications link via the POS framer/Ethernet MAC, or another Network Processor via the Switch Fabric) . Each of the three multicast instances illustrated in Figure 5 are queued into an output queue. It is possible all three instances may be queued for transmission via the same port, or they may be queued for transmission via different ports. But each of the three FCBs will be placed in a queue of frames for transmission via exactly one port. The NFA field in these FCBs is used to form the linked list of frames in the queue. The Reference FCB 501, however, is not included in any queue.- It stores parameters that are used to return the buffers of the original (reference) frame to the free queue of buffers after all instances of the frame have been .transmitted.- Since the Reference FCB 501 is not included in a queue of frames, the NFA field is not required to form a linked list. Instead these bits of the NFA are used for storage of the MCC. The address of the Reference FCB is stored in the FACB (illustrated in Figure 5) in front of the frame data where is used to locate the Reference FCB as each frame instances is transmitted.
The EPC chip 202 performs the following actions to enqueue each instanc:ee of the multicast frame:
1. An FCB 502 is obtained from the free FCB queue and is assigned to the instance .
2. One or more buffers 503 are obtained from the free buffer queue to contain the FACB and any unique header data for the instance. Use of the FACB is mandatory for multicast transmissions. Any unique data for the instance is written to the buffers 503 obtained above. It is common for different instances of a multicast to have different header data. For example, one instance of the multicast may have an Ethernet header because it is being transmitted via an Ethernet port, while another instance requires a POS header because it is being transmitted via a POS port.
The BCBs 504 associated with the unique instance buffers are written to create a linked list that attaches them to the buffers of the original "reference frame" . The unique instance buffers are not required to be linked -to the first buffer of the reference frame. If some of the leading bytes in the reference frame are to be omitted from the instance, then the unique buffers for the instance may be linked to a buffer other than the first buffer in the reference frame. The SBP and EBP values are written in each BCB 504 to reflect the valid bytes in the next buffer. This permits the BCB 504 for the last unique buffer for the instance to specify a starting byte offset" in the first linked buffer from the reference frame that is different from other the byte offset specified for other instances . The TBUF bit is set to indicate if the next buffer should be returned to the free buffer queue immediately after its data is transmitted. The last unique buffer for the instance shall have the TBUF bit in its BCB 504 set to zero. The TBUF bit in the BCB 504 of all other unique buffers for the instance shall have their TBUF bit set to one.
The network processor then issues an enqueue operation to release the instance to the Dataflow 202 for transmission. The following information is provided to the Dataflow 202 as part of the enqueue' operation:
Target Queue Number - Specifies which output queue the multicast instance is to be enqueued into.
FCBA - Specifies the Frame Control Block Address (FCBA) assigned to the multicast instance by the network processor.
BCNT - Specifies the total length of the frame. It may be different for each multicast instance.
FBA - Specifies the address of the first buffer 101 in the multicast instance. The first buffer 101 is always unique to the multicast instance. SBP / EBP - Specifies the starting and ending byte position of valid data in the first buffer 101.
Type - Specifies the type and format of the frame to be transmitted. Always set to binary value "11" for "Multicast" frames. This value implies 1) that the frame is a multicast instance, 2) the -first buffer 101 contains an FACB, and 3) the first buffer 101 is a transient buffer (TBUF=1) .
FACB - Frame Alteration Control Block (FACB) information that specifies the alterations for the. Dataflow 202 to apply to the frame data as it is transmitted. The FACB may include different frame alteration requests for each multicast instance. However, each instance shall include the address of the Reference FCB 501 for use in discarded the reference frame after all instances have been transmitted.
Multicast Action - When enqueuing a multicast instance, the network processor specifies whether the current enqueue is the first, middle, or last instance of the multicast transmission.
* 01 - Multicast First - The first instance enqueued is identified as "multicast first" .
* 10 - Multicast Middle - If the multicast frame consists of more than two instances, then any intermediate instances are identified as "multicast middle" .
* 11 - Multicast Last - The last instance enqueued is identified" as "multicast last".
The following describes the Dataflow chip's actions from reception of the enqueue operation through transmission of the multicast frame instance via the target output" port :
1. The Dataflow chip 202 writes the FACB information to the frame's first buffer 502ι using the FBA and SBP values provided in the enqueue as the buffer address and offset where the information is to be written.
2. The Dataflow chip 202 extracts the address of the Reference FCB 501 from within the FACB information. This address is used to access the Reference FCB 501 for storage of an MCC value. The MCC value is stored in the NFA field of the Reference FCB 501 (the NFA field of the Reference FCB 501 is unused since the Reference Frame is not directly in any queue) . The value of the MCC 506 is updated as follows on enqueue:
If Multicast Action is 01 - Multicast First, then the MCC 506 is set to 2.
If Multicast Action is 10 - Multicast Middle, then the MCC 506 is incremented by 1.
If Multicast Act-ion is 11 - Multicast Last, then the MCC 506 is not modified.
The Dataflow chip 202 writes the FBA, SBP, EBP and Type values to the FCB 502 specified by the FCBA value provided in the enqueue.
The Dataflow chip 202 enqueues the frame into the requested output queue specified by the Target Queue Number value provided in the enqueue. It does this as follows:
a. If there were previously no frames in the output queue, then the Head FCBA and Tail FCBA in the output queue's QCB 104 (Figure 1) are written with the FCBA value provided in the enqueue . The Head BCNT in the QCB 104 is written with the BCNT value provided in the enqueue. The QCNT in the QCB 104 is incremented by 1.
b. If there were already one or more frames in the output queue, then the NFA and BCNT fields of the FCB 502 for the frame previously on the tail of the output queue are written. The NFA and BCNT fields are written with the FCBA and BCNT values provided in the enqueue. The Tail FCBA field of the output queue's QCB 104 (Figure 1) is then written with the FCBA value provided in the enqueue. The QCNT in the QCB 104 is incremented by 1. -
When the frame reaches the head of the output queue, it is then dequeued for transmission via the output port. The Head FCBA and Head BCNT fields are read from the output queue's QCB 104. The Head BCNT value is loaded into a working byte count register for use during transmission of the frame. The Head FCBA value is used to read the contents of the FCB 502 at the head of the queue. The NFA and BCNT values read from the FCB 502 are used to update Head FCBA and Head BCNT fields of the QCB 104 (Figure 1) . The FBA, SBP, EBP, and Type fields read from the FCB 502 are loaded into working registers for use during transmission of the data from the first buffer 504.. The
Figure imgf000019_0001
Reference FCB 501. One of the following two actions is then performed :
If the MCC value is greater than one, then it is decremented by one and written back to the NFA field of the Reference FCB 501. Transmission of this multicast instance is then complete. However the reference frame may not be discarded because the other multicast instances have not completed transmission.
If the MCC value .is equal to one, then the Reference FCB 501 is enqueued into a "discard queue" to return the FCB and buffers associated with the reference frame to the free queue . Transmission of all instances of the multicast frame are then complete .
Static Frame transmission also applies to Figure 5. Static Frame transmission is identical to Multicast transmission except that no FCBs or buffers are returned to the free FCB or buffer queues, and the MCC value in the Reference FCB 501 is not decremented. Static Frame transmission is used in cases where it is necessary to retain a copy of a frame for re-transmission at a later time. Each of the frame instances illustrated in Figure 5 may be transmitted one or more times as static frames (by setting the Type field of the FCB to binary "01" to indicate static frame) . When a frame instance is being transmitted for the final time, it is transmitted as a normal multicast frame (by setting the Type field of the FCB to binary "11" to indicate multicast frame) . Thus, each frame instance may be transmitted as a static frame one to "N" times followed by a single transmission as a normal multicast frame. When each instance has been transmitted as a normal multicast frame, the Reference FCB 501 and buffers from the reference frame are returned to the free FCB and buffer queues. Picocode software executing in the EPC chip 209 determines whether frames instances are transmitted as static or multicast frames .
The Dataflow chip 202 transmits a static frame exactly like a "Unicast with FACB" frame Type with the one exception that the frame's FCB 103 and buffers 101 are not returned to the free queues. The EPC chip 202 may then issue another enqueue operation specifying the same FCB 103 to re-transmit the frame. The frame can be re-transmitted any number of times by specifying the Static Frame type value. The Static Frame type may be applied to permit re-transmission of either a unicast or multicast frame type. In the case of multicast, the TBUF parameter is ignored for Static Frames so that no buffers are discarded even if the TBUF bit is set . When the final re-transmission of the Static Frame is performed, it is simply enqueued as a Type binary "00" (Unicast with FACB) , or Type binary "11" (Multicast) . The frame is then transmitted as described in the previous sections and the FCB 103 and associated buffers 101 are returned to the free queues .
Figure 6 depicts a flowchart for use in describing the operation of the preferred embodiment of the invention. The process begins in function block 601 by the EPC 209 issuing credits for the Dataflow chip 202 to dispatch frames to the EPC 209.. determination is made in decision block 602 as to whether a frame has- been- dispatched. If not, the process waits in function block 603. When a frame has been dispatched, the EPC 209 requests a lease of "N" free FCB addresses from the Dataflow chip 202 in function block 604. A determination is made in decision block 605 as to whether the FCB addresses have been transferred. If not, the process waits in function block 606. When the FCB addresses have been transferred, the EPC 209 requests lease of "N" buffers from the Dataflow chip 202 in function block" 607. A" determination is then made in decision block 608 as to whether the buffers have been transferred. If not, the process waits in function block 609. When the buffers have been transferred, the EPC 209 chains a new first buffer or buffers to an original first buffer 101 in function block 610. Next, the EPC 209 enqueues each instance with FACB (frame alteration control block) information in. function block 611. Finally, the EPC 209 signals the Dataflow chip 202 to update the counter for each transmitted packet in function block 612. A similar process applies to the EPC chip 210 and Dataflow chip 202. The flow depicted here applies equally to ingress and egress. As shown in Figure 2, the three primary chips, EPC, Dataflow and Scheduler, are used in both ingress and egress; only the direction of the flow of data is different. All functions such as multicast are identical between ingress and egress.

Claims

1. A method of multicast transmission on a network processor comprising the steps of : storing the frame to be transmitted in a series of buffers, chained together by a linked list; associating a buffer control block with each buffer; associating a frame control block with each frame; receiving frames into a queue to await dispatch by a network processor; associating a queue control block with .the. queue of frames to be transmitted; assigning additional buffers and additional frame control blocks for each multicast target and linking these additional frame control blocks with the original frame control block associated with the frame; using a multicast counter to determine when the frame has been sent to each of the multicast targets; returning the buffers and frame control blocks assigned to each multicast target to free queues as the frame is sent to each target; and returning the original buffers and frame control blocks to the free queues after the frame has been sent to all of the multicast targets.
2. The method for multicast transmission as recited in claim 1, wherein the buffer control block associated with each buffer forms a linked list for chaining buffers into a frame and contains a plurality of fields, including separate fields to store a pointer to the next buffer in the frame; store the offset of the first valid byte of data in the next buffer of a f ame; store the offset of the last valid byte of data in the next buffer of a frame; and indicate whether the next .buffer in the frame should be returned to the free buffer or queue or retained so as to continue multicast transmission.
3. The method for multicast transmission as recited in claim 1 or 2, wherein the frame control block associated with each frame forms a linked list for chaining frames into a queue and contains a plurality of fields, including separate fields to store a pointer to the next frame in the queue; store a count of the total number of bytes of the next frame in the queue ; store the address of the first buffer in a frame; store the starting byte position of valid data in the first buffer of a frame; store the ending byte position of valid data in the first buffer of a frame; and store information on the format and the type of the frame to be transmitted.
4. The method for multicast transmission as recited in any preceding claim, wherein the step of receiving frames into a queue comprises the further steps of: popping a free buffer address from the head of the free buffer queue ; popping a free frame control block from the head of the free frame control block queue; writing frame data to the buffer; writing control information, including the first buffer address, the starting and ending byte positions for valid data in the first buffer, to the frame control block; setting a working byte count register to the number of bytes written to the first buffer; repeating this process until the entire frame is written to buffers; and adding the frame to the tail of an input queue to await dispatch to the network processor.
5. The method for multicast transmission as recited in any preceding claim, wherein the queue control block associated with the queue of frames to be transmitted includes a plurality of fields, including separate fields to
store the address of the frame control block associated with the frame at the head of the queue; store a count of the total number of valid bytes in the frame at the top of the queue;' and store the address of the- frame control block associated with the frame at the tail of the queue.
6. A computer program having program code adapted to perform the method steps of any preceding method claim, when said program is run on a computer syste .
7. A network processor supporting multicast transmission comprising: means for storing a frame to be transmitted in a series of buffers, chained together by a linked list; means for associating a buffer control block with each buffer and associating a frame control block with each frame; means for receiving frames into a queue to await dispatch; means for associating a queue control block with the queue of frames to be transmitted; means for assigning additional buffers and additional frame control blocks for each multicast target and linking these additional frame control blocks with the original frame control block associated with the frame ; means using a multicast counter for determining when the frame has been sent to each of the multicast targets; and means returning the buffers and frame control blocks assigned to each multicast target to free queues as the frame is sent to each target and returning ' he original buffers and frame control blocks to the free queues after the frame has been sent to all of the multicast targets.
8, The network processor as recited in claim 7, wherein the buffer control block associated with each buffer forms a linked list for chaining buffers into a frame and contains a plurality of fields, including separate fields to store a pointer to the next buffer in the frame; store the offset of the first valid byte of data in the next buffer of a frame; store the offset of the last valid byte of data in the next buffer of a frame; and indicate whether the next buffer in the frame should be returned to the free buffer or queue or retained so as to continue multicast transmission.
9 The network processor as recited in claim 7 or 8, wherein the frame control block associated with each frame forms a linked list. for chaining frames into a queue and contains a plurality of fields, including- separate fields to store a pointer to the next frame in the queue; store a count of the total number of bytes of the next frame in the queue; store the address of the first buffer in a frame; store the starting byte position of valid data in the first buffer of a frame; store the ending byte position of valid data in the first buffer of a frame; and store information on the format and the type of the frame to be transmitted.
10. The network processor as recited in claim 7, 8 or 9, wherein the means for receiving frames into a queue comprises: means for popping a free buffer address from the head of the free buffer queue; means for popping a free frame control block from the head of the free frame control block queue; means for writing frame data to the buffer,- means for writing control information, including the first buffer address, the starting and ending byte positions for valid data in the first buffer, to the frame control block; means for setting a working byte count register to the number of bytes written to the first bufier; and means, in response to the entire frame is written to buffers, for adding the frame to the tail of an input queue to* await dispatch to the network processor.
PCT/GB2002/000383 2001-04-20 2002-01-28 Method and device for multicast transmissions WO2002087156A2 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
AT02715591T ATE291802T1 (en) 2001-04-20 2002-01-28 METHOD AND DEVICE FOR MULTIPLE SHIPMENT
AU2002225237A AU2002225237A1 (en) 2001-04-20 2002-01-28 Method and device for multicast transmissions
EP02715591A EP1380133B1 (en) 2001-04-20 2002-01-28 Method and device for multicast transmissions
KR1020037013729A KR100690418B1 (en) 2001-04-20 2002-01-28 Efficient processing of multicast transmissions
JP2002584540A JP3777161B2 (en) 2001-04-20 2002-01-28 Efficient processing of multicast transmission
DE60203380T DE60203380T2 (en) 2001-04-20 2002-01-28 METHOD AND DEVICE FOR MULTIPLE TRANSMISSION

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/839,079 US6836480B2 (en) 2001-04-20 2001-04-20 Data structures for efficient processing of multicast transmissions
US09/839,079 2001-04-20

Publications (2)

Publication Number Publication Date
WO2002087156A2 true WO2002087156A2 (en) 2002-10-31
WO2002087156A3 WO2002087156A3 (en) 2002-12-19

Family

ID=25278799

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/GB2002/000383 WO2002087156A2 (en) 2001-04-20 2002-01-28 Method and device for multicast transmissions

Country Status (10)

Country Link
US (1) US6836480B2 (en)
EP (1) EP1380133B1 (en)
JP (1) JP3777161B2 (en)
KR (1) KR100690418B1 (en)
CN (1) CN1219384C (en)
AT (1) ATE291802T1 (en)
AU (1) AU2002225237A1 (en)
DE (1) DE60203380T2 (en)
TW (1) TW573413B (en)
WO (1) WO2002087156A2 (en)

Cited By (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006137700A1 (en) * 2005-06-22 2006-12-28 Nhn Corporation Method and apparatus for providing reliable communication between member servers belonging to same multicast group
US10055880B2 (en) 2016-12-06 2018-08-21 Activision Publishing, Inc. Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10118099B2 (en) 2014-12-16 2018-11-06 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US10179289B2 (en) 2016-06-21 2019-01-15 Activision Publishing, Inc. System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching
US10213682B2 (en) 2015-06-15 2019-02-26 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10226703B2 (en) 2016-04-01 2019-03-12 Activision Publishing, Inc. System and method of generating and providing interactive annotation items based on triggering events in a video game
US10226701B2 (en) 2016-04-29 2019-03-12 Activision Publishing, Inc. System and method for identifying spawn locations in a video game
US10232272B2 (en) 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
US10245509B2 (en) 2015-10-21 2019-04-02 Activision Publishing, Inc. System and method of inferring user interest in different aspects of video game streams
US10284454B2 (en) 2007-11-30 2019-05-07 Activision Publishing, Inc. Automatic increasing of capacity of a virtual space in a virtual world
US10286314B2 (en) 2015-05-14 2019-05-14 Activision Publishing, Inc. System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session
US10286326B2 (en) 2014-07-03 2019-05-14 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
US10315113B2 (en) 2015-05-14 2019-06-11 Activision Publishing, Inc. System and method for simulating gameplay of nonplayer characters distributed across networked end user devices
US10376793B2 (en) 2010-02-18 2019-08-13 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US10376781B2 (en) 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing video game streams
US10421019B2 (en) 2010-05-12 2019-09-24 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
US10463971B2 (en) 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data
US10463964B2 (en) 2016-11-17 2019-11-05 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible heatmaps
US10471348B2 (en) 2015-07-24 2019-11-12 Activision Publishing, Inc. System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10537809B2 (en) 2017-12-06 2020-01-21 Activision Publishing, Inc. System and method for validating video gaming data
US10561945B2 (en) 2017-09-27 2020-02-18 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
US10573065B2 (en) 2016-07-29 2020-02-25 Activision Publishing, Inc. Systems and methods for automating the personalization of blendshape rigs based on performance capture data
US10596471B2 (en) 2017-12-22 2020-03-24 Activision Publishing, Inc. Systems and methods for enabling audience participation in multi-player video game play sessions
US10627983B2 (en) 2007-12-24 2020-04-21 Activision Publishing, Inc. Generating data for managing encounters in a virtual world environment
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
US10709981B2 (en) 2016-11-17 2020-07-14 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
US10765948B2 (en) 2017-12-22 2020-09-08 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US10818060B2 (en) 2017-09-05 2020-10-27 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
US10861079B2 (en) 2017-02-23 2020-12-08 Activision Publishing, Inc. Flexible online pre-ordering system for media
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US10981069B2 (en) 2008-03-07 2021-04-20 Activision Publishing, Inc. Methods and systems for determining the authenticity of copied objects in a virtual environment
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
US11097193B2 (en) 2019-09-11 2021-08-24 Activision Publishing, Inc. Methods and systems for increasing player engagement in multiplayer gaming environments
US11115712B2 (en) 2018-12-15 2021-09-07 Activision Publishing, Inc. Systems and methods for indexing, searching for, and retrieving digital media
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US11192028B2 (en) 2018-11-19 2021-12-07 Activision Publishing, Inc. Systems and methods for the real-time customization of video game content based on player data
US11263670B2 (en) 2018-11-19 2022-03-01 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US11278813B2 (en) 2017-12-22 2022-03-22 Activision Publishing, Inc. Systems and methods for enabling audience participation in bonus game play sessions
US11305191B2 (en) 2018-12-20 2022-04-19 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11344808B2 (en) 2019-06-28 2022-05-31 Activision Publishing, Inc. Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions
US11351466B2 (en) 2014-12-05 2022-06-07 Activision Publishing, Ing. System and method for customizing a replay of one or more game events in a video game
US11351459B2 (en) 2020-08-18 2022-06-07 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values
US11420122B2 (en) 2019-12-23 2022-08-23 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11423605B2 (en) 2019-11-01 2022-08-23 Activision Publishing, Inc. Systems and methods for remastering a game space while maintaining the underlying game simulation
US11439904B2 (en) 2020-11-11 2022-09-13 Activision Publishing, Inc. Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games
US11524234B2 (en) 2020-08-18 2022-12-13 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
US11537209B2 (en) 2019-12-17 2022-12-27 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11563774B2 (en) 2019-12-27 2023-01-24 Activision Publishing, Inc. Systems and methods for tracking and identifying phishing website authors
US11679330B2 (en) 2018-12-18 2023-06-20 Activision Publishing, Inc. Systems and methods for generating improved non-player characters
US11712627B2 (en) 2019-11-08 2023-08-01 Activision Publishing, Inc. System and method for providing conditional access to virtual gaming items
US11717753B2 (en) 2020-09-29 2023-08-08 Activision Publishing, Inc. Methods and systems for generating modified level of detail visual assets in a video game
US11724188B2 (en) 2020-09-29 2023-08-15 Activision Publishing, Inc. Methods and systems for selecting a level of detail visual asset during the execution of a video game
US11794107B2 (en) 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games
US11833423B2 (en) 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6937606B2 (en) * 2001-04-20 2005-08-30 International Business Machines Corporation Data structures for efficient processing of IP fragmentation and reassembly
US7167471B2 (en) * 2001-08-28 2007-01-23 International Business Machines Corporation Network processor with single interface supporting tree search engine and CAM
US7206310B1 (en) * 2001-12-28 2007-04-17 Redback Networks Inc. Method and apparatus for replicating packet data with a network element
AU2003217319A1 (en) * 2002-02-04 2003-09-02 Fast-Chip, Inc. Services processor having a packet editing unit
US7680043B2 (en) * 2002-03-20 2010-03-16 International Business Machines Corporation Network processor having fast flow queue disable process
US7230922B1 (en) * 2002-04-05 2007-06-12 Cingular Wireless Ii, Llc Real-time rate control mechanism for multi-rate data transmissions in wireless networks
US7685008B2 (en) * 2004-02-20 2010-03-23 Accenture Global Services Gmbh Account level participation for underwriting components
EP1740945B1 (en) * 2004-04-07 2018-09-19 Ncardia AG Non-invasive, in vitro functional tissue assay systems
WO2006015513A1 (en) * 2004-08-12 2006-02-16 Intel Corporation Method and system for processing multicast packets
US20060187963A1 (en) * 2005-02-18 2006-08-24 International Business Machines Corporation Method for sharing single data buffer by several packets
US7466715B2 (en) * 2005-03-28 2008-12-16 International Business Machines Corporation Flexible control block format for frame description and management
US7474662B2 (en) * 2005-04-29 2009-01-06 International Business Machines Corporation Systems and methods for rate-limited weighted best effort scheduling
TWI269972B (en) * 2005-10-21 2007-01-01 Ind Tech Res Inst Method for releasing data of storage apparatus
US7945816B1 (en) * 2005-11-30 2011-05-17 At&T Intellectual Property Ii, L.P. Comprehensive end-to-end storage area network (SAN) application transport service
US7779016B2 (en) * 2006-09-14 2010-08-17 International Business Machines Corporation Parallel execution of operations for a partitioned binary radix tree on a parallel computer
US8656448B2 (en) * 2006-10-26 2014-02-18 International Business Machines Corporation Providing policy-based application services to an application running on a computing system
US8713582B2 (en) * 2006-10-26 2014-04-29 International Business Machines Corporation Providing policy-based operating system services in an operating system on a computing system
US8032899B2 (en) 2006-10-26 2011-10-04 International Business Machines Corporation Providing policy-based operating system services in a hypervisor on a computing system
US20080273678A1 (en) 2007-05-01 2008-11-06 Igor Balk Systems and methods for phone call management
US7286661B1 (en) 2007-05-01 2007-10-23 Unison Technologies Llc Systems and methods for scalable hunt-group management
US20080285736A1 (en) 2007-05-16 2008-11-20 Unison Technolgies Llc Systems and methods for providing unified collaboration systems with conditional communication handling
US20080285588A1 (en) 2007-05-16 2008-11-20 Unison Technologies Llc Systems and methods for providing unified collaboration systems with combined communication log
US7958274B2 (en) * 2007-06-18 2011-06-07 International Business Machines Corporation Heuristic status polling
US8296430B2 (en) 2007-06-18 2012-10-23 International Business Machines Corporation Administering an epoch initiated for remote memory access
US9065839B2 (en) 2007-10-02 2015-06-23 International Business Machines Corporation Minimally buffered data transfers between nodes in a data communications network
US7984450B2 (en) * 2007-11-28 2011-07-19 International Business Machines Corporation Dispatching packets on a global combining network of a parallel computer
CN101453485B (en) * 2007-12-07 2011-12-07 英业达股份有限公司 Method for data transmission and writing using multicast data stream
CN101489184B (en) * 2008-01-14 2010-12-08 华为技术有限公司 Method, apparatus and system for differentiating intra-district sub-frame state
CN101222344B (en) * 2008-01-23 2010-12-29 中兴通讯股份有限公司 File multicasting transmission method and system
US7895260B2 (en) * 2008-07-28 2011-02-22 International Business Machines Corporation Processing data access requests among a plurality of compute nodes
KR101326983B1 (en) * 2009-12-21 2014-01-15 한국전자통신연구원 Apparatus and method for controlling traffic
US8365186B2 (en) 2010-04-14 2013-01-29 International Business Machines Corporation Runtime optimization of an application executing on a parallel computer
US8504730B2 (en) 2010-07-30 2013-08-06 International Business Machines Corporation Administering connection identifiers for collective operations in a parallel computer
CN102377576B (en) * 2010-08-06 2014-09-17 高通创锐讯通讯科技(上海)有限公司 Multicast realization method
US8565120B2 (en) 2011-01-05 2013-10-22 International Business Machines Corporation Locality mapping in a distributed processing system
US9317637B2 (en) 2011-01-14 2016-04-19 International Business Machines Corporation Distributed hardware device simulation
US8689228B2 (en) 2011-07-19 2014-04-01 International Business Machines Corporation Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system
CN102281192B (en) * 2011-07-19 2017-09-29 中兴通讯股份有限公司 The cell processing method and processing device of exchange network chip
US9250948B2 (en) 2011-09-13 2016-02-02 International Business Machines Corporation Establishing a group of endpoints in a parallel computer
CN105471837A (en) * 2015-11-09 2016-04-06 北京捷思锐科技股份有限公司 Information processing method and device
CN108989840B (en) * 2017-06-02 2020-10-16 上海数字电视国家工程研究中心有限公司 Design method and transmission system of data frame suitable for high-speed motion reception
US11853439B2 (en) 2020-12-30 2023-12-26 Activision Publishing, Inc. Distributed data storage system providing enhanced security
CN115378887B (en) * 2022-07-05 2024-01-23 西安电子科技大学 TT service switching device of time-triggered Ethernet switch

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5333269A (en) * 1988-10-28 1994-07-26 International Business Machines Corporation Mechanism for transferring messages between source and destination users through a shared memory
US5561807A (en) * 1993-04-29 1996-10-01 International Business Machines Corporation Method and device of multicasting data in a communications system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3486946B2 (en) 1994-03-16 2004-01-13 富士通株式会社 Multicast communication relay device
US5684797A (en) * 1995-04-05 1997-11-04 International Business Machines Corporation ATM cell multicasting method and apparatus
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
JP2842522B2 (en) * 1995-12-06 1999-01-06 日本電気株式会社 ATM switch and control method thereof
US5689506A (en) * 1996-01-16 1997-11-18 Lucent Technologies Inc. Multicast routing in multistage networks
US5898687A (en) * 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit
US6094435A (en) * 1997-06-30 2000-07-25 Sun Microsystems, Inc. System and method for a quality of service in a multi-layer network element
US6111880A (en) * 1997-12-05 2000-08-29 Whittaker Corporation Hybrid packet/cell switching, linking, and control system and methodology for sharing a common internal cell format

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5333269A (en) * 1988-10-28 1994-07-26 International Business Machines Corporation Mechanism for transferring messages between source and destination users through a shared memory
US5561807A (en) * 1993-04-29 1996-10-01 International Business Machines Corporation Method and device of multicasting data in a communications system

Cited By (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006137700A1 (en) * 2005-06-22 2006-12-28 Nhn Corporation Method and apparatus for providing reliable communication between member servers belonging to same multicast group
US10284454B2 (en) 2007-11-30 2019-05-07 Activision Publishing, Inc. Automatic increasing of capacity of a virtual space in a virtual world
US10627983B2 (en) 2007-12-24 2020-04-21 Activision Publishing, Inc. Generating data for managing encounters in a virtual world environment
US10981069B2 (en) 2008-03-07 2021-04-20 Activision Publishing, Inc. Methods and systems for determining the authenticity of copied objects in a virtual environment
US10376793B2 (en) 2010-02-18 2019-08-13 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US10421019B2 (en) 2010-05-12 2019-09-24 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
US10905963B2 (en) 2012-12-31 2021-02-02 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US11446582B2 (en) 2012-12-31 2022-09-20 Activision Publishing, Inc. System and method for streaming game sessions to third party gaming consoles
US10857468B2 (en) 2014-07-03 2020-12-08 Activision Publishing, Inc. Systems and methods for dynamically weighing match variables to better tune player matches
US10322351B2 (en) 2014-07-03 2019-06-18 Activision Publishing, Inc. Matchmaking system and method for multiplayer video games
US10286326B2 (en) 2014-07-03 2019-05-14 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
US10376792B2 (en) 2014-07-03 2019-08-13 Activision Publishing, Inc. Group composition matchmaking system and method for multiplayer video games
US11351466B2 (en) 2014-12-05 2022-06-07 Activision Publishing, Ing. System and method for customizing a replay of one or more game events in a video game
US10668381B2 (en) 2014-12-16 2020-06-02 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
US10118099B2 (en) 2014-12-16 2018-11-06 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
US11420119B2 (en) 2015-05-14 2022-08-23 Activision Publishing, Inc. Systems and methods for initiating conversion between bounded gameplay sessions and unbounded gameplay sessions
US10315113B2 (en) 2015-05-14 2019-06-11 Activision Publishing, Inc. System and method for simulating gameplay of nonplayer characters distributed across networked end user devices
US11524237B2 (en) 2015-05-14 2022-12-13 Activision Publishing, Inc. Systems and methods for distributing the generation of nonplayer characters across networked end user devices for use in simulated NPC gameplay sessions
US10286314B2 (en) 2015-05-14 2019-05-14 Activision Publishing, Inc. System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session
US11857876B2 (en) 2015-05-14 2024-01-02 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US11224807B2 (en) 2015-05-14 2022-01-18 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US11896905B2 (en) 2015-05-14 2024-02-13 Activision Publishing, Inc. Methods and systems for continuing to execute a simulation after processing resources go offline
US10668367B2 (en) 2015-06-15 2020-06-02 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10213682B2 (en) 2015-06-15 2019-02-26 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10471348B2 (en) 2015-07-24 2019-11-12 Activision Publishing, Inc. System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks
US10835818B2 (en) 2015-07-24 2020-11-17 Activision Publishing, Inc. Systems and methods for customizing weapons and sharing customized weapons via social networks
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10232272B2 (en) 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
US10898813B2 (en) 2015-10-21 2021-01-26 Activision Publishing, Inc. Methods and systems for generating and providing virtual objects and/or playable recreations of gameplay
US10376781B2 (en) 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing video game streams
US11679333B2 (en) 2015-10-21 2023-06-20 Activision Publishing, Inc. Methods and systems for generating a video game stream based on an obtained game log
US10245509B2 (en) 2015-10-21 2019-04-02 Activision Publishing, Inc. System and method of inferring user interest in different aspects of video game streams
US11310346B2 (en) 2015-10-21 2022-04-19 Activision Publishing, Inc. System and method of generating and distributing video game streams
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
US10300390B2 (en) 2016-04-01 2019-05-28 Activision Publishing, Inc. System and method of automatically annotating gameplay of a video game based on triggering events
US10226703B2 (en) 2016-04-01 2019-03-12 Activision Publishing, Inc. System and method of generating and providing interactive annotation items based on triggering events in a video game
US11439909B2 (en) 2016-04-01 2022-09-13 Activision Publishing, Inc. Systems and methods of generating and sharing social messages based on triggering events in a video game
US10807003B2 (en) 2016-04-29 2020-10-20 Activision Publishing, Inc. Systems and methods for determining distances required to achieve a line of site between nodes
US10226701B2 (en) 2016-04-29 2019-03-12 Activision Publishing, Inc. System and method for identifying spawn locations in a video game
US10179289B2 (en) 2016-06-21 2019-01-15 Activision Publishing, Inc. System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching
US10573065B2 (en) 2016-07-29 2020-02-25 Activision Publishing, Inc. Systems and methods for automating the personalization of blendshape rigs based on performance capture data
US10586380B2 (en) 2016-07-29 2020-03-10 Activision Publishing, Inc. Systems and methods for automating the animation of blendshape rigs
US11189084B2 (en) 2016-07-29 2021-11-30 Activision Publishing, Inc. Systems and methods for executing improved iterative optimization processes to personify blendshape rigs
US11213753B2 (en) 2016-11-17 2022-01-04 Activision Publishing, Inc. Systems and methods for the generation of heatmaps
US11207596B2 (en) 2016-11-17 2021-12-28 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
US10709981B2 (en) 2016-11-17 2020-07-14 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
US10463964B2 (en) 2016-11-17 2019-11-05 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible heatmaps
US10702779B2 (en) 2016-11-17 2020-07-07 Activision Publishing, Inc. Bandwidth and processing efficient heatmaps
US10987588B2 (en) 2016-11-29 2021-04-27 Activision Publishing, Inc. System and method for optimizing virtual games
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10650539B2 (en) 2016-12-06 2020-05-12 Activision Publishing, Inc. Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
US10055880B2 (en) 2016-12-06 2018-08-21 Activision Publishing, Inc. Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
US11423556B2 (en) 2016-12-06 2022-08-23 Activision Publishing, Inc. Methods and systems to modify two dimensional facial images in a video to generate, in real-time, facial images that appear three dimensional
US10991110B2 (en) 2016-12-06 2021-04-27 Activision Publishing, Inc. Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
US10861079B2 (en) 2017-02-23 2020-12-08 Activision Publishing, Inc. Flexible online pre-ordering system for media
US11741530B2 (en) 2017-02-23 2023-08-29 Activision Publishing, Inc. Flexible online pre-ordering system for media
US10818060B2 (en) 2017-09-05 2020-10-27 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
US10561945B2 (en) 2017-09-27 2020-02-18 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
US10537809B2 (en) 2017-12-06 2020-01-21 Activision Publishing, Inc. System and method for validating video gaming data
US10463971B2 (en) 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data
US11117055B2 (en) 2017-12-06 2021-09-14 Activision Publishing, Inc. Systems and methods for validating leaderboard gaming data
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US11911689B2 (en) 2017-12-19 2024-02-27 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US10596471B2 (en) 2017-12-22 2020-03-24 Activision Publishing, Inc. Systems and methods for enabling audience participation in multi-player video game play sessions
US11278813B2 (en) 2017-12-22 2022-03-22 Activision Publishing, Inc. Systems and methods for enabling audience participation in bonus game play sessions
US11413536B2 (en) 2017-12-22 2022-08-16 Activision Publishing, Inc. Systems and methods for managing virtual items across multiple video game environments
US10765948B2 (en) 2017-12-22 2020-09-08 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US11148063B2 (en) 2017-12-22 2021-10-19 Activision Publishing, Inc. Systems and methods for providing a crowd advantage to one or more players in the course of a multi-player video game play session
US11806626B2 (en) 2017-12-22 2023-11-07 Activision Publishing, Inc. Systems and methods for incentivizing player participation in bonus game play sessions
US10864443B2 (en) 2017-12-22 2020-12-15 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US11666831B2 (en) 2017-12-22 2023-06-06 Activision Publishing, Inc. Systems and methods for determining game events based on a crowd advantage of one or more players in the course of a multi-player video game play session
US11192028B2 (en) 2018-11-19 2021-12-07 Activision Publishing, Inc. Systems and methods for the real-time customization of video game content based on player data
US11883745B2 (en) 2018-11-19 2024-01-30 Activision Publishing, Inc. Systems and methods for providing a tailored video game based on a player defined time period
US11263670B2 (en) 2018-11-19 2022-03-01 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US11704703B2 (en) 2018-11-19 2023-07-18 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US11115712B2 (en) 2018-12-15 2021-09-07 Activision Publishing, Inc. Systems and methods for indexing, searching for, and retrieving digital media
US11679330B2 (en) 2018-12-18 2023-06-20 Activision Publishing, Inc. Systems and methods for generating improved non-player characters
US11305191B2 (en) 2018-12-20 2022-04-19 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11344808B2 (en) 2019-06-28 2022-05-31 Activision Publishing, Inc. Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions
US11097193B2 (en) 2019-09-11 2021-08-24 Activision Publishing, Inc. Methods and systems for increasing player engagement in multiplayer gaming environments
US11423605B2 (en) 2019-11-01 2022-08-23 Activision Publishing, Inc. Systems and methods for remastering a game space while maintaining the underlying game simulation
US11712627B2 (en) 2019-11-08 2023-08-01 Activision Publishing, Inc. System and method for providing conditional access to virtual gaming items
US11537209B2 (en) 2019-12-17 2022-12-27 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11709551B2 (en) 2019-12-17 2023-07-25 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11839814B2 (en) 2019-12-23 2023-12-12 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11420122B2 (en) 2019-12-23 2022-08-23 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11563774B2 (en) 2019-12-27 2023-01-24 Activision Publishing, Inc. Systems and methods for tracking and identifying phishing website authors
US11524234B2 (en) 2020-08-18 2022-12-13 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
US11351459B2 (en) 2020-08-18 2022-06-07 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values
US11833423B2 (en) 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game
US11724188B2 (en) 2020-09-29 2023-08-15 Activision Publishing, Inc. Methods and systems for selecting a level of detail visual asset during the execution of a video game
US11717753B2 (en) 2020-09-29 2023-08-08 Activision Publishing, Inc. Methods and systems for generating modified level of detail visual assets in a video game
US11439904B2 (en) 2020-11-11 2022-09-13 Activision Publishing, Inc. Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games
US11794104B2 (en) 2020-11-11 2023-10-24 Activision Publishing, Inc. Systems and methods for pivoting player-controlled avatars in video games
US11794107B2 (en) 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games

Also Published As

Publication number Publication date
ATE291802T1 (en) 2005-04-15
JP2004524781A (en) 2004-08-12
KR100690418B1 (en) 2007-03-09
CN1219384C (en) 2005-09-14
DE60203380T2 (en) 2006-02-02
AU2002225237A1 (en) 2002-11-05
KR20040002922A (en) 2004-01-07
TW573413B (en) 2004-01-21
EP1380133A2 (en) 2004-01-14
US20020154634A1 (en) 2002-10-24
JP3777161B2 (en) 2006-05-24
CN1498480A (en) 2004-05-19
US6836480B2 (en) 2004-12-28
DE60203380D1 (en) 2005-04-28
EP1380133B1 (en) 2005-03-23
WO2002087156A3 (en) 2002-12-19

Similar Documents

Publication Publication Date Title
EP1380133B1 (en) Method and device for multicast transmissions
US6937606B2 (en) Data structures for efficient processing of IP fragmentation and reassembly
TWI482460B (en) A network processor unit and a method for a network processor unit
EP1430658B1 (en) Method, apparatus and computer program for the decapsulation and encapsulation of packets with multiple headers
US7792027B2 (en) Pipelined packet switching and queuing architecture
US7830884B2 (en) Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US8671219B2 (en) Method and apparatus for efficiently processing data packets in a computer network
US6687247B1 (en) Architecture for high speed class of service enabled linecard
US8370545B2 (en) Programmable queuing instruction set
US20100254387A1 (en) Network processor architecture
JP2002541732A (en) Automatic service adjustment detection method for bulk data transfer
US20060187963A1 (en) Method for sharing single data buffer by several packets
US7289455B2 (en) Network statistics
US7940764B2 (en) Method and system for processing multicast packets
US7260095B1 (en) Technique for deallocation of memory in a multicasting environment
US20070268901A1 (en) Technique For Deallocation of Memory In A Multicasting Environment

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE 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 NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

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

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE 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 NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE 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
WWE Wipo information: entry into national phase

Ref document number: 028071778

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2002715591

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2002584540

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 1020037013729

Country of ref document: KR

WWP Wipo information: published in national office

Ref document number: 2002715591

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWG Wipo information: grant in national office

Ref document number: 2002715591

Country of ref document: EP