高速路由表学习和查找的制作方法

文档序号:7611973阅读:200来源:国知局
专利名称:高速路由表学习和查找的制作方法
技术领域
本发明一般涉及通信系统,特别涉及启动高速路由表查找的地址学习。
背景技术
技术进步不容变更地推动了对提高数据通信速度的需求。为了满足该需求,网络组件必须被日益设计为进行高速操作。例如,为了解决传输线路上的增长速度,交换机(switch)必须能够进行高速路由(routing)决策,以便在这些线速(wire speed)下工作。

发明内容
按照本发明,提供用于启动高速路由表查找的地址学习技术。按照特定实施例,交换机包括由多个存储器块(memory bank)形成的路由表模块,该路由表模块能够进行高速路由表查找。
按照一实施例,交换机包括用于通信包的多个端口;用于在这些端口之间传送包的交换结构;以及逻辑划分为多行的多个存储器块,其中,每行包括来自每个存储器块的存储位置,每个存储位置能够维护路由入口(entry)。该交换机还包括溢出缓冲器,其具有多个溢出存储位置,每个溢出存储位置能够维护路由入口。该交换机还包括存储器控制模块,其从端口之一接收存储器存取请求,基于该存储器存取请求所指示的地址,确定这些行的特定行,存取所指示的行和溢出缓冲器,以进行存储器存取操作。
本发明的实施例提供各种技术优点。通过利用多个存储器块实施路由表模块,交换机能够提供相对小和便宜但极快的路由表模块。该路由表模块有时牺牲路由信息的完整性,但是这些牺牲能够带来更快速、更廉价的实施。例如,特定实施例提供有限空间,用于维护通向地址映射信息的端口。该有限空间可不支持通向地址映射的所有潜在端口的存储。在这些环境中,交换机可采取包扩散(flooding),代替“智能化”路由。然而,特定实施例试图限制这样的发生。而且,这些实施例仍可设计为符合诸如ANSI/IEEE802标准等标准。
从如下附图、说明书和权利要求书中,本领域的技术人员将容易地了解本发明的其他技术优点。而且,尽管上面已经列举具体优点,但是各种实施例可包括所有、部分或不包括所列举的优点。


