CN107786447A - 一种基于fpga的报文转发方法及设备 - Google Patents
一种基于fpga的报文转发方法及设备 Download PDFInfo
- Publication number
- CN107786447A CN107786447A CN201711098924.XA CN201711098924A CN107786447A CN 107786447 A CN107786447 A CN 107786447A CN 201711098924 A CN201711098924 A CN 201711098924A CN 107786447 A CN107786447 A CN 107786447A
- Authority
- CN
- China
- Prior art keywords
- message
- processing
- processing action
- action group
- heading
- 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.)
- Granted
Links
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/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于FPGA的报文转发方法及设备,所述方法包括:FPGA获取一个报文;从预设处理动作组集合中确定对所述报文进行处理的处理动作组,所述处理动作组包括多个处理动作,其中,所述预设处理动作组集合包括用于对报文进行处理的所有处理动作组,每一个处理动作组中包括的多个处理动作按照预设序列进行排列;根据所述处理动作组对所述报文进行处理,以便通过与所述处理动作组对应的转发端口转发处理后的报文;其中,所述转发端口与处理动作组一一对应。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种基于FPGA的报文转发方法及设 备。
背景技术
交换机路由器等设备在接收到报文时,会提取报文中的相关信息并利用设 备中的相关动作表项转发该报文到相应的接口,在一些配置下交换机路由器会 在转发前对报文中的特定字段进行修订。
目前,交换机路由器实现报文转发方案主要有以下几种:一种是基于软件 算法的方案,由CPU执行相对应的软件算法,对匹配的报文进行配置转发; 另一种是基于ASIC专用芯片的方案,由专用芯片对相应的报文执行配置转发。
然而,在通过软件算法实现对报文的配置转发的方案中,CPU中调度软件 算法使用串行方式,处理报文的效率较低,无法满足较大带宽的需求。在基于 ASIC专用芯片的方案中,专用芯片支持的报文各层内容的修改和转发有限, 支持功能的多样性和灵活性较差,一旦需要支持的功能增加,专用芯片很有可 能无法支持。
因此,现有技术中,缺乏既能满足灵活性还能够支持高带宽的报文转发方 案。
发明内容
本发明实施例提供一种基于FPGA的报文转发方法及设备,用于解决现有 技术中缺乏既能满足灵活性还能够支持高带宽的报文转发方案的技术问题。
为此,本发明实施例提供了一种基于FPGA的报文转发方法的技术方案如 下:
现场可编程门阵列FPGA获取一个报文;
从预设处理动作组集合中确定对所述报文进行处理的处理动作组,所述处 理动作组包括多个处理动作,其中,所述预设处理动作组集合包括用于对报文 进行处理的所有处理动作组,每一个处理动作组中包括的多个处理动作按照预 设序列进行排列;
根据所述处理动作组对所述报文进行处理,以便通过与所述处理动作组对 应的转发端口转发处理后的报文;其中,所述转发端口与处理动作组一一对应。
可选的,所述从预设处理动作组集合中确定对所述报文进行处理的处理动 作组,具体包括:
获取所述报文的特征;
根据所述特征,从预设处理动作组集合中确定对所述报文进行处理的处理 动作组,其中,不同特征对应不同的处理动作组。
可选的,所述处理动作组包括BITMAP,所述BITMAP用于指示所述处理 动作组中所包括的所述多个处理动作以及所述多个处理动作在所述处理动作 组中的位置。
可选的,在所述从预设处理动作组集合中确定对所述报文进行处理的处理 动作组之后,所述方法包括:
将所述报文中的报文头MPLS字段内容、报文头VLAN字段内容以及报 文中的剩余其他内容分别存储在各自对应的第一寄存器中;
读取所述处理动作组中的BITMAP;
根据BITMAP与处理动作的映射表,将所述处理动作组中的所述多个处理 动作分别存储在各自对应的第二寄存器中,所述第二寄存器与所述第一寄存器 不同。
可选的,所述根据所述处理动作组对所述报文进行处理,包括:
调用所述第二寄存器中的所述多个处理动作对所述报文头MPLS字段内 容、所述报文头VLAN字段内容以及所述报文中的剩余其他内容进行处理。
可选的,所述根据所述处理动作组对所述报文进行处理之后,包括:
将处理后的报文头MPLS字段内容、处理后的报文头VLAN字段内容以 及处理后的报文中的剩余其他内容组合成处理后的报文;
校验所述处理后的报文的完整性;
在校验成功后,通过所述转发端口转发所述处理后的报文。
第二方面,本发明实施例提供了一种FPGA设备,包括:
FPGA,所述FPGA包括:
获取模块:用于获取一个报文;
确定模块:用于从预设处理动作组集合中确定对所述报文进行处理的处理 动作组,所述处理动作组包括多个处理动作,其中,所述预设处理动作组集合 包括用于对报文进行处理的所有处理动作组,每一个处理动作组中包括的多个 处理动作按照预设序列进行排列;
处理模块,用于根据所述处理动作组对所述报文进行处理,以便通过与所 述处理动作组对应的转发端口转发处理后的报文;其中,所述转发端口与处理 动作组一一对应。
可选的,包括:
第一获取子模块,用于获取所述报文的特征;
第一确定子模块,用于根据所述特征,从预设处理动作组集合中确定对所 述报文进行处理的处理动作组,其中,不同特征对应不同的处理动作组。
可选的,所述处理动作组包括BITMAP,所述BITMAP用于指示所述处理 动作组中所包括的所述多个处理动作以及所述多个处理动作在所述处理动作 序列中的位置。
可选的,包括:
第一存储模块,用于将所述报文中的报文头MPLS字段内容、报文头VLAN 字段内容以及报文中的剩余其他内容分别存储在各自对应的第一寄存器中;
读取模块,用于读取所述处理动作组中的BITMAP;
第二存储模块,用于根据BITMAP与处理动作的映射表,将所述处理动作 组中的所述多个处理动作分别存储在各自对应的第二寄存器中,所述第二寄存 器与所述第一寄存器不同。
可选的,包括:
调用模块,用于调用所述第二寄存器中的所述多个处理动作对所述报文头 MPLS字段内容、所述报文头VLAN字段内容以及所述报文中的剩余其他内容 进行处理。
可选的,包括:
组合模块,用于将处理后的报文头MPLS字段内容、处理后的报文头VLAN 字段内容以及处理后的报文中的剩余其他内容组合成处理后的报文;
校验模块,用于校验所述处理后的报文的完整性;
转发模块,用于在校验成功后,通过所述转发端口转发所述处理后的报文。
第三方面,本发明实施例提供了一种基于FPGA的报文转发设备,包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少 一个处理器通过执行所述存储器存储的指令,执行如上述第一方面所述的方 法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可 读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计 算机执行如上述第一方面所述的方法
由于本申请实施例中的技术方案,采用了FPGA获取一个报文;从预设处 理动作组集合中确定对所述报文进行处理的多个处理动作,得到一个处理动作 组,其中,所述处理动作序列包括用于对报文进行处理的所有处理动作;以及 根据所述处理动作组对所述报文进行处理,以便通过与所述处理动作组对应的 转发端口转发处理后的报文;其中,所述转发端口与处理动作组一一对应的技 术方案。通过可编程逻辑电路FPGA实现了灵活支持多种报文内容修改和转发 的组合,在满足灵活性的同时还支持相对高带宽。FPGA内部实现的报文修订 转发过程是流水线设置,对数据报文的处理速度快,该方案具有较高的灵活性和扩展性。所以,有效解决了现有技术中,缺乏既能满足灵活性还能够支持高 带宽的报文转发方案。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施 例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅 仅是本发明的一些实施例。
图1为本申请实施例提供的一种基于FPGA的报文转发方法的流程图;
图2为本申请实施例提供的一种基于FPGA的报文转发方法中步骤S102 的具体实现方式流程图;
图3a-3g为本申请实施例中各个处理动作的结构示意图;
图4为本申请实施例中预设处理动作序列的结构示意图;
图5为本申请实施例中报文需要经过n个转发端口进行转发以及各转发端 口对应的处理动作组的结构示意图;
图6为本申请实施例中还可以执行的一些步骤的流程图;
图7为本申请实施例中还可以执行的另一些步骤的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发 明实施例中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所 描述的实施例是本发明技术方案的一部分实施例,而不是全部的实施例。基 于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动 前提下所获得的所有其他实施例,都属于本发明技术方案保护的范围。
请参考图1,为本发明实施例中提供的一种基于FPGA的报文转发方法, 包括:
步骤S101:FPGA获取一个报文;
步骤S102:从预设处理动作组集合中确定对所述报文进行处理的处理动作 组,所述处理动作组包括多个处理动作,其中,所述预设处理动作组集合包括 用于对报文进行处理的所有处理动作组,每一个处理动作组中包括的多个处理 动作按照预设序列进行排列;
步骤S103:根据所述处理动作组对所述报文进行处理,以便通过与所述处 理动作组对应的转发端口转发处理后的报文;其中,所述转发端口与处理动作 组一一对应。
在具体实践过程中,本发明中的实施例首先执行步骤S101:FPGA获取一 个报文,然后再执行步骤S102:从预设处理动作组集合中确定对所述报文进行 处理的处理动作组,所述处理动作组包括多个处理动作,其中,所述预设处理 动作组集合包括用于对报文进行处理的所有处理动作组,每一个处理动作组中 包括的多个处理动作按照预设序列进行排列。
在实际应用中,FPGA可以获取需要通过转发端口进行转发的一个报文, 该报文包括报文头,当然在具体实践过程中,FPGA还会获得与该报文相关的 控制信息,FPGA还可以将获取的报文中的报文头存储在缓存模块中的报文头 FIFO中,将控制信息存储在缓存模块中的控制信息FIFO中。
在具体实践过程中,在获取到需要经过转发端口进行转发的一个报文之 后,FPGA就可以从预设处理动作组集合中确定对所述报文进行处理的处理动 作组,请参考图2,在实际应用中,步骤S102还可以按照以下方式具体实施:
步骤S201:获取所述报文的特征;
步骤S202:根据所述特征,从预设处理动作组集合中确定对所述报文进行 处理的处理动作组,其中,不同特征对应不同的处理动作组。
在实际应用中,FPGA中保存有动作表项,该动作表项中记录了不同特征 的报文需要经过哪些处理动作组进行处理,以便将处理过的报文通过与处理动 作组对应的转发端口进行转发,上述特征包括报文的类型、报文各层的目的地 址以及源地址、和/或各协议的目的和源端口,本领域的技术人员应该理解的是, 上述特征根据报文类型的不同而不完全相同,在此,不做过多讨论。在具体实 践过程中,可以事先将预设处理动作组集合存储在FPGA中,这个预设处理动 作组集合包括用于对不同特征的报文进行处理的所有处理动作组
例如,当获取的报文的特征为A时,且在动作表项中记录特征A的报文 需要经过处理动作组1进行处理,那么,就可以从预设处理动作组集合中确定 出处理动作组1;当获取的报文的特征为B时,且在动作表项中记录特征B的 报文需要经过处理动作组1以及处理动作组2进行处理,那么,就可以从预设 处理动作组集合中确定出处理动作组1和处理动作组2,等等,在此就不一一 列举了。
当然,不同的处理动作组中包括的处理动作不完全相同,在实际应用中, 用于对报文进行处理的处理动作共有如下9种,分别为:PRI_ACT+L2_ACT, SET_MARK+POP/PUSH0,POP/PUSH1,SET_DIP,SET_SIP, IP_ACT+L4_ACT+TRUNC,USERSPACE0,USERSPACE1以及SAMPLE+HASH+RECIRC+OUT。
其中,PRI_ACT+L2_ACT的结构如图3a所示,包含对部分报文二层信息 的修订,包括VLAN帧中PRI信息,源和目的MAC地址; SET_MARK+POP/PUSH0的结构如图3b所示,包含弹出推入VLAN的值,弹 出MPLS后二层需要配置的报文类型值以及配置MPLS的值操作;POP/PUSH1 的结构如图3c所示,包含需要推入的MPLS标签的内容,最大支持5个标签; SET_DIP的结构如图3d所示,包含需要配置的目的IP可以为IPv4或者IPv6 地址;SET_SIP的结构如图3e所示,包含需要配置的源IP可以为IPv4或者IPv6 地址;IP_ACT+L4_ACT+TRUNC的结构如图3f所示,用于配置报文三四层的 相关信息以及该报文是否需要截断处理,包括了ipv4和ipv6中相关字段,源 和目的端口,报文截断操作需要的长度。
USERSPACE0和USERSPACE1包含该报文需要上传给用户层的相关信 息;SAMPLE+HASH+RECIRC+OUT的结构如图3g所示,包含该报文是否需 要回环或者被采样以及正常转发的端口SAMPLE是采样对应的端口,OUTPUT 是正常转发的端口,该动作内容是该动作组的终结动作,每个动作组都必须包 含。
在实际应用中,不同的处理动作组中包括的处理动作不完全相同,每一个 处理动作组对应不同的转发端口,也即转发端口与处理动作组一一对应,例如, 处理动作组1包括PRI_ACT+L2_ACT,SET_MARK+POP/PUSH0和 SAMPLE+HASH+RECIRC+OUT,该处理动作组1对应转发端口1;处理动作 组2包括SET_MARK+POP/PUSH0、POP/PUSH1、SET_DIP以及 SAMPLE+HASH+RECIRC+OUT,该处理动作组2对应转发端口2;处理动作 组3包括USERSPACE1和SAMPLE+HASH+RECIRC+OUT,该处理动作组3 对应转发端口3等等,但本领域的技术人员应该理解,每个处理动作组都应包 括SAMPLE+HASH+RECIRC+OUT。
在实际应用中,预设处理动作组集合中的每一个处理动作组中包括的多个 处理动作均按照预设序列进行排列,预设序列可以如图4所示,按照BITMAP, PRI_ACT+L2_ACT,SET_MARK+POP/PUSH0,POP/PUSH1,SET_DIP, SET_SIP,IP_ACT+L4_ACT+TRUNC,USERSPACE0,USERSPACE1, SAMPLE+HASH+RECIRC+OUT的顺序进行排列。其中,BITMAP表示当前的 动作组中包含有几个具体的处理动作,以及各个处理动作在处理动作序列中的 位置。
当然,在实际应用中,获得的报文需要经过处理的处理动作组的个数可能 为一个也可能为多个,每一个处理动作组对应一个转发端口,例如当确定出获 得的报文需要经过处理的处理动作组的个数就为一个时,那么,就可以根据该 处理动作组对该报文进行处理,并通过对应的转发端口进行转发;同样的,当 确定出获得的报文需要经过处理的处理动作组的个数为多个时,那么,就可以 将报文复制成多个报文,多个处理动作组中的每一个处理动作组对复制的多个 报文中的一个报文进行处理,然后将处理后的报文经过该处理动作组,对应的 转发端口进行转发,例如,当确定出获得的报文需要经过处理的处理动作组的 个数为2个,即处理动作组1和处理动作组2时,就可以将报文就复制成两份, 一份经过处理动作组1进行处理,处理后的报文经过处理动作组1对应的转发 端口进行转发;另一份经过处理动作2进行处理,处理后的报文经过处理动作 2对应的转发端口进行转发。
请参考图5,图5为确定出获得的报文需要经过与n个转发端口对应的n 个处理动作进行处理并转发的结构示意图,图5中ACTION(n output)表示 拥有多个(设为n)出口的动作,也就是一个报文需要组播复制成n个报文转发 或采样,ACT_MES指示对该条流的ACTION动作的具体信息,例如单播或组 播、ACTION总长度,这里分别将这些转发端口称为转发端口0,转发端口1, 转发端口2……转发端口n-1,ACTION_0为携带了转发端口0对应的一个处 理动作组,ACTION_1为携带了转发端口1对应的一个处理动作组,ACTION_2 为为携带了转发端口2对应的一个处理动作组……ACTION_n-1为携带了转发 端口n-1对应的一个处理动作组,在图5中假设处理动作组ACTION_0包含了 所有的处理动作也即上述9种处理动作,那么,处理动作组ACTION_0中的9 种处理动作就可以按照如图4所示的预设序列进行排列,组成该处理动作组 ACTION_0。
在本发明实施例中具体以确定出报文需要经过与一个转发端口对应的一 个处理动作进行处理并转发为例,为了叙述方便将该转发端口命名为转发端口 1,转发端口1对应的处理动作组1中依次包括BITMAP,PRI_ACT+L2_ACT、 SET_MARK+POP/PUSH0以及SAMPLE+HASH+RECIRC+OUT。在实际应用 中,BITMAP中的第127bit位至第119bit位用来标识当前处理动作组中包含有 几个具体的处理动作,以及各个处理动作在处理动作组中的位置,BITMAP中 第127bit位至第119bit位分别对应着PRI_ACT+L2_ACT, SET_MARK+POP/PUSH0,POP/PUSH1,SET_DIP,SET_SIP, IP_ACT+L4_ACT+TRUNC,USERSPACE0,USERSPACE1以及SAMPLE+HASH+RECIRC+OUT。
由于在处理动作组1中只包括三个处理动作(分别为PRI_ACT+L2_ACT, SET_MARK+POP/PUSH0以及SAMPLE+HASH+RECIRC+OUT),那么,在该 处理动作组1中的BITMAP中,对应PRI_ACT+L2_ACT的第127bit位为1, 对应SET_MARK+POP/PUSH0的第126bit位为1,对应SAMPLE+HASH+RECIRC+OUT的第119bit位为1,分别对应其他6个处理动 作组的第125bit位至第120bit位均为0。然后FPGA就可以将该处理动作组1 保存在FPGA的缓存模块中的相关动作内容的FIFO中。
请参考图6,在实际应用中,本发明中的实施例在执行完步骤S102之后, 执行步骤S103之前还可以执行以下步骤:
步骤S301:将所述报文中的报文头MPLS字段内容、报文头VLAN字段 内容以及报文中的剩余其他内容分别存储在各自对应的第一寄存器中;
步骤S302:读取所述处理动作组中的BITMAP;
步骤S303:根据BITMAP与处理动作的映射表,将所述处理动作组中的 所述多个处理动作分别存储在各自对应的第二寄存器中,所述第二寄存器与所 述第一寄存器不同。
在实际应用中,FPGA在根据处理动作组1对报文进行处理之前,FPGA 还会先将存储在缓存模块中的报文读取到报文处理模块中对应的寄存器中,将 存储在缓存模块中的处理动作1读取到报文处理模块中对应的寄存器中,具体 的,FPGA读取缓存模块的报文头FIFO中存储的报文头,以及控制信息FIFO 中存储的控制信息,然后将报文头中的MPLS字段内容存储在FPGA报文处理 模块中存储MPLS字段的寄存器中,将报文头中的VLAN字段内容存储在 FPGA报文处理模块中存储VLAN字段的寄存器中,将控制信息存储在FPGA 报文处理模块中存储控制信息的寄存器中,以及报文中的剩余其他内容存储在 FPGA报文处理模块中存储在存储其他内容的寄存器中。
FPGA读取存储在缓存模块中相关内容FIFO中处理动作1,在实际应用中, 本领域的技术人员可以理解的是,由于在处理动作1中BITMAP位于处理动作 之前,所以,FPGA在读取的第一个时钟就能够读取到处理动作组1中的 BITMAP,FPGA根据读取的BITMAP中第119bit位至第127bit位中的值,能 够计算出处理动作1中需要多个时钟就能将该处理动作组中包含的所有处理动 作读取完毕,例如,在FPGA中一个时钟能够读取16BYTE的数据,在处理 动作组1中,BITMAP,PRI_ACT+L2_ACT以及SET_MARK+POP/PUSH0的 大小均为16byte,那么,FPGA在第一个时钟读取BITMAP这16BYTE的数 据后,根据读取的BITMAP中第127bit位至第119bit位中的值为1,其他动作 位的标识为0,就可以知道在处理动作组1的BITMAP之后还有两个处理动作, 还需要两个时钟就能读取完处理动作组1中的所有动作。
在实际应用中,可以利用读取BITMAP通过逻辑计算后面的两个时钟出现 的动作内容具体是哪两个处理动作,以便将读取的处理动作存储到报文处理模 块中相应处理动作的寄存器中,但这样会浪费大量的FPGA片内资源。因此, 在本发明实施例中通过ROM或者RAM固化BITMAP与处理动作映射关系, 提高效率,具体方法如下:
设最大时钟个数为N,以BITMAP宽度为地址,创建N张映射表,每张 映射表的内容为BITMAP和该对时钟读取出的动作内容(处理动作)的映射关 系。
在实际应用中,FPGA中一个时钟能够读取的数据大小可以为16BYTE, 也可以为32BYTE,当FPGA中一个时钟读取的数据大小为32BYTE,且报文 需要经过多个转发端口进行转发,例如需要经过两个转发端口转发,那么,第 二转发端口对应的处理动作组中的BITMAP有可能被第一转发端口的最后一 个时钟读取,所以ROM或者RAM中存储的每个时钟对应动作上述映射表, 按照第一个时钟是否有读取BITMAP有两组情况。
例如,假设需要读取两个处理动作组,每个处理动作组如表一所示,最多 有三个动作分别是A,B,C,每个动作长度为16BYTE。
表一:
BITMAP | A动作 | B动作 | C动作 |
16BYTE | 16BYTE | 16BYTE | 16BYTE |
FPGA一个时钟读取32个BYTE情况下,对于表一所示的处理动作组最 大要2个时钟就可以读取完,那么,根据第一个时钟是否携带有BITMAP两种 情况,就能够得到,2×2=4张映射表,分别为如下所示的表二至表五,其中, 表二表示第一个时钟带有BITMAP的情况下的第一个时钟的映射,表三表示第 一个时钟带有BITMAP的情况下的第二个时钟的映射,表四表示第一个时钟不 带有BITMAP的情况下的第一个时钟的映射,表五表示第一个时钟不带有 BITMAP的情况下的第二个时钟的映射,
表一:
输入BITMAP值 | 该时钟输出的动作 |
001 | C |
010 | B |
011 | B |
100 | A |
101 | A |
110 | A |
111 | A |
表二:
表三:
输入BITMAP值 | 该时钟输出的动作 |
001 | C |
010 | B |
011 | B\C |
100 | A |
101 | A\C |
110 | A\B |
111 | A\B |
表四:
输入BITMAP值 | 该时钟输出的动作 |
001 | 无动作 |
010 | 无动作 |
011 | 无动作 |
100 | 无动作 |
101 | 无动作 |
110 | 无动作 |
111 | C |
在本实施例中,具体以FPGA中一个时钟能够读取16BYTE的数据为例, 那么,FPGA读取到处理动作组1中BITMAP之后,就可以根据BITMAP与 处理动作的映射关系,确定出后面三个时钟读取的处理动作分别为 PRI_ACT+L2_ACT,SET_MARK+POP/PUSH0以及 SAMPLE+HASH+RECIRC+OUT,然后,FPGA就可以将读取的 PRI_ACT+L2_ACT缓存在报文处理模块中存储PRI_ACT+L2_ACT的寄存器 中,将读取的SET_MARK+POP/PUSH0缓存在报文处理模块中存储 SET_MARK+POP/PUSH0的寄存器中,将读取的 SAMPLE+HASH+RECIRC+OUT缓存在报文处理模块中存储 SAMPLE+HASH+RECIRC+OUT的寄存器中。
然后,本发明实施例中的方法就可以执行步骤S103:根据所述处理动作组 对所述报文进行处理,以便通过与所述处理动作组对应的转发端口转发处理后 的报文;其中,所述转发端口与处理动作组一一对应。
在实际应用中,上述步骤S103还可以按照以下方式执行:
调用所述第二寄存器中的所述多个处理动作对所述报文头MPLS字段内 容、所述报文头VLAN字段内容以及所述报文中的剩余其他内容进行处理。
也即,FPGA会调用报文处理模块中各个处理动作对应的寄存器中存储的 多个处理动作,对报文头MPLS字段内容、所述报文头VLAN字段内容以及 所述报文中的剩余其他内容分别进行处理,具体的,FPGA会调用报文处理模 块中存储PRI_ACT+L2_ACT的寄存器中得PRI_ACT+L2_ACT,以及缓存在报 文处理模块中存储SET_MARK+POP/PUSH0的寄存器中的SET_MARK+POP/PUSH0以及缓存在报文处理模块中存储 SAMPLE+HASH+RECIRC+OUT的寄存器中的 SAMPLE+HASH+RECIRC+OUT对报文头MPLS字段内容、报文头VLAN字 段内容以及报文中的剩余其他内容分别进行处理。
请参考图7,在本发明实施例中的方法执行完步骤S103之后,还可以执行 以下步骤:
步骤S401:将处理后的报文头MPLS字段内容、处理后的报文头VLAN 字段内容以及处理后的报文中的剩余其他内容组合成处理后的报文;
步骤S402:校验所述处理后的报文的完整性;
步骤S403:在校验成功后,通过所述转发端口转发所述处理后的报文。
在实际应用中,在FPGA会调用报文处理模块中各个处理动作对应的寄存 器中存储的多个处理动作,对报文头MPLS字段内容、所述报文头VLAN字 段内容以及所述报文中的剩余其他内容分别进行处理之后,就可以将处理后的 报文头MPLS字段内容、处理后的报文头VLAN字段内容以及处理后的报文 中的剩余其他内容组合成处理后的报文,并将该处理后的报文移动到FPGA的 发送缓存中,在移动过程中进行各个报文头中各层校验字段checksum的运算, 以验证处理后的报文的完整性,当验证成功后,就可以将处理后的报文通过该 转发端口转发出去。
所以,通过上述方法,也即FPGA在获取一个报文之后,就会从预设处理 动作组集合中确定对该报文进行处理处理动作组,动作组中包括对该报文进行 处理的所有处理动作,然后,就可以在FPGA报文处理的电路模块中对报文进 行处理,处理之后的报文会移动到FPGA发送缓存模块中,进而将处理后的报 文通过处理动作组对应的转发端口进行转发。也即通过可编程逻辑电路FPGA 实现了灵活支持多种报文内容修改和转发的组合,在满足灵活性的同时还支持 相对高带宽。
又由于FPGA本身的电路特征也即FPGA设计的是电路,可以做流水线设 计(Pipe-line设计),所以,通过FPGA实现的报文修订转发过程也是流水线设 置,在FPGA对FPGA报文处理的电路模块中的报文进行处理的同时,可以同 步执行将FPGA发送缓存中的已经处理了的报文经过对应的转发端口进行转 发,所以,进一步提高了对数据报文的处理速度的有益技术效果。
基于同一发明构思,本发明实施例中提供了一种FPGA设备,该设备的基 于FPGA的报文转发方法的具体实施可参见上述方法实施例部分的描述,重复 之处不再赘述,该设备包括:
FPGA,所述FPGA包括:
获取模块:用于获取一个报文;
确定模块:用于从预设的处理动作序列中确定对所述报文进行处理的多个 处理动作,得到一个处理动作组,其中,所述处理动作序列包括用于对报文进 行处理的所有处理动作;
处理模块,用于根据所述处理动作组对所述报文进行处理,以便通过与所 述处理动作组对应的转发端口转发处理后的报文;其中,所述转发端口与处理 动作组一一对应。
可选的,包括:
第一确定子模块,用于确定所述报文需要经过的转发端口,所述转发端口 指示所述报文经过所述转发端口转发时需要经过的多个处理动作;
第二确定子模块,用于根据所述转发端口的指示,从所述从预设的处理动 作序列中确定出所述多个处理动作。
可选的,所述处理动作组包括BITMAP,所述BITMAP用于指示所述处理 动作组中所包括的所述多个处理动作以及所述多个处理动作在所述处理动作 序列中的位置。
可选的,包括:
第一存储模块,用于将所述报文中的报文头MPLS字段内容、报文头VLAN 字段内容、控制信息以及报文中的剩余其他内容分别存储在各自对应的第一寄 存器中;
读取模块,用于读取所述处理动作组中的BITMAP;
第二存储模块,用于根据BITMAP与处理动作的映射表,将所述处理动作 组中的所述多个处理动作分别存储在各自对应的第二寄存器中,所述第二寄存 器与所述第一寄存器不同。
可选的,包括:
调用模块,用于调用所述第二寄存器中的所述多个处理动作对所述报文头 MPLS字段内容、所述报文头VLAN字段内容以及所述报文中的剩余其他内容 进行处理。
可选的,包括:
组合模块,用于将所述控制信息与处理后的报文头MPLS字段内容、处理 后的报文头VLAN字段内容以及处理后的报文中的剩余其他内容组合成处理 后的报文;
校验模块,用于校验所述处理后的报文的完整性;
转发模块,用于在校验成功后,通过所述转发端口转发所述处理后的报文。
基于同一发明构思,本发明实施例中提供了一种计算机可读存储介质:
所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机 上运行时,使得计算机执行如上所述的一种基于FPGA的报文转发方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计 算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结 合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包 含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和 光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产 品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/ 或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入 式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算 机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一 个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设 备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中 的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个 流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使 得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处 理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个 流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种基于FPGA的报文转发方法,其特征在于,包括:
现场可编程门阵列FPGA获取一个报文;
从预设处理动作组集合中确定对所述报文进行处理的处理动作组,所述处理动作组包括多个处理动作,其中,所述预设处理动作组集合包括用于对报文进行处理的所有处理动作组,每一个处理动作组中包括的多个处理动作按照预设序列进行排列;
根据所述处理动作组对所述报文进行处理,以便通过与所述处理动作组对应的转发端口转发处理后的报文;其中,所述转发端口与处理动作组一一对应。
2.如权利要求1所述的方法,其特征在于,所述从预设处理动作组集合中确定对所述报文进行处理的处理动作组,具体包括:
获取所述报文的特征;
根据所述特征,从预设处理动作组集合中确定对所述报文进行处理的处理动作组,其中,不同特征对应不同的处理动作组。
3.如权利要求2所述的方法,其特征在于,所述处理动作组包括位图BITMAP,所述BITMAP用于指示所述处理动作组中所包括的所述多个处理动作以及所述多个处理动作在所述处理动作组中的位置。
4.如权利要求3所述的方法,其特征在于,在所述从预设处理动作组集合中确定对所述报文进行处理的处理动作组之后,所述方法包括:
将所述报文中的报文头MPLS字段内容、报文头VLAN字段内容以及报文中的剩余其他内容分别存储在各自对应的第一寄存器中;
读取所述处理动作组中的BITMAP;
根据BITMAP与处理动作的映射表,将所述处理动作组中的所述多个处理动作分别存储在各自对应的第二寄存器中,所述第二寄存器与所述第一寄存器不同。
5.如权利要求4所述的方法,其特征在于,所述根据所述处理动作组对所述报文进行处理,包括:
调用所述第二寄存器中的所述多个处理动作对所述报文头MPLS字段内容、所述报文头VLAN字段内容以及所述报文中的剩余其他内容进行处理。
6.如权利要求5所述的方法,其特征在于,所述根据所述处理动作组对所述报文进行处理之后,包括:
将处理后的报文头MPLS字段内容、处理后的报文头VLAN字段内容以及处理后的报文中的剩余其他内容组合成处理后的报文;
校验所述处理后的报文的完整性;
在校验成功后,通过所述转发端口转发所述处理后的报文。
7.一种FPGA设备,其特征在于,包括:
FPGA,所述FPGA包括:
获取模块:用于获取一个报文;
确定模块:用于从预设处理动作组集合中确定对所述报文进行处理的处理动作组,所述处理动作组包括多个处理动作,其中,所述预设处理动作组集合包括用于对报文进行处理的所有处理动作组,每一个处理动作组中包括的多个处理动作按照预设序列进行排列;
处理模块,用于根据所述处理动作组对所述报文进行处理,以便通过与所述处理动作组对应的转发端口转发处理后的报文;其中,所述转发端口与处理动作组一一对应。
8.如权利要求7所述的设备,其特征在于,包括:
第一获取子模块,用于获取所述报文的特征;
第一确定子模块,用于根据所述特征,从预设处理动作组集合中确定对所述报文进行处理的处理动作组,其中,不同特征对应不同的处理动作组。
9.如权利要求8所述的设备,其特征在于,所述处理动作组包括BITMAP,所述BITMAP用于指示所述处理动作组中所包括的所述多个处理动作以及所述多个处理动作在所述处理动作序列中的位置。
10.如权利要求9所述的设备,其特征在于,包括:
第一存储模块,用于将所述报文中的报文头MPLS字段内容、报文头VLAN字段内容以及报文中的剩余其他内容分别存储在各自对应的第一寄存器中;
读取模块,用于读取所述处理动作组中的BITMAP;
第二存储模块,用于根据BITMAP与处理动作的映射表,将所述处理动作组中的所述多个处理动作分别存储在各自对应的第二寄存器中,所述第二寄存器与所述第一寄存器不同。
11.如权利要求10所述的设备,其特征在于,包括:
调用模块,用于调用所述第二寄存器中的所述多个处理动作对所述报文头MPLS字段内容、所述报文头VLAN字段内容以及所述报文中的剩余其他内容进行处理。
12.如权利要求11所述的设备,其特征在于,包括:
组合模块,用于将处理后的报文头MPLS字段内容、处理后的报文头VLAN字段内容以及处理后的报文中的剩余其他内容组合成处理后的报文;
校验模块,用于校验所述处理后的报文的完整性;
转发模块,用于在校验成功后,通过所述转发端口转发所述处理后的报文。
13.一种基于FPGA的报文转发设备,其特征在于,包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如权利要求1-6任一项所述的方法。
14.一种计算机可读存储介质,其特征在于:
所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711098924.XA CN107786447B (zh) | 2017-11-09 | 2017-11-09 | 一种基于fpga的报文转发方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711098924.XA CN107786447B (zh) | 2017-11-09 | 2017-11-09 | 一种基于fpga的报文转发方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107786447A true CN107786447A (zh) | 2018-03-09 |
CN107786447B CN107786447B (zh) | 2020-06-16 |
Family
ID=61433058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711098924.XA Active CN107786447B (zh) | 2017-11-09 | 2017-11-09 | 一种基于fpga的报文转发方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107786447B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110995546A (zh) * | 2019-12-23 | 2020-04-10 | 锐捷网络股份有限公司 | 报文采样方法及装置 |
CN111245866A (zh) * | 2020-03-04 | 2020-06-05 | 深圳市龙信信息技术有限公司 | 基于硬件加速的以太网应用层协议控制系统及方法 |
CN112052171A (zh) * | 2020-09-03 | 2020-12-08 | 上海复深蓝软件股份有限公司 | 测试报文处理方法、装置、计算机设备及存储介质 |
CN113656190A (zh) * | 2021-07-09 | 2021-11-16 | 苏州浪潮智能科技有限公司 | 一种任务之间传递vlan信息的实现方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102904730A (zh) * | 2012-10-26 | 2013-01-30 | 曙光信息产业(北京)有限公司 | 根据协议、端口和ip地过滤挑选流量的智能加速网卡 |
CN104363177A (zh) * | 2014-11-06 | 2015-02-18 | 北京东土科技股份有限公司 | 一种用于报文处理的规则表项的优化方法及装置 |
CN105376159A (zh) * | 2014-08-25 | 2016-03-02 | 深圳市中兴微电子技术有限公司 | 报文处理转发装置及方法 |
CN106713144A (zh) * | 2016-12-27 | 2017-05-24 | 锐捷网络股份有限公司 | 一种报文出口信息的读写方法及转发引擎 |
CN107317761A (zh) * | 2017-06-29 | 2017-11-03 | 济南浪潮高新科技投资发展有限公司 | 基于fpga的100g以太分流方法及系统 |
-
2017
- 2017-11-09 CN CN201711098924.XA patent/CN107786447B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102904730A (zh) * | 2012-10-26 | 2013-01-30 | 曙光信息产业(北京)有限公司 | 根据协议、端口和ip地过滤挑选流量的智能加速网卡 |
CN105376159A (zh) * | 2014-08-25 | 2016-03-02 | 深圳市中兴微电子技术有限公司 | 报文处理转发装置及方法 |
CN104363177A (zh) * | 2014-11-06 | 2015-02-18 | 北京东土科技股份有限公司 | 一种用于报文处理的规则表项的优化方法及装置 |
CN106713144A (zh) * | 2016-12-27 | 2017-05-24 | 锐捷网络股份有限公司 | 一种报文出口信息的读写方法及转发引擎 |
CN107317761A (zh) * | 2017-06-29 | 2017-11-03 | 济南浪潮高新科技投资发展有限公司 | 基于fpga的100g以太分流方法及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110995546A (zh) * | 2019-12-23 | 2020-04-10 | 锐捷网络股份有限公司 | 报文采样方法及装置 |
CN110995546B (zh) * | 2019-12-23 | 2022-02-25 | 锐捷网络股份有限公司 | 报文采样方法及装置 |
CN111245866A (zh) * | 2020-03-04 | 2020-06-05 | 深圳市龙信信息技术有限公司 | 基于硬件加速的以太网应用层协议控制系统及方法 |
CN112052171A (zh) * | 2020-09-03 | 2020-12-08 | 上海复深蓝软件股份有限公司 | 测试报文处理方法、装置、计算机设备及存储介质 |
CN112052171B (zh) * | 2020-09-03 | 2021-05-28 | 上海复深蓝软件股份有限公司 | 测试报文处理方法、装置、计算机设备及存储介质 |
CN113656190A (zh) * | 2021-07-09 | 2021-11-16 | 苏州浪潮智能科技有限公司 | 一种任务之间传递vlan信息的实现方法及装置 |
CN113656190B (zh) * | 2021-07-09 | 2023-08-08 | 苏州浪潮智能科技有限公司 | 一种任务之间传递vlan信息的实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107786447B (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107786447A (zh) | 一种基于fpga的报文转发方法及设备 | |
CN103477588B (zh) | 刀片服务器中刀片间网络业务的分类和管理方法和系统 | |
US11425058B2 (en) | Generation of descriptive data for packet fields | |
CN108833299B (zh) | 一种基于可重构交换芯片架构的大规模网络数据处理方法 | |
CN102474449A (zh) | 基于虚拟接口的交换装置和方法 | |
CN104380667A (zh) | 一种数据报文的路由方法和设备 | |
US9660938B2 (en) | Two-stage port-channel resolution in a multistage fabric switch | |
CN109962847A (zh) | 业务功能链报文的封装方法和装置及计算机可读存储介质 | |
CN103004158A (zh) | 具有可编程内核的网络设备 | |
CN105681198B (zh) | 一种业务链处理方法、设备及系统 | |
CN102857414A (zh) | 一种转发表写入、报文转发方法及装置 | |
CN102624611A (zh) | 报文分流方法、装置、处理器和网络设备 | |
CN101072176A (zh) | 一种报文处理的方法和系统 | |
CN107547391A (zh) | 一种报文传输方法和装置 | |
CN103560957A (zh) | 查表键值构造方法、微码下发方法、装置及系统 | |
CN105791109B (zh) | 多协议标签交换中间节点组播转发的方法、装置和节点 | |
US20210185153A1 (en) | Hybrid Fixed/Programmable Header Parser for Network Devices | |
CN104618253A (zh) | 一种动态变更的传输报文处理方法和装置 | |
CN107483341A (zh) | 一种跨防火墙报文快速转发方法及装置 | |
CN112787938B (zh) | 一种路由表项配置方法及装置 | |
CN106411553B (zh) | 一种业务链路径的优化方法及装置 | |
US9742881B2 (en) | Network virtualization using just-in-time distributed capability for classification encoding | |
CN104584492A (zh) | 报文处理方法、设备及系统 | |
CN108737239A (zh) | 一种报文转发方法及装置 | |
WO2015165323A1 (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 |