一种基于FPGA的报文转发方法及设备与流程

文档序号:13908616阅读:217来源:国知局
一种基于FPGA的报文转发方法及设备与流程
本发明涉及通信
技术领域
,尤其涉及一种基于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(noutput)表示拥有多个(设为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。表一:bitmapa动作b动作c动作16byte16byte16byte16bytefpga一个时钟读取32个byte情况下,对于表一所示的处理动作组最大要2个时钟就可以读取完,那么,根据第一个时钟是否携带有bitmap两种情况,就能够得到,2×2=4张映射表,分别为如下所示的表二至表五,其中,表二表示第一个时钟带有bitmap的情况下的第一个时钟的映射,表三表示第一个时钟带有bitmap的情况下的第二个时钟的映射,表四表示第一个时钟不带有bitmap的情况下的第一个时钟的映射,表五表示第一个时钟不带有bitmap的情况下的第二个时钟的映射,表一:输入bitmap值该时钟输出的动作001c010b011b100a101a110a111a表二:表三:输入bitmap值该时钟输出的动作001c010b011b\c100a101a\c110a\b111a\b表四:输入bitmap值该时钟输出的动作001无动作010无动作011无动作100无动作101无动作110无动作111c在本实施例中,具体以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的报文转发方法。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1