SDN&Openflow的一点想法

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




我对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》,非常不错。

(4个打分, 平均:5.00 / 5)

雁过留声

“SDN&Openflow的一点想法”有35个回复

  1. 岁月如烟 于 2012-07-23 6:19 下午

    年初有人(好象是某权威咨询机构)预计,SDN的成熟和部署约需五年,现在有google和vmware冲锋在前,在datacenter,我觉得用不了五年了。

  2. jeep123 于 2012-07-24 1:00 上午

    莫非作者就是《零存整取NetFPGA开发指南》的作者?

  3. 理客 于 2012-07-25 6:55 上午

    openflow可以死,但SDN一定活。最终的生存之道,一定是比现有的产品方案能大幅降低TCO,否则无论它有多先进,初始有多风光,都不得不死,比如铱星,比如ATM,这是人类进步的一个基本价值规律。
    就SDN来说,它具有长期大幅度降低网络成本的本质,所以一定活。
    open之所以能降低成本的核心在于量,所以用专用的芯片比如ASIC,甚至不易编程的pipeline都未必是正确的选择,有效降低成本需要的是通用转发芯片,硬件转发芯片将是NP和多核的PK,在高性能网络,核心转发代码一定是少的,否则就很难高性能,目前路由器越来越复杂,但实际上针对某个具体固定的场景,使用的代码可能只是总体代码的1/3,所以SDN可以按需定制。
    只要量上来,即使复杂如X86的芯片,也会按照摩尔定律把成本降下来,SDN的硬件是核心转发NP/多核+可选的TM可编程芯片+可选的交换芯片,至于要SDN的生态系统核心掌握在谁手里,现在说鹿死谁手还为时尚早。
    open的本质在于海量,如果不能达到海量的目的,就一定会死,达到海量的手段是SDN

  4. solmyr 于 2012-07-26 11:33 下午

    以前的网络是由运营商为主推动,因为运营商是最大的客户。现在的网络,话语权已经慢慢转移到互联网公司手上了。紧跟客户需求一定是没错的,所以SDN肯定能活。
    至于of,由于有了open,就算这次活不下去,也一定可以死灰复燃。开源了之后就可以有更多下里巴人来搞,而客户也希望下里巴人的价格。

  5. 云舒 于 2012-07-27 2:32 上午

    不夹杂那么多英文单词会死?

  6. multithreaded 于 2012-07-27 7:49 下午

    能否这样看?

    1。网络的第一次革命是把路由器/交换机由通用CPU来做成一个定制的嵌入式系统,使得它功能专一,达到实时的要求;

    2。网络的第二次革命是把路由器的功能抽象成:控制面和数据面,数据面由ASIC或者NP加速大大提高了其性能;

    3。网络的第三次革命(SDN)是把控制面抽象化、虚拟化、剥离化, 而数据面使其更加“呆板化”。控制面和数据面可以不在一个实体,提高了网络在云计算环境下的可管理性。互联网公司需要的恰恰是这点。

    而一个传统网络公司的的核心价值是控制面的技术掌握,所以对其是恨之入骨的!所以短时间内SDN是难有作为的。

    对小公司来说,的确是个机会。终于人人又平等了!没有ASIC团队照样可以搞网络设备了。

  7. 理客 于 2012-07-27 8:09 下午

    IP NETWORK的root driver其实不是运营商,运营商是主力的operator和bearer。
    SDN也可以理解为从通用server/GW到专用的network device再到通用server/GW的回归。其中技术上的很大因素是目前网络设备的复杂度的单体深度及其应用广度的持续增加可能快到了商用工程的极限,也就是在TCO和server innovation上都限制了internet下一步的发展,以应对goole/apple/FB/TWITTER等引领的content模式的快速变化对traffic模型的较大影响。所以我相信SDN。

  8. multithreaded 于 2012-07-27 9:04 下午

    相信SDN和短期内有所作为是两回事。我认为目前是个“泡沫”而已!

  9. linux 于 2012-07-27 11:04 下午

    sdn在虚拟化应用上还是有前途的,个人理解.

  10. 理客 于 2012-07-28 4:47 下午

    那只好大言不惭的激进一些,目前传统IP承载网络从技术到产业链基本上已经到了中年晚期,IPV6都不能刺激它能返老回童一点,SDN是对这潭僵水最好的刺激,SDN在5年内就能取得明显的商业进步,如果有泡沫,那么会是在5年左右的时候,而不是短期,相反,短期泡沫不大,或者说还不足以形成有说服力的泡沫。有志青年可以考虑加入到SDN的软件队伍,利大于弊,不用过多担心泡沫。

  11. 理客 于 2012-07-28 5:01 下午

    SDN是传统IP网络架构和产业链的掘墓者,按照产业链的经验规律,此时既得利益的巨鳄,比如C/J/H/A等,常很难成为新的王者,而是在这个过程中沦为落魄贵族。比如正在死去的nokia,它似乎对smartphone是心里明白,脚下糊涂,都不好说它是稀里糊涂的死了还是明明白白的死了,或者说它是明白着糊涂死了。也许这就是历史规律,有时即使你再明白,你也不能阻挡巨鳄的死掉,因为一切事物都没有永生,只有涅槃。当然,新的王者现在谁也不敢肯定,也不敢说C/J/H/A中就没有能打破历史怪咒的。但C/J/H/A中至少要陨落2个,可能是难以避免的。

  12. 弯曲老友 于 2012-07-29 4:40 上午

    在这里看到了很多关于SDN & OpenFlow的讨论,很受启发,特来讨教:

    1. 目前的OpenFlow规约虽然定义了很多match fields, 但对于类似防火墙、网关这种需要对更多维度进行检测的功能,是如何考虑的?

    2. 对于流量管理这样复杂的功能,以KISS为目标的纯硬件实现能满足需求吗?当前流行的多核平台在SDN中又扮演什么角色呢?

  13. 老流氓 于 2012-07-29 8:07 上午

    SDN中运营商的利益诉求在哪里?

  14. sicifus 于 2012-07-31 6:43 下午

    SDN真正起来以后,
    会不会死的不光是现有的设备大鳄,
    大T们也会被新型的运营商所取代??

  15. 理客 于 2012-08-01 4:26 上午

    SDN作为open标准,一般硬件一定是通用的才能降低成本,并且不仅仅是网络设备上通用,而是整个IT通用,所以目前唯一的选择就是多核,当遇到性能问题时,需要一个通用流表芯片,当然也可以内置此类芯片。SDN的成功一定是建立在通用海量的硬件copy上,一旦用了专用的硬件,成功的可能性很小,open的本质一个是解耦APP和网络硬件,让网络APP遍地开花创造各种有意义的应用,另外一个是大幅降低成本,如果只有前者,就是开起来很美,但用起来太贵,是不能全面替代传统网络设备的

  16. 理客 于 2012-08-01 4:37 上午

    对运营商/ISP/ICP应该是利大于弊,对传统IP网络供应商是刨祖坟的噩耗,比较理想主义的是研究是:vendor做operator,operator做cloud ICP
    将来运营商把零售用超市和物流、网络用设备商的,自己只保留品牌、商业用户和wholesale,甩掉包袱后,向cloud和ICP猛攻,否则就是只能做卖管子的富士康,普通用户在超市和物流买服务付费,用户可以随时更改接入的运营商。

  17. multithread 于 2012-08-03 10:06 下午

    不识庐山真面目,只缘身在此山中。

    目前的多核技术还难于承担此重任,还没有见到OPENFLOW在多核上的有效实现,离实用还有较大的距离。

    理客对多核技术是不是给予了太高的希望?

  18. 請教理客 于 2012-08-04 6:53 下午

    用多核做Openflow的轉發平面,多核只有兩件事情做:流分類和流量管理,如果在多核上再集成了硬件流表芯片,那多核的硬件已經包辦了所有的工作,這跟目前多核上以軟件為主開發應用截然不同。以后多核上不再需要軟件了?

  19. 理客 于 2012-08-06 2:56 上午

    中低性能设备可以用多核,高端的要配合硬件流表芯片。分布式计算下,每个网络节点的多核都是要参与的。目前路由器的LC都有一个强悍的CPU,SDN后可以不需要强悍的CPU,搞个ARM就可以了,但主控可以用多核。所以OF/SDN/VN的时候,多核仍然需要软件,只是和原来分工不同,没有高低贵贱之分:)

  20. multithread 于 2012-08-07 9:12 下午

    多核上的流量管理只能达到1-2Gbps的水准, 如何管理10Gbps?

  21. 理客 于 2012-08-08 4:55 下午

    MT很懂技术,TM和SE是高性能网络设备需要面对和解决的,对于变革来说,有时技术能解决的问题往往不是大问题,总是可以找到trading-off的商用方案,这几个关键的技术问题地OF/SDN的影响,相于比C/J的ZZ利益阻击,就显得不那么大了。

  22. multithread 于 2012-08-08 11:21 下午

    最好在性能上把6wind打倒后,再考虑商业上的应用。

    随便提一下,6wind最近爆了一个17Gbps的TCP处理速度,当然是大包的了 :-)

  23. 可可 于 2012-08-17 1:23 上午

    openflow真的能降成本吗?

    传统的交换机或路由器和openflow交换机比,不同的地方是PP。其他部分:TM、FIC、FABRIC、PHY都差不多。

    OPENFLOW V1.0以后,芯片要支持多流表。复杂度比NP还要高。比LSW更是高出不只一点点。

    芯片统一后,量比以前大。这是事实。但这个量和CPU的量不是一个数量级。所以规模优势可能没有CPU这么大。

  24. CMRI 于 2012-08-17 8:08 上午

    数据中心的应用场景明确么?除了它还有什么应用场景么?
    SDN能带来什么现有网络做不到的?或者带来什么利益么?

  25. 理客 于 2012-08-17 9:17 上午

    控制平面虚拟化,整网控制平面的TCO降低是大头
    转发层面的降低可以使用通用多核+软流表,或用硬流表通过统一芯片降低成本。

  26. EZ微码 于 2012-08-19 3:13 上午

    SDN是要定义一套新的报文格式吗?如果沿用现在的IP报文格式要想区分到”流”,五元组肯定不够了,最好到7层,那流表的查找键值要多大啊。流表的容量也要海量吧。这个用多核来搞性能玄啊。

  27. 泡菜 于 2012-08-19 11:24 下午

    初接触SDN,说说自己的理解。
    openflow或者其他的SDN实现也要,想法是把控制和转发分来来做,从硬件资源利用率上来讲,应该是没有传统的软硬件结合的方案利用率高,但是SDN把这些工作抽离出来,分层来做。
    目前的硬件的发展能够提供这样的剩余资源供SDN“浪费”,很像现在的各大智能手机生厂商和android系统的关系。
    不论SDN是否能够颠覆现有网络,至少可以给网络的改良或者下一代网络的设计提供一些思路。
    对于我而言,希望能找到一两个研究点,做好自己的doctor研究。

  28. SPY 于 2012-08-20 5:59 下午

    可可说得很对,我在另一个贴子里讲了,关键是低成本大容量的SP。
    很多时候SP的成本已超过PP,就PP集成SP来讲,也是有点苦不堪言呀

  29. SPY 于 2012-08-20 6:09 下午

    to CMRI,我超看好数据中心,因为数据中心不光是百度呀,Google,一个应用,只要采用了云计算,就必须建立一个数据中心。
    举个简单的例子吧,有人在移动互联上做了语音识别的去计算,那么,他必须建一个数据中心,而且要很大,并且要有记忆功能,服务于很多的用户。
    这时 User Identification是关键的,如何做到快速高效,Openflow绝对是有效的。

    有人讲Open就是硬道理,其实是在偷换概念,像Linux、IOS及Android,是将平台Open出来让应用飞。而Openflow就将概念Open出业让平台飞,那么大个平台都在空中飞,绝对是空难

  30. SPY 于 2012-08-20 6:10 下午

    小公司就别去了,那里不是苍蝇的生存环境

  31. chedan 于 2012-08-20 9:41 下午

    钱伯斯几天前在季报会上已经发话了。基本上就是你Vmware/Nicera离不开我思科。而我思科则可以自己干SDN,也可以和微软,Citrix,IBM等等合作。你Vmware/EMC如果不能合作,“we can be really very tough”。

    Vmware买Nicera还是不能解决下面没有硬件公司支持的问题。

  32. SPY 于 2012-08-20 10:01 下午

    同意31楼,硬件这个PK比软件还难,因为硬件是花成本的,成本太敏感。要想做到产业化,难!

  33. 理客 于 2012-08-21 4:10 上午

    把SDN/OF/VN寄托在C等身上无异于吃软饭与虎谋皮,如果SDN/OF/VN不能独立于C等站起来,那就长不大。任何领域,既得利益者都会以自己的利益为中心来分化木马拒绝改革或者革命,但历史只所以即使螺旋徘徊折腾但最终没有停滞仍然向前走的根本原因是没有任何一支胳膊甚至大腿可以粗大到阻止历史的脚步,历史上比C/MS/IBM等强大无数倍的帝国和帝王如何?作为革命者SDN/OF/VN要相信人民群众有时候眼睛是雪亮的,需要自己的斗争策略,但无需害怕C等,而恰恰相反,帝国主义和C等是纸老虎,应该怕革命者SDN/OF/VN,我看好SDN/VN。

  34. chedan 于 2012-08-21 9:31 下午

    革命得要有人有东西啊。即使有硬件商愿意提供,一时半会也挡不住思科65%的市场份额。数据中心本身也不可能只采购和依赖一家,特别是小公司的,交换机。最后估计还是多种设备混杂。各家厂商又提供自己的SDN方案。Controller相互之间用几个RFC沟通一下。说不定旧的协议没淘汰,新的又加上一层。越搞越复杂。把整个SDN的概念庸俗化。

  35. SPY 于 2012-08-23 3:26 上午

    我倒是觉得不会出现34楼说的混乱的情况,毕竟是有标准的,同时谁的位置高,谁有话语权。

    Controller那点东西,开发出来不是问题,稳定性有时间来修复,而互通性,软件管理上的东西,与PON的互通性有本质区别。

    PON有测距,DBA,FEC不也可以互通了吗