CN112134805B - 基于硬件实现的快速路由更新电路结构及更新方法 - Google Patents
基于硬件实现的快速路由更新电路结构及更新方法 Download PDFInfo
- Publication number
- CN112134805B CN112134805B CN202011008034.7A CN202011008034A CN112134805B CN 112134805 B CN112134805 B CN 112134805B CN 202011008034 A CN202011008034 A CN 202011008034A CN 112134805 B CN112134805 B CN 112134805B
- Authority
- CN
- China
- Prior art keywords
- linked list
- prefix
- management module
- node
- head
- 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
- H04L45/02—Topology update or discovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/54—Organization of routing tables
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于硬件实现的快速路由更新电路结构及实现方法,该电路中的链表管理模块用于记录将trie分层后得到的子trie的具体结构,可对trie执行节点添加和删除操作,更新完成后将涉及操作的前缀送到结构转换模块;头指针管理模块管理链表的头指针,用于执行链表管理模块发出的添加和删除操作;共享存储区管理模块用于管理共享RAM的可用空地址,执行链表管理模块发出的读出,写入操作;结构转换模块用于将链表转换为查找设备使用的转发表。本电路可以代替处理器实现路由更新和维护功能,并可实现路由表项的快速添加和快速删除。
Description
技术领域
本发明涉及电子电路技术领域,特别是一种基于硬件实现的快速路由更新电路结构。
背景技术
目前路由查找算法方案主要分为两种,一种为基于软件的方案另一种为基于硬件的方案。基于软件的方案通常不依赖于特定的硬件因此灵活性较高方便移植到不同平台上。大多数基于软件的方法都集中在减少内存需求和减少内存访问次数上。基于硬件的方案则利用专用硬件(包括TCAM,网络处理器,FPGA和GPU)来实现更好的性能。
为发挥专用硬件高速并行的优势,基于硬件的方案常通过使用可控前缀扩展技术限制前缀长度的数量,以此形成支持并行查找的转发数据结构。例如DIR24-8,该方案通过前缀扩展将前缀长度限制为24和32,以此达到单次查找最高2次内存访问的目的。虽然基于专用硬件的方案可以达到上百G的吞吐率,但是这些方案需要CPU协助维护基于trie树的数据结构,用于将所有路由前缀更新和扩展为存储在硬件中的转发数据结构然而是trie树结构复杂在trie树中进行插入和删除操作需要占用大量时钟周期,随着路由更新频率的不断提高路由更新给CPU造成较大负荷。
发明内容
本发明的目的在于提供一种可以提高路由更新速度,降低路由更新对CPU时钟周期占用的基于硬件实现的快速路由更新电路结构。
实现本发明的技术解决方案为:一种基于硬件实现的快速路由更新电路结构,包括链表管理模块、头指针管理模块、共享存储区管理模块、结构转换模块;
所述链表管理模块用于管理转换为链表结构的trie树,记录trie树中子trie的具体结构,对trie树执行节点插入和删除操作,更新完成后将涉及操作的前缀及前缀携带的信息写入prefix_FIFO;
所述头指针管理模块用于管理链表结构中的链表头指针,执行链表管理模块发出的查找、插入和删除操作;
所述共享存储区管理模块用于管理共享存储区中的可用空地址,执行链表管理模块发出的获得空地址、回写空地址操作;
所述结构转换模块用于将链表转换为查找设备使用的转发表。
上述链表管理模块包括插入操作子模块、删除操作子模块、prefix_FIFO;
所述插入操作子模块用于响应路由更新系统的插入命令,并将涉及的前缀条目插入到链表结构中;
所述删除操作子模块用于响应路由更新系统的删除命令,并将涉及的前缀条目在链表结构中删除;
所述prefix_FIFO缓存了结构转换模块需要的涉及操作的前缀的信息。
优选的是,本发明的头指针管理模块包括head_ptr_reg和head_ptr_RAM_2~head_ptr_RAM_n,其中n的数值由trie树被切分的层数决定;
所述head_ptr_reg为寄存器,用于存储第1层链表的头指针;
所述head_ptr_RAM_2~head_ptr_RAM_n用于存储第2~第n层链表的头指针。
优选的是,本发明的共享存储区管理模块包括shared_RAM和free_addr_FIFO;
所述shared_RAM用于存储所有链表的节点;
所述free_addr_FIFO用于存储shared_RAM中的可用空地址,插入节点前链表管理模块从中读出空地址,删除节点后链表管理模块将节点的地址写入其中,以此来对shared_RAM的可用空间进行管理。
本发明还提供了一种路由更新方式,其中该方式包括:使用硬件维护了基于trie树的链表,链表中包含路由表完整的拓扑关系;以链表为辅助结构,使用硬件完成从链表结构到转发数据结构的转换。
本发明基于链表结构的trie树构建方法包括:根据转发结构的需求定义trie结构的层数,和每层子trie的高度,按照所述层数设定相应头指针索引表的数量;每层中的子trie使用链表结构进行存储。
本发明与现有技术相比,其显著优点为:(1)使用硬件加速了从路由表到转发表的构建与更新。(2)降低了路由更新对CPU时钟周期的占用。(3)采用链表结构存储trie树降低了逻辑复杂性。(4)使用共享存储的方式存储链表结构有效提升了内存利用率。
附图说明
图1为本发明基于硬件实现的快速路由更新电路结构框图。
图2为本发明中可全硬件实现的路由更新结构及方式插入流程示意图。
图3为本发明中可全硬件实现的路由更新结构及方式删除流程示意图。
具体实施方式
下面结合附图对本发明作进一步说明。
如图1所示,本发明基于硬件实现的快速路由更新电路结构,包括链表管理模块、头指针管理模块、共享存储区管理模块、结构转换模块;
所述链表管理模块用于管理转换为链表结构的trie树,记录trie中子trie的具体结构,可对trie执行节点插入和删除操作,更新完成后将涉及操作的前缀及前缀携带的信息写入prefix_FIFO;
所述头指针管理模块用于管理链表结构中的链表头指针,执行链表管理模块发出的查找,添加,删除操作;
所述共享存储区管理模块用于管理共享存储区中的可用空地址,执行链表管理模块发出的获得空地址,回写空地址操作;
结构转换模块用于将链表转换为查找设备使用的数据结构。
进一步的,所述链表管理模块包括插入操作子模块,删除操作子模块和prefix_FIFO;
所述插入操作子模块用于响应路由更新系统的插入命令,并将涉及的前缀条目插入到链表结构中;
所述删除操作子模块用于响应路由更新系统的删除命令,并将涉及的前缀条目在分层链表结构中删除;
所述prefix_FIFO缓存了结构转换模块需要的涉及操作的前缀的信息。
进一步的,所述头指针管理模块包括head_ptr_reg和head_ptr_RAM_2~head_ptr_RAM_n,其中n的数值由trie树被切分的层数决定;
所述head_ptr_reg为寄存器,用于存储第1层链表的头指针;
所述head_ptr_RAM_2~head_ptr_RAM_n用于存储第2~第n层链表的头指针。
进一步的,所述共享存储区管理模块包括shared_RAM和free_addr_FIFO;
所述shared_RAM用于存储所有链表节点;
所述free_addr_FIFO用于存储shared_RAM中的可用空地址,插入节点前链表管理模块从中读出空地址,删除节点后链表管理模块将节点的地址写入其中,以此来对shared_RAM的可用空间进行管理。
一种实现快速路由更新的方式,包括以下步骤:
步骤1、插入操作子模块进行前缀插入流程操作;
步骤2、删除操作子模块进行前缀删除流程操作;
结合图2,步骤1所述的插入操作子模块进行数据插入流程操作,具体如下:
步骤1.1、链表管理模块接收来自外部的插入请求,插入请求中包含有前缀,前缀长度和出端口位图信息;
步骤1.2、插入操作子模块判断前缀所在层数,通过头指针管理模块访问对应的RAM并找到指向链表的头指针;对应图2中的流程①;
步骤1.3、插入操作子模块向free_addr_FIFO发出读取请求获得一个地址,然后按照步骤1.2中头指针的指向从首节点开始读取后级节点,按前缀长度从首节点到尾节点从短到长的规则将新节点插入相应的位置。如果新节点为新的首节点还要将链表头指针更新为新节点的地址;对应图2中的流程②;
步骤1.4、前缀成功插入到链表后,将前缀信息写入到refix_FIFO内等待结构转换模块将其读出并转换为查找设备使用的数据结构;对应图2中的流程③。
结合图3,步骤2所述的删除操作子模块进行数据删除流程操作,具体如下:
步骤2.1、链表管理模块接收来自外部的删除请求,删除请求中包含有前缀和前缀长度信息;
步骤2.2、删除操作子模块判断前缀所在层数,通过头指针管理模块访问对应的head_ptr_RAM或者head_ptr_reg并找到指向链表的头指针;对应图3中的流程①;
步骤2.3、删除操作子模块从头指针指向的位置开始顺序读取后级节点,直到找到需要删除的节点。将与其连接的前节点和后节点连接在一起并将该需要删除的节点占用的地址写回free_addr_FIFO,如果该节点为首节点那么通过头指针管理模块将后级节点的地址设为指向该链表的头指针;对应图3中的流程②;
步骤2.4、前缀在trie结构中删除后,将前缀信息写入到refix_FIFO内等待结构转换模块将其读出并转换为转发数据结构;对应图3中的流程③。
综上所述,本发明首先由硬件对转发数据结构的构建与更新进行了加速,降低了路由更新对CPU时钟周期的占用。然后,采用链表结构存储trie结构降低了逻辑复杂性。最后,使用共享存储的方式存储trie结构有效提升了内存利用率。
Claims (4)
1.一种基于硬件实现的快速路由更新电路结构,其特征在于包括链表管理模块、头指针管理模块、共享存储区管理模块、结构转换模块;
所述链表管理模块用于管理转换为链表结构的trie树,记录trie树中子trie的具体结构,对trie树执行节点插入和删除操作,更新完成后将涉及操作的前缀及前缀携带的信息写入prefix_FIFO;所述链表管理模块包括插入操作子模块、删除操作子模块、prefix_FIFO;所述插入操作子模块用于响应路由更新系统的插入命令,并将涉及的前缀条目插入到链表结构中;所述删除操作子模块用于响应路由更新系统的删除命令,并将涉及的前缀条目在链表结构中删除;所述prefix_FIFO缓存了结构转换模块需要的涉及操作的前缀的信息;
所述头指针管理模块用于管理链表结构中的链表头指针,执行链表管理模块发出的查找、插入和删除操作;所述头指针管理模块包括head_ptr_reg和head_ptr_RAM_2-head_ptr_RAM_n,其中n的数值由trie树被切分的层数决定;所述head_ptr_reg为寄存器,用于存储第1层链表的头指针;所述head_ptr_RAM_2-head_ptr_RAM_n用于存储第2-第n层链表的头指针;
所述共享存储区管理模块用于管理共享存储区中的可用空地址,执行链表管理模块发出的获得空地址、回写空地址操作;所述共享存储区管理模块包括shared_RAM和free_addr_FIFO;所述shared_RAM用于存储所有链表的节点;所述free_addr_FIFO用于存储shared_RAM中的可用空地址,插入节点前链表管理模块从中读出空地址,删除节点后链表管理模块将节点的地址写入其中,以此来对shared_RAM的可用空间进行管理;
所述结构转换模块用于将链表转换为查找设备使用的转发表。
2.基于权利要求1所述的基于硬件实现的快速路由更新电路结构的更新方法,其特征在于,包括以下步骤:
步骤1、插入操作子模块进行前缀插入流程操作;
步骤2、删除操作子模块进行前缀删除流程操作。
3.基于权利要求2所述的基于硬件实现的快速路由更新电路结构的更新方法,其特征在于,上述步骤1包括如下步骤:
步骤1.1、链表管理模块接收来自外部的插入请求,插入请求中包含有前缀,前缀长度和出端口位图信息;
步骤1.2、插入操作子模块判断前缀所在层数,通过头指针管理模块访问对应的RAM并找到指向链表的头指针;
步骤1.3、插入操作子模块向free_addr_FIFO发出读取请求获得一个地址,然后按照步骤1.2中头指针的指向从首节点开始读取后级节点,按前缀长度从首节点到尾节点从短到长的规则将新节点插入相应的位置;如果新节点为新的首节点还要将链表头指针更新为新节点的地址;
步骤1.4、前缀成功插入到链表后,将前缀信息写入到prefix_FIFO内等待结构转换模块将其读出并转换为查找设备使用的数据结构。
4.基于权利要求3所述的基于硬件实现的快速路由更新电路结构的更新方法,其特征在于,上述步骤2包括如下步骤:
步骤2.1、链表管理模块接收来自外部的删除请求,删除请求中包含有前缀和前缀长度信息;
步骤2.2、删除操作子模块判断前缀所在层数,通过头指针管理模块访问对应的head_ptr_RAM或者head_ptr_reg并找到指向链表的头指针;
步骤2.3、删除操作子模块从头指针指向的位置开始顺序读取后级节点,直到找到需要删除的节点;将与其连接的前节点和后节点连接在一起并将该需要删除的节点占用的地址写回free_addr_FIFO,如果该节点为首节点那么通过头指针管理模块将后级节点的地址设为指向该链表的头指针;
步骤2.4、前缀在trie结构中删除后,将前缀信息写入到prefix_FIFO内等待结构转换模块将其读出并转换为转发数据结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011008034.7A CN112134805B (zh) | 2020-09-23 | 2020-09-23 | 基于硬件实现的快速路由更新电路结构及更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011008034.7A CN112134805B (zh) | 2020-09-23 | 2020-09-23 | 基于硬件实现的快速路由更新电路结构及更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112134805A CN112134805A (zh) | 2020-12-25 |
CN112134805B true CN112134805B (zh) | 2022-07-08 |
Family
ID=73841162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011008034.7A Active CN112134805B (zh) | 2020-09-23 | 2020-09-23 | 基于硬件实现的快速路由更新电路结构及更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112134805B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1036360A1 (en) * | 1997-02-05 | 2000-09-20 | TranswithH Corporation | Shared memory control using multiple linked lists with pointers, status flags, memory block counters and parity |
CN1404591A (zh) * | 2000-12-22 | 2003-03-19 | 三星电子株式会社 | 执行高速互联网协议路由查找和管理路由选择/转发表的装置和方法 |
CN103051543A (zh) * | 2012-11-01 | 2013-04-17 | 广州微仕科信息技术有限公司 | 一种路由前缀的处理、查找、增加及删除方法 |
CN103404092A (zh) * | 2011-11-30 | 2013-11-20 | 华为技术有限公司 | 路由前缀存储方法、装置及路由地址查找方法、装置 |
US8767757B1 (en) * | 2012-02-15 | 2014-07-01 | Applied Micro Circuits Corporation | Packet forwarding system and method using patricia trie configured hardware |
CN104426770A (zh) * | 2013-09-09 | 2015-03-18 | 中兴通讯股份有限公司 | 路由查找方法及装置、B-Tree树结构的构建方法 |
CN106549872A (zh) * | 2016-10-31 | 2017-03-29 | 西安空间无线电技术研究所 | 最长前缀匹配与精确匹配结合的星载快速路由查找系统 |
CN109861915A (zh) * | 2017-11-30 | 2019-06-07 | 中兴通讯股份有限公司 | 转发表操作的方法、装置、计算机设备及可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6956858B2 (en) * | 2000-06-30 | 2005-10-18 | Mayan Networks Corporation | Network routing table and packet routing method |
US7418505B2 (en) * | 2003-05-26 | 2008-08-26 | Ewha University Industry Collaboration Foundation | IP address lookup using either a hashing table or multiple hash functions |
EP2055050A1 (en) * | 2006-07-27 | 2009-05-06 | University Of Florida Research Foundation, Inc. | Dynamic tree bitmap for ip lookup and update |
CN102307149B (zh) * | 2011-09-23 | 2014-05-07 | 中国科学院计算技术研究所 | Ip查找方法和装置以及路由更新方法和装置 |
US10284472B2 (en) * | 2017-01-24 | 2019-05-07 | Cisco Technology, Inc. | Dynamic and compressed trie for use in route lookup |
-
2020
- 2020-09-23 CN CN202011008034.7A patent/CN112134805B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1036360A1 (en) * | 1997-02-05 | 2000-09-20 | TranswithH Corporation | Shared memory control using multiple linked lists with pointers, status flags, memory block counters and parity |
CN1404591A (zh) * | 2000-12-22 | 2003-03-19 | 三星电子株式会社 | 执行高速互联网协议路由查找和管理路由选择/转发表的装置和方法 |
CN103404092A (zh) * | 2011-11-30 | 2013-11-20 | 华为技术有限公司 | 路由前缀存储方法、装置及路由地址查找方法、装置 |
US8767757B1 (en) * | 2012-02-15 | 2014-07-01 | Applied Micro Circuits Corporation | Packet forwarding system and method using patricia trie configured hardware |
CN103051543A (zh) * | 2012-11-01 | 2013-04-17 | 广州微仕科信息技术有限公司 | 一种路由前缀的处理、查找、增加及删除方法 |
CN104426770A (zh) * | 2013-09-09 | 2015-03-18 | 中兴通讯股份有限公司 | 路由查找方法及装置、B-Tree树结构的构建方法 |
CN106549872A (zh) * | 2016-10-31 | 2017-03-29 | 西安空间无线电技术研究所 | 最长前缀匹配与精确匹配结合的星载快速路由查找系统 |
CN109861915A (zh) * | 2017-11-30 | 2019-06-07 | 中兴通讯股份有限公司 | 转发表操作的方法、装置、计算机设备及可读存储介质 |
Non-Patent Citations (5)
Title |
---|
一种基于FPGA的CNN加速器设计;乔庐峰,陈庆华等;《通信技术》;20190531(第5期);全文 * |
一种基于Trie的快速IP路由查找算法;郜国良等;《微电子学与计算机》;20110605(第06期);全文 * |
一种快速IPv6路由查找方案;姚兴苗等;《计算机学报》;20050212(第02期);全文 * |
支持压缩和多下一跳查找的路由查找方案;梁志勇等;《软件学报》;20040430(第04期);全文 * |
星载快速路由查找算法设计与实现;何婧等;《空间电子技术》;20170425(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112134805A (zh) | 2020-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
US8538999B2 (en) | String lookup using three-transition tree structure | |
US8086641B1 (en) | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same | |
CN109683811B (zh) | 一种混合内存键值对存储系统的请求处理方法 | |
JP3250544B2 (ja) | 転送先検索方法、転送先検索装置、検索テーブル記録媒体及び検索プログラム記録媒体 | |
US7603346B1 (en) | Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein | |
CN102799679B (zh) | 基于Hadoop的海量空间数据索引更新系统及方法 | |
CN110058816B (zh) | 一种基于ddr的高速多用户队列管理器及方法 | |
US20040019737A1 (en) | Multiple-RAM CAM device and method therefor | |
CN110109927A (zh) | 基于LSM树的Oracle数据库数据处理方法 | |
CN112181306A (zh) | 一种号段模式下生成分布式id的方法 | |
CN106980665A (zh) | 数据字典实现方法、装置及数据字典管理系统 | |
CN111209278A (zh) | 流式实时处理线上生产数据的装置和方法 | |
US8515976B2 (en) | Bit string data sorting apparatus, sorting method, and program | |
CN112000649A (zh) | 一种基于map reduce的增量数据同步的方法和装置 | |
US7953721B1 (en) | Integrated search engine devices that support database key dumping and methods of operating same | |
CN112134805B (zh) | 基于硬件实现的快速路由更新电路结构及更新方法 | |
CN107273443B (zh) | 一种基于大数据模型元数据的混合索引方法 | |
US8645620B2 (en) | Apparatus and method for accessing a memory device | |
CN111541617B (zh) | 一种用于高速大规模并发数据流的数据流表处理方法及装置 | |
JP2002290447A (ja) | アドレス検索方法、アドレス検索回路、およびアドレス検索プログラム | |
KR101342560B1 (ko) | 내비게이션을 위한 모바일 데이터베이스 시스템 및 그 방법 | |
CN115203211A (zh) | 一种唯一哈希序号生成方法和系统 | |
CN112035380B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN110851658B (zh) | 树形索引数据结构、内容存储池、路由器及树形索引方法 |
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 |