CN102124703B - 以太网网桥的交换表 - Google Patents

以太网网桥的交换表 Download PDF

Info

Publication number
CN102124703B
CN102124703B CN200980131561.2A CN200980131561A CN102124703B CN 102124703 B CN102124703 B CN 102124703B CN 200980131561 A CN200980131561 A CN 200980131561A CN 102124703 B CN102124703 B CN 102124703B
Authority
CN
China
Prior art keywords
entry
port
row
value
information
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.)
Active
Application number
CN200980131561.2A
Other languages
English (en)
Other versions
CN102124703A (zh
Inventor
D·C·休森
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.)
Hewlett Packard Development Co LP
Original Assignee
Cray UK Ltd
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 Cray UK Ltd filed Critical Cray UK Ltd
Publication of CN102124703A publication Critical patent/CN102124703A/zh
Application granted granted Critical
Publication of CN102124703B publication Critical patent/CN102124703B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L12/462LAN interconnection over a bridge based backbone
    • H04L12/4625Single bridge functionality, e.g. connection of two networks over a single bridge
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/66Layer 2 routing, e.g. in Ethernet based MAN's
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明描述了一种从以太网网桥的散列表获取数据的技术。该表具有若干列,每个列具有一个散列函数,由此产生各自的不同散列关键码值。

Description

