掌桥专利:专业的专利平台
掌桥专利
首页

一种基于FPGA实现的快速查找路由表的方法及系统

文献发布时间:2024-04-18 19:58:26


一种基于FPGA实现的快速查找路由表的方法及系统

技术领域

本发明涉及电学技术领域,具体涉及一种基于FPGA实现的快速查找路由表的方法及系统。

背景技术

传统的查找路由表的方法:使用FPGA的寄存器资源存储路由表,根据路由表查找请求对路由表进行串行遍历查找以获得查找结果。但是在组网星的发展需求下,如果使用上述传统的方法已经无法适应海量IP的存储需求,以及快速高效获得路由表查找结果的效率需求。

因此,需要一种适应组网星发展的海量IP存储和快速高效获得路由表查找结果的方法。

发明内容

本发明是为了解决如何提高星载路由表查找的速度和效率的问题,提供一种基于FPGA实现的快速查找路由表的方法及系统,通过星载路由设备系统中的路由CPU软件,按照特定规划的长度将路由表数据传输给路由FPGA软件,以最节省RAM资源的方式,使用路由FPGA中的RAM资源存储路由表数据,可支持存储高达4096个路由IP数据信息。当路由FPGA软件接收到一个路由IP查找请求使能后,采取特定的并行查找路由表的方式,以最短时间获取路由IP所对应的路由端口号并输出。本发明的方法支持以1张路由表为单位进行路由表更新,并以最节省RAM资源为前提,以最快时间获取路由表的查找结果。实现了组网星路由设备快速查找路由表的功能,大幅扩展了可支持组网星的数量,大幅提升了查找路由IP的效率。

本发明提供一种基于FPGA实现的快速查找路由表的方法,包括以下步骤:

S1、星载路由设备系统中的路由CPU软件下发路由表数据给路由FPGA软件;

S2、路由FPGA软件接收路由表数据后根据数据协议格式对路由表数据进行解析,并按照路由表编号对路由表数据进行分块;

S3、路由FPGA软件分别对每个块中的路由表数据进行解析并分类拼接后存储到对应的路由表存储模块中,路由表存储模块为RAM;

S4、当路由FPGA软件接收数据处理模块发出路由IP查找请求使能信号时,路由FPGA软件中的所有路由表查找模块同时启动并对所有路由表并行查找,遍历所有路由表中的IP地址信息后同步给出路由表查找结果;

S5、路由FPGA软件对路由表查找结果进行甄别,首先对块内的路由表查找结果进行甄别,再对块的路由表查找结果进行进一步甄别,得到最终路由表查找结果并向路由FPGA软件接收数据处理模块输出,基于FPGA实现的快速查找路由表的方法完成。

本发明所述的一种基于FPGA实现的快速查找路由表的方法,作为优选方式,步骤S2中,根据路由表编号进行路由表分块;

步骤S3中,每个路由表数据中的IP地址信息分类存储在至少两个RAM中;

解析分类拼接的方法为:将每一个IP地址信息中的前缀长度、下一跳端口号合并得到前缀端口号信息,将每个块中全部路由表的前缀端口号信息拼接后存储到第一RAM中;将每个块中全部目的IP地址存储到第二RAM中;将每一个IP地址信息中的路由表类型和路由表权重合并得到类型权重信息,将每个块中全部路由表的类型权重信息存储到第三RAM中;

步骤S4中,路由表查找结果为目的IP地址所对应的路由端口号;

步骤S5中,所有块并行查找,每个块中得的路由表也并行查找。

本发明所述的一种基于FPGA实现的快速查找路由表的方法,作为优选方式,步骤S2中,路由表总数为128组、分为8个块,每16个路由表按顺序分成一块,路由表编号1~16分为第一块、路由表编号17~32分为第二块、路由表编号113~128分为第八块,每一张路由表中包括32个IP地址信息;

步骤S3中,IP地址信息的前缀长度为1Byte、下一跳端口号为1Byte,前缀端口号信息的长度为16-bits,第一RAM的数据位宽为16-bits、深度为32;IP地址信息为128-bits,第二RAM的位宽为128-bits、深度为32;路由表类型为1Byte,路由表权重为2Bytes,第三RAM的数据位宽为24-bits、深度为32;

