买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种基于FPGA的IP报文网络地址转换方法及装置_北京物芯科技有限责任公司_201811592943.2 

申请/专利权人:北京物芯科技有限责任公司

申请日:2018-12-25

公开(公告)日:2021-01-12

公开(公告)号:CN109525518B

主分类号:H04L12/951(20130101)

分类号:H04L12/951(20130101);H04L12/953(20130101);H04L12/863(20130101);H04L29/12(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.01.12#授权;2019.04.19#实质审查的生效;2019.03.26#公开

摘要:本发明实施例公开了一种基于FPGA的IP报文网络地址转换方法及装置。所述方法,应用于可编程逻辑器件中,包括:通过以太网端口并行接收IP报文并分别切分为cell单元;对首cell单元进行报文解析,得到IP报文属性信息,将属于同一IP报文的cell单元按照端口存储于报文缓存区中;采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,并根据当前cell单元的类型,对当前cell单元进行组装处理;在确定与一个IP报文对应的全部cell单元被组装完成时,通过与IP报文对应的端口将IP报文转发。本发明实施例的技术方案,通过FPGA对IP报文进行网络地址转换,提高了处理速度和通用性。

主权项:1.一种基于FPGA的IP报文网络地址转换方法,应用于可编程逻辑器件中,其特征在于,包括:通过多个以太网端口并行接收多个IP报文,并将接收的各所述IP报文分别切分为多个cell单元,所述IP报文中的首cell单元中包括IP报文属性信息;对各所述首cell单元进行报文解析,得到与所述首cell单元对应的IP报文属性信息,并将所述首cell单元以及与所述首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中;采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,并根据所述当前cell单元的类型,采取对应的处理方式对所述当前cell单元进行cell单元组装处理;在确定与一个IP报文对应的全部cell单元被组装完成时,通过与所述IP报文对应的端口将所述IP报文进行转发;其中,根据所述当前cell单元的类型,采取对应的处理方式对所述当前cell单元进行cell单元组装处理,包括:如果当前cell单元为首cell单元,则对所述当前cell单元进行报文解析,将解析得到的IP报文属性信息进行网络地址转换,得到新的IP报文属性信息重新写入所述当前cell单元,并根据所述当前cell单元构造组装报文结构;如果所述当前cell单元不为首cell单元,则在与所述当前cell单元匹配的组装报文结构的尾部加入所述当前cell单元。

全文数据:一种基于FPGA的IP报文网络地址转换方法及装置技术领域本发明实施例涉及网络通信领域技术,尤其涉及一种基于FPGA的IP报文网络地址转换方法及装置。背景技术随着通信技术的不断发展,计算机的使用数量迅速增加,出现了IP地址InternetProtocolAddress,互联网协议地址空间衰竭的问题。网络地址转换技术可以实现私有网络访问公共网络的功能,这种通过使用少量的公有IP地址代表较多的私有IP地址的方式,有助于减缓可用IP地址空间的衰竭。当有保密需要或者网络的内部IP地址无法在外部网络使用时,网络交换设备需要进行IP报文的网络地址转换,现有技术主要是通过专用网络处理器NetworkProcessor,NP和主机的方式来实现对IP报文进行网络地址转换,但是目前市场上的很多常用设备中没有包括专用网络处理器,而使用包含专用网络处理器的设备花费成本又比较高,导致使用包含专用网络处理器的设备进行网络地址转换的客户群体相对比较少,因此这种方法不具有通用性。对于不包含专用网络处理器的设备来说,常用的方法是通过多核CPUCentralProcessingUnit,中央处理器来实现IP报文的网络地址转换,但是,这种通过多核CPU进行网络地址转换的传统CPU硬件方案,需要处理大量的指令,不仅处理速度上较慢,而且会使得整个系统处理较为复杂。发明内容本发明实施例提供一种基于FPGA的IP报文网络地址转换方法及装置,以通过可编程逻辑器件FPGAField-ProgrammableGateArray,现场可编程门阵列实现快速、有效地对IP报文进行网络地址转换。第一方面,本发明实施例提供了一种基于FPGA的IP报文网络地址转换方法,应用于可编程逻辑器件中,包括:通过多个以太网端口并行接收多个IP报文,并将接收的各所述IP报文分别切分为多个cell单元,所述IP报文中的首cell单元中包括IP报文属性信息;对各所述首cell单元进行报文解析,得到与所述首cell单元对应的IP报文属性信息,并将所述首cell单元以及与所述首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中;采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,并根据所述当前cell单元的类型,采取对应的处理方式对所述当前cell单元进行cell单元组装处理;在确定与一个IP报文对应的全部cell单元被组装完成时,通过与所述IP报文对应的端口将所述IP报文进行转发。可选的,根据所述当前cell单元的类型,采取对应的处理方式对所述当前cell单元进行cell单元组装处理,包括:如果当前cell单元为首cell单元,则对所述当前cell单元进行报文解析,将解析得到的IP报文属性信息进行网络地址转换,得到新的IP报文属性信息重新写入所述当前cell单元,并根据所述当前cell单元构造组装报文结构;如果所述当前cell单元不为首cell单元,则在与所述当前cell单元匹配的组装报文结构的尾部加入所述当前cell单元。可选的,采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,具体包括:在采用端口轮询调度机制确定轮询至目标端口时,检测是否接收到与所述目标端口匹配的调度控制指令;若是,则在所述报文缓存区中获取与所述目标端口对应的cell单元作为当前cell单元;其中,所述调度控制指令在当前调度的所述目标端口所对应的报文缓存区非空时生成。可选的,在将所述首cell单元以及与所述首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中之后,还包括:在确定与同一IP报文对应的cell单元全部缓存于所述报文缓存区之后,确定与该IP报文对应的cell单元参与端口轮询调度。可选的,所述将解析得到的IP报文属性信息进行网络地址转换,得到新的IP报文属性信息重新写入所述当前cell单元,包括:将解析得到的所述IP报文属性信息与网络地址转换表进行匹配,若匹配成功,则根据匹配结果,获取与所述IP报文属性信息对应的转换IP报文属性信息写入所述当前cell单元中;其中,所述转换IP报文属性信息中包括:新的IP信息、新的TCPTransmissionControlProtocol,传输控制协议UDPUserDatagramProtocol,用户数据报协议端口信息、新的IP校验和与新的TCPUDP校验和;若匹配失败,则将所述当前cell单元中的以太网类型参数的值设置为目标值,并将当前cell单元中的报文数据返回给网络交换芯片;其中,所述以太网类型参数中的所述目标值用于通知与所述FPGA通过所述以太网接口相连的网络交换芯片在所述FPGA的网络地址转换表中添加与所述当前cell单元的IP报文属性信息对应的网络地址转换表项。可选的,所述采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,包括:根据端口cell单元数量轮询端口,若当前端口的端口cell单元数量不为0,则从当前端口调度一个cell单元,否则,当前端口不进行cell单元调度,继续轮询下一个端口;其中,当一个cell单元按照端口对应存储于报文缓存区时,该端口的端口cell单元数量加1,当端口的一个cell被调度出报文缓存区时,该端口的端口cell单元数量减1。可选的,在通过多个以太网端口并行接收多个IP报文之前,还包括:确认网络地址转换的期望带宽,根据所述期望带宽计算cell单元的位宽参数、FPGA的工作时钟频率参数以及报文缓存区;其中,所述报文缓存区包括FPGA内部RAMRandomAccessMemory,随机存取存储器和外部DDRDoubleDataRateSDRAM,双倍速率同步动态随机存储器。可选的,将所述首cell单元以及与所述首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中,包括:将所述首cell单元存入对应端口的报文缓存区域;与所述首cell单元属于同一IP报文的其他cell单元通过从空闲指针链表获取空闲指针,串联到对应端口的cell单元指针链表;其中,所述cell单元指针链表中的首个指针指向首cell单元在所述对应端口的报文缓存区域的存储位置。可选的,所述将接收的各所述IP报文分别切分为多个cell单元,包括:按照端口顺序获取一个端口作为目标端口;将通过所述目标端口接收的一个IP报文切分为多个cell单元,并在检测到所述多个cell单元被全部存储在与所述目标端口对应的报文缓存区时,返回执行按照端口顺序获取一个端口作为目标端口的操作,直至满足结束处理条件。第二方面,本发明实施例还提供了一种基于FPGA的IP报文网络地址转换装置,应用于可编程逻辑器件中,包括:接收切分模块,用于通过多个以太网端口并行接收多个IP报文,并将接收的各所述IP报文分别切分为多个cell单元,所述IP报文中的首cell单元中包括IP报文属性信息;解析存储模块,用于对各所述首cell单元进行报文解析,得到与所述首cell单元对应的IP报文属性信息,将所述首cell单元以及与所述首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中;调度处理模块,用于采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,并根据所述当前cell单元的类型,采取对应的处理方式对所述当前cell单元进行cell单元组装处理;转发模块,用于在确定与一个IP报文对应的全部cell单元被组装完成时,通过与所述IP报文对应的端口将所述IP报文进行转发。本发明实施例通过在可编程逻辑器件FPGA中将接收的IP报文切分为多个cell单元,仅对包含IP属性信息的首cell单元进行报文解析、网络地址转换表匹配以及报文信息修改后,重新将该首cell单元与属于同一IP报文的其他cell单元进行组合后进行转发的方式,通过充分开发FPGA的硬件功能,解决了现有的多CPU处理技术对IP报文进行网络地址转换时处理速度慢、通用性差的问题,在降低实现成本的基础上,实现了提高处理速度和通用性的效果。附图说明图1是本发明实施例一提供的一种基于FPGA的IP报文网络地址转换方法的流程图;图2a是本发明实施例二提供的一种基于FPGA的IP报文网络地址转换方法的流程图;图2b是本发明实施例的方法所适用的接口示意图;图2c是本发明实施例的方法所适用的FPGA的具体功能结构图;图3是本发明实施例三提供的一种基于FPGA的IP报文网络地址转换装置的结构示意图。具体实施方式下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。实施例一图1为本发明实施例一提供的一种基于FPGA的IP报文网络地址转换方法的流程图,本发明实施例可适用于通过可编程逻辑器件对IP报文进行网络地址转换的情况,该方法可以由网络地址转换装置来执行,该装置可以由硬件的方式实现,并一般可以应用于FPGA中。具体的,参考图1,该方法可以包括如下步骤:步骤110、通过多个以太网端口并行接收多个IP报文,并将接收的各IP报文分别切分为多个cell单元。其中,以太网端口具体可以包括:支持SGMII、1000-BaseX和以太网MACMediaAccessControl,媒体访问控制功能的千兆接口,一般为FPGA内嵌IP。上述以太网端口可以具体用于:对以太网协议进行解析,以及接收网络交换芯片发送的IP报文。可选的,现场可编程门阵列FPGA是本发明实施例中的可编程逻辑器件的一种选择,其还可以包括EPLD可擦除的可编程逻辑器件,EraseProgrammableLogicDevice等其他的可编程逻辑器件,本发明实施例对可编程逻辑器件的选择不做限定。具体的,FPGA通过以太网端口与网络交换芯片相连,从而接收网络交换芯片发送的IP报文,为了满足系统的需求,可以根据网络芯片的最大接口性能和FPGA接口速率及处理性能,在FPGA与网络交换芯片之间设置多组以太网端口,并行接收多个IP报文。IP报文是指需要网络交换芯片转发的IP报文,其通过网络交换芯片的ACLAccessControlList,访问控制列表匹配重定向到与网络交换芯片的以太网端口连接的FPGA,由FPGA通过逻辑电路对该IP报文进行高带宽的网络地址转换,再通过FPGA中与该IP报文对应的以太网端口转发到网络交换芯片进行后续处理。在本实施例中,FPGA通过多个以太网端口并行接收多个IP报文,并按照端口顺序依次将每个接收的IP报文切分为多个cell单元,以cell单元的形式对IP报文进行操作。具体的,以cell单元的形式对IP报文进行操作可以更加灵活的利用缓存区域存储IP报文,提高缓存区域的利用率,减少缓存区域的浪费,例如,当缓存区域中没有一块连续的缓存空间能够存储IP报文时,通过将IP报文切分成较小的cell单元,将切分的cell单元分别存储在缓存区域中的多个不连续的缓存空间中,从而实现对IP报文的存储。可选的,根据网络交换芯片的最大接口性能和FPGA接口速率及处理性能,在FPGA与网络交换芯片之间设置多组以太网端口,并行接收多个IP报文,具体可以包括:网络地址转换所需的带宽为4G,网络交换芯片的处理接口性能为64G,为了实现网络地址转换的4G带宽,FPGA需要提供4组以太网端口,因此,网络交换芯片需要提供4组以太网端口与FPGA的4组以太网端口相连,使得FPGA可以通过4组以太网端口并行接收4个网络交换芯片转发的IP报文。具体的,将每个接收的IP报文切分为多个cell单元具体可以包括:根据网络地址转换所需要的实际带宽以及FPGA的工作时钟频率确定每个cell单元的大小,从IP报文的头部开始将IP报文切分为多个固定大小的cell单元,其中,每个cell单元的大小至少应该可以包含IP报文的三层头信息以及四层头信息。可选的,将每个接收的IP报文切分为大小为96B的cell单元,后续以该cell单元的形式对IP报文进行处理操作,其中,每个cell单元的大小可根据网络地址转换所需要的实际带宽以及FPGA的工作时钟频率进行调整。步骤120、对各首cell单元进行报文解析,得到与所述首cell单元对应的IP报文属性信息,并将属于同一IP报文的所有cell单元按照端口对应存储于报文缓存区。其中,各IP报文对应的首cell单元中包括该IP报文的报文属性信息,即该IP报文的三层头信息和四层头信息。其中,IP报文的三层头信息主要包含IP报文长度、分片标记、源IP信息、目的IP信息、ID信息和OFFSET信息;IP报文的四层头信息主要包含TCP和UDP的端口信息。本实施例中,FPGA将接收的各IP报文分别切分为多个cell单元后,根据报文格式对各首cell单元进行报文解析,得到与各首cell单元对应的IP报文的报文属性信息,以用于进行后续的网络地址转换处理。为了以cell单元的形式将IP报文存储于缓存区域中,FPGA在缓存区中维护了一个空闲指针链表以及按照端口分别维护了一个cell指针链表。可选的,每个端口对应一个cell单元指针链表,该链表中存储的是与当前端口对应的cell单元的存储地址,该存储地址指向cell单元报文在报文缓存区中的存储位置,同一cell单元指针链表中的不同cell单元的存储地址是在报文缓存区中随机申请的,从而达到所有端口的报文共享报文缓存区的效果,减少了内存的消耗。具体的,将首cell单元以及与该首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中,可以包括:将首cell单元存入对应端口的cell指针链表所对应的报文缓存区域;在首cell单元存储于报文缓存区域后,与该首cell单元属于同一IP报文的其他cell单元通过从空闲指针链表申请空闲指针,并将cell单元报文存入该空闲指针串联到对应端口的cell单元指针链表后面。其中,FPGA通过对对应端口的cell单元指针链表进行维护,将属于同一IP报文的所有cell单元都链接到对应端口的cell单元指针链表。可选的,为了避免丢包,FPGA中的每个以太网端口在报文缓存区中设置一个固定大小的RAM作为临时缓存区,例如,每个以太网端口设置一个4个cell大小的RAM当作临时缓存区,当原本存储于报文缓存区中的cell单元尚未被处理完成时,有新的cell单元需要存储到该端口对应的报文缓存区中,此时,可以将新的cell单元存储于该端口对应的临时缓存区中,以避免丢包。步骤130、采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,并根据当前cell单元的类型,采取对应的处理方式对当前cell单元进行cell单元组装处理。可选的,FPGA采用端口轮询调度机制,按照端口顺序依次在报文缓存区中获取与一个端口对应的待调度的cell单元作为当前cell单元,并根据当前cell单元的类型,采取对应的处理方式对当前cell单元进行cell单元组装处理。其中,端口轮询调度机制表示,当一个端口的当前cell单元调度完成后,轮询下一个端口,从下一个端口中选择一个待调度的cell单元当作当前cell单元,对其进行cell单元组装处理。可选的,采用端口轮询调度机制对cell单元进行调度时,由于调度一个cell单元需要16个周期才能完成,网络交换芯片提供4组以太网端口与FPGA的4组以太网端口相连,则每个以太网端口每经过48个周期轮询一次,例如,当前调度的是端口1中的cell单元,则经过16个周期后,该cell单元调度完成,会从端口2中选择一个cell单元进行调度,如此依次轮询4个端口,从每个端口中分别调度一个cell单元,经过上述4个cell单元的调度周期后,又轮询到端口1,即每个端口每经过48个周期轮询一次。对cell单元进行调度时,需要对其进行cell单元组装处理,由于IP报文的报文属性信息只包含在IP报文的首cell单元中,对IP报文进行cell单元组装处理也主要是针对首cell单元进行处理,因此,对属于同一IP报文的首cell单元与非首cell单元的cell单元组装处理是不一样的。可选的,根据当前cell单元的类型,采取对应的处理方式对当前cell单元进行cell单元组装处理具体可以包括:判断当前cell单元是否为首cell单元,若是,则对当前cell单元进行报文解析、网络地址转换、报文信息修改以及报文重组操作,若否,则直接对当前cell单元进行报文重组操作。可选的,只有在确定与同一IP报文对应的cell单元全部缓存于对应端口的报文缓存区域之后,与该IP报文对应的cell单元才可以参与端口轮询调度。步骤140、在确定与一个IP报文对应的全部cell单元被组装完成时,通过与IP报文对应的端口将IP报文进行转发。当与一个IP报文对应的全部cell单元重新组装成完整的IP报文时,FPGA将重组的IP报文通过与IP报文对应的以太网端口发送给网络交换芯片,以使网络交换芯片对重组后的IP报文进行后续的处理。本发明实施例通过在FPGA中将接收的IP报文切分为多个cell单元,仅对包含IP属性信息的首cell单元进行报文解析、网络地址转换表匹配以及报文信息修改后,重新将该首cell单元与属于同一IP报文的其他cell单元进行组合后进行转发的方式,通过充分开发FPGA的硬件功能,解决了现有的多CPU处理技术对IP报文进行网络地址转换时处理速度慢、通用性差的问题,在降低实现成本的基础上,实现了提高处理速度和通用性的效果。实施例二图2a是本发明实施例二提供的一种基于FPGA的IP报文网络地址转换方法的流程图,本实施例可以与上述一个或者多个实施例中各个可选方案结合。具体的,参考图2a,该方法可以包括如下步骤:步骤210、确认网络地址转换所需的参数。在本实施例中,为了实现高带宽的网络地址转换,提高对IP报文的处理速度,首先根据系统整体需求,确认网络地址转换所需要的带宽,并根据所需带宽计算cell单元的位宽参数、FPGA的工作时钟频率参数以及报文缓存区的大小;其中,cell单元的位宽参数决定组成IP报文的cell单元的大小,FPGA的工作时钟频率参数是指基于FPGA的数字电路的系统主时钟的频率,其可以影响cell单元的大小,报文缓存区可以包括FPGA内部RAM和外部DDR,其用于以cell单元的形式存储IP报文。可选的,网络交换芯片处理接口性能为64G,网络地址转换所需的带宽为4G,则需要网络交换芯片提供4组以太网接口与FPGA的4组以太网接口相连,以实现网络地址转换所要求的4G带宽。如图2b所示,网络交换芯片如果内部嵌入CPU,则还需要提供一组SPISerialPeripheralInterface,串行外设接口slave接口与FPGA相连,作为网络地址转换表以及内部寄存器管理接口。其中,SPI接口是一种高速的、全双工、同步的通信总线,在应用的时候分为主master、从slave两种模式,通常用于短距离通信。步骤220、将接收的各IP报文分别切分为多个cell单元。本实施例中,在通过多个以太网端口并行接收多个IP报文后,按照端口顺序依次将接收的IP报文切分为多个定长的cell单元。其中,仅在将当前端口接收的IP报文所对应的cell单元全部存储在当前端口对应的报文缓存区之后,才将下一个端口接收的IP报文切分为多个定长的cell单元。步骤230、对各首cell单元进行报文解析,并将属于同一IP报文的所有cell单元按照端口对应存储于报文缓存区。步骤240、采用端口轮询调度机制,根据端口cell单元数量以及调度控制指令调度cell单元。其中,采用端口轮询调度机制,根据端口cell单元数量以及调度控制指令调度cell单元可以包括:按照端口顺序轮询端口,根据当前轮询到的端口对应的端口cell单元数量以及调度控制指令,依次在报文缓存区中获取一个与当前轮询到的端口对应的cell单元作为当前cell单元,对其进行调度处理。可选的,根据当前轮询到的端口对应的端口cell单元数量在报文缓存区中获取一个与该端口对应的cell单元作为当前cell单元,具体可以包括:若当前轮询到的端口对应的端口cell单元数量不为0,则从当前端口对应的报文缓存区中获取一个cell单元作为当前cell单元,对其进行调度处理,否则,当前端口不进行cell单元调度,继续轮询下一个端口。其中,当一个cell单元按照端口对应存储于报文缓存区时,该端口对应的端口cell单元数量加1,当与一个端口对应的一个cell单元被调度出与该端口对应的报文缓存区时,该端口的端口cell单元数量减1。可选的,在采用端口轮询调度机制再次轮询至目标端口时,检测是否接收到与目标端口匹配的调度控制指令,若接收到与目标端口匹配的调度控制指令,则在报文缓存区中获取与目标端口对应的cell单元作为当前cell单元,并等到下一次调度到当前端口时对当前cell单元进行调度。若没有接收到与目标端口匹配的调度控制指令,则可以直接调度目标端口的当前待调度的cell单元,对其进行调度处理,不需要进行等待。其中,调度控制指令在当前调度的目标端口所对应的报文缓存区非空时生成,其表示前一cell单元尚未完成cell单元组装处理,目标端口的当前cell单元不能立刻被调度,需要等到下一轮调度到目标端口时,再对当前cell单元进行cell单元组装处理。步骤250、根据当前cell单元的类型,对采取对应的处理方式对当前cell单元进行cell单元组装处理。本实施例中,由于IP报文的非首cell单元中不包含该IP报文的三层头信息和四层头信息,因此,对同一IP报文的首cell单元与非首cell单元的处理方式不同。可选的,对当前cell单元进行调度时,首先判断当前cell单元是否是对应IP报文的首cell单元,如果当前cell单元是首cell单元,则根据报文格式对当前cell单元进行报文解析,将解析得到的IP报文的报文属性信息进行网络地址转换处理,得到新的IP报文属性信息,并将新的IP报文属性信息重新写入当前cell单元中,并根据当前cell单元构造组装报文结构;如果当前cell单元不是首cell单元,则直接在与当前cell单元匹配的组装报文结构的尾部加入当前cell单元。可选的,将解析得到的IP报文的报文属性信息进行网络地址转换处理,得到新的IP报文属性信息,并将新的IP报文属性信息重新写入当前cell单元,可以具体包括:将解析得到的IP报文属性信息与网络地址转换表进行匹配,若匹配成功,则获取与IP报文属性信息对应的转换IP报文属性信息,并重新写入当前cell单元中;若匹配失败,则将当前cell单元中的以太网类型参数的值设置为目标值,并将当前cell单元中的报文数据返回给网络交换芯片,网络交换芯片在确认当前接收的报文网络地址转换失败后,将当前cell单元中的报文上报给CPU,由CPU重新建立网络地址转换表并进行更新,从而使得当前cell单元中的报文能够成功进行网络地址转换。其中,转换IP报文属性信息可以包括:新的IP信息、新的TCPUDP端口信息、新的IP校验和与新的TCPUDP校验和。可选的,以太网类型参数中的目标值可以设为0,用于通知与FPGA通过以太网接口相连的网络交换芯片网络地址转换表中不存在与当前cell单元对应的表项,需要网络交换芯片在FPGA的网络地址转换表中添加与当前cell单元的IP报文属性信息对应的网络地址转换表项。图2c是本发明实施例的方法所适用的FPGA的具体功能结构图,具体的,如图2c所示:报文切分cell模块分别从4个以太网接口接收IP报文数据data0、data1、data2、data3,将接收的4路IP报文数据按照以太网端口顺序分别切分为多个定长的cell单元,并将切分的cell单元发送给报文头解析模块1。报文头解析模块1在接收到报文切分cell模块发送的当前端口对应的IP报文切分的cell单元后,对接收的首cell单元进行报文解析,得到当前端口对应的IP报文的三层头信息以及四层头信息,并将得到的IP报文的头信息以及对应的cell单元发送给报文缓存管理模块进行缓存。报文缓存管理模块在接收到报文头解析模块1发送的当前端口对应的IP报文的头信息以及对应的cell单元后,找到首cell单元在当前端口的cell指针链表中的存储位置,将该首cell单元存入报文缓存区域的所述存储位置,同时,将当前端口所对应的端口cell单元数量初始化为1。在该首cell单元存储于对应端口的报文缓存区域后,将与该首cell单元属于同一IP报文的其他cell单元依次通过从空闲指针链表获取空闲指针,串联到该首cell单元所在的cell单元指针链表后面,同时,每存储一个非首cell单元就将当前端口所对应的端口cell单元数量自增1。在完成对当前端口对应的IP报文数据的存储后,将当前端口所对应的端口cell单元数量存储到控制信息存储区。在当前端口所对应的IP报文的所有cell单元都存储到报文缓存区域后,一方面,报文切分cell模块按照端口顺序继续对下一端口对应的IP报文数据进行cell单元切分,另一方面,当前端口所对应的IP报文的cell单元开始参与cell单元调度。报文缓存管理模块按照端口顺序获取一个端口作为目标端口,判断目标端口所对应的端口cell单元数量是否为0,若目标端口所对应的端口cell单元数量为0,说明目标端口对应的报文缓存区中没有可以调度的cell单元,则目标端口不进行cell单元调度,继续选择下一个端口作为目标端口;若目标端口所对应的端口cell单元数量大于0,说明目标端口对应的报文缓存区中存在能够被调度的cell单元,此时,检测是否接收到与目标端口匹配的调度控制指令,若接收到与目标端口匹配的调度控制指令,则在报文缓存区中获取与目标端口对应的cell单元作为当前cell单元,并等到下一次调度到目标端口时对当前cell单元进行调度。若没有接收到与目标端口匹配的调度控制指令,则直接调度目标端口的当前待调度的cell单元,同时,当报文缓存管理模块从报文缓存区中调度一个cell单元时,控制信息存储区中的目标端口所对应的端口cell单元数量减1。报文缓存管理模块判断当前cell单元是否是对应IP报文的首cell单元,如果当前cell单元是首cell单元,则将当前cell单元发送给报文头解析模块2,由报文头解析模块2对当前cell单元进行报文解析,得到IP报文的报文头信息,并将当前cell单元与解析得到的IP报文的报文头信息一起发送给网络地址转换表查找模块,网络地址转换表查找模块将解析得到的IP报文头信息与网络地址转换表进行匹配,若匹配成功,则获取与IP报文头信息对应的转换IP报文头信息,并将转换IP报文头信息与当前cell单元一并发送给首cell编辑模块,由首cell编辑模块将转换IP报文头信息重新写入当前cell单元中,并将修改后的当前cell单元发送给cell重组报文模块,cell重组报文模块根据当前cell单元构造组装报文结构;若解析得到的IP报文头信息与网络地址转换表匹配失败,则首cell编辑模块将当前cell单元中的以太网类型参数的值设置为目标值,并将当前cell单元中的报文数据返回给网络交换芯片,网络交换芯片在确认当前接收的报文网络地址转换失败后,将当前cell单元中的报文上报给CPU,由CPU重新建立网络地址转换表并进行更新,从而使得当前cell单元中的报文能够成功进行网络地址转换;若当前cell单元不是首cell单元,则报文缓存管理模块直接将当前cell单元发送给cell重组报文模块,cell重组报文模块在与当前cell单元匹配的组装报文结构的尾部加入当前cell单元。当与一个IP报文对应的全部cell单元被组装完成时,cell重组报文模块通过与IP报文对应的端口将IP报文进行转发。本发明实施例通过在FPGA中将接收的IP报文切分为多个cell单元,仅对包含IP属性信息的首cell单元进行报文解析、网络地址转换表匹配以及报文信息修改后,重新将该首cell单元与属于同一IP报文的其他cell单元进行组合后进行转发的方式,通过充分开发FPGA的硬件功能,解决了现有的多CPU处理技术对IP报文进行网络地址转换时处理速度慢、通用性差的问题,在降低实现成本的基础上,实现了提高处理速度和通用性的效果。实施例三图3为本发明实施例三提供的一种基于FPGA的IP报文网络地址转换装置的结构示意图,本实施例可适用于在FPGA中将接收的IP报文切分为多个cell,对首cell进行报文解析、网络地址转换表匹配以及报文信息修改,以对IP报文进行网络地址转换的情况。如图3所示,该网络地址转换装置,应用于FPGA中,包括:接收切分模块310,用于通过多个以太网端口并行接收多个IP报文,并将接收的各IP报文分别切分为多个cell单元,所述IP报文中的首cell单元中包括IP报文属性信息;解析存储模块320,用于对各首cell单元进行报文解析,得到与首cell单元对应的IP报文属性信息,并将首cell单元以及与首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中;调度处理模块330,用于采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,并根据当前cell单元的类型,采取对应的处理方式对当前cell单元进行cell单元组装处理;转发模块340,用于在确定与一个IP报文对应的全部cell单元被组装完成时,通过与IP报文对应的端口将IP报文进行转发。本发明实施例通过在FPGA中将接收的IP报文切分为多个cell单元,仅对包含IP属性信息的首cell单元进行报文解析、网络地址转换表匹配以及报文信息修改后,重新将该首cell单元与属于同一IP报文的其他cell单元进行组合后进行转发的方式,通过充分开发FPGA的硬件功能,解决了现有的多CPU处理技术对IP报文进行网络地址转换时处理速度慢、通用性差的问题,在降低实现成本的基础上,实现了提高处理速度和通用性的效果。在上述各实施例的基础上,还包括:参数确定模块,用于确认网络地址转换需要的带宽,根据带宽计算cell单元的位宽参数、FPGA的工作时钟频率参数以及报文缓存区。在上述各实施例的基础上,调度处理模块330可以包括调度单元、解析单元、转换修改单元以及重组单元;调度单元,用于根据端口cell单元数量轮询端口,若当前端口的端口cell单元数量不为0,则从当前端口调度一个cell单元,否则,当前端口不进行cell单元调度,继续轮询下一个端口;其中,当一个cell单元按照端口对应存储于报文缓存区时,该端口的端口cell单元数量加1,当端口的一个cell被调度出报文缓存区时,该端口的端口cell单元数量减1;解析单元,用于如果当前cell单元为首cell单元,对当前cell单元进行报文解析,得到与当前cell单元对应的IP报文属性信息;转换修改单元,用于将解析得到的IP报文属性信息与网络地址转换表进行匹配,若匹配成功,则根据匹配结果,获取与IP报文属性信息获取对应的转换IP报文属性信息写入当前cell单元中;若匹配失败,则将当前cell单元中的以太网类型参数的值设置为目标值,并将当前cell单元中的报文数据返回给网络交换芯片;其中,转换IP报文属性信息中包括:新的IP信息、新的TCPUDP端口信息、新的IP校验和与新的TCPUDP校验和;其中,以太网类型参数中的所述目标值用于通知与所述FPGA通过以太网接口相连的网络交换芯片在FPGA的网络地址转换表中添加与当前cell单元的IP报文属性信息对应的网络地址转换表项;重组单元,用于将同一IP报文对应的全部cell单元重组为完整的IP报文。本实施例提供的装置可适用于上述任意实施例提供的方法,具备相应的功能和有益效果。注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

权利要求:1.一种基于FPGA的IP报文网络地址转换方法,应用于可编程逻辑器件中,其特征在于,包括:通过多个以太网端口并行接收多个IP报文,并将接收的各所述IP报文分别切分为多个cell单元,所述IP报文中的首cell单元中包括IP报文属性信息;对各所述首cell单元进行报文解析,得到与所述首cell单元对应的IP报文属性信息,并将所述首cell单元以及与所述首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中;采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,并根据所述当前cell单元的类型,采取对应的处理方式对所述当前cell单元进行cell单元组装处理;在确定与一个IP报文对应的全部cell单元被组装完成时,通过与所述IP报文对应的端口将所述IP报文进行转发。2.根据权利要求1所述的方法,其特征在于,根据所述当前cell单元的类型,采取对应的处理方式对所述当前cell单元进行cell单元组装处理,包括:如果当前cell单元为首cell单元,则对所述当前cell单元进行报文解析,将解析得到的IP报文属性信息进行网络地址转换,得到新的IP报文属性信息重新写入所述当前cell单元,并根据所述当前cell单元构造组装报文结构;如果所述当前cell单元不为首cell单元,则在与所述当前cell单元匹配的组装报文结构的尾部加入所述当前cell单元。3.根据权利要求2所述的方法,其特征在于,采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,具体包括:在采用端口轮询调度机制确定轮询至目标端口时,检测是否接收到与所述目标端口匹配的调度控制指令;若是,则在所述报文缓存区中获取与所述目标端口对应的cell单元作为当前cell单元;其中,所述调度控制指令在当前调度的所述目标端口所对应的报文缓存区非空时生成。4.根据权利要求1-3任一项所述的方法,其特征在于,在将所述首cell单元以及与所述首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中之后,还包括:在确定与同一IP报文对应的cell单元全部缓存于所述报文缓存区之后,确定与该IP报文对应的cell单元参与端口轮询调度。5.根据权利要求2所述的方法,其特征在于,所述将解析得到的IP报文属性信息进行网络地址转换,得到新的IP报文属性信息重新写入所述当前cell单元,包括:将解析得到的所述IP报文属性信息与网络地址转换表进行匹配,若匹配成功,则根据匹配结果,获取与所述IP报文属性信息对应的转换IP报文属性信息写入所述当前cell单元中;其中,所述转换IP报文属性信息中包括:新的IP信息、新的TCPUDP端口信息、新的IP校验和与新的TCPUDP校验和;若匹配失败,则将所述当前cell单元中的以太网类型参数的值设置为目标值,并将当前cell单元中的报文数据返回给网络交换芯片;其中,所述以太网类型参数中的所述目标值用于通知与所述FPGA通过所述以太网接口相连的网络交换芯片在所述FPGA的网络地址转换表中添加与所述当前cell单元的IP报文属性信息对应的网络地址转换表项。6.根据权利要求1所述的方法,其特征在于,所述采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,包括:根据端口cell单元数量轮询端口,若当前端口的端口cell单元数量不为0,则从当前端口调度一个cell单元,否则,当前端口不进行cell单元调度,继续轮询下一个端口;其中,当一个cell单元按照端口对应存储于报文缓存区时,该端口的端口cell单元数量加1,当端口的一个cell被调度出报文缓存区时,该端口的端口cell单元数量减1。7.根据权利要求1所述的方法,其特征在于,在通过多个以太网端口并行接收多个IP报文之前,还包括:确认网络地址转换的期望带宽,根据所述期望带宽计算cell单元的位宽参数、FPGA的工作时钟频率参数以及报文缓存区;其中,所述报文缓存区包括FPGA内部RAM和外部DDR。8.根据权利要求1所述的方法,其特征在于,将所述首cell单元以及与所述首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中,包括:将所述首cell单元存入对应端口的报文缓存区域;与所述首cell单元属于同一IP报文的其他cell单元通过从空闲指针链表获取空闲指针,串联到对应端口的cell单元指针链表;其中,所述cell单元指针链表中的首个指针指向首cell单元在所述对应端口的报文缓存区域的存储位置。9.根据权利要求1所述的方法,其特征在于,所述将接收的各所述IP报文分别切分为多个cell单元,包括:按照端口顺序获取一个端口作为目标端口;将通过所述目标端口接收的一个IP报文切分为多个cell单元,并在检测到所述多个cell单元被全部存储在与所述目标端口对应的报文缓存区时,返回执行按照端口顺序获取一个端口作为目标端口的操作,直至满足结束处理条件。10.一种基于FPGA的IP报文网络地址转换装置,应用于可编程逻辑器件中,其特征在于,包括:接收切分模块,用于通过多个以太网端口并行接收多个IP报文,并将接收的各所述IP报文分别切分为多个cell单元,所述IP报文中的首cell单元中包括IP报文属性信息;解析存储模块,用于对各所述首cell单元进行报文解析,得到与所述首cell单元对应的IP报文属性信息,并将所述首cell单元以及与所述首cell单元属于同一IP报文的其他cell单元按照端口对应存储于报文缓存区中;调度处理模块,用于采用端口轮询调度机制,依次在报文缓存区中获取与一个端口对应的cell单元作为当前cell单元,并根据所述当前cell单元的类型,采取对应的处理方式对所述当前cell单元进行cell单元组装处理;转发模块,用于在确定与一个IP报文对应的全部cell单元被组装完成时,通过与所述IP报文对应的端口将所述IP报文进行转发。

百度查询: 北京物芯科技有限责任公司 一种基于FPGA的IP报文网络地址转换方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。