CN111597142B - 一种基于fpga的网络安全加速卡及加速方法 - Google Patents
一种基于fpga的网络安全加速卡及加速方法 Download PDFInfo
- Publication number
- CN111597142B CN111597142B CN202010414091.9A CN202010414091A CN111597142B CN 111597142 B CN111597142 B CN 111597142B CN 202010414091 A CN202010414091 A CN 202010414091A CN 111597142 B CN111597142 B CN 111597142B
- Authority
- CN
- China
- Prior art keywords
- data packet
- packet
- fpga
- hash value
- 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.)
- Active
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 65
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012545 processing Methods 0.000 claims abstract description 62
- 239000000284 extract Substances 0.000 claims description 14
- 238000000605 extraction Methods 0.000 claims description 13
- 239000000872 buffer Substances 0.000 claims description 7
- 239000012634 fragment Substances 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 18
- 230000005540 biological transmission Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000011269 treatment regimen Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于数据传输技术领域,特别涉及一种基于FPGA的网络安全加速卡及加速方法。本发明提供一种新的基于FPGA的网络安全加速卡及加速方法,该基于FPGA的网络安全加速卡及加速方法采用是经典的五元组精确匹配的流转发方式来处理网络报文,可以对处理器进行网络处理的分流,使处理器能从繁重的工作中解放出来,处理一些必须它来做的事情,可以进一步提高数据的转发速率。
Description
技术领域
本发明属于数据传输技术领域,特别涉及一种基于FPGA的网络安全加速卡及加速方法。
背景技术
随着全球大数据以及人工智能技术的高速发展,对于网络性能越来越高,从原来的百兆、千兆的吞吐量迅速增长到现在的10G、25G、40G甚至100G、200G等等吞吐量。外部带宽很高,但同时对服务器的处理器处理能力带来了前所未有的挑战,单靠处理器来进行网络处理是无法完全满足需求的,网络性能问题甚至成了制约功能进一步丰富完善的瓶颈。
发明内容
为了解决现有技术中存在的问题,本发明提供一种新的基于FPGA的网络安全加速卡及加速方法。
本发明具体技术方案如下:
本发明提供一种基于FPGA的网络安全加速方法,包括如下步骤:
S1:接收处理器通过写入PCIe BAR寄存器的方式写入的首包的五元组信息、对应的Hash值以及转发规则,将并将五元组信息、对应的Hash值以及转发规则按照Hash值对应的地址写入到DDR内存中,所述转发规则包括安全策略、路由信息和处理策略;
S2:接收数据包,通过FIFO缓存所述数据包并提取所述数据包的五元组信息;
S3:将数据包的五元组信息进行Hash哈希运算得到五元组的Hash值;
S4:通过得到的Hash值作为地址访问对应的DDR内存,顺序读取哈希链表,比对存储在DDR内存中的五元组信息与接收到的是否相同,如果相同,则比对成功,在DDR内存中提取所述Hash值对应的转发规则转发通过FIFO缓存的数据包,如果不同,则读取哈希链表中所述Hash值的下一个记录,直到比对成功,如果所有的都不相同,则DDR内存中没有所述数据包对应的转发规则,将数据包作为新建五元组流的首包通过DMA的方式经过PCIe总线下传到主机的处理器。
一种基于FPGA的网络安全加速卡,包括如下部分:
信息写入模块,被配置为接收处理器通过写入PCIe BAR寄存器的方式写入的首包的五元组信息、对应的Hash值以及转发规则,将并将五元组信息、对应的Hash值以及转发规则按照Hash值对应的地址写入到DDR内存中,所述转发规则包括安全策略、路由信息和处理策略;
提取模块,被配置为接收数据包,通过FIFO缓存所述数据包并提取所述数据包的五元组信息;
哈希运算模块,被配置为将数据包的五元组信息进行Hash哈希运算得到五元组的Hash值;
数据处理模块,被配置为通过得到的Hash值作为地址访问对应的DDR内存,顺序读取哈希链表,比对存储在DDR内存中的五元组信息与接收到的是否相同,如果相同,则比对成功,在DDR内存中提取所述Hash值对应的转发规则转发通过FIFO缓存的数据包,如果不同,则读取哈希链表中所述Hash值的下一个记录,直到比对成功,如果所有的都不相同,则DDR内存中没有所述数据包对应的转发规则,将数据包作为新建五元组流的首包通过DMA的方式经过PCIe总线下传到主机的处理器。
本发明的有益效果如下:
本发明提供一种新的基于FPGA的网络安全加速卡及加速方法,该基于FPGA的网络安全加速卡及加速方法采用是经典的五元组精确匹配的流转发方式来处理网络报文,可以对处理器进行网络处理的分流,使处理器能从繁重的工作中解放出来,处理一些必须它来做的事情,可以进一步提高数据的转发速率。
附图说明
图1为实施例1基于FPGA的网络安全加速方法的流程图;
图2为实施例1基于FPGA的网络安全加速方法的示意图;
图3为实施例1步骤S2的流程图;
图4为实施例1步骤S22的流程图;
图5为实施例2基于FPGA的网络安全加速卡的结构框图;
图6为实施例2提取模块的结构框图;
图7为实施例2提取单元的结构框图。
具体实施方式
下面结合附图和以下实施例对本发明作进一步详细说明。
附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所描述的步骤。
实施例1
本发明提供一种基于FPGA的网络安全加速方法,如图1、图2所示,包括如下步骤:
S1:接收处理器通过写入PCIe BAR寄存器的方式写入的首包的五元组信息、对应的Hash值以及转发规则,将并将五元组信息、对应的Hash值以及转发规则按照Hash值对应的地址写入到DDR内存中,所述转发规则包括安全策略、路由信息和处理策略;
S2:接收数据包,通过FIFO缓存所述数据包并提取所述数据包的五元组信息;
S3:将数据包的五元组信息进行Hash哈希运算得到五元组的Hash值;
S4:通过得到的Hash值作为地址访问对应的DDR内存,顺序读取哈希链表,比对存储在DDR内存中的五元组信息与接收到的是否相同,如果相同,则比对成功,在DDR内存中提取所述Hash值对应的转发规则转发通过FIFO缓存的数据包,如果不同,则读取哈希链表中所述Hash值的下一个记录,直到比对成功,如果所有的都不相同,则DDR内存中没有所述数据包对应的转发规则,将数据包作为新建五元组流的首包通过DMA的方式经过PCIe总线下传到主机的处理器。
本发明提供一种新的基于FPGA的网络安全加速方法,该基于FPGA的网络安全加速方法采用是经典的五元组精确匹配的流转发方式来处理网络报文,可以对处理器进行网络处理的分流,使处理器能从繁重的工作中解放出来,处理一些必须它来做的事情,可以进一步提高数据的转发速率。
为了满足高速网络流量处理以及网络安全需要,需要把系统中的一些数据包的处理工作交给并行处理能力更强的FPGA卡来做,使得处理器能从繁重的工作中解放出来,处理一些必须它来做的事情。
本发明中FPGA内部走的是HDL逻辑,全部为并行的数据处理,适合一些主机上运行的应用,移植到加速卡上来处理,用户应用层基本不需要太大改变。
本实施例中步骤S1中对应的Hash值为处理器接收到首包后,获取路由信息、协议状态跟踪信息,并提取首包的五元组信息并对五元组信息进行Hash哈希运算得到的五元组的Hash值,形成加速卡可以直接处理的连接转发表项。
如图2所示,FPGA网卡从网口收到一个IP数据包后,一路逻辑是通过FIFO缓存这个数据包,等待另一路逻辑的判断结果来决定这个数据包的命运;另一路逻辑来提取这个数据包头的五元组信息,通过与主机端同样的hash运算方式,得到hash数值,把得到这个数值作为地址,从DDR中提取之前预存的规则(这个规则是之前处理器预先写入到FPGA中的),来决定这个数据包的走向(安全策略、处理策略等等),这个规则不一定是静止不变的,处理器可以随时更新新的处理规则。
下面对上述方法进行具体的说明:
如图2所示,本发明采用的是经典的五元组精确匹配的流转发方式来处理网络报文,具体方法是:
第一步,没有经过FPGA加速卡规则处理的首个网络数据包首先通过DMA的方式经过PCIe总线下传到主机的处理器上,通过传统的方式处理器根据实际需求,获得必要的路由信息、TCP/UDP等协议状态跟踪信息等内容。同时处理器把收到的数据包的五元组信息进行Hash哈希运算得到五元组的Hash值;
下一步,CPU把针对该Session的五元组信息以及对应的Hash值以及转发规则,转发规则包括:安全策略(允许通过/拒绝/统计/镜像/CPU处理)、路由信息(出口/下一跳)、和处理策略(NAT/路由/桥接/Qos)等内容通过写入PCIe BAR寄存器的方式,写入到FPGA加速卡中,形成加速卡可以直接处理的连接转发表项;
FPGA加速卡收到这些信息后,把这些信息按照Hash值对应的地址写入到DDR内存中,内容包括:五元组信息(哈希冲突比较用)、安全策略(0-4分别代表通过/拒绝/统计/镜像/CPU处理)、路由信息(出接口(0-7代表各个网口/下一跳ip地址)、处理策略(0-3分别代表NAT/路由/桥接/Qos);
以后继续进入FPGA加速卡的数据,加速卡首先提取出每个数据包的五元组信息,进行与主机CPU一样的Hash哈希运算得到五元组的Hash值,然后通过这个Hash数值访问到对应的DDR内存中,首先比对存储在这个地址中的五元组信息是否与收到的相同,如果不相同,说明有Hash冲突,继续读取该值的下一个记录,直到比对成功;
没有读取到信息的,说明没有针对这个数据包的规则,在进行必要的安全检查(例如:可以对来的数据包简单的进行一些地址过滤工作等等)后数据包直接通过传统网卡的形式通过DMA下传到主机,作为新建五元组流的首包交给CPU处理由CPU来决定这个数据包现在和将来(下发规则)的处理;
命中该条连接转发表项的后续报文可以由FPGA加速卡根据表项中已经定义好的安全策略、路由信息、报文处理策略等来自行进行处理,而不再需要CPU的介入,从而可以为CPU卸载掉这些报文操作所必需消耗的CPU处理能力和总线带宽,实现为主机软件加速的目的。
其中,转发规则的详细说明如下:
安全策略:0代表这个数据包可以直接正常转发;1就代表收到这个五元组后,直接丢掉这个数据包;2代表统计这个数据包信息,例如:单次时间内的次数,数据包累加值等等;3代表把除这个数据包正常操作外,同时把数据包镜像到另外一个端口上;4代表数据包交给host处理,由host处理后转发;
处理策略:0代表对这个数据包NAT处理(Network Address Translation,网络地址转换),(IP替换);1代表对这个数据包进行路由转发(MAC替换);3代表对这个数据包桥接(基本不用);4:Qos统计。
如图3所示,本实施例中步骤S2包括如下步骤:
S21:接收数据包,并判断接收到的数据包是IP包还是ARP包,若是IP包,则进行步骤S22,若是ARP包,则进行步骤S23;
S22:通过FIFO缓存所述数据包并提取所述数据包的五元组信息;
S23:解析出数据包内的IP地址和MAC地址,根据IP地址和MAC地址更新ARP表并将所述数据包传递给处理器。
将ARP包发给处理器时,MAC模块接收该数据包并发送给高速交换单元,高速交换单元预设表单,并自动遍历路由表,如果发现该ARP包的IP地址有对应的路由转发规则,则会搜索所述表单确认是否可以查到发往该IP的下一跳目标MAC模块,若找到,则将该ARP包发送该目标MAC模块进行转发,若未发现该IP地址对应的路由转发规则或未查找到发往该IP地址的下一跳目标MAC模块,则将IP包上传给DMA模块并传送给处理器,所述处理器用于通过所述AXI LITE接口对所述高速交换单元、所述MAC模块以及所述DMA模块进行配置和管理。
本实施例中步骤S4中,在比对成功后,在ARP表中搜索相应数据包的目标MAC地址,并相应的MAC地址封装进通过FIFO缓存的数据包中,根据转发规则进行转发。
本实施例中在对接收到的数据包采用五元组精确匹配的流转发方式处理前,需要判断接收到的数据包是IP包还是ARP包,由于大多数路由器都只支持TCP/IP协议栈,因此需要对数据包进行识别,在识别后为IP包后再进行处理,可以进一步提高数据的转发速率。
由于数据包要转发至相应的IP地址,需要知道必须经历的中间节点的MAC地址,并在数据包中封装这些地址,而ARP包中存储有相应的IP地址和MAC地址,因此,需要将ARP包解析后存储进ARP表中以供调用。
如图4所示,本实施例中步骤S22包括如下步骤:
S221:根据数据包的大小在加速表中搜寻相应的FPGA ID,并判断加速表中是否有相应的FPGA ID,若有,则进行步骤S222,若没有,则进行步骤S223;
S222:根据FPGA ID将数据包发送至相应的FPGA,相应的FPGA通过FIFO缓存所述数据包并提取所述数据包的五元组信息;
S223:判断加速卡中是否有未分配ID的FPGA,若有,则进行步骤S224,若没有,则进行步骤S225;
S224:分配ID给相应的FPGA,并根据数据包的大小生成数据范围值与新的FPGA ID相关联存储到加速表中,并更新加速表,同时,进行步骤S221;
S225:对数据包进行分片处理,并将分片后的每个数据包分别进行步骤S221。
本实施例的加速卡中设有多个FPGA,而每个FPGA分别处理不同大小的数据包,因此,首先所述加速卡首先为每个FPGA分配ID,并将每个FPGA可以处理的数据包的大小的数据范围值与相应的FPGA ID相关联存储在加速表中,然后在接收到IP包后,根据IP的大小在加速表中搜索对应的FPGA ID,若是能搜索到,则将IP发送至相应FPGA ID的FPGA进行处理,若是搜索不到,则判断加速卡中是否有为分配ID的FPGA,若有,则对该FPGA分配ID并将IP包发送至该FPGA进行处理,若没有,则将该IP包进行分片,然后从步骤S221开始循环处理,该设置不仅可以进一步的释放所述加速卡,还可以提高加速效率。
实施例2
一种基于FPGA的网络安全加速卡,如图5所示,包括如下部分:
信息写入模块1,被配置为接收处理器通过写入PCIe BAR寄存器的方式写入的首包的五元组信息、对应的Hash值以及转发规则,将并将五元组信息、对应的Hash值以及转发规则按照Hash值对应的地址写入到DDR内存中,所述转发规则包括安全策略、路由信息和处理策略;
提取模块2,被配置为接收数据包,通过FIFO缓存所述数据包并提取所述数据包的五元组信息;
哈希运算模块3,被配置为将数据包的五元组信息进行Hash哈希运算得到五元组的Hash值;
数据处理模块4,被配置为通过得到的Hash值作为地址访问对应的DDR内存,顺序读取哈希链表,比对存储在DDR内存中的五元组信息与接收到的是否相同,如果相同,则比对成功,在DDR内存中提取所述Hash值对应的转发规则转发通过FIFO缓存的数据包,如果不同,则读取哈希链表中所述Hash值的下一个记录,直到比对成功,如果所有的都不相同,则DDR内存中没有所述数据包对应的转发规则,将数据包作为新建五元组流的首包通过DMA的方式经过PCIe总线下传到主机的处理器。
本发明提供一种新的基于FPGA的网络安全加速卡,该基于FPGA的网络安全加速卡采用是经典的五元组精确匹配的流转发方式来处理网络报文,可以对处理器进行网络处理的分流,使处理器能从繁重的工作中解放出来,处理一些必须它来做的事情,可以进一步提高数据的转发速率。
为了满足高速网络流量处理以及网络安全需要,需要把系统中的一些数据包的处理工作交给并行处理能力更强的FPGA卡来做,使得处理器能从繁重的工作中解放出来,处理一些必须它来做的事情。
本发明中FPGA内部走的是HDL逻辑,全部为并行的数据处理,适合一些主机上运行的应用,移植到加速卡上来处理,用户应用层基本不需要太大改变。
本实施例中信息写入模块1中对应的Hash值为处理器接收到首包后,获取路由信息、协议状态跟踪信息,并提取首包的五元组信息并对五元组信息进行Hash哈希运算得到的五元组的Hash值,形成加速卡可以直接处理的连接转发表项。
如图2所示,FPGA网卡从网口收到一个IP数据包后,一路逻辑是通过FIFO缓存这个数据包,等待另一路逻辑的判断结果来决定这个数据包的命运;另一路逻辑来提取这个数据包头的五元组信息,通过与主机端同样的hash运算方式,得到hash数值,把得到这个数值作为地址,从DDR中提取之前预存的规则(这个规则是之前处理器预先写入到FPGA中的),来决定这个数据包的走向(安全策略、处理策略等等),这个规则不一定是静止不变的,处理器可以随时更新新的处理规则。
下面对上述方法进行具体的说明:
如图2所示,本发明采用的是经典的五元组精确匹配的流转发方式来处理网络报文,具体方法是:
第一步,没有经过FPGA加速卡规则处理的首个网络数据包首先通过DMA的方式经过PCIe总线下传到主机的处理器上,通过传统的方式处理器根据实际需求,获得必要的路由信息、TCP/UDP等协议状态跟踪信息等内容。同时处理器把收到的数据包的五元组信息进行Hash哈希运算得到五元组的Hash值;
下一步,CPU把针对该Session的五元组信息以及对应的Hash值以及转发规则,转发规则包括:安全策略(允许通过/拒绝/统计/镜像/CPU处理)、路由信息(出口/下一跳)、和处理策略(NAT/路由/桥接/Qos)等内容通过写入PCIe BAR寄存器的方式,写入到FPGA加速卡中,形成加速卡可以直接处理的连接转发表项;
FPGA加速卡收到这些信息后,把这些信息按照Hash值对应的地址写入到DDR内存中,内容包括:五元组信息(哈希冲突比较用)、安全策略(0-4分别代表通过/拒绝/统计/镜像/CPU处理)、路由信息(出接口(0-7代表各个网口/下一跳ip地址)、处理策略(0-3分别代表NAT/路由/桥接/Qos);
以后继续进入FPGA加速卡的数据,加速卡首先提取出每个数据包的五元组信息,进行与主机CPU一样的Hash哈希运算得到五元组的Hash值,然后通过这个Hash数值访问到对应的DDR内存中,首先比对存储在这个地址中的五元组信息是否与收到的相同,如果不相同,说明有Hash冲突,继续读取该值的下一个记录,直到比对成功;
没有读取到信息的,说明没有针对这个数据包的规则,在进行必要的安全检查(例如:可以对来的数据包简单的进行一些地址过滤工作等等)后数据包直接通过传统网卡的形式通过DMA下传到主机,作为新建五元组流的首包交给CPU处理由CPU来决定这个数据包现在和将来(下发规则)的处理;
命中该条连接转发表项的后续报文可以由FPGA加速卡根据表项中已经定义好的安全策略、路由信息、报文处理策略等来自行进行处理,而不再需要CPU的介入,从而可以为CPU卸载掉这些报文操作所必需消耗的CPU处理能力和总线带宽,实现为主机软件加速的目的。
其中,转发规则的详细说明如下:
安全策略:0代表这个数据包可以直接正常转发;1就代表收到这个五元组后,直接丢掉这个数据包;2代表统计这个数据包信息,例如:单次时间内的次数,数据包累加值等等;3代表把除这个数据包正常操作外,同时把数据包镜像到另外一个端口上;4代表数据包交给host处理,由host处理后转发;
处理策略:0代表对这个数据包NAT处理(Network Address Translation,网络地址转换),(IP替换);1代表对这个数据包进行路由转发(MAC替换);3代表对这个数据包桥接(基本不用);4:Qos统计。
如图6所示,本实施例中所述提取模块2具体包括如下部分:
接收判断单元21,被配置为接收数据包,并判断接收到的数据包是IP包还是ARP包,若是IP包,则向提取单元22发送指令,若是ARP包,则向解析单元23发送指令;
提取单元22,被配置为通过FIFO缓存所述数据包并提取所述数据包的五元组信息;
解析单元23,被配置解析出数据包内的IP地址和MAC地址,根据IP地址和MAC地址更新ARP表并将所述数据包传递给处理器。
将ARP包发给处理器时,MAC模块接收该数据包并发送给高速交换单元,高速交换单元预设表单,并自动遍历路由表,如果发现该ARP包的IP地址有对应的路由转发规则,则会搜索所述表单确认是否可以查到发往该IP的下一跳目标MAC模块,若找到,则将该ARP包发送该目标MAC模块进行转发,若未发现该IP地址对应的路由转发规则或未查找到发往该IP地址的下一跳目标MAC模块,则将IP包上传给DMA模块并传送给处理器,所述处理器用于通过所述AXI LITE接口对所述高速交换单元、所述MAC模块以及所述DMA模块进行配置和管理。
本实施例中数据处理模块4中,在比对成功后,在ARP表中搜索相应数据包的目标MAC地址,并相应的MAC地址封装进通过FIFO缓存的数据包中,根据转发规则进行转发。
本实施例中在对接收到的数据包采用五元组精确匹配的流转发方式处理前,需要判断接收到的数据包是IP包还是ARP包,由于大多数路由器都只支持TCP/IP协议栈,因此需要对数据包进行识别,在识别后为IP包后再进行处理,可以进一步提高数据的转发速率。
由于数据包要转发至相应的IP地址,需要知道必须经历的中间节点的MAC地址,并在数据包中封装这些地址,而ARP包中存储有相应的IP地址和MAC地址,因此,需要将ARP包解析后存储进ARP表中以供调用。
如图7所示,本实施例中所述提取单元22具体包括如下部分:
搜寻判断子模块221,被配置为根据数据包的大小在加速表中搜寻相应的FPGAID,并判断加速表中是否有相应的FPGA ID,若有,则向数据处理子模块222发送指令,若没有,则向判断子模块223发送指令;
数据处理子模块222,被配置为根据FPGA ID将数据包发送至相应的FPGA,相应的FPGA通过FIFO缓存所述数据包并提取所述数据包的五元组信息;
判断子模块223,被配置为判断加速卡中是否有未分配ID的FPGA,若有,则向ID分配子模块224发送指令,若没有,则向分片处理子模块225发送指令;
ID分配子模块224,被配置为分配ID给相应的FPGA,并根据数据包的大小生成数据范围值与新的FPGA ID相关联存储到加速表中,并更新加速表,同时,向搜寻判断子模块221发送指令;
分片处理子模块225,对数据包进行分片处理,并将分片后的每个数据包分别向搜寻判断子模块221发送指令。
本实施例的加速卡中设有多个FPGA,而每个FPGA分别处理不同大小的数据包,因此,首先所述加速卡首先为每个FPGA分配ID,并将每个FPGA可以处理的数据包的大小的数据范围值与相应的FPGA ID相关联存储在加速表中,然后在接收到IP包后,根据IP的大小在加速表中搜索对应的FPGA ID,若是能搜索到,则将IP发送至相应FPGA ID的FPGA进行处理,若是搜索不到,则判断加速卡中是否有为分配ID的FPGA,若有,则对该FPGA分配ID并将IP包发送至该FPGA进行处理,若没有,则将该IP包进行分片,然后从搜寻判断子模块开始循环处理,该设置不仅可以进一步的释放所述加速卡,还可以提高加速效率。
以上所述实施例仅仅是本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明的权利要求书确定的保护范围内。
Claims (8)
1.一种基于FPGA的网络安全加速方法,其特征在于,包括如下步骤:
S1:接收处理器通过写入PCIe BAR寄存器的方式写入的首包的五元组信息、对应的Hash值以及转发规则,将并将五元组信息、对应的Hash值以及转发规则按照Hash值对应的地址写入到DDR内存中,所述转发规则包括安全策略、路由信息和处理策略;
S2:接收数据包,通过FIFO缓存所述数据包并提取所述数据包的五元组信息;步骤S2包括如下步骤:
S21:接收数据包,并判断接收到的数据包是IP包还是ARP包,若是IP包,则进行步骤S22;
S22:通过FIFO缓存所述数据包并提取所述数据包的五元组信息;步骤S22包括如下步骤:
S221:根据数据包的大小在加速表中搜寻相应的FPGA ID,并判断加速表中是否有相应的FPGA ID,若有,则进行步骤S222,若没有,则进行步骤S223;
S222:根据FPGA ID将数据包发送至相应的FPGA,相应的FPGA通过FIFO缓存所述数据包并提取所述数据包的五元组信息;
S223:判断加速卡中是否有未分配ID的FPGA,若有,则进行步骤S224,若没有,则进行步骤S225;
S224:分配ID给相应的FPGA,并根据数据包的大小生成数据范围值与新的FPGA ID相关联存储到加速表中,并更新加速表,同时,进行步骤S221;
S225:对数据包进行分片处理,并将分片后的每个数据包分别进行步骤S221;
S3:将数据包的五元组信息进行Hash哈希运算得到五元组的Hash值;
S4:通过得到的Hash值作为地址访问对应的DDR内存,顺序读取哈希链表,比对存储在DDR内存中的五元组信息与接收到的是否相同,如果相同,则比对成功,在DDR内存中提取所述Hash值对应的转发规则转发通过FIFO缓存的数据包,如果不同,则读取哈希链表中所述Hash值的下一个记录,直到比对成功,如果所有的都不相同,则DDR内存中没有所述数据包对应的转发规则,将数据包作为新建五元组流的首包通过DMA的方式经过PCIe总线下传到主机的处理器。
2.根据权利要求1所述的基于FPGA的网络安全加速方法,其特征在于,步骤S1中对应的Hash值为处理器接收到首包后,获取路由信息、协议状态跟踪信息,并提取首包的五元组信息并对五元组信息进行Hash哈希运算得到的五元组的Hash值,形成加速卡可以直接处理的连接转发表项。
3.根据权利要求1所述的基于FPGA的网络安全加速方法,其特征在于,步骤S2包括如下步骤:
S21:接收数据包,并判断接收到的数据包是IP包还是ARP包,若是ARP包,则进行步骤S23;
S23:解析出数据包内的IP地址和MAC地址,根据IP地址和MAC地址更新ARP表并将所述数据包传递给处理器。
4.根据权利要求3所述的基于FPGA的网络安全加速方法,其特征在于,步骤S4中,在比对成功后,在ARP表中搜索相应数据包的目标MAC地址,并相应的MAC地址封装进通过FIFO缓存的数据包中,根据转发规则进行转发。
5.一种基于FPGA的网络安全加速卡,其特征在于,包括如下部分:
信息写入模块(1),被配置为接收处理器通过写入PCIe BAR寄存器的方式写入的首包的五元组信息、对应的Hash值以及转发规则,将并将五元组信息、对应的Hash值以及转发规则按照Hash值对应的地址写入到DDR内存中,所述转发规则包括安全策略、路由信息和处理策略;
提取模块(2),被配置为接收数据包,通过FIFO缓存所述数据包并提取所述数据包的五元组信息;所述提取模块(2)具体包括如下部分:
接收判断单元(21),被配置为接收数据包,并判断接收到的数据包是IP包还是ARP包,若是IP包,则向提取单元(22)发送指令;
提取单元(22),被配置为通过FIFO缓存所述数据包并提取所述数据包的五元组信息;所述提取单元(22)具体包括如下部分:
搜寻判断子模块(221),被配置为根据数据包的大小在加速表中搜寻相应的FPGA ID,并判断加速表中是否有相应的FPGA ID,若有,则向数据处理子模块(222)发送指令,若没有,则向判断子模块(223)发送指令;
数据处理子模块(222),被配置为根据FPGA ID将数据包发送至相应的FPGA,相应的FPGA通过FIFO缓存所述数据包并提取所述数据包的五元组信息;
判断子模块(223),被配置为判断加速卡中是否有未分配ID的FPGA,若有,则向ID分配子模块(224)发送指令,若没有,则向分片处理子模块(225)发送指令;
ID分配子模块(224),被配置为分配ID给相应的FPGA,并根据数据包的大小生成数据范围值与新的FPGA ID相关联存储到加速表中,并更新加速表,同时,向搜寻判断子模块(221)发送指令;
分片处理子模块(225),对数据包进行分片处理,并将分片后的每个数据包分别向搜寻判断子模块(221)发送指令;
哈希运算模块(3),被配置为将数据包的五元组信息进行Hash哈希运算得到五元组的Hash值;
数据处理模块(4),被配置为通过得到的Hash值作为地址访问对应的DDR内存,顺序读取哈希链表,比对存储在DDR内存中的五元组信息与接收到的是否相同,如果相同,则比对成功,在DDR内存中提取所述Hash值对应的转发规则转发通过FIFO缓存的数据包,如果不同,则读取哈希链表中所述Hash值的下一个记录,直到比对成功,如果所有的都不相同,则DDR内存中没有所述数据包对应的转发规则,将数据包作为新建五元组流的首包通过DMA的方式经过PCIe总线下传到主机的处理器。
6.根据权利要求5所述的基于FPGA的网络安全加速卡,其特征在于,信息写入模块(1)中对应的Hash值为处理器接收到首包后,获取路由信息、协议状态跟踪信息,并提取首包的五元组信息并对五元组信息进行Hash哈希运算得到的五元组的Hash值,形成加速卡可以直接处理的连接转发表项。
7.根据权利要求6所述的基于FPGA的网络安全加速卡,其特征在于,所述提取模块(2)具体包括如下部分:
接收判断单元(21),被配置为接收数据包,并判断接收到的数据包是IP包还是ARP包,若是ARP包,则向解析单元(23)发送指令;
解析单元(23),被配置解析出数据包内的IP地址和MAC地址,根据IP地址和MAC地址更新ARP表并将所述数据包传递给处理器。
8.根据权利要求7所述的基于FPGA的网络安全加速卡,其特征在于,数据处理模块(4)中,在比对成功后,在ARP表中搜索相应数据包的目标MAC地址,并相应的MAC地址封装进通过FIFO缓存的数据包中,根据转发规则进行转发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010414091.9A CN111597142B (zh) | 2020-05-15 | 2020-05-15 | 一种基于fpga的网络安全加速卡及加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010414091.9A CN111597142B (zh) | 2020-05-15 | 2020-05-15 | 一种基于fpga的网络安全加速卡及加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111597142A CN111597142A (zh) | 2020-08-28 |
CN111597142B true CN111597142B (zh) | 2024-04-12 |
Family
ID=72191274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010414091.9A Active CN111597142B (zh) | 2020-05-15 | 2020-05-15 | 一种基于fpga的网络安全加速卡及加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111597142B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114697387B (zh) * | 2020-12-11 | 2023-08-11 | 中国联合网络通信集团有限公司 | 数据包传输方法、装置及存储介质 |
CN112737914B (zh) * | 2020-12-28 | 2022-08-05 | 北京天融信网络安全技术有限公司 | 报文处理方法、装置、网络设备及可读存储介质 |
CN113132242B (zh) * | 2021-03-19 | 2022-11-15 | 翱捷科技股份有限公司 | 一种网络设备及其共享发送和接收缓存的方法 |
CN112910932B (zh) * | 2021-04-30 | 2021-07-20 | 北京数盾信息科技有限公司 | 一种数据处理方法、装置及系统 |
CN113094762B (zh) * | 2021-04-30 | 2021-12-07 | 北京数盾信息科技有限公司 | 一种数据处理方法、装置及签名验签服务器 |
CN114553469B (zh) * | 2022-01-04 | 2024-04-19 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 报文处理方法、装置、设备和存储介质 |
CN115277393B (zh) * | 2022-07-26 | 2024-10-18 | 浪潮电子信息产业股份有限公司 | 一种传输配置信息的方法、装置及介质 |
CN118400323B (zh) * | 2024-06-27 | 2024-09-27 | 杭州迪普科技股份有限公司 | 基于fpga的算网一体化数据流量转发方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016004781A1 (zh) * | 2014-07-11 | 2016-01-14 | 华为技术有限公司 | 一种业务部署方法及网络功能加速平台 |
CN105337991A (zh) * | 2015-11-23 | 2016-02-17 | 湖南戎腾网络科技有限公司 | 一种一体化的报文流查找与更新方法 |
CN205983466U (zh) * | 2016-07-27 | 2017-02-22 | 四川迈实通科技有限责任公司 | 一种基于fpga的算法加速卡 |
CN109474534A (zh) * | 2018-11-02 | 2019-03-15 | 思力科(深圳)电子科技有限公司 | 基于fpga的路由加速转发系统、路由器及转发方法 |
-
2020
- 2020-05-15 CN CN202010414091.9A patent/CN111597142B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016004781A1 (zh) * | 2014-07-11 | 2016-01-14 | 华为技术有限公司 | 一种业务部署方法及网络功能加速平台 |
CN105337991A (zh) * | 2015-11-23 | 2016-02-17 | 湖南戎腾网络科技有限公司 | 一种一体化的报文流查找与更新方法 |
CN205983466U (zh) * | 2016-07-27 | 2017-02-22 | 四川迈实通科技有限责任公司 | 一种基于fpga的算法加速卡 |
CN109474534A (zh) * | 2018-11-02 | 2019-03-15 | 思力科(深圳)电子科技有限公司 | 基于fpga的路由加速转发系统、路由器及转发方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111597142A (zh) | 2020-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111597142B (zh) | 一种基于fpga的网络安全加速卡及加速方法 | |
CN111371779B (zh) | 一种基于dpdk虚拟化管理系统的防火墙及其实现方法 | |
US9356844B2 (en) | Efficient application recognition in network traffic | |
US8176300B2 (en) | Method and apparatus for content based searching | |
JP3645734B2 (ja) | ネットワーク中継装置及びネットワーク中継方法 | |
EP1754349B1 (en) | Hardware filtering support for denial-of-service attacks | |
US6430190B1 (en) | Method and apparatus for message routing, including a content addressable memory | |
US9755947B2 (en) | Hierarchical self-organizing classification processing in a network switch | |
US7447230B2 (en) | System for protocol processing engine | |
US10616101B1 (en) | Forwarding element with flow learning circuit in its data plane | |
US8767757B1 (en) | Packet forwarding system and method using patricia trie configured hardware | |
US20050276230A1 (en) | Communication statistic information collection apparatus | |
US20120213074A1 (en) | System and method for flow table management | |
US8555374B2 (en) | High performance packet processing using a general purpose processor | |
US8599859B2 (en) | Iterative parsing and classification | |
US7313138B2 (en) | Router device and routing method | |
US20080225874A1 (en) | Stateful packet filter and table management method thereof | |
US10819640B1 (en) | Congestion avoidance in multipath routed flows using virtual output queue statistics | |
CN106713144A (zh) | 一种报文出口信息的读写方法及转发引擎 | |
US9961147B2 (en) | Communication apparatus, information processor, communication method, and computer-readable storage medium | |
EP3742307A1 (en) | Managing network traffic flows | |
US7571242B2 (en) | Method for accelerated packet processing | |
CN111988231A (zh) | 一种掩码五元组规则匹配的方法及装置 | |
WO2012075818A1 (zh) | 报文包头的解析方法、包头解析预处理装置和网络处理器 | |
CN107248939B (zh) | 基于hash存储器的网络流高速关联方法 |
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 |