面对SDN浪潮,将如何应对这场变革?SDN初学者如何入门和进阶?网络工程师如何在熟悉领域纵深发展?网络产品经理如何在SDN架构下设计下一代的网络产品?网络创业者如何寻找下一个SDN杀手级应用?投资者如何找到SDN领域的独角兽?我们一起来找找答案吧。
记得刘韵洁院士多次提到SDN是一场网络体系结构的变革,绝不是单点技术的突破,不像传统网络协议那样,一种新协议的出现只能解决一类网络问题。回顾SDN的发展历史,我们可以发现:SDN对网络学术界和工业界产生了深远的影响。
但是身处其中的我们,将如何应对这场变革?SDN初学者如何入门和进阶?网络工程师如何在熟悉领域纵深发展?网络产品经理如何在SDN架构下设计下一代的网络产品?网络创业者如何寻找下一个SDN杀手级应用?投资者如何找到SDN领域的独角兽?这些问题依然值得讨论。
先来谈谈初学者如何入门。万变不离其宗,所有新技术的入门都需要快速准确地理解三个问题:SDN是什么?为什么需要SDN?历史起源?懂中文的只需要看卫峰兄的这本书就够了《深度解析SDN:利益、战略、技术、实践》,读完这本书就算SDN入门了。虽然有些信息稍显过时,但依然是入门者的必备良药,据说2017年会出第二版。英文胜过中文的可以看这本书《SDN:A Comprehensive Approach》,在现有的英文书籍里面,这本是比较系统全面的一本入门级书籍。如果觉得读书没什么成就感,可以选择考取ONF官方的ONF Certified SDN Associate (OCSA)认证,考试通过后由ONF颁发一个OCSA证书。
根据我以前的经验教训,上述三个方法单选一个就算入门了。切记在网络上阅读大量碎片文章,这样的入门学习非常不系统,对于后续的学习非常不利,会产生很多误解。
再来谈谈如何进阶和纵深发展。对于我个人来说,作为网络领域的工程师,很庆幸处在这样一个变革时代。老写手孟岩在《一个“技术文化人”的片段感悟》中提过:程序员的进阶之道是“抬头看路,埋头赶路”。入门之后的SDN学习者,抬头看路相对明了,此后需要的是埋头赶路。那么到底如何埋头赶路。我个人的经验是:“Learn SDN by the Hard Way”。
什么意思?简单来说,就是笨办法学习SDN,事实上要跨过任何新技术的门槛,一定不要想走捷径。比如要深入学习SDN发展历史,至少要弄清楚两方面的内容:一是定义 SDN 概念和架构背后的人,以及推动 SDN 架构走向成熟的标志性事件;二是最初SDN借鉴了哪些关键的技术理念,SDN 架构是如何在这些技术原理的支撑下发展起来的。只有一头扎进去,踏踏实实弄明白每一点技术细节,才是最有效的学习思路。
当然这种说法还是有点虚。到底怎样通过笨办法来学习SDN?具体来说,这时我们需要系统地学习一门SDN课程。之前我在知乎答案里面罗列出了不少国外大学的SDN课程。今天我强烈给大家推荐普林斯顿大学Nick Feamster教授在Coursera上的SDN课程:https://zh.coursera.org/learn/sdn
相比其他课程,小Nick教授(斯坦福大学SDN之父是大Nick教授)课程的每一部分都有明确的学习目标、课程视频、实验内容和相关论文。从2014年开始课程内容逐年更新,每一课时结尾都有Nick教授对相关业内人士的视频采访,比如Martin Casado和Jennifer Rexford等。任何人都可以注册学习本课程,2017年2月份将开始新的课程,如果你足够努力,学完还能拿到一个结业证书。这个结业证书含金量较高,据我的了解,国内拿到这个结业证书的人非常之少,我自己也是屡屡坚持,屡屡半途而废。
对于SDN科研领域的进阶者来说,我一直在努力推荐 “Software-Defined Networking: A Comprehensive Survey”这篇总论型论文,重要的事情说三遍,就看这篇论文【1】。这篇论文长达61页,引用了579份参考文献,从2014年开始每半年发布一个新版本,全面细致地介绍了SDN科研领域的方方面面。国内很多SDN课题组,进组的学生人手一份。
但是这篇论文实在是太长了,涵盖的内容太多了。很惭愧,我自己都从来没有完整细致的研读过一遍。但是我的经验是你需要清晰这篇论文的脉络,通过这篇论文的学习你可以快速梳理SDN领域的研究历史和现状。我相信只有这样你才能清晰地结合自己的研究方向找到合适的切入点。过去经常有学生请教我:导师让做做SDN,该怎么选方向?我的建议是先看看这篇论文,然后自然就知道选择什么方向了。
不过,我个人对于国内SDN领域的科研有一个悲观的论调:如果将SDN的研究分支比喻成一棵大树,那么这棵大树已经枝叶繁茂了,所以留给国内科研机构的大机会已经不多了。也许更好的方式是结合自身在其他领域的积累,比如IoT、大数据、机器学习等,寻找SDN与原来研究领域的交叉点来做文章,或者将SDN理念和架构引入新的应用场景。我个人的观察:2016年SDN-IoT领域和NetPL(网络编程语言)领域开始活跃起来,也许这两个方向在未来两年会成为SDN科研的热门Topic。
其次我们谈谈网络相关领域的工程师该怎么办?顾名思义,SDN将带给我们***的改变就是:从网络工程师转变为网络开发工程师,把计算机科学中的系统经验融合进网络系统领域(Bringing the best ideas in Computer Science to networking)。这绝不是我个人信口开河。
Kyle Mestery(OpenStack Neutron项目核心成员,也是OpenDaylight OVSDB和OVS项目的贡献者)认为网络工程师需要学习编程技能,去动手写代码。如果想成为一名网络开发工程师,我们至少需要掌握Linux方面的实践技能,包括开源软件OpenFlow交换机Open vSwitch、开源控制器OpenDaylight及开源数据中心网络虚拟化项目OpenStack Neutron等的使用和开发【2】。Kyle总结了现有的主流网络开源项目使用的编程语言。
Kyle:http://www.siliconloons.com/
网络领域著名博主Scott Lowe、Jason Edelman和Matt Oswalt在2015年合写了一本书:《Network Programmability and Automation Skills for the Next-Generation Network Engineer》【3】。他们写这本书的目的是为了帮助网络工程师在SDN时代提升竞争力。他们认为网络工程师应该关注系统自动化部署技能,具体包括Linux操作系统基础、Python编程基础、JSON和XML等网络数据格式、Continuous Integration和DevOps等。
斯坦福大学SDN创始团队The McKeown Group在SDN领域创办了多个初创公司,比如被VMware收购的Nicra,被资本看好的BigSwitch,在P4推动下火的一塌糊涂的Barefoot。但是您可能不知道,大Nick教授的三个博士还在2013年悄悄创建了一个初创公司Forward Networks,这个公司的愿景很虚:Bringing the best ideas in Computer Science to networking)。当年OpenFlow刚出来的时候,很多人也这么看。过去几年的学习和失败经验告诉我,还是跟着大Nick走才是正道。
说了这么多,简单总结就是网络工程师赶紧学习计算机编程方面的技能和知识吧!网络系统工程师赶紧恶补计算机系统方面的技能和知识吧!
***我们谈谈网络产品经理、创业者和投资者该如何应对。个人认为这三种人对SDN的理解和认知要求应该是一致的,尤其是产品经理和创业者。先说说我个人的两次尝试。
一次是在大公司内部寻找SDN产品的机会,当时确实选择了一个很好的方向,现在看来也非常有价值,可惜在公司内部没有获得支持。现在回过头来看,产品方向选对了,可惜整合资源的能力不足,另外插一句:千万别相信什么所谓的业界专家,14年我曾经将完整方案请教过一些人,都不看好。2016年却有一堆人在做这个产品,因为终于看到了市场需求。
另一次是在小公司做SDN产品,一开始就选择了一个很难做的方向,产品研发和市场开拓对小团队来说都很难。结果可想而知,必然是失败。那么到底网络产品经理应该怎么办。我认为最重要的就是弄清楚为什么需要SDN?不是你为什么需要SDN,而是你的客户为什么需要你用SDN改造原有的产品和服务。SDN给你的客户能带来什么?更多的网络可编程能力,还是自动化的网络运维能力?这些才是你需要真正关注的。当然,要弄清楚这些绝非易事,“发现问题-用SDN更好地解决-快速推出产品方案”,要做到这一步,还很难。早期推SDN产品的大牛们一定深有感触。
相比产品经理,创业者更需要步步为营,定义好产品,选好方向才是***步。你需要足够好的研发团队,真正理解传统网络和SDN的销售团队,而且你的产品推出时机要刚好一步不差。大河互联就是其中做的比较好的。
之前其实跟很多对SDN感兴趣的投资者都聊过。2015年之前国内投资者对国内SDN公司并不认可,云杉网络的发展证明了这一点。当然也跟国内SDN初创公司质量不高有关。我个人观点:投资者想找好的国内SDN公司,还是需要先梳理一下SDN发展过程中的美国初创公司,其实跟其他领域一样,目前还是C2C(Copy to China)相对靠谱些。大河互联就是例子,云杉网络也是例子。