SDN & OpenFlow 3

来源:互联网 发布:知乎 希拉里 维基 编辑:程序博客网 时间:2024/06/05 18:10

http://www.tektalk.org/2012/07/23/sdnopenflow的一点想法/



我对SDN和OpenFlow的理解:
09年接触到OpenFlow,当时在梳理netfpga的开源工程,想在写的netfpga书里面选择几个典型的projects,感觉OpenFlow这个项目很有意思,把所有的网络处理抽象成了对flow的处理,用多个标识域对flow进行定义,关键是针对flow标识的查找过程,根据查找结果对flow进行操作。因为研究生期间的课题主要是网络算法硬件化,这里面的关键是协议header的mux、路由查找和NIDS的包内容扫描(字符串匹配算法的硬件化),所以感觉OpenFlow这个思路很有点将网络算法抽象化的意思。
但是当时一直没明白为什么要这么做?因为一直做网络算法硬件化,所以持续跟踪Nick课题组的动向,后来10年底接触到SDN,才明白是怎么回事。
这么说吧,SDN是一个新的网络生态系统,OpenFlow是众多实现SDN的一种开放协议标准,可以说OpenFlow的杀手锏就是开源,开放的态度,理解这一点非常重要,后续围绕SDN/OpenFlow做产品化思路的startup,一定要深度认识这一点。

那么为什么Nick想到了SDN,想到了OpenFlow呢?
先说SDN,Nick一再地把SDN与PC生态系统做比较,我们知道PC系统的每一次革新都会给硬件创造新的抽象层,比如最初的OS到如今的虚拟化,而支撑整个PC生态系统快速革新的三个因素是:
 Hardware Substrate,PC工业已经找到了一个简单、通用的硬件底层,x86指令集;
 Software-definition,在软件定义方面,上层应用程序和下层基础软件(OS,虚拟化)都得到了极大的创新;
 Open-source,Linux的蓬勃发展已经验证了开源文化和市集模式的发展思路,成千上万的开发者可以快速制定标准,加速创新;
再来看看网络系统,一方面路由器设计我们已经迷失方向了,太多复杂功能加入进来,比如OSPF,BGP,组播,NAT,防火墙,MPLS等,早期定义的“最精简”的数据通路已经臃肿不堪。另一方面从早期的动态网络到现在的NP,我们从来没有弄清楚一个Hardware Substrate和一个开放编程环境的清晰边界在哪里。
Nick认为如果网络生态也能效仿PC生态,遵循三要素,就可以迎来网络生态的大发展,而支撑SDN的关键是找到一个合适的Hardware Substrate,于是有了OpenFlow,描述了对网络设备的一种抽象,其基本编程载体是flow,定义flow,操作flow,缓存flow等,这个协议就是网络世界的flow指令集,它可以作为硬件架构和软件定义的一个桥梁,这个协议本身可以不断演进,下层的硬件架构可以跟着持续演进,上层的网络软件可以保持兼容,这样整个SDN生态圈就可以很好的持续发展。
另外,数据中心网络的出现,好像给OpenFlow带来了天然的用武之地,实际上查阅Nick早期的论文就明白:OpenFlow的来源是为了解决企业网管理问题的Ethane(paper,Ethane:Taking Control of the Enterprise)。从Nick以往的paper可以看出,他主要的强项是使得路由器设计可以量化分析(计算机体系架构-量化分析方法),随着他对企业网和数据中心网络的设备的研究,慢慢的有了OpenFlow的思想,然后有了对SDN的思考和布局。

