转自知乎,链接如下:https://www.zhihu.com/question/27336289/answer/92617122?from=profile_answer_card
对任何人来讲,时间才是最大的财富,每个人都应该把自己的时间投入到最有意义、最有影响的地方去。经过多年的学习、思考和实践,我认定这样一个规律:技术的发展不是均匀的,而是以浪潮的形式出现。每一个人都应该看清楚浪潮,赶上浪潮,如此,便不枉此生。
--《浪潮之巅》吴军
记得在孟岩的《 一个“技术文化人”的片段感悟 》中读到:程序员的进阶之道是“抬头看路,埋头赶路”。也许SDN的抬头看路已经相对清楚,更加需要的是埋头赶路。在开始之前请先看看
怎样阅读论文(台湾彭明辉)(强烈推荐) ,因为后面需要阅读大量的SDN papers。实际上任何领域的学术研究和工程研究都与学术论文的思路类似。
斯坦福大学的SDN创始人之一Nick McKeown 教授历年来的演讲非常重要。可以说这些内容是追溯SDN起源和演进的关键 。
- 2008年的Why Can't I Innovate in My Wiring Closet?,介绍OpenFlow是为了解决什么问题而出现的;
- 2009年的Software Defined Networks最早关于SDN理念的阐述;
- 2011年的How SDN will shape networking介绍了SDN给网络研究和业界带来的变革,Software Defined Networks(有视频下载)更进一步阐述了SDN理念和架构,以及OpenFlow在SDN架构中的位置;
- 2012年的Making SDNs Work介绍了SDN系统调试和部署方面的内容;
- 2014年的Software Defined Networks and the maturing of the Internet(伯克利版本,另有ETH版本,内容稍有不同),算是个小结,关键是Baremetal switch,Chips,SDx和HSA等。
- 最后就是加州伯克利分校的SDN创始人之一Scott Shenker教授对SDN的理解,在ONS2011上的演讲:The Future of Networking, and the Past of Protocols;对比一下两位教授的观点,我们会发现Nick McKeown对 SDN 的阐释更加容易理解,尤其通过与 PC 的类比,感觉豁然开朗,视为“深入”。后者的阐释比较晦涩,有点形而上的意思,“抽象”本身就很难理解,视为“浅出”。后来看到 Larry Peterson 在2013 ACM SIGCOMM会议上 的演讲《 Zen and the Art of Network Architecture》,才感受到“技术是可以用哲学方式思考的”。
- SDN创始人的研究机构Open Networking Research Center和Open Networking Lab;
毋庸置疑,两位SDN创始人对SDN的理解应该是第一步,那么解析来怎样进一步学习和研究SDN:
- 普林斯顿大学Nick Feamster(Jennifer Rexford教授的博士后,之前在乔治亚理工)在MOOC平台Coursera上的开放课程:Software Defined Networking,有非常完善的课程资源,课前预习,课程视频和ppt,每一课Nick Feamster还对相应领域的专家和工程师做采访,课后实验完整文档。个人觉得,想要入门和研究SDN的同学直接可以去注册他的课程,最终还会发一个课程结业证书,如果你足够努力的话。SDN入门课成首选,15年课程相关资料我都上传后面的百度网盘链接中,不过最好直接注册16年课程学习。这是他14年的SDN课程:CS 4270/8803 Fall 2014 SDN Lab,13年的课程:CS 8001: SDN Seminar。
- 哥伦比亚大学Li Erran Li的SDN课程:COMS E6998-10 Fall 2014 Software Defined Networking,内容编排清晰明确,有完整的课程ppt和reading paper,包括SDN概述、基础概念、可扩展性、编程语言、Verification、Update、数据面、虚拟化、TM、安全、无线网络、Middlebox与NFV、存储。13年的课程:COMS E6998-8 Software Defined Networking,与14年内容有微调。15年已经不再开设SDN课程;
- 苏黎世联邦理工学院Bernhard Plattner的课程: Advanced Topics in Communication Networks HS 2014: Software-Defined Networking,其中关于SDN Switch和FPGA部分的内容个人关注比较多,还有Cisco的SDN介绍,整个课程编排体系非常完善,可以作为Nick Feamster课程的学习辅助。2013年的课程:HS2013;
- 普林斯顿的Jennifer Rexford教授的SDN课程:COS-597E Software defined Networking Fall 2013,是最早将SDN作为独立内容来开课的教授。Jennifer的学生Minlan Yu(个人认为网络领域值得尊敬的年轻华人,博士论文评价较高)在UCLA的课程:CSCI694b, Software-defined Networking,没有课程ppt,论文比较齐全
如下是其他大学的SDN相关课程,一方面可以作为上述课程的参考,另一方面也可以关注一下SDN领域走的比较早的一些教授:
- 杜克大学Theophilus Benson(Jennifer的博士后)的课程:Defining Software Defined Environments, Fall 2014,
- CMU的Vyas Sekar的课程: ECE 18-859K SDN and NFV,在Middlebox和Security领域的研究非常活跃,之前的课程:ECE739 Network Security and Management,13年在纽约石溪大学开的课程:CSE690-01 SDN and beyond Fall 2013
- 以色列特拉维夫大学Mooly的课程:Reasoning about Software Defined Networks
- 布朗大学Rodrigo Fonseca的课程: CSCI2950-U Advanced Networking: SDNs and Datacenter Networking,13年的课程 S'13,以论文为主
- 康奈尔大学Nate Foster(Jennifer博士后)的课程: CS 5114: Network Programming Languages
- 华盛顿大学Raj Jain的课程:CSE 570S - Recent Advances in Networking,对无线网络和IoT的研究较多,也有相关课程
- 肯塔基大学Zongming Fei的课程:CS 687: Software Defined Networking (Fall 2014),
在多次跟高校老师交流中,对于如何开始从SDN方向做研究,我个人有个观点: 假如SDN的所有研究领域是一颗大树的话,整棵大树已经非常繁茂了,剩给国内科研机构的机会已经很少了,只有将SDN理念和架构应用到跨学科领域,或者自己本身就很有积累的科研领域,才有可能做出成果 。
- 要快速熟悉SDN领域的研究情况,通读这篇论文即可:Software-Defined Networking: A Comprehensive Survey,从14年1月份开始,3个版本,61页,579个参考文献,截至到现在已经被引用387次
- NEC研究员Cristian Lumezanu的:SDN/OpenFlow reading list,非常值得推荐,分类方法很赞,另外个人感觉Li Erran Li课程中队论文的分类不错。
- 学术会议论文
- Symposium on SDN Research (SOSR)20152016
- Workshop on Hot Topics in SDN (HotSDN) 201220132014
- European Workshop on SDN (EWSDN) 2012201320142015
- The Road to SDN, Nick Feamster, Jennifer Rexford, 2013,主要是对支撑SDN逐步成熟的关键技术的角度来介绍,分为三个阶段来介绍,截至到现在已经被引用133次;
- Maturing of OpenFlow and SDN through Deployments,Nick McKeown, 2012,斯坦福在研究和部署的四个阶段的成果,以及两者之间的互相影响,可以说是SDN是怎样炼成的。被引用68次;
- A Software Engineering Perspective on SDN Programmability 2016,这篇很有意思,从软件工程师的角度对SDN进行梳理,个人认为这个角度非常有价值,SDN应该需要从软件工程的角度更多的一些推动;
- A Survey of Software-Defined Networking: Past, Present, and Future of Programmable Networks,2014,被引用393次,个人更看重上面第一篇,为什么这个引用这么多?
- A Survey on Software-Defined Networking,2015,几位华人的文章,值得鼓励;
- List of OpenFlow Software Projects,SDN创始人之一Martìn Casado整理的OpenFlow和SDN相关开源项目
- 我在知乎问题推荐软件定义网络sdn研究重要论文?中有详细罗列,从SDN overview、Forwarding Abstraction、NOS Basics、Programming language、Data Plane、Verification of Network、Testing and Debugging、Network Update、Use case等方面的论文。
- 五个明星级SDN研究团队:Meet five software-defined networking research rock stars
上述内容是从科研和教学方面的一些内容,如下是产业界及其他方面的一些内容:
- 要了解产业界历年来的情况,关注历年来ONS峰会的演讲就好了:Open Networking Summit 201120122013201420152016,相关厂商演示demo和ppt在最后链接中可供下载;
- SDxCentral社区有相关的市场分析报告:SDx Analyst and Research Reports
- 十个值得关注的SDN博客:Ten SDN blogs worth following
- 十五个值得关注的SDN专家:15 SDN experts to follow on Twitter
- 值得关注的两个中文社区:SDNLab(内容越来越丰富了)
- 在知乎问题国内外SDN初创公司有哪些?中有介绍;
- 在知乎问题SDN技术书籍有哪些?中有介绍;
- 从产业角度看SDN,适合从业者和研究人员快速了解SDN的现状,真的只需要看这一本中文书就够了:《深度解析SDN:利益、战略、技术、实践》张卫峰
- 从技术角度看SDN,适合有一定基础的从业者和研究人员了解SDN的技术框架,内容全面,可以先读这本中文书:《软件定义网络核心原理与应用实践》
- 从OpenFlow协议流程角度看SDN,详细解读OpenFlow协议和工作流程,中译本(免费电子书)软件定义网络OpenFlow和VxLAN
在此前多次SDN培训和交流过程中,关于如何学习和研究SDN,我个人的理解是:“Learn SDN by the Hard Way”, 所谓本办法学习是也,要跨过任何新技术的门槛,一定不要想走捷径。SDN 作为一个技术概念,同时也是新一代的网络体系结构,要了解其历史,通常至少要弄清楚两方面的内容:一是定义 SDN 概念和架构背后的人,以及推动 SDN 架构走向成熟的标志性事件;二是最初借鉴了哪些关键的技术理念, SDN 架构是如何在这些技术原理的支撑下发展起来的。组成SDN架构的方方面面,控制器和数据面,典型的应用场景,标志性的应用案例,一头扎进去,踏踏实实弄明白每一点技术细节,才是最有效的学习思路。如下是我个人理解的三个阶段:
- 一是:通过Survey型论文和SDN创始人的理解,对SDN和OpenFlow有一个通盘的认识,并且能清晰界定与传统网络的区别,你会对技术本身和背后的这些人充满敬畏,此之谓入门;
- 二是:通过完成Nick Feamster的开放课程,拿到认证,我个人是坚持了几次都半途而废,这种系统地学习SDN可以算初级的登堂入室;
- 三是:在自己原本熟悉的领域切入,不断补充需要的基础知识,比如我一直在补充云计算、数据中心、DCN方面的内容,可以有所思,有所为,有所不为;
-
- The World Needs More Builders and Fewer Talkers,切记不要停留在理论阶段,要实际动手去做,从Mininet开始。
- 此前看到斯坦福博士Philip Guo 的” The Ph.D. Grind – A Ph.D. Student Memoir ”这本书,推荐一,推荐二,感触很深,没有痛苦的博士求学经历不是合格的,虽然我不是博士,但是技术学习过程都是类似的;
最后,贡献自己整理的一个SDN演进图,从2012年开始学习和研究SDN,不求回报,感触颇深。上述课程、论文和历年ONS峰会的资料都可以在我的百度云盘下载到,更多内容和SDN方面的交流见我的微信公众号: zeweiTalk 。(如发现链接有误,请微信联系我,非常感谢)
http://weixin.qq.com/r/Q0OpsdXEuYjGrZHS9xZR (二维码自动识别)
对一件很小很小的事情,却知道得很多很多!
网络基础知识是SDN入门首先要掌握的:
- 斯坦福的网络高级课程,之前是Nick McKeown和Martìn Casado带的:CS244: Advanced Topics in Networking,从中可以看出斯坦福这边对网络的理解,另外关于Switch的内容也不错,Nick之前也有如何设计Switch&Router的课程
- 普林斯顿Jennifer Rexford的COS-561:Advanced Computer Networks,推荐学习,从现代网络视角开始思考传统网络,绝对是学习SDN之前的有力补充
- UC伯克利Scott Shenker的计算机网络课程偏理论,可以作为参考,但是关于网络体系结构本身的思考还是比较有意思
- 首推威斯康星大学Aditya Akella's (Nick博士后)的课程,推荐学习:CS838: Systems and Networking Challenges in Cloud Computing.从云计算历史,经济学,对应网络方面的详细解读,包括云计算对网络的需求,云应用,存储等,三分之一内容是SDN,有较多课程ppt;
- 香港科技大学Kai Chen的Topics in Data Center Networking and Cloud Computing课程,侧重于数据中心网络,讲的比较全面;
- 华盛顿大学的Scalable Systems: Design, Implementation and Use of Large Scale Clusters课程,从分布式系统设计开始,MapReduce、Hadoop、BigTable,比较详细的呈现了Google的相关重要研究成果
- 康奈尔大学的Cloud Computing课程,云计算推荐学习,罗列了云计算的诞生、怎样工作、应用、安全和设计等方方面面
- Google研究员Dennis Abts的《High Performance Datacenter Networks: Architectures, Algorithms, and Opportunities》这本书是一定要读完的,可以首先读A Guided Tour of Datacenter Networking这篇文章,了解大概
- 伯克利分校Randy H. Katz的课程Datacenter Networking and the New Converged Internet中几乎罗列了DCN方面的所有重要papers,DCN推荐学习,包括Fabric、Traffic、Topologies、Performance等,非常全面
- 哥伦比亚大学的课程COMS W6998-6: Cloud Computing and Data Center Networking Fall 2010,斯沃斯莫尔学院 Kevin Webb 的课程CS 91: Cloud Systems & Datacenter Networks,