以太网网桥的交换表
技术领域
本发明涉及数据处理,并特别涉及使用散列表(hash tables)存储和获取数据。
背景技术
散列表是一种存储和获取数据的技术,其关联计算的索引值与存储的数据。散列表对于数据查询操作特别有效率,因为它们使用对于检索很高效的索引值。为了存储数据值,一个散列函数在一个与该数据相关的关键码值上执行,由此决定一个散列值。这个散列值在一个存储数据值的表的一个条目中用作索引值。关键码值也存储,在一个与该数据值使用的条目相关的位置。例如,该关键码值可以存储在与该数据值相同的条目内,或者至可能存储该数据值的另一个存储位置的指针。
为了获取该数据值,一个查询项值服从于该散列函数,为了决定在关联数据值的表内的位置。该数据值能随后返回。在一些实施方式中,所述查询项值与存储的关键码值相比较以决定相同的关键码值用于存储该数据值。如果关键码值匹配,则该数据值返回。
作为一个使用散列表的例子,考虑到为联络存储电话号码。联络姓名用作关键码值,电话号码就是数据值。为了填充该存储表,联络姓名服从于一个散列函数,并且结果散列值用于指示存储有联络姓名和相关电话号码的表条目。为了获取电话号码,联络姓名作为查询项值,并且服从于散列函数。联络姓名和电话号码从具有该作为索引值的结果散列值的表条目中获取。联络姓名被比较,如果它们匹配,返回电话号码。
表条目可以指的是一个条目、位置或贮体,并且每个条目具有唯一的索引值。
一种特有的散列查询表是在以太网络中作数据包转发。以太网迅速成为最常用的连接电脑和其外设的数据网络。对于网络管理员以太网的部分吸引力是易于连接和寻址这些网络附加设备或通常称为的“终端站”。
附图中图1的结构图示出了一个简单的电脑网络。网络1包括若干个人电脑11a,11b,11c和一个服务器设备12,它们之间经由以太网桥14互相通信。以太网桥设备14包括许多端口15a、15b、15c和15d,和一个路由单元16。路由单元16操作以在连接至网桥设备14端口的源设备和目的地设备之间路由数据包(或“数据帧”)。
以太网桥拥有自动学习其直接连接的或经由其它中间站或提供以太网段之间交互互联的网桥连接的终端站地址的能力。该学习过程是动态地并且在每次网桥加电时执行。
当在终端站之间发送时以太网数据已封装进以太网数据帧。附图2示出了一个数据帧,具有包含一对用于在源和目的地之间转发该数据帧的终端站地址的报头。以太网终端站地址由IEEE802标准媒体链接控制(MAC)地址空间定义,每个网络附属设备具有独一无二的在制造时分配的MAC地址。
通常,以太网桥设备14通过使用IEEE802.1Q VLAN标签也将支持多个逻辑以太网段其中MAC地址由VLAN(虚拟局域网)标签补充以指示逻辑以太网段通过它与特定数据帧关联。该数据帧剩余部分由有效载荷(将传输的数据)和为保持数据完整的CRC(循环冗余码校验)组成。
以太网桥设备14包括转发数据库为了传输数据帧接近目的地终端站其用于从网桥的入站端口至网桥正确的出站端口路由以太网数据帧。在图1示出的简单例子中,这使得数据包在个人电脑和服务器12之间传输。在更复杂的网络布局中,数据包路由至下一网桥直到抵达目的地。
这种转发数据库使用以上描述的散列表技术并且由路由传过构建网络的以太网段之间的网桥的数据帧填充,通过中间节点连接终端站。当一个数据帧由网桥在一个端口(对该数据帧的入站端口)接收,网桥14学习该数据帧的终端站详情(MAC地址,VLAN标签),并映射这些详情至相关端口。该映射存储进转发数据库以后续用于路由,通过将源地址详情服从于该转发数据库的散列函数,并且存储端口信息进表的对应于结果索引值的条目中。随后来临的数据帧需要决定该数据帧将要路由的输出连接。该数据帧的所述终端站源详情(MAC地址,VLAN标签)用于通过在转发数据库中执行一个散列查询决定正确的出站端口。
转发数据库的大小和构造必须仔细考虑,由于不可能在该数据库中查询一个端口条目,则以太网桥设备14要求该数据帧路由至所有其它对该数据帧可能的出站端口。理想地,这仅发生在该转发数据库已经获悉源终端站的MAC地址。然而,如果随后的MAC地址要求存储进转发数据库中相同的位置则将替换先前的地址并且导致不必要的数据帧泛播。
当散列函数为两个不同的关键码产生相同的索引,则散列冲突发生并且需要一个机制解决这一问题。这种情况发生的可能性依赖于散列表相对于其存储的条目数量的尺寸和散列函数在散列表记录槽中分布关键码的程度如何。由于散列表变得很满,散列冲突的可能性非线性增加。
处理散列冲突的通常机制是形成一个附着于通过某种方式检索到的散列表记录槽的冲突条目的列表;以一个不同的散列函数或一个内容可寻址的溢出区执行第二次尝试。通常冲突的数量具有一些限制或者是整体处理或者对于特定的散列条目。
在所有的情况下强烈渴求保持冲条目突数量较低并且这意味着散列函数必须在散列条目中平均分布条目。然而总有反常情况其中所有关键码散列至相同的散列值并且该表不能处理这一级别的散列冲突。
由于MAC地址分布不同当以太网桥用在一个不同的环境中,散列函数将一直提供最佳分布至散列表不大可能并且在表中所有散列条目被定位之前散列表将有效地填满(即不能插入一个条目)是可能的。
发明内容
本发明的具体实施方式可以通过提供包括若干散列表列每个具有一个独立散列函数的MAC地址表解决之前考虑的以太网路由技术问题,并使用计数器。还可能提供一个冲突解决机制。在转发数据库各自散列列中使用若干散列函数的优点是允许该表的使用率极大增加,同时仍确保转发数据库查询能同时发生在至每个散列表列的单访问中。散列表列各自的散列函数还确保极不可能散列至一个列的一个单个条目的两个不同的转发数据库条目也将散列值所有其它列的单个条目;这意味着如果所有可能条目定位至某个特定转发数据库条目,则将可能重新定位一个已经定位的条目至一个不同列并且因此为新转发数据库条目产生空位。
每个散列表列保持存储在与使用计数器相关列内的转发数据库条目数量计数。当一个条目插进该散列表列时该值增加并在删除一个条目时减小。
在本发明的一个实施例中,当终端站信息插入转发数据库时,每个散列表列从该终端站信息中产生其自身独立的散列值并决定是否在其表中相关条目对该终端站信息已经存在或空闲。如果对于该终端站一个条目已存在,则转发数据库条目对该记录槽更新,否则如果一个或多个条目空闲,则具有最高使用计数的该散列表列选择以使转发数据库条目存储进其存储槽。如果在任何散列表列中没有条目空闲,则调用一个冲突解决方法。该冲突解决方法轮流从每个散列表列中选择冲突条目基于每个散列表列的使用计数值决定使用一个算法。对于每个这种冲突条目为其它散列表列和相关访问的条目产生的散列值,如果一个或多个那些条目空闲,则该冲突条目重新定位至具有最高使用计数的散列表列并且对该列的计数增加,则在移至基于该使用计数值使用算法决定的下一散列表列之前相同方法应用递归若干次。以这种方式将不可能重定位任何冲突条目则一个转发数据库冲突发生并且需要通过一种通常解决这些冲突的方法解决。
当与目的地终端站相关的转发端口在转发数据库中查询到时,每个散列表列从目的地信息产生其自身独立的散列值。该目的地信息从MAC地址/VLAN标签演化而来,并且这些信息可以以合适的方式联合。散列目的地信息用于获取相应的数据条目。每个列返回一个数据值然后决定该条目是否与目的地信息相匹配并且如果有任何条目匹配则那个条目提供结果。如果没有任何列匹配,则检查当前插入表内的终端站信息。如果匹配,则使用该信息。否则查询失败并且发生失误。
根据本发明的一个方面,提供一种在以太网桥设备的端口之间路由以太网数据帧的方法,该方法包括定义具有许多路由列的路由表的步骤,每个列具有许多条目,并且列中每个条目具有唯一的索引值,为路由列定义各自的散列函数,从以太网桥设备的一个端口接收到达的地址信息,对于每个路由列:从到达地址信息计算散列值并且为该列定义散列函数,和决定如果一个条目具有与计算的散列值具有相同的索引值清空,对那些具有这样的一个空条目的路由列:基于存储数据的列中条目的数量决定一个使用值,和存储数据和端口信息进具有最高使用值的路由列的该空条目,该端口信息从接收地址信息中识别以太网桥设备端口。
还可能包括这样一种方法,跟随计算散列值的步骤之后,如果一个条目具有的索引值与计算的散列值相等决定已存储的地址信息等于正在到达的地址信息的步骤,和,如果是,更新存储在该条目内的端口信息,端口信息从接收的将到达地址信息识别以太网桥设备端口,并且不存储地址和端口信息进该路由表的一个空条目。
可选择地,这种方法也可以包括,跟随计算散列值的步骤之后,如果一个条目具有的索引值与计算的散列值相等决定已存储的地址信息等于正在到达的地址信息的步骤,和,如果是,不存储地址和端口信息进路由表的一个空条目,并且如果端口信息存储在该条目中决定从接收到的在在到达的地址信息识别以太网桥设备端口,和,如果没有(存储在该条目),更新该条目中的端口信息。
如果没有路由列具有这样的空条目,并且路由表中没有条目存储与正在到达的地址信息相等的信息,则这样的方法可以包括步骤,对于第一路由列,为其它路由列对于与存储在具有与计算的散列值相等的索引值的条目内存储的端口信息决定各自散列值,并决定是否任何其它路由列对于该列决定的散列值具有空条目,并且,如果是,传输存储在该第一路由列的地址和端口信息至该其它路由列的空闲条目,并存储该地址和端口信息进第一路由列的具有与计算散列值相等的索引值的该条目,该端口信息从接收该地址信息的端口识别该端口。
这些附加步骤可以为每个路由列轮流重复直到一个空闲条目被决定。第一路由列可以是那种具有最低使用值的路由列。
为了路由数据包,体现本发明的方法可进一步包括接收目标地址信息作为以太网数据帧的一部分的步骤,从该目标地址信息和各自的散列函数为路由列计算各自的散列值,为其地址信息相应的端口信息与接收的目标地址信息相同的该列决定一个具有非空条目具有索引值与计算散列值相等的路由列,获取存储在该决定的非空条目内的端口信息,和传输以太网数据帧至该端口或由获取的端口信息指示的端口。
在一个实施例中,端口信息可以仅从决定的非空条目获取如果该条目还存储与目标地址信息相等的地址信息。
根据本发明的另一方面,提供一种在以太网桥设备端口之间路由数据帧的方法,其定义一个具有若干路由列的路由表,每列具有若干条目,和在一列中的每个条目具有唯一的索引值,为路由列定义各自的散列函数,该方法包括用与以太网桥该一个或多个端口相关至地址信息的信息填充路由列的步骤,接收目标地址信息作为数据帧的一部分,为路由列计算各自散列值,从该目标地址信息和各自散列函数,决定一个具有非空条目具有与该列的计算散列值相等的索引值的路由列,和具有地址信息等于目标地址信息,获取存储在该决定的非空条目内的端口信息,并传输该以太网数据帧至该获取端口信息指示的一个或多个端口。
在本发明这一方面的一个具体实施例中,端口信息可以仅从该决定的非空条目获取如果该条目也存储与该目标地址信息相等的地址信息。
根据本发明的另一方面,提供一种以太网桥设备包括接收和传输以太网数据帧的若干端口,为转发在该设备的入站端口接收的数据帧至该设备出站端口的路由单元,其中该路由单元可操作:以定义具有若干路由列的路由表,每个列具有若干条目,并且一个列中的每个条目具有唯一的索引值,以为路由列定义各自的散列函数,以从该以太网桥设备的端口接收来临的地址信息,以计算,为每个路由列,散列值从该来临的地址信息和为该列定义的散列函数,和以决定,为每个路由列,如果该条目具有的索引值等于这样一个计算空的散列值,以决定,为那些具有这样一个空条目的路由列,一个基于存储了数据的列内条目数量的使用值,和以存储地址和端口信息进具有最高使用值的该路由列的空条目,该端口信息从接收地址数据的端口识别该以太网桥设备的端口。
这样的设备可进一步可操作,跟随散列值的计算,以决定如果一个具有等于这样的计算散列值的索引值的条目已经存储了地址信息,和,如果是,以更新该条目内的端口信息,该端口信息从接收来临地址信息的端口识别以太网桥设备的端口,并且不存储地址和端口信息进该路由表的一个空条目。
可选的,这样的设备可进一步可操作,跟随散列值的计算,以决定如果一个具有等于这样的计算散列值的索引值的条目已经存储了地址信息,和,如果是,不存储地址和端口信息进该路由表的一个空条目,并以决定如果存储在该条目的端口信息从接收到来临地址信息的端口识别以太网桥设备的端口,和,如果否,以更新该条目存储的端口信息。
这样的设备可操作,如果没有任何路由列具有空条目以决定,并且路由表中没有条目已经存储来临的地址信息,对于第一路由列,对于其他路由列对于与存储在具有与计算散列值相等的索引值的条目内的端口数据相关的地址数据的各自散列值,和以决定是否任何其它路由列具有对于为该列决定的散列值的空条目,和,如果是,以传输存储在该第一路由列的端口数据至该其它列的空条目,并存储地址和端口数据进具有与计算散列值相等索引值的第一路由列的该条目,该端口数据从接收到地址数据的端口识别端口。
所述路由单元可操作以轮流为该第一路由列为每个其它路由列重复步骤直到一个空条目被决定。
所述路由单元还可操作以接收目标地址数据作为以太网数据帧的一部分,以为路由列计算散列值,从目标地址数据和各自散列函数,以决定一个路由列具有一个非空的有与为该列计算的散列值相等的索引值的条目,以接收存储在该决定的非空条目内的端口数据其中地址数据对应于端口数据与目标地址数据相同,和以传输以太网数据帧至该接收端口数据指示的端口。
在本发明一个方面的实施例的这样一个设备中,端口信息可以仅从该决定的非空条目获取如果该条目也存储了与该目标地址信息相等的地址信息。
根据本发明的另一方面,提供一种在表中存储和获取数据的方法,该方法包括定义一个具有若干存储列的表,每个列具有若干具有各自相关列索引值的存储条目,为所述若干存储列定义各自散列函数,接收一个查询值,和一个关联的数据值,为每个存储列从该查询值和为该列定义的散列函数计算散列值,为每个存储列,决定如果具有的索引值等于该计算散列值的条目不为空并且已经为查询值存储数据或为空,如果该条目已经为该查询值存储了数据则更新,否则对那些具有空条目的存储列,基于存储数据的列中条目数量决定一个使用值,存储关联数据值进具有最高使用值的存储列的该空条目。
这样的方法还可以包括步骤,跟随散列值的计算决定如果一个具有与计算的散列值相等的索引值的条目已经存储等效于该查询值的信息,和,如果是,更新该条目内的数据值,并且不存储该关联数据值进路由表的一个空条目。
可选择地,这样的方法还包括步骤,跟随计算散列值决定如果具有等于计算的散列值的索引值的条目已经存储了等效于该查询值的信息,和,如果是,不存储该关联数据值进路由表的一个空条目,和决定如果存储在该条目内的数据值等效于该关联数据值,和,如果否,存储该关联数据值至该条目。
这样的而方法可以包括,如果没有任何存储列具有那样的空条目,并且条中没有条目已经存储等效于查询值的信息,步骤,对于第一存储列,对于数据值相应于存储在具有等于该计算散列值的索引值的条目内为其它路由列决定各自散列值,并决定是否任何其它存储列具有对于该列决定的散列值的空条目,和,如果是,传输存储在第一存储列的数据值至该其它存储列的空条目,并存储该数据值进具有与计算散列值相等索引值的第一存储列的该条目。这样的步骤可以为轮流每个存储列重复直到一个空条目被决定。
该第一存储列可以是具有最低使用值的存储列。
为了获取存储的数据值,该方法还进一步包括接收期望查询数据值的步骤,为存储列计算各自散列值,从该期望查询数据和各自散列函数,决定一个具有非空条目具有等于为该列计算的散列值相等的索引值的存储列,和从该决定的非空条目其中该查询值对应的查询数据与该期望查询值相同获取一个存储的数据。
本发明的其它方面在随附的权利要求中详述。
附图说明
以下将仅通过例子的方式描述本发明的具体实施例并且参考以下附图:
图1示出了一个简单电脑网络;
图2示出了一个以太网数据帧;
图3示出了在一个存储表条目方法中的步骤;和
图4示出了在一个获取表条目方法中的步骤。
具体实施方式
本发明的具体实施例与查询存储在数据库中的信息相关。在这样的实施例中,提供有若干数据库列,每个列具有关联的散列函数。本发明实施例的一个特别合适的应用是在以太网电脑网络中路由以太网数据帧,如之前所述。应了解,虽然,以下描述体现本发明不同方面的技术能够用于其它数据查询呢设备,例如用于数据缓存,和特别是CPU数据缓存。
图3示出了体现本发明的方法为存储表条目中的步骤。在体现本发明的技术中,提供了若干散列表列,每个列具有与计算索引值相关的散列函数。图3示出的步骤将参考路由以太网数据帧来描述,但是显而易见地本发明的技术可以应用于其它数据存储应用。
对于路由以太网数据帧,定义一个转发表在其中条目由组成地址信息(MAC地址和VLAN标签)的终端站信息填充,并且端口信息指示终端站连接的端口。端口信息可以指示一个单一端口、一系列端口、位映像或映射至一个独立端口列表的组播数。VLAN标签信息还可以与其它VLAN标签成组为过滤识别符(FID),并且FID可存储进路由表而不是VLAN标签本身。
终端站信息优选存储在表中的一个单个条目内。可选的,该地址信息(MAC地址/VLAN标签)可以与该端口信息分开存储。在随后的实例中,在端口信息和地址信息之间提供有一个连接。存储在表条目里的地址信息可以认为是等效于从终端站接收的MAC地址/VLAN标签形式的地址信息。例如,存储的地址信息可以是MAC地址/VLAN标签自身,或可以是指针至位于另一存储地址的信息,或可以是从MAC地址/VLAN标签压缩的或编码而来。
终端站信息既可以通过一个学习程序填充存入表其中由于终端站加入网络并供给初始帧该表被填充也可以当网络拓扑和设备已知时通过一个软件方案填充存入表,也可以通过使用动态技术填充存入表,例如使用IEEE802.1X端口认证,其允许站通过交换管理软件认证其自身。当认证成功,该软件将该地址信息和端口信息存入该转发数据库。
图3示出了上述学习方案。跟随接收(步骤101)以太网数据帧,为路由列计算(步骤102)各自散列值,使用个则散列函数和该源信息。然后决定(步骤103)无论任何路由列是否已存储与源信息相关的数据。如果为是,则该端口信息被更新(步骤104)在那列中由该散列值指示的条目。
然而,如果该源信息还没有存入该表,则决定(步骤105)无论任何路由列是否具有对于计算的散列值空闲的条目。如果一个列具有对为其计算的散列值的空闲条目,则该源信息(地址和端口数据)存储进该列(步骤106)的由该散列值指示的索引值。
如果不止一个列具有空闲条目,则该列产生的该数据条目具有最高使用值条目计数(步骤106)。则该列的使用值计数增加。
如果,然而,没有列具有对于计算的散列值空闲的条目,则执行一个冲突解决技术。在该技术中,在图3的步骤107至111中示出,该冲突条目轮流从每个列选择。选择的次序使用一个基于为每个散列列使用值计数值的算法决定。例如,该次序可以是使用值计数值的升序,或可以是使用值计数值降序。对于冲突条目,存储在其中的地址信息用于为其它列产生各自散列值。具有等于相应散列值的索引值的条目随后被访问以决定是否这些条目中的任一个为空。
如果该列的任一个具有空条目,则该冲突条目重新定位至该列,并且该列的使用值计数增加。如果不止一个列具有空闲条目,则该冲突条目重定位至具有最高使用值计数的列并且该列的计数增加。随后新条目加入至原始选择的列中现在为空的条目。如果没有条目为空,则在移至下一使用基于该使用值计数值的算法决定的路由列之间相同的方法递归应用多次。如果通过该方式不可能重定位任何冲突条目则一个转发数据库冲突就发生并且需要通过解决这类问题的通常方法解决。
在一个可选择的冲突解决技术中,为保持一个或多个列尽可能空闲一个后台进程用于重定位条目。
图4示出了用于本发明一个实施例中的表查询技术。为了查询表条目,该查询信息(目的地终端站信息)被接收(步骤201)和对于每个路由列各自的散列值从目的地地址信息产生(步骤202)。这些散列值用于决定在路由列(步骤203)中填充条目的存在。具有数据存储在其内的条目随后被检查以决定他们中的哪个包括(或指向)与目的地相关的地址信息。如果匹配条目被找到,则存储在其中的端口信息被接收(步骤204)。
如果没有路由列包括对应于散列值的条目,则当前插入的数据的值被检查,并且如果一个匹配已登记(步骤206,207,208)被使用。如果没有匹配,然而,返回失误并且查询失败。
体现本发明的技术可以用于与路由以太网数据帧不同的应用。通常情况中,查询关键之信息替代目的地终端站信息,并且存储的数据值替代特定端口信息。
以太网桥14运作“学习”路由信息将更详细描述。MAC地址/VLAN标签信息在对源和目的地终端站的来临以太网数据帧中接受。源信息用于建立存储在转发数据库表栏目的路由信息。从该源信息,若干散列值,每个表栏目一个,被计算出。这些值然后用于决定列在其中与源终端站相关的端口数据被存储。该技术使用图3的存储步骤,由上所述。作为替代的,该路由列可以直接使用各自相关于该路由列的散列函数计算的索引值填充。
为了决定来临数据帧应当被路由的正确端口,目的地MAC地址/VLAN标签信息用于产生相应于若干表列的若干散列值。当发现一个列具有相应于该散列值(即,该条目包括相应于目的地信息)的条目,则存储在该条目的端口信息被接收,由于其指示网桥14的该数据帧路由至的该端口或多个端口。网桥14随后使用接收端口信息以正确路由该数据帧。
如果没有列具有匹配条目,则在当前插入进表中的MAC地址/VLAN标签上执行检查。如果新插入的信息匹配,则利用它路由数据帧。否则查询失败并发生失误。
本发明的技术能应用于从一个非常大的对象空间(MAC地址是这样空间的一个很好的例子)存储适当数量项目的查询表中获取信息。特别的,从以太网数据帧获取路由信息适合使用这些技术。此外,从缓存获取数据,例如CPU缓存,也能使用体现本发明的技术。
缓存通常从大量值范围内存储相对较小数量的值。对于处理器的例子其由两部分组成——高速缓存存储界其存储缓存的数据,和高速缓存标签其存储数据(其可能也包括存储管理单元MMU内容,段值或其它标签)的“地址”高速缓存趋于与高速缓存相关的直接映射集-这意味着高度缓存标签直接由“地址”子集索引并且随后在该存储界上的所有标签相比较以查看如果匹配发生。如果为是,相关高速缓存存储界数据被使用。如果为否,则如果发现空闲条目则使用该条目,否则一个条目被选择以被替代并且任何当前数据可能需要写回至它将随后再次被提取内存处。
依赖于使用的“地址”范围,如果相关的级别不足则高速缓存将运转很差,并且在这种情况下将发生许多缓存丢失使得CUP访问时间增加并且这将很可能导致应用运行缓慢。
在这一方面CPU高速缓存标签机制与之前描述的数据帧路由应用相似。体现本发明的技术能够,由此,直接用于CPU高速缓存标签具有使高速缓存变得对于“地址”范围不那么敏感的优点并且由此应用运行将变得更可预料。

