一种基于FPGA硬件防火墙设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于FPGA硬件防火墙设计

一种基于FPGA的硬件防火墙设计   摘 要:本文提出了一种基于FPGA的硬件防火墙的实现方案,采用FPGA来实现百兆线速以上的防火墙设计。网络数据在建立连接跟踪后,由FPGA实现的快速处理板直接转发,实现了网络数据的线速处理,通用CPU在操作系统支持下,完成网络数据连接跟踪的创建、维护以及对网络规则表的维护等工作。   关键词:防火墙;FPGA;Verilog HDL;CPU   一、引言   防火墙是一种基本的网络防护设备。它是一种设置在内部网和外部网之间的安全网关,通过安全策略和规则来控制外部用户对内部资源的访问,使外部网和内部网之间既保持连通性,又根据规则间接交换信息。防火墙所采用的硬件设备必须满足网络处理性能的需求。在早期网络中,数据速率相对较低,协议也比较简单,因此网络设备通常以通用处理器配合分?M处理软件实现。然而,随着数据速率的不断提高和协议的日益复杂,通用处理器处理能力的增长逐渐落后于数据速率的增长,因此,基于通用处理器平台的网络产品开发者遇到了性能上的障碍。   本文针对目前防火墙的设计方式提出了一种基于FPGA的硬件防火墙的实现方案,采用FPGA来实现百兆线速以上的防火墙设计。传统的基于x86等通用CPU的防火墙无法适应当前快速增长的网络速度,无法实现线速过滤与转发。本文采用FPGA结合通用CPU模式,可以快速处理网络数据,能够避免NP的不足。网络数据在建立连接跟踪后,由FPGA实现的快速处理板直接转发,实现了网络数据的线速处理。通用CPU在操作系统支持下,完成网络数据连接跟踪的创建、维护以及对网络规则表(端口黑名单、IP黑名单、端口白名单)的维护等工作。FPGA硬件板和CPU各司其职,实现快速转发的目的。实践证明,这是一种兼容性比较好的网络安全架构。   二、系统整体设计方案   硬件防火墙分为两个数据通道,FPGA硬件板承担网络数据的按规则高速收发与转发,并按指定规则要求通过PCI-E将数据上传至x86CPU;x86主控板承担慢速通道工作。   防火墙软件系统根据TCP、UDP、ICMP协议实现不同的连接跟踪、跟踪表项的匹配、跟踪表的动态维护;x86上防火墙软件系统通过硬件驱动程序和FPGA硬件板进行通讯。      图1中所示为FPGA系统设计过程中网络抓包实验中所形成的硬件架构图。FPGA网络抓包的数据可以通过串口发送至上位机,实验可以清晰判断当前网络收发架构设计是否合理,能否准确地收发100Mbps的网络数据。   在实现了基本的数据收发后,确定防火墙系统整体架构和功能模块,如图2所示。   可以看出在这里主要由网络接口、网络控制、MAC、外网处理模块、PC处理模块、PCI-E与DDR控制模块几大部分构成。   三、系统HDL设计方案   系统使用Verilog HDL语言完成设计。下面介绍一些主要模块设计。   1.外网控制   本模块的主要功能如图3所示:   (1)存储接收到的外网报文;   (2)对接收到的外网报文进行关键字提取和识别;   (3)对提取的结果根据用户配置进行过滤;   (4)读取存储的本帧数据,根据本帧过滤的结果对其进行打包处理。   本模块时序图设计如图4所示。   2.子模块报文缓存功能设计   本模块的功能是:用于缓存接收到的报文,等待本报文的过滤结果,由报文封装模块读取此报文或者丢弃报文。本模块实质上是一个循环的buffer,其位宽是64,深度是1024,可以存储5个最大的1518Bytes报文。缓存模块内部维护读写地址和可写的空间,当可写的空间小于1518Bytes时,不再接收数据。   本模块的结构如图5所示:   处理流程为:   (1)当报文到达时,首先检查可写空间是否大于1518Bytes,如果大于则向RAM中存入次报文,写地址,循环累加,写完后将本次写入的数据量送给可写空间维护,如果小于1518Bytes丢弃本报文,写地址不变;   (2)写空间维护,维护一个Counter,累加写数据量,累减读数据量,用RAM的总空间减去这个Counter就是可写空间;   (3)当收到报文封装模块的读使能时,读地址累加,读取RAM送出读数据。   3.子模关键字提取功能设计   本模块的任务是:在报文中提取过滤规则的关键字,关键字为标准IP协议数据包。   通过Type识别是否为IP报文,如果是,继续提取Protocol、SIP、DIP;通过Protocol识别是否是TCP或者UDP报文,如果是,继续提取SPort与DPort。报文结构如图6所示,但是没有option域。另外需要获得本报文的长度(以Byte为单位)。   处理流程图如图7所示。   四、设计仿真测试   上述设计代码在综合后下载

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档