天天看點

SDN初步調研SDN簡述SDN詳述SDN能做什麼

SDN簡述

SDN是什麼(WHAT)

SDN(Software Defined Networking),即軟體定義網絡,它并不是某項具體的技術或者某個具體的協定,而是一個思想,一個架構,一種網絡設計理念。

SDN的核心理念是,希望應用軟體可以參與對網絡的控制管理,滿足上層業務需求,通過自動化業務部署簡化網絡運維。其實說通俗一點,就是把“傳統軟硬體網絡”給軟體化、抽象化了,可以通過管理平台像配置應用程式一樣對網絡進行配置,而不需要像以前一樣,逐個去手動配置每個節點的網絡裝置。

SDN一般具有以下幾個特點:集中式控制、控制與轉發分離、可程式設計、開放接口、虛拟化。

SDN基本架構主要是應用層、控制層、基礎設施層。

示意圖:

SDN初步調研SDN簡述SDN詳述SDN能做什麼

SDN出現的背景(WHY)

早在1995年就已經提出軟體定義網絡的概念,直到目前 SDN 引起廣泛關注,還要得益于網絡需求側翻天覆地的變化:雲計算業務(伺服器虛拟化技術為代表)成為主流,移動網際網路催生的大資料技術日益普及,包括網絡在内的資源快速配置、彈性擴容、按需調用需求強烈。傳統模式的弊端顯現:網絡裝置硬體、作業系統和網絡應用三部分緊耦合在一起,組成一個封閉系統,這三部分互相依賴、每一部分的創新和演進都要求其餘部分做出同樣的更新。

越來越多的網絡新協定和新算法使得網絡控制平面變得越來越複雜,但是現在的網絡使用者卻對網絡的易用性有更高的要求,希望網絡具有更多的可程式設計能力,進而自動化、智能化網絡管理。網絡發展目前還處于“管理複雜性”階段,這樣的架構嚴重阻礙了網絡創新程序的開展。

SDN詳述

SDN各層拆解

  • 控制層( Control Layer )

    控制層是 SDN 控制器管理網絡的基礎設施,可以根據需要靈活選擇多種控制器。

    在這一層中,控制器中包含大量業務邏輯,以擷取和維護不同類型的網絡資訊、狀态詳細資訊、拓撲細節、統計詳細資訊等。

    由于 SDN 控制器是用于管理網絡的,是以它必須具有用于現實世界網絡使用情況的控制邏輯,如交換、路由、二層VPN、三層VPN、防火牆安全規則、DNS、DHCP和叢集,網絡供應商和開源社群需要在自己的 SDN 控制器中實作自己的服務。這些服務會向上層(應用層)公開自己的API(通常是基于 REST,這使網絡管理者可以友善地使用應用程式上的 SDN 控制器的配置、管理和監控網絡)。

    目前市場上的 SDN 控制器解決方案大緻可以分為兩類:大型網絡裝置廠商提供商業方案,例如 Cisco Open SDN controller, Juniper Contrail, Brocade SDN controller, 和來自 NEC 公司的 PFC SDN controller ;社群組織提供的開源方案,例如 OpenDaylight, Floodlight, Beacon, Ryu 等等。

    Commercial Solutions:

    Cisco Open SDN Controller

    Juniper Contrail

    Brocade SDN controller

    PFC SDN controller(From NEC)

    Open Source Solutions:

    Beacon:由斯坦福大學開發,Java語言編寫

    Floodlight:源于Beacon,Big Switch Networks開發,Java語言編寫,Apache許可證

    OpenDaylight:Linux基金會負責管理的開源項目,JAVA編寫

    Ryu:由 NTT 開發,Python 編寫,能夠與 OpenStack 平台整合,控制器API豐富

    Mul: 由 Kulcloud 開發,核心采用 C 語言實作的多線程架構

    NodeFlow: 由 Cisco 開發,基于 Node.js 的 OpenFlow 控制器,JavaScript 編寫

    Trema: 由 NEC 開發,Ruby/C 編寫

    NOX: 由 Nicira 開發,C++/Python編寫,業界第一款 OpenFlow 控制器

    POX: 由 Nicira 開發,是 NOX 的純 Python 實作版本,目的是提供跨平台部署的便利性

  • 基礎設施層( Infrastructure Layer )

    基礎設施層,由各種網絡裝置構成。它可以是資料中心的一組網絡交換機和路由器。控制層負責管理底層實體網絡,實體層的實作可以是支援 OpenFlow 的硬體交換機,也可以是軟體形态,例如 Open vSwitch (OVS) 。OVS是一款基于開源技術實作的、能夠與伺服器虛拟化內建,具備交換機的功能,可以實作虛拟化組網。

  • 應用層( Application Layer )

    應用層對于開發者來說是開放區域,鼓勵開發盡可能多的創新應用。包括網絡的可視化:拓撲結構、網絡狀态、網絡統計等;網絡自動化相關應用:網絡配置管理,網絡監控,網絡故障排除,網絡安全政策等。SDN 應用程式可以為企業和資料中心網絡提供各種端到端的解決方案。

  • 南向接口( Southbound interface )

    控制層到基礎設施層(網絡交換機)通訊需要經過南向接口,目前主要的協定是 OpenFlow , NetConf,OVSDB 。 OpenFlow 協定是事實上的國際行業标準,NOX 、Onix 、Floodlight 等都是基于 OpenFlow 控制協定的開源控制器。

  • 北向接口( Northbound interface )

    北向接口:應用層通過 API 的方式與SDN 控制器通訊。與南向接口不同,現在北向接口還缺少業界公認的标準,實作方案思路有的從使用者角度出發、有的從營運商角度出發、有的從産品能力角度出發。技術風格上,部分傳統的網絡裝置廠商傾向于在現有的裝置上提供程式設計接口供業務App調用,許多上層應用的開發者也比較傾向于采用 REST API 接口的形式。

