CN1653763A - 在基于硬件的包交换中用于存储器有效的快速vlan查找和插入的方法和设备 - Google Patents

在基于硬件的包交换中用于存储器有效的快速vlan查找和插入的方法和设备 Download PDF

Info

Publication number
CN1653763A
CN1653763A CNA038113759A CN03811375A CN1653763A CN 1653763 A CN1653763 A CN 1653763A CN A038113759 A CNA038113759 A CN A038113759A CN 03811375 A CN03811375 A CN 03811375A CN 1653763 A CN1653763 A CN 1653763A
Authority
CN
China
Prior art keywords
pointer
data
subclauses
key
memory
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.)
Granted
Application number
CNA038113759A
Other languages
English (en)
Other versions
CN100450073C (zh
Inventor
M·纳瓦达
S·库鲁帕蒂
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN1653763A publication Critical patent/CN1653763A/zh
Application granted granted Critical
Publication of CN100450073C publication Critical patent/CN100450073C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related 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]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • H04L12/4645Details on frame tagging
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

这里描述了一种在基于硬件的包交换中用于存储器有效的快速VLAN查找和插入的方法和设备。交换机中引入表格管理引擎(TME),以提高数据查找和管理。该TME管理被划分成两个表格的存储器,一个包含数据条目(“数据条目表格”203),一个包含指针和有效位(“指针表格”205)。该TME包括阅读器/散列器(206)、执行表格引擎(208)、自由列表引擎(210)和控制元件(214)。阅读器/散列器从密钥获得内容,该密钥可以是VLAN规则。执行表格引擎使用密钥内容寻址存储器中的指针区域,以检索数据。执行表格引擎也负责写入/删除存储器中的数据,并用于指针管理。

Description

