CN100534052C - 使用反模式匹配的网络消息处理 - Google Patents

使用反模式匹配的网络消息处理 Download PDF

Info

Publication number
CN100534052C
CN100534052C CNB2004800331808A CN200480033180A CN100534052C CN 100534052 C CN100534052 C CN 100534052C CN B2004800331808 A CNB2004800331808 A CN B2004800331808A CN 200480033180 A CN200480033180 A CN 200480033180A CN 100534052 C CN100534052 C CN 100534052C
Authority
CN
China
Prior art keywords
pattern
pattern matching
message
indicating device
frame
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 - Fee Related
Application number
CNB2004800331808A
Other languages
English (en)
Other versions
CN1879354A (zh
Inventor
哈罗德·M·马丁
卡洛斯·A·格里夫斯
唐·Q·阮
乔斯·M·努涅斯
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.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
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 Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of CN1879354A publication Critical patent/CN1879354A/zh
Application granted granted Critical
Publication of CN100534052C publication Critical patent/CN100534052C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • 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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]

Landscapes

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

Abstract

在信息处理系统中使用散列和模式匹配,处理来自网络如基于以太网络(图2,180,210,220,230)的消息。使用散列和模式匹配增加消息接受和拒绝的效率,而不增加基于软件的处理器任务。对由信息处理系统接收的消息执行散列函数和模式匹配功能,以及基于该散列结果和模式匹配结果的至少一个有选择地接受该消息。对于模式的存在和模式缺少,输入消息可以被检索。对于多个模式的存在,输入信息可以被检索。模式匹配的结果可以不仅用于接受和拒绝消息,而且用于其它后接收任务,如根据识别的有关优先级或具有特定模式匹配的消息的绝对关键程度,的选择性存储输入信息。

Description

