资源描述
基于CPLD的嵌入式硬件网络墙原理初步探讨
内容提要:目前市场的防火墙产品主要以软件为主,而硬件级尤其是可在线升级的硬件级防火墙少之又少。本文讨论的就是以CPLD为核心器件的嵌入式的在线可升级的硬件级防火墙的设计思路。
关键词:网络硬件防火墙,嵌入式系统,CPLD
Content: The software firewall is Familiar with the most people,however,hardware firewall is the new thing for most of us. This article descripts embedded hardware firewall’s principle and its configuration.
Keywords:hardware firewall on net, Embedded system, cpld device
一 前言
防火墙的基本功能防火墙系统可以说是网络的第一道防线,通过对它的各种规则设置,使得合法的链路得以建立;而非法的连接将被禁止,同时通过各种手段屏蔽掉用户的隐私信息,以保障用户的对网络访问的安全。目前市面使用的防火墙大多是软件防火墙,当然必须承认软件防火墙有其价格便宜,安装方面,升级速度快等特点,但是由于其是加载在对应操作平台上的软件,因此毫无疑问会消耗安装系统的资源,降低其运算速度,并且软件防火墙还有致命的弱点,就是如果脱离了计算机的操作平台或者被相关的恶意程序强行关闭的话就无法发挥其作用,正是基于此,网络硬件防火墙被才越来越受人们的青睐。
防火墙通常使用的安全控制手段主要有包过滤、状态检测、代理服务三大类,本文所讨论的硬件级防火墙是基于包过滤的嵌入式防火墙。通过对它的各种规则设置,使得合法的链路得以建立;而非法的连接将被禁止.
二、 防火墙的软件实现
由于本文是进行的原理性介绍,因此仅以包过滤式的嵌入防火墙为例进行说明。软件采用VHDL语言编写,通过EPC2直接植入FPGA,其中的人机接口使用USB2.0接口芯片CY7C68013。
包过滤型网络防火墙,就是当网络传送过来的数据与防火墙中恶意特征码一致时,对其进行屏蔽性操作,从而保障了计算机的安全。现在我们假设有这么一个病毒数据“1111”,当其被传送过来时自动被防火墙屏蔽,数据变为“0”。
设计程序如下:
主程序:
COMPONENT dff
PORT(d:IN STD_LOGIC;
clk: IN STD_LOGIC;
q:OUT STD_LOGIC);
END COMPONENT;
SIGNAL q:STD_LOGIC_VECTOR(4 DOWNTO 0);
BEGIN
q(0)<=di;
label1:FOR i IN 0 TO 3 GENERATE
dffx:dff PORT MAP(q(i),CP,q(i+1));
END GENERATE label1;
process(cp)
begin
if q(3 downto 0)="1111"then
do<='0';
else
do<=q(4);
end if;
end process;
END jcq;
子程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY dff IS
PORT(d:IN STD_LOGIC;
clk: IN STD_LOGIC;
q:OUT STD_LOGIC);
END dff;
ARCHItECTURE li OF dff IS
Begin
Process(clk)
Begin
If (clk='1'and clk'event)then
q<=d;
end if;
end process;
end li;
由于本文只讨论网络封包的过滤,未涉及TCP/IP协议中的各层数据包的过滤问题,如有需要则可参考相关文章进行操作,比如在各协议层添加用户过滤层加以实现。
三、嵌入式硬件防火墙的硬件结构原理
3.1 整体结构
本文介绍的嵌入式硬件防火墙以altera公司生产的EP1K100QC208-3为主芯片,它是ALTERA公司推出的ACEX1K系列下的一款FPGA芯片。片内有100,000可用门,有4,992个逻辑单元,内嵌12个EAB。每个EAB的容量为512Byte,可以非常方便地构造RAM、ROM、FIFO或双口RAM等功能。本设计中6KB的双口RAM正是基于此构建的。其有208个管脚,可用I/O管脚数为147个,上电时需要重新对芯片进行配置,基于本文此采用了20脚EPC2器件,利用其在线可编程的EPROM可方便的实现CPLD数据的存储和在线升级;接口芯片采用CY7C64013,它能提供标准USB 2.0,并且可以提供全速率的通讯服务,网络通讯芯片采用realtek公司的RTL8029AS,本系统的硬件原图如下:
图2.1
3.2 核心芯片EP1K100QC208-3
EP1K100QC208-3是一款FPGA芯片,它的最大好处就在于具有较强的软件升级功能,利用业界标准的HDL和C代码,以及FPGA制造商提供的基于平台和工具集方法的工具,可以很方便地实现软件在各代FPGA中的无缝移植。在硬件升级方面,FPGA顾名思义就是现场可编程,因而能轻松升级,很好地满足需求变化,延长了产品寿命,有助于网络安全设备跟踪标准和协议的持续变化。同时FPGA往往有一定的预留性,如果需要可以更换成ALTERA的其他FPGA产品。
3.3 网络通信芯片RTL8029AS
RTL8019AS网络芯片是REALTEK公司生产的,基于ISA接口的10M以太网通信芯片。 它采用全双工方式来进行接收以太网数据,非常容易和微处理器接口。该芯片集成了以太网的物理层以及以太网的收发器,数据封包形式完全符合IEEE802.3标准。
3.4 接口芯片CY7C68013
CY7C68013是Cypress公司生产的一款USB2.0的接口芯片。它内部集成了8051的核,可以单独对该芯片编程。由该芯片完成USB2.0接口,跟PC机的通信速率可以高达10Mbyte/s。我们利用该款芯片来实现一个数据FIFO,即对微处理器来讲,它只要将数据写入该FIFO,然后该芯片就会将数据按照USB2.0的协议发送给PC机。
3.5 FPGA专用配置器件EPC2
EPC2适合于大多数的ALtera公司的FPGA器件配置,其中包括2.5V,3.3.V,5.0V等,而且其本身包含FLASH ROM存储器,可永久性的存储下载程序。其内置的IEEEStd 1149.1 JTAG接口可使器件在3.3v和5.0 V电压下在线编程,并且在完成编程后,调入相关的配置指令就可初始化ACEX1K器件。正是由于这种方便的使用方式,使得EPC2 经常和FPGA配合使用用以完成初始化和在线更新等各种功能。EPC2 的参数方面为:在所配置的ACEX1K器件进行带电复位时,最大延时为200ms, MAX+PLUS II和Quartus II均支持此方式配置器件。人机接口部分电路及初始化部分
当用一片EPC2配置ACEX 1K器件时,EPC2的控制信号nCS、OE、DCLK直接和ACEX 1K系列器件的控制信号连接。图6.1给出了ACEX 1K器件和一片EPC2的连接关系。
图2.5
EPC2的nCS和OE引脚控制DATA输出引脚的三态缓冲器,使能地址计数器和EPC2的振荡器。nCS引脚控制配置器件的输出。当OE引脚接低电平时,不论nCS为何状态,地址计数器复位,DATA引脚输出为高阻状态。当OE引脚接高电平时,如果nCS保持高电平,则计数器停止计数,DATA引脚保持高阻状态;如果nCS接低电平,则计数器和DATA引脚正常工作。EPC2允许用户将nINIT_CONF引脚与PLD器件的nCONFIG引脚相连来初始化PLD器件的配置。EPC2的DATA引脚与ACEX 1K系列器件的DATA0或DATA引脚相连。存储在EPC2器件中的数据在其内部时钟的控制下顺序输出到DATA脚,然后在控制信号的控制下输出到CPLD器件的DATA0或DATA引脚。当配置数据的大小超过一片EPC2的容量时,可以采用多片级联的方法。这时候器件的nCASC和nCS引脚做器件间的握手信号。器件连接如图2.5虚线所示。
用级联EPC2 配置ACEX 1K器件时,EPC2的操作与其在级联链中的位置有关。当级联链中的第一个即主EPC2加电或复位,且nCS脚为低电平时,主EPC2控制配置进行。配置过程中主EPC2向其后的从属EPC2和CPLD器件提供所有的时钟脉冲,并向PLD器件提供第一个数据流。当主EPC2中配置数据发送完毕,器件的nCASC脚变为低电平,使第一个从属EPC2的nCS脚变为低电平,从而使从属EPC2向外发送配置数据。每一片EPC2中数据全部输出且nCASC引脚为低电平时,器件的DATA引脚置为高阻状态以避免和其他配置器件发生竞争。一旦所有的配置数据传送完毕,且基于查找表的CPLD器件的CONF_DONE脚驱动主EPC2的nCS脚为高电平,主EPC2器件将额外增加16个时钟周期来初始化CPLD器件。随后主EPC2器件进入空闲状态。当需要另外加入EPC2器件时,可以将欲加入的EPC2的nCASC引脚和级联链中的从属EPC2的nCS相连,DCLK、DATA和OE引脚并联。
Db61850@
展开阅读全文