1. 程式人生 > >SDN簡介之由來,架構和Openflow協議

SDN簡介之由來,架構和Openflow協議

本文將從SDN由來,架構和Openflow協議三方面進行闡述,閱讀完之後,應該對SDN有基本認識。

一、SDN由來

SDN(software defined Networking),即軟體定義網路。是當前SDX中的一種,其中X可代表安全,儲存,資料中心等等。採用軟體定義特別受網際網路公司的歡迎,是因為這種模式更能發揮他們在程式設計方面的優勢,就如SDN最初並不是由網路裝置廠商(思科,IBM等)提出來的,而是googel,facebook,yahoo等網際網路公司推動的,這些大型的網際網路巨頭因為資料量大,而且特定時間會出現巨大的併發流量(就如中國的雙11),網際網路公司的網路裝置一般是購買網路廠商的,這些裝置在出廠時就基本定型了,並沒有將程式設計魔力給與網際網路公司,後來網際網路公司發現很多時候,他們所購買的裝置並沒有發揮出最大作用,使用負載均衡可能並沒有達到均衡的效果,而是有些裝置跑的累趴,有些裝置卻接近開空車;有時候想做一點網路的變更也相當麻煩,自己一身程式設計本事,無奈被網路裝置束縛。終於有一天他們受夠了,在2011年初他們聯合起來成立了ONF(opennetworking foundation,開發網路基金會),並正式提出了軟體定義網路的概念。後來網路裝置廠商大佬們也感覺到了壓力,覺得這個新東西威力不少,於是思科,博通和IBM等幾位大佬成立了開源平臺專案OpenDayLight,旨在促進SDN技術交流和產業化開源機構,其實說白了還不是想保住自己的利益。所以說,這場網路新技術,是由網際網路公司發起的。

二、SDN架構

學過計算機網路的人都知道,OSI七層架構,這是現代網際網路通訊的基礎。而SDN提出的是三層架構,及應用層(業務層),控制層,轉發層。如圖1所示。

圖1  SDN基本架構

在這種架構上有兩個突出的特點,一個是控制平面和資料平面分離,一個是可程式設計性。數控分離可以更大程度的使轉發層裝置發揮資料轉發能力(和瘦AP一個道理);而可程式設計可以使網路裝置成為變形金剛,一個裝置可以是交換機,可以是路由器,也可以變成防火牆或者閘道器,裝置功能由程式定義(這一點應該是網際網路公司最喜歡的)。

上面提到的是SDN基本的三層架構,ONF提出的在此基礎上提出了更加詳細的架構,如圖2所示

                    圖2  ONF 定義的SDN架構

從該架構中可以明顯的看出三層之間的關係,以SDN控制器為中心,向北提供北向API供使用者呼叫,使用者可以在應用層使用python,java,C等高階語言定義裝置功能;向南提供南向介面, openflow協議就執行在資料平面和控制平面之間,該協議的提出與應用是SDN思想發展的主要推動力之一,目前是ONF主流的南向協議,在下面一節會說明openflow是如何工作。在這裡順便提一下東西介面,東西介面主要是為了控制器的叢集。至此,應該形成以控制器為中心,南北東西的模型圖。這裡不經讓我想起了華為部署的oceanconnet開發平臺,也是這種南北架構。

 三、Openflow協議

Openflow協議於2006年誕生於斯坦福大學的一個資助專案,2008年由Nick McKeown教授發表的論文《OpenFlow:Enableing Innovationin Campus Networks》正式提出。我們已經知道,SDN核心思想為資料與控制分離,硬體與軟體解耦。openflow協議通過引入“流”的概念,控制器根據某次通訊中“流”的第一個資料分組的特徵,使用openflow協議提供的介面對資料平面裝置部署策略,也就是在交換機上部署流表,這些通訊的後續流量則按照相應流表在硬體上進行匹配,轉發,從而實現網路裝置在資料轉發平面的靈活變動,網路裝置的功能不再是一成不變。

上面已經講到,openflow控制器通過部署流表來指導資料平面流量的,在每一個交換機中,都用一張流表,流表中儲存了許多表項,每個表項都表徵一個流和對應的處理方法(動作表)資料進入交換機後先與流表中的表項進行匹配,匹配成功了,則執行相應動作,匹配不成功,則上交給控制器。

