CN109618020A - 一种分片报文的网络地址转换方法及装置 - Google Patents
一种分片报文的网络地址转换方法及装置 Download PDFInfo
- Publication number
- CN109618020A CN109618020A CN201811594403.8A CN201811594403A CN109618020A CN 109618020 A CN109618020 A CN 109618020A CN 201811594403 A CN201811594403 A CN 201811594403A CN 109618020 A CN109618020 A CN 109618020A
- Authority
- CN
- China
- Prior art keywords
- message
- fragment message
- fragment
- target
- attribute information
- 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
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种分片报文的网络地址转换方法及装置。所述方法,应用于可编程逻辑器件中,包括:在接收到目标分片报文时,提取目标分片报文的报文属性信息;如果根据报文属性信息确定目标分片报文为目标报文的非首分片报文,则根据当前对目标报文的首分片报文的接收情况,确定匹配的处理策略对目标分片报文进行网络地址转换处理;在确定完成对目标分片报文的网络地址转换处理后,对转换后的目标分片报文进行排序转发。本发明实施例的技术方案,通过FPGA对分片报文进行网络地址转换处理,提高了处理速度和通用性。
Description
技术领域
本发明实施例涉及网络通信技术领域,尤其涉及一种分片报文的网络地址转换方法及装置。
背景技术
随着通信技术的不断发展,计算机的使用数量迅速增加,出现了IP地址(InternetProtocol Address,互联网协议地址)空间衰竭的问题。网络地址转换技术通过使用少量的公有IP地址代表较多的私有IP地址的方式,有助于减缓可用IP地址空间的衰竭。
当对分片报文进行网络地址转换时,由于非首分片报文只包含三层IP信息而未包含四层端口信息,因此需要对首分片报文和非首分片报文分别进行网络地址转换。目前的处理方式主要是:通过查找网络地址转换表对首分片报文进行网络地址转换,根据该首分片报文的转换信息,对与该首分片报文匹配的非首分片报文进行网络地址转换,这种方案的缺点是,如果非首分片报文先于首分片报文到来,就会选择丢弃非首分片报文。另一种是采用专用网络处理器(Network Processor,NP)和CPU(Central Processing Unit,中央处理器)主机的方式,先缓存非首分片报文,等待首分片报文完成网络地址转换后,再对非首分片报文进行网络地址转换处理,这种方式的缺点是需要专用的网络处理器。对于不包含专用网络处理器的设备来说,通常使用多核CPU来实现报文的网络地址转换,但是这种方案需要处理大量的指令,不仅处理速度上较慢,而且会使得整个***处理较为复杂。
发明内容
本发明提供一种分片报文的网络地址转换方法及装置,以通过可编程逻辑器件FPGA(Field-Programmable Gate Array,现场可编程门阵列)实现快速、有效地对分片报文进行网络地址转换。
第一方面,本发明实施例提供了一种分片报文的网络地址转换方法,应用于可编程逻辑器件中,包括:
在接收到目标分片报文时,提取所述目标分片报文的报文属性信息;
如果根据所述报文属性信息确定所述目标分片报文为目标报文的非首分片报文,则根据当前对所述目标报文的首分片报文的接收情况,确定匹配的处理策略对所述目标分片报文进行网络地址转换处理;
在确定完成对所述目标分片报文的网络地址转换处理后,对转换后的所述目标分片报文进行排序转发。
可选的,根据当前对所述目标报文的首分片报文的接收情况,确定匹配的处理策略对所述目标分片报文进行网络地址转换处理,包括:
检测当前是否已经成功接收所述首分片报文;
若是,则根据与所述首分片报文对应的转换报文属性信息,直接对所述目标分片报文进行网络地址转换处理;
若否,则将所述目标分片报文缓存于与所述目标报文对应的报文缓存区中,并获取所述目标分片报文的存储位置信息;
重复执行在确定满足重新检测条件时,检测是否已经成功接收所述首分片报文,直至确定已经成功接收所述首分片报文;
根据所述存储位置信息,从所述报文缓存区中获取所述目标分片报文,并根据与所述首分片报文对应的转换报文属性信息,对获取的所述目标分片报文进行网络地址转换处理。
可选的,所述检测当前是否已经成功接收所述首分片报文,包括:
检测与所述目标报文对应的报文重组信息表中,是否存储与所述首分片报文对应的转换报文属性信息;
若是,则确定已经成功接收所述首分片报文;否则,确定未成功接收所述首分片报文。
可选的,在提取所述目标分片报文的报文属性信息之后,还包括:
如果根据所述报文属性信息确定所述目标分片报文为目标报文的首分片报文,则根据所述首分片报文的报文属性信息,确定与所述首分片报文对应的转换报文属性信息;
将所述转换报文属性信息存储于所述报文重组信息表中。
可选的,在将所述目标分片报文缓存于与所述目标报文对应的报文缓存区中,并获取所述目标分片报文的存储位置信息之后,还包括:
将所述目标分片报文的存储位置信息存储于所述报文重组信息表中。
可选的,在提取所述目标分片报文的报文属性信息之后,还包括:
如果根据所述报文属性信息确定所述目标分片报文为目标报文的尾分片报文,则根据所述尾分片报文的报文属性信息,确定与所述目标报文对应的报文总长度;
将所述报文总长度存储于所述接收状态信息表中,并根据所述尾分片报文的分片报文长度更新所述接收状态信息表中的已接收分片报文长度。
可选的,在所述确定匹配的处理策略对所述目标分片报文进行网络地址转换处理之后,还包括:
根据所述目标分片报文的报文属性信息,确定所述目标分片报文的分片报文长度,并根据所述分片报文长度,更新所述接收状态信息表中的所述已接收分片报文长度;
如果确定更新后的所述已接收分片报文长度与所述报文总长度相匹配,则确定所有分片报文接收完毕。
可选的,在提取所述目标分片报文的报文属性信息之后,还包括:
根据所述目标分片报文的报文属性信息,查找是否存储与所述目标报文对应的哈希表和特征信息存储表;
若否,则确定所述目标分片报文为所述目标报文的首个接收分片,并申请与所述目标报文对应的报文缓存区;
根据所述目标分片报文的报文属性信息,建立与所述目标报文对应的哈希表和特征信息存储表。
可选的,在接收到目标分片报文时,提取所述目标分片报文的报文属性信息,包括:
将所述目标分片报文切分为多个cell单元,对首cell单元进行报文解析,得到所述目标分片报文的报文属性信息;
其中,所述报文属性信息至少包括:所述目标分片报文的长度、源IP信息、目的IP信息和ID信息。
第二方面,本发明实施例还提供了一种分片报文的网络地址转换装置,应用于可编程逻辑器件中,包括:
报文信息提取模块,用于在接收到目标分片报文时,提取所述目标分片报文的报文属性信息;
分片报文处理模块,用于如果根据所述报文属性信息确定所述目标分片报文为目标报文的非首分片报文,则根据当前对所述目标报文的首分片报文的接收情况,确定匹配的处理策略对所述目标分片报文进行网络地址转换处理;
分片报文排序转发模块,用于在确定完成对所述目标分片报文的网络地址转换处理后,对转换后的所述目标分片报文进行排序转发。
本发明实施例通过在可编程逻辑器件中,对目标报文的首分片报文直接进行网络地址转换处理,并根据当前对首分片报文的接收情况,确定匹配的处理策略对目标报文的非首分片报文进行网络地址转换处理,并对转换后的分片报文进行排序转发,通过充分开发可编程逻辑器件的硬件功能,解决了现有的多CPU处理技术对分片报文进行网络地址转换时处理速度慢、通用性差的问题,在降低实现成本的基础上,实现了提高处理速度和通用性的效果。
附图说明
图1本发明实施例一提供的一种分片报文的网络地址转换方法的流程图;
图2a是本发明实施例二提供的一种分片报文的网络地址转换方法的流程图;
图2b是本发明实施例的方法所适用的分片报文的整体处理流程图;
图2c是本发明实施例的方法所适用的首分片报文的处理流程图;
图2d是本发明实施例的方法所适用的FPGA的具体功能结构图;
图3是本发明实施例三提供的一种分片报文的网络地址转换装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种分片报文的网络地址转换方法的流程图,本实施例可适用于通过可编程逻辑器件对分片报文进行网络地址转换的情况,该方法可以由分片报文的网络地址转换装置来执行,该装置可以由硬件的方式实现,并一般可以应用于FPGA(Field-Programmable Gate Array,现场可编程门阵列)中。具体的,参考图1,该方法可以包括如下步骤:
步骤110、在接收到目标分片报文时,提取目标分片报文的报文属性信息。
可选的,本发明实施例中的可编程逻辑器件可以包括:现场可编程门阵列FPGA和EPLD(可擦除的可编程逻辑器件,Erase Programmable LogicDevice)等。
在本发明实施例中,将待进行网络地址转换处理的报文当作目标报文,因此,目标分片报文即为当前接收的与目标报文对应的分片报文。可选的,在接收到目标分片报文后,需要通过报文解析提取目标分片报文的报文属性信息,以利用报文属性信息匹配与目标报文对应的其他分片报文,从而能够根据目标报文的首分片报文实现对目标报文的网络地址转换处理。
其中,目标分片报文的报文属性信息至少可以包括:目标分片报文长度、源IP信息、目的IP信息和ID信息。
可选的,在提取目标分片报文的报文属性信息之后,还包括:根据目标分片报文的报文属性信息,查找是否存储与目标报文对应的哈希表和特征信息存储表;若没有找到,则确定目标分片报文为目标报文的首个接收分片,需要申请与目标报文对应的报文缓存区,用于缓存目标报文的分片报文;同时,还需要根据目标分片报文的报文属性信息,建立与目标报文对应的哈希表和特征信息存储表,以用来匹配后续接收的分片报文中与目标报文对应的分片报文。
可选的,建立与目标报文对应的哈希表和特征信息存储表可以包括:获取目标分片报文的源IP信息与ID信息,根据哈希函数对该源IP信息与ID信息进行哈希计算得到哈希值,以哈希值为存储地址将源IP信息与ID信息存入对应的存储空间,建立能够快速找到源IP信息与ID信息的哈希表;若不同的源IP信息与ID信息经过哈希计算得到了相同的哈希值,则说明两组源IP信息与ID信息产生了冲突,因此需要为该哈希值建立一个哈希桶来解决哈希冲突,即通过为每个哈希值建立一个冲突表使得同一存储空间可以存储6组哈希值相同的源IP信息与ID信息;如果哈希桶也没有空间存储有冲突的IP信息与ID信息,则将当前冲突的IP信息与ID信息存入由8组寄存器组成的CAM(内容可寻址存储器,Coment-Addressable Memory)。所述哈希值相同的源IP信息与ID信息对应的多个记录组成了特征信息存储表,即完整的源IP信息和ID信息存储表,解决了哈希冲突。步骤120、如果根据报文属性信息确定目标分片报文为目标报文的非首分片报文,则根据当前对目标报文的首分片报文的接收情况,确定匹配的处理策略对目标分片报文进行网络地址转换处理。
由于目标报文的非首分片报文中仅包含目标分片报文长度、源IP信息、目的IP信息和ID信息等三层头信息,不包含包括TCP和UDP端口信息在内的四层头信息,因此,非首分片报文不能直接进行网络地址转换,需要根据目标报文中包含端口信息的首分片报文的网络地址转换结果间接进行网络地址转换。
在本发明实施例中,在提取目标分片报文的报文属性信息之后,根据报文属性信息判断目标分片报文是首分片报文还是非首分片报文,若确定目标分片报文是首分片报文,则直接对首分片报文进行网络地址转换处理,得到转换报文属性信息;若确定目标分片报文是非首分片报文,则根据当前对目标报文的首分片报文的接收情况,确定匹配的处理策略对目标分片报文进行网络地址转换处理。
可选的,根据当前对目标报文的首分片报文的接收情况,确定匹配的处理策略对目标分片报文进行网络地址转换处理,包括:检测当前是否已经成功接收首分片报文;若是,则根据与首分片报文对应的转换报文属性信息,直接对目标分片报文进行网络地址转换处理;若否,则将目标分片报文缓存于与目标报文对应的报文缓存区中,并获取目标分片报文的存储位置信息;重复执行在确定满足重新检测条件时,检测是否已经成功接收首分片报文,直至确定已经成功接收首分片报文,此时,根据目标分片报文的存储位置信息,从报文缓存区中获取目标分片报文,并根据与首分片报文对应的转换报文属性信息,对获取的目标分片报文进行网络地址转换处理。
可选的,检测当前是否已经成功接收首分片报文,可以包括:检测与目标报文对应的报文重组信息表中,是否存储与首分片报文对应的转换报文属性信息;若是,则确定已经成功接收首分片报文;否则,确定未成功接收首分片报文。
可选的,如果根据报文属性信息确定目标分片报文为目标报文的首分片报文,则根据首分片报文的报文属性信息,通过查询网络地址转换表,确定与首分片报文对应的转换报文属性信息,并将转换报文属性信息存储于报文重组信息表中,以使得非首分片报文查询报文重组信息表获得转换报文属性信息,并根据转换报文属性信息进行网络地址转换。
其中,转换报文属性信息可以包括:新的IP信息、新的TCP(Transmission ControlProtocol,传输控制协议)/UDP(User Datagram Protocol,用户数据报协议)端口信息、新的IP校验和与新的TCP/UDP校验和。
可选的,在将目标分片报文缓存于与目标报文对应的报文缓存区中,并获取目标分片报文的存储位置信息之后,还包括:将目标分片报文的存储位置信息存储于报文重组信息表中。由于目标分片报文以链表的形式存储于报文缓存区中,因此,存储位置信息实际是指目标分片报文的存储链表的头尾指针。将该存储位置信息存储于报文重组信息表中是为了,在首分片报文的转换报文属性信息返回报文重组信息表中后,能够根据存储位置信息找到目标分片报文的存储位置,从而快速从报文缓存区中取出目标分片报文,进行网络地址转换处理。
可选的,在提取目标分片报文的报文属性信息之后,还包括:如果根据报文属性信息确定目标分片报文为目标报文的尾分片报文,则根据尾分片报文的报文属性信息,确定与目标报文对应的报文总长度,并将报文总长度存储于接收状态信息表中,同时,根据尾分片报文的分片报文长度更新接收状态信息表中的已接收分片报文长度。其中,FPGA每接收到一个分片报文,就将该分片报文的报文长度叠加到接收状态信息表中的已接收分片报文长度上,从而实现对已接收分片报文长度的更新,然后通过将已接收分片报文长度与报文总长度进行比对,判断是否已经对所有分片报文接收完整。
可选的,在提取目标分片报文的报文属性信息之后,如果根据报文属性信息确定目标分片报文为目标报文的非尾分片报文,则直接根据目标分片报文的报文属性信息,确定目标分片报文的分片报文长度,并根据分片报文长度,更新接收状态信息表中的已接收分片报文长度,通过将已接收分片报文长度与报文总长度进行比对,判断是否已经对所有分片报文接收完整。其中,若此时接收状态信息表中不存在报文总长度,则说明此时尚未接收到目标报文的尾分片报文,即并没有将所有分片报文接收完整。
步骤130、在确定完成对目标分片报文的网络地址转换处理后,对转换后的目标分片报文进行排序转发。
可选的,在目标分片报文完成网络地址转换处理后,对转换后的目标分片报文进行排序转发,即将转换后的目标分片报文按照在原报文中的位置进行排序,按照排序次序依次进行转发。
例如,若在原报文中位于最后一位的尾分片报文是接收的第一个分片报文,后续接收的分片报文在原报文中位于中间位置,而在原报文中位于第一位的首分片报文是接收的最后一个分片报文,则在首分片报文完成网络地址转换后,将首分片报文添加到总链表中,将尾分片报文添加到总链表中首分片报文的后面,将中间分片报文根据在原报文中的位置***总链表的对应位置上,完成对分片报文的排序,并根据总链表中的分片报文的排列顺序,从首分片报文开始依次对各个分片报文进行转发。
可选的,在对比接收的报文长度与完整报文的报文长度,判断全部分片报文是否已经接收完整之后,还包括:若全部分片报文接收完整且完成网络地址转换,则释放所述哈希表、特征信息存储表以及接收状态信息表;若全部分片报文未接收完整,且接收相邻两个分片报文的时间间隔大于预设时间,则删除当前分片报文的存储链表,释放所述哈希表、特征信息存储表以及接收状态信息表中所述分片报文对应的信息,从而有效的防止内存被长期占用。
本发明实施例通过在FPGA中,对目标报文的首分片报文直接进行网络地址转换处理,并根据当前对首分片报文的接收情况,确定匹配的处理策略对目标报文的非首分片报文进行网络地址转换处理,并对转换后的分片报文进行排序转发,通过充分开发FPGA的硬件功能,解决了现有的多CPU处理技术对分片报文进行网络地址转换时处理速度慢、通用性差的问题,在降低实现成本的基础上,实现了提高处理速度和通用性的效果。
实施例二
图2a是本发明实施例二提供的一种分片报文的网络地址转换方法的流程图,本实施例可以与上述一个或者多个实施例中各个可选方案结合。具体的,参考图2a,该方法可以包括如下步骤:
步骤210、接收分片报文,提取当前接收的分片报文的报文属性信息,并更新接收状态信息表。
可选的,当接收到分片报文后,FPGA将当前接收的分片报文切分成多个cell单元。在本发明实施例中,将当前接收的分片报文切分成多个cell单元可以包括:根据网络地址转换所需要的实际带宽以及FPGA的工作时钟频率确定每个cell单元的大小,从当前接收的分片报文的头部开始,将当前接收的分片报文切分为多个固定大小的cell单元,其中,每个cell单元的大小至少应该可以包含分片报文所对应的完整报文的三层头信息以及四层头信息。
其中,当前接收的分片报文的首cell单元中包括该分片报文的报文属性信息。本发明实施例中,FPGA将当前接收的分片报文分别切分为多个cell单元后,根据报文格式对首cell单元进行报文解析,得到首cell单元包含的分片报文的报文属性信息。
可选的,在获取到当前接收的分片报文的报文属性信息之后,根据报文属性信息更新接收状态信息表中的已接收分片报文长度,判断当前接收的分片报文是否是最后一个分片报文,以确定接收完整所有的分片报文。
步骤220、根据报文属性信息,判断当前接收的分片报文是否为首分片报文,若是,则执行步骤230;否则,执行步骤240。
可选的,由于首分片报文与非首分片进行网络地址转换的方式不同,因此,需要根据报文解析得到当前接收的分片报文的报文属性信息,对当前接收的分片报文进行区分,确定当前接收的分片报文是首分片报文,还是非首分片报文。若是首分片报文,则执行步骤230,按照首分片报文的处理方式进行网络地址转换;若是非首分片报文,则执行步骤240,按照非首分片报文的处理方式进行网络地址转换。
步骤230、对当前接收的分片报文进行网络地址转换处理,得到转换报文属性信息,并存储到报文重组信息表中。
可选的,如果确定当前接收的分片报文为首分片报文,则通过查询网络地址转换表,确定与首分片报文对应的转换报文属性信息,并将转换报文属性信息存储于报文重组信息表中,以使得非首分片报文查询报文重组信息表获得转换报文属性信息,并根据转换报文属性信息进行网络地址转换。
步骤240、判断报文重组信息表中是否存在首分片报文的转换报文属性信息,若存在,则执行步骤250;否则,执行步骤260。
可选的,由于非首分片报文需要根据首分片报文的网络地址转换结果,间接进行网络地址转换,因此,在确定当前接收的分片报文是非首分片报文之后,需要查询报文重组信息表,判断报文重组信息表中是否存在首分片报文的转换报文属性信息,若存在,则执行步骤250,对非首分片报文进行网络地址转换;若不存在,则执行步骤260。
步骤250、根据报文重组信息表中的转换报文属性信息,对当前接收的非首分片报文进行网络地址转换处理。
步骤260、将当前接收的非首分片报文存储到报文缓存区,并将存储地址存储到报文重组信息表中,等待根据首分片报文的转换报文属性信进行网络地址转换。
可选的,若报文重组信息表中不存在首分片报文的转换报文属性信息,则将当前接收的非首分片报文缓存于与当前接收的非首分片报文对应的报文缓存区中,并获取当前接收的非首分片报文的存储位置信息;重复执行在确定满足重新检测条件时,检测是否已经成功接收首分片报文,直至确定已经成功接收首分片报文,此时,根据当前接收的非首分片报文的存储位置信息,从报文缓存区中获取当前接收的非首分片报文,并根据与首分片报文对应的转换报文属性信息,对获取的当前接收的非首分片报文进行网络地址转换处理。
可选的,将当前接收的非首分片报文缓存于与当前接收的非首分片报文对应的报文缓存区中,具体包括:根据与当前接收的非首分片报文的首cell单元对应的IP报文的报文属性信息进行哈希计算,得到哈希值,利用得到的哈希值查找哈希表,找到该首cell单元在报文缓存区中的对应端口的存储位置,将首cell单元存入对应端口的cell指针链表所对应的报文缓存区域;在首cell单元存储于报文缓存区域后,与该首cell单元属于同一IP报文的其他cell单元通过从空闲指针链表申请空闲指针,并将cell单元报文存入该空闲指针串联到对应端口的cell单元指针链表后面,实现对当前接收的非首分片报文的存储。
步骤270、对转换后的分片报文进行排序转发。
本发明实施例通过在FPGA中,对目标报文的首分片报文直接进行网络地址转换处理,并根据当前对首分片报文的接收情况,确定匹配的处理策略对目标报文的非首分片报文进行网络地址转换处理,并对转换后的分片报文进行排序转发,通过充分开发FPGA的硬件功能,解决了现有的多CPU处理技术对分片报文进行网络地址转换时处理速度慢、通用性差的问题,在降低实现成本的基础上,实现了提高处理速度和通用性的效果。
在上述技术方案的基础上,对当前接收的分片报文的整体处理流程,具体如图2b所示,FPGA在接收分片报文之后,将当前接收的分片报文切分成多个cell单元,并分为首cell单元、中间cell单元和尾cell单元,根据上述cell单元的分类对不同类型的cell单元进行分别处理。具体的,首cell单元根据提取的源IP信息和ID信息进行哈希运算,得到哈希值,根据所述哈希值进行哈希查找,如果查找失败,则说明当前分片报文是其所对应的完整报文的第一个报文分片,因此需要申请新的地址空间,建立与当前分片报文对应的哈希表与完整的源IP信息和ID信息存储表;若查找成功,则根据查表结果将首cell单元链接在当前接收的分片报文的存储链表上;同时,首cell单元需要根据携带的当前分片报文的报文长度更新接收状态信息表的表项信息,例如,已接收报文长度。中间cell单元只需要挂在分片报文的存储链表上。尾cell单元需要更新接收状态信息表中的分片报文接收完成标志等,并挂在分片报文的存储链表上。如果当前接收的分片报文为首分片报文,则触发后续分片报文和非分片报文链接到报文的整体链表进行排序,如果当前接收的分片报文为非首分片报文,则对当前接收的分片报文进行存储。
在上述技术方案的基础上,对当前接收的首分片报文的处理流程,具体如图2c所示,FPGA获得分片报文的cell单元后,对分片报文的首cell单元进行报文解析,得到分片报文的报文属性信息,根据报文属性信息判断分片报文是否为首分片报文。若是首分片报文,则判断当前cell单元是否为首cell单元;若是首cell单元,则进行哈希查找;如果查找成功,则更新接收状态信息表的表项信息,例如,已接收的报文长度,并将首cell单元链接在分片报文的存储链表上,以及将分片报文的存储链表链接到入到外部总的链表进行排序;首分片报文如果返回网络地址转换结果,还会更新TCP/UDP端口信息,将转换得到的转换报文属性信息存储到报文重组信息表;如果查找失败,则查看哈希表的冲突空间是否未占满,如果哈希表的冲突空间已经占满,则需要申请新的地址空间,如果能够申请到地址空间或者哈希表的冲突空间未满,则申请空白指针存放分片报文的地址,并存入报文重组信息表中;如果申请不到地址空间或者哈希表的冲突空间全部占满,则需要丢弃报文。
对于首分片报文的中间cell单元,则直接将中间cell单元链接在分片报文的存储链表上。对于首分片报文的尾cell单元,需要通过比较已接收的报文长度和总报文长度,来判断全部分片报文是否已经接收完毕,如果接收完毕,则证明首分片报文最后到达,等待网络地址转换结果返回后,所有非首分片报文的存储链表一起链接到总的链表上进行排序转发。
对于查找失败的首分片报文,需要在给报文重组信息表分配地址后,更新报文重组信息表中的首分片报文到达信息,并在网络地址转换结果返回后,更新报文重组信息表中的网络地址转换完成标志和TCP/UDP端口信息,使得后续接收的分片报文可以直接携带报文重组信息表中的TCP/UDP端口信息链接到总链表,无需进行分片报文的存储操作。
在上述技术方案的基础上,对当前接收的中间分片报文的处理流程,具体如下所述:中间分片报文的首cell到来后,需要进行哈希查找。如果查找成功,说明已经有相同源IP信息和ID信息的分片报文到来,则需要查看首分片报文的网络地址转换结果是否已经返回,如果返回则直接进行网络地址转换,并挂链到外部总的链表进行排序;如果查找失败,则需要申请新的地址空间,并在报文重组信息表中更新分片报文存储链表的头指针和尾指针及非空标志。其他处理与首分片报文类似。
在上述技术方案的基础上,对当前接收的尾分片报文的处理流程,具体如下所述:对于报文的尾分片报文的首cell单元,需要根据尾分片报文的报文属性信息更新整个报文的总长度,用于和当前接收的报文长度对比,确定报文是否接收完整,如果全部的分片报文接收完整,并且网络地址转换结果返回,所有分片报文挂入总链表进行排序转发。其他处理与中间分片报文的处理类似。
在上述技术方案的基础上,图2d是本发明实施例的方法所适用的FPGA的具体功能结构图,具体的,如图2d所示:
报文解析模块主要识别分片报文,并提取所需的信息:例如报文长度、IP及ID信息等,并且将相应的信息传递给后续模块进行处理。
哈希查找模块与源IP+ID查找模块主要实现同一个报文不同分片之间的匹配,使得同一个报文的不同分片可以得到相同的存储空间用于存放重组信息等。
查找结果解析模块和分片报文状态信息更新模块主要根据查找的结果和报文携带的信息,进行报文重组信息表和接收状态信息表的维护。
表项添加和删除模块主要用于,在新的分片报文到来时,建立哈希表和完整IP+ID存储表,在分片报文完成网络地址转换后删除表项,同时进行分片报文的老化控制,以便快速释放内存空间。
实施例三
图3是本发明实施例三提供的一种分片报文的网络地址转换装置的结构示意图,本实施例可适用于通过FPGA对分片报文进行网络地址转换的情况,如图3所示,该分片报文的网络地址转换装置,应用于FPGA中,包括:
报文信息提取模块310,用于在接收到目标分片报文时,提取目标分片报文的报文属性信息;
分片报文处理模块320,用于如果根据报文属性信息确定目标分片报文为目标报文的非首分片报文,则根据当前对目标报文的首分片报文的接收情况,确定匹配的处理策略对目标分片报文进行网络地址转换处理;
分片报文排序转发模块330,用于在确定完成对目标分片报文的网络地址转换处理后,对转换后的目标分片报文进行排序。
本发明实施例通过在FPGA中,对目标报文的首分片报文直接进行网络地址转换处理,并根据当前对首分片报文的接收情况,确定匹配的处理策略对目标报文的非首分片报文进行网络地址转换处理,并对转换后的分片报文进行排序转发,通过充分开发FPGA的硬件功能,解决了现有的多CPU处理技术对分片报文进行网络地址转换时处理速度慢、通用性差的问题,在降低实现成本的基础上,实现了提高处理速度和通用性的效果。
在上述各实施例的基础上,分片报文处理模块320可以包括:检测单元和执行单元;
检测单元,用于检测当前是否已经成功接收首分片报文;
执行单元,用于若检测当前已经成功接收首分片报文,则根据与首分片报文对应的转换报文属性信息,直接对目标分片报文进行网络地址转换处理;或者若检测当前尚未成功接收首分片报文,则将目标分片报文缓存于与目标报文对应的报文缓存区中,并获取目标分片报文的存储位置信息;
检测单元,还用于在获取目标分片报文的存储位置信息之后,重复执行在确定满足重新检测条件时,检测是否已经成功接收首分片报文,直至确定已经成功接收首分片报文;
执行单元,还用于根据存储位置信息,从报文缓存区中获取目标分片报文,并根据与首分片报文对应的转换报文属性信息,对获取的目标分片报文进行网络地址转换处理。
检测单元,可以具体用于检测与目标报文对应的报文重组信息表中,是否存储与首分片报文对应的转换报文属性信息;若是,则确定已经成功接收首分片报文;否则,确定未成功接收首分片报文。
在上述各实施例的基础上,报文信息提取模块310可以包括:转换信息确定单元,用于在提取目标分片报文的报文属性信息之后,如果根据报文属性信息确定目标分片报文为目标报文的首分片报文,则根据首分片报文的报文属性信息,确定与首分片报文对应的转换报文属性信息;转换信息存储单元,用于将转换报文属性信息存储于报文重组信息表中。
在上述各实施例的基础上,分片报文处理模块320还可以包括:位置信息存储单元,用于在将目标分片报文缓存于与目标报文对应的报文缓存区中,并获取目标分片报文的存储位置信息之后,将目标分片报文的存储位置信息存储于报文重组信息表中。
在上述各实施例的基础上,报文信息提取模块310还可以包括:报文总长度确认单元,用于在提取目标分片报文的报文属性信息之后,如果根据报文属性信息确定目标分片报文为目标报文的尾分片报文,则根据尾分片报文的报文属性信息,确定与目标报文对应的报文总长度;接收报文长度更新单元,用于将报文总长度存储于接收状态信息表中,并根据尾分片报文的分片报文长度更新接收状态信息表中的已接收分片报文长度。
在上述各实施例的基础上,接收报文长度更新单元还可以用于在确定匹配的处理策略对目标分片报文进行网络地址转换处理之后,根据目标分片报文的报文属性信息,确定目标分片报文的分片报文长度,并根据分片报文长度,更新接收状态信息表中的已接收分片报文长度;报文接收确认单元,用于如果确定更新后的已接收分片报文长度与报文总长度相匹配,则确定所有分片报文接收完毕。
在上述各实施例的基础上,报文信息提取模块310还可以包括:查表单元,用于在提取目标分片报文的报文属性信息之后,根据目标分片报文的报文属性信息,查找是否存储与目标报文对应的哈希表和特征信息存储表;若否,则确定目标分片报文为目标报文的首个接收分片,并申请与目标报文对应的报文缓存区;根据目标分片报文的报文属性信息,建立与目标报文对应的哈希表和特征信息存储表。
在上述各实施例的基础上,报文信息提取模块310还可以包括:报文解析解析单元,用于将目标分片报文切分为多个cell单元,对首cell单元进行报文解析,得到目标分片报文的报文属性信息;其中,报文属性信息至少包括:目标分片报文的长度、源IP信息、目的IP信息和ID信息。
本实施例提供的装置可适用于上述任意实施例提供的方法,具备相应的功能和有益效果。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种分片报文的网络地址转换方法,应用于可编程逻辑器件中,其特征在于,包括:
在接收到目标分片报文时,提取所述目标分片报文的报文属性信息;
如果根据所述报文属性信息确定所述目标分片报文为目标报文的非首分片报文,则根据当前对所述目标报文的首分片报文的接收情况,确定匹配的处理策略对所述目标分片报文进行网络地址转换处理;
在确定完成对所述目标分片报文的网络地址转换处理后,对转换后的所述目标分片报文进行排序转发。
2.根据权利要求1所述的方法,其特征在于,根据当前对所述目标报文的首分片报文的接收情况,确定匹配的处理策略对所述目标分片报文进行网络地址转换处理,包括:
检测当前是否已经成功接收所述首分片报文;
若是,则根据与所述首分片报文对应的转换报文属性信息,直接对所述目标分片报文进行网络地址转换处理;
若否,则将所述目标分片报文缓存于与所述目标报文对应的报文缓存区中,并获取所述目标分片报文的存储位置信息;
重复执行在确定满足重新检测条件时,检测是否已经成功接收所述首分片报文,直至确定已经成功接收所述首分片报文;
根据所述存储位置信息,从所述报文缓存区中获取所述目标分片报文,并根据与所述首分片报文对应的转换报文属性信息,对获取的所述目标分片报文进行网络地址转换处理。
3.根据权利要求2所述的方法,其特征在于,所述检测当前是否已经成功接收所述首分片报文,包括:
检测与所述目标报文对应的报文重组信息表中,是否存储与所述首分片报文对应的转换报文属性信息;
若是,则确定已经成功接收所述首分片报文;否则,确定未成功接收所述首分片报文。
4.根据权利要求1所述的方法,其特征在于,在提取所述目标分片报文的报文属性信息之后,还包括:
如果根据所述报文属性信息确定所述目标分片报文为目标报文的首分片报文,则根据所述首分片报文的报文属性信息,确定与所述首分片报文对应的转换报文属性信息;
将所述转换报文属性信息存储于所述报文重组信息表中。
5.根据权利要求2所述的方法,其特征在于,在将所述目标分片报文缓存于与所述目标报文对应的报文缓存区中,并获取所述目标分片报文的存储位置信息之后,还包括:
将所述目标分片报文的存储位置信息存储于所述报文重组信息表中。
6.根据权利要求1所述的方法,其特征在于,在提取所述目标分片报文的报文属性信息之后,还包括:
如果根据所述报文属性信息确定所述目标分片报文为目标报文的尾分片报文,则根据所述尾分片报文的报文属性信息,确定与所述目标报文对应的报文总长度;
将所述报文总长度存储于所述接收状态信息表中,并根据所述尾分片报文的分片报文长度更新所述接收状态信息表中的已接收分片报文长度。
7.根据权利要求1所述的方法,其特征在于,在所述确定匹配的处理策略对所述目标分片报文进行网络地址转换处理之后,还包括:
根据所述目标分片报文的报文属性信息,确定所述目标分片报文的分片报文长度,并根据所述分片报文长度,更新所述接收状态信息表中的所述已接收分片报文长度;
如果确定更新后的所述已接收分片报文长度与所述报文总长度相匹配,则确定所有分片报文接收完毕。
8.根据权利要求2所述的方法,其特征在于,在提取所述目标分片报文的报文属性信息之后,还包括:
根据所述目标分片报文的报文属性信息,查找是否存储与所述目标报文对应的哈希表和特征信息存储表;
若否,则确定所述目标分片报文为所述目标报文的首个接收分片,并申请与所述目标报文对应的报文缓存区;
根据所述目标分片报文的报文属性信息,建立与所述目标报文对应的哈希表和特征信息存储表。
9.根据权利要求1所述的方法,其特征在于,在接收到目标分片报文时,提取所述目标分片报文的报文属性信息,包括:
将所述目标分片报文切分为多个cell单元,对首cell单元进行报文解析,得到所述目标分片报文的报文属性信息;
其中,所述报文属性信息至少包括:所述目标分片报文的长度、源IP信息、目的IP信息和ID信息。
10.一种分片报文的网络地址转换装置,应用于可编程逻辑器件中,其特征在于,包括:
报文信息提取模块,用于在接收到目标分片报文时,提取所述目标分片报文的报文属性信息;
分片报文处理模块,用于如果根据所述报文属性信息确定所述目标分片报文为目标报文的非首分片报文,则根据当前对所述目标报文的首分片报文的接收情况,确定匹配的处理策略对所述目标分片报文进行网络地址转换处理;
分片报文排序转发模块,用于在确定完成对所述目标分片报文的网络地址转换处理后,对转换后的所述目标分片报文进行排序转发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811594403.8A CN109618020B (zh) | 2018-12-25 | 2018-12-25 | 一种分片报文的网络地址转换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811594403.8A CN109618020B (zh) | 2018-12-25 | 2018-12-25 | 一种分片报文的网络地址转换方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109618020A true CN109618020A (zh) | 2019-04-12 |
CN109618020B CN109618020B (zh) | 2022-01-11 |
Family
ID=66012398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811594403.8A Active CN109618020B (zh) | 2018-12-25 | 2018-12-25 | 一种分片报文的网络地址转换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109618020B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110300074A (zh) * | 2019-06-06 | 2019-10-01 | 北京左江科技股份有限公司 | 一种ip报文分片重组方法 |
CN111432377A (zh) * | 2020-03-31 | 2020-07-17 | 北京东土军悦科技有限公司 | 一种列车负载均衡***、方法、列车***及基地*** |
CN111447110A (zh) * | 2020-03-24 | 2020-07-24 | 北京润科通用技术有限公司 | 一种数据监控方法及*** |
CN113411341A (zh) * | 2021-06-24 | 2021-09-17 | 成都卫士通信息产业股份有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN113542445A (zh) * | 2021-05-28 | 2021-10-22 | 新华三信息安全技术有限公司 | 一种地址转换方法、装置、设备及机器可读存储介质 |
CN114465694A (zh) * | 2022-01-07 | 2022-05-10 | 锐捷网络股份有限公司 | 报文传输方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1494274A (zh) * | 2002-10-31 | 2004-05-05 | ����ͨѶ�ɷ�����˾ | 基于网络处理器实现ip报文分片重组的方法 |
CN1585401A (zh) * | 2003-08-21 | 2005-02-23 | 华为技术有限公司 | 对分片报文进行网络地址转换的方法 |
CN101087296A (zh) * | 2006-06-08 | 2007-12-12 | 上海亿人通信终端有限公司 | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 |
CN101605105A (zh) * | 2009-07-14 | 2009-12-16 | 中兴通讯股份有限公司 | 一种对分片报文进行网络地址转换的方法及设备 |
CN104579948A (zh) * | 2013-10-29 | 2015-04-29 | 国家计算机网络与信息安全管理中心 | 一种报文分片处理方法及装置 |
CN105162901A (zh) * | 2015-09-30 | 2015-12-16 | 北京特立信电子技术股份有限公司 | 一种基于sopc的nat的实现方法及装置 |
US20160072767A1 (en) * | 2014-09-05 | 2016-03-10 | Alcatel-Lucent Canada Inc. | Efficient method of nat without reassemling ipv4 fragments |
-
2018
- 2018-12-25 CN CN201811594403.8A patent/CN109618020B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1494274A (zh) * | 2002-10-31 | 2004-05-05 | ����ͨѶ�ɷ�����˾ | 基于网络处理器实现ip报文分片重组的方法 |
CN1585401A (zh) * | 2003-08-21 | 2005-02-23 | 华为技术有限公司 | 对分片报文进行网络地址转换的方法 |
CN101087296A (zh) * | 2006-06-08 | 2007-12-12 | 上海亿人通信终端有限公司 | 利用网络处理器实现IPv4/IPv6网络协议转换的方法 |
CN101605105A (zh) * | 2009-07-14 | 2009-12-16 | 中兴通讯股份有限公司 | 一种对分片报文进行网络地址转换的方法及设备 |
CN104579948A (zh) * | 2013-10-29 | 2015-04-29 | 国家计算机网络与信息安全管理中心 | 一种报文分片处理方法及装置 |
US20160072767A1 (en) * | 2014-09-05 | 2016-03-10 | Alcatel-Lucent Canada Inc. | Efficient method of nat without reassemling ipv4 fragments |
CN105162901A (zh) * | 2015-09-30 | 2015-12-16 | 北京特立信电子技术股份有限公司 | 一种基于sopc的nat的实现方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110300074A (zh) * | 2019-06-06 | 2019-10-01 | 北京左江科技股份有限公司 | 一种ip报文分片重组方法 |
CN110300074B (zh) * | 2019-06-06 | 2021-08-06 | 北京左江科技股份有限公司 | 一种ip报文分片重组方法 |
CN111447110A (zh) * | 2020-03-24 | 2020-07-24 | 北京润科通用技术有限公司 | 一种数据监控方法及*** |
CN111447110B (zh) * | 2020-03-24 | 2023-03-10 | 北京润科通用技术有限公司 | 一种数据监控方法及*** |
CN111432377A (zh) * | 2020-03-31 | 2020-07-17 | 北京东土军悦科技有限公司 | 一种列车负载均衡***、方法、列车***及基地*** |
CN113542445A (zh) * | 2021-05-28 | 2021-10-22 | 新华三信息安全技术有限公司 | 一种地址转换方法、装置、设备及机器可读存储介质 |
CN113411341A (zh) * | 2021-06-24 | 2021-09-17 | 成都卫士通信息产业股份有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN114465694A (zh) * | 2022-01-07 | 2022-05-10 | 锐捷网络股份有限公司 | 报文传输方法及装置 |
CN114465694B (zh) * | 2022-01-07 | 2024-02-23 | 锐捷网络股份有限公司 | 报文传输方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109618020B (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109618020A (zh) | 一种分片报文的网络地址转换方法及装置 | |
US11811660B2 (en) | Flow classification apparatus, methods, and systems | |
US6771646B1 (en) | Associative cache structure for lookups and updates of flow records in a network monitor | |
US6651099B1 (en) | Method and apparatus for monitoring traffic in a network | |
US7299282B2 (en) | State processor for pattern matching in a network monitor device | |
CN104580027B (zh) | 一种OpenFlow报文转发方法及设备 | |
US6553002B1 (en) | Apparatus and method for routing data packets through a communications network | |
EP2530874B1 (en) | Method and apparatus for detecting network attacks using a flow based technique | |
CN114448891B (zh) | 流表同步方法、装置、设备和介质 | |
EP3282649A1 (en) | Data packet forwarding | |
US8599859B2 (en) | Iterative parsing and classification | |
JP2001509978A (ja) | スイッチング装置における高速可変長ベストマッチルックアップ | |
CN104104604A (zh) | 网络交换机设备中的准确匹配哈希查找数据库 | |
US6490279B1 (en) | Fast data base research and learning apparatus | |
CN110912826B (zh) | 利用acl扩充ipfix表项的方法及装置 | |
CN111131084A (zh) | 一种QoS感知的OpenFlow流表分级存储架构及应用 | |
CN110061921B (zh) | 一种云平台数据包分发方法及*** | |
CN103888449A (zh) | 一种报文重组方法和装置 | |
US9485179B2 (en) | Apparatus and method for scalable and flexible table search in a network switch | |
CN104253754B (zh) | 一种acl快速匹配的方法和设备 | |
US7735135B1 (en) | Hardware-based intrusion detection accelerator | |
US7661138B1 (en) | Finite state automaton compression | |
JP3837670B2 (ja) | データ中継装置、連想メモリデバイス、および連想メモリデバイス利用情報検索方法 | |
US9030950B2 (en) | Communication apparatus, processing method for the same, and computer-readable storage medium | |
WO2017132073A1 (en) | Signal matching for entity resolution |
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 |