Claims (26)

1.一种在以太网桥设备端口之间路由以太网数据帧的方法,所述方法包括步骤:
定义一个具有若干路由列的路由表,每个列具有若干条目,并且一个列中的每个条目具有唯一的索引值;
为路由列定义各自的散列函数;
从以太网桥设备的一个端口接收来临地址信息;
对于每个路由列:
从来临地址信息和为该列定义的散列函数计算散列值;
判断一个索引值等于这样一个计算的散列值的条目是否为空;
对于那些具有空条目的路由列:基于存储数据的列中的条目数量确定一个使用值;和
将地址和端口信息存储进具有最高使用值的路由列的该空条目,该端口信息识别以太网桥设备的端口,该端口为接收来临地址信息的端口。
2.如权利要求1所述的方法,进一步包括,跟随计算散列值的步骤:
确定一个索引值等于那样一个计算的散列值的条目已经存储了等效于来临地址信息的地址信息,并且,如果是,更新该条目中的端口信息,该端口信息用于识别该以太网桥设备接收来临地址信息的端口,并且不将地址和端口信息存储进该路由表的空条目。
3.如权利要求1所述的方法,进一步包括步骤,跟随计算散列值的步骤:
确定一个索引值等于这样一个计算的散列值的条目已经存储等效于来临地址信息的地址信息,并且,如果是,不将地址和端口信息存储进该路由表的一个空条目,并且确定存储在所述条目内的端口信息是否可以识别以太网桥设备的端口,该端口为接收来临地址信息的端口,并且,如果否,更新该条目内的端口信息。
4.如权利要求1-3任一所述的方法,进一步包括步骤,如果没有路由列具有这样一个空条目,并且路由表没有任何条目已存储等效于来临地址信息的信息,步骤:
对于第一路由列:
确定对于其它路由列的各自的散列值,其他路由列的地址信息存储在具有与散列值相等的索引值的条目内;
确定其它任何路由列是否具有一个用于存储对于该列所确定的散列值的空条目,并且,如果是,传输存储在第一路由列的地址和端口信息至其它路由列的空条目,并且将地址和端口信息存储进第一路由列的具有等于计算散列值的索引值的条目,该端口信息识别该端口,该端口为接收地址信息的端口。
5.如权利要求4所述的方法,其中所述步骤轮流为每个路由列重复直到一个空条目被确定。
6.如权利要求4所述的方法,其中所述第一路由列是具有最低使用值的路由列。
7.如权利要求1所述的方法,进一步包括步骤:
接收目标地址信息作为以太网数据帧的一部分;
从目标地址信息和各自的散列函数为路由列计算各自散列值;
确定一个路由列,该路由列具有一个非空条目,该非空条目的索引值等于为该列计算的散列值;
获取存储在该确定的非空条目内的端口信息;和传输以太网数据帧至由该获取的端口信息指示的一个或多个端口。
8.如权利要求7所述的方法,其中如果该条目也存储了等效于目标地址信息的地址信息,每个端口信息仅从该确定的非空条目获取。
9.一种在以太网桥设备的端口之间路由以太网数据帧的方法,其定义一个具有若干路由列的路由表,每个列具有若干条目,并且在一列中的每个条目具有唯一的索引值,为路由列定义各自的散列函数,所述方法包括步骤:
用信息填充路由列,该信息将以太网桥的该端口或多个端口与地址信息联系起来;
接收目标地址信息作为以太网数据帧的一部分;
从该目标地址信息和各自的散列函数为路由列计算各自散列值;
确定一个路由列,该路由列具有非空条目,该非空条目的索引值等于为该列计算的散列值,并且具有地址信息等于所述目标地址信息;
获取存储在该确定的非空条目内的端口信息;和传输以太网数据帧至由该获取端口信息指示的一个或多个端口。
10.如权利要求9所述的方法,其中如果该条目还存储等效于目标地址信息的地址信息,端口信息仅从确定的非空条目获取。
11.一种以太网桥设备,包括:
若干为接收和传输以太网数据帧的端口;
一个路由单元为转发在一个该设备的入站端口接收到的以太网数据帧至该设备的一个出站端口,
其中所述路由单元可操作:
以定义一个具有若干路由列的路由表,每个列具有若干条目,和在同一列中每个条目具有唯一索引值;
以为路由列定义各自的散列函数;
以从以太网桥的一个端口接收来临地址信息;
从该来临地址信息和为每个路由列定义的散列函数中计算该列的散列值;和
对于每个路由列,确定一个条目是否为空,该条目的索引值等于这样一个计算的散列值;
对于那些具有这样一个空条目的路由列,确定一个使用值,该使用值是基于存储数据的该列中的条目数量的;和
将地址和端口信息存储进具有最高使用值的路由列中的该空条目,端口信息识别以太网桥设备的端口,该端口为接收地址信息的端口。
12.如权利要求11所述的设备,进一步可操作,跟随散列值的计算:
以确定一个索引值等于这样一个计算的散列值的条目已经存储了等效于来临地址信息的地址信息,和,如果是,以更新该条目中的端口信息,所述端口信息识别以太网桥设备的端口,该端口为接收来临地址信息的端口,并不将地址和端口信息存储进路由表的一个空条目。
13.如权利要求11所述的设备,进一步可操作,跟随散列值的计算:
以确定一个索引值等于这样一个计算的散列值的条目已经存储了等效于来临地址信息的地址信息,和,如果是,不将地址和端口信息存储进路由表的一个空条目,并且确定存储在所述条目内的端口信息是否可以识别以太网桥设备的端口,该端口为接收来临地址信息的端口,并且,如果否,以更新那个条目内的端口信息。
14.如权利要求11-13任一所述的设备,进一步可操作,如果没有路由列具有这样一个空条目,并且路由表内没有条目已经存储来临地址信息:
以确定,第一路由列对于其他路由列的各自的散列值,其他路由列的地址信息存储在具有与散列值相等的索引值的条目内;
确定其它任何路由列是否具有一个用于存储对于该列所确定的散列值的空条目,并且,如果为是,以传输存储在第一路由列的地址和端口信息至其它列的该空条目,并且以将地址和端口信息存储进具有等于该计算散列值的索引值的第一路由列,所述端口信息识别该端口,该端口为接收地址信息的端口。
15.如权利要求14所述的设备,其中路由单元为第一路由列为每个其它路由列操作以重复步骤直到一个空条目被确定。
16.如权利要求14所述的设备,其中第一路由列是那种具有最低使用值的路由列。
17.如权利要求11所述的设备,其中路由单元可操作:
以接收目标地址信息作为以太网数据帧的一部分;
以从目标地址信息和各自的散列函数为路由列计算各自散列值;
以确定一个路由列,该路由列具有一个非空条目,该非空条目的索引值等于为该列计算的散列值:
以接收存储在已确定的非空条目里的端口信息;和
以传输以太网数据帧至由获取的端口信息指示的一个或多个端口。
18.如权利要求17所述的设备,其中端口信息仅从确定的非空条目获取如果该条目也存储等效于目标地址信息的地址信息。
19.一种在表中存储和获取数据的方法,所述方法包括:
定义一个具有若干存储列的表,每个列具有若干具有各自相关列索引值的存储条目;
为若干存储列定义各自散列函数;
接收一个查询值,和一个关联数据值;
对于每个存储列,从查询值和为该列定义的散列函数计算散列值;
对于每个存储列,判断一个索引值等于所计算的散列值的条目是否为空;
对于那些具有空条目的存储列,基于在列中存储数据的条目数量确定一个使用值;
将关联数据值存储进具有最高使用值的列的该空条目。
20.如权利要求19所述的方法,进一步包括,跟随计算散列值的步骤:
确定一个索引值等于所计算的散列值的条目是否已经存储等效于查询值的信息,并且,如果是,更新该条目中的数据值,并且不将关联数据值存储进路由表的空条目。
21.如权利要求19所述的方法,进一步包括,跟随计算散列值的步骤:
判断一个索引值等于所计算的散列值的条目是否已经存储等效于查询值的信息,并且,如果是,不将关联数据值存储进路由表的一个空条目,并且判断是否存储在该条目的一个数据值等效于关联数据值,并且,如果否,将关联数据值存储进该条目。
22.如权利要求19、20或21所述的方法,进一步包括,如果没有任何存储列具有空条目,并且该表没有任何条目已经存储等效于查询值的信息,步骤:
对于第一存储列:
为其它路由列对相应于存储在具有索引值等于计算散列值的条目内的数据值确定各自的散列值;
确定其它任何存储列是否具有用于存储对于该列所确定的散列值的空条目,并且,如果是,传输存储在第一存储列内的数据值至该其它存储列的空条目,并且将数据值存储进第一存储列的该条目,该第一存储列的索引值等于所计算的散列值。
23.如权利要求22所述的方法,其中轮流为每个存储列重复步骤直到一个空条目被确定。
24.如权利要求22所述的方法,其中第一存储列是具有最低使用值的存储列。
25.如权利要求19所述的方法,进一步包括步骤:
接收期望查询数据;
从期望查询数据和各自散列函数为存储列计算各自散列值;
确定一个存储列,该存储列具有一个非空条目,该非空条目的索引值等于为该列计算的散列值;和
从该确定的非空条目获取一个存储的数据值。
26.如权利要求25所述的方法,其中存储的数据值仅从该确定的非空条目中获取,如果该条目也存储了相当于查询数据的信息。
CN200980131561.2A 2008-08-13 2009-08-12 以太网网桥的交换表 Active CN102124703B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0814908.0 2008-08-13
GB0814908.0A GB2462493B (en) 2008-08-13 2008-08-13 Data processing
PCT/GB2009/001979 WO2010018374A2 (en) 2008-08-13 2009-08-12 Data processing

