引言:回顾SDN的发展历史,可以发现:SDN作为一种新的网络体系结构,对网络学术圈和工业界都产生了深远的影响。SDN并不是昙花一现的网络技术新概念,而是一场网络领域的技术变革。
我们将如何应对这场变革:SDN初学者如何入门和进阶?网工如何在熟悉领域纵深发展?产品经理如何在SDN架构下设计下一代网络产品?创业者如何寻找下一个SDN杀手级应用?投资者如何找到SDN领域的独角兽?这些问题依然值得讨论。
本文相关图书《重构网络:SDN架构与实现》。
SDN初学者如何入门?
所有新技术的入门都需要快速准确地理解三个问题:SDN是什么?为什么需要SDN?历史起源?
中文好的只需要看卫峰兄的这本书就够了《深度解析SDN:利益、战略、技术、实践》,通读完此书就算SDN入门了。虽然有些信息稍显过时,但依然是入门者的必备良药,据说2017年会出第二版。英文好的可以阅读《SDN A Comprehensive Approach》这本书。在现有的英文书籍里面,个人认为这本是比较系统全面的入门级书籍。
泽卫:根据我过去的经验教训,切记在网络上阅读大量碎片文章,这样的入门学习非常不系统,对于后续的学习非常不利,会产生很多误解。
SDN学习者如何进阶?
入门之后如何纵深发展。泽卫:个人的经验是:
“Learn SDN by the Hard Way”。什么意思?简单来说,就是笨办法学习SDN,事实上要跨过任何新技术的门槛,一定不要想走捷径。比如要深入学习SDN发展历史,至少要弄清楚两方面的内容:一是定义 SDN 概念和架构背后的人,以及推动SDN 架构走向成熟的标志性事件;二是最初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科研如何进阶?
对于专注SDN科研的入门者来说,我一直在努力推荐《SDN A Comprehensive Survey》这篇总论型论文,再次强调一下,这是目前最完整和全面的一篇总结型论文。这篇论文长达61页,引用了579份参考文献,从2014年开始每半年发布一个新版本,全面细致地介绍了SDN科研领域的方方面面。国内很多SDN课题组,进组的学生人手一份。
泽卫:通过这篇论文的学习,可以快速梳理SDN领域的研究进展和现状。只有这样,才能清晰地结合自己的研究方向找到合适的切入点。以前会有SDN方向的学生咨询:导师让做做SDN,该怎么选方向?我的建议是先看看这篇论文,然后自然就知道选择什么方向了。
不过,我个人对于国内SDN领域的科研有一个悲观的论调:如果将SDN的研究分支比喻成一棵大树,那么这棵大树已经枝叶繁茂了,所以留给国内科研机构的大机会已经不多了。也许更好的方式是结合自身在其他领域的积累,比如IoT、大数据、机器学习等,寻找SDN与原来研究领域的交叉点来做文章,或者将SDN理念和架构引入新的应用场景。
我个人的观察:2016年SDN-IoT领域和NetPL(网络编程语言)领域开始活跃起来,也许这两个方向在未来两年会成为SDN科研的热门Topic。
网络工程师该怎么办?
SDN将带给我们最大的改变就是:从网络工程师转变为网络开发工程师,把计算机科学中的系统经验融合进网络系统领域(Bringing the best ideas in Computer Science tonetworking)。
Kyle Mestery(OpenStack Neutron项目核心成员,也是OpenDaylight OVSDB和OVS项目的贡献者)认为网络工程师需要学习编程技能,去动手写代码。成为一名网络开发工程师,第一步就是掌握Linux方面的开发和实践能力,动手参与主流的网络开源项目,比如开源软件OpenFlow交换机Open vSwitch、开源控制器OpenDaylight及开源数据中心网络虚拟化项目OpenStack Neutron等。
Kyle:http://www.siliconloons.com/
Kyle总结了现有的主流网络开源项目使用的编程语言。从中可以看出,Python和Java编程语言值得学习。我个人是网络数据平面硬件出身,也学习了一些python语言知识,至少需要能读懂这些开源项目的源代码。
网络领域著名博主ScottLowe、Jason Edelman和Matt Oswalt在2015年合写了一本书:《下一代网络工程师需要的网络编程和自动化技能》。他们写这本书的目的是为了帮助网络工程师在SDN时代提升竞争力。他们认为网络工程师应该关注系统自动化部署技能,具体包括Linux操作系统基础、Python编程基础、JSON和XML等网络数据格式、持续集成和DevOps等。
斯坦福大学SDN创始团队在SDN领域创办了多个初创公司,比如被VMware收购的Nicra,被资本看好的BigSwitch,在P4推动下火的一塌糊涂的Barefoot。但是您可能不知道,大Nick教授的三个博士还在2013年悄悄创建了一个初创公司Forward Networks,这个公司的愿景看着很虚:Bringing the best ideasin Computer Science to networking。当年OpenFlow刚出来的时候,很多人也这么看。过去几年的学习和失败经验告诉我,还是跟着大Nick走才是正道。
说了这么多,简单总结就是网络工程师赶紧学习计算机编程方面的技能和知识吧!网络系统工程师赶紧恶补计算机系统方面的技能和知识吧!如下是SDNLab的一个开源项目:SDN技能图谱,大家可以对照一下,看看自己的知识体系还差哪些内容?
网络产品经理、创业者和投资者怎么办?
个人认为这三种人对SDN的理解和认知要求应该是一致的,尤其是产品经理和创业者。先说说我个人的两次尝试。
一次是在大公司内部寻找SDN产品的机会,当时确实选择了一个很好的方向,现在看来也非常有价值,可惜在公司内部没有获得支持。现在回过头来看,产品方向选对了,可惜整合资源的能力不足,另外插一句:千万别相信什么所谓的业界专家,14年我曾经将完整方案请教过一些人,都不看好。2016年却有一堆人在做这个产品,因为终于看到了市场需求。
另一次是在小公司做SDN产品,一开始就选择了一个很难做的方向,产品研发和市场开拓对小团队来说都很难。结果可想而知,必然是失败。那么到底网络产品经理应该怎么办。我认为最重要的就是弄清楚为什么需要SDN?不是你为什么需要SDN,而是你的客户为什么需要你用SDN改造原有的产品和服务。
SDN给你的客户能带来什么?更多的网络可编程能力,还是自动化的网络运维能力?这些才是你需要真正关注的。当然,要弄清楚这些绝非易事,“发现问题-用SDN更好地解决-快速推出产品方案”,要做到这一步,还很难。早期推SDN产品的大牛们一定深有感触。
相比产品经理,创业者更需要步步为营,定义好产品,选好方向才是第一步。你需要足够好的研发团队,真正理解传统网络和SDN的销售团队,而且你的产品推出时机要刚好一步不差。大河互联就是其中做的比较好的。
之前其实跟很多对SDN感兴趣的投资者都聊过。2015年之前国内投资者对国内SDN公司并不认可,云杉网络的发展证明了这一点。当然也跟国内SDN初创公司质量不高有关。我个人观点:投资者想找好的国内SDN公司,还是需要先梳理一下SDN发展过程中的美国初创公司,其实跟其他领域一样,目前还是C2C(Copy to China)相对靠谱些。
大河互联就是例子,云杉网络也是例子。后面我会专门写一篇有关SDN初创公司的文章,再详细解释。如下是之前一篇分析早期SDN初创公司的文章:
http://www.sdneasy.com/sdn-start-ups-you-will-hear-about-in-2013/
本文作者杨泽卫,相关图书《重构网络:SDN架构与实现》,点此链接可在博文视点官网查看此书。
想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。