OpenFlow在SDN中的角色

在SDN解決方案中,openflow是其中非常關鍵的一個協定,它是一種具體的通信協定,而且基本上已經是事實上的行業标準了,目前業内SDN互動協定大多采用openflow。

很多人對openflow與SDN經常混淆,這主要是從曆史上刊,兩者确實是你中有我、我中有你。首先,作為一個開放的協定,OpenFlow 協定是衆多 SDN 控制器解決方案的實作基礎;另外,定義 SDN 概念和架構背後的許多重要人物開始在 OpenFlow 領域取得了突破,進而推動 SDN 概念走向成熟。

在傳統的網絡交換裝置中,轉發平面(通常采用專門的晶片以提高性能)與控制平面(分布地部署在網絡的各個節點)是緊密耦合的,被內建實作在單獨的裝置中。當然,從另一個角度看這樣的設計也有合理性,至少能提高單個節點的靈活性和容災能力。但是衆多廠商各自為政,更出于技術保密、保持市場的考慮,對于開放接口供使用者調用、建立行業标準的興趣不大。OpenFlow 協定的推出突破了傳統壁壘,有利于增加使用者側的話語權,是以 Google、Facebook 等企業是 OpenFlow 協定最堅強的擁趸,他們的資料中心都在使用 OpenFlow 協定,并倡議發起成立 ONF 來推動這個技術。

OpenFlow 提供了一個在 SDN 控制器和網絡裝置(如交換機)之間通訊的标準協定。他允許由 SDN 控制器下發到轉發規則(forwarding rules)、安全規則(security rules)到底層網絡交換機,完成路由決策、流量控制。OpenFlow 協定相當于一種共同語言,是以SDN 控制器和交換機都需要實作OpenFlow 協定,以便他們能夠了解 OpenFlow 消息(message)。

