CN1219384C - 多播传输的方法及设备 - Google Patents

多播传输的方法及设备 Download PDF

Info

Publication number
CN1219384C
CN1219384C CNB028071778A CN02807177A CN1219384C CN 1219384 C CN1219384 C CN 1219384C CN B028071778 A CNB028071778 A CN B028071778A CN 02807177 A CN02807177 A CN 02807177A CN 1219384 C CN1219384 C CN 1219384C
Authority
CN
China
Prior art keywords
frame
buffer
formation
multicast
controll block
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
CNB028071778A
Other languages
English (en)
Other versions
CN1498480A (zh
Inventor
克劳德·贝索
简·L·卡尔维格纳克
玛库·海蒂斯
约瑟夫·F·洛根
法布瑞斯·J·维尔普兰肯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Activision Publishing Inc
Original Assignee
International Business Machines Corp
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 Corp filed Critical International Business Machines Corp
Publication of CN1498480A publication Critical patent/CN1498480A/zh
Application granted granted Critical
Publication of CN1219384C publication Critical patent/CN1219384C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)
  • Communication Control (AREA)

Abstract

公开了网络处理器上的多播传输,以便使多播传输存储器需求降至最小,并考虑到端口性能差异。在网络处理器上多播传输的帧数据被读入各种控制结构和一个基准与其相关的缓冲器中。基准帧和相关的控制结构允许在不产生帧的多个副本的情况下,服务于多播传输目标。此外,相同的基准帧和控制结构允许把为每个多播传输目标分配的缓冲器返回给自由缓冲器队列,而不必等到所有多播传输完成为止。

Description