使用反模式匹配的网络消息处理
技术领域
本发明涉及网络通信,并且更具体地,涉及处理通过如以太网(Ethernet)的网络接收的消息。
背景技术
局域网(LAN)、广域网(WAN)及其它类型的网络典型地包括根据基于各种分组的通信协议通过连接操作耦合的信息处理系统。例如,以太网IEEE802.3协议是基于载波-检测多址接入/冲突检测(CSMA/CD)方法的广泛地使用的LAN协议。因为以太网和IEEE 802.3协议是类似的,并且可以共存在同一LAN上,两者有时都称为以太网。10/100以太网提供从10至100兆位每秒(Mbps)的增加的以太网速度以及对于主干网和服务器连接提供简单的、有成本效益的选择。千兆位以太网是另一种以太网协议,建立在基本的以太网协议上,但是在10/100以太网上增加十倍速度,达到1000Mbps,即一千兆位每秒(Gbps)。
网络中的装置常常接收用于它们的消息和不用于它们的消息。因此,这种装置必须本地地分析每个输入消息,以决定它们是否应该接受该消息。典型地,每个装置具有地址,该地址必须以某种形式与每个接受信息中的地址相比较。因为地址的长度和大量地址被比较,准确的地址匹配在计算上是密集的。因为,一个装置可以接受用于其它大量装置的消息,以及非常大量的消息可以被接收,以及网络的速度增加,因此处理(例如,接受或拒绝)输入消息的问题在网络中的各个装置处可能引起瓶颈,并减慢整体性能。传统的目标地址识别方法需要在比媒体访问控制(MAC)级更高的开放系统互连(OSI)级执行后过滤以及需要有效的软件和通用处理硬件介入。有些技术采用内容可寻址存储器(CAM),但是这种技术通常是昂贵的,过多地消耗功率以及不灵活。因此,需要增强处理输入消息的性能。
除仅仅接受或拒绝输入消息之外,每个装置一般地具有需要执行的各种任务,以响应接收该消息。由此,由该消息接收的有些数据需要被存储和在短时间内访问。因此,通过预处理接收的消息(例如,在该消息被处理器或软件驱动系统资源检查之前通过分类输入的信息)以释放用于其它任务的这种资源的使用和减小访问关键性的或高优先级的帧的等待时间,从而增强这种消息的处理将是有利的。
附图说明
通过参考附图可以更好的理解本发明,以及其大量目的、特征和优点对所属领域的技术人员来说是显而易见的。在不同图中使用的相同参考标记表示类似的或相同的内容。
图1是说明根据本发明的实施例的信息处理和通信系统的框图。
图2是说明图1系统的分组控制器的接收部分的框图。
图3是说明可由图1的系统接收和分解(parsable)的示例性消息地址格式的框图。
图4是说明图1的示例性缓冲区描述符队列的框图。
图5是说明图1的示例性模式匹配和模式匹配属性寄存器的框图。
图6是说明通过图1的系统处理接收消息的方法流程图。
图7是说明用于散列和模式匹配由图1的系统接收的消息地址的部分的方法流程图。
图8是说明用于散列和模式匹配由图1的系统接收的消息地址的方法的另一部分的流程图。
图9是说明用于在图7的所示流程内模式匹配由图1的系统接收的消息地址的方法流程图。
图10是说明在图1的系统内处理接受消息的方法的流程图。
图11是说明用于通过图1的系统提取和隐藏部分消息的方法流程图。
图12是使用散列和/或模式匹配处理的大量地址的列表。
具体实施方式
下面的论述是用来提供本发明的至少一个例子的详细描述以及不应该认为是发明本身的限制。相反,许多变化可以属于本发明的范围内,在本说明书之后的权利要求中适当地限定了本发明的范围。
图1是根据本发明的实施例的信息处理和通信系统100的框图。系统100包括处理器110、高速缓存120、存储器130、系统总线140、外围设备150和分组控制器160。处理器110、高速缓存120、存储器130、外围设备150和分组控制器160全部通过系统总线140耦合。系统100可以是Ethernet、Gig-Ethernet和/或XGig-Ethemet控制器,或与其兼容其它控制器,可以是网络开关或路由器,或用于网络内通信的其它装置类型。
分组控制器160包括总线接口单元(BIU)170、接收部分180、发送部分185和媒体访问控制器(MAC)190。总线接口单元170耦合到系统总线140。总线接口单元170通过连接部分172耦合到接收部分180,以及通过连接部分174耦合到发送部分185。MAC 190通过连接部分192耦合到接收部分180,以及通过连接部分194耦合到发送部分185。MAC190被耦合到物理层硬件,以通过物理(PHY)连接部分198接收消息,如来自其它装置的分组。
消息在MAC 190处接收并传给接收部分180。消息能不能被接收取决于地址识别、散列、模式匹配、或散列和模式匹配(例如,如下面至少参考图2-9所述)。来自接受消息的信息被传给存储器130。通过特别适于被处理器110或其它系统资源快速访问的模式匹配可以识别某些信息,其中从发送给存储器130的普通消息数据提取这种信息,并且将该提取数据隐藏在高速缓存120中(例如,如下面至少参考图2-6和10-11所述)。
公开的目标地址识别协议将后过滤需要最小化,以及可以在媒体访问控制级执行,代替需要在较高的OSI层软件和硬件的干预。对于地址的某些设置,用户可以发现一组模式,在MAC级得到理想的过滤。确定性算法可以用来产生需要的模式,以保证理想的散列-时间过滤。公开的协议也允许在整个接受的帧中检索模式匹配,而不仅仅在目标地址内,以改善散列-时间过滤的结果。
存储器130包括用于存储输入消息的帧数据缓冲区134和用于跟踪存储消息的缓冲区描述符队列132,如下面更详细地描述。高速缓存120包括可以存储一个或多个缓冲区描述符队列122的存储位置,以及用于隐藏(即,存储)提取数据124的存储位置,该提取数据124用于后续被处理器110使用。提取数据是根据在此描述的某些模式匹配协议,从输入消息的普通帧数据提取的数据,用于存储在高速缓存120中。提取数据可以是,例如,关键的数据、服务质量(QOS)等级数据或其它高优先级数据,对于这些数据,加快的访问时间可能是合符需要的。存储器130和高速缓存120可被处理器110访问以及甚至可以被系统100内的其它装置或处理器(未示出)访问。
图2是说明系统100的分组控制器160的接收部分180的框图。接收部分180包括直接存储器访问(DMA)控制器210、接收FIFO220和地址/数据过滤器(ADP)230。ADF 230被耦合,以接收来自MAC 190的消息和有选择地将这种消息给提供FIFO 220。下面参考图3更详细地论述可通过地址/数据过滤器230接收的帧和示例性消息分组。DMA 210被耦合,以在FIFO控制器222的控制之下,接收来自接收FIFO 220的消息信息(例如,地址和数据信息,以及消息过滤结果,例如,如下所述的模式状态信息)。
ADF230包括临时队列234、模式匹配逻辑232和地址识别和散列逻辑238。临时队列234、模式匹配逻辑232和地址识别和散列逻辑238的每一个被耦合,以接收来自MAC 190的消息(例如,帧)。临时队列234被耦合,以接收来自模式匹配逻辑232和地址识别和散列逻辑238的消息过滤结果信息,以及提供该帧(或其部分)和该消息过滤信息到响应于此的接收FIFO 220。
在没有模式匹配和散列逻辑的情况下,在每个接收消息的目标地址和系统100或系统100被配置为接收消息的其它系统的地址之间将不得不执行直接的和完全的地址比较。这种完全地址比较通常涉及以某种形式中断处理器110,由于该比较通常在软件的控制之下发生。
但是,在说明的实施例中,提供模式匹配逻辑232和散列逻辑238以减小完全地址比较的发生频率,由此允许释放处理器110以执行其它任务。模式匹配逻辑232对于接收的帧执行模式匹配分析,以允许根据模式匹配结果选择性地接收帧。模式匹配在模式匹配(PM)寄存器233中存储的值(例如,控制位或字段)的控制之下执行。散列逻辑238对于接收帧的地址执行散列分析,以允许根据散列冲突或失败结果选择性接地收帧,进一步增加在对于具有高接收概率的地址执行完全地址比较的可能性。
模式匹配逻辑232的PM寄存器233包括16个项目。每个项目包括五个32-位寄存器。参考图5,每个项包括模式(PM DATA)、模式掩蔽(PM MASK)和模式匹配控制(PM CONTROL)字段。模式匹配控制字段包括匹配索引(MI)字段、连续检索允许(CSE)字段、反转(TV)字段、级联模式(CP)字段和模式匹配接受控制(PMAC)字段。
PM DATA字段包括用于与接收帧相比较的位模式。如果在帧中发现PM DATA位模式(例如,4字节模式),那么检测到模式匹配。如果在该帧中未发现PM DATA位模式,那么未检测到模式匹配。在所示的实施例中,PM DATA字段是32位长。PM MASK字段包括当比较发生时导致模式中的某些位将被掩蔽的位。例如,当PM MASK被适当地设置时,部分帧内的供应商识别位可以被忽略。
匹配索引(MI)字段表示对于相应的PM DATA,在接收的帧中模式匹配应该从多深开始。例如,MI字段可以包括6个位,表示检索开始范围从0-256位。在一个实施例中,MI从接收帧的开始(从DA字段到包含的PCS)以4字节的倍数规定该索引,从此处执行模式匹配。如果MI被清除,那么目标地址的第一个4-字节提供模式匹配的起始点。在目前论述的实施例中,用于MI的最大编程值是63(252-字节偏移量)。用于每4-字节模式的MI值是优先的,即使当允许连续或非连续模式时。
连续检索允许(CSE)字段影响发现匹配时采取行动的类型。具体地,CSE位表示在模式匹配时是否应该立即采取行动或在模式匹配时是否应该发生进一步模式匹配检索。一组CSE位表示如果在一个项目上发生匹配,那么模式匹配应该继续。例如,如果模式匹配被发现和连续检索被允许,那么模式匹配逻辑232从PM寄存器233的其它寄存器继续检索PM DATA的其它匹配,直到256-字节最大值。如果没有遇到其它匹配,那么使用对应于最后匹配项的属性。对于基于模式匹配的最终接受,所有继续的模式不准被拒绝。例如,第一模式匹配必须至少有条件地接受,所有后续模式必须接受,或既不接受也不拒绝,以便接受该帧。如果后续模式匹配拒绝发生,那么CSE的值被忽略,该帧被拒绝,并且检索被中止。如果模式匹配被发现和连续检索被禁止(CSE=0),那么用于所有其它模式的检索被模式匹配逻辑232中止,该帧被接受或拒绝,或基于发生的特定模式匹配的事实做出其它决定。
级联模式(CP)字段允许在PM寄存器233的每个项目中可用的不止32位PM DATA的比较。如果CP位被设置,那么紧随当前PM寄存器的PM寄存器被认为是该模式的继续,并且下一个PM DATA项被级联到当前PM DATA项。在此情况下,在用于模式匹配发生的帧中必须发现每个PM DATA项,但是两组匹配位可以在帧内的任何地方,根据它们的各个MI。如果CP位未被设置,那么没有模式级联发生。最后的PM寄存器233的CP字段被清除,而与其中存储的值无关。其中设置CP的最小数字PM寄存器233包含模式匹配控制和用于级联模式的属性信息(除MI之外)。对于每个级联模式,MI字段必须被设置为合适的4-字节倍数,以免所有模式试图匹配该帧的第一个4-字节(如果MI被清除)。
反转(IV)字段允许该模式与帧以真值或补码形式的比较。例如,当反转未被设置(IV=0)时,仅仅当数据匹配发生时(例如,在接收帧中发现PM DATA)模式匹配发生。当反转被设置(IV=1)时,仅仅当数据匹配不发生(例如,在接收帧中未发现PM DATA)时,模式匹配发生。
PMAC字段基于模式匹配控制帧的过滤。PMAC存储两个位,表示(i)用于相应模式的模式匹配是否被允许,以及ii)如果对于相应模式,模式匹配被允许,那么模式匹配的效果一次完成。例如,如果PMAC字段是00,那么用于特定项目的模式匹配被禁止,对于该相应的模式没有模式匹配发生,以及模式匹配逻辑232被释放,以移到在下一个PM寄存器233中的下一个模式。如果PMAC字段不是00,那么模式匹配被允许。如果PMAC字段是11,那么在模式匹配时拒绝该帧。如果PMAC字段是10,如果连续检索被禁止(CSE=0),那么该帧被绝对地接收,或如果连续检索被允许(CSE=1),那么该帧被有条件地接受。如果PMAC字段是01,那么该帧既不被接受又不被拒绝。在此情况下,如果匹配发生,那么该模式不是用于接受或拒绝帧的标准,并且收集集信息,用于与模式匹配结果相关的后处理,但是基于该收集的信息,不做出接受或拒绝该帧的决定。后处理可以包括对于基于上述模式或基于目标地址识别接受的帧归档或提取数据,或可以包括其它分类功能。之后通过散列过程、其它模式匹配过程等,可以接受该帧。
再次参考图2,DMA 210包括接收缓冲区211、提取引擎212、模式属性寄存器213、缓冲区描述符和归档处理器(BDPP)214、状态寄存器215以及缓冲区描述符地址寄存器216。在此论述的逻辑块是示例性的,以及不同的实施例可以具有不同功能的逻辑部分。例如,在一个实施例中,DMA 210可以预想为包括存储控制器,用于执行提取、缓冲区描述符处理和归档处理。
接收缓冲区211被耦合,以接收来自接收FIFO 220的消息帧。状态寄存器215被耦合,以接收来自接收FIFO 220的模式状态(PS)信息。模式状态包括模式数目(例如,PM寄存器数目)和相应的模式冲突指示。FIFO控制器222被耦合到DMA 210,以控制这种信息的传送。接收缓冲区211被耦合,以通过连接部分172将帧数据提供到总线接口单元170。
提取引擎212被耦合,以提供提取控制信息到接收缓冲区211,表示提取哪个帧信息以转发至高速缓存120。提取引擎212被耦合,以通过连接部分172向总线接口单元170提供与提取信息相关的属性。例如,提取引擎212表示被接收FIFO发送到存储器和或高速缓存的数据是否被提取或是正常的,以及它是否被存储在存储器130中或者既存储在存储器130中又隐藏在高速缓存120中以及与该数据相关的任意优先级信息。状态寄存器215提供模式状态信息到提取引擎212,以表示哪一帧数据应该被提取。提取引擎212也被耦合,以接收来自模式属性寄存器213的提取控制信息。例如,模式属性寄存器213提供提取索引和提取长度给提取引擎212(下面论述的)。
模式属性寄存器213被耦合,以提供归档信息给缓冲区描述符地址寄存器216,归档信息表示在哪个缓冲区队列中归档该帧数据(PMF)。状态寄存器215被耦合,以向BDFP214提供模式匹配信息,如实际匹配模式的指示。缓冲区描述符地址寄存器216被耦合,以提供用于每个缓冲区描述符队列(BDQ 410,420,430和440)的基本地址以及每个队列指针(BDQ_BASE,BDQ_CURRENT和BDQ_NEXT)和缺省队列到BDPP 214。BDFP 214被耦合,以通过连接部分172提供地址和数据信息到总线接口单元170。
模式属性寄存器被用户写入,以规定匹配发生时的动作,在何处归档帧信息,何时提取帧信息以及怎样存储接收的帧和它们相关的缓冲区描述符。在目前论述的实施例中支持总共16个寄存器或项目。一个这种寄存器(或另外的寄存器)可以被指定为缺省的寄存器并且包括规定不发生模式匹配时的动作的信息。参考图5,每个项目包括提取的高速缓存(例如,L2高速缓存)写入类型(ELCWT)、缓冲区描述符高速缓存写入类型(BDLWT)、队列分类(QC)、模式匹配文件(PMF)、模式匹配提取(PME)、提取索引(E1)和提取的长度(EL)。可以包括其它位字段,以允许或支持任意数量的其它功能。例如,可以包括数据侦听位,以支持接收帧到存储器的侦听或接收缓冲区数据存储器访问的侦听。在此情况下,当访问存储器时,高速缓存可以侦听对存储器的读或写访问,以便高速缓存可以检测该地址,然后采取适当的行动,如使高速缓存中存储的数据的复制无效,更新来自存储器的高速缓存数据,或与存储器中存储数据基本上并行地将该数据存储在高速缓存中。模式属性寄存器是用于论述的信息内容的示例性存储单元。其它实施例可以包括用于存储这种信息内容的其它结构,这种信息内容包括其它位结构、分配的寄存器位置等。
提取的高速缓存写入类型(ELCWT)字段规定提取数据执行的写入事务类型。如果模式匹配提取(PME)字段被设置,相应的模式匹配发生,并且提取长度(EL)字段是非零的,那么提取写入事务发生。在一个实施例中,如果ELCWT是00,那么不执行分配;如果,ELCWT是01,那么不发生提取;如果ELCWT是10,那么分配高速缓存线路;以及如果ELCWT是11,那么高速缓存线路被分配并锁定。在级联模式结构的情况下,使用的ELCWT来自最小数字模式属性寄存器。利用侦听执行对高速缓存的写入。
缓冲区描述符高速缓存写入类型(BDLWT)字段规定用于接收帧的缓冲区描述符执行的写入事务类型。如果模式匹配发生,这些发生,与PMF或PME的值无关。利用侦听执行对高速缓存的写入。在一个实施例,如果BDLWT是00,那么不执行分配;如果BDLWT是10,那么高速缓存线路被分配;以及如果BDLWT是11,那么高速缓存线被分配并锁定。
模式匹配提取(PME)字段表示基于模式匹配的提取是否被允许。如果,模式匹配提取位被设置(PME=1),那么提取被允许。如果模式匹配提取位未被设置(PME=0),那么提取被禁止。
队列分类(QC)规定该接收队列分类,其中如果PMP字段被设置和相应模式匹配发生,那么归档输入帧。在级联模式结构的情况下,使用的QC来自第一个4-字节模式。如果QC是00,那么队列#0被使用,以及使用在被BDQ0_BASE指向的地址处开始的缓冲区描述符。如果QC是01,那么使用队列#1,以及使用在被BDQ1_BASE指向的地址处开始的缓冲区描述符。如果QC是10,那么使用队列#2,以及使用在被BDQ2__BASE指向的地址处开始的缓冲区描述符。如果QC是11,那么使用队列#3,以及使用在被BDQ3_BASE指向的地址处开始的缓冲区描述符。
模式匹配文件(PMF)表示QC字段是否用来决定帧在存储器130中处被归档的位置。例如,如果PMF=0并且匹配发生,那么缺省的属性寄存器中的QC字段用来决定该帧被归档的位置。例如,如果PMF=1和匹配发生,那么对应于匹配模式的寄存器中的QC字段用来决定该帧被归档的位置。
模式属性寄存器213也由用户写入,以规定如果模式匹配发生和寄存器213中的模式匹配提取(PME)位被设置,将使用的提取索引和提取长度。提取索引(E1)指向接收帧内的第一字节,从该字节开始提取数据。如果模式匹配提取字段(PME=1)被设置和相应的模式匹配发生,那么DMA控制器210使用该字段执行提取。在级联模式结构的情况下(CP=1),使用的EL来自最小数字寄存器(例如,级联链中的第一寄存器)。提取长度(EL)字段规定从该接收帧提取的字节数目。如果为相应的模式匹配设置模式匹配提取字段(PME=1),那么DMA控制器210使用该字段执行提取。在级联模式结构的情况下,使用来自最小数字模式属性寄存器的EL。如果EL是零,那么不发生提取。
图4是说明多个示例性缓冲区描述符队列BDQ0、BDQ1、BDQ2至BDQM的框图。每个缓冲区描述符队列包括几个缓冲区描述符,如为BDQ0示出的存储位置:BD0 412、BD1 414、BD2 416至BDN418。每个缓冲区描述符队列具有环状结构以及通过三个指针访问:BDQ_BASE、BDQ_CURRENT以及BDQ_NEXT。每个缓冲区描述符存储位置存储与存储器130和/或高速缓存120中存储的接收帧信息有关的信息。例如,这种信息包括状态和控制452、数据长度454、数据缓冲指针456、模式匹配状态458、相关的提取索引460、提取长度462和字节计数464。每个缓冲区描述符队列可以表示用于相应帧的不同优先级。如图1所示,缓冲区描述符队列被存储在存储器130中,有时也是存储在高速缓存120中,如果BDLWT被适当地设置。可以通过或者不通过进行帧数据提取存储缓冲区描述符队列。
图6是说明系统100的示例性操作流程的流程图。在操作610过程中一旦接收帧,在决定620过程中,ADF 230决定帧是否应该被接受。在此将至少参考图7-9进一步论述用于接收帧的处理。如果在决定620过程中,该帧不被接受,那么在操作610,ADP 230等候更多的帧。如果在决定620过程中,该帧被接受,那么在操作630过程中,帧和模式状态从临时性队列234提供给接收FIFO220。在该帧和模式状态传至接收FIFO 220之后,在操作640过程中,模式状态和帧数据被提供给DMA210。一旦模式已被发送到DMA 210,那么在操作650过程中,DMA210可以将该帧数据存储在存储器中。此外,在操作650过程中,匹配模式匹配寄存器233中的允许模式的任意数据被提取并隐藏在高速缓存120中。在此将至少参考图10和11进一步论述用于存储帧数据和隐藏提取的帧数据的处理。
图3说明在接收帧操作610过程中,具有可被地址/数据过滤器230接收的帧的示例性消息分组。所示的格式与以太网/IEEE802.3标准消息相兼容。消息300包括前导(preamble)、开始帧定界符(SFD)和帧。前导和开始帧定界符提供建立信息,以辅助系统接收和处理该帧。前导是用于接收器定时同步的一和零交替的7字节字段,。例如,每个字节包含值0x55。开始帧定界符表示帧的开始。用于开始帧定界符的示例性值是0xD5(10101011二进制,因为位排序首先是最低有效位)的序列。所示的帧具有从64-1518字节的长度,以及包括6字节目标地址(DA)、6字节源地址、2字节类型/长度字段、46-1500字节逻辑链路控制(LLC)帧和4字节帧校验序列。
帧的目标地址包括3字节供应商字段和3字节用户值。用户值的第一位识别该地址,如单个地址(0)或组地址(1)。第二位表示该地址是否是本地限定(1)或全球-限定(0)。如图所示,源和目标地址包括48位。其它实施例可以使用不同的地址,如在IEEE 802.3规范的早期版本中使用16位地址。
类型/长度字段对应于以太网类型字段和/或IEEE802.3长度字段。类型字段表示帧的其余部分中使用的协议(例如,TCP/IP)。长度字段规定帧的数据部分的长度。通常,长度字段是唯一的,来自以太网中使用的任意类型字段,以便于在同一网络上使用以太网和IEEE802.3帧。类型字段被等于或大于1536(0x0600)但是小于65535(0xPFFF)的十进制数识别。如果该数字在0和1,500之间(0x0000至0x05DC),那么该字段表示MAC客户数据的长度。在所示的实施例中,从1,501至1,536(0x5DD至0x5ff)的范围未被定义。
逻辑链路控制(LLC)负责给网络层提供服务,与媒体类型如FDDI、以太网、令牌环等无关。LLC层利用LLC协议数据单元(PDU),以便在媒体访问控制(MAC)层和协议栈的上层之间通信。三个变量决定通过LLC-PDU访问到上层中。该变量包括目标服务接入点(DSAP)、源服务接入点(SSAP)和控制变量。DSAP地址规定为上层提供协议信息的站点内的唯一标识符。SSAP为源地址提供相同的信息。
LLC帧包括前导和信息字段。前导包括DSAP字段、SSAP字段和控制字段。信息字段包括数据和可选择的填充。通常仅当数据小于46八位组/字节时,为了保证如IEEE 802.3标准中规定的64八位组的最小帧尺寸,那么需要填充。在802.3x中,数据字段的最初的两个八位组用作操作码(OP)(pause=0x0001)以及第二个两个八位组用来传送暂停时间(PT)参数(pausetime=用于导通的0x0000和用于截止的0xFFFF)。此外,第三个两个-八位组字段可以用于延长的暂停控制参数(PTE)。代替LLC,以太网帧可以使用具有类似字段的不同协议。因为这些字段的使用随着使用的协议而变化,检查它们和报告它们内容的能力可以显著地加速以太网帧处理,以及通过使用模式匹配可以增强这种能力。
帧-检查序列(PCS)规定在除前导、SFD和CRC之外的所有字段上使用标准CCITT-CRC多项式获得的标准32-位循环冗余校验(CRC)。
图7和8是说明用于使用模式匹配散列过滤消息的方法的流程图。参考图7,在操作610过程中,在临时队列234处接收输入帧之后,模式匹配逻辑232访问PM寄存器233以及接着选择各个项目,以决定在临时队列234中的帧信息中是否包含PM寄存器233中存储的模式。
例如,ADF 230检查包括模式匹配允许位(PMEN)的ADF全局控制寄存器,以决定模式匹配是否被允许。如果模式匹配不被允许(PMEN=0),那么流程进行至组地址决定715。如果模式匹配被允许(PMEN是非零的),那么模式匹配处理710开始。如果模式匹配处理710导致帧被接受或拒绝(如下面参考图9进一步详细所述),那么流程从方框710通过所示的各个“接受”或“拒绝”流程图节点进行到图8的各个接受帧操作860或拒绝帧操作870。如果模式匹配处理710没有导致做出帧被接受或拒绝的决定,那么流程从模式匹配处理710通过所示的“没有决定/没有模式匹配检测”节点进行到上述的组地址决定715。
在组地址决定715过程中,接收部分180决定该接收帧中的地址是否是组地址。在目前论述的实施例中,帧的用户值的第一位识别该地址为单个地址(0)或组地址(1)。如果该地址不是组地址,那么流程进行至站点地址决定720。如果该地址是组地址,那么流程进行至广播地址决定725。
在站点地址决定720过程中,接收部分180通过执行精确的48位与帧数据相比较,决定该接收帧中的地址是否是站点地址。如果该地址被决定是站点地址,那么流程从方框720通过所示的“接受”流程图节点进行到图8中的接收帧操作860,以及在接收帧操作860时接收帧。如果该地址未决定为站点地址,那么流程进行至散列冲突决定740。
在广播决定725过程中,接收部分180决定该接收帧中的地址是否是广播地址。示例性广播地址是0xFFFFFF-FFFFFF的地址。如果该地址被决定是广播地址,那么流程进行至广播允许决定730。如果该地址未被决定是广播地址,那么流程进行至上述的散列冲突决定740。
在广播允许决定730过程中,接收部分180决定广播功能是否被允许。当ADF全局控制寄存器位BC_REJ被复位时,广播功能被允许。如果广播功能被允许,那么流程从方框730通过所示的“接受”流程图节点到图8中的接收帧操作860,以及在接收帧操作860处接受该帧。如果广播功能未被允许,那么流程进行至混杂模式决定735。
在混杂模式决定735过程中,接收部分180决定混杂模式是否被允许。当ADF全局控制寄存器混杂位被设置(PROM=1)时,混杂模式被允许。当接收部分处于混杂模式时,所有帧被接受,不被模式匹配拒绝。通常,混杂模式用于测试并且很少被使用。如果混杂功能被允许,那么流程从方框735通过所示的“接受”流程图节点到图8中的接收帧操作860,以及在接收帧操作860处接收该帧。如果混杂模式被禁止,那么流程从方框735通过所示的“拒绝”流程图节点到图8中的拒绝帧操作870,以及在拒绝帧操作870处拒绝该帧。
因为模式匹配可以在操作710处执行,在混杂模式决定735(或相反在作为混杂模式决定735的结果接受之前)之前或与混杂模式决定735并行,可以使用有差别的混杂模式,其中除一个或多个特定的帧之外,来自所有地址的帧被接受,该一个或多个特定的帧包含导致帧的拒绝的模式。例如,借助于模式匹配可以拒绝特定的地址,同时所有其它地址被接受。
在散列冲突决定740过程中,接收部分180决定在帧目标地址上是否发生了散列冲突。通过使用32位循环冗余校验(CRC)校验和的一部分,48-位目标地址被映射到256个单元(或者在其它实施例中更多)之一中。例如,参见图12,说明为大量的相应地址1222产生大量CRC1224。每个线1201-1210的每个十六进制CRC1224对应于相同线的6-字节十六进制目标地址。
在系统100的设置过程中,CRC校验和的位用来索引到散列图表中。在一个实施例中,八个位用来索引256个二进制列单元表。8-位字段的较高顺序d3位用来选择单个散列表和/或组散列表中的8散列桶寄存器之一。较低顺序的5-位字段选择所选的32位寄存器内的位。当控制器接收帧时,使用相同的校验和。如果输入地址的CRC校验和选择在组/单个散列表中设置的位,那么散列冲突已发生。否则,没有发生散列冲突。
在所示的实施例中,CRC的最初8位选择散列表中的位。线1201-1203和1206中的地址被系统接收且因此用来建立散列表。在线1201中,十六进制值0x04映射到散列桶单元4。在线1202中,十六进制值0x0F映射到散列桶单元15。在线1203中,十六进制值0x15映射到散列桶单元21。在线1206中,十六进制值0xCB映射到散列桶单元203。因此,当这种地址被接收时,具有选择桶单元4,15,21和203的任意一个的CRC的地址将被散列冲突。
散列表的效率可以随地址数目增加而下降。例如,随着256-单元散列表中存储的地址数目增加,大多数的散列表位被设置,阻止非有意帧的显著地较小的部分到达存储器。散列过滤的一个优点是散列的速度不取决于目标地址列表中的地址数目。也应注意散列-单独协议,没有模式匹配,不能用来拒绝匹配一组被选地址的帧,因为非有意地址可以被映射到散列表中的相同位,导致应该被接收的帧的拒绝。因此,散列过滤单独导致不完善的过滤,到达存储器的帧需要后过滤。这些可以由下面参考图12所示的接收目标地址的例子来说明。
在散列冲突决定740过程中,用于每个接收地址的CRC用来选择散列桶单元。如果所选的单元表示冲突,那么散列冲突已经发生。例如,当地址1201-1203和1206-1210的任何一个被接收时,单元4,15,21和203之一被选择,以及散列冲突已经发生。由此,当地址1204或地址1205被接收时,没有一个单元4,15,21和203被选择并且没有发生散列冲突。当散列冲突没有发生时,帧通常被拒绝。以此方式,地址1204和1205可以被拒绝。但是,图12的地址1207-1210产生散列冲突,但是不是用于由系统100接收和接受的地址。因此,必须采用别的过滤装置。
系统100使用模式匹配以进一步过滤输入地址,以便基于处理器/软件的后过滤的需要被最小化乃至被消除。例如,模式可以被存储在PM寄存器中,以便引起易误解散列冲突的地址可以被拒绝。在所示的实施例中,如果地址不用于特定的供应商ID(目标地址的最初24位)),那么地址可以被拒绝。0x0050FC04的模式已经被存在PM寄存器中作为PM DATA,连同0xFFFFFF00的PM MASK一起。以此方式,在其最初24位没有0x0050FC的每个地址可被模式匹配拒绝。在此情况下,地址1207-1209被拒绝,但是1210不被拒绝,由于其供应商ID匹配希望的供应商ID。
更多的模式可以被存储,以提高该处理。例如,使用2个模式,一个具有PM DATA 0x0050fc04和0xFFFFFFPF的PM MASK,以及具有0xFFFFEFFF-F的PM MASK的PM DATA 0x0050FC03-C的第二模式可以被使用。以此方式,通过模式匹配和散列,可以有效地忽略,被散列冲突但是在其最初32位没有0x0050FC04和在其最初36位没有0x0050FC03-C的每个地址。在此情况下,由于模式匹配和散列,地址1207-1210被有效地拒绝,以及仅仅希望的地址被系统100接受。
因此,接收的地址1201-1210带来各种不同的结果。地址1204和1205引起散列失误,且因此没有接受。地址1201-1203和1206-1210引起散列冲突。地址1201-1203由于在其中发现第一模式,因此引起散列冲突和模式匹配。因此地址1201-1203被接受。地址1206由于在其中发现第二模式,导致散列冲突和模式匹配。因此地址1206被接受。地址1207-1210不导致模式匹配,尽管导致散列冲突,因为在其中未发现第一和第二模式。因此地址1207-1210不被接受。
一般,如果在散列表中存储32组地址并且随机组地址被接收,那么散列表防止大百分率的组地址帧(例如,在有些情况下,高达或高于85%)到达存储器。在没有本公开的模式匹配的情况下,系统100上的软件操作将不得不进一步过滤(即,后过滤)到达存储器130的那些地址,以决定它们是否包含校正地址,在上述例子中,地址1207-1210将需要进一步后过滤,涉及处理器110,没有引起拒绝条件的模式匹配被触发。
参考图8,在模式匹配允许决定845过程中,接收部分180决定所选寄存器中的所选模式PM DATA是否允许模式匹配。如果模式匹配不被允许(PMEN=0),那么流程进行至散列/混杂决定855。如果模式匹配被允许(PMEN=1),那么开始模式匹配处理850。如果模式匹配处理850导致帧被接受或拒绝(如下面参考图9进一步详细所述),流程从方框850通过所示各个“接受”或“拒绝”流程图节点进行到各个图8的接受帧操作860或拒绝帧操作870。如果在模式匹配处理850过程中模式匹配发生,而没有做出帧接受或拒绝决定,或如果没有模式匹配发生,那么流程从模式匹配处理850通过所示的“没有决定/没有检测的模式匹配”节点进行到模式匹配未检测的决定852。
参考目前所述的所示实施例中的模式匹配未检测决定852,如果16个模式没有一个导致匹配被检测,那么流程从决定852通过所示的“拒绝”流程图节点进行到拒绝帧操作870。在其它实施例中,可以保持帧,用于通过处理器110进一步过滤。在不同的实施例中,该帧可以产生比用于检测模式的帧更低的优先级,以便处理器110在低置信水平帧之前(利用散列冲突但是没有模式匹配)集中于高置信水平帧(利用散列冲突和模式匹配),。在其它变化的实施例中,该帧可以被存储在对应于不同处理元件的不同队列中。如果16个模式的至少一个导致模式匹配被检测,那么流程从决定852通过所示的“没有决定”流程图节点进行到上述的散列/混杂决定855。迄今为止描述了图7和8的元件对应于媒体访问控制功能。
在散列/混杂决定855过程中,当模式匹配没有决定(例如,没有接受和没有拒绝)或没有模式匹配时,实现数据链路功能。接收部分180(例如,ADF 230中的状态机)决定是否发生了理想的散列冲突和/或混杂模式是否被允许。当散列冲突和模式匹配发生时,理想的散列冲突发生,唯一地仅仅对应于一个地址。相反,当散列冲突和模式匹配都发生时,发生高置信水平散列冲突,对应于地址的低数目但是超过一个地址。高置信水平散列冲突提供增强的性能,超过传统的地址过滤,由于模式匹配的使用,增强高置信水平地址实际上是寻求地址的概率。使用系统和/或网络性能的模式的仔细选择可以产生较高理想散列冲突的概率。如果理想的散列冲突已经发生或混杂模式被允许,那么在帧接收操作860处接收该接收的帧。如果既没有理想的散列冲突发生也没有混杂模式被允许,那么流程进行到完全地址匹配决定865。
在完全地址匹配决定855过程中,处理器110决定完全地址匹配是否已经发生。系统100执行地址与系统100所知的地址的直接比较。系统100可以将接收的地址存储在优先队列中等,以便在具有较低接受可能性(低置信水平帧)地址之前处理具有较高接受可能性的地址(高置信水平帧)。这种完全和直接比较在系统100的处理资源方面是昂贵的。因此,在此描述的模式匹配和散列设法避免这种昂贵的直接地址比较。以此方式,系统100能够使用模式匹配,而尽可能地不使用直接地址比较,以增强系统的性能,而完全地址匹配是最后手段。如果有完全地址匹配,那么在帧接收操作860处接收该接收的帧。如果没有完全地址匹配,那么在帧拒绝操作870处拒绝该接收的帧。
图9是说明模式匹配由系统100接收的消息地址的方法流程图。根据模式匹配是否发生,该帧可以被接收或拒绝。对于匹配,消息帧的任意部分可以被检查,包括IP地址。当模式匹配被允许时(PMEN=1),对于相应模式匹配接受指示器允许(例如,PMAC=1)的每个模式,执行图9的操作,除非在尝试别的模式匹配之前,最后的处置(接受或拒绝)被一个模式匹配出现支配。如果模式数据被设为允许,为模式匹配检查消息数据。如果模式匹配数据被设为不允许,或如果模式匹配未被发现,那么下一个模式被选择和该处理被重复。如果连续检索被允许,那么为下一个模式继续进行检索,与匹配无关。
参考接收操作935,输入帧的字节被接收到临时队列234中,用于临时存储,直到做出是否接受或拒绝该输入帧的决定。输入帧的字节也被提供到模式匹配逻辑232和地址识别和散列逻辑238,以便在该字节被临时队列234接收的同时做出这种决定。在接收操作935过程中字节已被接收之后,流程进行到模式匹配决定操作905。
参考模式匹配决定操作905,模式匹配逻辑232决定PM寄存器中存储的模式匹配数据是否匹配该接收帧中的数据。例如,模式匹配逻辑将PM寄存器233的第一个寄存器中的PM DATA与存储在临时队列234中的输入帧数据比较。临时队列234用来存储该帧,直到做出决定。例如,如果PM DATA的每个位(直至4字节)匹配根据消息索引MI确定的消息数据的每个位,那么模式匹配发生。匹配可以发生,直至256字节深入帧中,该帧具有252字节的最大偏移量。某些PM DATA可以被相应的PM MASK掩蔽。例如,如果相应的PM MASK位被清除,PM DATA的每个位可以不被检查匹配。如果上述模式的级联模式(CP)字段被设置,那么只有当在该帧中发现两个PM DATA字段(当前PM DATA和上述PM寄存器的PM DATA)时,才发生匹配。PMAC字段决定相应的PM DATA是否被允许,如果它被允许,那么在匹配时将采取一系列动作。操作905可以与操作935并行执行。
参考模式匹配决定905,如果模式匹配被禁止(例如,PMAC=00),那么流程进行至帧的末端(EOF)或队列满决定930。如果在模式匹配决定操作905过程中未发现模式匹配,那么流程也进行到EOF或队列满决定930。如果在决定910过程中有模式匹配和模式匹配不被禁止(例如,PMAC≠00),那么流程进行到接收帧决定915。
参考EOF/队列满决定930,如果临时队列234不满和帧的末端还没有被接收(以及帧没有被拒绝),那么在接收操作935过程中,附加的字节继续被接收到临时队列234中,并且流程进行到模式匹配决定操作905,以对于附加接收帧信息开始模式匹配。如果帧的末端已被接收或临时队列234满,那么流程进行至拒绝所有模式决定940。
参考全部拒绝模式决定940,如果ADF 230被决定处于全部拒绝模式,那么帧被拒绝并且操作流程继续,如图7或8所示,取决于开始图9所示的模式匹配流程的相应流程。如果ADP 230不处于全部拒绝模式,那么没有做出与该帧有关的决定,则流程继续,如图7或8所示,取决于开始图9所示的模式匹配的流程。
参考接收帧决定915,如果ADP 230是用于一个模式(例如,对于特定的PM DATA,PMAC=10,)的接收帧,那么该帧被有条件地接受,并且流程进行至连续检索决定945。如果ADP 230不是用于该模式的接收帧(例如,对于特定的PM DATA,PMAC≠10),那么流程进行至拒绝帧决定920。
参考拒绝帧决定920,如果ADP 230是用于一个模式的拒绝帧(例如,对于特定的PM DATA,PMAC=11),那么该输入帧被拒绝,因为它包含与拒绝的PMAC值相关的PM数据(或相反,导致匹配考虑其它因数,如PM MASK,CP等)。然后流程继续,如图7或8所示,取决于开始图9所示的模式匹配的流程。如果ADP 230不是用于一个模式的拒绝帧(例如,对于特定的PM DATA,PMAC≠11,以及在此情况下,PMAC=01),那么流程进行至连续检索决定925。
参考连续检索决定925,如果用于模式的连续检索被允许(例如,CSE=1),那么流程进行至EOF或队列满决定930。如果在连续检索决定925过程中连续检索不被允许(例如,CSE=0),那么不做出上述模式匹配的决定,并且流程进行至全部拒绝模式决定940。
参考连续检索决定945,如果用于模式的连续检索被允许(例如,CSE=1),那么流程进行至EOF或队列满决定950。如果在连续检索决定945过程中,连续检索不被允许(例如,CSE=0),那么该输入帧被接受。该帧被接受,因为它包含PM DATA(或相反,导致匹配考虑其它因数,如PM MASK,CP等)以及模式匹配被允许(PMAC=10)和不需要执行进一步检索(CSE=0)。然后流程继续,如图7或8所示,取决于开始图9所示的模式匹配的流程。
参考EOF/队列满决定950,如果帧的末端已经被接收或临时队列234满,那么该输入帧被接受。该帧被接收,因为模式匹配已经发生,模式匹配被允许(PMAC=10)和帧的末端已达到或临时队列满,因此更多的模式匹配是不可能的。然后流程继续,如图7或8所示,取决于开始图9所示的模式匹配的流程。
如果在EOF/队列满决定950过程中临时队列234不满和帧的末端还没有被接收,那么在接收操作955过程中,附加的字节被接收到临时队列234中,以及流程进行至模式匹配决定操作960,以在用于下一个模式(例如,下一个序列的PM寄存器233中的PM DATA)的附加接收帧信息上开始模式匹配。模式匹配决定操作960在功能上类似于如上所述的操作905。操作955可以与操作960并行执行。在模式匹配操作960之后,流程进行至模式匹配决定965。
参考模式匹配决定965,如果对于当前选择的模式(例如,当前选择的PM寄存器233中的PM DATA),模式匹配被禁止(例如,PMAC=00),那么流程进行至EOF/队列满决定950。如果在模式匹配决定操作965过程中未发现模式匹配,那么流程也进行到EOF/队列满决定950。如果在决定965过程中有模式匹配并且模式匹配不被禁止(例如,PMAC≠00),那么流程进行至不拒绝帧决定970。
参考不拒绝帧决定970,如果对于下一个模式(例如,相应的PMDATA)ADF 230是不被拒绝的帧(例如,PMAC=01或PMAC=10),那么流程进行至EOF/队列满决定950。否则,由于拒绝模式(PMAC=11)已经被检测到,因而该输入帧被拒绝。然后流程继续,如图7或8所示,取决于开始图9所示的模式匹配的流程。
参考图10,用于在图1的系统内处理接收消息的方法。所示的实施例的一个优点是通过数据被接收时检测它而不求助高层资源,以及将它连同描述符信息一起放置在用于随后更快速访问的高速缓存中,可以增强系统访问分组内的关键性数据。
当在接收模式状态操作1005过程中,模式状态已被提供给DMA210并放入状态寄存器215中时,所示的流程开始。此后通常,该帧数据被归档在存储器130中和/或隐藏在高速缓存120中,取决于模式状态信息。归档包括基于分组标签在存储器中将分组进行分组,提取包括定位分组的特定部分(例如,通过使用提取索引和长度值),以及隐藏包括将提取的数据复制到处理器高速缓存空间中。提取可以分配和锁定处理器高速缓冲存储器,但是在提取过程中,软件负责对于被DMA锁定的高速缓存中所有数据的解锁。提取的数据不从该帧数据除去;相反地,所有帧数据被存储在存储器中,以及仅仅将提取数据复制到处理器高速缓存。下面更详细地描述这种归档和隐藏。
参考选择缓冲区描述符操作1010,DMA 210的BDFP 214基于模式匹配属性寄存器213中的模式状态和队列分类(QC)字段选择缓冲区描述符。QC字段决定使用哪个缓冲区描述符、队列122/132。该模式状态包括指向适当的QC字段的指针。该模式状态也表示发生的哪个模式匹配,如果有的话。如果模式匹配发生,匹配的模式可能导致从帧提取数据并隐藏,作为高速缓存120中的提取数据124。因此,除缓冲区描述符队列132之外选择122缓冲区描述符队列。如果不发生模式匹配,那么将不发生提取,导致仅仅缓冲区描述符队列132被使用。在选择缓冲区描述符操作1010之后,流程进行至提取准备操作1015。
在提取准备操作1015过程中,如果模式状态表示模式匹配,那么提取引擎212从模式属性寄存器213获得提取索引(E1)和提取长度(EL)。在提取准备操作1015之后,流程进行至BDQ可用决定1020。
参考BDQ可用决定1020,BDFP 214决定所选的缓冲区描述符队列(BDQ)是否可用。即BDPP 214决定在所选的BDQ中是否有空的空间。如果所选的BDQ可用,那么流程通过流程图节点“A”进行至更新BDQ指针操作1030。如果所选的BDQ不可用,那么流程进行至刷新操作1025,于是从接收FIFO刷新帧和状态帧长度,并且流程进行至接收模式状态操作1005。
参考更新BDQ指针操作1030,BDFP 214更新缓冲区描述符队列当前指针(BDQ_CURRENT),以指向下一个缓冲区描述符队列(BDQ_CURRENT=BDQ_NEXT)。在当前BDQ指针被更新之后,流程进行至BDQ清空决定1035。
参考BDQ清空决定1035,BDFP 214决定被BDQ_CURRENT指向的项目是否是空的。如果当前BDQ项是非空的,那么在标记不可用操作1040过程中,所选的缓冲区描述符队列被标记为不可用,并且流程进行至刷新操作1025。如果当前BDQ项是空的,那么流程进行至传送操作1045。
参考传送操作1045,BDFP 214将帧数据从接收FIFO 220传送到接收缓冲区211。该传送进行到帧的末端(EOF)被接收或接收缓冲区211充满。在该帧数据被传送之后,流程进行至EOF决定1050。
参考EOF决定1050,如果在操作1045过程中帧的末端没有被接收,那么流程进行至选择性提取和隐藏操作1060。如果在操作1045过程中,帧的末端被接收,那么流程进行到获得状态帧长度操作1055,在此过程中提取引擎212从状态寄存器215获得状态帧长度。在操作1055之后,流程进行至选择性的提取和隐藏操作1060。
在选择性提取和隐藏操作1060过程中,从接收帧可控制地提取数据,用于隐藏在高速缓存120中。下面参考图11更完全地描述选择性提取和隐藏操作1060。在选择性提取和隐藏操作1060之后,流程进行至EOF决定1065。
参考EOF决定1065,如果在选择性提取和隐藏操作1060过程中,帧的末端被接收,那么流程进行至EOF更新操作1080。如果在选择性提取和隐藏操作1060过程中,帧的末端没有被接收,那么流程进行至缓冲区末端(EOB)决定1070。
参考EOF更新操作1080,BDFP 214更新当前缓冲区描述符队列的状态和控制信息。例如,BDFP 214在当前BDQ122中设置提取发生位,以表示提取的数据124已经被存储在高速缓存120中。下一个BDQ指针(BDQ_NEXT)被设为指向所选BDQ中的下一个位置。根据BDLWT,当前BDQ的内容被复制到高速缓存。例如,如果模式匹配发生,以及如果BDLWT是00,那么不执行分配;如果BDLWT是10,那么分配高速缓存120线路;以及如果BDLWT是11,那么高速缓存120线路被分配和锁定。在EOF更新操作1080之后,流程进行至接收模式状态1005,以便从下一个帧可以处理更多数据。
参考EOB决定1070,如果在选择性提取和隐藏操作1060过程中遇到存储器130中的数据缓冲区134的末端,那么流程进行至EOB更新操作1075。如果在选择性提取和隐藏操作1060过程中没有遇到数据缓冲区的末端,那么流程进行至如上所述的传送操作1045。
参考EOF更新操作1075,BDFP 214更新当前缓冲区描述符队列的状态和控制信息。例如,BDFP 214在当前BDQ 122中设置提取发生位,以表示提取的数据124已经被存储在高速缓存120中。下一个BDQ指针(BDQ_NEXT)被设为指向所选BDQ中的下一个位置。根据BDLWT,当前BDQ的内容被复制到高速缓存。在EOB更新操作1075之后,流程进行至节点A,以便从相同的帧可以处理更多数据。
图11是说明通过使用64字节缓冲区的图1的系统提取和隐藏部分消息的方法的流程图。图11所示的方法通过图10的选择性提取和隐藏操作1060命名。
参考图11,提取引擎212决定在提取请求决定1105过程中,对于给定的模式匹配是否已经请求提取。提取引擎212还检查各个提取字段,如提取累加(EX_ADD)字段和提取长度(EL)字段。提取累加字段等于提取长度加上相应的提取索引(例如,EXADD=EL+EI[11:15])。如果提取被请求(PME=1),那么提取累加值大于零,并且提取长度大于零,流程进行至EI≤64决定1125。如果提取没有被请求,那么提取累加值为零,或提取长度为零,流程进行至对齐决定1110。
参考对齐决定1110,如果目标地址不是64字节对齐地址,那么流程进行至发送MAX(32B)操作1120,32字节的最大普通数据被发送给存储器130。MAX(32B)是达到并包括32字节的字节数(例如,其中x是字节数,MAX(xB)
Figure C200480033180D0030130905QIETU
字节)。如果目标地址是64字节对齐地址,那么流程进行至发送MAX(64B)操作1120,其中MAX(64B)的普通数据被发送给存储器130。在发送MAX(32B)操作1115或发送MAX(64B)操作1120的任何一个之后,提取流程退出,并且流程进行至图10的EOF决定1065。
参考EI≤64决定1125,如果提取索引大于64,那么将被提取的数据还没有到达,并且流程进行至发送MAX(64B)操作1130,其中MAX(64B)的普通数据被发送给存储器130。在发送MAX(64B)操作1130之后,在递减EI操作1135过程中,提取索引递减64(例如,EI=EI-64)以及提取流程退出,以及进行至图10的EOF决定1065。
再次参考EI≤64决定1125,如果提取索引小于或等于64,那么流程进行至存储相关的EI操作1140。相关的提取索引是存储器130中提取数据开始的数据缓冲区内的位置的索引。相关的提取索引被BDFP214内部地存储到DMA 210,直到之后在操作1075或1080过程中(图10)它被写入存储器130中的合适BDQ和/或高速缓存120,。在存储相关的E1操作1140之后,流程进行至EI≤32决定1145。
参考EI≤32决定1145,提取引擎212执行与提取索引的比较并且检查在DMA 210中内部地存储的提取数据,例如,在提取引擎212内。例如,如果提取索引大于32,并且提取数据标记非真,那么流程进行至发送MAX(32B)操作1150,其中MAX(32B)的普通数据被发送给存储器130。在发送MAX(32B)操作1115,提取数据标记被设为真,并且提取流程退出,以及流程进行至图10的EOF决定1065。
再次参考EI≤32决定1145,如果提取索引小于或等于32,或提取数据标记是真,那么流程进行至小于32B决定1160。如果从接收帧(例如,EX_ADD≤32B)提取至少32字节的数据,那么流程进行至发送32B操作1170,其中32字节的提取数据被发送给存储器,并且根据ELCWT被复制到高速缓存120。例如,如果ELCWT是00,那么不执行分配;如果ELCWT是01,那么不发生提取;以及如果ELCWT是10,那么高速缓存线路被分配;如果ELCWT是11,那么高速缓存线路被指定并锁定。如果从接收帧(例如,EX_ADD<32B)提取小于32字节的数据,那么流程进行至积累操作1165,其中EX_ADD被积累至32的值,以及流程进一步进行至发送32B操作1170。
在发送32B操作1170之后,流程进行至递减操作1175,在此过程中,提取累加字段递减提取的32字节段的数目(例如,EX_ADD=EX_ADD-32)。在递减操作1175之后,在清除操作1180过程中,如果帧的末端(EOF)已经到达或如果EX_ADD=0,那么提取数据标记被清除。在清除操作1180之后,提取流程退出,以及流程进行至图10的EOF决定1065。
在一个实施例中,在分组控制器160的MAC 190处,消息帧的一部分被系统100接收。(参见,图1和图6,操作610)。该消息帧的接收部分(“接收帧”)被提供给图2的地址/数据过滤器230的临时队列234。该帧被地址/数据过滤器230处理,以决定它是否应该被接受或拒绝。(参见图6,操作620),通过地址识别和散列逻辑238和模式匹配逻辑232,对于该接收帧执行地址识别、散列、用于理想散列的具有模式匹配的散列以及模式匹配(图7-9)。地址识别和散列逻辑238执行散列和任意必需的完全直接地址比较。PM寄存器233包括对应于将被匹配的模式数目的寄存器数目。模式匹配逻辑232基于PM寄存器233中存储的结构值(例如,具有连续检索和/或级联能力)执行模式匹配。如果在模式匹配和散列或其它失败的安全条件之后接受,那么该接收帧和模式状态信息(模式匹配结果)被传送到接收FIFO 220(参见,图6,操作630)。
然后接收帧被传送到接收缓冲区211,以及模式状态信息被传送到DMA 210的状态寄存器215。(参见图6,操作640)提取引擎212访问模式属性寄存器213和状态寄存器215,以决定是否应该从接收缓冲区211中的接收帧提取数据,以及在适当时控制这种数据的提取。(参见图10和11)。BDFP访问状态寄存器215和缓冲区描述符地址寄存器并产生将被写入存储器130和/或高速缓存120的地址和数据信息。来自BDFP 214的地址信息包括数据缓冲区中用于帧数据的指针(例如,数据缓冲区指针456)或指向缓冲区描述符队列(例如,BDQ_BASE,BDQ_CURRENT,BDQ_NEXT)中的下一项目之一的指针。数据信息包括图4所示的状态和控制452、数据长度454、数据缓冲区指针456、模式匹配状态458、相关的提取索引460、提取长度462和字节计数464。
然后该帧的所有或部分被归档在存储器130中(“普通数据”)和/或隐藏在高速缓存120中(“提取数据”),连同相应的缓冲区描述符队列132/122中的相应描述信息一起。(参见图6,操作650和图10和11)。更具体地说,接收缓冲区211提供普通或提取的帧数据到总线接口单元(BIU)170,提取引擎提供属性到BIU 170,BIU 170识别帧数据为普通的或提取的,并且BDFP 214提供来自缓冲区描述符地址寄存器216的地址信息和缓冲区描述符数据到BIU 170。BIU 170将帧数据传送至总线140,用于存储在高速缓存120中和/或存储器130中。普通帧数据被存储在至少一个数据缓冲区134中,并且与普通帧数据有关的描述符数据被存储在缓冲区描述符队列132中。如果提取发生,那么提取的帧数据被存储(“隐藏”)在高速缓存部分124中,并且与提取的帧数据有关的描述符数据被存储在缓冲区描述符队列122中。
上述说明用来描述本发明的至少一个实施例。上述说明书不打算限定本发明的范围。相反,在下面的权利要求中限定了本发明的范围。因此,本发明的其它实施例包括对上述描述的其它改变、改进、增加和/或改善。
一个实施例引入新形式的模式匹配,允许用户编程高达16四字节模式,该模式可以被级联,以形成较长的模式,并且用来匹配最初256字节内的部分帧。与每个模式相关的是一组属性,可以被编程接受/拒绝帧,将该帧归档到存储器中的四个队列之一中,并且将提取的帧数据写入到处理器的高速缓存中。模式匹配能力包括支持高达16个4-字节的唯一模式,模式匹配逐位进行,匹配范围深入帧中高达256字节,偏移量高达252字节,4字节增量中的可编程模式尺寸高达64字节,当匹配被检测到时,接受或拒收帧,以及高达8个单播地址,用于精确匹配。
本实施例将模式匹配的能力与散列过滤的使用相结合,以提供不需要后过滤的地址识别方法,并且该方法可以在MAC级执行,代替在逻辑链路控制器级需要更多软件介入。加速帧处理一种方法是增加任意目标地址的置信水平,在散列表上碰巧获取冲突的目标地址的确是系统寻找的地址之一。由于不止一个地址将具有对于相同8个最重要位的CRC,因而具有模式匹配的散列表的使用提供一种显著地增加在散列冲突上必须执行的额外处理不是浪费努力的机会(检索地址并将它与有效的目标地址的列表进行比较)的方法。这些是有价值的,因为它减小由非有意的散列表冲突导致的额外存储器总线利用。可以被散列的地址数目也被散列表效率随着地址数目增加而下降的事实限制。由于用户首先建立散列表和由于将被散列的地址数目通常较低(32至64),因此如果没有它的所有地址,那么可以相对容易地发现覆盖大多数的公共模式。使用少数的模式匹配寄存器,用户可以确保在希望队列中归档的任何数据被冲突并且可以被处理,而不需要比较列表。
在一个实施例中,如果CRC校验和所选在组/单个散列表中设置的位,则该帧简单地被有条件接受,未得出模式匹配结果。例如,可以高效的使用供应商的代码作为匹配的一种模式。选择性的模式越多(使用的位越少),高置信水平散列冲突队列方法变得越有效。利用非常选择性的模式,可以用于散列表的地址数目可以增加并且仍然保持有效。本实施例的另一个优点是尽管通过本身是散列不能用来拒绝帧,但是没有拒绝好的帧的风险,组合的模式匹配和散列过滤可用于执行“通过散列的帧拒绝”,由于散列冲突的不确定性被消除。更多的灵活性是用户可以将在“非匹配队列的高概率”中拒绝的模式匹配和散列的帧归档,以便帧可以被检查,以进一步验证该方法的效率。
如在此所述,ADF 230的各个控制逻辑被分配在ADF 230的上述元件当中并且未图示为分离的逻辑块。另外地,可包括分开的控制逻辑块,表示例如,用于控制ADF 230的整体操作的状态机,包括模式匹配和散列功能。这种状态机可能包括大量状态,以实现在此描述的功能。例如,在数据被接收和帧被接受时,该状态机可以从空闲状态转移到模式情形状态。在模式情形状态中,模式情形信息可以对接收FIFO 220可用。然后状态机可以转移到临时队列数据阶段,其中接收的帧被从临时队列234转发。然后状态机进入帧情形状态,其中与目标地址过滤相关的帧长度和状态(例如,广播地址、组/单个地址、混杂模式)被传送到接收FIFO 220。根据在此描述的功能,可以实现其它状态和状态机。
在一个实施例中,一种方法包括接收消息和决定在该接收消息内是否检测到对应于第一模式的第一模式匹配,其中第一模式由模式匹配数据表示以及具有相应的反模式指示器。基于相应的模式匹配接受指示器,当检测到第一模式匹配时,该消息被有选择地接受。当相应的反模式指示器具有第一值时,当在接收消息内检测到第一模式时,第一模式被检测出,并且当相应的反模式指示器具有第二值时,当在该接收消息内未检测出第一模式时,第一模式匹配被检测出。
在再一实施例中,接收消息包括接收分组的至少一部分,在一个实施例中,该分组进一步表征为以太网分组。在再一实施例中,相应的模式匹配接受指示器表示接受、拒绝以及既不接受又不拒绝该接收消息的一种。
在再一实施例中,第一模式具有相应的连续检索允许指示器,其中基于相应的模式接受指示器和相应的检索允许指示器,有选择地接受消息。在又一实施例中,当检测出第一模式匹配和对应于第一模式的模式匹配接受指示器表示该接收消息的接受时,当对应于第一模式的连续检索指示器表示非连续检索时,接受该接收消息。在又一实施例中,当第一模式匹配被检测出和对应于第一模式的模式匹配接受指示器表示接受该接收消息时,当对应于第一模式的连续检索指示器表示连续检索时,该接收消息被接受,并且当对应于第二模式的第二模式匹配被检测出时,第二模式具有相应的模式匹配接受指示器,不表示该接收消息的拒绝。在一个实施例中,第二模式由模式匹配数据表示并且对应于第二模式的模式匹配接受指示器表示接受该接收消息和既不接受又不拒绝该接收消息的一种。在一个实施例中,对应于第二模式的模式匹配接受指示器表示接受该接收消息、既不接受也不拒绝该接收消息的一种,并且对于第二模式,模式匹配被禁止。在又一实施例中,第二模式具有相应的反模式指示器,其中当对应于第二模式的反模式指示器具有第一值时,当在该接收消息内检测出第二模式时,第二模式匹配被检测,并且当对应于第二模式的反模式指示器具有第二值时,当在该接收消息内未检测出第二模式时,第二模式匹配被检测。
在又一实施例中,当第一模式匹配被检测出并且对应于第一模式的模式匹配表示该接收消息的接受时,当对应于第一模式的连续检索指示器表示连续检索时,该消息不被接受,并且当对应于第二模式的第二模式匹配被检测出时,第二模式具有相应的模式匹配接受指示器,表示该接收消息的拒绝。在又一实施例中,第二模式具有相应的反模式指示器,其中当对应于第二模式的反模式指示器具有第一值时,当在该接收消息内检测出第二模式时,第二模式匹配被检测,并且当对应于第二模式的反模式指示器具有第二值时,当在该接收消息内未检测出第二模式时,第二模式匹配被检测。
在另一个实施例中,该方法还包括当第一模式没有被检测出时拒绝该消息。在又一实施例中,第一模式具有相应的匹配索引,表示接收消息内的位置,在此决定第一模式匹配是否被检测出。在又一实施例中,当第一模式匹配被检测出时,该方法还包括,决定在该接收消息内是否检测出第二模式匹配,第一模式和第二模式的每一个相应的级联指示器,其中基于对应于第一模式的模式匹配接受指示器和对应于第一模式的级联指示器和对应于第二模式的级联指示器的至少一个有选择地接受该消息。在该实施例中,当检测出第二模式和对应于第一模式的级联指示器和对应于第二模式的级联指示器的至少一个表示第一和第二模式的级联时,当对应于第一模式的模式匹配接受指示器表示该接收消息的接受时,该消息被有选择地接受。在该实施例中,当没有检测出第二模式匹配和对应于第一模式和第二模式的级联指示器的至少一个表示第一和第二模式的级联时,第一模式匹配被认为没有被检测出。
在又一个实施例中,第二模式具有相应的反模式指示器,其中当对应于第二模式的反模式指示器具有第一值时,当在接收消息内检测出第二模式时,第二模式匹配被检测,并且当对应于第二模式的反模式指示器具有第二值时,当在接收消息内未检测出第二模式时,第二模式匹配被检测。
在另一个实施例中,该方法还包括执行散列函数,以决定是否发生散列冲突。在该实施例中,当发生散列冲突时,检测出第一模式匹配,并且对应于第一模式的模式匹配接受指示器表示该接收消息的接受,该消息被有选择地接受。
在另一个实施例中,当该消息被接受时,该方法还包括基于模式匹配属性选择缓冲区描述符队列(BDQ),根据所选的BDQ将该消息存储到存储器,并且将该接受消息的至少一部分有选择地存储到高速缓存。在该实施例中,该接受消息的一部分由模式匹配属性表示。在又一个实施例中,该模式匹配属性表示对应于第一模式的大量BDQ的一个、对应于所选BDQ的大量BDQ的一个。在又一个实施例中,该模式匹配属性对应于第一模式。在又一个实施例中,当该消息被接受时,该消息还包括决定是否存在对应于第二模式的第二模式匹配,该模式匹配属性是否对应于第二模式。
在又一个实施例中,该模式匹配属性提供一个模式匹配提取指示器。在该实施例中,当模式匹配提取指示器表示提取被允许时,该接受消息的一部分被存储到高速缓存,并且当模式匹配提取指示器表示提取被禁止时,该接受消息的一部分不被存储到高速缓存。在又一个实施例中,该模式匹配属性提供提取索引和提取长度,表示存储到高速缓存的部分接受消息。
在又一个实施例中,当该消息被接受时,该方法还包括将所选BDQ的至少一部分存储到高速缓存。
替换实施例涉及一种分组控制器,包括输入、模式匹配逻辑和耦合到模式匹配逻辑的控制逻辑。在该实施例中,该输入接收消息。模式匹配逻辑决定在该接收消息内是否检测出对应于第一模式的第一模式匹配。模式匹配逻辑包括至少一个模式匹配寄存器,存储表示第一模式的模式匹配数据,并且存储模式匹配控制,包括对应于第一模式的模式匹配接受指示器和对应于第一模式的反模式指示器。当检测出第一模式匹配和对应于第一模式的模式匹配接受指示器表示该接收消息的接受时,控制逻辑有选择地接受该接收消息。当相应的反模式指示器具有第一值时,当在该接收消息内检测出第一模式时,第一模式匹配被检测。当相应的反模式指示器具有第二值时,当在该接收消息内没有检测出第一模式时,第一模式匹配被检测。
在再一实施例中,该模式匹配控制还包括级联指示器。在该实施例中,模式匹配逻辑使用级联指示器来决定第一模式匹配是否被检测出。在又一个实施例中,当级联指示器具有第一值时,第一模式匹配对应于第一模式和第二模式。在该实施例中,第二模式由至少一个模式匹配寄存器内存储的第二模式匹配数据表示。在又一个实施例中,当级联指示器具有第二值时,第一模式匹配对应于第一模式和不对应于第二模式。在又一个实施例中,该模式匹配控制包括对应于第二模式的反模式指示器。
在另一个实施例中,该模式匹配控制还包括连续的检索指示器。在该实施例中,当检测出第一模式匹配和对应于第一模式的模式匹配接受指示器表示该接收消息的接受时,控制逻辑基于连续的检索指示器有选择地接受该接收消息。
应当理解,在此描述的结构仅仅是示例性的,实际上实现相同功能的许多其它结构可以被实现。简言之,但是还是限定性的,实现相同功能的元件的任意布置有效地“关联”,以便实现希望的功能。因此,在此结合实现特定功能的任意两个元件可以看作彼此“关联”,以便实现希望的功能,与结构或中间元件无关。同样,如此关联的任意两个元件也可以看作彼此“可操作地连接”或“可操作地耦合”,以实现希望的功能。
本领域的技术人员将认识到,逻辑块之间的界限仅仅是说明性的,并且替换实施例可以合并逻辑块或电路元件或分解各个逻辑块或电路元件的功能。而且,另外的实施例可以结合特定元件的多个实例。
此外,本领域的技术人员将认识到,上述操作的功能之间的界限仅仅是说明性的。多个操作的功能可以结合为一个操作,和/或在附加操作中可以分配一个操作的功能。而且,替换实施例可以包括特定操作的多种实例,并且操作的顺序可以被改变,或甚至在各个其它实施例中并行执行。
因为上述详细描述是示例性的,当“一个实施例”被描述时,它是示例性实施例。由此,本文中的词语“一个”的使用不打算表示一个和仅仅一个实施例可以具有描述的特征。相反,许多其它实施例可以并且常常具有示例性“一个实施例”的描述特征。因此,当在一个实施例的环境中描述本发明时,如上面使用,该一个实施例是本发明的许多可能实施例之一。
虽然上述解释与详细说明中的词语“一个实施例”的使用有关,但是在本领域内的技术人员应当理解,如果在下面的权利要求中打算引入特定数目的权利要求要素,这种意图将明确地叙述在权利要求,并且在没有这种叙述的情况下,不提供或表示这样的限制。例如,在下面的权利要求中,当权利要求要素被描述为具有“一个”特征时,它意味着该要素限于一个且仅仅一个描述的特征。此外,当在下面权利要求中描述权利要求要素包含或包括“一种”特征,并不指该元件限于一个且仅仅一个描述的特征。相反,例如,包括“一种”特征的权利要求解释为设备或方法包括上述的一个或多个特征。亦即,因为上述的该设备或方法包含一种特征,所以权利要求解释该设备或方法,而与该设备或方法是否包含另一个这种类似特征无关。在此申请人采用词语“一种”作为权利要求特征的非限定性的、前导性的冠词,这与过去许多法院采用的解释相吻合,尽管可以发现相反的任意不规则的或作为先例的判例法。类似地,当在下面权利要求中描述的权利要求要素包含或包括上述的特征(例如,“该”特征),它意味着该元件不限于仅仅由定冠词的偶然使用所描述的一种且仅仅一种特征。
此外,介绍性短语的使用如权利要求中的“至少一个”和“一个或多个”不应该被解释为暗示引入不定冠词“一种(a)”的另一要求元件限制包含这种引入的要求元件的任意特定权利要求为发明仅仅包含一个这种元件,即使当相同的权利要求包含介绍性短语“一个或多个”或“至少一个”并且不定冠词如“一种(a)”时。这也适用于定冠词的使用。
尽管已经示出和描述了本发明的特定实施例,但是对于本领域的技术人员来说基于在此的教导,在不脱离本发明权利要求的条件下可以使用各种改进、替换结构和等效结构是显而易见的。因此,附加权利要求包括在它们的范围内所有这种改变、改进等,它们在本发明的真正精神和范围内。此外,应当理解,本发明仅仅由附加权利要求限定。上述描述不打算给出本发明的实施例的详尽列表。除非另外清楚地声明,在此给出的每个例子是非限制性的或非排他性的例子,不管怎样每个例子同时表示术语非限制性、非排他性或类似措词。尽管试图概述某些示例性实施例和其示例性改变,但是其它实施例和/或改变在下面权利要求中限定的本发明的范围内。