基于 OpenFlow 消息,該協定還可以支援網絡交換機監控:為了監控網絡交換機,OpenFlow 協定提供了從交換機抓取網絡統計資訊、事件消息的請求/響應封包,友善控制器獲得從交換機一側感覺人工操作和失敗資訊的能力,包括流移除事件,端口狀态 UP/DOWN 變化等。為了能夠支援第三方廠商可以在 OpenFlow 交換機上執行特定的任務,OpenFlow 協定提供可擴充的自定義消息結構,允許控制器和交換機之間傳遞資訊。那是怎樣的 OpenFlow 被許多SDN應用程式用來提供簡單的網絡控制和管了解決方案。

OpenFlow 協定定義了多種消息來完成交換機和控制機通訊,例如:

  • 連接配接設定消息(connection setup messages)
  • 配置消息(configuration messages)
  • 交換機統計資訊消息(switch statistics messages)
  • 連接配接監測消息(keep-alive messages)
  • 異步事件消息(asynchronous events messages)
  • 發生錯誤消息(error messages)

SDN常見開源項目

以控制器、交換機、網絡虛拟化等分類,列出衆多開源項目,具體可參見下面連結:

https://www.sdnlab.com/8091.html

SDN能做什麼

目前落地現狀

SDN目前最大的一個應用場景是在網絡虛拟化中的應用,其中尤其是在網際網路資料中心的落地。硬體 SDN 的落地進展并不順利,雖然也有一些落地案例,但是離大規模部署還有較遠的路要走。

SDN的落地,歸納來講,大緻有兩類驅動:一是業務層面靈活性的需求,二是轉發層面靈活性的需求。

  • 業務層面靈活性需求

這主要是強調可程式設計。通過開放的可程式設計接口,提供給使用者原來無法獲得的對網絡配置管理和政策部署的靈活性控制。

比如,通過定制化的SDN交換機,使得使用者可以在界面上按需調整自己的出口帶寬。再比如某些場景下網絡拓撲和政策是易變的,這也需要通過SDN來提供這種靈活性,實作網絡拓撲的靈活配置甚至動态調整。

  • 轉發層面靈活性需求

這主要是針對一些非常特定的場景,主要是為了比對或者修改特定字段,通常是傳統交換機不支援的(其實晶片也許能支援,隻是交換機系統沒做)。比如用來做 DDoS 防攻擊(日本 Sakura Internet 的應用),用來做負載均衡 + NAT,用來做 TAP 應用(價格是專業的 TAP 裝置的至少 1/5),用來将 PPPoE 跟 IP 區分開并靈活控制等等。這類應用主要的靈活性展現在轉發面上而不是控制面。

貼幾個文檔,闡述了目前SDN落地的幾個主要場景。

https://www.infoq.cn/article/sdn-practice-and-thinking-problem-plan

https://cloud.tencent.com/info/2ad72705d8b34a99a91ff4fd626225d8.html

SDN支援的能力

最後梳理一下調研到的SDN目前能夠支援的能力:

  • 流量控制。可以根據業務需要定制政策,根據政策将流量轉發到不同的鍊路上去。
  • 轉發控制。可以自定義一些轉發政策(比如選取最大帶寬網絡),然後生成流表下發到底層裝置,控制轉發。
  • 帶寬控制。雲計算領域,可以通過SDN能力來控制租戶的網絡帶寬,實作按需收費。
  • 網絡拓撲管理。能夠感覺和控制網絡拓撲結構,實作網絡拓撲的靈活配置,快速部署。
  • 網絡隔離與通路控制。通過控制器,可以控制某些機器或網絡之間互相隔離,不能互通,實作通路的控制。
  • 安全政策配置。可以配置一些安全政策進行下發,提升網絡的安全性。
  • 網絡裝置監控。可以通過控制器相對集中地監控各種網絡和裝置狀态。
  • 安全防護(DDos攻擊防護)。本質上還是通過引流,在檢測到攻擊後,會将攻擊流量引到SDN交換機,然後進行資料包的相應改寫導入清洗系統進行清洗。
  • 負載均衡。本質上還是通過流量與轉發控制,流表下發來實作四層上的負載均衡。
SDN