在基于硬件的包交换中用于存储器有效的 快速VLAN查找和插入的方法和设备
技术领域
本发明通常涉及数据处理领域,并且特别涉及在基于硬件的包交换中进行存储器有效的快速VLAN查找和插入。
背景技术
随着计算装置和网络装置变得越来越快,常规方法已经不能够满足数据表格管理中的速度需求。例如,密钥查找的速度已经成为许多装置和应用中的关键点,并且有时候成为瓶颈,其必须在表格中快速查找出与密钥相关联的数据。密钥可以是用作索引或找到附加数据的查找标准的任何数据片段,但是在网络语境中,密钥通常为网际协议(IP)地址、媒体访问控制(MAC)地址、虚拟局域网(VLAN)标志、和其它网络标识符。
提高密钥查找速度的方案有时候取决于用来存储所查找数据表格的存储器的特征。随机存取存储器(RAM)在通过地址表示的特定位置存储数据。当将该地址提供给RAM,RAM就返回其中所存储的数据。然而为了找到正确的地址,需要将所有密钥的索引进行排序并查找与该密钥相关联的地址,或者必须查找所有相关联的数据条目,以找到该密钥的表示及其相关联的RAM地址。现有许多查找算法,可以缩短查找与密钥相关联的地址的查找时间。
有一种类型的硬件存储器,按内容存取存储器(CAM)通过根据该数据内容本身、而不是根据其在存储器中的地址来检索该数据,可以提高查找所存储的数据条目的速度。当将数据提供给CAM,该CAM直接返回找到相关数据的地址。对于许多应用,通过将所想要的信息同时与所存储数据条目的整个列表比较,CAM比常规存储器查找算法具有更好的性能。因此,在查找时间是重点并且查找时间被限制非常短的应用中使用CAM。
不幸的是,离散硬件和集成电路CAM的实现在芯片区域要求和/或设计复杂性上都相对要昂贵。在某些应用中,可以使用直接映射缓存来替代CAM,但是这样就失去了CAM可以将数据条目放置在数据结构中任意位置的特征,并且引入了诸如数据冲突和未使用存储器区域的不期望的特征。
附图说明
通过范例的方式、而不是通过限制的方式对本发明进行说明,在所列的附图中类似的附图标记表示相似的元件,其中:
图1的方框图是根据本发明网络实施例的计算网络系统的范例,其使用了表格管理引擎(TME)范例;
图2的方框图为根据本发明一个实施例的TME范例;
图3的图形表示为根据本发明的一个实施例、根据密钥的内容检索和/或访问存储器范例;
图4的方框图为图2的执行表格引擎范例;
图5的图形表示为根据本发明的数据插入实施例的、自由数据条目存储器区域的链表范例;
图6的图形表示为根据本发明的数据删除实施例的、自由数据条目存储器区域的链表范例;
图7的流程图为根据本发明一个实施例的、数据条目检索方法的范例;
图8的流程图为根据本发明一个实施例的、密钥插入方法的范例;
图9的流程图为根据本发明一个实施例的、数据条目删除方法的范例;和
图10的图形表示为包括内容的存储器媒体范例,其中当执行这些内容时会使得访问的机器实施TME的一个或多个实施例、方面、和/或方法。
具体实施方式
本发明通常涉及在基于硬件的包交换中用于存储器有效的快速VLAN查找和插入的方法和设备。
根据本发明教导,引入表格管理引擎(TME)以提高数据表格查找和管理。因为有非常多的计算和网络装置可以存储和检索数据,TME可以改善许多类型的表格、列表和数据库的数据查找速度和管理性能。例如,在数据通信领域中,TME可以提高使用地址表、翻译表、过滤表、和/或VLAN规则表的装置和应用的速度。
实施本发明各方面的范例环境
图1的方框图为范例计算网络100,其中TME 102、104和106可以提高数据包交换和路由的性能。所述的范例网络100包括路由器112、两个交换机108、110和六个如图所示通信连接的计算主机120-130。该范例计算网络110被逻辑地划分为VLAN A 114、VLAN B 116和VLANC 118。范例的网络装置、诸如所示交换机108、110和路由器112典型的使用内表以将所接收到的每一数据包的源地址与存储在该表格中目的地信息关联起来。
使用VLAN规则作为目的地信息的范例,每一VLAN规则可以是一个或多个端口和/或目的地地址和/或其它包导向信息。相应的,按照特定的VLAN规则导向(根据该装置)将每一数据包发送到适当的硬件地址和/或IP地址。虽然所描述的计算网络100是一个提供其中可以实施TME102、104和106的上下文的环境,也可以使用许多其它环境和应用。
当计算网络100路由和导向数据包时,一个或多个TME 102、104和106可以适用于各种参与网路的组件,诸如可以适用于所述的路由器112以及两个交换机108和110。TME 102、104和106可以在主机120-130、以及客户机中实施。实际上,可以在计算网络100的任何部分中使用TME 102、104和106,其中出现有数据查找和/或保留信息表格。
TME 102、104和106可以增强计算网络100中的IP地址、端口地址和硬件地址表格的性能和管理。当装置中接收到数据包的时候,其中该装置使用数据包中的信息来决定对数据包的转发,TME(102、104、106)使用数据包的内容来直接在表格中索引,该表格存储有(或其可以存储)对应于该数据包的数据条目。该数据条目用于具有相同内容的、或可以被读出和/或散列出以提供相同内容的其他数据包。
该数据条目包含转发信息。换言之,来自该数据包的内容直接用作查找该密钥所关联的数据条目的存储器地址,而不需要进一步执行对密钥列表的遍历,以找到该密钥的存储器地址。用最简单的话说,基本上该密钥内容就用作存储器地址。TME 102、104和106执行通过内容对存储器寻址的这一功能,而不需要附加的已知CAM的硬件元件。
在所述的计算网络100中,在具有TME 104的第一交换机108中接收到VLAN A 114中第一主机120的数据包。该TME 104读取和/或散列该数据包,以找到所需内容,诸如VLAN A114的VLAN标志。该内容对应于表格中的区域,其中该表格的建立使得表格区域对应于可从数据包中获得(可读取和/或散列)的各种内容。于是该内容就直接提供用于到该表格中索引、并获得该数据包的目标信息(或者指向该目标信息的指针)的地址,而不需要使用查找算法来查找对应于该内容的存储器地址。该目标信息可以是具有端口和地址信息的VLAN规则。不需要已知CAM硬件元件就可以通过内容执行对表格的寻址。使用该密钥的数据条目中的目标信息,将该数据包转发给也具有TME 106的第二交换机110。如上所述,该TME 106也通过内容对其数据条目表格进行寻址,并将该数据包导向给路由器112。该路由器也具有TME 102,其功能如上所述。于是,该数据包被导向和路由通过各种网络装置,到达其最终目的地,VLAN A114中的第二主机122。TME 102、104和106比已知的非CAM方法提供更快的数据包导向,并且在所述的范例中,其在比已知方法更加有效的使用存储器的同时还提供更快的VLAN查找,而已知方法需要检索和/或查找算法来找到每一密钥的存储器地址。
范例结构
图2的结构图为根据本发明一个实施例的、用于提高一个或多个存储器中(在存储器中)数据表格203、205性能的范例TME 200。提供了范例部件的概观,以介绍范例结构。在该实施例中,TME 200包括阅读器/散列器(阅读器)206、执行表格引擎208、自由列表引擎210、自由区域头指针寄存器212和控制元件214,其按照如图所述通信耦合。TME200与存储控制器215耦合,该存储控制器与存储器中的表格203、205耦合。可以使用多于一个的存储控制器215。在该实施方式中,第一表格203包含数据条目(“数据条目表格”203),第二表格205包含指针和有效位(“指针表格”205)。应该注意到,包括在TME 200中的或被TME 200使用的表格203、205可以被正确的称作为单表或多表,因为它们都是相关的,并且可以在不同的存储器或存储器部分中按照各种方式划分。
为了解释本发明的各个方面,第一表格203也可以称为第一存储器203和/或数据条目存储器203。第二表格205也可以称为第二存储器205和/或指针存储器205。相应的,表格中的具体区域也可以称为存储器区域。本领域的熟练技术人员会理解,此处第一表格203和第二表格205以及具体区域的这些替换术语基本上相同,因为在计算和网络装置中使用的表格通常在存储器中实现。表格和/或存储器中的数据条目、指针和有效位也可以存储在不同的装置中。
按内容的存储器寻址能力
范例TME 200接收到数据,诸如密钥216和/或数据条目290。如果该应用是计算网络100,密钥216可以是包括在数据包/数据报的报头中的硬件地址、软件地址、和/或VLAN标志,但是在其它非IP应用中,密钥216可以是任何数据。从该密钥216中获得的内容用于在表格/存储器区域中直接寻址和/或索引。这里使用的“直接”意思指不需要使用查找算法来对包含多个密钥或其它数据条目的列表和/或索引文件进行排序,以将存储在列表/索引文件中的存储器地址与该密钥216关联。例如,如图3中所示,来自密钥的范例302的内容值“7”基本上就是该密钥的存储器区域304的地址和/或位置“7”,从而提供了对标准类型的存储器诸如RAM进行对内容的寻址能力,并且避免了对密钥、内容或记录的列表的遍历。
返回到图2,阅读器206使用密钥216中的全部或部分数据从密钥216中获得内容。也就是,除了仅仅读取密钥216以获得其内容之外,阅读器206也可以通过散列全部或部分密钥216来获得内容。在这一点上,通过阅读器206所确定的内容并非必须是该密钥中数据的一对一的文字翻译。对该阅读器206以及所获得内容的唯一要求就是,通常可以从给定密钥216中获得相同的内容。在网路环境中,这就意味着产生相同内容的数据包会被导向到相同的目的地。除了直接读取和/或散列密钥216来获得内容之外,也可以用预定内容代替由阅读器206读取的实际内容来获得内容,也就是,通过位掩蔽、和/或通过其它可从给定密钥216产生复制内容的方法。
为了进一步描述根据本发明一方面的内容的寻址能力,如图2所示,密钥的指针224在第二表格205的第四(从零数起)位置246具有内容“4”,密钥的指针226在第二表格205的第六位置250具有内容“6”,并且密钥的指针228在第二表格205的第十二位置262具有内容“12”。应该注意到,不同于表格中或存储器中指针的区域,指针的实际值(该指针所指向的地址)并不对应于其相关联的密钥的内容,除非巧合。相反,指针的地址值通常指向第一表格203中某个位置的数据条目位置。
图4所示为图2的范例执行表格引擎的结构图。密钥分度器402、指针引擎404、数据条目检索器406以及数据条目插入器/删除器408的耦合如图所示。密钥分度器402从阅读器406接收到密钥216的内容,并使用该内容在第二存储器205中索引。在对应于密钥216的内容的存储器区域246,密钥分度器读取存储在其中的有效位,以确定是否有与密钥216相关联的有效数据条目。该密钥分度器402使用密钥216的内容直接寻址第二存储器205,因为密钥216的内容基本上就是所需要的存储器地址。
使用密钥内容“4”作为范例,指针引擎404在存储器区域272处新插入的数据条目与第二存储器205中对应于密钥216的内容“4”的存储器区域246之间建立指针224。通过指针引擎404建立的指针246是存储器区域272的地址,该存储器区域包含第一存储器203中的数据条目。在密钥删除操作中,指针引擎304也删除该指针224,并将相关联的有效位设置为零。
在某些实施例中,当进行指针操作的时候,指针引擎404也执行设置有效位的功能,也就是设置有效位来指示指针是否存在,并且从而指示与密钥216相关联的数据条目。
数据条目检索器406读取密钥分度器402提供的、存储在存储器区域246处的指针224,并将指针224指向第一存储器203中的存储器区域272,返回所存储的数据条目。
当数据条目插入器/删除器408插入或删除存储在第一存储器203的存储器区域中的数据条目,其提示指针引擎404从第二存储器205分别添加或删除指针224,并分配存储器区域246处的有效位来分别反映所添加或删除的数据条目是否存在。
VLAN实施例
在用于IP数据通信的表格内容中,来自数据包/数据报(“数据包”)的报头的IP地址通常用作密钥216,以查找关于该数据包的相关联的信息,诸如目的地端口号、发送者的访问权限以及在网络中的位置、或者可以应用的VLAN规则。在一个范例实施例中,范例TME 200用作VLAN规则表,或用于管理VLAN规则表。
例如在以太网交换机中,需要存储VLAN规则,并使用进入数据包的VLAN标志查找该VLAN规则。需要为进入的数据包存储和查找一定数目的VLAN规则条目,例如1K条目。
TME 200可以利用VLAN标志为12位宽这一实事,以提供在传统CAM芯片中实现VLAN规则和/或地址空间所具有的功能,但是没有对CAM硬件的芯片区域要求和/或设计复杂性。类似于CAM,TME 200可以利用所选择RAM中的全部存储器区域,防止包冲突和仿效CAM的内容的寻址能力。
尽管在RAM中实现VLAN规则表时会有额外的存储器开销,诸如1K的RAM,但是使用TME 200作为VLAN规则表和/或VLAN规则表管理器来进行VLAN规则查找要比使用固定大小的散列结构和/或缓存更好,因为该TME 200具有CAM功能,从而通过防止包冲突而保证地址空间(例如1K)。后一特征对于使用TME 200的芯片厂家来说至关重要,其必须保证可以存储一定数目的条目。
参照图2,当使用TME 200实现VLAN规则表的时候,对于第一存储器203和第二存储器205可以选择各种大小的RAM。对于第一存储器203,可以使用1K的RAM(或者按照所想要大的存储容量)来存储范例1K的VLAN规则条目。对于第二存储器205,由于4K通常是VLAN规则表中所需要的最大数目的VLAN规则条目,所以可以使用完整4K的RAM来存储最大4K的指针以及相关联的有效位。
对于存储在第二存储器205中的存储位置中的指针和有效位,11位的宽度足以用于具有1K深度的VLAN规则表。指针表格205中的每一存储器区域可以有1位分配给有效位,10位分配给指针。在范例中使用10位指针224、226和228,因为具有10位的二进制数可以表示数据条目表格202中用于VLAN规则条目的理想1K(1024位)存储器区域。通过选择足够宽的存储器,VLAN规则条目的长度可以变化和调节,例如200位宽的存储器用于相应宽的规则条目。于是,TME 200提供方便、高速和有效存储的VLAN规则表格,其具有CAM芯片所具有的所有优点,而不需要使用CAM芯片。
自由列表引擎
仍然参照图2,在某些实施例中TME 200可以包括自由列表引擎210。自由列表引擎210管理和维护第一存储器203中的有效(“自由”)存储器区域(例如:275-276)的列表。在一个实施例中,自由列表引擎210中包括自由区域头指针寄存器212,以指向自由存储器区域275-276的列表中第一有效自由存储器区域275。第一有效自由存储器区域275分配给下一个要插入的数据条目,除非某些其它被占据的数据条目区域272-274首先成为自由。
在一个实施例中,自由存储器区域275-276的链表用于存储与密钥相关联的数据条目。为了描述维护链表的范例操作,根据本发明的数据插入方面,图5的图形表示为自由存储器区域的链表范例。用于存储与密钥相关联的数据条目的第一存储器203、自由列表引擎210和自由区域头指针寄存器212都是参与维护该链表的范例组件。
在范例数据条目插入中,将密钥“13”的数据条目502插入到第一有效存储器区域275中。下一个自由存储器区域276的地址被传送到自由区域头指针寄存器212,以更新头指针504,使得其不再指向现在所占据的存储器区域275,而是指向506该链表中的下一个自由存储器区域276。该下一个自由存储器区域276现在成为第一有效自由存储器区域。
类似于前图,根据本发明的数据删除方面,图6的图形表示为自由存储器区域的范例链表。第一存储器203用于存储与密钥相关联的数据条目,自由列表引擎210具有自由区域头指针寄存器212,它们都是参与操作的范例组件。
为了描述在数据条目删除期间维护自由存储器区域的链表的范例动态,考虑在数据条目删除之前自由区域头指针寄存器212和自由存储器区域的链表的状态。自由区域头指针寄存器212包含第一有效自由存储器区域276的地址,用指针604表示。然后开始数据条目删除:从其存储器区域274中删除密钥“12”的数据条目602。将第一有效自由存储器区域276的地址从自由区域头指针寄存器212中拷贝到新空出的存储器区域274,建立指针603,其从新空出的存储器区域274指向(前者)第一有效自由存储器区域276。将新空出的存储器区域274的地址拷贝到自由区域头指针寄存器212中。于是,新空出的存储器区域274成为位于自由存储器区域的链表表头的新的第一有效自由存储器区域。在该实施例中,从其中删除数据条目的存储器区域总是成为位于自由存储器区域的链表表头的第一有效自由存储器区域。
已经描述了TME 200可以进行的操作,本领域的普通技术人员会理解的是,各种结构的TME 200都是允许的。所使用的存储控制器215和存储器203、205的数目可以变化。存储控制的功能也可以集成到控制元件214中,取代使用单独的存储控制器215。在某些实施例中,第一存储器203和/或第二存储器205可以完全或部分的与TME 200集成起来,但是在其它实施例中,第一存储器203和第二存储器205可以与TME 200分开,例如当在已经具有TME 200可使用的存储器的装置或设计中可再生的实现TME 200的时候。
为了便于描述,尽管已经根据部件、模块和引擎描述了设备实施例,但是一个或多个程序、子程序、组件、子组件、寄存器、处理器、电路、软件子程序和/或软件对象、或其中的任何组合可以替代一个或几个部件、模块和/或引擎。
方法
一旦阅读器206从密钥216获取内容,TME 200就可以使用该内容执行各种功能,例如TME 200可以进行密钥216的存在查询、使用该密钥进行数据条目检索、密钥216(及其相关联数据条目)的插入、和密钥216(及其相关联数据条目)的删除。下面将描述前述四个操作中的每一个。
执行密钥查找/数据条目检索
根据检索的密钥216执行密钥216查找和执行数据条目检索是相同的。为了便于描述,假定在表格203、205中已经存在某些数据条目(在位置272、273、274中)和某些相关的指针224、226、228,但是在开始,在任何数据插入之前,第二表格205中应该没有指针并且所有的有效位都设为“零”。同样的,在起始状态中,第一表格203也会释放其全部存储器区域,并且在一个实施例中,将存储器区域在链表中链接在一起。
图7为根据本发明一方面的范例数据检索方法的流程图。首先读取和/或散列密钥得到内容,700。使用该内容寻址对应于该内容的指针存储器区域,702。读取指针存储器区域中的有效位,以确定与该密钥相关联的数据条目是否存在于第一存储器的第一区域中,704、706。如果有效位指示该密钥的数据条目不存在,就结束该数据条目检索,708。如果有效位指示该密钥的数据条目存在,然后就使用存储在指针存储器区域中的指针来查找第一区域中的数据条目,710。该方法特别适用于管理VLAN规则表,其中密钥为VLAN标志,并且每一数据条目为VLAN规则。
TME 200可以用于执行上述方法。
根据本发明的一方面,当TME 200接收到密钥216的时候,设置和/或选择第二存储器205,使得每一存储器区域238-262的逻辑和/或物理位置对应于该密钥216的内容。第二存储器205中的每一物理和/或逻辑位置(例如238-262)中存储与可以接收到的可能密钥216的内容相对应的指针和有效位。该密钥的内容描述或表示在表格/存储器中的物理和/或逻辑位置。于是在通过阅读器206读取和/或散列密钥216之后,执行表格引擎可以使用密钥的内容作为地址直接进行到第二存储器205中的适当位置。
对于密钥查找和数据条目检索操作二者,执行表格引擎208进行到通过密钥216的内容表示的第二存储器205中的位置,并读取存储在该给定位置处的有效位,以确定其中是否存储有指向密钥216的数据条目的指针。如果只是执行了密钥查找,并且有效位为“真”,也就是有效位指示密钥216的有效数据条目存在,那么就完成了密钥查找操作,并且不需要进一步操作。换言之,对于密钥查找,只是检测密钥216的存在,或密钥的表示,该操作并不需要进行到比读取有效位更进一步的操作。然而数据条目检索操作需要另外的操作。
对于数据条目检索操作,一旦对应于密钥216的内容的位置中的有效位指示密钥216的指针存在,那么该指针就指向第一存储器203的数据条目区域中密匙的数据条目。例如,如果密钥216的内容为“4”,执行表格引擎208进行到第二存储器205的存储器区域“4”246,并读取存储在存储器区域“4”246的有效位,其在所描述的范例中被设为真(“1”),表示密钥216的有效指针224存在。指针224将执行表格引擎208引导到存储在第一存储器203的存储器区域272的数据条目。该执行表格引擎208然后可以检索该数据条目。
尽管在该实施例中,有效位的值“1”表示在第一存储器203中存在密钥216的数据条目,并且“0”表示不存在数据条目,但是在其它实施例中相反情况可以是真,其中“0”用来表示有效,而“1”用来表示无效。
执行密钥插入或删除
除了上述密钥查找和数据条目检索操作之外,TME 200可以进行数据条目290插入或数据条目290删除操作。尽管TME 200可以使用数据条目的静态表格,但是在需要动态改变数据条目的表格、而不仅是具有固定数目数据条目的静态表格的许多类型的应用中,可以使用插入和删除操作。
图8的流程图为根据本发明一方面的、执行“密钥插入”的范例方法,也就是插入密钥的数据条目和设置指针指向存储器区域中表示该密钥的数据条目。于是,该密钥插入方法是用于建立数据表格的方法。将与密钥相关联的数据条目插入到第一存储器的第一区域,以开始建立数据条目的表格,800。可以通过TME 200的执行表格引擎208插入该数据条目。具体的,TME 200的数据条目插入器/删除器可以用来进行该插入。将指向数据条目的指针插入到第二存储器中的第二区域,开始建立指针表格,802。选择第二区域,使得密钥的内容就直接给出了第二区域的地址和/或位置,而不需要查找整个密钥或其它条目的列表。因此,第二区域的地址和/或位置表示该密钥的内容。执行表格引擎208的指针引擎404组件可以用来执行指针插入。设置在第二区域中的有效位,以指示存在与该密钥相关联的数据条目,804。指针引擎404可以用来设置有效位。
使用具有内容“4”的密钥作为数据条目290的插入范例,TME 200首先执行上述密钥216的查找操作,并读取存储器区域246中表示密钥216的有效位,以确定当前是否存储有密钥216的数据条目。一旦确定还没有存储密钥216的数据条目,TME 200接收所要插入的数据条目290,并且执行表格引擎208将数据条目290存储在第一存储器203的第一有效自由存储器区域272中。如果保留有数据条目的自由存储器区域的列表,那么从该列表中删除被所插入数据条目使用的存储器区域,并且自由列表引擎210重新建立新的第一有效自由位置。执行表格引擎208然后将指向所存储的数据条目的指针224放入第二存储器205的存储器区域246中;存储器区域246对应于密钥216的内容“4”。由于接收数据条目290的存储器区域272的地址为“0000000000”,指针224就由地址“0000000000”组成。最后,执行表格引擎208为存储器区域246设置有效位,其中新指针为“有效”,指示已经为密钥216放入具有内容“4”的有效数据条目。
在该实施例中,在操作中出现错误的情况下,最后设置有效位,从而使得有效位的值尽可能准确的给出对给定密钥的数据条目是否存在的指示。错误会导致有效位保持在“无效”状态,指示没有密钥216的数据条目。
在一个实施例中,数据条目删除操作遵从的顺序与插入顺序相似,不同之处在于是移走而不是插入数据条目和指针。
图9的流程图为根据本发明一方面的数据删除方法范例。从第一存储器中的数据条目区域中删除与密钥相关联的数据条目,900。调节自由数据条目区域的链表中的指针,以包括通过删除数据条目所释放的数据条目区域,902。从第二存储器中的指针区域删除刚刚移走的指向该数据条目的指针,其中该指针区域表示密钥的内容,904。然后设置指针区域中的有效位,以指示与该密钥相关联的数据条目不存在,906。
可以使用TME 200执行删除数据条目的方法。使用具有内容“4”的密钥216作为范例,通过执行表格引擎208删除存储器区域272中的数据条目。也从第二存储器205中的存储器区域246移走指针224。第一存储器203中新释放的存储器区域272恢复到自由数据条目存储器区域(例如表格203中的存储器区域275-276以及其它空的存储器区域)的列表中。最后,设置存储器区域246的有效位,以指示特定密钥216的数据条目不存在。将释放的存储器区域272恢复到自由数据条目存储器区域275-276的列表中,在其时序上可以相对于数据条目和指针的删除而改变。然而,在该实施例中,将释放的存储器空间(272,如果该数据条目被删除)恢复到自由数据条目存储器区域275-276的列表中,当重新整理被删除的、指向或源自该数据条目的指针的时候,动态的进行该恢复操作,并且其是通过自由列表引擎210来进行的。
替换实施例
图10为制造产品的图形表示,其包括具有内容1002的机器可读媒体1000,该内容使得主机装置实现本发明的表格管理引擎的一个或多个实施例、方面、和/或方法。该内容可以是指令,诸如计算机指令,或者可以是能够实施的设计信息。该内容使得机器实现本发明的方法和/或装置,包括在第一存储器203的数据条目区域272中插入与密钥相关联的数据条目、在第二存储器205中的指针区域插入指向数据条目的指针224,其中指针区域246的地址和/或位置表示该密钥的内容,并且设置指针区域246中的有效位,以指示与该密钥相关联的数据条目存在于数据条目区域272中。
主机接收到的密钥可以是12位的VLAN标志。该主机可以实现具有1K VLAN规则RAM的VLAN规则表,其中每一VLAN规则是密钥的数据条目。当在1K的规则RAM中存储VLAN规则时,在第二RAM中放置指向VLAN规则的指针,具体而言就是4K的指针RAM,在表示密钥的内容的4K指针RAM中的区域。为了利用全部的1K VLAN规则RAM,指针的长度为10位。有效位也存储在4K指针RAM中的指针区域,以指示对于给定的密钥内容是否存在有效的VLAN规则。于是,通过机器实施的TME使用接收到的VLAN标志的内容,快速地寻址4K指针RAM,并且仅仅通过读取有效位快速地评估是否存在该密钥的有效VLAN规则。不需要特殊的硬件和/或CAM芯片的复杂设计就可以实现通过机器实施的TME的很高的速度。
本发明的方法和设备可以部分的作为可以包括机器可读媒体的计算机程序产品提供。该机器可读媒体可以包括,但不仅限于软盘、光盘、CD-ROM、磁光盘、ROM、RAM、EPROM、EEPROM、磁性或光学卡、闪存、或适合于存储电子指令的其它类型的媒体。而且,部件也可以作为计算机程序产品下载,其中该程序可以通过通信链路(例如调制解调器或网络连接)、通过载波或其它传播媒体中的数据信号的形式、从远程计算机传送到请求计算机。关于这一点,该制造产品也可以包括这种载波或其它传播媒体。
虽然已经根据几个实施例描述了本发明,但是本领域的技术人员会认识到本发明并不限于所描述的实施例,而是可以在所附权利要求书的精神和范围中有所修改和替换的实施。该说明因此应该作为说明性的,而不是限制性的。