Claims (12)

1.一种方法,包括:
接收消息;
决定在该接收消息内是否检测出对应于第一模式的第一模式匹配,其中第一模式由模式匹配数据表示并且具有相应的反模式指示器和相应的模式匹配接受指示器;
当检测出第一模式匹配时,基于相应的模式匹配接受指示器,该消息被有选择地接受,其中:
当相应的反模式指示器具有第一值时,当在该接收消息内检测出第一模式时,第一模式匹配被检测,以及
当相应的反模式指示器具有第二值时,当在该接收消息内未检测出第一模式时,第一模式匹配被检测。
2.根据权利要求1的方法,其中第一模式具有相应的连续检索允许指示器,以及其中基于相应的模式匹配接受指示器有选择地接受该消息包括,基于相应的模式匹配接受指示器和相应的连续检索允许指示器有选择地接受该消息。
3.根据权利要求1的方法,其中第一模式具有相应的匹配索引,表示该接收消息内的位置,在此位置决定第一模式匹配是否被检测出。
4.根据权利要求1的方法,其中当第一模式匹配被检测出时,该方法还包括:
决定在该接收消息内是否检测出第二模式匹配,第一模式和第二模式的每个具有相应的级联指示器,其中有选择地接受该消息是基于对应于第一模式的模式匹配接受指示器,以及对应于第一模式的级联指示器和对应于第二模式的级联指示器的至少一个;
当检测出第二模式匹配并且对应于第一模式的级联指示器和对应于第二模式的级联指示器的至少一个表示第一和第二模式的级联时,当对应于第一模式的模式匹配接受指示器表示该接收消息的接受时,有选择地接受该消息;以及
当未检测到第二模式匹配并且对应于第一模式和第二模式的级联指示器的至少一个表示第一和第二模式的级联时,第一模式匹配被认为未被检测到。
5.根据权利要求1的方法,还包括:
执行散列函数以决定散列冲突是否发生,其中当散列冲突发生时,第一模式匹配被检测出,并且对应于第一模式的模式匹配接受指示器表示该接收消息的接受,有选择地接受该消息。
6.根据权利要求1的方法,其中当该消息被接受时,该方法还包括:
基于模式匹配属性选择缓冲区描述符队列;
根据选择的缓冲区描述符队列,将该消息存储到存储器;以及
将该接受消息的至少一部分有选择地存储到高速缓存,其中该接受消息的所述部分由模式匹配属性表示。
7.一种分组控制器,包括:
接收消息的输入;
模式匹配逻辑,决定在该接收消息内是否检测出对应于第一模式的第一模式匹配,其中该模式匹配逻辑包括存储模式匹配数据和存储模式匹配控制的至少一个模式匹配寄存器,该模式匹配数据表示第一模式,该模式匹配控制包括对应于第一模式的模式匹配接受指示器以及对应于第一模式的反模式指示器;以及
控制逻辑,耦合到模式匹配逻辑,当检测出第一模式匹配并且对应于第一模式的模式匹配接受指示器表示该接收消息的接受时,有选择地接受该接收的消息,其中:
如果相应的反模式指示器具有第一值,则当在该接收消息内检测出第一模式时,第一模式匹配被检测出,以及
如果相应的反模式指示器具有第二值,则当在该接收消息内未检测出第一模式时,第一模式匹配被检测出。
8.一种方法,包括:
接收消息;
执行散列函数,以决定散列冲突是否发生;
决定在该接收消息内是否检测出对应于第一模式的第一模式匹配,其中第一模式由模式匹配数据表示并且具有相应的反模式指示器;
当检测到第一模式匹配时,当对应于第一模式的模式匹配接受指示器表示该接收消息的接受和散列冲突发生时,有选择地接受该接收消息;以及
当第一模式匹配被检测出时,对应于第一模式的模式匹配接受指示器表示该接收消息的拒绝和散列冲突发生,拒绝该接收消息。
9.根据权利要求8的方法,其中当检测出第一模式匹配时,以及当对应于第一模式的模式匹配接受指示器表示该接收消息的既不接受又不拒绝和散列冲突发生时,有选择地接受该接收消息。
10.根据权利要求8的方法,其中进一步基于级联指示器决定第一模式匹配是否被检测出。
11.根据权利要求8的方法,其中当检测到第一模式匹配时,当对应于第一模式的模式匹配接受指示器表示该接收消息的接受和散列冲突发生时,基于连续的检索指示器有选择地接受该接收消息。
12.根据权利要求8的方法,其中第一模式具有相应的反模式指示器,以及其中当反模式指示器具有第一值时,当该接收消息包括第一模式时,检测到第一模式匹配。
CNB2004800331808A 2003-11-25 2004-11-05 使用反模式匹配的网络消息处理 Expired - Fee Related CN100534052C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/721,196 2003-11-25
US10/721,196 US7240041B2 (en) 2003-11-25 2003-11-25 Network message processing using inverse pattern matching

