SDN是什麼依然值得討論
SDN都已經發展了快十年了,現在討論這個問題有什麼意義?
SDN是什麼?這個問題看似不再重要,大家對SDN都有自己的認識和見解。可能很多同仁會覺得:這個問題我早就明白了,或者新技術已經發展這麼多年了,還能討論出什麼新內容。
其實不然,我個人以為:恰恰是現在,SDN技術概念和架構本身已經逐步「成熟」,才是討論這個問題的最佳時機。如下是SDN相關技術概念的Gartner技術成熟度曲線,可以看到,SDN和OpenFlow已經逐步進入「生產成熟期",在數據中心網路和WAN中的SDN化已經相對成熟,有大量的商業方案可以選擇,學術圈的SDN熱已經逐步緩和,對SDN本身的質疑越來越少,這才是系統學習SDN的最佳時機。
關於這個問題,我個人的認識經歷了三個階段:
第一階段大約是2011年左右,當時我是SDN和OpenFlow的純粹支持者,比較偏頗的認為「只有OpenFlow才是SDN」;
第二階段大約是2014年,SDN在國內網路技術圈獲得廣泛認可,對SDN的認識也發生變化:SDN應該有更寬泛的定義,比如只要滿足數控分離,或者具備一定的網路可編程能力,或者軟體定義xx網路,也許都可以看作是SDN;
第三階段就是2015年之後,SDN雖然是從斯坦福的OpenFlow開始,而後被網路廠商進行概念延伸,同時雲服務廠商做了進一步解讀,不同的初創公司對SDN概念進行補充,但是我們自己應該清醒:既不拋棄SDN最初的定義,也不排斥設備廠商和初創公司的再次解讀;既不單純從學術上看SDN,也不單純從網路產業趨勢看SDN。SDN相比傳統網路一定有一個清晰的邊界,但是SDN一定是從傳統網路逐步演進部署的。
那麼到底SDN是什麼?
SDN是一種新的網路體系結構,給傳統網路帶來最大的改變是網路可編程和開放性。網路用戶追逐SDN的關鍵是想獲得更多的網路可編程能力,獲得更多的網路定製開發能力和自主權。SDN的開放分層架構加速了網路產業的創新,越來越多的雲服務商、初創公司和軟體公司都加入到網路產業中來,這種開放競爭將進一步加速整個產業的創新。
在SDN的推動下,整個網路產業是下圖這個樣子。整個網路產業格局被分成很多開放的層次,每個層次都可以容納更多的廠商一起參與,不同層次廠商之間更多的是合作關係,而不是競爭關係。
整個網路產業格局分為可編程網路晶元層、晶元驅動和編譯層、設備操作系統層、SDN控制器層和應用層五個部分。如此一來,初創公司和中小廠商也能參與進來,在某個層次的市場上佔據一席之地。沒有任何一家網路廠商可以在每個領域都獨佔鰲頭。以傳統網路廠商思科為例,也許它可以在某些網路方案領域佔據很大的市場份額,但是在SDN控制器領域就不一定能打敗眾多開源控制器,在SDN設備操作系統領域不一定能戰勝專註於操作系統的第三方廠商。
相比傳統網路體系結構,SDN有三個主要不同:
一是,從網路設備到整個網路的開放可編程:SDN為網路用戶提供了豐富的可編程API,用戶可以通過南向介面編程網路設備,用戶在控制器上面編寫自己的網路應用程序。
二是,將網路控制平面從數據平面中解耦合:傳統的網路設備控制部分與數據處理部分是綁定在一起的,SDN實現了數控分離,網路控制平面與數據平面之間通過南向介面分離開來,不再相互依賴。這樣做的好處是:用戶不再受限於設備廠商,對網路設備有更多的自主權。另外控制平面與數據平面可以獨立完成體系結構的演進,類似於計算機工業的Wintel模式,處理器和操作系統的技術演進不用互相依賴。
三是,邏輯上的集中控制:傳統的網路設備管理、控制和編程是分散式思路,SDN提倡集中式的管理和控制,通過控制器完成網路設備和整個網路的抽象,用戶可以通過編寫軟體的方式在控制器上實現自己的網路業務和方案。
總體來看,數控分離一方面為網路可編程提供了更多的可能,另一方面為邏輯上集中控制創造了條件。邏輯上集中控制為更高級的開放可編程提供了架構基礎。網路開放可編程才是SDN的發展的重要推動因素。從網路可編程發展歷史的角度來看,整個網路體系結構的演進如下所示。
SDN的分類
我們知道,網路可編程和開放性是SDN體系結構的兩大特徵。根據網路架構的開放程度,我們可以將SDN分為兩種類型:
第一類:開放的SDN,主導者是Nick教授推動的ONF開源組織,以及ON.Lab等,提倡完全開源和開放的SDN架構實現,充分擁抱OpenFlow作為主流的南向介面協議。背後一大幫網路用戶傾力往這個方向推動,比如Google,Facebook,微軟等。當然,還有大量的SDN領域初創公司。
第二類:廠商SDN,主導者是思科和VMware,一個倡導硬體為主的方案,另一個倡導軟體為主的方案。總之,都是希望在既往優勢的基礎上能更進一步,在SDN領域市場上有所作為。
根據網路架構的可編程能力,我們可以將SDN分為三個階段:
第一階段:網路設備可配置,這就是SDN出現之前的網路行業的現狀。傳統的交換機、路由器和防火牆等網路設備給用戶預留了簡單的命令行介面或圖形用戶界面,方便用戶進行簡單的配置和操作,比如配置埠IP地址和劃分VLAN。
第二階段:網路數據平面可編程,這是SDN過去幾年的發展現狀,以OpenFlow為首,在數控分離的基礎上逐步建立統一開放的南向介面。但是如果不對開放南向介面進行抽象,就相當於採用彙編語言進行計算機程序開發,是一種非常低層次的編程,與網路用戶的可編程需求還有很大差距。
第三階段:網路完全可編程,這是SDN目前的發展階段,隨著SDN控制器和P4語言框架的出現,實現了對網路編程能力的高度抽象,帶來了更加高級的網路可編程能力,網路可編程發展進入了中後期。
澤衛:有三個SDN定義值得參考。開放網路基金會ONF的描述,開放網路研究中心ONRC(三位學術界大牛創立)的描述,維基百科的描述。
關於」SDN是什麼「的問題依然值得深究。這是系統學習SDN的第一步,也是最關鍵的一步。記得在14年的知乎答案中寫過:檢驗第一步學習成果的標誌,心中是否對SDN存有一份敬畏,是否對SDN領域的從業者有一份敬畏。
更多有關SDN的內容,關注我的公眾號:SDN學習與研究。
購買SDN新書《重構網路:SDN架構與實現》:《重構網路:SDN架構與實現》(楊澤衛 李呈)
aHR0cDovL3dlaXhpbi5xcS5jb20vci9RME9wc2RYRXVZakdyWkhTOXhaUg== (二維碼自動識別)
推薦閱讀:
※EVPN簡介
※Traceroute in OpenFlow based SDN
※SDN 技術指南(二):OpenFlow
※NFV 閑聊(基礎技術篇)
※專欄《網路與SDN》開通