Board logo

标题: 网络设备中的多核OS的讨论–Case Study Hillstone StoneOS [打印本页]

作者: network    时间: 2010-12-27 19:39     标题: 网络设备中的多核OS的讨论–Case Study Hillstone StoneOS

网络设备中的多核OS的讨论–Case Study Hillstone StoneOS


引子:
10月中旬的时候,首席发了个北京上地的pre-ipo的网络通信公司招聘帖子。里面的股票,重金一下子刺激了我的眼球。凭借着对linux kernel和虚拟化技术的热爱,我毅然投了简历。结果如泥牛入海,杳无音讯。但在此期间内,我为了方便面试提前做了些调查功课。在目标上根据北京,上地,海龟,通信安全公司,我的第一反应和大家一样,认为是山石,但是随后我又锁定了另一家公司—a10 networks。Google了下2家公司,发现它们的产品都是基于多核平台,特别的它们都开发了基于多核的OS。于是多核,智能化调度,64位并行OS 一下子取代了股票和重金对我的眼球开始了新一轮的冲击。作为一名内核开发的爱好者自然想了解下这些OS是如何实现的。因此特地以山石的StoneOS写了这篇文章,希望和弯曲的高人能一起探讨一下。
资料来源:
并没有Google出太多的相关资料,还好有相关的白皮书,于是我就以白皮书为参考资料来写这篇文章。如果有什么理解错误,希望大家能及时指出。
http://www.hillstonenet.com.cn/cms/down/pdf/FullyParallelArchitecture-WhitePaper.pdf
http://www.hillstonenet.com.cn/cms/down/WhitePaper/SafetyRoof-WhitePaper-0424.pdf
山石使用的是Cavium公司的octeon系列的产品,具体型号我不知道。但是并不影响我们的讨论。
产品架构:
从山石的白皮书和他们的产品宣传看:
1.  硬件平台架构:

2.  StoneOS软件架构

Hillstone的网络级安全是由ASIC来实现,而耗费cpu的应用层的安全加速则由多核cpu来实现。
3. 全并行架构

Hillstone点出了当前并行的技术难点,他们是通过实现3个并行来解决:板卡,cpu和核内多功能。
1.  板卡间的并行应该是IOM硬件来将负荷智能分发数据到各板卡
2.  各个板卡上的cpu的功能应该是对等的,除非是某个数据包必须要在某个cpu上处理,否者数据包可以在任意一个cpu上被处理
3.  每个cpu core上跑的软件也是相同的,这样就能实现全并行数据处理
1是硬件来处理,2最终是由3来决定的。
从白皮书来分析的话,最让我不明白的是3的实现:
我原本的理解是各个cpu之间是smp的关系,每个cpu的处理功能都是一样,但是cpu里的多个core是amp的,它们根据要处理的功能的多少和先后关系,把当前的cpu内的核划分成不同的group来实现流水线并行。
但是根据白皮书的上图和山石的宣传看,每个core上都集成了所有的功能能让一个数据包在该core上做完所有的处理, AV, IPS,…, Qos, FW等。
这样的话,问题就来了:
多个功能共享单个core时,一个数据包是只能串行的走完各种功能的扫描。如何实现功能并行处理呢?当然如果说把这些功能弄成流水线,core每次读入一批数据包,然后依次切换到对应的功能处理模块线程。即便是在cpu性能高的时候这行 但是随着业务的发展要处理的功能增多时,各种功能模块切换的开销也会递增,cpu利用率也会变低。另外一个问题就是某个流水线阶段处理较慢的话,除了动态加大它在该core上的处理时间外,没有其它的加速方法了。 不知道山石的真实设计究竟是咋样的。
我猜想的设计可能是:
1.  每个core都是硬件多thread,但是山石使用的是octeon 芯片,octeon芯片好像没有实现硬件多线程
2.  虽然每个core上的功能一样,但是每个core只全速跑设定的某个功能,除非有命令让它执行另外一个功能。这样的好处是将cpu里的core划分成不同的组来执行功能处理流水线,当某个组在处理某个功能流水阶段(比如:IPS)很吃力时,可以把其它的负荷较小的组里的core划分过来来增强处理,因为每个core的代码是相同的,这种划分是很容易的,通过设置某个标记就能让core改变要执行的功能。整个网络负荷小的时候还可以减少各个group里的core数量。这样每个core都是全速的跑应用而且没有任何的线程切换开销。
希望山石的大牛能出来给我指点一番哈。
综上:
StoneOS大概由控制平面+数据平面多核的资源管理+数据平面上每个核的代码 组成
1.  控制平面的话:处理各种命令,显示数据平面的处理结果,进行各种配置和管理
2.  数据平面多核的资源管理:在IOM分流的基础上,监控各个cpu的状态,能根据实际负荷进一步的对数据包做智能调度。同时对各cpu内的各核状态也进行必要的调整
3.  数据平面上的代码:主要是针对应用层的处理,按照实现安排好的顺序走完功能流水线
4.  因为需要使用共享资源,所以如果没有硬件提供同步与互斥的话,stoneos需要提供能同步和互斥访问共享资源的软件手段。
最后:
在资料查找过程中会发现,各厂家的多核基础架构都大同小异。都有自己对应的OS,比如:
A10 networks的ACOS
http://www.a10networks.com/products/axseries-acos-architecture2.php
http://www.a10networks.com/resources/files/WP-ACOS.pdf
http://www.a10networks.com/resources/files/SB-ACOS.pdf
anchiva的AnchivaOS
http://www.anchiva.com/download/AnchivaOS_V1.0.pdf
还有国内的SecOS, TOS,几乎各个安全厂家的多核产品都有自己的OS,通过对应的白皮书可以看到去除各自的业务需求,在OS这层的功能实现应该是大同小异。大家要有兴趣也可以继续分析。
谢谢能有人看到这里,说实话这种文章不好写,没见过相关的产品,也没用过网络多核处理器,好多东西只能凭着对白皮书的理解来写。写了一半的时候曾想放弃了,但是想了下多核是将来的一个趋势,肯定有很多跟我一样想深入了解下多核操作系统的应用的人。网络无疑是多核应用的最多的领域,然而很多东西只有弄过了才能真正的了解,但是这种机会太少了。有时候行内人或者牛人的一句评论比很多人花费几天时间研究出的东西还有价值,希望这篇文章能有这种效果
(没有打分)


[td]



工具箱
本文链接 | [url=mailto:?subject=Check out This Article&body=http://www.tektalk.org/?p=13332]邮给朋友[/url] | 打印此页 | 44条用户评论 »



雁过留声

“网络设备中的多核OS的讨论–Case Study Hillstone StoneOS”有44个回复






欢迎光临 博威---云架构决胜云计算 (http://bbs.boway.net/) Powered by Discuz! 7.2