Claims (23)

1.一种设备,包括:
阅读器,读取和/或散列密钥以确定密钥的内容;和
执行表格引擎,用于:
从阅读器接收该密钥的内容;
在存储器的数据条目区域中存储和该密钥相关联的数据条目;
在存储器中的指针区域中分配指针,其中该指针区域的地址是密钥的内容,并且该指针指向该数据条目;和
分配指针区域中的有效位,以指示该数据条目存在于该数据条目区域中。
2.权利要求1的设备,其中执行表格引擎从数据条目区域中删除该数据条目,从指针区域中删除该指针,并分配有效位以指示该数据条目不存在。
3.权利要求1的设备,进一步包括自由列表引擎,以管理数据条目可用的自由存储器区域的列表,和头指针寄存器,以在自由存储器区域的链表中维护自由存储器区域指针。
4.权利要求1的设备,该执行表格引擎进一步包括:
密钥分度器,以使用该密钥内容查找指针区域,并读取该指针区域中的有效位;
数据条目检索器,用于在该有效位指示存在与该密钥相关联的数据条目时,检索该数据条目;
数据条目插入器/删除器,以在数据区域中插入和/或删除数据条目;和
指针引擎,以插入和/或删除指针,并分配与该指针区域相关联的有效位。
5.一种方法,包括:
在第一存储器的数据条目区域中插入与密钥相关联的数据条目;
在第二存储器的指针区域中插入指向该数据条目的指针,其中指针区域的地址和/或位置表示该密钥的内容;和
设置指针区域中的有效位,以指示存在与该密钥相关联的数据条目。
6.权利要求5的方法,其中第一存储器的深度是基于第二存储器中所使用的指针长度而定的。
7.权利要求5的方法,其中在自由数据条目区域的列表中,第一存储器中的空数据条目区域链接在一起。
8.权利要求7的方法,进一步包括使用头指针寄存器,指向自由数据条目区域的列表中的第一有效自由数据条目区域。
9.权利要求8的方法,其中通过更新头指针,使其指向下一个有效自由数据条目区域,用于插入数据条目的第一有效自由数据条目区域脱离自由数据条目区域的列表。
10,权利要求5的方法,其中在第二存储器中使用10位长度的指针,并且在第一存储器中使用1024个存储器区域。
11.权利要求10的方法,其中密钥是虚拟局域网(VLAN)标志,其具有的内容用第二存储器中的存储器区域表示,并且该数据条目是VLAN规则。
12.一种方法,包括:
读取和/或散列密钥,以得到内容;
读取存储器的指针区域中的有效位,以确定在存储器的数据条目区域中是否存在与该密钥相关联的数据条目,其中该指针区域表示该密钥的内容;和
如果有效位指示存储器中存在该数据条目,将指针区域中的指针指向数据条目区域中的数据条目。
13.权利要求12的方法,其中该密钥是VLAN标志,并且该数据条目是VLAN规则。
14.一种方法,包括:
将与密钥相关联的数据条目插入到数据条目存储器中的自由数据条目区域中;
调节一个或多个指针,以从自由数据条目区域的链表中排除自由数据条目区域;
将指针插入到存储器的指针区域,其中该指针指向该数据条目,并且存储器中指针区域的地址和/或位置表示该密钥的内容;和
设置指针区域中的有效位,以指示存在与该密钥相关联的数据条目。
15.权利要求14的方法,其中该密钥是VLAN标志,并且该数据条目是VLAN规则。
16.一种方法,包括:
从数据条目存储器中的数据条目区域删除与密钥相关联的数据条目:
调节一个或多个自由存储器区域指针,以在自由数据条目区域的链表中包括数据条目区域;
从存储器中的数据条目指针区域删除数据条目指针,其中该数据条目指针指向该数据条目区域,并且存储器中数据条目指针区域的地址和/或位置表示该密钥的内容;和
设置数据条目指针区域中的有效位,以指示不存在与该密钥相关联的数据条目。
17.权利要求16的方法,其中该密钥是VLAN标志,并且该数据条目是VLAN规则。
18.一种制造产品,包括:
包含内容的机器可读媒体,当执行该内容时,使得该访问机器执行:
读取和/或散列密钥,以确定密钥内容;
在第一存储器的数据区域中存储与该密钥相关联的数据条目;
在第二存储器的指针区域中存储指针和有效位,其中该指针区域表示该密钥的内容,并且该有效位指示该指针区域中指针的存在;和
根据该密钥内容分配和/或删除该指针,并且管理该有效位,以指示该指针区域中该指针的存在和/或不存在。
19.权利要求18的制造产品,其中该内容使得该访问机器读取表示该密钥的指针区域中的有效位,并且如果该有效位指示存在与该密钥相关联的数据条目,就检索该数据条目。
20.权利要求18的制造产品,其中该内容使得该访问机器管理该第一存储器中数据条目可用的自由区域,并维护自由区域的链表中的指针。
21.一种计算机系统,包括:
表格管理引擎,用于:
在第一存储器的数据条目区域中存储与密钥相关联的数据条目;
分配指针到存储器中的指针区域,其中该指针区域的地址对应于来自该密钥的内容,并且该指针指向该数据条目;
分配该指针区域中的有效位,以指示该数据条目区域中该数据条目的存在;和
至少一个存储器,以存储该数据条目、指针、和有效位。
22.权利要求21的计算机系统,进一步包括:
阅读器,以读取和/或散列该密钥,确定内容;
密钥分度器,以根据该内容查找指针区域,并读取该指针区域中的有效位:
数据条目检索器,在该有效位指示存在与该密钥相关联的数据条目时,检索该数据条目;
数据条目插入器/删除器,以在数据区域中插入和/或删除数据条目;和
指针引擎,以插入和/或删除指针,并分配与该指针区域相关联的有效位。
23.权利要求21的计算机系统,进一步包括自由列表引擎,以管理数据条目可用的自由存储器区域的列表,包括头指针寄存器,以维护自由存储器区域的列表中的自由存储器区域指针。
CNB038113759A 2002-03-20 2003-03-04 在基于硬件的包交换中用于存储器有效的快速vlan查找和插入的方法和设备 Expired - Fee Related CN100450073C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/103,470 2002-03-20
US10/103,470 US6842791B2 (en) 2002-03-20 2002-03-20 Method and apparatus for memory efficient fast VLAN lookups and inserts in hardware-based packet switches