Publications (2)

Publication Number Publication Date
CN102124703A CN102124703A (zh) 2011-07-13
CN102124703B true CN102124703B (zh) 2015-07-22

Family

ID=39790797

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980131561.2A Active CN102124703B (zh) 2008-08-13 2009-08-12 以太网网桥的交换表

Country Status (6)

Country Link
US (1) US8542686B2 (zh)
EP (1) EP2314027B1 (zh)
CN (1) CN102124703B (zh)
GB (1) GB2462493B (zh)
HK (1) HK1156766A1 (zh)
WO (1) WO2010018374A2 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102377634B (zh) * 2010-08-06 2014-02-05 北京乾唐视联网络科技有限公司 一种接入网设备的入网方法及系统
US8619780B1 (en) 2010-09-30 2013-12-31 Amazon Technologies, Inc. Processing packet routing information
CN102724106B (zh) * 2011-03-30 2015-03-11 华为技术有限公司 媒体接入控制地址的学习方法、网络侧设备和系统
US8446910B2 (en) * 2011-04-14 2013-05-21 Cisco Technology, Inc. Methods for even hash distribution for port channel with a large number of ports
CN102164084B (zh) * 2011-04-21 2014-09-10 杭州华三通信技术有限公司 一种组播报文转发方法及其设备
JP5610227B2 (ja) * 2011-05-18 2014-10-22 株式会社日立製作所 計算機及び識別子管理方法
US8787373B2 (en) 2012-01-19 2014-07-22 International Business Machines Corporation Multicast miss notification for a distributed network switch
US9124527B2 (en) * 2012-08-29 2015-09-01 International Business Machines Corporation Sliced routing table management
US9215171B2 (en) 2012-08-29 2015-12-15 International Business Machines Corporation Hashing-based routing table management
US8854973B2 (en) 2012-08-29 2014-10-07 International Business Machines Corporation Sliced routing table management with replication
US8792494B2 (en) 2012-09-14 2014-07-29 International Business Machines Corporation Facilitating insertion of device MAC addresses into a forwarding database
US9137154B2 (en) * 2012-11-29 2015-09-15 Lenovo Enterprise Solutions (Singapore Pte. LTD Management of routing tables shared by logical switch partitions in a distributed network switch
US9210082B2 (en) 2013-02-19 2015-12-08 Avago Technologies General Ip (Singapore) Pte. Ltd. High speed network bridging
CN104038425B (zh) 2013-03-06 2018-01-02 阿里巴巴集团控股有限公司 转发以太网报文的方法和装置
CN105229980B (zh) 2013-04-11 2018-11-16 马维尔以色列(M.I.S.L.)有限公司 利用可变关键字大小的精确匹配查找的方法及设备
GB2527273B (en) 2014-04-11 2016-08-03 Entuity Ltd Executing a loop computer program to identify a path in a network
GB2513188B (en) 2013-04-19 2015-11-25 Entuity Ltd Identification of the paths taken through a network of interconnected devices
US9559909B2 (en) 2013-04-19 2017-01-31 Entuity Limited Identifying an egress port of a device
EP2984799B1 (en) 2013-04-19 2017-02-01 Entuity Limited Identification of paths in a network of mixed routing/switching devices
ES2620383T3 (es) 2013-04-19 2017-06-28 Entuity Limited Consulta de una tabla de reenvío de tráfico
US9565114B1 (en) 2014-03-08 2017-02-07 Google Inc. Weighted load balancing using scaled parallel hashing
US10153972B2 (en) * 2015-02-13 2018-12-11 Nxp Usa, Inc. Method and apparatus for coding a user defined constant into a key composition rule using variable length command
KR20170006742A (ko) * 2015-07-09 2017-01-18 한국전자통신연구원 소프트웨어 라우터, 그 소프트웨어 라우터에서의 라우팅 테이블 검색 방법 및 라우팅 엔트리 갱신 방법
CN112165387B (zh) * 2020-09-28 2022-11-08 百行征信有限公司 数据散列值的转换方法、装置及计算机设备
CN112491725B (zh) * 2020-11-30 2022-05-20 锐捷网络股份有限公司 一种mac地址的处理方法及装置
US11917041B1 (en) * 2021-06-15 2024-02-27 Amazon Technologies, Inc. Symmetric communication for asymmetric environments

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL116989A (en) * 1996-01-31 1999-10-28 Galileo Technology Ltd Switching ethernet controller
IL125272A0 (en) * 1998-07-08 1999-03-12 Galileo Technology Ltd Vlan protocol
JP2000187668A (ja) * 1998-12-22 2000-07-04 Hitachi Ltd グループ化方法と重複排除方法
US7215641B1 (en) * 1999-01-27 2007-05-08 Cisco Technology, Inc. Per-flow dynamic buffer management
US6577636B1 (en) * 1999-05-21 2003-06-10 Advanced Micro Devices, Inc. Decision making engine receiving and storing a portion of a data frame in order to perform a frame forwarding decision
US6735198B1 (en) * 1999-12-21 2004-05-11 Cisco Technology, Inc. Method and apparatus for updating and synchronizing forwarding tables in a distributed network switch
US6798777B1 (en) * 2000-04-17 2004-09-28 Juniper Networks, Inc. Filtering and route lookup in a switching device
CA2317081C (en) * 2000-08-28 2004-06-01 Ibm Canada Limited-Ibm Canada Limitee Estimation of column cardinality in a partitioned relational database
US6772163B1 (en) * 2001-12-20 2004-08-03 Ncr Corporation Reduced memory row hash match scan join for a partitioned database system
US7539191B1 (en) * 2002-12-12 2009-05-26 Packet Design, Inc. System and method for securing route processors against attack
US7003625B2 (en) * 2002-12-19 2006-02-21 Mosaid Technologies, Inc. Searching small entities in a wide CAM
US7626985B2 (en) * 2003-06-27 2009-12-01 Broadcom Corporation Datagram replication in internet protocol multicast switching in a network device
US7974284B2 (en) * 2003-06-27 2011-07-05 Broadcom Corporation Single and double tagging schemes for packet processing in a network device
US7411957B2 (en) * 2004-03-26 2008-08-12 Cisco Technology, Inc. Hardware filtering support for denial-of-service attacks
US7586851B2 (en) * 2004-04-26 2009-09-08 Cisco Technology, Inc. Programmable packet parsing processor
US8274979B2 (en) * 2005-12-30 2012-09-25 Telecom Italia S.P.A. Method and system for secure communication between a public network and a local network

Also Published As

Publication number Publication date
WO2010018374A3 (en) 2010-04-22
HK1156766A1 (en) 2012-06-15
GB2462493A (en) 2010-02-17
WO2010018374A2 (en) 2010-02-18
GB2462493B (en) 2012-05-16
CN102124703A (zh) 2011-07-13
GB0814908D0 (en) 2008-09-17
US20110188503A1 (en) 2011-08-04
EP2314027B1 (en) 2012-05-23
US8542686B2 (en) 2013-09-24
EP2314027A2 (en) 2011-04-27

Similar Documents

Publication Publication Date Title
CN102124703B (zh) 以太网网桥的交换表
US5027350A (en) Method and apparatus for providing a local area network bridge
US6775281B1 (en) Method and apparatus for a four-way hash table
AU759929B2 (en) Network router search engine using compressed tree forwarding table
US7953077B2 (en) Network processor with single interface supporting tree search engine and CAM
EP2374250B1 (en) Load balancing
CN100547984C (zh) 在交换机的输入端口处过滤帧
US7408930B2 (en) Address learning to enable high speed routing table lookups
JPH077524A (ja) 通信加入者のアドレス識別子へのアクセス方法
CN105978762B (zh) 冗余以太网数据传输设备、系统及方法
CN101820386A (zh) 用于促进在以内容为中心的网络中转发分组的方法和系统
CN109743414B (zh) 利用冗余连接提高地址翻译可用性的方法及计算机可读存储介质
JPH0685819A (ja) コンピュータシステム
GB2268035A (en) Transmission and storage of real time data in a network system
CN102474467A (zh) 使用父-子链路聚合组的服务器端负载均衡
CN1255975C (zh) 在路由设备中为分组选择路由的方法
WO2005124577A2 (en) Scalable distributed parallel access memory systems with internet routing applications
US7477639B2 (en) High speed routing table learning and lookup
CN1658597A (zh) 高速路由表学习和查找
US20050147111A1 (en) Updating address tables
CN115865844B (zh) 基于sdn与ndn的虚实结合动态流量调度方法及装置
CN1905516B (zh) 一种分配双向转发检测会话鉴别符的方法
CN102045262A (zh) 媒体接入控制地址表更新方法、装置及网络设备
CN102413038B (zh) 一种路由下一跳不可达的处理方法及系统
JP3570606B2 (ja) データ検索装置および方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: KELEI UK CO., LTD.

Free format text: FORMER OWNER: GNODAL LTD.

Effective date: 20140410

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

Effective date of registration: 20140410

Address after: Redding

Applicant after: CRAY UK LIMITED

Address before: Bristol

Applicant before: Gnodal Ltd

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201126

Address after: American Texas

Patentee after: HEWLETT-PACKARD DEVELOPMENT Co.,L.P.

Address before: British lightning

Patentee before: GNODAL Ltd.