SDN是一个用于数据中心网络的新的网络生态圈,OpenFlow是其中的一个关键环节,要实现SDN完全可以不采用OpenFlow(思科和Juniper不就是这么干嘛),除此之外,还包括运行在OpenFlow硬件底层上的网络OS-nox(http://www.noxrepo.org/),SDN仿真测试平台mininet(http://yuba.stanford.edu/foswiki/bin/view/OpenFlow/Mininet),当然还有大量的网络上层应用。

SDN/OpenFlow中的产品化机会:
如果从早期持续跟进SDN/OpenFlow的话,你就会发现这个新东西的出现直至今天的火爆完全遵循Gartner的技术成熟度曲线,每年Gartner会发布一个Hype Cycles系列报告,用来描述每一项创新技术所经历的5个阶段:技术萌芽期,过热期,幻觉破灭期,复苏期,生产力成熟期,如下所示。

记得09年OpenFlow的概念刚出来时,很多人不以为然,认为不过是研究机构自己玩的新概念,等到了11年底,SDN和OpenFlow火起来时,很多人又蜂拥而上,觉得好像人人都有机会从中获取些什么。我的理解是,在技术浪潮风起云涌之际,总有人默默地分析,学习,充分理解,慢慢行动,不断修正,最终能做出一些东西的。甭管炒得有多火,要想很好的解答上面的问题,最重要的是如何在数据中心中快速地部署SDN,让用户用的很舒服(百度,腾讯等),作为一个平台支撑大量的应用。
先想一个问题:假如现在有一个做过很多年网络系统/网络设备设计的团队,在SDN/Openflow这么火爆的情况下,怎样才能抓住机会准确把握未来方向,做出占据一定市场份额的产品呢?
前面Google已经宣布自己利用OpenFlow部署/管理数据中心网络,硅谷截至目前已经涌现几个代表性的公司:Big Switch Networks,Nicira Networks等,而且众多巨头也已经拥了进来。对于小团队,小公司怎么办?实际上目前所有的公司都遵循两种思路:一是在现有网络/网络设备基础上尽快部署的问题,Nicira Networks的OpenvSwitch;二是全新的硬件架构,支持OpenFlow协议和SDN生态圈。
从我个人的理解,感觉这个产品化的思路要遵循“逐步打入SDN生态圈,产品化先部署后演进,同时要非常open”,具体的就是:
第一点先吃透SDN生态圈的方方面面(好比是一帮对SDN狂热,深度研究的技术文人),需要一个短小精悍的团队,一方面写写paper,编写SDN/OpenFlow技术书籍,跟进甚至加入OpenFlow协议起草,就跟无线通信协议的标准制定一样,只有充分融入SDN生态圈,慢慢在圈内打出口碑,才有机会切入进去;
第二点产品化先部署后演进(好比是一帮经验丰富能系统思考,且实干的工程师),根据自己前期技术积累逐步制定从SDN生态圈的那个方向去做产品化,同时要特别注意差异化。比如盛科,积累在网络处理芯片上,最终的介入点肯定也是IC,但是这里要理解几点:是在已有产品的基础上加支持OpenFlow的模块?还是针对OpenFlow协议演进方向做专门的系统芯片?我赞成同步进行,“先部署后演进”。关于差异性,不知是否接触过《破坏性创新》系列书籍,硅谷有个很有意思的新创公司vArmour Networks,这是当年netscreen几个大佬针对OpenFlow的startup,因为netscreen的安全背景,这个公司的目标就是将网络安全的方方面面跟SDN/OpenFlow结合起来做事情。说实话,我没有知道这个公司之前,还真没有把安全和OpenFlow放在一起系统的思考。
这里实际上需要考虑的事情非常之多,比如开发针对OpenFlow协议的系统芯片,pipeline查找表的设计,端口和流量的权衡,将nox移植到这个硬件架构上,将mininet仿真测试平台无缝结合。自己做出来的芯片跟市场上的相比是否有性价比。总之,肯定有很多不清楚的困难再等着。
但是我相信,只要充分理解SDN/Openflow,也就是方向明确,逐步介入ONF,结合盛科前面的技术积累,一定是可以做出一些成绩的。目前IDC预测到2016年SDN的商业价值是20亿刀,任何一个小团队只要能顺利进入这个市场,前景都是客观的。
第三点就是非常open(好比是一帮理解网络产品和应用的产品经理),从Nick把SDN/OpenFlow的推广来看,这一点非常之重要,任何时候都不能忘记,有这么几点:
 如果说只做针对OpenFlow的系统芯片,那就需要一个强有力的系统设备合作商,或者至少有一家愿意同舟共济的小系统厂商;
 必须有一个可以部署数据中心的合作伙伴,因为这个产品最终是否有竞争力,不光是自己关起门来搞搞,关键是需要与数据中心用户充分合作,比如百度,腾讯等,然后他们的大量的数据中心管理,安全应用都可以作为这个产品的测试床,看看google就知道了,他宣称自己成功部署OpenFlow在数据中心比什么都有号召力;
 在SDN/OpenFlow界充分交流,分享。通过不断的吸收和分析确定自己的产品化方向,也同时引导用户和业界的风向,Nick就是这么干的;
 开放是为了一起抱团,壮大,我感觉在SDN/OpenFlow生态圈,谁更艺术性,技巧性的open,谁最终就能走的更远,所以不看好思科等关起门来搞自己的SDN。

推荐一本书《Network Algorithmics: An Interdisciplinary Approach to Designing Fast Networked Devices》,非常不错。