通往SDN之路:可編程網絡的思想史

通往SDN之路:可編程網絡的思想史

摘要:這篇文章是對論文《The Road to SDN:An Intellectual History of Programmable Networks》的讀後總結。本文主要分爲四個部分:第一個部分是對SDN的簡單介紹;第二個部分追溯了可編程網絡的發展歷史,包括在主動網絡、早期分離控制面和數據面方面所作的工做以及OpenFlow和網絡操做系統的相關介紹。第三部分介紹了網絡虛擬化。第四部分是簡要的總結。文中也揭示了關於一些技術的誤解。算法

1.介紹

軟件定義網絡(Software Defined Network,SDN)是由美國斯坦福大學CLean State課題研究組提出的一種新型網絡創新架構,是網絡虛擬化的一種實現方式。其核心技術OpenFlow經過將網絡設備的控制面與數據面分離開來,從而實現了網絡流量的靈活控制,使網絡做爲管道變得更加智能,爲核心網絡及應用的創新提供了良好的平臺。編程

SDN產生的一些緣由
 網絡設備的複雜性和難以管理。從交換機到路由器,這中間就存在着許多設備。網絡管理員經過配置接口來配置設備,可是不一樣供應商或者同一供應商的不一樣設備間的配置接口也是不一樣的。這些因素在增長網絡管理複雜性的同時也增長了網絡的運營成本。所以產生了SDN(軟件定義網絡)這一新的網絡設計和網絡管理方式。緩存

SDN的兩個特性安全

  • 控制面與數據面分離
     控制面--------決定如何處理流量
     數據面--------根據控制面的決策轉發流量
  • 將控制面合併
     使得一個軟件控制程序能夠控制多個數據面的元素

控制面是如何控制數據面的呢?
  經過應用程序編程接口(API)進行控制。例如OpenFlow。服務器

OpenFlow:是一種網絡通訊協議,屬於數據鏈路層,可以控制網上交換器或路由器的轉發平面(forwarding plane),藉此改變網絡數據包所走的網絡路徑。網絡

SDN近期的狀況
 近年來,SDN在行業中得到巨大的吸引力,許多商業交換機支持OpenFlow API。與此同時也出現了許多控制平臺,程序員可使用這些控制平臺建立了許多應用程序。如:動態訪問控制、網絡虛擬等。大量信息技術有限公司加入到了SDN的行業聯盟中。如:Open Networking Foundation、Daylight Initiative等。架構

2.通往SDN之路

SDN的歷史能夠分爲三個階段,每一個階段都有本身的貢獻:
主動網絡(20世紀90年代中期~21世紀初)
將控制面與數據面分離(2001~2007年)
OpenFlow API和網絡操做系統(2007~2010年左右)框架

2.1主動網絡

主動網絡:主動網絡有兩個含義:一是被稱爲ANN的網絡中間節點(如路由器、交換機),不只完成存儲轉發等網絡功能,並且能夠對包含數據和代碼的所謂主動包和普通包進行計算;。二是用戶根據網絡應用和服務的要求能夠對網絡進行編程以完成這些計算。ssh

主動網絡的基本思想:將程序注入數據包,使程序和數據一塊兒隨數據包在網絡上傳輸;網絡的中間節點運行數據包中的程序,利用中間節點的計算能力,對數據包中的數據進行必定的處理;從而將傳統網絡中「存儲——轉發」的處理模式改變爲「存儲——計算——轉發」的處理模式。

主動網絡採起的兩種編程模型
囊模型:在節點中須要執行的代碼由數據包攜帶
可編程路由器/交換機模型:在節點上執行的代碼由帶外機制創建

 其中囊模型與主動網絡的聯繫最爲緊密,囊模型設想在網絡上安裝新的數據面功能,以數據包的形式攜帶代碼,並使用緩存來提升代碼分發的效率。可編程路由器將可擴展性交給網絡運營商。

促進主動網絡的發展
 一些資助機構對主動網絡的興趣也是促進其發展的重要因素。例如:DARPA(美國國防部高級研究計劃局)在20世紀90年代中期到21世紀初建立並支持主動網絡項目。

人們對主動網絡的懷疑
 因爲主動網絡強調的是演示、項目的相互操做性以及必定程度的開發工做,在短時間內缺少一些實例,由此引發了一些人員的懷疑,這多多少少會對某些工做產生影響。

