ODL之SDN入門篇

2023-01-15 06:54:04 字數 4418 閱讀 6279

本文作為碼農學odl系列的sdn基礎入門篇,分為兩部分。第一部分,主要講述sdn是什麼,改變了什麼,架構是什麼樣的,第二部分,簡要介紹如何去學習sdn。

1.什麼是sdn

sdn(software define network) ,即為軟體定義網路,可以看成網路界的作業系統。從sdn的提出至今,其內涵和外延也不斷地發生變化,越來越多的人認為「可以集中控制、開放可程式設計和轉控分離的網路」就是sdn網路,並且還延伸出軟體定義計算、軟體定義儲存以及軟體定義安全等。sdn加快了新業務引入的速度,提公升了網路自動化運維能力,同時,也降低了運營成本。

sdn的基礎知識如下圖所示,下面各小節內容將根據該圖內容進行展開論述:

基礎本質及核心

我們知道,傳統網路中的路由器也存在控制平面和**平面,在高階的路由器或交換機還採用物理分離,主控板上的cpu不負責報文**,專注於系統的控制;而業務板則專注於資料報文**。所以路由器或交換機內的控制平面與**平面相對獨立又協同工作,如圖所示:

但這種分離是封閉在被稱為「盒子」的交換機或路由器上,不可程式設計;另一方面,從ip網路的維度來考慮,採用的是分布式控制的方式:在控制面,每台路由器彼此學習路由資訊,建立各自的路由**表;在資料面,每台路由器收到乙個ip包後,根據自己的路由**表做ip**;

ip網路的這種工作方式帶來了運維成本高、業務上線慢等問題,並越來越難以滿足新業務的需求,傳統上通過新增新協議、新裝置等手段來緩解問題的方式,收益越來越少。窮則思變,許多人產生了革命的想法,現有的網路架構既然無法繼續演進發展,為何不推倒重來,重新定義網路呢?真可謂「時勢造英雄」,2023年史丹福大學nick mckeown教授為首的研究團隊提出了openflow的概念用於校園網路的試驗創新,後續基於openflow給網路帶來可程式設計的特性,sdn(software defined network)的概念應運而生。

sdn將原來封閉在「盒子」的控制平面抽取出來形成乙個網路部件,稱之為sdn控制器,這個控制器完全由軟體來實現,控制網路中的所有裝置,如同網路的大腦,而原來的「盒子」只需要聽從sdn控制器的命令進行**就可以了。在sdn的理念下,所有我們常見的路由器、交換機等裝置都變成了統一的**器,而所有的**器都直接接受sdn控制器的指揮,控制器和**裝置間的介面就是openflow協議。其簡單模型如圖所示:

因此,我們說它是一種網路設計理念,即利用it技術來軟化網路,給網路領域帶來變革,而非某種具體的技術,其核心為:轉控分離、集中控制、開放可程式設計。所以sdn的提出,並不說傳統方法滿足不了什麼業務需求,而只是通過sdn可以快速部署、縮短業務上線時間,能夠做得更快更好而已。

其本質是網路軟體化,提高網路的可程式設計能力,是一次網路架構的重構,而不是一種新特性、新功能。

1.1.2.分類

隨著sdn在產業界裝置製造商和運營商的實踐不斷展開,sdn的概念不斷模糊,任何允許軟體對網路可以進行程式設計或者配置的網路架構,並且具體實現的技術和介面協議是各種各樣的。sdn也逐漸形成不同的發展路線:

首先,採用openflow標準,轉控分離、集中控制,主張硬體標準化,控制上移到由軟體實現的控制器上,打破原有網路的封閉狀態,受到初創公司和學院科研單位的歡迎,可以看作為革命型或狹義sdn。