Publications (2)

Publication Number Publication Date
CN1879354A CN1879354A (zh) 2006-12-13
CN100534052C true CN100534052C (zh) 2009-08-26

Family

ID=34591748

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800331808A Expired - Fee Related CN100534052C (zh) 2003-11-25 2004-11-05 使用反模式匹配的网络消息处理

Country Status (6)

Country Link
US (1) US7240041B2 (zh)
JP (1) JP4485529B2 (zh)
KR (1) KR101098747B1 (zh)
CN (1) CN100534052C (zh)
TW (1) TWI360978B (zh)
WO (1) WO2005055487A2 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7613775B2 (en) * 2003-11-25 2009-11-03 Freescale Semiconductor, Inc. Network message filtering using hashing and pattern matching
US7240041B2 (en) 2003-11-25 2007-07-03 Freescale Semiconductor, Inc. Network message processing using inverse pattern matching
US7451211B2 (en) * 2004-01-23 2008-11-11 Microsoft Corporation Message exchange pattern tracking to avoid invalid message exchange
CA2629928C (en) * 2005-11-17 2013-01-15 Research In Motion Limited System and method for communication record logging
US7613739B2 (en) * 2005-11-17 2009-11-03 Research In Motion Limited Method and apparatus for synchronizing databases connected by wireless interface
US7801150B1 (en) * 2006-02-14 2010-09-21 Juniper Networks, Inc. Multiple media access control (MAC) addresses
US8238882B2 (en) * 2006-10-19 2012-08-07 Research In Motion Limited System and method for storage of electronic mail
KR100832539B1 (ko) 2006-12-06 2008-05-27 한국전자통신연구원 다중패턴을 지원하지 않는 패턴보드를 이용한 다중패턴검색 방법 및 장치
US7752192B2 (en) * 2007-03-02 2010-07-06 International Business Machines Corporation Method and system for indexing and serializing data
US9374242B2 (en) 2007-11-08 2016-06-21 Invention Science Fund I, Llc Using evaluations of tentative message content
US8984133B2 (en) 2007-06-19 2015-03-17 The Invention Science Fund I, Llc Providing treatment-indicative feedback dependent on putative content treatment
US8682982B2 (en) 2007-06-19 2014-03-25 The Invention Science Fund I, Llc Preliminary destination-dependent evaluation of message content
US8082225B2 (en) 2007-08-31 2011-12-20 The Invention Science Fund I, Llc Using destination-dependent criteria to guide data transmission decisions
US8065404B2 (en) 2007-08-31 2011-11-22 The Invention Science Fund I, Llc Layering destination-dependent content handling guidance
US7930389B2 (en) 2007-11-20 2011-04-19 The Invention Science Fund I, Llc Adaptive filtering of annotated messages or the like
US9639493B2 (en) * 2008-11-05 2017-05-02 Micron Technology, Inc. Pattern-recognition processor with results buffer
JP5413060B2 (ja) * 2009-08-28 2014-02-12 富士通株式会社 メモリ診断方法及びメモリ回路
EP2330791B1 (en) * 2009-11-30 2012-10-17 Fujitsu Semiconductor Limited Message reception
CN102098272B (zh) * 2009-12-10 2014-02-19 华为技术有限公司 一种协议识别的方法、装置和系统
US9455996B2 (en) * 2011-10-03 2016-09-27 New York University Generating progressively a perfect hash data structure, such as a multi-dimensional perfect hash data structure, and using the generated data structure for high-speed string matching
US20160013976A1 (en) * 2014-07-14 2016-01-14 Futurewei Technologies, Inc. Wireless Through Link Traffic Reduction

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5416779A (en) * 1989-01-27 1995-05-16 British Telecommunications Public Limited Company Time division duplex telecommunication system
NZ232223A (en) * 1989-01-27 1993-03-26 British Telecomm Alternate burst communication for cordless phones re-established after channel failure
JPH0341519A (ja) * 1989-07-10 1991-02-22 Hitachi Ltd 知識処理システム
US5179633A (en) * 1990-06-29 1993-01-12 Digital Equipment Corporation Method and apparatus for efficiently implementing read-type procedural attachments in rete-like pattern matching environment
EP0522743B1 (en) 1991-06-26 1997-12-17 Digital Equipment Corporation Combined hash table and CAM address recognition in a network
JPH05274145A (ja) * 1992-03-26 1993-10-22 Hitachi Ltd プロダクションシステム
DE69324204T2 (de) * 1992-10-22 1999-12-23 Cabletron Systems Inc Aufsuchen von Adressen bei Paketübertragung mittels Hashing und eines inhaltsadressierten Speichers
US5473607A (en) * 1993-08-09 1995-12-05 Grand Junction Networks, Inc. Packet filtering for data networks
US5920900A (en) 1996-12-30 1999-07-06 Cabletron Systems, Inc. Hash-based translation method and apparatus with multiple level collision resolution
US6427173B1 (en) * 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication
US6714553B1 (en) 1998-04-15 2004-03-30 Top Layer Networks, Inc. System and process for flexible queuing of data packets in network switching
US6226267B1 (en) * 1998-04-10 2001-05-01 Top Layer Networks, Inc. System and process for application-level flow connection of data processing networks
US6426943B1 (en) * 1998-04-10 2002-07-30 Top Layer Networks, Inc. Application-level data communication switching system and process for automatic detection of and quality of service adjustment for bulk data transfers
US6430184B1 (en) * 1998-04-10 2002-08-06 Top Layer Networks, Inc. System and process for GHIH-speed pattern matching for application-level switching of data packets
US6529508B1 (en) * 1999-02-01 2003-03-04 Redback Networks Inc. Methods and apparatus for packet classification with multiple answer sets
US6609226B1 (en) * 2000-04-10 2003-08-19 Nortel Networks Limited Networking device and method for making cyclic redundancy check (CRC) immune to scrambler error duplication
US7075926B2 (en) * 2000-05-24 2006-07-11 Alcatel Internetworking, Inc. (Pe) Programmable packet processor with flow resolution logic
US6909713B2 (en) * 2001-09-05 2005-06-21 Intel Corporation Hash-based data frame distribution for web switches
US7240041B2 (en) 2003-11-25 2007-07-03 Freescale Semiconductor, Inc. Network message processing using inverse pattern matching