主動網絡對SDN的貢獻

  • 網絡可編程性下降了技術創新的障礙
    在SDN最初的動機中,常常提到難以在網絡中進行創新和提升編程性的概念。而主動網絡開創了可編程網絡的概念,做爲下降網絡創新障礙的一種方式。
  • 網絡虛擬化,以及基於包頭對軟件程序進行復用的能力
    主動網絡提出了一個用於描述一個平臺組件的框架:該平臺的關鍵組件是:管理共享資源的共享節點操做系統;一組執行環境,每一個環境定義一個用於包交換的虛擬機;一組活動應用程序,它們在給定的執行環境中工做,提供端到端的服務。
  • 中間件編排統一的架構
    這個架構是用來統一衆多的中間件函數,雖然在近期的網絡虛擬化工做中沒有用到,可是隨着SDN的控制和中間件編排應用的發展,這些架構都會派上用場。

對主動網絡的誤解

  • 人們對主動網絡的一個誤解是認爲包必須攜帶由端用戶編寫Java代碼,認爲主動網絡的研究與實際網絡相差太遠,本質上是不安全的,所以對它不屑一顧。
  • 另外一個是主動網絡因不能提供實際的性能和安全性(主動網絡主要專一架構、編程模型和平臺,性能並非其考慮的首要因素)

2.2控制面與數據面分離

在傳統的路由器和交換機中,數據面和控制面是緊密耦合的,而這種耦合使得各類網絡管理任務都極具挑戰性。爲了應對這種挑戰,各類分離數據面和控制面的研究開始出現。

兩項創新

隨着網絡規模和範圍的日益增加,對可靠性和新服務的需求(如虛擬網絡)、以及服務器內存和處理器處理資源的能力的不斷增大,催生了兩項創新。

  • 控制面和數據面之間的開放接口:如IETF(互聯網工程任務組)標準化的ForCES接口(轉發和控制元素分離)、Netlink接口(Linux內核級包轉發功能)。

    ForCES是Forwarding and Control Element Separation的簡稱,致力於轉發件和控制件的分離,ForCES協議對轉發和控制面的信息交互進行了標準化。
    Netlink套接字是用以實現用戶進程與內核進程通訊的一種特殊的進程間通訊(IPC) ,也是網絡應用程序與內核通訊的最經常使用的接口。

  • 在邏輯上對網絡進行集中控制:如路由控制平臺(RCP)、軟路由架構、路徑計算原件(PCE)協議。

    軟路由是指利用臺式機或服務器配合軟件造成路由解決方案,主要靠軟件的設置,達成路由器的功能;而硬路由則是以特有的硬設備,包括處理器、電源供應、嵌入式軟件,提供設定的路由器功能。
    路徑計算元件(PCE)是可以肯定和找到用於在源和目的地之間傳送數據的合適路線的系統組件,應用或網絡節點。

將控制功能轉移到單獨的服務器上的意義

 邏輯上集中的路由控制器下降了標準的實施障礙;服務器技術的進步則意味着單一的商品服務器能夠存儲的全部的路由狀態,併爲一個大型網絡計算全部的路由決策。

爲分離數據面和控制面,SDN設計中提出的兩個概念

  • 使用數據面的開放接口進行集中邏輯控制
    軟路由使用ForCES API容許單獨的控制器在數據面安裝轉發表,從而在路由器中徹底刪除控制功能。遺憾的是,主要的路由器供應商並無採用這個。因此RCP只好使用現有的標準控制面協議在傳統路由器中安裝轉發表。
  • 分佈式狀態管理
    邏輯上集中的路由控制器面臨着分佈式狀態管理的挑戰。由於一個邏輯上集中的控制器必需要複製控制器故障,可是複製會在多個副本之間引發狀態不一致的問題。爲解決這個問題,每一個控制器能夠負責網絡拓撲的一個部分,而後這些控制器彼此間交換路由信息,以確保作出一致的決策。

一些誤解

 批評的人對這些新架構的懷疑主要在於他們認爲邏輯上集中的路由控制會違反「共享」的原則,這是由於控制器可能會獨立於負責流量轉發的設備出現故障。