其次,裝置提供商感受到壓力,希望在市場繼續保持優勢,另一方面,運營商即想擁抱新理念,也想保護現有的投資,這樣希望針對現有網路進行平滑的過渡,所以採取大多不動裝置上的控制智慧型,控制器(只能說是一種偽控制器)與**裝置間的介面採用netconf/snmp協議,提出更為廣泛的sdn架構,可以看作演進型或廣義sdn。

最後,還有一種發展路線,它以現有ip網路為基礎設施,在其上建立疊加的邏輯網路,實現網路資源的虛擬化,本質上屬於軟體定義的虛擬網路。這一思路被稱為overlay方案。

總的說來,這3種發展路線都能實現集中控制、可程式設計和開放介面,但在靈活性、使用難度以及使用者業務場景等方面存在不同之處。其優缺點如下表所示:

架構定義的sdn架構

onf定義的sdn架構主要分為應用層、控制器層和基礎設施層,其中,應用層聚焦網路業務邏輯開發,負責資源編排;控制器層進行全域性網路的管理;基礎設施層為各種網路裝置,負責資料的**。如圖所示:

從控制器層的角度來說,與應用層的介面被為北向介面(nbi, northbound inte***ce),與基礎設施之間的介面被定義為南向介面(sbi, southbound inte***ce)。

通過對北向介面的封裝,應用層以軟體程式設計的形式呼叫各種網路資源和把控整個網路的資源狀態,並對資源進行統一排程。理想情況下,應用層封裝所有的「how」操作,向使用者隱藏了網路相關的技術資訊。上層應用在呼叫應用層的服務時,只需描述想要「what」就可以了。

但當前北向介面方面還缺少業界公認的標準。其主要原因是北向介面直接為業務應用服務,其設計需密切聯絡業務應用需求,具有多樣化的特徵,很難統一。

onf定義的sdn架構中南向介面協議是openflow,用於控制器和交換機之間的通訊,控制器可以通過openflow下發流表控制交換機,交換機也可以反饋資訊給控制器,同時,openflow也規定了交換機對報文的**方式。

總的來說,sdn架構不僅簡化了網路設計與操作,而且也極大簡化了網路裝置本身,因為這些裝置不再需要解析和處理數以千計的協議標準,只需接受來自控制器的指令。更為重要的是,網路管理員可以通過程式設計的方式來集中控制數以千計的裝置,而不用針對每台裝置進行手工配置,有效地縮短了業務上線的時間。

平台實現框架

理想是豐滿的,但現實往往呈現出很骨感,學術界提出的正統sdn,在產業界和運營商的不斷實踐下,南向介面不僅僅侷限在openflow,也包含了netconf、snmp等協議。sdn不同的發展路線決定了sdn開發技術架構如圖所示:

sdn體系架構分為4層,分別為應用層、業務編排層、控制層和**層。其中,應用層專注於描述使用者業務需求,而業務編排層專注於業務需求的「how」操作封裝。需要說明的是,在運營商網路的sdn改造部署過程,基本上採用平滑演進的策略進行,用到的協議就不再單純使用openflow了。

2.如何學sdn

了解了sdn的基本概念、架構以及應用場景後,如何去學習sdn呢,我們先來分析下碼農與sdn的結合點,從上面的分析可知,sdn的核心在於「轉控分離、集中控制和開放可程式設計」,提到「集中控制和開放可程式設計」,碼農的腦海中可能迅速呈現出類似下圖所示的內容:

但是當提到「轉控分離」,可能是一臉的迷茫,我連網絡卡是如何工作都不是很清楚,何況交換機、路由器呢? 下面針對碼農的「強於程式設計,弱在網路」的特點,大致上給出了初步的學習路線,並列出了學習中容易產生困惑的問題。

2.1.學習路線

學習路線主要分基礎網路知識、技術準備、sdn基礎和sdn實戰等4個階段。如下圖所示:

1.基礎網路知識:又分網路裝置、網路協議和網路拓撲等3個方面。

