SDN是一種框架和思想,核心訴求是經過軟件控制網絡,實現業務的自動化部署,爲方便軟件來控制網絡,但願控制面和轉發面是分離的。編程
例如,傳統的交換機內部,由交換機負責具體的網絡流量往哪裏轉發,在SDN中,有一個控制器進行流量轉發的計算,而後將結果發送給交換機,交換機只進行簡單的轉發,從分佈式的控制轉發過程稱爲集中式的控制,使得控制和轉發平面相分離。
網絡開放可編程、數控分離(數據平面和控制平面相分離,爲開放可編程提供架構基礎)、邏輯上集中控制、網絡業務的自動化應用程序控制。segmentfault
能夠抽象爲數據平面或者轉發平面,能夠是交換機、虛擬交換機、路由器等。數據平面通用抽象模型將不一樣協議的匹配表整合起來,造成多字段匹配表,解決了網絡協議堆砌的問題安全
傳統網絡中, 現有的分層協議能夠看做一種數據平面的抽象模型,可是控制平面依然只是網絡功能和網絡協議的堆砌,缺乏合適的抽象模型
控制面跟數據轉發面之間的接口,傳統網絡的南向接口存在於各個設備商的私有代碼中,對外不可見,如存在於交換機內部服務器
能夠有多個,能夠是主從關係,也能夠是對等關係,一個控制器控制多臺設備,一個設備也能夠被多臺控制器控制,向上提供應用程序的編程接口,向下控制硬件設備。網絡
傳統網絡裏,指交換機控制面跟網管軟件之間的接口,在SDN中,指控制器跟應用程序之間的接口架構
爲用戶提供服務,包括負載均衡、安全、網絡運行狀況監測等,並以應用軟件的形式表現出來,代替傳統的網管軟件來對網絡進行控制和管理,能夠跟控制器位於同一臺服務器,也能夠運行在別的服務器上經過通訊協議來跟控制器通訊。併發
狹義的SDN南向協議具備對數據平面編程的能力,能夠指導數據平面設備的轉發操做等網絡行爲,關鍵在因而否具備確切的數據平面可編程能力(如openflow)。負載均衡
廣義的SDN南向協議主要分爲三種類型。第一種是僅具備對數據平面配置的南向協議(如OF-Config、OVSDB、NET-CONF);第二種是應用於廣義SDN,具備部分可編程能力的協議(如OpFlex);第三種是原本就存在,其應用範圍很廣,不限於應用在SDN控制平面和數據平面之間傳輸控制信令的協議(如PCEP、XMPP)。框架
Openflow交換機能夠分紅流表和安全通道兩部分。異步
在Openflow協議中,交換機是策略的執行者,而網絡相關的策略須要控制器下發
組表用於定義一組動做,且這組動做能夠被多個流表項共同使用,從而實現組播、負載均衡、容災備份和聚合等功能。
Meter表用於計量和限速,能夠針對流制定對應的限速規則,從而實現豐富的Qos功能,注意不是針對端口的。
控制器和交換機的通訊通道,支持如下三類報文:
POF協議和P4協議對此進行了改進
OF-Config協議是一種交換機配置協議,主要功能包括進行交換機鏈接的控制信息,端口和隊列資源的配置及端口等資源的狀態修改等。
OF-Config協議能夠看做是Openflow協議的一種補充。
OVSDB與OF-Config協議相似,都是交換機配置協議,二者區別在於:OVSDB僅用於OVS(Open vSwitch)的配置,而OF-Config能夠用於全部支持OpenFlow的軟件或者硬件的交換機
是一種產生於SDN以前的網絡配置協議,NETCONF是許多網絡協議的配置協議,能統一管理和配置SDN設備和傳統網絡設備,既保證了現有網絡設備的可用性,又支持SDN設備的設備
不是專門爲SDN設計,能夠統一管理傳統設備和SDN設備,能夠用於作OpenFlow的補充協議,或者用於SDN和傳統網絡混合組網的管理
PCEP用於爲流量工程提供路徑計算服務,把路徑計算的控制邏輯從轉發設備中抽離到遠端,實現了部分數據平面和控制平面的分離,將OpenFlow和PCEP協議結合使用實現OpenFlow網絡和傳統網絡的統一管理和調度
POF協議的設計思想借助了計算機的設計思想,控制器至關於操做系統,而轉發元件(交換機)至關於CPU執行相關的指令
POF協議的缺點
控制流程複雜,丟失了部分性能,須要定義一套通用指令集,實現複雜的指令調度
協議無關數據包處理編程語言,關注的是數據平面的可編程
思想:是一門數據平面編程語言,當出現一種新的協議,經過P4語言編寫程序,利用P4編譯器將程序編譯並寫入交換機中,使得交換機可以擁有處理該協議的功能。
上圖爲OpenFlow Switch通用硬件模型架構,其中網絡數據處理流程爲:數據包從端口進入$\rightarrow$通用模型中的數據包解析模塊對數據包頭進行分析$\rightarrow$選擇對應的流表進行處理$\rightarrow$在流表內部,與每一個流表項進行比較,若匹配成功,則按照對應的動做處理
採用多級流表,數據包在進入流水線以前,被分配一個空的操做指令集,進入第0個流表開始處理,通用硬件模型將數據包協議內容與每一個流表項進行匹配,將匹配成功的流表項中的操做指令寫入操做指令集中,或者傳輸給下一個流表
單個流表的處理過程
組表項操做類型(Group Type):
完成對數據包的丟棄、複製、轉發和修改等操做
如Table-miss表項中的Table-miss指令定義了在流表中匹配不成功時處理網絡數據包的行爲,匹配全部的匹配域,優先級爲零,使得Table-miss表項能被全部的數據包匹配
也稱爲開放交換機,網絡交換機硬件和操做系統解耦合的結果
本質上,解決網絡可編程的因素在於數據平面的可編程
參考資料
楊澤衛, 李呈. 重構網絡: SDN 架構與實現[J]. 2017.
做者: yearsj
轉載請註明出處: https://segmentfault.com/a/11...