多播传输的方法及设备
技术领域
本发明涉及网络处理器上的多播传输,更具体地说,涉及比以前的方法更有效地实现网络处理器上的多播传输的方法。
背景技术
就实现网络处理器上的多播传输方案来说,必须解决在单播传输方案中不会出现的几个新增问题。例如,当向单一目标传输一帧或多帧(即单播传输)时,当从每个缓冲器读取数据时,可向自由缓冲器队列(即帧数据的可用存储器缓冲器的链接列表)返回与帧相关的缓冲器。但是,在存在数个目标位置的多播传输情况下,不能把与帧相关的缓冲器直接返回给自由队列,相反必须在发生最终的多播传输之后,通过重新沿链接列表而行,返回与帧相关的缓冲器。多播传输中对于单播传输来说不会出现的另一新增问题是每个多播传输目标位置需要基准帧内的一个不同起点,或者要求增加额外信息的可能性。这些问题的典型解决方案涉及为每个多播传输请求(从而为每个多播传输目标)产生基准帧的整个副本。产生多个副本解决了问题,但是需要租用许多存储缓冲器,以便满足多播传输请求,从而对系统性能造成麻烦。
如果代替产生帧的多个副本,通过链接到基准帧来实现多播传输,那么,由于一些端口在高于其它端口的性能级别下工作,因此端口性能差异变成必须解决的问题。特别地,链接回基准帧会导致问题,因为开始传输的最后一帧可能不是结束传输的最后一帧。起始帧和结束帧之间的差异产生了解何时使基准帧缓冲器返回自由缓冲器队列的问题。特别地,不能在完成起始帧之后,简单地返回缓冲器。一种解决方案是等待,直到所有多播传输完成为止,但是这样的解决方案同样会对系统性能产生不必要的影响。
在高性能网络处理器中,需要一种使多播传输存储器需求降至最小,并且考虑到端口性能差异的新颖解决方案。
发明内容
本发明的目的是提供一种网络处理器上的多播传输用方法,包括下述步骤:把要传输的帧保存在通过链接列表连接在一起的一系列缓冲器中;使缓冲器控制块与每个缓冲器相关;使帧控制块与每个帧相关;把帧接收到队列中,等待被网络处理器分派;使队列控制块与要传输的帧队列相关;为每个多播目标分配额外的缓冲器和额外的帧控制块,并使这些额外的帧控制块和与帧相关的初始帧控制块链接;利用多播计数器确定帧何时已被发送给每个多播目标;随着帧被发送给每个目标,把分配给每个多播目标的缓冲器和帧控制块返回给自由队列;和在帧已被发送给所有多播目标之后,把初始缓冲器和帧控制块返回给自由队列。
本发明的目的提供一种网络处理器,包括:把要传输的帧保存在通过链接列表连接在一起的一系列缓冲器中的装置;使缓冲器控制块与每个缓冲器相关,并使帧控制块与每个帧相关的装置;把帧接收到队列中以等待分派的装置;使队列控制块与要传输的帧队列相关的装置;为每个多播目标分配额外的缓冲器和额外的帧控制块,并使这些额外的帧控制块和与帧相关的初始帧控制块链接的装置;利用多播计数器确定帧何时已被发送给每个多播目标的装置;和随着该帧被发送给每个目标,把分配给每个多播目标的缓冲器和帧控制块返回给自由队列,并且在帧已被发送给所有多播目标之后,把初始缓冲器和帧控制块返回给自由队列的装置。
根据本发明,新方法不必为每个多播传输实例(即每个多播传输目标)复制整个帧,从而既降低了存储器要求,又解决了起因于端口性能差异的问题。另外,随着其被使用,租用的缓冲器被返回给自由队列(与其它实例何时完成传输无关),并且计数器被用于确定所有实例何时被传输,从而可同样地把基准帧返回自由队列。
附图说明
参考附图,根据本发明一个优选实施例的下述详细说明,将更好地理解上述及其它目的、特征和优点,其中:
图1是图解说明数据结构的方框图;
图2是表示本发明的优选实施例的芯片组系统环境的方框图;
图3是更详细地表示在图2的芯片组中使用的嵌入式处理器复合体和数据流芯片的方框图;
图4表示了通用消息格式;
图5是图解说明根据本发明的优选实施例的数据结构的方框图;
图6是表示本发明的优选实施例实现的过程的流程图。
具体实施方式
现在参见附图,尤其参见图1,图1中表示了根据本发明优选实施例的数据结构。帧被保存在一系列的缓冲器1011-1015中。每个缓冲器101具有相应的缓冲器控制块(BCB)1021-1025,所述缓冲器控制块用于把该系列缓冲器链接到帧中。每帧具有相应的帧控制块(FCB)1031-103n,帧控制块被用于把一系列帧链接到队列中。每个队列具有队列控制块(QCB)104,队列控制块保存队列中第一个FCB103和最后一个FCB 103的地址,以及队列中帧的数目的计数。
数据结构定义
缓冲器101被用于存储数据。每个缓冲器101的大小为64字节,并且可保存从1-64字节的有效数据。缓冲器101内的所有有效数据须保存为邻接的一系列字节。借助链接表把多个缓冲器连接在一起,以便保存大于64字节的帧。
一开始,把所有缓冲器置于自由缓冲器队列中。当帧到达时,缓冲器从自由缓冲器队列的头部被弹出(除去),用于保存帧数据。当进行帧的最后传输时,用于保存帧数据的缓冲器被推送到自由缓冲器队列的尾部。
缓冲器控制块(BCB)102构成把多个缓冲器链接成一帧的链接列表。它还记录缓冲器101的哪些字节包含有效数据。对于每个缓冲器101来说,存在相应的BCB 102。数据库存储器(图2中表示为205和206)中缓冲器101的地址也用作BCB阵列中相应BCB 102的地址。BCB 102包括下述字段:
·下一缓冲器地址(NBA)字段被用于保存指向帧中的下一缓冲器101的指针。当前缓冲器101的BCB 102中的NBA字段包含该帧的下一缓冲器101(及相应BCB 102)的地址。
·起始字节位置(SBP)字段被用于保存帧的下一缓冲器101中数据的第一有效字节的偏移量。
·终止字节位置(EBP)字段被用于保存帧的下一缓冲器101中数据的最后有效字节的偏移量。
·瞬态缓冲器(TBUF)位只有当传送多播帧时才使用,确定在读取其数据用于传输之后,帧中的下一缓冲器101是否应被返回给自由缓冲器队列。该位只对多播帧有效。当帧接收时,该位被设置成为零的默认状态。
注意,SBP、EBP和TBUF字段应用于帧中的“下一”缓冲器101,而不是应用于和当前BCB 102对应的缓冲器101。如此定义这些字段,以允许利用其地址(NBA)同时读取下一缓冲器101的SBP、EBP和TBUF信息。
在帧接收过程中,BCB 102中的每个字段最初由数据流硬件202(图2)加载。皮码随后可修改BCB 102中的字段,从而在传输之前“编辑”帧。NBA字段可被修改,以便增加或删除帧中的缓冲器。SBP和EBP字段可被修改,以便改变缓冲器101中有效字节的数目。可针对作为多播帧一部分的缓冲器设置TBUF位,从而请求在传输其数据之后,立即把缓冲器101返回给自由缓冲器队列。
BCB 102的NBA字段也被用于形成自由缓冲器队列中缓冲器的链接列表。当相应缓冲器101在自由缓冲器队列中时,NBA是BCB102中包含有效信息的唯一字段。
帧控制块(FCB)103形成队列中帧的链接列表。它还记录帧中有效字节的总数,帧中第一缓冲器101的缓冲器地址和SBP/EBP,以及一个两位帧“类型”字段。FCB 103包括下述字段:
·下一帧地址(NFA)字段被用于保存指向帧队列中下一帧的指针。当前帧的FCB 103中的NFA字段包括队列中下一帧的FCB 103的地址。如果相应的帧是队列中的最后一帧,那么该字段不包含任何有效数据。如果QCB中的“QCNT”字段为零,那么在队列中不存在任何帧。如果QCB中的“QCNT”字段为1,那么位于队列头部的FCB中的“NFA”字段无效,因为在队列中不存在任何“下一帧”。
·字节计数(BCNT)字段被用于保存帧队列中下一帧的所有缓冲器中的有效字节的总数。注意BCNT应用于队列中的“下一”帧,而不是应用于与其中保存BCNT字段的FCB 103相关的帧。如此定义BCNT字段,以允许同时读取队列中下一帧的地址(NFA)和长度(BCNT)。
·第一缓冲器地址(FBA)字段被用于保存帧中第一缓冲器101(及相应BCB 102)的地址。
·SBP和EBP字段被用于保存帧的第一缓冲器101中的有效数据的起始位置和终止位置。
·类型字段由皮码用于关于要传输的帧的格式和类型,指示数据流硬件202。
·00“具有FACB的单播帧”,该帧将被传送给单一目的地(单播),当数据被读取以便传输时,每个缓冲器101将被返回给自由缓冲器队列。一个或多个帧变更控制块(FACB)被保存在帧的第一缓冲器101中。
·01“具有FACB的静态帧”,将在不把任何缓冲器返回给自由缓冲器队列的情况下传输该帧。一个或多个帧变更控制块(FACB)被保存在帧的第一缓冲器101中。
·10“不具有FACB的单播帧”,该帧将被传送给单一目的地(单播传输),当数据被读取以便传输时,每个缓冲器101将被返回给自由缓冲器队列。在该帧的第一缓冲器101中不保存任何帧变更控制块(FACB)。
·11“具有FACB的多播帧,并且第一缓冲器是TBUF”,该帧将被传输给多个目的地(多播),只有在已完全把该帧传输给所有目的地之后,才可把该帧的所有实例共用的缓冲器返回给自由缓冲器队列。一个或多个帧变更控制块(FACB)被保存在每个帧实例的第一缓冲器101中。另外,该帧的第一缓冲器101,以及具有在BCB 102中设置的TBUF位的任何后续缓冲器101被假定为与单一帧实例相关,并且在从缓冲器101传输数据之后,立即被返回给自由缓冲器队列。
在帧接收过程中,FCB 103的每个字段最初由数据流硬件202(图2)加载。随后在帧传输之前,皮码可覆盖FCB 103的BCNT、FBA、SBP、EBP和类型字段。如果由于编辑的结果,帧的长度被改变,那么BCNT字段可被修改。如果帧的第一缓冲器101的地址或有效数据范围存在变化,那么可修改FBA、SBP和EBP字段。写入类型字段,以便设置帧传输的类型。
自由FCB队列被用于保存目前未分配给帧的FCB的链接列表。FCB 103的NFA字段被用于形成自由FCB队列中FCB的链接列表。当相应FCB 103在自由FCB队列中时,NFA是FCB 103中包含有效信息的唯一字段。
队列控制块(QCB)104通过保存队列中第一FCB和最后FCB的地址,以及队列中帧的总数的计数,保持帧队列。QCB 104包含下述字段:
·头部FCBA-用于保存位于队列头部的帧的FCB地址(FCBA)。
·头部BCNT-用于保存位于队列头部的帧中的有效字节的总数的计数。
·尾部FCBA-用于保存位于队列尾部的帧的FCB地址(FCBA)。
·QCNT-用于保存队列中当前帧数的计数。
如下把帧添加到队列的尾部:
1.如果一帧或多帧已在队列中(QCNT大于或等于1),那么写入最初位于队列尾部的FCB 103中的NFA和BCNT字段,以便把新的帧链接到队列的尾部。如果队列中先前不存在任何帧(QCNT等于0),那么写入QCB 104的头部FCBA和头部BCNT字段,建立新帧作为该队列的头部。
2.写入QCB 104的尾部FCBA,以便指向添加到队列尾部的新FCB 103。
3.使QCB 104的QCNT递增1,反映队列添加了一帧。
如下从队列的头部除去帧:
1.如果一个以上的帧存在于队列中(QCNT大于1),那么读取位于队列头部的FCB 103中的NFA和BCNT字段,以便获得将位于队列头部的新帧的FCBA和BCNT。随后把这些FCBA和BCNT值写入QCB104的头部FCBA和头部BCNT,建立位于队列头部的新帧。
2.使QCB 104的QCNT减1,反映队列中减少一帧。
帧接收
本节通过相对于网络处理器的分派,描述从帧接收起的数据结构的使用。
步骤1:当收到第一帧数据时,从自由缓冲器队列的头部弹出一个自由缓冲器地址,从自由FCB队列的头部弹出一个自由FCB103。多达64字节的帧数据被写入缓冲器101中。把第一缓冲器101的FBA、SBP和EBP值写入FCB 103中。工作字节计数寄存器被设置成写入第一缓冲器101的字节的数目。如果整个帧放入第一缓冲器101中,则转到步骤3;否则,继续步骤2。
步骤2:从自由缓冲器队列弹出另一缓冲器101,多达64字节的数据被写入该缓冲器101中。把当前缓冲器101的NBA、SBP和EBP值写入前一缓冲器101的BCB 102中。写入缓冲器101的字节数被增加到工作字节计数寄存器中。如果收到帧的末端,那么转到步骤3;否则,重复步骤2。
步骤3:随后把该帧排列到输入队列的尾部,等待分派给网络处理器。
1·如果输入队列中先前不存在任何帧,那么把新帧的FCB 103的地址写入输入队列的QCB 104中的头部FCBA和尾部FCBA。用工作字节计数寄存器写  QCB 104中的头部BCNT,以记录新帧的总长度。使QCB 104中的QCNT加1。
2·如果在输入队列中已存在一帧或多帧,那么写入位于输入队列尾部的在先帧的FCB 103的NFA和BCNT字段。把新帧的FCB 103的地址写入NFA字段。用工作字节计数寄存器写入BCNT字段,以便记录新帧的长度。随后把新帧的FCB 103的地址写入输入队列的QCB104的尾部FCBA中。使QCB 104中的QCNT加1。
当帧到达输入队列的头部时,随后使该帧出列,以便分派给网络处理器。从输入队列的QCB 104读取头部FCBA和头部BCNT字段。随后使用头部FCBA值读取位于队列头部的FCB 103的内容。从FCB103读取的NFA和BCNT值被用于更新QCB 104的头部FCBA和头部BCNT字段。从FCB 103读取的FBA、SBP和EBP值被用于定位并读取分派给网络处理器的帧数据。沿着BCB 102链继续进行,直到读取了需要分派的帧数据为止。使QCB 104中的QCNT减1。
图2描述了实现本发明优选实施例的芯片组系统环境。更具体地说,数据从开关结构201流动到数据流芯片202,随后流动到POS(Packet-Over-SONET)成帧器或者以太网MAC(媒体访问控制)203。数据从POS成帧器或者以太网MAC 203流动到数据流芯片204,随后流动到开关结构201。数据流芯片202和204分别由数据仓库(动态随机存取存储器(DRAM))205和206和控制仓库(静态随机存取存储器(SRAM))207和208支持。数据流芯片202和204分别与相应的嵌入式处理器复合体(EPC)209和210通信,并且可选地分别与调度器芯片211和212通信。EPC芯片209和210由分别在DRAM中实现的查寻表213和214,以及分别在SRAM中实现的查寻表215和216支持。另外,EPC芯片209还配有协处理器接口和外围组件互连(PCI)本地总线,EPC芯片210还受内容可寻址存储器(CAM)217支持。如果使用调度器芯片211和212,它们分别由在SRAM中实现的流队列218和219支持。
图3更详细地表示了数据流芯片202(204),EPC芯片209(210)和调度器芯片211(212)。EPC芯片209(210)执行负责转发网络通信的软件。它包括实现类似表查寻、控制和计数之类常见操作的硬件辅助功能。数据流芯片202(204)用作通过网络端口和/或开关结构接口,传输和接收通信的主数据通路。它提供相对于较大数据仓库存储器205(206)的接口,以便当通信流过网络处理器子系统时,缓存通信。它把帧报头分派给EPC以便处理,并响应来自EPC的请求,把帧转发给它们的目标目的地。可增加一个可选的调度器芯片211(212),以便提高网络处理器子系统提供的服务质量(QoS)。它允许按照它们指定的QoS水平,单独地调度成千上万个网络通信“流”。
EPC芯片209(210)包括提供网络通信的并行处理的12个二元协议处理器单元(DPPU)301。每个DPPU包含两个“皮码”引擎。每个皮码引擎支持两个线程。线程之间支持零开销上下文转接。皮码指令仓库集成在EPC芯片内。通过数据流接口302从数据流芯片202(204)接收输入帧,接收的输入帧临时保存在分组缓冲器303中。分派功能把输入帧分配给协议处理器301。12个输入队列类别允许帧以具体的线程作为目标,或者被分布在所有线程间。完成单元功能确保在协议处理器301的输出端保持帧顺序。
嵌入式PowerPC微处理器核心304允许执行高级系统管理软件。相对于外部DDR SDRAM的一个18位接口提供高达64M字节的指令存储。提供一个32位的PCI接口,以便连接在其它控制功能上,或者配置诸如MAC或成帧器组件之类的外围电路。
当帧被分派给协议处理器时,基于硬件的分类功能解析帧,以便识别众所周知的层-2和层-3帧格式。分类器的输出被用于在开始各帧的处理之前,预先处理皮码线程的状态。
表格搜索引擎提供实现表格搜索的硬件帮助。表格被保存为Patricia树,同时搜索的终止导致皮码用于保存和流相关的信息的“叶”条目的地址。支持三种表格搜索算法:固定匹配(FM)、最长前缀匹配(LPM)和用于基于复杂规则的搜索的独特软件管理树(SMT)算法。控制保存存储器206(207)提供较大的DRAM表和快速SRMA表,支持数百万流程的线(wire)速度分类。SRAM接口可选地用于内容可寻址存储器(CAM)(图2中的217)的连接,以便提高查寻性能。
通过读写连接在数据流芯片202(204)上的数据仓库存储器205(206),皮码可直接编辑帧。对于更高的性能来说,当通过输出端口传输帧时,皮码也可产生帧变更命令,指示数据流芯片进行修改。
计数器管理器功能帮助皮码保持统计计数器。单片SRAM和可选的外部SRMA(与策略管理器共用)可用于计数以帧两次到达时间间隔的速度发生的事件。外部控制仓库DDR SDRAM之一(与表搜索功能共用)可被用于保持用于以较低速度发生的事件的大量计数器。
策略管理器功能帮助皮码管制输入的通信流。它保持成千上万的具有可选参数和算法的漏桶计量器(leaky bucket meter)。1K管制控制块(PolCB)可保存在芯片上SRAM中。可增加可选的外部SRAM(与计数器管理器共用),以便增大PoICB的数目。
数据流芯片202(204)实现传输和接收接口,所述传输和接收接口可被独立配置成按照“端口”或“开关”接口模式工作。在端口模式下,数据流芯片交换帧,以便连接诸如以太网MAC或Packet-0ver-SONET(POS)成帧器的各种网络媒体。它借助接收控制器305和传输控制器306实现这一点。在开关模式下,数据流芯片以64字节单元段的形式交换帧,以便连接到基于单元(cell)的开关结构上。分别由数据流芯片的传输接口306和接收接口305实现的物理总线是64位数据总线。接口支持工业POS成帧器的直接连接,并且借助现场可编程门阵列(FPGA)逻辑单元,适用于工业以太网MAC和开关结构接口(例如CSIX)。
通过数据库判优器307连接在数据流芯片202上的大数据存储器205(206)提供当输入帧速率超过输出帧速率时,吸收通信突发的“网络缓冲器”。它还用作重新装配IP碎片的储存库,以及用作在类似TCP终止之类应用中,等待可能的重发的帧的储存库。支持多个DRAM接口,以便为端口接口和开关接口提供持续不变的传输和接收带宽。保留其它带宽,以由EPC皮码进行数据仓库存储器的直接读/写。通过缓冲器的链接列表,管理数据仓库存储器205(206)。两个外部SRAM被用于保持缓冲器和帧的链接列表。
数据流芯片202(204)实现诸如“随机提前丢弃”(RED)之类的高级拥塞控制算法,防止数据仓库存储器205(206)的溢出。拥塞控制算法根据均通过EPC接口308传达的,由EPC皮码、EPC管制功能提供的输入,以及数据流和调度器芯片保存的各种队列阈值进行工作。数据流内的“丢弃概率存储器”由EPC皮码保持,并被拥塞控制功能引用,以便允许实现各种标准或专有丢弃算法。
数据流芯片202(204)实现一组丰富的硬件辅助功能,以便根据保存在帧变更控制块(FACB)(图5中所示)中的命令,在帧变更逻辑单元309中实现帧变更。众所周知的变更包括下述帧字段的修改:以太网DA/SA、VLAN、DIX、SAP、SNAP、MPLS、IP TTL、IP TOS字节和IP报头检查和。FACB有两个用途,它保存供多播传输算法之用的基准FCB地址,它还保存指示帧变更逻辑单元309(数据流的传输控制器306的一部分),当通过输出端口传输帧数据时,对帧数据进行修改的帧变更命令。帧变更逻辑单元执行的众所周知的帧修改的例子如下:以太网目的地或源地址重叠,以太网协议类型重叠,多协议标号交换(MPLS)标号插入和删除,因特网协议(IP)有效时间(time-to-live)(TTL)递减等。注意实现本发明并不需要帧变更逻辑单元。即使数据流芯片202(204)不包含帧变更逻辑功能,也可使用相同的多播传输技术。
数据流芯片202(204)实现称为“虚拟输出列队”的技术,在“虚拟输出列队”中,为指定给不同输出端口或目标目的地的帧保持独立的输出队列。该方案防止如果单一输出端口被堵塞,发生“线路前端阻塞”的情况。为每个输出端口保持高优先级和低优先级队列,以便允许保留的和非保留的带宽通信被独立排队。
可选的调度器芯片211(212)通过保持可利用诸如“保证带宽”、“最佳工作”、“峰值带宽”之类各种算法调度的流队列,提供“服务质量”。两个外部SRAM被用于保持成千上万的流队列,同时数十万的帧被列队。调度器芯片211(212)通过允许根据每个流队列阈值丢弃帧,补充数据流芯片的拥塞控制算法。
注意在数据流202(204)、EPC 209(210)和调度器211(212)之间流动的所有信息以称为“消息”的格式被交换。在开关结构201、数据流202和POS成帧器/以太网MAC 203之间流动的信息呈“帧”的形式。消息只被用于数据流、EPC和调度器芯片之间“控制”信息的交换。这种消息的例子包括:分派、排队、中断/例外、数据读取、数据写入、寄存器读取和寄存器写入。消息可由请求或响应组成。
图4中描述了通用消息格式。参见图4,消息格式包含下述部分:
消息ID:消息ID字段是消息的第一个字中的8位编码值,所述消息ID字段唯一地识别消息类型。
消息参数:消息参数字段是消息的第一个字中的24位值,可针对如下所示的各种目的,基于每个消息类型,规定所述消息参数字段:
·可用作消息ID字段的扩展,从而定义其它消息类型。
·可基于每个消息类型,用于进一步限制消息的用途。
·可用于携带“顺序号”或者使响应中返回的数据相关的其它“参考ID”信息。
·在可变长度消息的情况下,可用于规定消息长度。
·可用于携带消息特有的任何其它数据参数。
数据:消息的剩余部分可由从“0”-“N-1”的其它32位“数据”字组成。
多播传输
本节描述多播帧的排队和传输过程。图5图解说明了多播传输的一个例子。这种情况下,多播帧正被传送给三个目的地,于是认为具有三个“实例”。在帧的整个使用期限内,保留最初接收该帧时分配的PCB,并将其称为“基准PCB”501。网络处理器获得另外的FCB(图5中命名为FCB1、FCB2和FCB3)5021、5022和5023,以及缓冲器5031、5032和5033,并把它们链接到初始的基准帧501中,以便产生多播帧传输的每个实例。每个实例随后被排队,以便传输。
当传输每个实例时,放弃每个实例独有的FCB 502和缓冲器503。但是只有在传输了所有实例之后,才放弃基准FCB 501和相关缓冲器5051-5055。由于可通过不同的端口传输帧的各个实例,因此可按照与其排队顺序不同的顺序完成传输。多播传输计数器(MCC)被用于确定何时传送完了所有的实例,以致可放弃基准帧。MCC被保存在基准FCB 501的未用NFA字段中,如图5的左上部中所示。用多播传输中实例的数目初始化多播传输计数器,随后当传输每个多播传输实例时,递减多播传输计数器。当MCC达到零时,通过分别把基准FCB 501及其相关缓冲器5051-5055返回给自由FCB和自由缓冲器队列,放弃基准FCB 501及其相关缓冲器5051-5055
基准FCB 501及其它FCB 5021、5022和5023都来自相同的FCB自由池。当FCB被用作基准FCB时,NFA/MCC字段被用作MCC。当FCB被用作常规FCB(非基准FCB)时,NFA/MCC字段被用作NFA。图1中图解说明了QCB和FCB之间的关系。FCB 5021、5022和5023都被置于队列中以便传输。数据流包括每个输出队列的QCB。每个输出队列一般与一个端口(即经由POS成帧器/以太网MAC的网络通信链路,或者经由开关结构的另一网络处理器)相关。图5中图解说明的这三个多播传输实例中的每一个被排列到一个输出队列中。也可对所有这三个实例排队,以便通过相同端口传输,或者可对所有这三个实例排队,以便通过不同端口传输。但是三个FCB中的每个FCB都将被置于一个帧队列中,以便完全通过一个端口传输。这些FCB中的NFA字段被用于形成队列中的帧的链接列表。但是,基准FCB 501并不包括在任何队列中。基准FCB 501保存用于在传输完成帧的所有实例之后,把初始(基准)帧的缓冲器返回给缓冲器的自由队列的参数。由于基准帧未包括在帧队列中,因此不需要NFA字段来形成链接列表。相反,NFA的这些位被用于存储MCC。基准FCB的地址在帧数据之前保存在FACB中(图5中图解所示),当传输各个帧实例时,用于查找基准FCB的位置。
EPC芯片202执行下述操作,对多播帧的每个实例排队:
1.从自由FCB队列获得FCB 502,并将其分配给该实例。
2.从自由缓冲器队列获得一个或多个缓冲器503,以便包含该实例的FACB和任意独特报头数据。对于多播传输来说,FACB的使用是强制性的。
3.该实例的任何独特数据被写入上面获得的缓冲器503中。多播的不同实例通常具有不同的报头数据。例如,多播的一个实例可能具有以太网报头,因为正通过以太网端口传输该实例,而另一实例需要POS报头,因为正通过POS端口传输所述另一实例。
4.写入与独特实例缓冲器相关的BCB 504,从而产生把BCB504连接到初始“基准帧”的缓冲器上的链接列表。独特实例缓冲器不需被链接到基准帧的第一缓冲器上。如果将从该实例省略基准帧中的一些前导字节,那么可把该实例的独特缓冲器链接到基准帧中除第一缓冲器之外的一个缓冲器上。SBP和EBP值被写入每个BCB 504中,以便反映下一缓冲器中的有效字节。这允许该实例的最后独特缓冲器的BCB 504规定来自基准帧的第一链接缓冲器中的起始字节偏移量,所述起始字节偏移量不同于为其它实例规定的其它字节偏移量。设置TBUF位,指示在其数据被传输之后,是否应立即把下一缓冲器返回给自由缓冲器队列。该实例的最后的独特缓冲器应把其BCB 504中的TBUF位置为零。该实例的所有其它独特缓冲器的BCB 504中的TBUF位将把其TBUF位置为1。
5.网络处理器随后发出排队操作,把该实例释放给数据流202以便传输。作为排队操作的一部分,下述信息被提供给数据流202:
·目标队列编号-规定多播实例将被排到哪个输出队列中。
·FCBA-规定网络处理器分配给多播实例的帧控制块地址(FCBA)。
·BCNT-规定帧的总长度。对于每个多播实例来说,它可不同。
·FBA-规定多播实例中第一缓冲器101的地址。对于多播实例来说,第一缓冲器101总是唯一的。
·SBP/EBP-规定第一缓冲器101中有效数据的起始位置和终止位置。
·类型-规定要传输的帧的类型和格式。对于“多播”帧来说,总是被设置成二进制值“11”。该值意味着1)该帧是一个多播实例,2)第一缓冲器101包含FACB,和3)第一缓冲器101是瞬态缓冲器(TBUF=1)。
·FACB-规定当帧数据被传输时,数据流202将对帧数据施加的变更的帧变更控制块(FACB)信息。FACB可包括关于每个多播实例的不同帧变更请求。但是,每个实例应包括供在传输完所有实例之后,放弃基准帧之用的基准FCB 501的地址。
·多播操作-当对多播实例排队时,网络处理器确定当前排队是多播传输的第一实例、中间实例还是最后实例。
*01-首先多播传输-排队的第一实例被标识为“首先多播传输”。
*10-中间多播传输-如果多播帧由两个以上的实例组成,那么任何中间实例被标识为“中间多播传输”。
*11-最后多播传输-排队的最后实例被标识为“最后多播传输”。
下面描述从接收排队操作到经由目标输出端口传输多播帧实例的数据流芯片的操作:
1.数据流芯片202通过把在排队中提供的FBA和SBP值作为信息将被写入其中的地方的缓冲器地址和偏移量,把FACB信息写入帧的第一缓冲器5021中。
2.数据流芯片202从FACB信息内抽取基准FCB 501的地址。该地址被用于访问基准FCB 501,以便存储MCC值。MCC值被保存在基准FCB 501的NFA字段中(由于基准帧不直接位于任何队列中,因此基准FCB 501的NFA字段未被使用)。排队时,如下更新MCC 506的值:
·如果多播操作为01-首先多播传输,则MCC 506被置为2。
·如果多播操作为10-中间多播传输,那么MCC 506被加1。
·如果多播操作为11-最后多播传输,那么不修改MCC 506。
3.数据流芯片202把FBA、SBP、EBP和类型值写入由在排队中提供的FCBA值指定的FCB 502中。
4.数据流芯片202把帧排列到由在排队中提供的目标队列编号值指定的被请求输出队列中。数据流芯片202如下完成该操作:
a.如果输出队列中先前不存在任何帧,那么把在排队中提供的FCBA值写入输出队列的QCB 104中的头部FCBA和尾部FCBA中(图1)。把在排队中提供的BCNT值写入QCB 104中的头部BCNT中。使QCB 104中的QCNT加1。
b.如果在输出队列中已存在一帧或多帧,那么写入先前位于输出队列的尾部的帧的FCB 502的NFA和BCNT字段。用在排队中提供的FCBA和BCNT值写入NFA和BCNT字段。随后用在排队中提供的FCBA值写入输出队列的QCB 104的尾部FCBA字段(图1)。使QCB104中的QCNT加1。
5.当帧到达输出队列的头部时,使该帧出列,以便通过输出端口传输。从输出队列的QCB 104读取头部FCBA和头部BCNT字段。头部BCNT值被加载到工作字节计数寄存器内,以便在传输帧的过程中使用。头部FCBA值被用于读取位于队列头部的FCB 502的内容。从FCB 502读取的NFA和BCNT值被用于更新QCB 104的头部FCBA和头部BCNT字段(图1)。从FCB 502读取的FBA、SBP、EBP和类型字段被载入工作寄存器中,以便在传输来自于第一缓冲器5041的数据期间使用。随后当其地址被推入自由FCB队列的尾部时,放弃FCB502。使QCB 104中的QCNT减1。
6.从FCB 103读取的FBA、SBP、EBP和类型值被用于定位并读取帧的第一缓冲器101的内容。类型字段指示多播,这意味着存在FACB。于是,随后读取该FACB,并将其传送给帧变更逻辑单元,在帧变更逻辑单元,FACB被用于当帧数据被传输时,对帧数据施加所请求的修改。另外还从FACB抽取基准FCB 501的地址,并将其保存在工作寄存器中,以便在完成帧传输之后使用。随后把来自缓冲器101的帧数据(如果存在的话)置于将通过输出端口传输的输出FIFO(先进先出缓冲器)中。置于输出FIFO中的字节的数目是工作字节计数寄存器和由SBP和EBP值指示的缓冲器101中有效字节的数目中的较小者。随后缩减工作字节计数寄存器,缩减的数目是置于输出FIFO中的数据的字节数。如果工作字节计数寄存器中的值仍然大于零,则从对应于第一缓冲器101的BCB 102读取NBA、SBP、EBP和TBUF值,并将这些值载入工作寄存器,以供下一缓冲器101的传输之用。随后当其缓冲器地址被推入自由缓冲器队列的尾部时,放弃第一缓冲器101。
7.从BCB 102读取的NBA、SBP、EBP和TBUF值被用于定位和读取帧的下一缓冲器101的内容。随后把来自缓冲器101的帧数据置于要通过输出端口传输的输出FIFO中。置于输出FIFO中的字节的数目是工作字节计数寄存器和由SBP和EBP值指示的缓冲器101中的有效字节的数目中的较小者。随后缩减工作字节计数寄存器,缩减的数目是置于输出FIFO中的数据的字节数。如果工作字节计数寄存器中的值仍然大于零,则从当前缓冲器101的BCB 102读取NBA、SBP、EBP和TBUF值,并将这些值载入工作寄存器,以便在下一缓冲器101的传输中使用。如果设置了当前缓冲器101的TBUF位,那么通过把其缓冲器地址推入自由缓冲器队列的尾部,放弃当前缓冲器101。随后重复步骤7,直到工作字节计数寄存器已递减到零为止。
8.在完成帧传输之后,先前保存在工作寄存器中的基准FCB地址被用于读取保存在基准FCB 501的NFA字段中的基准FCB 501中的MCC字段。随后执行下述两个操作之一:
·如果MCC值大于1,则把MCC值减1,并写回基准FCB 501的NFA字段。随后完成该多播实例的传输。但是,由于其它多播实例还没有完成传输,因此不可丢弃基准帧。
·如果MCC值等于1,则把基准FCB 501排列到“放弃队列”中,从而把与基准帧相关的FCB和缓冲器返回给自由队列。随后完成多播帧的所有实例的传输。
静态帧传输也适用于图5。除了不向自由FCB或缓冲器队列返回任何FCB或缓冲器,以及基准FCB 501中的MCC值不被递减之外,静态帧传输等同于多播传输。在必须保留帧的副本,以供稍后重发的情况下,使用静态帧传输。图5中图解说明的每个帧实例可作为静态帧被传输一次或多次(通过把FCB的类型字段设置为二进制“01”以指示静态帧)。当最后一次传输帧实例时,该帧实例作为正常的多播帧被传输(通过把FCB的类型字段设置成“11”以指示多播帧)。从而,每个帧实例可作为静态帧被传输一次到“N”次,之后作为正常的多播帧被传输一次。当每个实例已作为正常多播帧被传送时,来自基准帧的基准FCB 501和缓冲器被返回给自由FCB和缓冲器队列。在EPC芯片209中执行的皮码软件确定是以静态帧的形式,还是以多播帧的形式传输帧实例。
除了不把帧的FCB 103和缓冲器101返回给自由队列之外,数据流芯片202完全类似于“具有FACB的单播”帧类型,传输静态帧。随后,EPC芯片202可以发出指定相同FCB 103重发该帧的另一排队操作。通过指定静态帧类型值,该帧可被重发任意次。可应用静态帧类型,以便允许单播或多播帧类型的重发。在多播的情况下,对于静态帧忽略TBUF参数,从而即使设置TBUF位,也不放弃任何缓冲器。
当进行静态帧的最终重发时,该静态帧被简单地排列成类型二进制“00”(具有FACB的单播),或者类型二进制“11”(多播)。随后如前述各节中所述那样传输该帧,并把FCB 103和相关缓冲器101返回给自由队列。
图6描述了说明本发明的优选实施例的操作的流程图。该过程始于功能框601,EPC 209为数据流芯片202发放信用(credit),以便把帧分派给EPC 209,在判定框602中确定帧是否已被分派。如果否,那么该过程在功能框603中等待。当帧已被分派时,在功能框604中,EPC 209请求从数据流芯片202租用“N”个自由FCB地址。在判定框605中确定FCB地址是否已被传送。如果否,那么过程在功能框606中等待。当FCB地址已被传送时,EPC 209在功能框607中向数据流芯片202请求租用“N”个缓冲器。随后在判定框608中确定缓冲器是否已被传送。如果否,那么过程在功能框609中等待。当缓冲器已被传送时,在功能框610中,EPC 209把新的第一个缓冲器或几个缓冲器链接到初始的第一缓冲器101上。随后在功能框611中,EPC 209利用FACB(帧变更控制块)信息,对每个实例排队。最后,在功能框612中,EPC 209用信号通知数据流芯片202,更新用于每个已传送分组的计数器。对EPC芯片210和数据流芯片202应用类似的过程。这里描述的流程同样适用于进入和外出。如图2中所示,在进入和外出中都使用这三个主要芯片,即EPC芯片、数据流芯片和调度器芯片;只是数据的流动方向不同。在进入和外出之间,诸如多播之类的所有功能都相同。