Publications (2)

Publication Number Publication Date
CN1653763A true CN1653763A (zh) 2005-08-10
CN100450073C CN100450073C (zh) 2009-01-07

Family

ID=28452370

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038113759A Expired - Fee Related CN100450073C (zh) 2002-03-20 2003-03-04 在基于硬件的包交换中用于存储器有效的快速vlan查找和插入的方法和设备

Country Status (8)

Country Link
US (1) US6842791B2 (zh)
EP (1) EP1486040B1 (zh)
CN (1) CN100450073C (zh)
AT (1) ATE335334T1 (zh)
AU (1) AU2003228273A1 (zh)
DE (1) DE60307241T2 (zh)
TW (1) TWI293224B (zh)
WO (1) WO2003081857A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110865946A (zh) * 2018-08-28 2020-03-06 联发科技股份有限公司 计算机网络管理方法和相应地计算机网络装置

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7356030B2 (en) * 2000-11-17 2008-04-08 Foundry Networks, Inc. Network switch cross point
US7236490B2 (en) 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
US7584262B1 (en) 2002-02-11 2009-09-01 Extreme Networks Method of and system for allocating resources to resource requests based on application of persistence policies
US7447777B1 (en) 2002-02-11 2008-11-04 Extreme Networks Switching system
US7814204B1 (en) 2002-02-11 2010-10-12 Extreme Networks, Inc. Method of and system for analyzing the content of resource requests
FR2837587B1 (fr) * 2002-03-22 2008-04-11 St Microelectronics Sa Procede et circuit pour fournir une donnee de contexte d'un dispositif a partir d'une adresse associee a ce dispositif
US7187687B1 (en) 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US7266117B1 (en) 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US20090279558A1 (en) * 2002-05-06 2009-11-12 Ian Edward Davis Network routing apparatus for enhanced efficiency and monitoring capability
US20120155466A1 (en) 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7468975B1 (en) 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US20040001492A1 (en) * 2002-07-01 2004-01-01 Johnson Erik J. Method and system for maintaining a MAC address filtering table
US8289836B2 (en) 2003-02-27 2012-10-16 Intel Corporation Apparatus and associated methods to introduce diversity in a multicarrier communication channel
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
US7474653B2 (en) * 2003-12-05 2009-01-06 Hewlett-Packard Development Company, L.P. Decision cache using multi-key lookup
US7817659B2 (en) 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US7649879B2 (en) 2004-03-30 2010-01-19 Extreme Networks, Inc. Pipelined packet processor
US7613209B1 (en) 2004-03-30 2009-11-03 Extreme Networks, Inc. System and method for egress packet marking
US7385984B2 (en) 2004-03-30 2008-06-10 Extreme Networks, Inc. Packet processing system architecture and method
US7453874B1 (en) 2004-03-30 2008-11-18 Extreme Networks, Inc. Method and system for incrementally updating a checksum in a network data packet
US7292591B2 (en) 2004-03-30 2007-11-06 Extreme Networks, Inc. Packet processing system architecture and method
US7822032B1 (en) * 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
US7580350B1 (en) 2004-03-30 2009-08-25 Extreme Networks, Inc. System for deriving packet quality of service indicator
US7463628B2 (en) 2004-03-30 2008-12-09 Extreme Networks, Inc. Packet data modification processor command instruction set
US8161270B1 (en) 2004-03-30 2012-04-17 Extreme Networks, Inc. Packet data modification processor
US7304996B1 (en) * 2004-03-30 2007-12-04 Extreme Networks, Inc. System and method for assembling a data packet
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US7752355B2 (en) * 2004-04-27 2010-07-06 International Business Machines Corporation Asynchronous packet based dual port link list header and data credit management structure
US7889750B1 (en) 2004-04-28 2011-02-15 Extreme Networks, Inc. Method of extending default fixed number of processing cycles in pipelined packet processor architecture
EP1759312B1 (en) * 2004-05-21 2017-08-02 CA, Inc. Method and apparatus for loading data into an alternate evaluator for directory operations
US7646773B2 (en) * 2004-08-02 2010-01-12 Extreme Networks Forwarding database in a network switch device
US7657703B1 (en) 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
US7882086B1 (en) * 2005-12-21 2011-02-01 Network Appliance, Inc. Method and system for portset data management
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US7894451B2 (en) * 2005-12-30 2011-02-22 Extreme Networks, Inc. Method of providing virtual router functionality
US7817633B1 (en) * 2005-12-30 2010-10-19 Extreme Networks, Inc. Method of providing virtual router functionality through abstracted virtual identifiers
US7822033B1 (en) * 2005-12-30 2010-10-26 Extreme Networks, Inc. MAC address detection device for virtual routers
US7903654B2 (en) 2006-08-22 2011-03-08 Foundry Networks, Llc System and method for ECMP load sharing
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US20090279441A1 (en) 2007-01-11 2009-11-12 Foundry Networks, Inc. Techniques for transmitting failure detection protocol packets
US8271859B2 (en) 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8037399B2 (en) 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8149839B1 (en) 2007-09-26 2012-04-03 Foundry Networks, Llc Selection of trunk ports and paths using rotation
CN101459679A (zh) * 2007-12-12 2009-06-17 华为技术有限公司 网络存储设备及数据读写控制方法
US7852486B2 (en) * 2008-02-07 2010-12-14 Board Of Regents, The University Of Texas System Wavelength and intensity monitoring of optical cavity
US8139583B1 (en) 2008-09-30 2012-03-20 Extreme Networks, Inc. Command selection in a packet forwarding device
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
US10719387B2 (en) * 2018-04-25 2020-07-21 Oracle International Corporation Memory interface with tamper-evident features to enhance software security

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5386532A (en) * 1991-12-30 1995-01-31 Sun Microsystems, Inc. Method and apparatus for transferring data between a memory and a plurality of peripheral units through a plurality of data channels
US5386578A (en) * 1992-01-02 1995-01-31 Lin; Min H. Method for sorting and merging in a data processing system using a matrix of cells
US6032207A (en) * 1996-12-23 2000-02-29 Bull Hn Information Systems Inc. Search mechanism for a queue system
US6034958A (en) 1997-07-11 2000-03-07 Telefonaktiebolaget Lm Ericsson VP/VC lookup function
US6091707A (en) 1997-12-18 2000-07-18 Advanced Micro Devices, Inc. Methods and apparatus for preventing under-flow conditions in a multiple-port switching device
US6601150B1 (en) * 1999-05-10 2003-07-29 Nortel Networks Limited Memory management technique for maintaining packet order in a packet processing system
US6901452B1 (en) 2000-03-02 2005-05-31 Alcatel Selectable prioritization for data communication switch

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110865946A (zh) * 2018-08-28 2020-03-06 联发科技股份有限公司 计算机网络管理方法和相应地计算机网络装置
CN110865946B (zh) * 2018-08-28 2023-11-03 联发科技股份有限公司 计算机网络管理方法和相应地计算机网络装置