为了更完全理解本发明及其优点,参考与附图相结合的如下描述,其中图1说明了按照本发明特定实施例的具有路由表模块的多端口交换机;图2是说明来自该交换机的示范性路由表模块的组件框图;图3是说明用于在潜在路由入口之间选择的示范性选择逻辑器(logic)的框图;图4是说明利用具有溢出缓冲器的多块路由表模块来处理路由表操作的方法流程图;以及图5是说明存取具有溢出缓冲器的多块存储器结构的方法流程图。
具体实施例方式
图1说明交换机10,包括通过交换结构14而互连的多个端口12。交换机10还包括路由表模块16,其包括用于存储路由信息的多个存储器块18。通常,路由表模块16维护路由信息,以控制端口12之间的包交换。具体地,路由表模块16提供多块存储器结构,以提供高速路由表操作。
每个端口12代表含有用于发送和接收包的任何适当控制逻辑器的硬件。例如,每个端口12可包括用于接收和发送包的输入模块和输出模块。该说明书中所用术语“包”,是指包括寻址信息的任何信息段。例如,包可以包含以太网帧、互联网协议(IP)包、异步传输模式(ATM)单元和/或任何其他合适的信息段。在交换机10之内,交换结构14提供从交换机10之内任一端口12到任何或所有端口12的包传输。尽管图示为交换机10之内的单个模块,但可构思为交换结构14包含单元(element)的任何适当组合和安排,这些单元被配置和设计为在足以支持端口12通信的速率下提供包交换。
在交换机10之内,路由表模块16维护路由信息,以控制端口12之间的包交换。为了控制交换结构14,路由信息包括任何数量的将地址映射到端口的入口。交换机10基于该路由信息,指示端口12之间的包。例如,路由信息中的入口可将地址XYZ映射到端口A。当另一端口12接收到去往地址XYZ的包时,交换结构14能够将该包指示到端口A。在路由模块16之内这样被给定适当的路由信息,交换结构14能够在端口12之间“智能地”交换包。而且,尽管该实例示出被映射到地址的单个端口,但交换机10可构思为通往任何数量端口12的入口映射地址。
在特定环境中,路由表模块16并不为所有接收的包映射地址。例如,端口12之一可接收包,该包具有与路由表模块16之内的入口不匹配的目标地址。按照特定实施例,如果路由表模块16不提供映射,则交换机10将该包“扩散”到所有其他端口12。也就是,交换机10从除接收端口12之外的所有端口12发送该包。
作为路由表操作的实例,考虑端口12,该端口接收含有目标地址的包。如果路由表模块16提供用于该目标地址的端口映射,则交换结构14将该包提供给路由信息之内指示的所有端口12。然而,如果路由表模块16对于所指示的目标地址,不提供映射,则交换结构14将该包扩散到交换机10的所有其他端口12。包扩散造成网络通信量增加,但是确保该包将从正确端口12传送。
在路由表模块16之内,路有信息可含有静态和动态入口。静态路由入口包括由固件设定、由系统管理员配置、和/或在路由表模块16之内静态建立的入口。例如,系统管理员可基于已知的网络拓扑,配置静态路由入口。静态入口的其他实例包括用于专用网络地址(比如广播、组播或其他专用地址)的路由信息。
动态路由入口在交换机10的工作期间被自动创建、维护和删除。按照特定实施例,交换机10利用学习方案,将动态路由入口分布(populate)于路由表模块16。按照该方案,交换机10利用所接收的包中的源地址,将入口分布于路由表模块16之内。例如,考虑交换机10在端口A接收包,该包具有源地址XYZ。如果路由表模块16当前未反映该映射,则路由表模块16可添加将地址XYZ映射到端口A的路由入口。当接收具有目标地址XYZ的后续包时,交换机10能够基于路由表模块16之内的映射,从端口A传送这些包。
路由表模块16也可提供从路由信息中去除路由入口。例如,路由表模块16可周期性删除过期入口。路由表模块16可利用时间戳和/或路由信息之内所维护的其他适当机制,进行过期入口的这种“老化”。
按照特定实施例,路由表模块16内的每个入口包括地址、路由信息和管理信息。该地址维护比如媒体存取控制(MAC)等信息,以与所接收的包中的地址相匹配。路由信息指示一个或多个端口,该或这些端口应当接收具有与该入口之内的地址相匹配的目标地址。按照特定实施例,该路有信息可实施为位向量,每个位表示对应端口是否映射到特定地址。例如,给定十二端口配置,十二位向量可指示哪个端口12映射到所指示的地址。
该管理信息包括用于维护入口的任何适当数据。按照特定实施例,该管理信息包括时间戳、静态指示器、有效指示器和检查码。时间戳反映入口的“年龄”,可被交换机10用来进行老化操作。静态指示器指示该入口是否是静态的。按照特定实施例,如果静态指示器被设定,交换机10将不会动态删除该入口。有效指示器说明该入口中所指示的映射是否正确。由此,例如为了“删除”入口,路由表模块16可简单设置有效指示器无效。检查码域可被包含于管理信息之内,以提供可靠性。
在工作期间,路由表模块16可提供三种基本操作学习、删除和查找。如上所讨论的,交换机10处理动态和静态学习。动态学习基于所接收的包中的源地址,将入口添加到路由表模块16。静态学习包含路由信息在制造、建立期间或其他适当时机的具体配置。对于学习操作,路由表模块16首先确定是否具有用于待学习的地址的适当映射,然后,如果没有这种映射存在,则在路由信息之内创建入口。由此,学习操作需要两个周期,一个周期用于读,一个周期用于写。
与学习操作相似,删除操作可处理入口的静态和动态去除。动态删除可基于老化或其他适当环境而发生。静态删除可基于配置或其他适当指示而发生,以改变路由表模块16之内的静态入口。与学习操作相似,路由表模块16首先可确定入口是否充分老化,如果是,则路由表模块16可删除该入口。由此,删除操作可占用两个周期来完成。
如前所述查找操作,试图发现用于所接收的包的目标地址的映射。按照特定实施例,交换机10处理多点播送和单点播送地址的查找。对于多点播送地址,路由表模块16一般配置有静态路由入口。这能够进行多点播送包的智能路由。对于单点播送包,路由表模块16通常基于动态学习,处理路由决策。由此,交换机10通常会将扩散单点播送包,直至学习到适当地址映射为止。按照特定实施例,交换机10能够基于地址中的信息,在多点播送和单点播送地址之间区分。例如,按照802.1标准,基于专用位的数值,从单点播送地址中区分多点播送地址。路由表模块16可利用单个读操作,进行查找操作。由此,查找操作可仅占用单个的周期来完成。
在所示实施例中,路由表模块16包括多个存储器块18和溢出缓冲器26。这些存储器单元提供路由信息的存储,将参照图2被更详细地讨论。
图2是说明路由表模块16的示范性功能组件的框图,其包括多个存储器块18、仲裁模块20、存取模块22和多个溢出缓冲器26。在所示实施例中,仲裁模块20连接到交换机10之内每个端口12,以接收学习(LRN)和查找(LUP)请求。类似地,存取模块22连接到交换机10之内每个端口12,以响应于查找请求,提供路由信息(RI)。在操作期间,存储器块18和溢出缓冲器26维护交换机10的路由信息。通常,多个存储器块结构和相关存取方案使得路由表模块16能够提供高速路由表操作。
每个存储器块18代表用于存储路由入口的任何合适硬件(包括适当的控制逻辑器)。每个存储器块18可被单独存取,以进行读或写操作。由此,例如在特定周期期间,存取模块22可从一些或所有存储器块18进行读操作。类似地,在周期期间,存取模块22可在一些或所有存储器块18上进行写操作。存取模块22可进一步混合这些操作,例如存取模块22写至一个存储器块18从所有其他存储器块18读。
与存储器块18相似,每个溢出缓冲器26代表用于存储路由入口的任何合适硬件(包括适当的控制逻辑器)。溢出缓冲器26可被单独存取,以进行读或写操作。此外,每个溢出缓冲器26连接到存取模块22。这允许存取模块22对于溢出缓冲器26提供与关于存储器块18所述相似的控制。
在所示实施例中,每个存储器块18被逻辑划分为多个位置24。例如,每个存储器块18可划分成1024位置,每个位置能够维护路由入口。此外,路由表模块16可将一组存储器块18进一步逻辑划分成多行,每行包含越过多个存储器块18的对应位置24。例如,第一行(如R0所示)可包括来自每个存储器块18的第一位置24。类似地,第n行(如Rn所示)可包括来自每个存储器块18的第n位置24。由此,例如,如果每个存储器块18被逻辑划分成1k个位置24,则存储器块18组可逻辑划分成1k行。
存取模块22利用读和/或写操作存取存储器块18。按照特定实施例,存取模块22经过一整行进行读操作。由此,例如存取模块22同时读取特定行之内每个位置24的内容。对于写操作,存取模块22可瞄准(target)特定存储器块18。例如,存取模块22可写至所选存储器块18之内的特定位置24。
按照特定实施例,单独存储器块18可不支持同时的读写操作。由此,如果存取模块22选择写至特定存储器块18,则不允许存取模块22从该特定存储器块18同时读取。然而,这不影响存取模块22从其他存储器块18读取的能力。因此在单个周期中,存取模块22可写至一个存储器块18,同时从所有其他存储器块18读取。在该实例中,如果存取模块22正试图读取一整行内容,则存取模块22将仅存取存储器块18中的位置24,而不进行写操作。由此,一个或多个存储器块18中的写操作可影响存取模块22从经过一行的所有位置24同时读取的能力。
例如,考虑具有四个存储器块18的路由表模块16。在周期期间,存取模块22安排(schedule)写操作用于第一存储器块18和读操作用于特定行。在该周期中,存取模块22将仅从第二、第三和第四存储器块18之内的位置24接收信息。由此,被给定该环境的存取模块22无法存取特定行之内位置24之一中的信息。这可能影响路由表模块16检测路由信息中匹配的能力,如下具体所述。
按照特定实施例,存取模块22利用散列(hashing)技术用于存取存储器块18。按照这些实施例,存取模块22可从源或目标地址产生散列密钥。然后,存取模块22利用该散列密钥,存取存储器块18之内所指示的行。例如,考虑逻辑划分成1k行的存储器块18。利用来自地址的十位信息,存取模块22可产生将唯一识别所述行之一的散列密钥。由此,利用该散列密钥,存取模块22可确定用于查找或学习地址的适当行。
对于查找请求,存取模块22接收目标地址,从该地址产生散列密钥,然后从该散列密钥所指示的行中读取。如果目标地址与该行中位置24之一中的入口相匹配,则存取模块22可从该匹配入口返回该路由信息。如果目标地址与指示行的位置24之内的任何入口不匹配,则存取模块22可指示“失败(miss)”,这将导致包的扩散。
然而,在所示实施例中,路由表模块16还包括溢出缓冲器26。在特定实例中,这些溢出缓冲器还可维护与存储器块18中之内所存储相似的路由表入口。例如,溢出缓冲器可提供溢出存储,维护从“充满”行溢出的路由入口。由此,在含有溢出模块26的实施例中,存取模块22可进一步确定该目标地址是否与任一溢出缓冲器26中的入口相匹配。在这些实例中,存取模块22可基于所识别的行之内或溢出缓冲器26之一之内的命中(hit),选择路由信息。仅当路由信息未出现在识别行之内或溢出缓冲器26之内时,存取模块22可由此指示失败。下面参考图3,详细说明和讨论特定选择逻辑器,其用于识别来自存储器块18和溢出缓冲器26之内的适当路由信息。而且,在总体上关于学习操作,如下讨论用于溢出缓冲器26的学习操作。
对于学习操作,存取模块22可进行读写操作。利用学习操作中提供的源地址,存取模块22产生散列密钥,从该散列密钥所指示的行中读取。如果该行不含与源地址的匹配,则路由表模块16可尝试去学习路由信息。由此,在接下来或一些后续周期中,存取模块22进行写操作,以将入口插入到散列密钥所识别的行之内的任何位置24中。按照特定实施例,路由表模块16尝试选择所指示的行之内的空位24。例如路由表可选择第一存储器块18(其具有所指示的行中的空位24),使用随机或伪随机算法,选择所指示的行之内的空位24。如果在所指示的行内没有空位24,则路由表模块16可选择忽略该学习请求,或者让该请求排队等候,直至空位24可用。
因为学习依赖于散列密钥所指示的行之内的空位24可用性,路由表模块16有时无法学习某些地址映射信息。例如,考虑具有八个存储器块18的路由表模块16,特定行中所有八个存储器位置24当前有效。如前所述,路由表模块16可简单忽略接收到的任何学习请求,这些请求产生适用于特定行的散列密钥。这会造成后续通信量的扩散增大,但是允许路由表模块16使用相对小的高速存储器结构。
为了减少从存储器块18之内的满行产生的扩散,路由表模块16可包括溢出缓冲器26。如前所述,路由表模块16包括溢出缓冲器26,以帮助减轻从满行产生的路由信息存储问题。溢出缓冲器26提供路由表模块1 6之内的附加路由入口存储。当存储器块18中的行已满时,存取模块12可将用于这些行的附加学习请求发送到溢出缓冲器26中。
例如,考虑指定特定行的学习请求,其中每个存储器块18当前具有有效入口。在该例中,存取模块22可选择在溢出缓冲器26的所选一个中存储路由表入口。存取模块22可利用任何适当的选择技术,将这些溢出学习请求存储到溢出缓冲器26之内的可用位置中。例如,如果溢出缓冲器26提供用于十六个路由表入口,则存取模块22可使用两字节向量,指示溢出缓冲器26之内的可用存储器位置。利用该向量,存取模块22可确定溢出缓冲器26之内的空位,安排学习请求以写到空位中。因此,路由表模块16可通过将学习请求溢出到溢出缓冲器26之内的空位中,处理用于满行的这些学习请求。作为实例,如果仅一行连续溢出到溢出缓冲器26中,则该行可有效扩展至溢出缓冲器26大小所允许的程度。然而,溢出缓冲器26在多个溢出行之间的共享可限制每行可能扩展到的数量。
按照特定实施例,存取模块22可允许从任一行中溢出到溢出缓冲器26之内的任一可用入口。可选地,存取模块22可仅允许特定行溢出到溢出缓冲器26之内的特定入口中。例如,考虑具有两个溢出缓冲器26的所示路由表模块16。存取模块22可分配从这些行的前半部分到第一溢出缓冲器26中的溢出,以及从这些行的后半部分到第二溢出缓冲器26中的溢出。然而,尽管描述和示出特定实施例,交换机10可构思为包括任何合适数量的溢出缓冲器26,存取模块22提供任何适当技术,用于处理路由入口到溢出缓冲器26中的溢出。此外,单个“溢出缓冲器”可包含任何数量的存储器单元,这些单元为适当数量的路由入口提供存储位置。
通过提供溢出缓冲器26,交换机10可潜在地维护高水平的吞吐量,同时在具有大量节点的网络中工作。作为实例,与配置有八个存储器块18和溢出缓冲器26(提供十六个存储位置)的另一特定交换机10相比,考虑配置有仅八个存储器块18的特定交换机10。在给定这些配置时,与没有溢出能力的交换机10配置相比,具有溢出能力的特定交换机10对于具有近三倍数量节点的网络可维护高吞吐量。
按照特定实施例,交换机10提供用于存取存储器块18和溢出缓冲器26的统一方案。该方案将前述散列密钥连同散列密钥所指示的行之中的索引(index)一起使用。在交换机10未配置溢出缓冲器26的情况下,该索引可指示存储器块18的特定一个。对于配置有溢出缓冲器26的交换机10,该索引可类似地指示存储器块18之一,或者可指示溢出缓冲器26之内的特定位置。例如,利用N个存储器块18和溢出缓冲器26中的M个位置,索引可从零指示到N,以识别存储器块18中的位置,或者该索引可从N指示到M-1,以指示溢出缓冲器26中的位置。然而,由于散列密钥存取的统一性,交换机10需要具有用于处理溢出缓冲器26的添加的高级存取逻辑器。
如前所述,存取模块22可在相同周期之内安排读和写操作用于不同存储器块18。由此,例如存取模块22可在存取模块22试图从一行读取的相同周期期间,安排写至存储器块18之一。如前所述,这造成存取模块22仅从那些未被安排写操作的存储器块18读取入口。当进行目标地址的查找时,这种情形可导致“虚假(false)”失败。虚假失败在存储器块18包括目标地址的匹配时出现,但是维护该匹配入口的存储器块18进行写操作,同时,其余存储器块18进行读操作。在虚假失败的情况下,存取模块22将指示失败,即使该行实际上包含匹配。虚假失败的可能性受制于表模块16之内的存储器块18数目的限制。例如,如果写操作受限于单个存储器块18,路由表模块16包括四个存储器块18,则虚假失败在读/写周期期间的可能性为25%。然而当考虑写操作一般至多仅每隔一个周期出现(因为该学习和删除操作占用两个周期)时,虚假失败的可能性减半。
按照特定实施例,路由表模块16防止虚假失败在多点播送地址的查找操作期间或在学习的读操作期间发生。例如,由于应用于多点播送地址的严格标准,路由表模块16可在多点播送查找操作期间防止任何写操作。类似地,对于学习操作,路由表模块16可在学习操作的读部分期间,防止同时的写操作。这防止了路由表模块16基于虚假失败而不当地检测学习新入口的需要。
为了处理存取模块22的读写操作安排,路由表模块16包括仲裁模块20。在操作期间,仲裁模块20从端口12接收查找和学习操作,确定存取模块22的适当读和写操作。仲裁模块20将这些查找和学习操作连同任何其他适当操作(比如存储器块18和溢出缓冲器26中入口的老化)一起区分优先次序。按照特定实施例,仲裁模块20对任何未完成的(outstanding)查找请求设定最高优先级。向查找请求给定最高优先级后,仲裁模块20即使在最坏情况的通信量时仍将对这些请求提供及时服务。
例如,考虑具有十二个端口12的交换机10,每个端口1 2同时接收最小尺寸的以太网帧。按照以太网标准,最小尺寸的以太网帧接近64个字节。在特定实施例中,交换机10在大约二十个周期中接收最小尺寸的以太网帧。因此,如果每个端口12同时接收最小尺寸的以太网帧,则没有端口12将开始接收另一帧,直至二十个周期以后为止(因为每个端口12将至少占用二十个周期来接收当前帧)。即使在这种最坏情况时,来自每个端口12的查找请求仍可在十二个周期之内得到仲裁模块20服务。这在任何新查找请求到达之前留下约八个备用周期。
在该实例中,在包被接收时,每个端口12还可产生学习请求。由此,在最坏情况的实例中,仲裁模块20也可将十二个学习请求连同十二个查找请求一起接收。给定仅八个备用周期,仲裁模块20可选择仅服务这些请求中的选定请求。由此,对查找请求分配优先级,可将学习请求交付于备用周期。在附加的学习请求到达时,仲裁模块20可选择让学习请求排队,或者简单地丢弃未服务的学习请求。例如,仲裁模块20可简单地维护最近接收到的每个端口12的学习请求。这确保学习请求反映最近接收到的端口映射。
尽管所示实施例和在先描述聚焦于路由表模块16的特定实施例,但是交换机10可构思为,路由表模块16具有用于支持混合式、同步存取存储器结构的单元的任何适当组合和排列。由此,所示特定单元进行的功能可被适当地分离或组合,一些或全部的这些单元可由编码于媒介中的逻辑器来实现。例如,仲裁模块20和存取模块22的功能可被适当分离和/或组合,它们的任何操作可由适当的存储器控制逻辑器来实施。此外,尽管存储器块18和溢出缓冲器26均被示出为分离式组件,但是路由表模块可使用提供相似功能的任何适当存储器结构。同时,尽管示出为单个模块,但是路由表模块16的一些或全部所示组件的功能可分布于交换机10的其他单元之间。
图3是说明路由表模块16在存取的存储器位置之间进行选择时所用的选择逻辑器30的框图。一般地,选择逻辑器确定路由表模块16中的路由入口是否与查找请求中所指示的地址相匹配。基于该确定,选择逻辑器30可指示路由信息,该信息识别端口映射或错误。
除查找请求信息之外,选择逻辑器30从存储器块18和溢出缓冲器26接收输入。在所示实施例中,选择逻辑器30由此接收如32所示查找请求信息、如34所示来自一行存储器块18的输出、如36所示来自第一溢出缓冲器26的输出、如38所示来自第二溢出缓冲器26的输出。查找请求信息32包括用以识别端口映射所需特定地址的信息。例如,查找请求信息32可包括所指示地址的MAC和VID值。行输出34包括在每个存储器块18的指示行中的路由入口。由此,行输出34包括查找请求信息32所识别的该行的路由信息。
在前述实施例中,路由表模块16包括两个溢出缓冲器26。由此,在该示例中,选择逻辑器30从第一和第二溢出缓冲器26接收溢出输出。第一溢出输出36提供在第一溢出缓冲器26之内维护的路由入口。类似地,第二溢出输出38提供在第二溢出缓冲器26之内维护的路由入口。
如前所述,路由表模块16可包括任何合适数量的溢出缓冲器26,具有任何适当方案,用于将入口从满行中溢出到这些溢出缓冲器26中。由此,例如如果两个溢出缓冲器26的每一个仅映射到行的特定组,则选择逻辑器30可仅接收这样的输出,该输出是由映射到所指示的行的适当溢出缓冲器26提供的。给定这种映射时,一个或多个溢出缓冲器26可被分配用于行的选定组,而不大大增加选择逻辑器30的复杂度。例如,考虑具有八个溢出缓冲器26的路由表模块16的特定实施例,将两个溢出缓冲器26一组一组地分配到存储器块18之内行的各组。在该配置中,选择逻辑器30仍可如上所述操作,与来自两个溢出缓冲器26的输出相并行地接收行输出。这表现了一个或多个溢出缓冲器26是如何被包含于路由表模块之内,而不严重影响速度、尺寸和复杂度。
选择逻辑器30由此从所指示的行和从每个适当的溢出缓冲器26接收潜在的路由入口。利用接收到的输入,选择逻辑器30确定,从存储器块18或溢出缓冲器26接收到的路由入口之一是否与查找请求信息32相匹配。例如,选择逻辑器30可包括许多并联比较器,这些比较器允许选择逻辑器30同时将每个行输出34、每个溢出输出36、38与查找请求信息32做比较,以确定潜在的命中。基于这些比较,选择逻辑器30确定适当的路由信息。例如,如果选择逻辑器30识别该查找请求信息32和潜在路由入口之一之间的匹配,则选择逻辑器可输出该识别的路由入口所指示的路由信息。然而,如果选择逻辑器30确定潜在路由入口都与路由信息32不匹配,则选择路由器30可指示失败。
图4是说明路由表模块16响应于查找和学习请求、对存储器块18和溢出缓冲器26之内所维护的路由信息进行周期性维护的方法流程图。参照上述路由表模块16的单元,提供流程图的如下描述。然而如前所述,路有表模块16可包括单元的任何适当组合和排列。
仲裁模块20在步骤50确定是否有任何查找请求是当前有效的。例如,仲裁模块20可确定,是否任一端口12当前正在请求查找操作。如果否,则仲裁模块20在步骤52确定是否有任何老化请求是有效的。例如,仲裁模块可周期性、零星地或在任何其他适当时间产生老化请求,以提供从存储器块18和溢出缓冲器26中临时去除过期入口。如果没有老化请求是有效的,则仲裁模块20在步骤54确定是否有任何学习请求是有效的。例如,仲裁模块20可确定是否有任一端口12已经请求学习操作。如果否,则流程返回到步骤50。由此,在步骤50、52和54中,仲裁模块20对于查找、老化和学习请求提供服务,同时对查找请求分配最高优先级。
如果仲裁模块20在步骤50检测到查找请求,则仲裁模块20在步骤56安排一查找读操作。仲裁模块20在步骤58确定所安排的查找是否用于多点播送地址。例如,通过检查该目标地址之内的特定位,仲裁模块20可确定该地址是否指示多点播送操作。如果是,则仲裁模块20在步骤60取消任何已安排的写操作。例如,在前一周期中,仲裁模块20可能已经安排写操作,用于学习或删除命令。如果是这样,仲裁模块20可取消该写操作,以防止读操作期间的虚假失败。在步骤62,存取模块22进行所安排的操作。这时,存取模块22进行已安排的查找读操作,如果任何写操作保留预先安排,则进行已经安排的写操作。
如果未检测到查找操作,则仲裁模块20在步骤52检查老化请求。一旦检测到老化请求,仲裁模块22在步骤64安排一老化读操作。这时,存取模块22在步骤62进行已经安排的操作,其包括进行已经安排的老化读操作。
假设没有有效的查找或老化请求,则仲裁模块20可在步骤54检测有效的学习请求。一旦检测到有效的学习请求,仲裁模块20在步骤66确定当前是否安排有写操作。例如,在前一周期中,仲裁模块20可能已经安排了写操作。由于路由表模块16试图防止同时的写和学习读操作,仲裁模块20在步骤66检查写操作。如果已安排写操作,则仲裁模块20返回到步骤50。然而,如果未安排写操作,则仲裁模块20在步骤68安排一学习读操作。然后存取模块22在步骤62进行已经安排的操作,其包括进行已经安排的学习读操作(无同时写操作)。
当在步骤62进行已经安排的操作之后,仲裁模块20在步骤70确定是否已经检测到写需求。例如,在进行了学习读操作之后,仲裁模块20可确定需要一学习写操作。如果是这样,仲裁模块20在步骤72安排该写操作。为了安排写操作,仲裁模块20可确定存储器块18之内的适当行,用于接收该路由信息。在特定环境中,所识别的行可能充满了当前路由信息。在这样的环境下,如果交换机10包括溢出缓冲器26,则仲裁模块20可安排写操作,用于适当溢出缓冲器26之内的可用位置。由此,仲裁模块20可安排写操作,用于所识别的行之内或适当的溢出缓冲器26之内任何可用位置(spot)。类似地,仲裁模块20可在步骤70检测一删除需求,在步骤72安排一写操作以进行该删除。
前述流程图说明了路由表模块16基于多块存储器构造的存取来提供路由表操作的示范性操作。然而,前述流程图和相关描述仅说明该操作的示范性方法,交换机10可构思为,路由表模块16利用任何合适技术来支持多块存储器方案。由此,该流程图中的许多步骤可同时发生和/或以与所示不同的次序发生。此外,路由表模块16可使用具有附加步骤、更少步骤和/或不同步骤的方法,只要这些方法是适当的。
图5是说明存取模块22在服务读请求时的操作流程图。在每个周期中,存取模块22在步骤80确定是否接收到读请求。如果否,则存取模块22在该周期期间不进行关于读请求的操作。如果存取模块22在步骤80检测到读请求,则存取模块22在步骤82从该读请求之内的地址中确定散列密钥。例如如前所述,存取模块22可基于该地址之内的所选位来确定散列密钥。
利用该散列密钥,存取模块22在步骤84从对应行中读取。如前所述,该读取操作存取在对应行之内的所有位置24,除非当前已经安排同时的写操作。存取模块22在步骤86确定是否有来自该行的任何入口与接收到的地址相匹配。不管是否存在同步的写操作,存取模块22都可确定该地址是否产生命中或失败。然而,给定同步的写操作时,存取模块22可如前所述检测到虚假失败。
给定匹配时,存取模块22在步骤88返回该匹配路由信息。例如,对于查找读操作,存取模块22可提供路由信息到适当端口12。类似地,对于学习读操作,存取模块22可向仲裁模块20通报该命中。给定失败时,存取模块22在步骤90指示该失败。例如,对于查找读操作,存取模块22可指示该失败到适当端口12。类似地,对于学习读操作,存取模块22可指示该失败到仲裁模块20。
由此,前述流程图说明了存取模块22处理来自仲裁模块20的读请求的相对简单技术。然而,与较先的流程图一样,该流程图和相关描述仅说明了操作的示范性方法,交换机10可构思为,存取模块22和/或其他合适组件利用任何合适的技术来存取路由信息。由此,该流程图中的许多步骤可同时发生和/或以与所示不同的次序来发生。此外,交换机10可使用具有附加步骤、更少步骤和/或不同步骤地方法,只要这些方法是适当的。
尽管本发明已经在多个实施例中被描述,但是可向本领域技术人员建议各种变化和改型,本发明旨在包含落入所附权利要求范围之内的这些变化和改型。
权利要求
1.一种交换机,包括多个端口,可操作用以传送包;交换结构,可操作用以在所述端口之间传送所接收的包;多个存储器块,逻辑划分成多个行,其中,每个所述行包括来自每个所述存储器块的存储位置,每个所述存储位置能够维护路由入口;溢出缓冲器,包括多个溢出存储位置,每个所述溢出存储位置能够维护路由入口;以及存储器控制模块,可操作用以从所述端口之一接收存储器存取请求,以基于该存储器存取请求所指示的地址,来确定所述行的特定行,以及存取所指示的行和该溢出缓冲器,以进行存储器存取操作。
2.如权利要求1所述的交换机,其中该存储器存取请求请求查找操作,该存储器控制模块可进一步操作,用以通过如下步骤进行该存储器存取操作从所指示的行和从该溢出缓冲器接收潜在的路由入口;将该地址与每个所述潜在路由入口做比较;以及如果该地址与所述潜在路由入口之一相匹配,则返回所述潜在路由入口中该匹配入口所指示的路由信息。
3.如权利要求1所述的交换机,其中该存储器存取请求请求指定路由信息的学习操作,该存储器控制模块可进一步操作,用以通过如下步骤以进行该存储器存取操作确定所指示的行在所指示的行中的每个所述存储位置中具有有效的路由入口;确定所述溢出存储位置的一个可用溢出存储位置;以及将该地址和该路由信息写入该可用溢出存储装置中。
4.如权利要求1所述的交换机,其中该存储器控制模块包括仲裁模块,可操作用以从所述端口接收查找请求和学习请求,基于所述查找请求和所述学习请求,来安排一系列存储器存取操作;以及存储器存取模块,可操作用以对于每个所述一系列存储器存取操作,从每个所述一系列存储器存取操作所指示的地址中确定散列密钥,其中,该散列密钥指示所述行的特定行;以及存取该溢出缓冲器和由该散列密钥所指示的所述特定行。
5.如权利要求4所述的交换机,其中该仲裁模块安排存储器存取操作,以在安排存储器存取操作以服务任何未完成的学习请求之前,服务任何未完成的查找请求。
6.如权利要求4所述的交换机,其中为了服务学习请求,该仲裁模块可操作用以安排第一存储器存取操作,该第一存储器存取操作包括读操作,该读操作指示来自该学习请求的源地址;确定该读操作是否在所述存储器块和所述溢出缓冲器中检测到失败;以及如果检测到该失败,则安排第二存储器存取操作,该第二存储器存取操作包括写操作,该写操作指示来自该学习请求的源地址和端口映射。
7.如权利要求6所述的交换机,其中该仲裁模块可进一步操作用以确保该第一存储器存取操作不含任何写操作。
8.如权利要求1所述的交换机,其中该溢出缓冲器包括多个存储器单元。
9.如权利要求8所述的交换器,其中每个所述存储器单元对应于所述多个行,该存储器控制模块可进一步操作用以存取所指示的行和该溢出缓冲器,以通过存取所指示的行和与所指示的行相对应的一个或多个所述存储器单元,来进行该存储器存取操作。
10.一种用于进行路由表操作的方法,包括监视从多个端口的任一个接收的查找请求和学习请求;检测含有目标地址的查找请求;基于该目标地址来确定散列密钥;利用该散列密钥来存取存储器模块,其中,该存储器模块包括逻辑划分成多个行的多个存储器块,其中,每个所述行包括来自每个所述存储器块的存储位置,每个所述存储位置能够维护路由入口,其中,该散列密钥指示所述行之一;存取溢出缓冲器,该溢出缓冲器包括多个溢出存储位置,每个所述溢出存储位置能够维护路由入口;确定来自所指示的行或来自该溢出缓冲器的所述入口之一是否包括与该目标地址匹配的地址信息;如果所指示的行或该溢出缓冲器包括匹配入口,则从该匹配入口返回路由信息,该路由信息识别一个或多个所述端口。
11.如权利要求10所述的方法,还包括检测学习请求,该学习请求识别源地址和路由信息;基于该源地址来确定第二散列密钥;利用该第二散列密钥来存取该存储器模块,其中,该第二散列密钥指示所述行的第二行。
12.如权利要求11所述的方法,还包括确保在利用该第二散列密钥来存取该存储器模块的同时,所述存储器块都不进行写操作。
13.如权利要求11所述的方法,还包括确定来自所指示的第二行的所述入口之一是否包括与该源地址相匹配的地址信息;如果所述入口都不匹配,则确定所指示的第二行是否包括可用的存储位置;以及如果所指示的第二行包括可用的存储位置,则将该源地址和该路由信息写至该可用存储位置。
14.如权利要求11所述的方法,还包括确定来自所指示的第二行的所述入口之一是否包括与该源地址相匹配的地址信息;如果所述入口都不匹配,则确定所指示的第二行是否包括可用的存储位置;以及如果所指示的第二行不含可用的存储位置,则确定可用的溢出存储位置,将该源地址和该路由信息写至该可用溢出存储位置。
15.如权利要求10所述的方法,还包括在服务任何未完成的学习请求之前服务任何未完成的查找请求。
16.如权利要求10所述的方法,还包括确定该目标地址是多点播送地址,相应地确保在利用该散列密钥存取该存储器模块的同时,所述存储器块都不进行写操作。
17.如权利要求10所述的方法,还包括在利用该散列密钥存取该存储器模块的同时进行写操作,该写操作指示所述存储器块的选定存储器块之内所述存储位置的特定一个,其中,通过利用该散列密钥存取该存储器模块,从除了该写操作中所指示的存储器块之外的所有存储器块中所指示的行中读取所述入口。
18.一种交换机,包括用于监视从多个端口的任一个接收的查找请求和学习请求的装置;用于检测包括目标地址的查找请求的装置;用于基于该目标地址来确定散列密钥的装置;用于利用该散列密钥存取存储器模块的装置,其中,该存储器模块包括逻辑划分成多个行的多个存储器块,其中,每个所述行包括来自每个所述存储器块的存储位置,每个所述存储位置能够维护路由入口,其中,该散列密钥指示所述行之一;用于存取溢出缓冲器的装置,该溢出缓冲器包括多个溢出存储位置,每个所述溢出存储位置能够维护路由入口;用于确定来自所指示的行或来自该溢出缓冲器的所述入口之一是否包括与该目标地址相匹配的地址信息的装置;用于在所指示的行或该溢出缓冲器包括匹配入口时从该匹配入口返回路由信息的装置,该匹配信息识别一个或多个所述端口。
19.如权利要求18所述的交换机,还包括用于检测学习请求的装置,该学习请求识别源地址和路由信息;用于基于该源地址确定第二散列密钥的装置;用于利用该第二散列密钥存取该存储器模块的装置,其中,该第二散列密钥指示所述行的第二行。
20.如权利要求19所述的交换机,还包括用于确保在利用该第二散列密钥存取该存储器模块的同时所述存储器块都不进行写操作的装置。
21.如权利要求19所述的交换机,还包括用于确定来自所指示的第二行的所述入口之一是否包括与该源地址匹配的地址信息的装置;用于在所述入口都不匹配时确定所指示的第二行是否包括可用存储位置的装置;以及用于在所指示的第二行包括可用存储位置时将该源地址和该路由信息写至该可用存储位置的装置。
22.如权利要求19所述的交换机,还包括用于确定来自所指示的第二行的所述入口之一是否包括与该源地址匹配的地址信息的装置;用于在所述入口都不匹配时确定所指示的第二行是否包括可用存储位置的装置;以及用于在所指示的第二行不含可用存储位置时确定可用的溢出存储位置、将该源地址和该路由信息写至该可用溢出存储位置的装置。
全文摘要
一种交换机,包括多个端口、交换结构和路由表模块。该路由表模块包括用于维护路由信息的多块存储器结构。该路由信息使得该交换结构基于这些包之内的地址在这些端口之间传送包。特定的实施包括溢出缓冲器,以在多块存储器结构之内所提供的存储位置之外增加存储位置。
文档编号H04L12/56GK1658597SQ200510008088
公开日2005年8月24日 申请日期2005年2月16日 优先权日2004年2月20日
发明者清水健, 斯里达·帕蒂 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1