CN108875064B - 基于FPGA的OpenFlow多维数据匹配查找方法 - Google Patents
基于FPGA的OpenFlow多维数据匹配查找方法 Download PDFInfo
- Publication number
- CN108875064B CN108875064B CN201810711439.3A CN201810711439A CN108875064B CN 108875064 B CN108875064 B CN 108875064B CN 201810711439 A CN201810711439 A CN 201810711439A CN 108875064 B CN108875064 B CN 108875064B
- Authority
- CN
- China
- Prior art keywords
- index
- matching
- rule
- domain
- searching
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及基于FPGA的OpenFlow多维数据匹配查找方法。将匹配域关键字作为行地址,规则索引为列地址的二维数组结构,通过并行及流水化处理方式实现高效的匹配域分类查找方法及系统,其在可以实现高速查找的同时,支持动态高效数据更新,支持多域长字段的扩展,支持掩码匹配查找,可以满足将来匹配域再扩展的需求。基于FPGA硬件实现,在满足高效规则查找的同时也卸载了软件对规则更新处理的功能,弥补了软件处理效率低的问题以及TCAM器件无法高效更新的不足。
Description
技术领域
本发明涉及互联网数据报文分类查找,具体涉及报文的多数据域表项的分类查找方法。
背景技术
随着网络链路处理速率的不断增长以及分类规则的不断复杂多样,报文的分类查找速率成为制约网络数据处理速率的瓶颈,此时软件实现已经无法满足高性能数据处理的需求,只能寻求硬件的解决方案,而三态内容寻址存储器(Ternary ContentAddressableMemory-TCAM),虽然查找处理速率可以满足需求,但其具有存储面积大、价格高、功耗大及不支持高效的数据更新的缺点。然而FPGA支持结构可重构和数据并行处理的优点兼顾了软件的灵活性及硬件的高效性,基于FPGA实现报文分类查找算法成为了开发者研究的焦点。
另外,近几年随着软件定义网络(Software Defined Network,SDN)的兴起,使得SDN的处理架构已经逐渐成为了企业级网络的新型处理架构。SDN的核心技术OpenFlow是通过将网络设备划分为基于软件的控制平面与基于硬件的数据平面,从而实现了网络流量的灵活控制。在OpenFlow中查找流表为其核心的功能之一,流表由很多个流表项组成,每个流表项为一条转发规则。进入网络设备的数据流通过查询流表来获得转发的控制信息。OpenFlow规范(V1.0、V1.1、V1.2、V1.3)规定流表项由匹配域、计数器和操作组成;其中匹配域为多元组(V1.0为12元组,V1.3扩展到了39元组),是流表项的标识;计数器用来计数流表项的统计数据;操作域用于标明与该流表项匹配的数据包应该执行的操作。OpenFlow处理过程中,通过将数据流与流表中的流表项匹配,从而决定转发的动作,其需要多域进行查找匹配,获得最优的匹配流表项。
随着OpenFlow的流表项匹配域长度和维数的扩展以及网络设备对高速处理速率的要求不断提升,传统的查找算法已经无法满足对多维长字段的高速处理要求。
发明内容
针对OpenFlow规范要求及多维匹配域的特点,本发明特提出一种基于二维数组存储流表标识的OpenFlow查找分类方法,以克服OpenFlow复杂规则查表及更新效率低、扩展复杂的问题。本发明提出一种通过二维数组存储流表标识,其中将匹配域关键字作为行地址,规则索引为列地址的二维数组结构,通过并行及流水化处理方式实现高效的匹配域分类查找方法及系统,其在可以实现高速查找的同时,支持动态高效数据更新,支持多域长字段的扩展,支持掩码匹配查找,可以满足将来匹配域再扩展的需求。
本发明是通过
具体实现方案如下:将流表的匹配域根据具体情况进行切分(比如根据FPGA存储RAM块的大小进行切分),切分为多个字段,每个字段作为不同二维数组的地址,其中将匹配域关键字作为行地址,列地址为查找的匹配域的Action索引。插入时,针对匹配域及Action索引值将指定的二维数组域赋值为1,删除时根据Action索引值将表项状态寄存器(TSR)赋值为0;查找时,根据各匹配域查找的结果匹配索引值最高且二维数据域标识为1的结果进行输出。
软件下发规则,具体为:软件使用与硬件协商好的规则优先配置地址,将匹配域、掩码以及规则索引下发给硬件(0号索引优先级最高);
硬件根据匹配域的切分规则将匹配域及掩码域切分为多个不同的字段,硬件根据匹配域及掩码计算二组数组的更新地址,将不同的字段计算的更新地址作为不同二组数组域的行地址,索引值作为列地址并行对多个不同二组数组存储域进行更新插入;
删除时,软件只需按与硬件协商的格式下发需删除规则的索引值即可。硬件会根据索引值更新表项的状态寄存器将其对应位置置为0;
查找时,硬件将提取的匹配域关键字进行切分,将切分的多个不同关键字字段作为行地址并行查找各自对应的二维数组,获得对应行的所有列数据的一维数组,即对应的规则索引有效标识位;
将各关键字段获得的列数据进行与操作,获得满足各关键字段的索引有效标识位;
根据索引标识位查找优先级最高的索引标识位,从而得到最高优先级Action索引,将其输出。
另外,本发明通过将OpenFlow的匹配域进行切分,结合FPGA并行处理的特点,并行的处理每个匹配字段,并在查找时采用流水化的处理方式以实现快速匹配的目的。本发明还可以根据用户要求动态扩展此分类查找方法,使其支持更多流表表项。
发明提出了一种通过二维数组存储表项索引的方式,通过并行及流水线处理的方式实现了高效的规则索引查找功能。另外,本发明基于FPGA硬件实现,在满足高效规则查找的同时也卸载了软件对规则更新处理的功能,弥补了软件处理效率低的问题以及TCAM器件无法高效更新的不足。
附图说明
图1本发明基本处理结构图;
图2流表匹配域存储结构图;
图3匹配域长度扩展实现结构图;
图4规则扩展结构图;
图5 TCAM_Field X*Y*Z*40整体实现结构图;
图6 TCAM_Field X*Y*40整体实现结构图;
图7配置地址格式图。
具体实施方式
本发明的核心在于根据用户需求,将OpenFlow匹配域进行切分,使用二维数组的存储方式,并行的进行规则更新及查找匹配,并采用流水化的方式实现多条数据流的规则匹配查找,从而实现高效快速的分类查找的目的。另外,此系统支持灵活的匹配域及流表表项的扩展能力,可满足将来匹配域扩展及流表表项扩展的需求。
本发明是基于FPGA每个内嵌RAM块可配置成256*40的双端口RAM进行的说明,具体说明如下:
参照图1,图1为本发明基本处理结构图,由于RAM块为256*40因此切分的匹配域关键字(Key)为8位,查找模块以8位Key为查找地址对表项进行访问,得到40位的规则的索引标识位,优先级选择器则根据优先级输出最高优先级的规则索引。
参照图2,图2为流表匹配域的存储结构图,其为256*40的RAM存储块,在此可视为256*40的二维数组,其中行地址256个,为匹配域关键字(Key)字段;列地址为40个,为规则索引字段(Index)。图2将8位的Key作为地址查找RAM(Key=0111_1111),查找出的结果为此关键字段命中的40条规则的索引标识位(Index_Bitmap)为01_0A00_0005,其中第0,2,25,27,32位为1,表示该key匹配了上述5条规则。在实现时,本发明将索引0位的规则定义为最高优先级,因此索引0的规则为索引输出的查找命中规则索引。
参照图3,若匹配域为多域长字段域则可以扩展其实现结构,具体实现如下所述:
301:将多域长字段的匹配域关键字根据需求进行切分,在此是以8位为单位进行切分,切分完的Key并行的送给不同的8*40的查找模块。
302:8*40的查找模块根据输入的Key并行查找规则的Index_Bitmap。
303、304、305:将不同的合并级别的Index_Bitmap进行与操作。
306:根据最终得到的Index_Bitmap选择出优先级最高的Index,将其Index结果输出。在处理过程中301、302、303、304、305及306进行了流水化处理,因此在多个关键字顺序到达时,只有一个关键查找的索引延时会比较长(最终的延时由合并与的层次相关),其它均可在一个时钟周期后输出结果,因此保证了查找匹配的查找速率。
参照图4,若扩展规则数目,则可以通过扩展TCAM_Block X*40模块实现,将不同的规则对应到不同模块的Bitmap中,则可以并行的扩展规则的数目。通过此方式在资源允许的情况下可以任意组合无限制的扩展。TCAM_Block X*Y*40模块即在匹配域关键字为X时规则条数支持Y*40条,TCAM_Block X*Y*Z*40则是在匹配域关键字为X时规则条数支持Y*Z*40条。
参照图5,图5为TCAM_Field X*Y*Z*40整体实现结构图,其主要分为配置管理通路(红色向线所示)以及数据处理通路(黑色向线所示)。配置管理通路的处理流程为:
501:软件通过配置总线下发表项更新控制指令到表项规则判断逻辑;
502:表项规则判断逻辑根据配置的地址选择配置的TCAM_Block X*Y*40模块;
503:TCAM_Block X*Y*40模块中的表项规则判断逻辑在根据配置地址选择配置的TCAM_Block X*40模块。
数据处理通路的处理流程为:
504:将输入的Key同时分派给多个不同的TCAM_Block X*Y*40模块;
505:TCAM_Block X*Y*40又会将Key再次分派给不同的TCAM_Block X*40模块;
506:TCAM_Block X*40模块则根据Key查找匹配的规则判断是否有规则命中,输出相应的Hit值和命中的规则索引值Index_ID。
507:TCAM_Block X*Y*40模块中的优先级查找模块则根据规则索引值Index_ID选择各TCAM_Block X*40中命中优先级最高的索引进行输出。
508:TCAM_Block X*Y*Z*40模块中的优先级查找模块则根据规则索引值Index_ID选择各TCAM_Block X*Y*40中命中优先级最高的索引进行输出,从而可以输出各命中规则中优先级最高的索引值。
参照图6,图6为TCAM_Field X*Y*40整体实现结构图,其主要分为配置管理通路(红色向线所示)以及数据处理通路(黑色向线所示)。配置管理通路的处理流程为:
601:表项规则判断逻辑接收TCAM_Field X*Y*Z*40顶层的配置命令;
602:表项规则判断逻辑则是根据配置地址选择配置的TCAM_Block X*40模块,将配置信息送给相应的TCAM_Block X*40模块的表项寄存器管理模块;
603:表项寄存器管理模块则用于下发更新的规则表项给表项更新管理;
604:表项更新管理模块会根据下发的表项将配置规则以二维数组的形式更新到RAM表中,并更新表项状态寄存器TSR对应表项的状态,此状态用于标识对应表项是否有效。
数据处理通路处理流程为:
605:TCAM_Block X*Y*40过接收的输入的Key,分派给不同的TCAM_Block X*40模块;
606:各TCAM_Block X*40模块并行的以流水化的方式查找模块内不同的RAM,判断Key是否有规则命中;
607:若TCAM_Block X*40模块内规则有命中则输出Hit位及对应的规则索引Index_ID。608:TCAM_Block X*Y*40模块优先级选择器在根据各TCAM_Block X*40模块输出的Hit位及Index_ID查找出优先级最高的Index_ID进行输出。
参照图7,图7为配置总线地址定义格式图,其分为TCAM_Block X*Y*40_addr、TCAM_Block X*40_addr和Core_addr三部分,其中TCAM_Block X*Y*40_addr为TCAM_BlockX*Y*Z*4内各TCAM_Block X*Y*40的地址,TCAM_Block X*40_addr为TCAM_Block X*Y*40模块内各TCAM_Block X*40的地址,Core_addr为TCAM_Block X*40内部更新寄存器的地址,其各地址字段的位宽根据自定义的结构相关。
由上述对整个系统实现结构和结构内容的组织方式可知,本发明是可根据具体需求灵活扩展的基于OpenFlow的多元组、多表项的分类查找方法。
Claims (1)
1.基于FPGA的OpenFlow多维数据匹配查找方法,将流表的匹配域进行切分,切分为多个字段,每个字段作为不同二维数组的地址,其中将匹配域关键字作为行地址,列地址为查找的匹配域的Action索引,其特征在于,
插入时,针对匹配域及Action索引值将指定的二维数组域赋值为1,删除时根据Action索引值将表项状态寄存器TSR赋值为0;查找时,根据各匹配域查找的结果匹配索引值最高且二维数据域标识为1的结果进行输出,其中:
软件下发规则具体为:软件使用与硬件协商好的规则优先配置地址,将匹配域、掩码以及规则索引下发给硬件,0号索引优先级最高;
硬件根据匹配域的切分规则将匹配域及掩码域切分为多个不同的字段,硬件根据匹配域及掩码计算二维数组的更新地址,将不同的字段计算的更新地址作为不同二维数组域的行地址,索引值作为列地址并行对多个不同二维数组域进行更新插入;
删除时,软件只需按与硬件协商的格式下发需删除规则的索引值即可,硬件根据索引值更新表项的状态寄存器将其对应位置置为0;
查找时,硬件将提取的匹配域关键字进行切分,将切分的多个不同关键字字段作为行地址并行查找各自对应的二维数组,获得对应行的所有列数据的一维数组,即对应的规则索引有效标识位;
将各关键字段获得的列数据进行与操作,获得满足各关键字段的索引有效标识位;
根据索引标识位查找优先级最高的索引标识位,从而得到最高优先级Action索引,将其输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810711439.3A CN108875064B (zh) | 2018-07-03 | 2018-07-03 | 基于FPGA的OpenFlow多维数据匹配查找方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810711439.3A CN108875064B (zh) | 2018-07-03 | 2018-07-03 | 基于FPGA的OpenFlow多维数据匹配查找方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108875064A CN108875064A (zh) | 2018-11-23 |
CN108875064B true CN108875064B (zh) | 2021-07-06 |
Family
ID=64298156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810711439.3A Active CN108875064B (zh) | 2018-07-03 | 2018-07-03 | 基于FPGA的OpenFlow多维数据匹配查找方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108875064B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981464B (zh) * | 2019-02-28 | 2021-03-26 | 中国人民解放军陆军工程大学 | 一种在fpga中实现的tcam电路结构及其匹配方法 |
CN110442570B (zh) * | 2019-06-06 | 2021-08-17 | 北京左江科技股份有限公司 | 一种BitMap高速模糊查找方法 |
CN111600796B (zh) * | 2020-05-20 | 2021-10-01 | 中国电子科技集团公司第五十四研究所 | 一种基于可配置解析字段的流识别装置及方法 |
CN114221849B (zh) * | 2020-09-18 | 2024-03-19 | 芯启源(南京)半导体科技有限公司 | 一种fpga结合tcam实现智能网卡的方法 |
CN112328636A (zh) * | 2020-10-27 | 2021-02-05 | 上海金仕达软件科技有限公司 | 一种数据查找方法、装置及电子设备 |
CN114356418B (zh) * | 2022-03-10 | 2022-08-05 | 之江实验室 | 一种智能表项控制器及控制方法 |
CN114745327B (zh) * | 2022-06-10 | 2022-08-26 | 鹏城实验室 | 业务数据转发方法、装置、设备及存储介质 |
CN115297056B (zh) * | 2022-09-28 | 2023-01-06 | 杭州芯旗电子技术有限公司 | 一种基于fpga实现的掩码匹配方法及系统 |
CN115878863B (zh) * | 2022-12-01 | 2023-12-19 | 杭州菲数科技有限公司 | 数据查找方法及数据查找装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103401784A (zh) * | 2013-07-31 | 2013-11-20 | 华为技术有限公司 | 一种接收报文的方法及开放流交换机 |
CN103401777A (zh) * | 2013-08-21 | 2013-11-20 | 中国人民解放军国防科学技术大学 | Openflow的并行查找方法和系统 |
CN103731377A (zh) * | 2013-12-31 | 2014-04-16 | 华为技术有限公司 | 处理报文的方法与设备 |
CN103905311A (zh) * | 2012-12-28 | 2014-07-02 | 华为技术有限公司 | 流表匹配方法和装置以及交换机 |
KR101610031B1 (ko) * | 2015-01-28 | 2016-04-07 | 아토리서치(주) | 소프트웨어 정의 네트워크에서 컨트롤러를 내장하는 오픈플로우 스위치의 제어방법 및 장치 |
-
2018
- 2018-07-03 CN CN201810711439.3A patent/CN108875064B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905311A (zh) * | 2012-12-28 | 2014-07-02 | 华为技术有限公司 | 流表匹配方法和装置以及交换机 |
CN103401784A (zh) * | 2013-07-31 | 2013-11-20 | 华为技术有限公司 | 一种接收报文的方法及开放流交换机 |
CN103401777A (zh) * | 2013-08-21 | 2013-11-20 | 中国人民解放军国防科学技术大学 | Openflow的并行查找方法和系统 |
CN103731377A (zh) * | 2013-12-31 | 2014-04-16 | 华为技术有限公司 | 处理报文的方法与设备 |
KR101610031B1 (ko) * | 2015-01-28 | 2016-04-07 | 아토리서치(주) | 소프트웨어 정의 네트워크에서 컨트롤러를 내장하는 오픈플로우 스위치의 제어방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
CN108875064A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108875064B (zh) | 基于FPGA的OpenFlow多维数据匹配查找方法 | |
CN110990638B (zh) | 基于fpga-cpu异构环境的大规模数据查询加速装置及方法 | |
CN103401777B (zh) | Openflow的并行查找方法和系统 | |
Jiang et al. | Large-scale wire-speed packet classification on FPGAs | |
US6434144B1 (en) | Multi-level table lookup | |
CN110134714B (zh) | 适用于大数据迭代计算的分布式计算框架缓存索引方法 | |
EP3276501B1 (en) | Traffic classification method and device, and storage medium | |
Qu et al. | High-performance architecture for dynamically updatable packet classification on FPGA | |
CN103475584A (zh) | 三态内容寻址存储器(tcam)查询方法和装置 | |
Wang et al. | Memory-based architecture for multicharacter Aho–Corasick string matching | |
US11652744B1 (en) | Multi-stage prefix matching enhancements | |
US9485179B2 (en) | Apparatus and method for scalable and flexible table search in a network switch | |
Lee et al. | Bundle-updatable SRAM-based TCAM design for openflow-compliant packet processor | |
Yang et al. | Fast OpenFlow table lookup with fast update | |
Pao et al. | A multi-pipeline architecture for high-speed packet classification | |
CN101500012B (zh) | 一种报文分类方法和系统 | |
CN110674364B (zh) | 一种利用fpga实现的滑动字符串匹配的方法 | |
CN110505322B (zh) | 一种ip地址段查找方法及装置 | |
Han et al. | A novel routing algorithm for IoT cloud based on hash offset tree | |
Cheng et al. | Scalable multi-match packet classification using TCAM and SRAM | |
Pao et al. | IP address lookup using bit-shuffled trie | |
Ueda et al. | A dynamically reconfigurable equi-joiner on FPGA | |
Qian et al. | A fast and anti-matchability matching algorithm for content-based publish/subscribe systems | |
CN109086815B (zh) | 基于fpga的决策树模型中的浮点数离散化方法 | |
JPWO2005098612A1 (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 |