步骤S4中,每个块的路由表查找结果数量为16个;

步骤S5中,甄别的对象为8个块的查找结果。

本发明所述的一种基于FPGA实现的快速查找路由表的方法,作为优选方式,步骤S4中,如果查找到匹配的目的IP地址,则输出对应的端口号,否则输出X”FFFF”,X”FFFF”为无效端口。

本发明所述的一种基于FPGA实现的快速查找路由表的方法,作为优选方式,步骤S4中,当从第二RAM中读目的IP地址进行查询比较时,同步访问读取第一RAM、第三RAM中的数据;

当查找到匹配的目的IP地址时,则选取第一RAM、第三RAM

中所读取的对应端口信息作为查找结果,并在访问读取完成全部IP地址信息后把端口信息作为查找结果输出;如果在未能找到配置的IP,也在访问读取完成全部IP地址信息数据后,把X”FFFF”作为查找结果输出。端口信息即为下一跳端口号。

本发明所述的一种基于FPGA实现的快速查找路由表的方法,作为优选方式,步骤S5中,以块为单位对查找结果进行甄别时,每个块中的全部有效结果都与X”FFFF”进行比较并判断是否为X”FFFF”,如果否,则将此有效结果作为本模块的有效结果输出;如果是,则继续将X”FFFF”作为本块的有效的查找结果输出;

对所有块的甄别结果再进行最后的有效查找结果甄别时,将所有块的有效结果均与X”FFFF”进行比较并判断是否为X”FFFF”,如果否,则将此路由表查找结果作为最终路由表查找结果输出;如果是,继续将X”FFFF”作为最终路由表查找结果输出;

步骤S5中,所有块在约定时间一定输出一个结果;

步骤S6中,路由FPGA软件在使用最终路由表查找结果时,需要对最终路由表查找结果再进行甄别并判断是否为X”FFFF”,如果否,则最终路由表查找结果有效;如果是,则没有找到有效的路由目的端口。

本发明所述的一种基于FPGA实现的快速查找路由表的方法,作为优选方式,步骤S4、S5的总时间为53个时钟周期。

本发明提供一种基于FPGA实现的快速查找路由表的系统,包括星载路由设备系统中的路由CPU软件、平台管理与配置FPGA软件、路由FPGA软件和路由表存储模块,平台管理与配置FPGA软件对路由FPGA软件进行配置,路由CPU软件与路由FPGA软件之间通过数据地址总线进行通信;

路由CPU软件通过数据地址总线下发路由表数据给路由FPGA软件;

路由FPGA软件接收到路由表数据后根据数据协议格式对路由表数据进行解析并按照路由表编号将路由表数据分块输出,每个块中都包含有相同数量的路由表数据;

路由FPGA软件对每个块中的路由表数据进行解析拼接后存储到路由表存储模块中,路由表存储模块为N组,每组中包含至少一个RAM,每个RAM分别存储不同的解析拼接结果;

路由FPGA软件根据处理数据需要查找路由表时产生路由IP查找请求,路由FPGA软件中设置路由表查找模块,路由表查找模块的数量与路由表数据中IP地址信息的数量相同,路由表查找模块根据路由IP查找请求开始查找路由表,所有路由表查找模块同步开始工作并分别遍历所有IP地址信息并同步输出路由表查找结果;

路由FPGA软件以块为单位对路由表查找结果进行第一轮甄别,再对每个块同步输出的路由表查找甄别结果再进行最后甄别并输出最终路由表查找结果。

本发明所述的一种基于FPGA实现的快速查找路由表的系统,作为优选方式,数据协议格式包括帧头、数据类型、数据长度、路由表编号、路由表数据的IP和校验;

路由表数据的IP包括IP地址信息和路由表编号;

IP地址信息包括前缀长度、下一跳端口号、目的IP地址、路由表类型和路由表权重;

路由表存储模块包括第一RAM、第二RAM和第三RAM。

本发明所述的一种基于FPGA实现的快速查找路由表的系统,作为优选方式,块的数量和路由表存储模块的数量均为8个,每个块中包括16个路由表数据,每个路由表数据中包括32个IP地址信息,路由表编号的取值范围为1~128,路由表查找模块的数量为128个;