Also Published As

Publication number Publication date
TW200305321A (en) 2003-10-16
AU2003228273A1 (en) 2003-10-08
CN100450073C (zh) 2009-01-07
DE60307241T2 (de) 2007-07-12
EP1486040A1 (en) 2004-12-15
TWI293224B (en) 2008-02-01
DE60307241D1 (de) 2006-09-14
US6842791B2 (en) 2005-01-11
EP1486040B1 (en) 2006-08-02
ATE335334T1 (de) 2006-08-15
WO2003081857A1 (en) 2003-10-02
US20030214956A1 (en) 2003-11-20

Similar Documents

Publication Publication Date Title
CN1653763A (zh) 在基于硬件的包交换中用于存储器有效的快速vlan查找和插入的方法和设备
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
CN1270487C (zh) 用于三重内容可寻址存储器(tcam)表管理的方法和设备
EP1168723B1 (en) Method and apparatus for longest matching prefix determination in a communication network
EP1623347B1 (en) Comparison tree data structures and lookup operations
US7613134B2 (en) Method and apparatus for storing tree data structures among and within multiple memory channels
US7415472B2 (en) Comparison tree data structures of particular use in performing lookup operations
CN1504912A (zh) 用树状分段改善树搜索性能和存储器带宽的方法和系统
US20060271540A1 (en) Method and apparatus for indexing in a reduced-redundancy storage system
CN1377543A (zh) 用于四路散列表的方法和装置
Pao et al. Efficient hardware architecture for fast IP address lookup
EP1045556A2 (en) Forwarding information retrieval technique
JP3570323B2 (ja) アドレスに関するプレフィクスの格納方法
WO2004036589A1 (en) Virtual content addressable memory with high speed key insertion and deletion and pipelined key search
CN113139100B (zh) 一种网络流量实时索引方法及系统
CN100385880C (zh) 分组分类装置和使用字段级特里结构的方法
EP2288092A1 (en) Method and device for improving scalability of longest prefix match
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
US20020048285A1 (en) Method and device for translating telecommunication network IP addresses by a leaky-controlled memory
JP3660311B2 (ja) テーブル検索装置および方法およびプログラムおよび記録媒体
US20050102428A1 (en) Memory management for ternary CAMs and the like
KR102189398B1 (ko) 국소성-유지 해싱을 사용하는 효율적 구간 검색을 위한 방법 및 시스템
US9444731B2 (en) Methods and systems for data packet routing
CN111131197B (zh) 一种过滤策略管理系统及其方法
Kumar A thesis on acceleration of network processing algorithms

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: 20090107

Termination date: 20190304