1. 程式人生 > >我們為什麽需要SDN?---致新人

我們為什麽需要SDN?---致新人

後來 src 通用 平面 相互 標準 新的 ott log

引言: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架構與實現》

我們為什麽需要SDN?---致新人