防火墙架构解析

防火墙本身就是一台为网络而设计的计算机,与通用计算机一样防火墙是由硬件和软件组成,现今防火墙有着多种硬件技术架构,不同的硬件架构有着各自不同的特点。先说明一下什么是处理器体系结构和体系架构。
体 系 架 构 :
CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型的CPU 。
体 系 结 构 :
在计算世界的 " 体系结构 " 一词被用来描述一个抽象的机器而不是一个具体的机器实现 。一般而言,一个CPU的体系结构有一个指令集加上一些寄存器而组成。 “ 指令集”与“ 体系结构 ” 这两个术语是同义词 。
指令集:
指令集可分为复杂指令集(CISC)和精简指令集(RISC)两个类型。MIPS是一种RISC处理器, X86是一种cisc架构的处理器。

 

X86架构  

优点:灵活性高,扩展性好。
缺点:性能差,小包速率低(30%-40%)。
X86是由Intel推出的一种复杂指令集,用于控制芯片的运行的程序,现在X86处理器已经广泛运用到了PC领域。基于X86架构的防火墙,由于CPU处理能力和PCI总线速度的制约,在实际应用中,尤其在小包情况下,这种结构的千兆防火墙远远达不到千兆的转发速度,难以满足千兆骨干网络的应用要求。  
X86架构是一种通用的“CPU+Linux”操作系统的架构。其处理机制是,数据从网卡到CPU之间的传输是依靠“中断”实现,这导致了不可逾越的性能瓶颈,尤其在传送小包的情况下(如64 Bytes的小包),数据包的通过率只能达到20%~30%左右,并且它的设计是必须依靠CPU计算,因此,很占CPU资源,这也是为什么X86防火墙性能上不去的原因。虽然Intel提出了解决方案,将32位的PCI总线升级到了PCI-E ,总线速度最高可达16GBps,但是,小包传送问题依然没有解决。但X86的产业化规模最大,随着Intel的不断优化性能已经不差且在应用层的处理速度要比MIPS架构好。

 

ASIC架构

优点:性能高。
缺点:灵活性低,扩展性差,开发费用高,开发周期长。
专用集成芯片(Application Specific Integrated Circuit,简称ASIC),为特定要求和特定电子系统而设计、制造的集成电路。ASIC的特点是面向特定需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。
国外的大部分防火墙设计都采用了ASIC架构,以Juniper和Fortinet的产品为首,因为它的性能高,并且开发门槛高,一度成为国际国内厂商的技术分水岭。   
基于ASIC架构的防火墙从架构上改进了中断机制,数据通过网卡进入系统后,无需经过主CPU处理,而是由集成在系统中的芯片直接处理,完成防火墙的功能,如路由、NAT、防火墙规则匹配等,因此,其性能得到了大幅度的提升: 性能可以达到万兆,并且64 Bytes的小包都可以达到线速。 但问题是,这种防火墙在设计时,就必须将安全功能固化进ASIC芯片中,所以它的灵活性不够,如果想要增添新的功能或进行系统升级,开发周期较长,对技术的要求也很高。此外,用ASIC开发复杂的功能,如垃圾邮件过滤、网络监控、病毒防护等,其开发比较复杂,对技术要求很高。因此,ASIC架构非常适用于功能简单的防火墙,但不适合用于功能复杂的UTM。  
线速,达到线速标准的设备,避免了非线速设备的转发瓶颈,称作“无阻塞处理”。即厂商标称交换能力大于设备上所有类型各个接口的带宽总和的2倍(全双工)。

 

NP架构

特点:平衡方案
网络处理器(Network Processor,简称NP),采用NP架构的防火墙,各种算法可以通过硬件实现,在实现复杂的拥塞管理、队列调度、流分类和QoS功能的前提下,还可以达到极高的查找、转发性能,实现“硬转发”。
NP是专门为网络设备处理网络流量而设计的处理器,其体系结构和指令集对于数据处理都做了专门的优化,同时辅助一些协处理器完成搜索、查表等功能,可以对网络流量进行快速的并发处理。硬件结构设计采用高速的接***术和总线规范,具有较高的I/O能力。这是一种硬件加速的完全可编程的架构,软硬件都易于升级,因此产品的生命周期更长。 NP最大的优点在于它是通过专门的指令集和配套的软件开发系统提供强大的编程能力,因而便于开发应用,可扩展性强,而且研制周期短,成本较低。但是,相比于X86架构,由于应用开发、功能扩展受到NP的配套软件的限制,基于NP技术的防火墙的灵活性要差一些。采用微码编程,在性能方面NP不如ASIC。NP开发的难度和灵活性都介于ASIC和X86构架之间,应该说NP是X86架构和ASIC之间的平衡方案。
NP架构实现的原理和ASIC类似,但升级、维护远远好于ASIC 架构。NP架构在的每一个网口上都有一个网络处理器,即:NPE,用来处理来自网口的数据。每个网络处理器上所运行的程序使用微码编程,其软件实现的难度比较大,开发周期比ASIC短,但比X86长。作为UTM,由于NP架构每个网口上的网络处理器性能不高,所以同样无法完成像网关杀毒、垃圾邮件、过滤、访问监控等复杂功能。 可能有人会问?ASIC 和 NP为什么不可以把网关杀毒、和垃圾邮件过滤、访问监控等这些功能放在主CPU上来实现?这样不就可以作为UTM方案使用了吗?这个问题问得很好,目前有很多基于NP和ASIC的UTM都是这样做的,但问题是ASIC和NP架构的防火墙,其主CPU性能很低,如:Intel基于IXP2400的千高端NP方案,主CPU只有1.0G,处理能力还比不上Celeron 1.0G,大家可以对照一下与其主频相当的X86平台的处理能力。所以如果以ASIC和NP架构来实现一个UTM网关,只能是作为低端的方案来使用,如桌面型的UTM,而并不能作为中、高端的UTM来使用。
MIPS架构
特点:多核方案
MIPS (Microprocessor without interlocked piped stages) 是RISC精简指令集处理器。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。MIPS是高性能、低功耗嵌入式系统处理器,广泛应用于网络/通讯、无线、存储和控制应用等领域的安全产品,国际上主要的网络/通讯/无线等厂商都有使用MIPS的解决方案。
MIPS多核技术则是近年来新出现的处理器技术,它一出现,就被认为是解决信息安全产品功能与性能之间矛盾的一大硬件法宝。国外许多厂商,如SonicWall等,都推出了其多核产品。多核是在同一个硅晶片上集成了多个独立物理核心,每个核心都具有独立的逻辑结构,包括缓存、执行单元、指令级单元和总线接口等逻辑单元,通过高速总线、内存共享进行通信。在实际工作中,每个核心都可以达到2Ghz以上的主频。因此,多核技术无论在性能、灵活性还是在开发的成本和难度方面,都是其他架构不能比拟的。目前各种芯片厂商推出的多核芯片共分三种:一种是Intel、AMD推出的2核、4核的通用处理器,适用于桌面笔记本电脑等通用领域;一种是IBM、SUN分别推出的Cell和SPARC架构的多核处理器,主要用于图形处理和运算;第三种是RMI和Cavium推出的基于MIPS架构的嵌入式多核处理器,主要应用于数据通信领域,它最适合用于信息安全产品的开发。
同时,MIPS架构同ARM架构对比来看也存在一些不足之处:一是MIPS的内存地址起始有问题,这导致了MIPS在内存和cache的支持方面都有限制,即MIPS单内核无法面对高容量内存配置;二是MIPS技术演进方向是并行线程,类似INTEL的超线程,而ARM未来的发展方向是物理多核,从目前核心移动设备的发展趋势来看物理多核占据了上风;三是MIPS虽然结构更加简单,但是到现在还是顺序单/双发射,ARM则已经进化到了乱序双/三发射,执行指令流水线周期远不如ARM高效;四是MIPS学院派发展风格导致其商业进程远远滞后于ARM,当ARM与高通、苹果、NVIDIA等芯片设计公司合作大举进攻移动终端的时候,MIPS还停留在高清盒子、打印机等小众市场产品中;五是MIPS自身系统的软件平台也较为落后,应用软件与ARM体系相比要少很多。
资料来自于网络,欢迎大家探讨!

转载于:https://www.cnblogs.com/yyxianren/p/10710040.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html] 你有了解HTML5的地理定位吗?怎么使用?

[html] 你有了解HTML5的地理定位吗?怎么使用? var xdocument.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { x.innerHTML"该浏览…

apache 修改服务器配置,Apache服务器配置全攻略

在使用子进程处理HTTP请求的Web服务器上,由于要首先生成子进程才能处理客户的请求,因此反应时间就有一点延迟。但是,Apache服务器使用了一个特殊技术来摆脱这个问题,这就是预先生成多个空余的子进程驻留在系统中,一旦有…

易驾佳智能机器人教练_机器人教练创始人马宏先生受邀到中国人民大学进行经验分享...

4月2日,北京易驾佳信息科技有限公司创始人、机器人教练创始人马宏先生受邀前往中国人民大学,与MBA在学学生分享企业经营管理经验。从个人创业发展历程、多年来对驾培行业的洞察及转型升级方向等方面与大家进行了分享、交流。期间,马宏先生跟大…

[html] 说说你对<meta>标签的理解

[html] 说说你对标签的理解 设置meta标签 设置页面长串数字不与跳转防止长串数字电话或以邮箱的形式外链出去 ## 设置meta标签 IE适配用于IE浏览器的适配 设置meta标签 移动端IOS用于适配苹果手机,用于全屏显示 设置meta标签 清除页面缓存Cache-Control头域Cache-C…

实现控件的随意拖动

因为客户要求程序要在浏览器上运行,但是这些信息(这个程序只在政府某部门内部使用)并不需要公开,所以我们选择使用Windows应用程序,并将该程序嵌入到网页中。。。。 就我个人做的这部分简单的说下,我负…

导出sql文件_(一)SQL基本知识

一 、SQL的特点1.综合统一:SQL集数据定义语言DDL、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生 命周期中的全部活动(定义关系模式,插入数据,建立数据库;对数据库中的数据进 行查询和更…

文件下载时,文件名乱码问题

文件下载时,解决不同浏览器文件名乱码问题 public static String encodeFileName(HttpServletRequest request, String pFileName) {String userAgent request.getHeader("USER-AGENT");try {if (userAgent.contains("msie") || userAgent.con…

[html] 说说你对影子(Shadow)DOM的了解

[html] 说说你对影子(Shadow)DOM的了解 web component的API,用来给组件创建子DOM树,就像楼上说的,不受外部style影响,外部通过选择器查询也不会查到里面来。它有两种模式 open和closed,open模式可以获取shadow root&a…

的引用_左值、右值、左值引用、右值引用

【导读】:本文主要详细介绍了左值、右值、左值引用、右值引用以及move、完美转发。左值和右值左值(left-values),缩写:lvalues右值(right-values),缩写:rvalues直接上官网查,我一向倡导自己去懂得原理&…

常用的开始→运行→输入命令集锦

gpedit.msc-----组策略sndrec32-------录音机Nslookup-------IP地址侦测器explorer-------打开资源管理器logoff---------注销命令tsshutdn-------60秒倒计时关机命令lusrmgr.msc----本机用户和组services.msc---本地服务设置oobe/msoobe /a----检查XP是否激活notepad--------打…

小白兔生小白兔-菲波拉契数列问题

有一对小白兔,从出生后第3个月起每个月都生一对小白兔,小白兔长到第三个月后每个月又生一对小白兔,假如小白兔都不死,问每个月的小白兔总数为多少? 这道题是典型的斐波拉切数列问题,其特点就是从第三列开始就等于前两列之和,算法:…

[html] 解释下你对GBK和UTF-8的理解?并说说页面上产生乱码的可能原因

[html] 解释下你对GBK和UTF-8的理解?并说说页面上产生乱码的可能原因 gbk和utf8的理解我们这里将以最简单最容易理解的方式来描述GBK和UTF8的区别,以及它们分别是什么。GBK编码:是指中国的中文字符,其它它包含了简体中文与繁体中…

控制反转_Spring:IOC 控制反转

Spring 概述Spring 是什么Spring 是分层的 Java SE/EE 应用 full-stack (全栈式) 轻量级开源框架。全栈式:对各种主流技术和框架都进行了整合,同时对三层架构都提供解决方案。轻量级和重量级的划分主要依据就是看它使用了多少服务,启动时需要…

TAB选项卡

TAB选项卡:下载用Java Script模仿各种作业系统的选项卡,老外就是牛,不仅支援多样式的即时切换,同时也支援每个选项卡是否附带图示的切换选项,选项卡也可以上下切换。 转载于:https://www.cnblogs.com/meetrice/archive…

巨蟒python全栈开发flask5

1.轮询&&长轮询&&长连接 2.GeventWebsocket 3.Websocket群聊 4.Websocket单聊 5.websocket握手 6.websocket解密 7.websocket加密转载于:https://www.cnblogs.com/studybrother/p/10717550.html

[html] js放在html的<body>和<head>有什么区别?

[html] js放在html的和有什么区别? 在浏览器解析HTML中的时候,如果在head标签中遇到了script标签并且是同步执行的,那么就会影响文档的加载,如果引入的过多的同步脚本文件 那么加载会变得非常怪异且卡顿;但是放在body…

最后一封“情书”

本来以为自己是可以按照自己的想法去维系 可是发现自己的矜持对于你是一种恐惧 从退出“水云”的那天我就懂了 真的懂了 我并没想到“关注”变成了“监视”,这是对我的一种侮辱,比任何都! 心境不同了,没时间去做毫无意义的监视调查…

python向dict里添加_Python有条件地向Dict添加键

我试图从一个标题列表中生成dict,它将数据列“关联”到同一个实验。例如,我想转向:headers ["A_1","A_2","A_3","B_1","B_2","B_3"]进入^{pr2}$我的代码如下:cols …

Kubernetes探索学习005--Kubernetes的Controller模型和ReplicaSet伸缩

1.Kubernetes的controller pattern 需要认识到Kubernetes操作Pod的逻辑,都是由控制器来完成的。 查看之前写过的nginx-deployment的YAML文件 [rootkubernetes01 ~]# cat nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deploym…

mysql 索引实战

mysql 索引实战 之前有个项目,已经充分用MYSQL的调优调了,速度感觉还可以.但发现索引没用上.于是调整之.首先,数据库中有date字段,是int类型的,入库时用php的time()入库的,现在的需求是要求1天之内的记录,我们来看具体的写法,先看原来的$query "select * from…