OpenFlow,長期以來一直是軟件定義網絡的管理和控制協議,目前正面臨著來自其它協議的挑戰。
可替代OpenFlow的協議包括NETCONF、BGP、OVSDB、XMPP以及MPLS-TP。然而,雖然這些協議都可以用于管理網絡操作的各個方面,但它們并不提供和OpenFlow完全相同的功能和特性。
NETCONF協議
NETCONF協議,由RFC 6241定義,用以替代命令行界面(command line interface, CLI)、簡單網絡管理協議(Simple Network Management Protocol, SNMP)以及其它專有配置機制。管理軟件可以使用NETCONF協議將配置數據寫入設備,也可從設備中檢索數據。所有數據用可擴展標記語言(Extensible Markup Language, XML)編碼,通過SSL或傳輸層安全這樣安全、面向連接的協議,使用遠程過程調用(remote procedure calls, RPCs)方式傳輸。
NETCONF協議定義了多個數據存儲,或多套配置數據。正在運行的配置數據存儲包含當前設備正在使用的配置信息。一些設備還儲存啟動配置數據,其中包含設備第一次啟動時的配置數據,不過和運行中配置數據分離開來。
除了配置數據,設備還儲存狀態數據和信息,如包統計數據、運行中設備收集的其他數據。控制軟件可以讀取這些數據,但是不能寫入。
候選配置數據存儲是一個可選的設備性能。如果啟用,它包含一組配置數據,控制器能用來更新正在運行的數據存儲,以及修改設備操作。從備選配置數據中分離出正在運行的配置數據可以消除配置不一樣的問題(例如,一系列CLI命令正在更新配置,隨著一個個命令相繼執行,配置就會處于一個不一致的狀態)。
一旦NETCONF會話開始,控制器和設備就會交換一組“特性”。這組“特性”包括一些信息,如NETCONF協議版本支持列表、備選數據是否存在、運行中的數據存儲可修改的方式。除此之外,“特性”在NETCONF RFC中定義,開發人員可以通過遵循RFC中描述的規范格式添加額外的“特性”。
NETCONF協議的命令集由讀取、修改設備配置數據,以及讀取狀態數據的一系列命令組成。命令通過RPCs進行溝通,并以RPC回復來應答。一個RPC回復必須響應一個RPC才能返回。一個配置操作必須由一系列RPC組成,每個都有與其對應的應答RPC。
所選擇的傳輸協議必須保證RPC按發送順序傳遞給設備,而且應答必須按照發起RPC的順序被接收。除了從控制器向設備發送命令,設備也可以發出通知來告知控制器設備上的一些事件。
NETCONF協議命令:
get-config:請求返回所有或一部分配置數據。傳遞的參數指定哪些配置數據需要返回,哪些具體元素需要獲取。設備回復所請求的數據,如果設備不能滿足請求,返回RPC錯誤。
get:請求返回運行中配置數據和狀態數據。該命令可以請求所有數據或指定一組元素。
edit-config: 修改配置數據。包含在命令中的操作指令對目標數據中的特定配置數據元素進行操作。
merge:編輯命令中攜帶的數據被合并到現有數據。
replace:編輯命令中攜帶的數據替換現有的數據。
create:創建指定的數據存儲元素,命令中的數據插入。如果該元素已經存在,設備返回RPC錯誤。
delete:刪除指定的數據存儲元素。如果元素不存在,設備返回RPC錯誤。
remove:和delete指令類似,但是如果元素不存在,操作被忽略,并且不返回錯誤。
copy-config:將一個數據存儲復制到另一個。如果目標數據存儲不存在,則創建它。
commit:將備選數據存儲中的內容復制到運行中的數據存儲。當設備功能不允許copy-config命令來修改運行中的數據存儲時使用該命令。
delete-config:刪除指定的數據存儲。
lock and unlock:一臺設備可能支持多個NETCONF與多個控制器會話,還可能繼續支持其他配置機制,如CLI或SNMP. lock命令防止其他配置源干擾正在運行的一系列NETCONF操作。unlock命令釋放鎖,并允許其它源在設備上操作。實際操作中,locks命令應該只能在短時間執行。
close-session:控制器軟件通常在設備啟動時就會打開一個NETCONF連接,并且只要控制器還在管理設備,就會一直維持連接。當控制器不再管理設備時,close-session用來正常關閉連接。
NETCONF vs. OpenFlow
雖然NETCONF和OpenFlow都可以提供控制器軟件和設備之間的通信,但是兩個協議在很多方面是完全不同的。NETCONF是一個配置協議,而OpenFlow只是在流程表中在指定數據包如何通過路由傳入。OpenFlow的交換機使用OF-Config進行配置,而OF-Config使用NETCONF來與設備進行通信。
NETCONF協議通過一組可選性能適用于任何設備架構,開發人員可以創建額外“特性”,因此NETCONF設備可以包含專有功能。反觀,OpenFlow擁有特定設備體系結構。OpenFlow設備必須以一個標準的架構建立,沒有專有功能,以確保廠商能夠開發依附OpenFlow標準的白盒交換機。這些商品設備一投入使用將大大降低網絡成本。
OpenFlow交換機不支持傳統交換機和路由器用來確定網絡路徑的路由協議,所有有關數據包路徑的信息都來自路由器。NETCONF設備可以支持這樣的路由協議。在軟件定義網絡中,這些協議將繼續被使用,控制器軟件管理網絡操作的某些方面,同時數據包路徑仍舊在設備級別確定。
OpenFlow還是NETCONF?
因此,到底是選擇OpenFlow還是NETCONF呢?本質是:網絡有所不同。一些網絡管理員會選擇繼續使用已更新NETCONF接口的現有設備。其它管理員可能會因為價格優勢選擇白盒交換機。隨著軟件定義網絡技術的成熟,管理員們必須繼續關注市場發展,選擇最密切滿足其網絡需求的設計和產品。