Also Published As

Publication number Publication date
WO2005055487A3 (en) 2005-08-25
KR20060134937A (ko) 2006-12-28
CN1879354A (zh) 2006-12-13
US20050108943A1 (en) 2005-05-26
KR101098747B1 (ko) 2011-12-23
JP2007512770A (ja) 2007-05-17
WO2005055487A2 (en) 2005-06-16
TW200525954A (en) 2005-08-01
JP4485529B2 (ja) 2010-06-23
US7240041B2 (en) 2007-07-03
TWI360978B (en) 2012-03-21

Similar Documents

Publication Publication Date Title
CN100534052C (zh) 使用反模式匹配的网络消息处理
KR100477391B1 (ko) 네트워크 프로세서용 완전 정합(fm) 검색 알고리즘 구현
USRE42135E1 (en) Multi-protocol data classification using on-chip cam
KR100429142B1 (ko) 네트워크 프로세서용 소프트웨어 관리 트리 구현
US9596222B2 (en) Method and apparatus encoding a rule for a lookup request in a processor
US7411418B2 (en) Efficient representation of state transition tables
US6947931B1 (en) Longest prefix match (LPM) algorithm implementation for a network processor
CA2635969C (en) Systems and methods for improved network based content inspection
US7613775B2 (en) Network message filtering using hashing and pattern matching
US6275861B1 (en) Method and apparatus to identify flows in data systems
US20070150614A1 (en) Method and apparatus for implementing filter rules in a network element
US20090132554A1 (en) Data processing system
GB2371705A (en) Network switch with mutually coupled look-up engine and network processor
KR101017536B1 (ko) 패턴 매칭을 사용하는 네트워크 메시지 처리
US11929837B2 (en) Rule compilation schemes for fast packet classification
GB2371381A (en) Tree based search method

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090826

Termination date: 20191105