首先,網路裝置這部分內容要清楚每種裝置的問題空間、基本原理以及優缺點;其次,網路協議的研究可以根據網路的發展史,要清楚ip網路的基本原理、客戶請求到伺服器路徑選擇等;最後,了解公司所在網路的基本資訊,資料中心網路的物理部署情況等。

2.技術準備:分為工具、框架和技術等3個方面。

這裡主要列出sdn學習需要具備的基礎技術能力,不同人員可能具有不同的技術背景,已全部掌握的人員可直接跳到sdn基礎的學習,沒有掌握的人員再補充了解相關技術即可。

基礎:分為openflow、控制器和工具等3個方面。首先,了解openflow標準、控制器和交換機之間的工作流程等;其次,當前已經有很多的開源控制器,如opendaylight、onos等,需要了解其基本概念、基礎架構等資訊,如md-sal、yang等;最後,sdn的學習,還需要了解像mininet之類的工具,以進行相關的實驗。

實戰:分為例項學習、特性開發和雲結合等3個方面。首先,通過控制器的sample來了解其工作原理和特性,了解整個開發、測試、部署過程;其次,挑選可行的特性進行實際操練,掌握控制器開發的全流程;最後,與openstack之類的雲平台進行融合。

2.2.易混淆的幾個問題

後續碼農學習odl的系列文章直接從sdn實戰開始,所以在sdn基礎部分的學習過程中可能會遇到一些問題,這裡將我們遇到的易混淆的問題羅列出來,與大家共享:

1. northbound \southbound or consumer \producer

南向和北向是傳統網路中的術語,可以從網路工程師的角度來理解,而如果從軟體工程師的角度來說,稱為生產者、消費者。

2. restconf、netconf是南向協議還是北向協議?

首先就restconf和netconf本身作為協議來講,是不區分北向協議還是南向協議的;其次,在實際的應用過程中,通常情況下restconf用在北向,netconf用在南向,但同時也注意到有些廠家控制器提供的北向介面使用的是netconf。

or external system

基於odl的二次開發時,如果提供api的介面能夠滿足當前需求,那麼只需基於rest api開發external system(外接式應用),如果提供的api介面不能滿足當前需求,則需要進行internal system(內建式)的開發,可以理解為外掛程式。

4.主動模式 or 被動模式

sdn控制有兩種工作模式:主動和被動。主動模式下,控制器將flow table資訊一次性下發到交換機;被動模式下,在資料平面收到新的資料報時,控制器才將相關flow table資訊下發到交換機。

通常情況下,往往預先下發部分流表資訊。

作文入門篇

第二課人物描寫 外貌描寫 教學目的 讓孩子掌握外貌描寫的基本方法,知道有物可寫 教學重點 對人物外貌內容按順序細分 課時 45分鐘左右 各位媽媽可根據實際情況調整,以後的都不再注時間 教學內容及步驟 一 外貌的細分 教學方法 媽媽可以自己或孩子 照著鏡子 作為描寫物件,同時選擇幾張不同人物的相片作為...

培訓題庫 入門篇

一,基礎指令入門 1.指示燈 某機器裝置的狀態指示燈為紅黃綠三節。當裝置閒置時,黃燈以較慢的速度閃爍,紅燈與綠燈滅 當裝置處於正常執行時,綠燈常亮,紅燈與黃燈滅 當裝置發生故障時,紅燈快速閃爍,同時發出蜂鳴聲。裝置的執行狀態以三個輸入開關量來表徵,分別為 啟動,停止,報警,所有開關均為觸發按鈕,當報...

柏翠麵包機攻略之入門篇

精神無比強大的老酸,有一句話 料理無難事 任何事,入門容易,精湛難。anyway,對我們而言,能入門,就ok了。敗了麵包機,柏翠的pe8010,就簡單,最便宜的一款。入手半個月,只用來做麵包。以後,我會寫乙個柏翠和aca的比較。其實,麵包機,原理一樣,大同小異。以下配方和程式,針對柏翠麵包機。基本配...