從熟悉領域研究SDN&OpenFlow?

這是早期我對問題「如何去研究SDNOpenFlow」的解答,時隔三年,對技術的理解更進一步,最新的解答見原問題答案。


(有關這個問題的升級版解答見:如何去研究SDNOpenFlow?如下是入門級解答)

對任何人來講,時間才是最大的財富,每個人都應該把自己的時間投入到最有意義、最有影響的地方去。經過多年的學習、思考和實踐,我認定這樣一個規律:技術的發展不是均勻的,而是以浪潮的形式出現。每一個人都應該看清楚浪潮,趕上浪潮,如此,便不枉此生。

--《浪潮之巔》吳軍

記得在孟岩的《一個「技術文化人」的片段感悟》中讀到:程序員的進階之道是「抬頭看路,埋頭趕路」。也許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 ProjectsSDN創始人之一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之前也有如何設計SwitchRouter的課程
  • 普林斯頓Jennifer Rexford的COS-561:Advanced Computer Networks,推薦學習,從現代網路視角開始思考傳統網路,絕對是學習SDN之前的有力補充
  • UC伯克利Scott Shenker的計算機網路課程偏理論,可以作為參考,但是關於網路體系結構本身的思考還是比較有意思

雲計算和數據中心是理解SDN的基礎:

  • 首推威斯康星大學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,

懂得天外有天,才能保持心中的平靜,紛紛擾擾花落去,有多少人能頂住壓力默默前行!


推薦閱讀:

C盤無緣無故多了15G的東西,但是我進入C盤後卻找不到是什麼東西佔用了空間,怎麼辦呢?
葉脊拓撲/模式如何計算帶寬,葉交換機的改變會對整個網路產生什麼影響?
大學斷網,怎麼樣才能讓自己寢室的網不受限制?
宿舍里每天11點斷網,可以上校內網但不能上外網怎麼破解?
「五類網線」 和 「六類網線」 有什麼區別?

TAG:計算機網路 | 數據中心 | OpenFlow | SDN |