尋求通常性

 主要的設備供應商幾乎沒有採用ForCES這樣的標準數據面API,由於開放的API會使新的競爭者進入市場。所以只能依賴現有的路由協議來控制數據面。爲了拓寬控制面與數據面分離的應用面,研究人員探索了一些邏輯集中控制的全新架構。如:The 4D project.

4D項目倡導了4個層次:
數據面------基於配置規則來處理包
發現面------拓撲收集和流量監測
傳播面------安裝包處理規則
決策面------由邏輯上集中的控制器組成,這些控制器將網絡級目標轉換爲包處理狀態

2.3OpenFlow和網絡操做系統

OpenFlow

OpenFlow是一種網絡通訊協議,屬於數據鏈路層,可以控制網上交換機或路由器的轉發平面(forwarding plane),藉此改變網絡數據包所走的網絡路徑。

  • 歷史
    OpenFlow的最初概念始於2008年在斯坦福大學開始。到2009年12月,OpenFlow交換規範1.0版發佈。自成立以來,OpenFlow一直由開放網絡基金會(ONF)管理,ONF是一個致力於開放標準和SDN應用的用戶主導型組織。
  • OpenFlow網絡的組成
    OpenFlow網絡由OpenFlowswitch(OpenFlow交換機)、FlowVisor(網絡虛擬化層)和Controller(控制器)三部分組成。OpenFlow交換機進行數據層的轉發;FlowVisor對網絡進行虛擬化;Controller對網絡進行集中控制,實現控制層的功能。
  • OpenFlow的相關應用
    ① 在校園網絡中的運用-----這項應用能夠爲學生和科研人員實現新協議和新算法提供一個很好的試驗平臺。
    ② 在數據中心網絡中的應用-----在數據中心網絡中使用OpenFlow交換機,可使得網絡和計算資源更加緊密的聯繫起來並實現有效的控制。
    ③ 在網絡管理和安全控制中的應用-----基於OpenFlow技術實現的網絡更加便於控制。更爲重要的是,在內部網絡和外網的鏈接處應用OpenFlow交換機能夠經過更改數據流的路徑以及拒絕某些數據流來加強企業內網的安全性。
    ④ 基於OpenFlow實現SDN-----基於OpenFlow實現SDN,則在網絡中實現了軟硬件的分離以及底層硬件的虛擬化,從而爲網絡的發展提供了一個良好的發展平臺。

網絡操做系統

網絡操做系統 ,是一種能代替操做系統的軟件程序,是網絡的心臟和靈魂,是向網絡計算機提供服務的特殊的操做系統,藉由網絡互相傳遞數據與各類消息。分爲服務器(Server)和客戶端(Client)。服務器的主要功能是管理服務器和網絡上的各類資源和網絡設備的共用,加以統合並控管流量,避免有癱瘓的可能性;客戶端能接收服務器所傳遞的數據並加以運用,能夠清楚地搜索所需的資源。

關於SDN一些誤解

① 第一個誤解是每一個流量的第一個數據包必須交由控制器進行處理。實際上SDN(尤爲是OpenFlow)並不會對規則的粒度或控制器是否處理流量進行響應。
② 第二個誤解是控制器在物理上必須是集中的。事實上Onix(Online Information eXchange,線上資訊交換標準)和ONOS(Open Network Operating System,開放網絡操做系統)就說明了SDN控制器能夠並且應該是分佈式的。
③ 第三個誤解是認爲SDN和OpenFlow是等價的。事實上OpenFlow只是SDN的一個實例。

3.網絡虛擬化

SDN早期的一個突出實例就是網絡虛擬化,網絡虛擬化提供了一個與底層物理設備解耦的抽象網絡。網絡虛擬化容許多個虛擬網絡在共享的基礎設施上運行,並且每一個虛擬網絡都具備比底層物理網絡更加簡單的拓撲結構。

SDN出現以前的網絡虛擬化

 在SDN出現以前的虛擬網絡被限制在只能在現有的網絡協議上運行,這給新技術的部署帶了困難,因此研究人員採起了運行覆蓋網絡的方法,在傳統網絡上創建知足要求的拓撲結構。不一樣於主動網絡,覆蓋網絡不須要網絡設備或網絡服務提供者的支持,這使得覆蓋網絡更易於部署。