在openflow協議 1.0版本中,流表項主要由三部分組成,如圖3所示。

圖3 openflow協議 1.0版 流表項結構

其中分組頭域為資料分組匹配流表項時參考的依據,類似傳統交換機做二層轉發時匹配資料分組的MAC地址,或者路由器三層轉發時的IP地址。分組頭域裡面包含OSI 1層至4層的12個網路控制資訊,如源MAC,目的MAC,VLAN標籤,VLAN優先順序,源IP,TCP埠號等等,正是因為頭域裡面提供了豐富的標註,才使得控制器可以對流進行更加細粒度的控制。

計數器可以統計一些流的查詢次數,生存時間等。

動作表為相應流對應的動作,如轉發到本地網路棧,轉給控制器,丟棄等。

瞭解了流表項的結構,就可以理解資料從進入交換機後執行的動作,如圖4所示。

圖4 流表匹配流程

其中資料分組就是通過分組頭域的12個元組進行匹配的,之後根據匹配結果執行相應的動作。

當然隨著openflow協議的發展,流表項的內容也越來越豐富,如openflow 1.4版本中的流表項就增加了優先順序,指令集,Cookie等內容,這也是為什麼基於openflow協議的交換機可以時資訊流進行越來越精細的控制的原因。

以上就SDN的由來,架構和主流協議openflow做了簡單介紹,至此應該知道SDN的主要特點是數控分離和可程式設計,其架構分為一個集中式的控制平面和分散式的資料平面,控制器位於上層應用和下層裝置中間,通過將網路裝置的各種功能進行抽象,建立具體的操作模型併為北向使用者提供應用API,使用者專注的業務將由控制器和轉發裝置完成。

《END》

參考文獻:《學術中國·院士系列:軟體定義網路核心原理與應用實踐》



相關推薦

SDN簡介由來架構Openflow協議

本文將從SDN由來,架構和Openflow協議三方面進行闡述,閱讀完之後,應該對SDN有基本認識。一、SDN由來SDN(software defined Networking),即軟體定義網路。是當前SDX中的一種,其中X可代表安全,儲存,資料中心等等。採用軟體定義特別受網際

第5天資料型別整形字串列表

整形(不可變,儲存一個值) 對於int型別的解釋 把一個數字或者字串轉換成整形,如果沒有引數就返回0,如果引數是一個數字,那麼就不變。對於浮點型,會自動省略小數點後面的值Convert a number or string to an integer, or return 0 if no arguments

高可用Redis(六):瑞士軍刀bitmapHyperLoglogGEO

1.bitmap點陣圖 1.1 bitmap點陣圖的概念 首先來看一個例子,字串big, 字母b的ASCII碼為98,轉換成二進位制為 01100010 字母i的ASCII碼為105,轉換成二進位制為 01101001 字母g的ASCII碼為103,轉換成二進位制為 01100111 如果在Redis中,設定

Hive:自定義函式UDFUDAFUDTF

hive允許使用者使用自定義函式解決hive 自帶函式無法處理的邏輯。hive自定義函式只在當前執行緒內臨時有效,可以使用shell指令碼呼叫執行hive命令。 UDF 輸入一行資料輸出一行資料。  解決問題描述  想要比較兩個逗號分隔的字串是否相同。  -使用方法  如果

C++PrimerPlus學習輸入輸出檔案

流和緩衝區 C++程式把輸入和輸出看作位元組流。輸入時,程式從輸入流中抽取位元組;輸出時,程式將位元組插入到輸出流中。 流充當了程式和流源或流目標之間的橋樑。C++程式只是檢查位元組流,而不需要知道位

Java中的集合ArrayListVectorStack

這三個集合型別,其底層都是陣列實現的。討論集合關注的問題: 底層資料結構 增刪改查方式 初始容量,擴容方式,擴容時機 執行緒安全與否 是否允許空,是否允許重複,是否有序 ArrayList ArrayList是

java面試題wait()notify()suspend()resume()之間的區別

wait()方法和notify()方法的區別: 這兩個方法都是屬於Object類中的,也是配套使用的,當呼叫這兩個方法阻塞時要釋放佔用的鎖,而鎖是任何物件都具有的,呼叫任意物件的wait()方法導致執行緒阻塞,並且該物件上的鎖被釋放; 而呼叫任意物件的notify()方法則導致從呼叫該物件的wait()方

