网络设备中的多核OS的讨论.docx
《网络设备中的多核OS的讨论.docx》由会员分享,可在线阅读,更多相关《网络设备中的多核OS的讨论.docx(40页珍藏版)》请在冰豆网上搜索。
网络设备中的多核OS的讨论
精品
网络设备中的多核OS的讨论–Case
StudyHillstoneStoneOS
作者deltali|2010-12-2307:
30|类型行业动感|73条用户评论?
分享到:
新浪微博QQ空间开心人人DiggFBTwitter
引子:
10月中旬的时候,首席发了个北京上地的pre-ipo的网络通信公司招聘帖子。
里面的股票,重金一下子刺激了我的眼球。
凭借着对linuxkernel和虚拟化技
术的热爱,我毅然投了简历。
结果如泥牛入海,杳无音讯。
但在此期间内,我
为了方便面试提前做了些调查功课。
在目标上根据北京,上地,海龟,通信安
全公司,我的第一反应和大家一样,认为是山石,但是随后我又锁定了另一家
公司—a10networks。
Google了下2家公司,发现它们的产品都是基于多核
平台,特别的它们都开发了基于多核的OS。
于是多核,智能化调度,64位并
行OS一下子取代了股票和重金对我的眼球开始了新一轮的冲击。
作为一名内核开发的爱好者自然想了解下这些OS是如何实现的。
因此特地以山石的
StoneOS写了这篇文章,希望和弯曲的高人能一起探讨一下。
感谢下载载
精品
资料来源:
并没有Google出太多的相关资料,还好有相关的白皮书,于是我就以白皮书
为参考资料来写这篇文章。
如果有什么理解错误,希望大家能及时指出。
e-WhitePaper.pdf
itePaper-0424.pdf
山石使用的是Cavium公司的octeon系列的产品,具体型号我不知道。
但是
并不影响我们的讨论。
产品架构:
从山石的白皮书和他们的产品宣传看:
1.硬件平台架构:
感谢下载载
精品
2.StoneOS软件架构
Hillstone的网络级安全是由ASIC来实现,而耗费cpu的应用层的安全加速则
感谢下载载
精品
由多核cpu来实现。
3.全并行架构
Hillstone点出了当前并行的技术难点,他们是通过实现3个并行来解决:
板卡,
cpu和核内多功能。
1.板卡间的并行应该是IOM硬件来将负荷智能分发数据到各板卡
2.各个板卡上的cpu的功能应该是对等的,除非是某个数据包必须要在某
感谢下载载
精品
个cpu上处理,否者数据包可以在任意一个cpu上被处理
3.每个cpucore上跑的软件也是相同的,这样就能实现全并行数据处理
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,比如:
A10networks的ACOS
p
anchiva的AnchivaOS
还有国内的SecOS,TOS,几乎各个安全厂家的多核产品都有自己的OS,通过对
应的白皮书可以看到去除各自的业务需求,在OS这层的功能实现应该是大同
小异。
大家要有兴趣也可以继续分析。
谢谢能有人看到这里,说实话这种文章不好写,没见过相关的产品,也没用过
感谢下载载
精品
网络多核处理器,好多东西只能凭着对白皮书的理解来写。
写了一半的时候曾
想放弃了,但是想了下多核是将来的一个趋势,肯定有很多跟我一样想深入了
解下多核操作系统的应用的人。
网络无疑是多核应用的最多的领域,然而很多
东西只有弄过了才能真正的了解,但是这种机会太少了。
有时候行内人或者牛
人的一句评论比很多人花费几天时间研究出的东西还有价值,希望这篇文章能
有这种效果
(没有打分)
工具箱
本文链接|邮给朋友|打印此页|73条用户评论?
雁过留声
“网络设备中的多核OS的讨论–CaseStudyHillstoneStoneOS”有73个
回复
1.陈怀临于2010-12-237:
34上午
DeltaLi,你是自己在乱投的,还是把简历给了我?
最好的办法是读者们
把简历都在我这里存一个copy。
。
。
。
。
。
2.陈怀临于2010-12-239:
30上午
感谢下载载
精品
另外,透露一哈。
山石的N个创办人没事也在这里溜达,潜水。
所以,
你这个文章一出来,后果会很严重。
。
。
。
。
。
山石的同学们,回答人家
的技术问题呀。
。
。
裸奔一下嘛。
。
。
。
。
。
我来谈一下:
前端的Classifier是一个关键。
另外,PCI-E的ASIC还是不错。
是NetScreen的方案体系结构的一种继
承。
总之,多核+ASIC确实不错。
表扬一哈。
3.WillChie于2010-12-2311:
09上午
坊间传闻,ASIC不存在。
4.理客于2010-12-233:
38下午
一般的产品如何设计定位,是决定于如何平衡客户需要、竞争对手和自身
资源这个三角关系,不同的公司,这个三角关系是不一样的。
比如华赛:
客户方面和运营商好、竞争对手C/J为主、自身资源可以利用
路由器平台,那么它的安全产品必然要和山石不同。
华赛有硬件平台好、
共享硬件成本低,利用HW的运营商关系等好处,但劣势是缺乏企业网
的经验
比如山石:
客户方面主要是企业用户、竞争对手是诸多企业级安全厂商、
感谢下载载
精品
自身资源有NS的ASIC功夫
在此三角关系上,再考虑业界趋势判断,一起来确定产品的功能性能、主
打客户、生命周期、成本控制、核心器件选型等等。
这里一个是要有牛人
掌舵,另外一个就是要有系统的分析管理而不是关键时刻总是拍脑袋。
5.billy于2010-12-234:
31下午
to理客:
非常好的点评对于绝大多数产品经理来说真应该看一下你
这段话尽管未提及山石设计本身但是跳出“设计”的框框来统观产
品的“定位”这一点尤为关键大多数网络/安全公司都缺乏这样的产品
经理人云亦云亦步亦趋的反而更多一些
6.小错误于2010-12-235:
20下午
图2是P2P/IM吧?
7.yfydz于2010-12-235:
33下午
如果真有ASIC,小包怎么才3G?
8.kevin于2010-12-235:
47下午
用商用芯片的后果就是产品同质化,每家的xxOS都差不多,最后做出来
的产品规格也差不多
9.deltali于2010-12-236:
16下午
谢谢首席帮忙把名字排版了一下。
感谢下载载
精品
其实没啥,真正的核心还是在设计细节和对业务的理解。
大面的东西估计
各大厂家都差不多。
只不多是对我们这些局外人来说还比较神秘。
强大的ASIC设计能力,对业务精准的划分,才是这些OS的存在基石。
另外:
首席,我没法瞎投的,你那个帖子好像只留了你的邮件。
不过这只是写文
章时开的小玩笑,我都工作多年了,被工作据过也据过工作,心理能力
ganggang的。
其实说实话股票和高薪啥的都是一时的刺激,真正我还是想去个能耐心踏
踏实实做事的公司,不要忽悠。
真正搞技术的人最大的成就就是有天能指
着某个产品说,嘿,这是我搞出来的。
当然必须是很骄傲的说。
10.陈怀临于2010-12-236:
20下午
你把resume给我一个。
刚才有人越洋电话来要人了。
。
。
整的现在像我
失职的样子。
。
。
11.天外有天于2010-12-236:
50下午
没仔细看,随便说说。
如果只是协议和状态处理这些(ip包解码),
多核就能做的很好,似乎用不着asic,
如果是ips和av,那么多核的网络处理器
性能很差,
感谢下载载
精品
所以要么就一个多核处理器,包打天下,
性能差点,好在便宜。
要么加处理器(各家五花八门,asci,fpga,协处理器都有)做内容检测。
12.陈怀临于2010-12-236:
58下午
说良心话,我基本上没有真正的琢磨石头OS。
据说医生不给亲人看病;
首席不给朋友把脉:
-)。
有时瞄一瞄结构图。
总觉得这个48G的Fabric是个大问题。
估计一灌
multicasttraffic,就歇了?
有没有测试数据?
13.打酱油的于2010-12-237:
15下午
请教首席,谁家的七层设备灌multicast不歇?
他的架构是如何设计的?
14.陈怀临于2010-12-237:
30下午
咔咔卡。
我的意思是,我感觉StoneOS就是灌正常的throughtraffic
都歇。
当然要求过分了。
反正石头一定是通过switch接在router后面的。
不能拿routing的要求去要求stoneos。
。
。
15.小飞侠于2010-12-237:
58下午
A10的系统构架主要是为了解决L4-L7的并行处理问题。
16.老韩于2010-12-2310:
20下午
感谢下载载
精品
文中引用的资料太老了,基于此讨论价值不大
17.陈怀临于2010-12-2310:
49下午
我刚才与石头的CEO打了个电话。
他吞吞吐吐的告诉我:
似乎没有ASIC
了。
。
。
情何以堪!
是,如果有ASIC,FPGA,还是很花银子的。
。
。
18.deltali于2010-12-2310:
53下午
to老韩:
如果你有新资料,而且方便公布的话,也可以发出来让大家分析下。
其实这个东西就像大家分析魔术一样,观众来分析就是好个明白,但是魔
术师是不会告诉你答案的,尽管他们知道大多数人即使知道答案也不会去
表演魔术一样,毕竟行规如此。
当然了如果能有人点拨一两下,那就是这篇文章的最大收获。
没有也没啥,
就当是我的一个阅读笔记。
19.deltali于2010-12-2310:
57下午
to首席:
哈哈,这么晚还在奋斗啊。
感谢下载载
精品
其实当时在写文章的时候还在想,对于没有实力研发ASCI的小厂家来说。
通过并行把网络功能和应用功能做到多核上,不就能冲击下低端市场了
吗?
20.天外有天于2010-12-2310:
59下午
哈哈哈。
果然是没有asic的。
。
其实如果用acic或者别的协助处理,
就要下决心把ips做到G以上(av木有办法滴),
但是ips又涉及实时响应和分析队伍,
这个比较难搞。
。
。
21.老韩于2010-12-2311:
16下午
新资料,Release的我原来写文章都引用过了,可翻查。
22.ABC于2010-12-2412:
20上午
现在硬件平台也同质化了。
如果这里有做平台的或平台的客户,应该知道
我说的是谁。
基于平台的硬件开发也是个方向,好处坏处各半吧。
做一颗ASIC在设备里面,真的需要很大的投入和很多的积累。
也只有思
科和有专业芯片体系支撑才能真正去做。
刚看的第一个帖子是说FPGA+A9,用来做板卡或设备未必不是个新选择。
感谢下载载
精品
23.WillChie于2010-12-2412:
24上午
传说asic不适合以后应用方向的发展,不只是在多核的能力下体现不出
多高的性能,而且还影响软件架构。
24.清华土著于2010-12-243:
15上午
每个core上都集成了所有的功能能让一个数据包在该core上做完所有
的处理,AV,IPS,,Qos,FW等。
//真跑起来了,FW的只是更新下seq,AV算下哈希,IPS走走prefilter,
QoS则只是根据一次性的policy查找进某个queue,这时候不并行也快。
真跑不起来了,AV文件重组,IPS正则表达式匹配,这时候再并行也还
是慢。
多个功能共享单个core时,一个数据包是只能串行的走完各种功能的扫
描。
如何实现功能并行处理呢?
当然如果说把这些功能弄成流水线,core
每次读入一批数据包,然后依次切换到对应的功能处理模块线程。
//Core一次从POW读一个包出来,由硬件完成保序;费劲的处理可以
resubmit到其他powgroup,交由片上(crypto/dfaengine)和片外
(asic)协处理器处理,之后再回来,实现流水作业。
//ps:
谁能搞清hillstone中对cache的管理和对packetdata而非work
的存储和优化?
FullDPI玩的是包,不是meta了。
25.kk于2010-12-243:
34下午
感谢下载载
精品
首席还需要和石头的CEO确认一下有没有ASIC,他们的项目没有请你先
review?
不过好像有的安全公司经常把FPGA说成是ASIC。
突然发现蹦出来这样一个公司,,什么背景?
首席
分析一下?
26.today.tusday于2010-12-247:
58下午
这样的话,问题就来了:
多个功能共享单个core时,一个数据包是只能串行的走完各种功能的扫
描。
如何实现功能并行处理呢?
当然
胡乱猜想一下:
数据面不需要并行处理吧,一个连接一个控制块,来一个
包查一次HASH表,这样收一个包处理一个包的速度应该很快的。
可能
需要将LINUX内核的中断处理去掉,CPU直接暂询网卡及周边设备的寄
存器状态。
这样,整个系统一个锁都不需要。
不过可能需要解决数据面会
话与CPU的会话保持问题
27.仰望于2010-12-249:
39下午
是H3C出来的人搞的安全公司吧,目的是进
入政府,军队行业的项目,貌似老大的是王冰?
高人指点一下看看。
28.陈怀临于2010-12-2410:
02下午
感谢下载载
精品
在杭州。
。
。
感觉还真是H3C出来的弟兄:
-)。
。
。
哪天我来写个初创公司,推荐一哈。
安全市场的市场pie很小,但为啥能容纳这么多小公司。
我反正也是想不
明白。
Switch,Routing市场大,但其实反而没有许多小公司。
。
。
为
什么?
Barrier高?
29.中兴小象于2010-12-251:
58上午
“安全市场的市场pie很小,但为啥能容纳这么多小公司。
我反正也是想
不明白。
”
因为需要无数的”墙”
“Switch,Routing市场大,但其实反而没有许多小公司。
”因为业务同质化
30.戴小鼠于2010-12-254:
44上午
问下小象,墙是啥意思?
31.戴小鼠于2010-12-254:
48上午
使用asic,硬件功能扩展比较难了。
控制面流量不大,不需要并行处理的。
我感觉是弄一个core专门处理控
制面,没有什么并行。
其他核用来并行处理数据流
感谢下载载
精品
32.防火墙于2010-12-258:
24下午
,听说还有大鱼!
33.multi-core于2010-12-2511:
25下午
感谢弯曲评论,搭建了一个与高端人士沟通的平台,能了解到很多前言的
技术。
同时感谢给我发邮件的精英分子,因出差耽误了邮件处理,导致延迟产生,
但是没有丢包,都回复了。
本公司规模小,但是里面的人都是精通安全编程、安全攻防,现在想把产
品移植到多核,或者大家有什么更好的平台架构给我推荐,再次感谢大家。
我的邮件地址:
asdf8360@
期待着大家的建议,同时也招聘兼职或者专职!
34.multi-core于2010-12-2511:
31下午
回答29楼的中兴小象:
其实安全防护不等同于防火墙。
构建安全保障体
系需要多种技术手段共同创建,才能保证用户的安全,降低用户的风险。
但是遗憾的是并不是大安全厂商都能通吃一切,相反有些小安全公司正是
精通某个领域的小的安全技术,因此就存活了,如我们公司很小,但是生
存下来了。
35.multi-core于2010-12-2511:
46下午
感谢下载载
精品
邀请对WEB攻防有研究的人士加盟,最近正在做WEB防火墙产品开发
规划,恳请大家拍砖提意见。
请发asdf8360@
36.加菲猫于2010-12-266:
50下午
看完了~哈哈,个人感觉
1.多核并发的关键在于数据平面最底层的分发策略.
比如:
按连接发起者地址分发(源地址),如此一来,同一个用户的连接只
会在一个core上面处理,需要跨core共享的数据就基本上可以忽略了.
流跟踪,用户跟踪,等数据结构
都不需要并发保护机制.
2.数据平面上,每个core需要完全负责处理被分发到该core上的流.如:
流跟踪,DPI,当前流统计,甚至是QOS.这样,core都在干活,而且大家
互相之间基本上没有需要共享
的数据,都在个忙各的.数据平面提供API供管理平面获取流信息,DPI
处理结果