前缀长度为1Byte,下一跳端口号为1Byte,目的IP地址为128-bits,路由表类型为1Byte,路由表权重为2Bytes;

每个路由表存储模块中均包括第一RAM、第二RAM和第三RAM。

本发明提供一种基于FPGA实现的优化逻辑资源快速查找海量路由表的方法,特别在组网星数量达到数百颗时,通过星载路由设备系统中的路由CPU软件下发路由表和使用路由FPGA的RAM资源存储路由表从而实现高效查找路由表的方法。

本发明的技术解决的问题是:在组网星数量日益增多的需求下,传统方式无法解决海量路由IP的存储需求以及高效查找海量路由表的需求。本发明提出一种基于FPGA实现的优化逻辑资源快速查找海量路由表的方法,提供高达4096个路由IP的存储功能,并高效查找路由表,为组网星数量日益增多的需求提供了技术解决方案。

本发明的技术解决方案如下:一种基于FPGA实现的优化逻辑资源快速查找海量路由表的方法,通过系统中的路由CPU软件下发路由表数据,使用路由FPGA的RAM资源存储路由表数据,路由FPGA软件根据路由IP查找请求使能开始查找路由表,经过对查找的路由结果进行两次甄选后输出有效的路由端口;该方法的内容包括:

(1)星载路由设备系统中的路由CPU软件和路由FPGA软件都上电配置完成后,路由CPU软件首先下发路由表数据给路由FPGA软件;

(2)路由FPGA软件接收路由表数据,根据路由表协议解析路由数据,并根据协议中的路由表编号对路由表数据进行分块,将海量路由表平均分为八个块,每个块中包含有16组路由表;

(3)每个块分别继续分解各自包含的16组路由表数据,分别各自得到16组路由表数据;

(4)对每一组路由表数据进行详细解析和存储:将“前缀长度”与“下一跳端口号”数据存储到数据位宽为16-bits和深度为32的RAM中;将目的IP地址存储到数据位宽为128-bits和深度为32的RAM中;将“路由表类型”和“路由表权重”数据存储到数据位宽为24-bits和深度为32的RAM中;

(5)路由FPGA软件根据处理的数据产生路由IP查找请求使能;

(6)路由FPGA软件响应路由IP查找请求使能,开始查找路由表:八个块中共包含128组路由表,该128组路由表所对应的128个路由查找模块同步响应路由IP查找请求使能,同时开始查找,遍历路由表的32个IP后,同步给出路由表查找结果;

(7)路由FPGA软件对128个路由查找模块同步给出的128个路由表查找结果分两步进行甄别:首先,以块为单位进行甄别,甄别每个块中的16个路由表查找结果;然后对八个块的甄别结果进一步甄别,得到最终的路由表查找结果;

(8)路由FPGA软件在使用路由表查找结果时,对该结果进行有效性甄别,有效则使用,否则丢弃该路由表查找结果和相关数据。

优选的,所述步骤(1)中通过下述方式规划和使用路由表:

规定协议格式中的每一张路由表包含有32个IP的相关信息,并配置了该路由表的编号。星载路由设备系统上电后,路由CPU软件需要下发配置所有路由表;但在工作过程中,根据工作需要,CPU软件可以根据路由表的编号,以1张路由表为单位对路由表进行区域刷新。

步骤(2)中,将每16张路由表分为一个块,每个块可容纳512个IP;本技术方案按照最大包络8个块即4096个IP进行描述。实际使用时,根据不同型号不同星座系统的需求,可以灵活选择使用1个块或者多个块,最多可支持8个块,即可以支持的IP数量为512N个,N=1,2,…,8。

优选的,步骤(2)中通过下述方式对路由表进行分块:

路由表编号1~16分为第一块;

路由表编号17~32分为第二块;

依此类推,路由表编号113~128分为第八块。

步骤(3)中,解析每块路由表信息时,将数据进行分类和拼接存储,其目的就是为了节省RAM资源,节省访问时间。

优选的,步骤(4)中通过下述方式对路由表数据进行处理和存储:

每一个目的IP地址所对应的“前缀长度”为1Byte,“下一跳端口号”为1Byte,将“前缀长度”置高字节,“下一跳端口号”置低字节,拼成一个16-bits数据,每组路由表包含32个IP路由数据,故将合并后的“前缀长度”和“下一跳端口号”数据存储到数据位宽为16-bits和深度为32的RAM中;

每一个目的IP地址为128-bits数据,每组32个目的IP地址存储到数据位宽为128-bits和深度为32的RAM中;

每一个目的IP地址所对应的“路由表类型”为1Byte,“路由表权重”为2Bytes,“路由表类型”置高字节位,“路由表权重”置低字节位,合并为一个24-bits数据,每组32个24-bits数据存储到数据位宽为24-bits和深度为32的RAM中。

步骤(4)中,查找路由表的方式为:响应路由IP查找请求使能信号,八个块并行查找;每个块中,16个路由表并行查找;约定查找每个路由表时,都固定查询比较该表中的32个IP信息,最后一定输出一个查找结果;如果查找到匹配的IP,则输出对应的端口号,否则输出X”FFFF”,约定X”FFFF”为无效端口。约定“固定查询比较该表中的32个IP信息”的目的:每个块中的16张表能同时完成查找,同时产生查询结果;八个块也能同时输出查询结果,方便后续甄选查找结果。约定“最后一定输出一个查找结果”的目的:固定处理时间,避免盲等查询结果导致引起系统数据拥堵。

每个路由表的IP信息分类存储在3个不同的RAM中,在查找每个路由表时,当从存储IP地址的RAM中读取“目的IP地址”进行查询比较时,同步访问读取另外两个RAM中的数据。当查找到匹配的目的IP地址时,则选择同步访问另外两个RAM时所读取的对应的端口信息作为查找结果,并在访问读取完成32个IP数据后,再把“端口信息”作为查找结果输出;如果在32个IP数据中未能找到配置的IP,也在访问读取完成32个IP数据后,把X”FFFF”作为查找结果输出。“同步访问读取另外两个RAM中的数据”的目的:并行读取数据,处理查找路由表的时间为最短时间,保障了查找效率。

优选的,所述步骤(6)中通过下述方式查找路由表:

将路由IP查找请求使能信号通过寄存器复制方式,复制4份路由IP查找请求使能信号;每一份路由IP查找请求使能驱动两个块模块;

在每个块内,通过寄存器复制方式,继续将块的路由IP查找请求使能信号复制8份;每一份复制的路由IP查找请求使能驱动两个路由表查找模块;

在每个路由表查找模块内,对32个IP进行逐一查找,如果找到匹配的IP,则提取该匹配IP所对应的端口号作为有效的查找结果输出;如果不能找到匹配的IP,则将X”FFFF”作为有效的查找结果输出;无论匹配IP在查找表中的哪个位置,无论是否查找到匹配的IP,查找路由表时每个组都遍历32个IP。

对步骤(6)中的最终结果,路由FPGA软件在使用该结果时,需要对该结果值再进行甄别,如果该最终结果值为非X”FFFF”时,才认为该结果值有效,否则认为没有找到有效的路由目的端口。

优选的,所述步骤(7)中通过下述方式对路由表查找结果进行甄别:

首先对块内的16个路由表查找结果进行甄别,甄别方法:每个结果都与X”FFFF”进行比较,如果存在非X”FFFF”的结果值则取该结果值为本块模块的有效结果输出,否则,继续将X”FFFF”作为本块模块的有效的查找结果输出,该甄别步骤保障每个块在约定时间一定输出一个结果;

然后对八个块的8个路由表查找结果进行甄别,甄别方法:每个结果都与X”FFFF”进行比较,如果存在非X”FFFF”的结果值则取该结果值为查找路由表的最终有效结果输出,否则,继续将X”FFFF”作为查找路由表的最终有效结果输出。

根据上述步骤5、6和7的描述,响应路由IP查找请求使能信号后,查找路由表的总时间为:访问深度为32的RAM的访问时间32个时钟周期+两级甄选的时间2个时钟周期+其他处理时间=53个时钟周期。

一种基于IPv6的查找路由表的系统,包括星载路由设备系统中的路由CPU软件、平台管理与配置FPGA软件和路由FPGA软件;平台管理与配置FPGA软件实现对路由FPGA软件的配置功能;路由CPU软件与路由FPGA软件之间通过数据地址总线进行通信。