liunx學習筆記打包壓縮yum源配置

############################################ #############unit 12######################## ############################################ 1.

1.3 《演算法》揹包佇列

文章目錄 概述 集合型抽象資料型別 泛型 可迭代的集合型別 揹包 先進先出佇列(queue) 下壓棧 棧例項——算術表示式求值 集合類資料型別的實現 定容

通俗淺談Spring cloud簡介與概述SpringClouddubbo的區別

Spring cloud Spring Cloud是一系列框架的有序集合。 它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等,都可以用Spring Boot的開發

MySQL-SQL遊標觸發器事務

遊標的出現使得對一個查詢結果集的每一行結果能夠更細粒度的操作,現在MySQL只支援在儲存過程中定義儲存過程。一個遊標的使用過程是這樣的: * 使用 <declare 遊標名 cursor for 查詢語句> 定義一個遊標 * 使用 <ope

Android開發模式MVCMVPMVVM的簡單介紹與區別

相信大家對MVC,MVP和MVVM都不陌生,作為三個最耳熟能詳的Android框架,它們的應用可以是非常廣泛的,但是對於一些新手來說,可能對於區分它們三個都有困難,更別說在實際的專案中應用了,有些時候想用MVP的,程式碼寫著寫著就變成了MVC,久而久之就對它們三個的選擇產生了

[轉載]IOS開發----NSDictionaryJSONXML互相轉換

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     [self test];     /

領域驅動設計:理念架構若干重要細節(draft)

緒論: 三點:軟體開發的方法論,討論系統分層的必要性,提出構建領域模型的重要性;討論OO技術是構建領域模型的主角; 爭論:面向物件還是面向資料?一個 企業級應用的系統架構是應該面向物件還是面向資料的爭論由來已久,並且從未停止過.這是一個非常尖銳且很難抉擇的問題.產生這一問題的

java專案常用工具類beancopybeanmap轉換工具類

專案環境: jdk1.8+spring4.3.12 一、問題描述及試用場景: 在專案規範中,要求類名以DO為尾的類作為資料庫層實體bean,類名以MO為尾的類作為系統傳輸層實體bean,類名以VO為尾的類作為服務端與前端互動的實體bean。由於以上要求,需

小師妹學JVM:JVM的架構執行過程

[toc] # 簡介 JVM也叫Java Virtual Machine,它是java程式執行的基礎,負責將java bytecode轉換成為適合在各個不同作業系統中執行的機器程式碼並執行。今天我們和小師妹一起走進java的核心JVM,領略java在設計上的哲學。 # JVM是一種標準 小師妹:F師兄

架構路--視頻業務介紹離線服務架構各種集群原理

目的 -- 自己的 超過 覆蓋 基本上 添加節點 電視 是我   先聊聊業務。我們媒資這邊目前的核心數據是樂視視頻的樂視meta和專門存儲電視劇,綜藝節目,體育賽事這種長視頻的作品庫。樂視視頻的數據都是多方審核的,需要很多運營。但是作品庫部分卻是弱運營的,運營都不超過10個

大資料storm(一) --- storm簡介核心元件工作流程安裝部署電話通訊案例分析叢集執行單詞統計案例分析調整併發度

一、storm簡介 --------------------------------------------------------- 1.開源,分散式,實時計算 2.實時可靠的處理無限資料流,可以使用任何語言開發 3.適用於實時分析,線上機器學習

架構路--視訊業務介紹離線服務架構各種叢集原理

java架構師、叢集、高可用、高可擴充套件、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Netty、Jvm大型分散式專案實戰 視訊課程內容包含: 高階Java架構師包含:Spring boot、Spring  cloud、

iOS6iOS7處理push不同解決反復push-(void) application: didReceiveRemoteNotification: fetchCompletionHandl

前臺 啟動圖 nstat and bsp pro ica 應該 正文 如果讀者已經知道push的基本知識,本文僅僅是解決一些適配,兼容問題。如果對push 不甚了解,參考以下的文章 1.【iOS push全方位解析】(一) push的概述 2.【iOS push