如何學習SDN中的編程部分(python)?

大概清楚sdn是什麼,想學習編程部分的知識,有傳統網路的基礎。也有自學半個多月的python基礎知識,了解什麼是類對象這些概念,想問下sdn編程應該怎樣學習。

也沒有找到國內關於這方面編程的書籍,想看下相關的例子,相關代碼。

換個說法就是想學SDN需要學習python的____和___

ps:本人是計算機網路專業的,對編程方面非常陌生,希望能夠指點下,另外現在也正在準備考HCIE。我知道java也可以,但是個人想學python多些。


如果說題主對於編程非常陌生,最好還是先把CS的基礎夯實,至少要了解操作系統原理、數據結構與演算法,軟體工程原理等等的概念。如果題主還在學校,建議一定要捨得在基礎科目上花時間。很多傳統網路工程師儘管自學了不少編程技術,但沒有計算機科學的基礎,有些事情的理解上還是很大問題的。SDN僅僅是計算機科學在網路領域的一個應用而已,有了堅實的計算機科學基礎,再去看SDN會讓你有更深入的理解。

單要說SDN/網路領域的Python的書籍和項目,下面幾個可以看看。

  • 《Python自動化運維:技術與最佳實踐》(劉天斯)【摘要 書評 試讀】- 京東圖書 這本書里介紹了很多做自動化運維的工具,雖然和SDN關係不大,但很多都是網工工作中總結出來的,挺有參考價值。

  • Ryu。Ryu是python實現的openflow controller,可以自己琢磨琢磨寫個app,不過這東西工業界基本上沒人用,自己學習是挺好的。中文參考鏈接: RYU | SDNLAB | 專註網路創新技術 。
  • OpenStack。OpenStack並不是完全在SDN/網路領域的,但是和網路關係非常密切。不過這個難度比較大,方便的是無論網上還是紙質書都一大堆可以參考。


目前在做SDN相關,簡單回答一些,希望能有所幫助,就SDN的商用來說,還不是特別明確,目前做的也只是傳送網相關的,各家的標準都不太一樣,所以網上相關資料也會很雜散,不過主要理念都是控制平面和數據平面的分離。就編程語言來說,目前負責控制器功能的開發,環境是Linux,主要還是C++和JAVA,自動化運維方面有python API,不知道你說的想學習編程部分的知識指的具體是什麼,不過目前SDN市場還不是很明朗,很多標準還在整合,距離大規模商用還有段路,如果題目是面臨就業,網路編程的話必備的就是TCP/IP、UDP、socket。語言方面,python一般還是作為自動運維的,類似shell腳本功能,用的多的還是java和C++;如果是學生的話,可以了解下open flow協議(不是open stack),想學習python的話也是網路編程部分,協議啦,socket啦,稍作練習就好,python還是比較簡單的,類庫也比較豐富,不過學習python最好是和演算法、數據結合,畢竟拋棄語法的複雜後,可以讓編程專註於演算法啦~~

ps:剛接觸SDN業務沒多久,後面有新發現再做補充 ,希望能給一些幫助


個人認為先把python 基礎學了。之後就是看開源python sdn 項目的代碼。如ryu,或者neutron.

Python 或者java 只是編程語言,是sdn 裡面的s. 是用來表述network 用的工具,題主已經有了網路基礎,上手應該會更快。另外python也比較貼近自然語言(相較於其他一些編程語言),學習難度不大。


關注 @靈劍 及他的網路與SDN專欄以及他的github


推薦OFTest,很好的一套用Python寫的OpenFlow測試套件,方便學習和擴展


推薦閱讀:

TAG:Python | 編程 | 計算機網路 | SDN |