Claims (9)

1、一种网络处理器上多播传输的方法,包括下述步骤:
把要传输的帧保存在通过链接列表连接在一起的一系列缓冲器中;
使缓冲器控制块与每个缓冲器相关;
使帧控制块与每个帧相关;
把帧接收到队列中,等待被网络处理器分派;
使队列控制块与要传输的帧队列相关;
为每个多播目标分配额外的缓冲器和额外的帧控制块,并使这些额外的帧控制块和与帧相关的初始帧控制块链接;
利用多播计数器确定帧何时已被发送给每个多播目标;
随着帧被发送给每个目标,把分配给每个多播目标的缓冲器和帧控制块返回给自由队列;和
在帧已被发送给所有多播目标之后,把初始缓冲器和帧控制块返回给自由队列。
2、按照权利要求1所述的多播传输方法,其中与每个缓冲器相关的缓冲器控制块形成把多个缓冲器链接到帧中的链接列表,并且包括若干字段,包括多个独立字段以便
保存指向帧中的下一缓冲器的指针;
保存帧的下一缓冲器中数据的第一有效字节的偏移量;
保存帧的下一缓冲器中数据的最后有效字节的偏移量;和
指示帧中的下一缓冲器是应被返回给自由缓冲器或队列,还是应被保留以便继续多播传输。
3、按照权利要求1或2所述的多播传输方法,其中与各帧相关的帧控制块形成把多帧链接到队列中的链接列表,并包含若干字段,包括多个独立字段以便
保存指向队列中下一帧的指针;
保存队列中下一帧的字节总数的计数;
保存帧中第一缓冲器的地址;
保存帧的第一缓冲器中有效数据的起始字节位置;
保存帧的第一缓冲器中有效数据的终止字节位置;和
保存关于要传输帧的格式和类型的信息。
4、按照权利要求1或2所述的多播传输方法,其中把帧接收到队列中的步骤还包括下述步骤:
从自由缓冲器队列的头部弹出一个自由缓冲器地址;
从自由帧控制块队列的头部弹出一个自由帧控制块;
把帧数据写入缓冲器;
把控制信息,包括第一缓冲器地址、第一缓冲器中有效数据的起始字节位置和终止字节位置,写入帧控制块;
把工作字节计数寄存器设置成写入第一缓冲器的字节的数目;
重复该过程,直到整个帧被写入缓冲器为止;和
把该帧添加到输入队列的尾部,等待分派给网络处理器。
5、按照权利要求1或2所述的方法,其中与要传输的帧队列相关的队列控制块包括若干字段,包括多个独立字段以便
保存与位于队列头部的帧相关的帧控制块的地址;
保存位于队列头部的帧中的有效字节的总数的计数;和
保存与位于队列尾部的帧相关的帧控制块的地址。
6、一种支持多播传输的网络处理器,包括:
把要传输的帧保存在通过链接列表连接在一起的一系列缓冲器中的装置;
使缓冲器控制块与每个缓冲器相关,并使帧控制块与每个帧相关的装置;
把帧接收到队列中以等待分派的装置;
使队列控制块与要传输的帧队列相关的装置;
为每个多播目标分配额外的缓冲器和额外的帧控制块,并使这些额外的帧控制块和与帧相关的初始帧控制块链接的装置;
利用多播计数器确定帧何时已被发送给每个多播目标的装置;和
随着该帧被发送给每个目标,把分配给每个多播目标的缓冲器和帧控制块返回给自由队列,并且在帧已被发送给所有多播目标之后,把初始缓冲器和帧控制块返回给自由队列的装置。
7、按照权利要求6所述的网络处理器,其中与每个缓冲器相关的缓冲器控制块形成把多个缓冲器链接到帧中的链接列表,并且包含若干字段,包括多个独立字段以便
保存指向帧中的下一缓冲器的指针;
保存帧的下一缓冲器中数据的第一有效字节的偏移量;
保存帧的下一缓冲器中数据的最后有效字节的偏移量;和
指示帧中的下一缓冲器是应被返回给自由缓冲器或队列,还是应被保留以便继续多播传输。
8、按照权利要求6或7所述的网络处理器,其中与各帧相关的帧控制块形成把多帧链接到队列中的链接列表,并包含若干字段,包括多个独立字段以便
保存指向队列中下一帧的指针;
保存队列中下一帧的字节总数的计数;
保存帧中第一缓冲器的地址;
保存帧的第一缓冲器中有效数据的起始字节位置;
保存帧的第一缓冲器中有效数据的终止字节位置;和
保存关于要传输帧的格式和类型的信息。
9、按照权利要求6或7所述的网络处理器,其中把帧接收到队列中的装置包括:
从自由缓冲器队列的头部弹出一个自由缓冲器地址的装置;
从自由帧控制块队列的头部弹出一个自由帧控制块的装置;
把帧数据写入缓冲器的装置;
把控制信息,包括第一缓冲器地址、第一缓冲器中有效数据的起始字节位置和终止字节位置,写入帧控制块的装置;
把工作字节计数寄存器设置成写入第一缓冲器的字节的数目的装置;
响应整帧被写入缓冲器,把该帧添加到输入队列的尾部以等待分派给网络处理器的装置。
CNB028071778A 2001-04-20 2002-01-28 多播传输的方法及设备 Expired - Lifetime CN1219384C (zh)

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
CN1498480A CN1498480A (zh) 2004-05-19
CN1219384C true CN1219384C (zh) 2005-09-14