星载路由设备上电后,平台管理与配置FPGA软件对路由FPGA软件进行配置;

路由FPGA软件配置完成后,路由CPU软件根据工作既定程序开始下发路由表给路由FPGA软件;

路由FPGA软件接收路由表数据并根据协议对数据进行解析,解析路由表数据时,将路由数据表分为八块,每个块内再包含16个路由表;

路由FPGA软件在工作过程中会产生路由IP查找请求使能信号;

路由FPGA软件响应路由IP查找请求使能信号,开始同步查找128张路由表;

路由FPGA软件对查找128张路由表同步获得的128个查找结果分两步进行甄别,获得最终的有效的路由查找结果;

路由FPGA软件在使用路由表的查找结果时,对该查找结果进行判别,判别结果有效则使用,否则丢弃查找结果和相应的路由数据。

路由FPGA软件对八个块中的各自的16个路由表数据进行解析,解析时,每一个目的IP地址所对应的“前缀长度”(1Byte)与“下一跳端口号”(1Byte)合并为一个16-bits数据,每组路由表所对应的32个拼接的该16-bits数据存储到数据位宽为16-bits和深度为32的RAM中;每一个目的IP地址为128-bits数据,每组路由表的32个目的IP地址存储到数据位宽为128-bits和深度为32的RAM中;每一个目的IP地址所对应的“路由表类型”和“路由表权重”合并为一个24-bits数据,每组路由表所对应的32个该24-bits数据存储到数据位宽为24-bits和深度为32的RAM中;

路由FPGA软件根据处理数据需要查找路由表时会产生路由IP查找请求;路由FPGA软件根据路由IP查找请求开始查找路由表;

路由FPGA软件查找路由表时,八个块中的128个路由表查找模块同步开始工作,128个路由表查找模块分别各自遍历各自路由表中的32个IP,同步输出128个路由表查找结果;

路由FPGA软件以块为单位对路由表查找结果进行第一轮甄别,八个块同步分别各自甄别各自的16个路由表的查找结果,并同步输出第一轮路由表查找结果的甄别结果;甄别方法为:16个路由表的查找结果都与X”FFFF”进行比较,如果存在非X”FFFF”的结果值则取该结果值为本模块的有效结果输出,否则将X”FFFF”作为本块模块的有效的甄别结果输出;

路由FPGA软件对八个块同步输出的路由表查找的甄别结果再进行最后甄别,并将该甄别结果作为整个路由表查找的结果输出;甄别方法为:对八个块的8个甄别结果进行有效查找结果甄别时,该8个有效结果都与X”FFFF”进行比较,如果存在非X”FFFF”的结果值则取该结果值为查找路由表的有效最终结果输出,否则继续将X”FFFF”作为查找路由表的有效最终结果输出;

路由FPGA软件在使用该路由表查找的结果时,需要对该结果值进行有效性甄别,当该最终结果值为非X”FFFF”时,才认为该结果值有效,否则认为没有找到有效的路由目的端口。

本发明涉及一种基于FPGA实现的优化逻辑资源快速查找海量路由表的方法及系统,通过星载路由设备系统中的路由CPU软件,按照特定规划的长度将路由表数据传输给路由FPGA软件,以最节省RAM资源的方式,使用路由FPGA中的RAM资源存储路由表数据,可支持存储高达4096个路由IP数据信息。当路由FPGA软件接收到一个路由IP查找请求使能后,采取特定的并行查找路由表的方式,以最短时间获取路由IP所对应的路由端口号并输出。本发明的方法支持以1张路由表为单位进行路由表更新,并以最节省RAM资源为前提,以最快时间获取路由表的查找结果。实现了组网星路由设备快速查找路由表的功能,大幅扩展了可支持组网星的数量,大幅提升了查找路由IP的效率。

本发明具有以下优点:

(1)本发明规定协议格式中的每一张路由表包含有32个IP的相关信息,并配置了该路由表的编号,可以以最节省RAM资源的方式存储每一组IP的数据信息,并限定了访问路由表的时间为32个时钟周期;通过设计路由表编号扩展路由表的数量,并可以支持以1张表为单位对路由表进行刷新,以及按照路由表编号对路由表进行分块处理。本发明扩展了星载存储路由IP数据的容量,可存储高达4096个路由IP数据;可适应数百颗组网星的路由IP存储需求;

