NETCONF+Yang配置TSN


NETCONF用來替換SNMP,是一個網管協議。YANG是NETCONF的數據建模語言,可以使用Yang模式的文本配置網關,從而通過NETCONF協議管理網關。

NETCONF+Yang可用於TSN(實時性網絡,time-sensitive network)網絡,控制網絡實時性。

以下轉自:干貨鋪時間:詳解SDN南向協議之NETCONF

背景介紹

  NETCONF起源於IAB(Internet Architecture Board)組織的幾次吐槽大會。時間倒退回2001、2002年,網管和協議開發者聚在一起,原本只是打算喝喝茶、聊聊天,沒想到卻演變成一場“撕逼大戰”。網管向協議開發者吐槽當前的網管協議並沒有解決他們的問題,特別是在配置管理方面。

  吐槽大會的成果有2個。一個是梳理了當前使用的網管協議及其優缺點,例如SNMP、CLI等;另一個是理清了網管的痛點,也就是他們最想要的功能。

  在當時SNMP已被廣泛使用,它的優勢在於設備監測;但是不適合大規模應用,例如獲取路由信息(數據量大)會很慢。

  網管羅列的痛點包括:

易用性

區分配置數據和狀態數據

面向服務和網絡進行配置管理,而不是單一的網絡設備

…

  吐槽大會的成果詳細記錄在RFC 3535中,感興趣的讀者可以進一步閱讀。

  針對RFC 3535中羅列的網管需求,2003年成立了NETCONF工作組,NETCONF的設計遵循RFC 3535。2006年NETCONF核心RFC 4741發布,2011年更新版的RFC 6241發布(廢除RFC 4741)。

  作為新一代的網絡設備的配置管理協議,NETCONF使用YANG作為它的數據建模語言。用戶可以使用這套機制增加、修改、刪除網絡設備的配置,獲取網絡設備的配置和狀態信息。通過NETCONF協議,網絡設備可以提供規范的應用程序編程接口API(Application Programming Interface),應用程序可以直接使用這些API,向網絡設備發送和獲取配置。

  我們可以類比SNMP/SMI來理解NETCONF/YANG。對比如下:

  NETCONF協議與SNMP協議相比,NETCONF的優點如下表所示

  特性 SNMP NETCONF

  配置管理 SNMP在進行設備數據操作時,如果多個用戶對同一個配置量進行操作,協議沒有提供保護鎖定機制。 NETCONF提供保護鎖定機制,防止多用戶操作產生沖突。

  查詢 SNMP能夠對某個表的一條或多條記錄進行操作,查詢中需要多次交互才能夠完成。 NETCONF針對整個系統的配置數據可直接進行操作,且定義了過濾功能。

  擴展性 擴展性差 擴展性好:

  協議模型采取分層定義,各層之間相互獨立,當對協議中的某一層進行擴展時,能夠最大限度不影響到其上層協議。

  協議采用了XML編碼,使得協議在管理能力上和系統兼容性方面也具有一定的可擴展性。

  安全性 以目前最新的SNMPv3為例,SNMPv3在安全上存在的主要問題是,SNMPv3全部自己定義,未有擴展的余地。 NETCONF利用現有的安全協議提供安全保證,並不與具體的安全協議綁定。在使用中,NETCONF要比SNMP更靈活。

  NETCONF協議采用Client/Server結構。在SDN領域,SDN控制器作為NETCONF客戶端(NETCONF Manager),網絡設備作為NETCONF服務端(NETCONF Agent)。通過NETCONF,SDN控制器對網絡設備進行配置管理。

2協議特點

2.1區分配置數據和狀態數據

  為了便於網管識別出配置數據,明確區分配置數據和狀態數據是必要的。一些設備將配置數據和狀態數據不做區分,網管不得不“人肉”識別它們。NETCONF協議將數據區分為配置數據和狀態數據,並分別提供不同的操作進行數據的增刪改查。

  配置數據(configuration data)是對網絡設備進行配置的數據,例如創建VLAN的數據。配置數據一般是可讀寫的。

  狀態數據(state data)是反映設備狀態的數據,例如端口的up/down狀態,報文統計等。狀態數據一般是只讀的。