Family

ID=25278799

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028071778A Expired - Lifetime CN1219384C (zh) 2001-04-20 2002-01-28 多播传输的方法及设备

Country Status (10)

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

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101453485B (zh) * 2007-12-07 2011-12-07 英业达股份有限公司 使用多播数据流进行数据传输及写入的方法
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
US10286326B2 (en) 2014-07-03 2019-05-14 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
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
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
US11853439B2 (en) 2020-12-30 2023-12-26 Activision Publishing, Inc. Distributed data storage system providing enhanced security

Families Citing this family (86)

* 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
WO2005098425A1 (en) * 2004-04-07 2005-10-20 Axiogenesis 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
KR100717239B1 (ko) * 2005-06-22 2007-05-11 엔에이치엔(주) 동일한 멀티캐스트 그룹에 속하는 구성원 서버들 간의신뢰성 있는 통신을 제공하기 위한 방법 및 장치
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
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
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
US7286661B1 (en) 2007-05-01 2007-10-23 Unison Technologies Llc Systems and methods for scalable hunt-group management
US20080273678A1 (en) 2007-05-01 2008-11-06 Igor Balk Systems and methods for phone call 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
US20090164919A1 (en) 2007-12-24 2009-06-25 Cary Lee Bates Generating data for managing encounters in a virtual world environment
CN101489184B (zh) * 2008-01-14 2010-12-08 华为技术有限公司 区分小区内子帧状态的方法、装置以及系统
CN101222344B (zh) * 2008-01-23 2010-12-29 中兴通讯股份有限公司 文件组播传输方法和系统
JP5159375B2 (ja) 2008-03-07 2013-03-06 インターナショナル・ビジネス・マシーンズ・コーポレーション メタバースにおけるオブジェクトの真贋判断システム、方法及びそのコンピュータ・プログラム
US7895260B2 (en) * 2008-07-28 2011-02-22 International Business Machines Corporation Processing data access requests among a plurality of compute nodes
KR101326983B1 (ko) * 2009-12-21 2014-01-15 한국전자통신연구원 트래픽 제어 장치 및 방법
US9205328B2 (en) 2010-02-18 2015-12-08 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US8365186B2 (en) 2010-04-14 2013-01-29 International Business Machines Corporation Runtime optimization of an application executing on a parallel computer
US9682324B2 (en) 2010-05-12 2017-06-20 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
US8504730B2 (en) 2010-07-30 2013-08-06 International Business Machines Corporation Administering connection identifiers for collective operations in a parallel computer
CN102377576B (zh) * 2010-08-06 2014-09-17 高通创锐讯通讯科技(上海)有限公司 多播的实现方法
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 (zh) * 2011-07-19 2017-09-29 中兴通讯股份有限公司 交换网络芯片的信元处理方法及装置
US9250948B2 (en) 2011-09-13 2016-02-02 International Business Machines Corporation Establishing a group of endpoints in a parallel computer
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
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps 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
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10376781B2 (en) 2015-10-21 2019-08-13 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
CN105471837A (zh) * 2015-11-09 2016-04-06 北京捷思锐科技股份有限公司 信息处理方法及装置
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
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
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10861079B2 (en) 2017-02-23 2020-12-08 Activision Publishing, Inc. Flexible online pre-ordering system for media
CN108989840B (zh) * 2017-06-02 2020-10-16 上海数字电视国家工程研究中心有限公司 适用于高速运动接收的数据帧的设计方法和传输系统
US10818060B2 (en) 2017-09-05 2020-10-27 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
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
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
US10981051B2 (en) 2017-12-19 2021-04-20 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
US10864443B2 (en) 2017-12-22 2020-12-15 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US11278813B2 (en) 2017-12-22 2022-03-22 Activision Publishing, Inc. Systems and methods for enabling audience participation in bonus game play sessions
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
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
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
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
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
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
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
US11794107B2 (en) 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games
CN115378887B (zh) * 2022-07-05 2024-01-23 西安电子科技大学 一种时间触发以太网交换机tt业务交换装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0365731B1 (en) * 1988-10-28 1994-07-27 International Business Machines Corporation Method and apparatus for transferring messages between source and destination users through a shared memory
EP0622922B1 (en) * 1993-04-29 2000-11-29 International Business Machines Corporation Method and device of multicasting data in a communications system
JP3486946B2 (ja) 1994-03-16 2004-01-13 富士通株式会社 マルチキャスト通信中継装置
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 (ja) * 1995-12-06 1999-01-06 日本電気株式会社 Atmスイッチ及びその制御方法
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

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10284454B2 (en) 2007-11-30 2019-05-07 Activision Publishing, Inc. Automatic increasing of capacity of a virtual space in a virtual world
CN101453485B (zh) * 2007-12-07 2011-12-07 英业达股份有限公司 使用多播数据流进行数据传输及写入的方法
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US10286326B2 (en) 2014-07-03 2019-05-14 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
US10322351B2 (en) 2014-07-03 2019-06-18 Activision Publishing, Inc. Matchmaking system and method for multiplayer video games
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
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
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
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
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
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
US10232272B2 (en) 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
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
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
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
US11853439B2 (en) 2020-12-30 2023-12-26 Activision Publishing, Inc. Distributed data storage system providing enhanced security

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1219384C (zh) 多播传输的方法及设备
CN1152532C (zh) 有效的输出请求分组交换设备和方法
JP5640234B2 (ja) マネージド・ネットワークでのレイヤ2のパケット集約及び断片化
CN113711173A (zh) 促进网络接口控制器(nic)中的数据请求管理的系统和方法
US7852846B2 (en) Method and apparatus for out-of-order processing of packets
CN1151639C (zh) 连网系统
US6937606B2 (en) Data structures for efficient processing of IP fragmentation and reassembly
CN1086886C (zh) 重排序方法和设备
US8051212B2 (en) Network interface adapter with shared data send resources
US8270401B1 (en) Packet routing and switching device
JP3448067B2 (ja) ネットワークアダプタのためのネットワークコントローラ
US20080259928A1 (en) Method and Apparatus for Out-of-Order Processing of Packets using Linked Lists
CN1770734A (zh) 网络装置的通信量控制方法
CN1689278A (zh) 网络拥塞控制方法和装置
CN1723439A (zh) 用于配置网络转发元件上的数据层行为的装置和方法
AU2003217319A8 (en) Services processor having a packet editing unit
CN1402480A (zh) 介质访问控制桥路的地址管理方法和该桥路
US11677676B1 (en) Shared traffic manager
CN1829200A (zh) 用于在网络处理器中记帐的装置和方法
US20050105532A1 (en) Router for scheduling packet and method therefor
CN114521253B (zh) 用于固态驱动器中的输入输出确定性的双层确定性进程间通信调度器
US7733775B2 (en) Method and apparatus for improving data transmission in router fabric cards through pseudo-synchronous data switching
CN1502198A (zh) 通过将限定符插入控制块中链接帧数据
CN1917478A (zh) 转发报文的处理方法及处理模块
US20120265883A1 (en) Multiple overlapping block transfers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: ACTIVISION PUBLISHING COMPANY

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION

Effective date: 20130618

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20130618

Address after: American California

Patentee after: ACTIVISION PUBLISHING, INC.

Address before: American New York

Patentee before: International Business Machines Corp.

CX01 Expiry of patent term

Granted publication date: 20050914

CX01 Expiry of patent term