CN109995645B - 一种灵活查找fdb表项的芯片实现方法 - Google Patents
一种灵活查找fdb表项的芯片实现方法 Download PDFInfo
- Publication number
- CN109995645B CN109995645B CN201910172591.3A CN201910172591A CN109995645B CN 109995645 B CN109995645 B CN 109995645B CN 201910172591 A CN201910172591 A CN 201910172591A CN 109995645 B CN109995645 B CN 109995645B
- Authority
- CN
- China
- Prior art keywords
- fdb
- entry
- matching
- chip
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明揭示了一种灵活查找FDB表项的芯片实现方法,包括CPU下发匹配数据和掩码,并将匹配数据和掩码写入芯片表项中;芯片开始FDB查找,从FDB表项中读取查找数据,并从芯片表项中读取匹配数据和掩码;判断匹配数据和掩码逻辑运算后的运算结果,与查找数据和掩码做同样逻辑运算后的运算结果是否相同,若相同,则对当前FDB表项进行CPU下发的FDB操作。本发明可实现对FDB表项的灵活查找,且大大简化了芯片的实现。
Description
技术领域
本发明涉及一种转发表查找技术,尤其是涉及一种灵活查找FDB表项的芯片实现方法。
背景技术
FDB(Forwarding DataBase,转发数据库/转发表)是交换机实现二层转发的重要依据,表中存储Mac(Media Access Control,媒体访问控制)地址、Fid(ForwardingInstance ID,转发实例号)、出口(Port)和标识(Flag)信息,交换机端口接收到报文时,从中获取其目的Mac和Fid查找FDB表,查找到匹配条目后从该表项中存储的对应port转发出去。为了实现交换机中FDB表的合理配置,常常需要对表项进行显示/删除/替换等操作,这些操作都需要首先查找到指定的FDB条目。
传统芯片采用按特定类型查找的方法,例如用户需要删除所有Fid为1的FDB表项,芯片会按Fid进行查找,遍历所有FDB表项,查找出所有F id等于1的条目,然后删除。对于每一种类型(如Port/mac/fid/mac+port/fi d+port等)都需要一段相应类型的查找逻辑,芯片实现较复杂,当用户提出新增操作类型的需求时,要在芯片中增加相应类型的实现,不易满足用户多种多样的需求。
也就是说,传统芯片的FDB表项查找方式,上层用户只能根据芯片支持的某些类型进行FDB操作,不够灵活;芯片中针对每种类型都需要一段相应的处理逻辑,实现比较复杂,流片后无法满足用户的新增需求。而灵活高效的FDB查找方式对交换机的性能提升具有重要意义。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种基于掩码灵活查找FDB表项的芯片实现方法。
为实现上述目的,本发明提出如下技术方案:一种灵活查找FDB表项的芯片实现方法,包括:
S1,CPU下发匹配信息,并将所述匹配信息写入芯片表项中,写入后触发芯片进行FDB操作,所述匹配信息包括匹配数据和掩码;
S2,芯片开始FDB查找,从FDB表项中读取查找数据,并从所述芯片表项中读取所述匹配数据和掩码;
S3,判断匹配数据和掩码逻辑运算后的运算结果,与查找数据和掩码做同样逻辑运算后的运算结果是否相同,若相同,则进入S4;
S4,对当前FDB表项进行CPU下发的所述FDB操作,并转入下一条FDB表项重复进行S2~S4,直至最后一条FDB表项。
优选地,所述匹配数据包括匹配关键字和匹配转发信息,所述匹配关键字包括第一mac地址和第一Fid,所述匹配转发信息包括第一出口信息,所述掩码包括与匹配关键字对应的关键字掩码和与匹配转发信息相对应的转发信息掩码。
优选地,CPU下发的FDB操作包括FDB表项删除、显示、替换操作之一。
优选地,S2中,芯片从FDB表的表项id为0的表项开始遍历。
优选地,S2中,在从FDB表项中读取查找数据之前,先判断当前FDB表项是否有效,有效则从FDB表项中读取查找数据,否则转入下一条FDB表项。
优选地,所述查找数据包括查找关键字和查找转发信息,所述查找关键字包括第二mac地址和第二Fid;所述查找转发信息包括第二出口信息。
优选地,所述S3包括:
S31,将匹配关键字和查找关键字分别与关键字掩码做逻辑运算,判断运算结果是否相同,若相同则进入S32;
S32,将匹配转发信息和查找转发信息分别与转发信息掩码做逻辑运算,判断运算结果是否相同,若相同则进入所述S4。
优选地,所述逻辑运算为逻辑与运算。
优选地,S4中,转入下一条FDB表项后,判断当前FDB表项是否是最后一条FDB表项,若是,则结束,否则重复进行S2~S4。
优选地,S2中,从FDB表项中读取查找数据包括:从FDB表的关键字表中读取所述第二mac地址和第二Fid保存到读取关键字变量中,从FDB表的转发信息表中读取所述第二出口信息保存到读取转发信息变量中。
本发明的有益效果是:本发明提出了一种基于掩码灵活查找FDB表项的芯片实现方法,在CPU端,由用户下发数据和掩码两部分信息,用户可根据需要随意指定掩码的值,可实现任意字段的灵活匹配。在芯片端,仅需一段逻辑便可实现FDB表中任意字段的灵活匹配,能够满足用户多样的需求,且芯片实现更加简单。
附图说明
图1、图2均是本发明方法的流程示意图。
具体实施方式
下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
芯片的FDB表中存储的信息包括关键字Key和转发的出口信息Ad,其中,Key包括Mac地址和Fid,Ad包括出口(Port)和转发标识(Flag)信息。且,MacHashKey表示存储FDB关键字的key表,Dsmac表示存储出口信息的Ad表。用户操作FDB表项需要匹配的数据和掩码存放在AccData表项中。
基于以上定义的芯片表项,如图1所示,利用掩码,本发明实施例所揭示的一种灵活查找FDB表项的芯片实现方法,包括以下步骤:
S1,CPU下发匹配信息,并将匹配信息写入芯片表项中,写入后触发芯片进行FDB操作,匹配信息包括匹配数据和掩码。
这一步骤是CPU端的操作过程,具体包括以下三个步骤:
结合图2所示,S11,CPU下发匹配信息。
具体地,这里的匹配信息包括匹配数据和掩码,其中,匹配数据与FDB表中存储的信息相对应,其包括匹配关键字和匹配转发信息,本实施例中,用户根据需要由CPU下发macKey、macKeyMask、macAd和macAdMask信息,这里的macKey即为匹配关键字,macAd即为匹配转发信息,其中macKey又具体包含第一mac地址和第一Fid,macAd包含第一出口信息(Port)。掩码包括与匹配关键字对应的关键字掩码和与匹配转发信息相对应的转发信息掩码,即这里的macKeyMask表示mackey的掩码,macAdMask表示macAd的掩码。
优选地,不同于传统方法,用户下发指定变量的值进行FDB查找,本发明由用户下发数据信息macKey和macAd,掩码信息macKeyMask和macAdMask,用户可根据需要随意指定掩码的值,从而实现可以匹配任意字段的灵活查找。
S12,将匹配信息写入芯片表项中。
具体地,这里的芯片表项即上述AccData表项,即将上述S11中CPU下发的匹配信息写入AccData表项的相应字段。
S13,触发芯片进行FDB操作。
具体地,由CPU指定芯片的FDB操作方式,包括但不限于FDB表项删除(delete)、显示(dump)、替换(replace)操作之一等。并触发芯片进行指定的FDB操作。
S2,芯片开始FDB查找,从FDB表项中读取查找数据,并从芯片表项中读取匹配数据和掩码。
具体地,本实施例中,S2包括以下几个步骤:
结合图2所示,S21,芯片开始FDB查找。
实施时,芯片从FDB表的表项id为0(即entry-id为0)的表项开始遍历,当然也可以根据需要从指定表项进行查找。
S22,判断当前FDB表项(entry)是否有效,有效则转入S23,无效则转入S4,转入下一条FDB表项。
这里判断FDB表项是否有效是根据FDB表项中的valid字段进行判断的,该字段只有一个bit,为1则表示当前entry有效,否则无效。
S23,从FDB表项中读取查找数据。
具体地,由上述描述可知,需要读取的查找数据存储于FDB表的key表和Ad表中,所以分别从这两个表中读取。查找数据具体包括查找关键字和查找转发信息,其中,查找关键字包括第二mac地址和第二Fid;查找转发信息包括第二出口信息。具体地,本实施例中,从key表MacHashKey中读取上述第二Mac地址和上述第二Fid,读取后保存在读取关键字变量macKeyRd中,从Ad表Dsmac中读取上述第二出口信息(Ad)保存在读取转发信息变量macAdRd中。
S24,从芯片表项中读取匹配数据和掩码。
具体地,从上述AccData表项中读取CPU写入的用户需要匹配的匹配数据,具体为上述数据信息macKey、macAd和掩码信息macKeyMask、macAdMask。
S3,判断匹配数据和掩码逻辑运算后的运算结果,与查找数据和掩码做同样逻辑运算后的运算结果是否相同,若相同,则进入S4。
具体地,因匹配数据和查找数据均包括关键字和转发信息两部分,所以需要进行关键字的匹配运算和转发信息的匹配运算两个过程。所以S3具体包括:
结合图2所示,S31,将匹配关键字和查找关键字分别与关键字掩码做逻辑运算,判断运算结果是否相同,若相同则进入S32。
具体地,本实施例中,将数据信息macKeyRd、macKey分别和macKeyMask做与运算,即macKeyRd&macKeyMask及macKey&macKeyMask,判断两者的运算结果是否相同,若相同,说明数据信息匹配,则继续进行下一步S32的转发信息匹配。若不相同,则转入S4,转入下一条FDB表项。
S32,将匹配转发信息和查找转发信息分别与转发信息掩码做逻辑运算,判断运算结果是否相同,若相同则进入S4。
具体地,本实施例中,将转发信息macAdRd、macAd分别和macAdMask做与运算,即macAdRd&macAdMask及macAd&macAdMask,判断两者的运算结果是否相同,若相同,说明转发信息也匹配,则转入S4。若不相同,则转入S4,转入下一条FDB表项。
S4,对当前FDB表项进行CPU下发的所述FDB操作,并转入下一条FDB表项重复进行S2~S4,直至最后一条FDB表项。
具体地,S4具体包括:
结合图2所示,S41,对当前FDB表项(entry)进行上述CPU下发的相应操作(delete/dump/replace等),如CPU下发的delete操作,则这里便执行该delete操作。
S42,转入下一条FDB表项:即FDB表项的id(entry-id)++。
S43,判断当前FDB表项(entry)是否是最后一条FDB表项,若是,则转入S44,否则,则转入S22。
S44,结束本次操作。
上述S2~S4的操作为芯片端的操作,具体为对芯片中的FDB表项进行遍历,逐条比较当前表项存储的信息和用户下发掩码按位与的运算结果是否与用户需要匹配的信息相等,相等时表示匹配到用户需要操作的条目,对其进行delete/dump/replace等操作。即芯片端仅需一次遍历就能实现任意类型的FDB查找,大大简化了芯片实现。
优选地,在实际的上层应用中,如果用户需要对FDB表项进行分类或优先级划分,可以用Flag或Priority(优先级字段)进行标识,将相应的字段的掩码置1或者0,该方法可以灵活匹配Flag或优先级字段,对FDB的查找转发具有重要意义。
综上,本发明提出的灵活查找FDB表项的芯片实现方法,不仅能够提供FDB信息的灵活匹配,还大大简化了芯片的实现。查找FDB表项时不再受限于查找类型,输入需要的数据信息和掩码便可进行任意字段的查找。将传统方法中每一种类型都需要一段查找逻辑的实现方法,简化到仅需一段逻辑便可实现任意字段的匹配查找。
本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。
Claims (9)
1.一种灵活查找FDB表项的芯片实现方法,其特征在于,包括:
S1,CPU下发匹配信息,并将所述匹配信息写入芯片表项中,写入后触发芯片进行FDB操作,所述匹配信息包括匹配数据和掩码,所述匹配数据包括匹配关键字和匹配转发信息,所述匹配关键字包括第一mac地址和第一Fid,所述匹配转发信息包括第一出口信息,所述掩码包括与匹配关键字对应的关键字掩码和与匹配转发信息相对应的转发信息掩码,所述FDB为转发数据库/转发表,所述Fid为转发实例号;
S2,芯片开始FDB查找,从FDB表项中读取查找数据,并从所述芯片表项中读取所述匹配数据和掩码;
S3,判断匹配数据和掩码逻辑运算后的运算结果,与查找数据和掩码做同样逻辑运算后的运算结果是否相同,若相同,则进入S4;
S4,对当前FDB表项进行CPU下发的所述FDB操作,并转入下一条FDB表项重复进行S2~S4,直至最后一条FDB表项。
2.根据权利要求1所述的灵活查找FDB表项的芯片实现方法,其特征在于,CPU下发的FDB操作包括对FDB表项进行的删除、显示、替换操作之一。
3.根据权利要求1所述的灵活查找FDB表项的芯片实现方法,其特征在于,S2中,芯片从FDB表的表项id为0的表项开始遍历。
4.根据权利要求1所述的灵活查找FDB表项的芯片实现方法,其特征在于,S2中,在从FDB表项中读取查找数据之前,先判断当前FDB表项是否有效,有效则从FDB表项中读取查找数据,否则转入下一条FDB表项。
5.根据权利要求1所述的灵活查找FDB表项的芯片实现方法,其特征在于,所述查找数据包括查找关键字和查找转发信息,所述查找关键字包括第二mac地址和第二Fid;所述查找转发信息包括第二出口信息。
6.根据权利要求5所述的灵活查找FDB表项的芯片实现方法,其特征在于,所述S3包括:
S31,将匹配关键字和查找关键字分别与关键字掩码做逻辑运算,判断运算结果是否相同,若相同则进入S32;
S32,将匹配转发信息和查找转发信息分别与转发信息掩码做逻辑运算,判断运算结果是否相同,若相同则进入所述S4。
7.根据权利要求1或6所述的灵活查找FDB表项的芯片实现方法,其特征在于,所述逻辑运算为逻辑与运算。
8.根据权利要求1所述的灵活查找FDB表项的芯片实现方法,其特征在于,S4中,转入下一条FDB表项后,判断当前FDB表项是否是最后一条FDB表项,若是,则结束,否则重复进行S2~S4。
9.根据权利要求5所述的灵活查找FDB表项的芯片实现方法,其特征在于,S2中,从FDB表项中读取查找数据包括:从FDB表的关键字表中读取所述第二mac地址和第二Fid保存到读取关键字变量中,从FDB表的转发信息表中读取所述第二出口信息保存到读取转发信息变量中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910172591.3A CN109995645B (zh) | 2019-03-07 | 2019-03-07 | 一种灵活查找fdb表项的芯片实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910172591.3A CN109995645B (zh) | 2019-03-07 | 2019-03-07 | 一种灵活查找fdb表项的芯片实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109995645A CN109995645A (zh) | 2019-07-09 |
CN109995645B true CN109995645B (zh) | 2021-03-16 |
Family
ID=67130508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910172591.3A Active CN109995645B (zh) | 2019-03-07 | 2019-03-07 | 一种灵活查找fdb表项的芯片实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109995645B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112235198A (zh) * | 2020-10-15 | 2021-01-15 | 东莞飞思凌通信技术有限公司 | 一种基于fpga实现的多用户tcam掩码匹配算法 |
CN114978995B (zh) * | 2022-05-26 | 2023-07-21 | 新华三技术有限公司 | 一种报文转发路径选择方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030947A (zh) * | 2007-04-29 | 2007-09-05 | 华为技术有限公司 | 一种报文发送的方法和装置 |
CN101321162A (zh) * | 2008-07-03 | 2008-12-10 | 江苏华丽网络工程有限公司 | 基于tcam序偶的tcp序列号检查硬件实现方法 |
US7516487B1 (en) * | 2003-05-21 | 2009-04-07 | Foundry Networks, Inc. | System and method for source IP anti-spoofing security |
CN102571599A (zh) * | 2012-02-08 | 2012-07-11 | 福建三元达通讯股份有限公司 | 一种路由表项的快速存储方法 |
CN103825824A (zh) * | 2014-03-04 | 2014-05-28 | 华为技术有限公司 | 一种报文处理方法及装置 |
CN104184664A (zh) * | 2014-08-05 | 2014-12-03 | 杭州华三通信技术有限公司 | 路由转发表项生成方法及装置 |
CN104394078A (zh) * | 2014-11-05 | 2015-03-04 | 盛科网络(苏州)有限公司 | 一种查询芯片fdb表项的方法及系统 |
CN104702508A (zh) * | 2015-03-24 | 2015-06-10 | 深圳中兴网信科技有限公司 | 表项动态更新方法及系统 |
-
2019
- 2019-03-07 CN CN201910172591.3A patent/CN109995645B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7516487B1 (en) * | 2003-05-21 | 2009-04-07 | Foundry Networks, Inc. | System and method for source IP anti-spoofing security |
CN101030947A (zh) * | 2007-04-29 | 2007-09-05 | 华为技术有限公司 | 一种报文发送的方法和装置 |
CN101321162A (zh) * | 2008-07-03 | 2008-12-10 | 江苏华丽网络工程有限公司 | 基于tcam序偶的tcp序列号检查硬件实现方法 |
CN102571599A (zh) * | 2012-02-08 | 2012-07-11 | 福建三元达通讯股份有限公司 | 一种路由表项的快速存储方法 |
CN103825824A (zh) * | 2014-03-04 | 2014-05-28 | 华为技术有限公司 | 一种报文处理方法及装置 |
CN104184664A (zh) * | 2014-08-05 | 2014-12-03 | 杭州华三通信技术有限公司 | 路由转发表项生成方法及装置 |
CN104394078A (zh) * | 2014-11-05 | 2015-03-04 | 盛科网络(苏州)有限公司 | 一种查询芯片fdb表项的方法及系统 |
CN104702508A (zh) * | 2015-03-24 | 2015-06-10 | 深圳中兴网信科技有限公司 | 表项动态更新方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109995645A (zh) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7019674B2 (en) | Content-based information retrieval architecture | |
US7437354B2 (en) | Architecture for network search engines with fixed latency, high capacity, and high throughput | |
US7349382B2 (en) | Reverse path forwarding protection of packets using automated population of access control lists based on a forwarding information base | |
US7565343B2 (en) | Search apparatus and search management method for fixed-length data | |
EP1779605B1 (en) | Forwarding database in a network switch device | |
US20080192754A1 (en) | Routing system and method for managing rule entries of ternary content addressable memory in the same | |
CN109995645B (zh) | 一种灵活查找fdb表项的芯片实现方法 | |
EP1358739A2 (en) | Method and apparatus for routing table management | |
US8010557B2 (en) | Retrieving method for fixed length data | |
CN102377664A (zh) | 一种基于tcam的区域匹配装置和方法 | |
US20070283144A1 (en) | System and Method for Implementing ACLs Using Standard LPM Engine | |
CN106789859B (zh) | 报文匹配方法及装置 | |
US7392349B1 (en) | Table management within a policy-based routing system | |
US7739445B1 (en) | Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device | |
US6574701B2 (en) | Technique for updating a content addressable memory | |
US7558775B1 (en) | Methods and apparatus for maintaining sets of ranges typically using an associative memory and for using these ranges to identify a matching range based on a query point or query range and to maintain sorted elements for use such as in providing priority queue operations | |
US7299317B1 (en) | Assigning prefixes to associative memory classes based on a value of a last bit of each prefix and their use including but not limited to locating a prefix and for maintaining a Patricia tree data structure | |
CN107896194B (zh) | 一种路由查找方法、装置和存储介质 | |
CN116319555B (zh) | 一种面向虚拟专用网络的路由转发方法 | |
JP2006246488A (ja) | ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム | |
US7154892B2 (en) | Method and apparatus for managing LPM-based CAM look-up table, and recording medium therefor | |
CN115086221B (zh) | 一种报文处理方法、装置、转发设备和存储介质 | |
JPH0581102A (ja) | テーブル管理方式 | |
JP3711895B2 (ja) | 検索システム及びそれに用いる検索条件cam登録方法並びにそのプログラム | |
JP2003234762A (ja) | テーブル検索装置および方法およびプログラムおよび記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 215101 unit 13 / 16, 4th floor, building B, No. 5, Xinghan street, Suzhou Industrial Park, Jiangsu Province Patentee after: Suzhou Shengke Communication Co.,Ltd. Address before: Unit 13 / 16, 4th floor, building B, No.5 Xinghan street, Suzhou Industrial Park, 215000 Jiangsu Province Patentee before: CENTEC NETWORKS (SU ZHOU) Co.,Ltd. |