覆蓋網絡(Overlay network)是一種建立在另外一網絡之上的計算機網絡。覆蓋網絡中的節點能夠被認爲是經過虛擬或邏輯連接相連,其中每一個連接對應一條路徑(Path)。節點之間也可能經過下層網絡中的多個物理鏈接實現相連。 例如對等網絡或客戶-服務器應用這類分佈式系統均可視爲覆蓋網絡,由於它們的節點都運行在因特網之上。 因特網自身最初也是做爲一個電話網絡之上的覆蓋網絡構建,而當今(藉由VoIP的引入),電話網絡正愈來愈變成一個建立在因特網之上的覆蓋網絡。

網絡虛擬化和SDN的關係

  • SDN是做爲一種支持網絡虛擬化的技術
    雲計算使網絡虛擬化的做用更加突出,它容許多個用戶共享網絡基礎設施。例如:Ncira的網絡虛擬化平臺就提供了這種抽象,而不須要任何來自底層網絡硬件的支持。

    Nicira是一家專一於軟件定義網絡(SDN)和網絡虛擬化的公司。它由Martin Casado,Nick McKeown和Scott Shenker於2007年創立。Nicira建立了本身的OpenFlow,Open vSwitch和OpenStack網絡項目的專有版本。

  • 網絡虛擬化能夠用於測試和評估SDN
    SDN控制應用程序與底層數據面分離的功能使得在將控制應用程序佈置到操做網絡上以前,能夠在虛擬環境中測試和評估SDN控制應用程序。例如:Mininet是用基於進程的虛擬機來運行多個OpenFlow交換機、終端主機和SDN控制器,每一個進程都單獨地運行在相同的虛擬機上。

    Mininet是由一些虛擬的終端節點(end-hosts)、交換機、路由器鏈接而成的一個網絡仿真器,它採用輕量級的虛擬化技術使得系統能夠和真實網絡相媲美。
    Mininet能夠很方便地建立一個支持SDN的網絡:host就像真實的電腦同樣工做,可使用ssh登陸,啓動應用程序,程序能夠向以太網端口發送數據包,數據包會被交換機、路由器接收並處理。有了這個網絡,就能夠靈活地爲網絡添加新的功能並進行相關測試,而後輕鬆部署到真實的硬件環境中。

  • 對SDN進行虛擬化
    在傳統網絡中,對路由器和交換機的虛擬化比較複雜,由於每一個虛擬組分都須要運行自身的控制面軟件,而虛擬化一個SDN交換機就容易多了。例如:FlowVisor系統使得大學可以支持在承載流量的相同物理設備上進行網絡研究的實驗平臺,主要思想是:將流量進行分片,其中每一個分片共享網絡資源,並由不一樣的SDN控制器管理。

    FlowVisor是創建在OpenFlow之上的虛擬化網絡平臺,它能夠將物理網絡分紅多個邏輯網絡,從而實現開放軟件定義網絡(SDN)。它爲管理員提供了廣泛的定義規則來管理網絡而不是經過調整路由器和交換機來管理網絡。

一些誤解

 人們常常提到的一些所謂的「SDN的好處」,好比攤銷成本或在多用戶的環境中動態配置網絡,這些實際上都來自網絡虛擬化。雖然SDN促進了網絡虛擬化,但必須認識到SDN提供的功能並不直接提供這些好處。

4.總結

 這篇文章介紹了可編程網絡的前世此生,可編程網絡的最初概念來自於主動網絡,兩者之間有許多相同的願景。可是主動網絡缺少明確的用例,也缺少大量部署的路徑。在互聯網騰飛的時代事後,人們的目光轉向了實用主義,爲了使網絡更便於管理,分離數據面和控制面的想法開始出現。隨後OpenFlow和網絡操做系統的研究工做使得對應用程序進行網絡範圍的控制成爲可能。SDN在這個過程當中只是扮演着解決網絡問題的工具的角色。SDN倡導的是「開箱即用」的網絡編程方式,而不能受當前技術的限制。在設計SDN應用程序時不能簡單地只考慮當前的OpenFlow協議,而應當考慮但願對數據面具備什麼樣的控制,並在這種設想和實際的部署策略之間找到平衡。

相關文章
相關標籤/搜索