2.2存在多個配置數據庫

  網絡設備通常有一個配置數據庫,記錄設備當前的配置。並且這個配置數據庫一般提供持久化操作的指令(例如銳捷交換機的write指令),用於設備重啟后的配置恢復。NETCONF協議定義了running配置數據庫,保存設備當前的配置;同時擴展支持startup和candidate配置數據庫。

  在對設備進行配置時,你可能有過類似的經歷,“到底是先配置A還是先配置B”?這種時候你肯定想“要是有個練手的閑置設備就好了” 。有了candidate,就相當於多了一個練手的閑置設備。你可以先在candidate配置數據庫上反復操作,直到得到想要的結果。然后用candidate的配置覆蓋running配置數據庫。

  Startup配置數據庫用於設備重啟后的配置恢復。

2.3分層模型

  在系統或協議的設計中,關注點分離(separation of concern)原則無所不在。我們也經常聽到“模塊化”、“分層”、“解耦”等名詞,這些都是關注點分離原則的具體實踐。NETCONF協議使用了“分層”的方法實現關注點分離,分層給予了NETCONF強大的易用性、維護性和擴展性。NETCONF在邏輯上可以划分為4層。

  第一層:傳輸層

  傳輸層為NETCONF Manager和NETCONF Agent之間交互提供安全的通信路徑。當前,銳捷交換機設備使用SSH協議作為NETCONF協議的承載協議。

  第二層:消息層

  消息層提供了一種簡單的、不依賴於傳輸協議的RPC和通告封裝機制。client采用<rpc>元素封裝操作請求信息,並通過一個安全的、面向連接的會話將請求發送給服務器,而服務器將采用<rpc-reply>元素封裝RPC請求的響應信息(即操作層和內容層的內容),然后將此響應信息發送給請求者。另外,服務器可以采用notification向客戶端通告事件。

  第三層:操作層

  操作層定義了一系列在RPC中應用的基本操作(增刪改查),這些操作組成了NETCONF基本能力。

  第四層:內容層

  內容層描述了網絡管理所涉及的配置數據,使用YANG語言進行建模。

2.4YANG

  YANG是一種數據建模語言,是專門為NETCONF內容層建模而設計的。你可能在想什么是數據模型?數據模型准確定義了數據的結構、語法和語義。例如,我們用的手機中通訊錄的模板,可以看做是聯系人的數據模型。新增聯系人時,需要根據模板的定義填入相關信息。同理,YANG定義了網絡設備配置數據的模板。例如我們對網絡設備上的接口建模后,通過NETCONF下發到網絡設備的數據要符合YANG模型的定義。

  YANG具有以下特點:

  可讀性好,易學習

  層級樹形結構

  可擴展

  可復用

  可以直接映射到XML

2.5創建接口

  了解了NETCONF和YANG的基本概念后,我們來使用它們進行一次接口創建的操作。

  NETCONF Manager向NETCONF Agent發送一個RPC請求。RPC請求中使用edit-config操作配置running數據庫,edit-config缺省的operation是merge(如果接口存在則更新;如果不存在則創建)。配置數據包括接口名稱、接口描述和接口類型。

  如果操作成功,NETCONF Agent將返回“OK”應答。

  交互過程如下圖所示。

3小結

  相較其他配置管理協議,NETCONF因其良好的功能性和擴展性,隨着SDN的逐步落地被廣泛使用。目前主流設備廠商均提供NETCONF支持,OF-CONFIG也是直接使用NETCONF實現。NETCONF現在是南向協議中當之無愧的“紅人”。希望本文對你了解這位“紅人”有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM