加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

高端安全系列(三):软件设计 构建稳固基础(1)

(2009-11-06 17:38:10)
标签:

软件设计

it

分类: 安全

文/龚一斌

宽带业务的普及推动着运营商不断扩充网络容量;网络应用的蓬勃发展使传统的2~4层网络安全设备无法对流量进行精确控制,IT管理者们失去了对网络精细管理的能力;……应用需求推动着安全产品走向高端,是否具备出色的软件平台为基础,也成为与用户应用息息相关的关键所在!

1 高效率的软件平台设计面临的挑战

    网络容量的扩充以及对应用层流量深度扫描的需求推动着安全硬件平台设计的不断发展,传统的基于单核处理器的集中式硬件平台已经不能满足需要,NP、FPGA、ASIC、多核处理器等技术被越来越多的应用于安全产品的硬件设计中。由于NP、FPGA、ASIC、多核处理器等技术各有优缺点(参考表1),没有任何一种技术能够一统天下,多种技术的混合应用更能扬长避短,充分发挥各种技术的优点。“通用处理器+FPGA”、“通用处理器+NP”、“多核处理器+NP+专用ASIC”、“多核处理器+FPGA”等硬件架构被广泛应用于高端安全产品的硬件设计中。

特性

ASIC

FPGA

NP

多核处理器

可编程能力/易用性

可以运行OS

不支持

不支持

不支持

支持

编程

不支持动态编程

专用逻辑开发语言,开发效率低

微码编程,效率居中

C语言编程,效率高

指令空间

受FPGA容量限制

受微码空间限制

不受限

数据转发性能

转发处理性能

优化的包转发指令

支持

支持

支持

高效率内存子系统

支持

支持

支持

优化的包重组、转发、缓存调度

支持

支持

支持

支持

大容量L2 Cache

不支持

不支持

不支持

支持

内容与安全处理加速

硬件加密

部分专用ASIC支持

可通过编程支持

不支持

普遍支持

正则表达式,模式适配

部分专用ASIC支持

可通过编程支持

不支持

部分支持

TCP硬件加速

部分专用ASIC支持

可通过编程支持

不支持

部分支持

硬件压缩与解压缩

部分专用ASIC支持

可通过编程支持

不支持

部分支持

表1 芯片技术对比

    硬件设计复杂度的提高给高端安全产品的软件设计带来了新的挑战,如何充分发挥各种硬件芯片的处理性能,使全局处理性能最优?什么样的设计能兼容各种类型的硬件平台,具备良好的复用性?这些是每一个安全软件的开发者所面临的挑战。

高性能软件平台设计的最佳实践

    硬件是基础,软件是灵魂,高端安全产品软件设计要兼顾高效、灵活、稳定、开放的原则,这样才能使产品满足高端应用的需要,更加具有竞争力。

2.1 高效性设计原则

    高端产品以性能为王,高效率的安全产品软件设计必须要解决好下面的三个问题:

  • 分层设计模型是基础架构

    安全产品的特点是需要对流经设备的数据流进行深度解析,根据解析的内容匹配对应的策略进行处理。报文的深度解析和内容匹配处理是最耗时的,要想提高系统的整体处理性能就要尽量减少报文深度解析的工作。网络应用虽然千变万化,但都有一个共同的特点:网络应用都是基于流的。

http://www.h3c.com.cn/res/200904/15/20090415_748733_image001_631268_30008_0.png构建稳固基础(1)" TITLE="高端安全系列(三):软件设计 构建稳固基础(1)" />

图1 安全软件分层处理模型

    高端安全产品软件设计需要考虑将包处理技术与流处理技术有机结合,系统处理分为软件慢速路径、软件快速路径、硬件快速路径三个层面。对于不需要进行深度解析的数据流或已经完成解析的数据流直接通过硬件快速路径处理后转发,对于已经明确处理策略的数据流通过软件快速路径进行加速处理,其它数据流走软件慢速路径进行深度解析处理。分层设计不仅充分发挥了专用硬件芯片的处理性能优势,也减轻了通用处理器的处理负担,系统整体性能得到有效保障。

  • 多线程并发设计是提升性能的关键

    ASIC、FPGA、NP、多核处理器等高性能处理芯片的共同特点是利用集成在芯片内部的大量微处理引擎对数据流进行并发处理,以提高整体的处理性能。软件设计要尽量使大量的微处理引擎并行处理,减少引擎“等待”时间,这样才能充分发挥芯片的处理性能。下面以基于多核处理器的软件设计模型为例来介绍一下常用的模型。

http://www.h3c.com.cn/res/200904/15/20090415_748734_image002_631268_30008_0.jpg构建稳固基础(1)" TITLE="高端安全系列(三):软件设计 构建稳固基础(1)" />

图2 高端安全软件设计模型

(1)串行处理模型

    将报文处理的全流程切割分段,每个core负责其中一个分段的处理。其优点是可以最大限度的避免临界资源,缺点是各分段流程的差分比较困难,不容易做到各个core的负载完全均衡,扩展性差。

(2)并行处理模型

    每个core的功能完全相同,将所有报文负载分担到各个core中进行并发处理。其优点是软件设计简单,扩展性强,缺点是临界资源访问比较频繁,软件对临界资源的访问如果控制不好会导致性能急剧下降。

(3)混合处理模型

    根据报文各处理阶段的不同特点,将临界资源访问冲突严重的处理放在独立的core上完成,负载较重且临界资源访问冲突较少的处理放在多个core上并行负载分担处理,尽量减少分段的数量以降低软件设计的复杂度,提升软件的可扩展性。此方式结合了串行处理模型和并行处理模型的优点,在实际应用中最为常见。

  • 确保临界资源访问的合理性

    并行处理的核心技术是减少临界资源的访问,除了在软件处理流程的设计上尽量减少临界资源以及临界资源的访问周期,还需要充分利用读写锁、原子操作、内存镜像等机制来提高临界资源的访问效率。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有