SDN 技術指南(一):架構概覽

摘要

  • Background:為什麼需要 SDN
  • SDN的主要解決方案
  • SDN的整體應用架構
  • SDN與網路安全
  • OpenFlow工作原理
  • OpenFlow在SDN架構中的角色

Background

軟體定義網路(Software-defined networking,SDN),一種新的網路架構。SDN 提出的控制與轉發平面分離、網路狀態集中控制、支持軟體編程等理念並不是什麼新鮮事,但是長久以來一直沒有非常突破性的進展。

「為了讓系統更好地工作,早期需要管理複雜性而後期需要提取簡單性。」 —唐·諾曼(Donald Arthur Norman)

目前 SDN 引起廣泛關注得益於網路需求側翻天覆地的變化:雲計算業務(伺服器虛擬化技術為代表)成為主流,移動互聯網催生的大數據技術日益普及,包括網路在內的資源快速配置、彈性擴容、按需調用需求強烈。傳統模式的弊端顯現:網路設備硬體、操作系統和網路應用三部分緊耦合在一起,組成一個封閉系統,這三部分相互依賴、每一部分的創新和演進都要求其餘部分做出同樣的升級。

越來越多的網路新協議和新演算法使得網路控制平面變得越來越複雜,但是現在的網路用戶卻對網路的易用性有更高的要求,希望網路具有更多的可編程能力,從而自動化、智能化網路管理。正如 SDN 的倡導者 Scott Shenker,U.C. Berkeley Professor 所言,網路發展目前還處於「管理複雜性」階段,這樣的架構嚴重阻礙了網路創新進程的開展。

SDN Solutions

如何解決從「管理複雜性」階段轉變到「提取簡單性」階段呢?最先取得成功商用經驗的是互聯網企業Google。

Google 的 SDN 實踐

Google 基於 SDN 技術改造其骨幹網 G-scale(Backbone Network,也稱WAN網)。WAN網的主要任務是負責全球12個數據中心之間的互聯,數據流量的內容包括:1. 用戶數據備份,例如視頻、圖片、語音等;2. 跨數據中心存儲訪問,例如計算資源和存儲資源分布不同;3. 大規模的數據同步。WAN 網成本高昂(包括很多海底光纜),而且存在數據流量大但是鏈路帶寬利用率低的問題:為了實現負載均衡,同時避免大流量都被分發到同一個鏈路上導致丟包,Google不得不使用過量鏈路,提供比實際需要多得多的帶寬,實際鏈路帶寬利用率只有30%~40%,而且仍不可避免有的鏈路很空閑,有的鏈路產生擁塞,設備必須支持很大的包緩存,成本高。為了增強網路的可管理性,Google 首先在帶寬分配和路徑計算方面嘗試。解決思路是當一個新的數據要開始傳輸時,應用程序會評估所需要耗用的帶寬,為它選擇一條最優路徑(如負載最輕但非最短路徑,雖不丟包但延時大),然後把這個應用對應的策略通過控制器(Controller)下發到定製的交換機中,跟選擇的路徑綁定在一起,從而整體上使鏈路帶寬利用率達到最優。

SDN 架構中最顯著的一個特點就是採用集中式控制器(Controller):

SDN 世界的兩大山頭

SDN 技術體系目前還處於激烈競爭階段,相關新產品和新技術層出不窮,如果要梳理大致可以分為兩個流派:

  • ONF(Open Networking Foundation,開放網路基金會 )

    董事會成員:德國電信(DT)、Facebook、 Google, Microsoft、Verizon、Yahoo!、日本 NTT 電信、高盛公司

    特點:面向用戶
  • 傳統巨頭大聯盟(通過Linux基金會(Linux Foundation)合作)

    成員:思科(Cisco)、IBM、 微軟、Big Switch、博科、思傑、戴爾、愛立信、富士通、英特爾、瞻博網路、微軟、NEC、惠普、紅帽和VMware

    協作項目:OpenDaylight(20130408)

    特點:大廠控制「嫌疑」

SDN 標準化組織

  • IETF(Internet Engineering Task Force,互聯網工程任務組)

    相對 ONF 而言,更多是由網路設備廠商主導,已經發布了多篇 RFC 文稿,內容涉及需求、框架、協議、轉發但願模型及 MIB 等。
  • ETSI NFV(Network Functions Virtualisation)

    成員:歐洲電信標準協會(European Telecommunications Standards Institute,ETSI)包括 AT&T, 英國電信(BT), 德國電信等

    特點:主要工作成果是 「網路功能虛擬化白皮書」,對NFV的定義、應用場景、基本功能,以及SDN等技術的關係等內容進行描述。
  • ITU-T (國際電信聯盟通信標準化組織)

    由 ITU-T 指定的國際標準通常被稱為建議(Recommendations),2012年開始 SDN 與電信網路結合的標準研究。

SDN Architecture

SDN在應用中大體上可以可以劃分為三層體系結構:

  • 應用層(Application Layer)
  • 控制層(Control Layer)
  • 基礎設施層(Infrastructure Layer)

不同層次之間通過介面通訊:

  • 北向介面(Northbound interface)
  • 南向介面(Sorthbound interface)

控制層( 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:
  • 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 的硬體交換機,隨著虛擬化技術的完善,SDN 交換機可以是軟體形態,例如 Open vSwitch (OVS) 就是一款基於開源技術實現的、能夠與伺服器虛擬化(Hypervisor)集成,具備交換機的功能,可以實現虛擬化組網。另外,OVS 支持傳統的標準管理介面,例如 NetFlow 、sFlow 等,監測虛擬環境中的流量情況,詳見 《淺談基於數據分析的網路態勢感知》 。

應用層( Application Layer )

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

例如,Brocade 應用實例:

  • Brocade Flow Optimizer
  • Brocade Virtual router
  • Brocade Network advisor

HPE 應用實例:

  • HPE Network Optimizer
  • HPE Network protector
  • HPE Network visualizer
  • NEC UNC for HP SDN VAN Controller
  • Aricent SDN Load balancer
  • TechM smart flow steering
  • TechM server load balancer

南向介面( Southbound interface )

控制層到基礎設施層(網路交換機)通訊需要經過南向介面,目前主要的協議是 OpenFlow , NetConf,OVSDB 。 OpenFlow 協議是事實上的國際行業標準,NOX 、Onix 、Floodlight 等都是基於 OpenFlow 控制協議的開源控制器。作為一個開放的協議,OpenFlow 突破了傳統網路設備廠商各自為政形成的設備能力介面壁壘。

北向介面( Northbound interface )

北向介面:應用層 通過 API 的方式 與 SDN 控制器通訊。與南向介面不同,現在北向介面還缺少業界公認的標準,實現方案思路有的從用戶角度出發、有的從運營商角度出發、有的從產品能力角度出發。技術風格上,部分傳統的網路設備廠商傾向於在現有的設備上提供編程介面供業務App調用,許多上層應用的開發者也比較傾向於採用 REST API 介面的形式。

aHR0cDovL3dlaXhpbi5xcS5jb20vci9xM1ZrZkZmRVp3b1lyUk1mOXlDNQ== (二維碼自動識別)


推薦閱讀:

Cookie 從哪裡來,網站用它來幹嘛?
B 站又雙叒出問題了?淡定,往這兒看……
世界主要國家的商業進口
求具體解釋永恆之藍傳播過程?
為什麼國內大學計算機學科不設置 Web 前端相關課程?

TAG:SDN | SDN控制器 | 计算机网络 |