閱讀1001 返回首頁    go 技術社區[雲棲]


我們為什麼需要SDN?

引言:SDN為什麼會出現?是什麼原因使得學術界提出SDN?我們為什麼需要SDN?如果你剛接觸SDN方案時,你一定有這樣的疑問。而問題的答案是:我們需要擁有更多可編程能力的網絡,來支持快速增長的網絡業務需求。
本文選自《重構網絡:SDN架構與實現》。

  眾所周知,相比發展迅速的計算機產業,網絡產業的創新十分緩慢。每一個創新都需要等待數年才能完成技術標準化。為了解決這個問題,SDN創始人Nick McKeown教授對計算機產業的創新模式和網絡產業的創新模式進行了研究和對比。在分析了計算機產業的創新模式之後,他總結出支撐計算機產業快速創新的如下三個因素。

  • 計算機工業找到了一個麵向計算的通用硬件底層:通用處理器,使得計算機的功能可以通過軟件定義的方式來實現。
  • 計算機功能的軟件定義方式帶來了更加靈活的編程能力,使得軟件應用的種類得到爆炸式的增長。
  • 計算機軟件的開源模式,催生了大量的開源軟件,加速了軟件開發的進程,推動了整個計算機產業的快速發展,Linux開源操作係統就是最好的證明。

相比之下,傳統的網絡設備與上世紀60年代的IBM大型機類似,網絡設備硬件、操作係統和網絡應用三部分緊耦合在一起組成一個封閉的係統。這三部分相互依賴,通常隸屬於同一家網絡設備廠商,每一部分的創新和演進都要求其餘部分做出同樣的升級。這樣的架構嚴重阻礙了網絡創新進程的開展。如果網絡產業能像當今計算機產業一樣,也具備通用硬件底層、軟件定義功能和開源模式三要素,一定能獲得更快的創新速度,最終像計算機產業一樣取得空前的發展。

  正是在這種思路的影響下,McKeown教授團隊提出了一個新的網絡體係結構:SDN。在SDN架構中,網絡的控製平麵與數據平麵相分離,數據平麵將變得更加通用化,變得與計算機通用硬件底層類似,不再需要具體實現各種網絡協議的控製邏輯,而隻需要接收控製平麵的操作指令並執行即可。網絡設備的控製邏輯轉而由軟件實現的SDN控製器和SDN應用來定義,從而實現網絡功能的軟件定義化。隨著開源SDN控製器和開源SDN開放接口的出現,網絡體係結構也擁有了通用底層硬件、支持軟件定義和開源模式三個要素。從傳統網絡體係結構到SDN網絡體係結構的演進關係如下。

          圖片描述
                    傳統網絡架構向SDN架構演進示意圖

  所以可以看出,Nick McKeown教授在分析計算機產業創新模式的基礎上,對傳統網絡係統的三部分功能模塊進行了重新劃分,在每層之間建立統一的開放接口,從而形成類似計算機架構的SDN體係結構。

  除了從Nick McKeown教授的思路去理解為什麼SDN會出現以外,還可以從另外一位SDN創始者Shenker教授的觀點中順藤摸瓜,進一步了解為什麼SDN會出現。

  “為了讓係統更好地工作,早期需要管理複雜性而後期需要提取簡單性”是由美國學者唐·諾曼提出的係統設計理念。在這個理念的啟發下,Shenker教授對現階段的網絡係統進行了分析,並得出了結論:網絡發展了這麼多年,仍然處於“管理複雜性”階段,越來越多的網絡新協議和新算法使得網絡控製平麵變得越來越複雜。但是現在的網絡用戶卻對網絡的易用性有更高的要求,希望網絡具有更多的可編程能力,從而自動化、智能化網絡管理。所以對於當下的網絡而言,當務之急是如何解決從“管理複雜性”階段轉變到“提取簡單性”階段的問題。

  Shenker教授以計算機軟件編程為例進行分析。編程語言發展初期,程序員必須處理所有底層硬件細節,整個編程方式處於“管理複雜性”階段;後來出現的高級編程語言對底層硬件細節進行了抽象,提出了操作係統、文件係統和麵向對象等抽象概念,使得編程變得更加容易。從計算機軟件編程的發展中可以看出,“抽象”是完成這個轉變的關鍵。

  而對於網絡而言,現有的分層協議可以看作一種數據平麵抽象模型,但是控製平麵依然隻是網絡功能和網絡協議的堆砌,缺少合適的抽象模型。所以,網絡需要建立控製平麵的抽象模型。

  而在SDN架構中,SDN控製平麵、數據平麵通用抽象模型和全局網絡狀態視圖三種抽象模型實現了包括控製平麵抽象在內的網絡抽象架構。SDN控製平麵抽象模型支持用戶在控製平麵上進行編程去控製網絡,而無須關心數據平麵的實現細節;SDN數據平麵通用抽象模型將不同協議的匹配表整合起來,形成多字段匹配表,解決了網絡協議堆砌問題;集中式的SDN控製平麵也可以統計網絡狀態信息,提供描述網絡狀態的抽象模型。因此,通過進一步的抽象,SDN可以使網絡從“管理複雜性”階段到“提取簡單性”階段轉變,滿足網絡用戶對易用性的需求,使網絡管理更加簡單,更加自動化和智能。這也是為什麼需要SDN的原因之一。

  對比兩位SDN創始人的觀點:Nick McKeown教授從“係統功能重構(Refactoring Functionality)”的角度來分析、解決當下的網絡問題,而Scott Shenker教授卻從“重新定義抽象(Redefining Abstractions)”的角度來嚐試解決現有的網絡問題。歸根結底,這兩種思路從不同的角度闡述了當下網絡需要更多可編程能力的事實,而這也正是為什麼需要SDN的真正原因。雖然兩位教授的思路不同,但殊途同歸,有異曲同工之妙。

  本文選自《重構網絡:SDN架構與實現》,點此鏈接可在博文視點官網查看此書。
                    圖片描述
  想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼並關注。
                       圖片描述

最後更新:2017-04-18 15:00:34

  上一篇:go js數據類型有哪些
  下一篇:go oracle數據庫中恢複誤刪除數據的多種方法匯總