(2)按模块化设计,可根据实际型号项目的组网系统的需求,选择使用N个模块,其中N=1,2,…,8;

(3)将每块路由表信息解析时进行分类和拼接存储,可节省RAM资源,节省访问时间;

(4)本发明查找路由表确保在固定时间一定会输出一个有效结果;每个块中的所有表能同时完成查找,同时产生查询结果;每个块也能同时输出查询结果,方便后续甄选查找结果,最后一定输出一个查找结果可固定处理时间,避免盲等查询结果导致引起系统数据拥堵;且并行读取数据时,处理查找路由表的时间为最短时间,保障了查找效率;

(5)本发明以最节省资源的方式占用FPGA的内部资源;

(6)本发明查找路由表花费的时间固定且查找路由表时间高效,查找时间仅为53个处理时钟周期;

(7)本发明适应以单张路由表为单位对路由表数据进行刷新。

附图说明

图1为一种基于FPGA实现的快速查找路由表的方法及系统图;

图2为一种基于FPGA实现的快速查找路由表的系统框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

实施例1

一种基于FPGA实现的优化逻辑资源快速查找海量路由表的方法及系统,其查找路由表的数据流程框图如图1所示,结合图2中的框图架构,对方法做详细说明。该方法的步骤包括:

(1)首先规划海量路由表数据传输的协议格式。

采取的解决方法:

路由CPU软件下发的路由表协议如表1和表2所示。通过约定表1中的“路由表编号”的取值范围为1~128,每张路由表包含32个路由数据信息,可以支持路由CPU软件下发4096个路由IP数据。

(2)使用合理的分块设计,优化路由查找模块的组织结构。

采取的解决方法:

第一步:将包含4096个路由IP数据的128个路由表平均分为八个块,每个块中包含16个路由表,共512个IP;

第二步:对每个块中的16个路由表分别进行解析和拼接存储,每组路由表存储模块(包含3个RAM)存储IP的数据信息的深度为32;

第三步:每组路由表存储模块对应一个路由表查找模块。

(3)规划128个路由表查找模块同步响应IP查找请求使能,同时开始查找路由表,并且每个查找模块经过相同的时间查找完成一个路由表,同步输出128个查找表结果。

采取的解决方法:

第一步:使用寄存器复制方式,将IP查找请求使能信号复制4份,每一份复制的请求使能信号驱动(2)中第一步所述的两个块;

第二步:对每个块中的IP查找请求使能信号,继续使用寄存器复制方式,复制为8份IP查找请求使能信号,每一份复制的请求使能信号驱动(2)中第三步所述的两个路由表查找模块;

第三步:在每个路由表查找模块内,对32个IP进行逐一查找,如果找到匹配的IP,则提取该匹配IP所对应的端口号作为有效的查找结果输出;如果不能找到匹配的IP,则将X”FFFF”作为有效的查找结果输出;无论匹配IP在查找表中的哪个位置,无论是否查找到匹配的IP,查找路由表时每个表都遍历32个IP,确保响应IP查找请求使能信号后,查找路由表的时间固定。

(4)采取分两步对路由表查找结果进行甄别的方式,优化路由查找模块的组织结构。

采取的解决方法:

第一步:当(3)中第三步所述的查找结果输出时,(2)中第一步所述的八个块分别对块内的16个结果进行甄别,得到每个块的查找结果;

第二步:对(4)中所述的第一步中的八个块的查找结果进行甄别,得到整个路由查找表的最终查找结果。

表1路由表协议

表2路由表数据协议

本发明特别是在组网星数量达到数百颗,组网路由IP数量达到几千个时,组网系统的星载路由设备能够存储数量众多的路由IP,并能高效地查找路由表,以适应高效快速的组网数据传输需求。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

相关技术
  • 一种基于路由表实现的蓝牙Mesh网络传输系统及方法
  • 一种基于FPGA的DMA读操作实现方法、FPGA设备以及通信系统
技术分类

06120116488182