簡介
RFC4741- 4744 分別描述了NETCONF在三種不同的傳輸模式SOAP,BEEP和SSH下是如何工作的。2008 年7 月推出RFC5277,主要定義了NETCONF的事件通知機制,用於故障管理。2009 年5 月推出的RFC5539 描述了NETCONF如何保證傳輸層傳輸信息的安全機制,加強了NETCONF的安全體系。2011年6月RFC6242更新了基於 SSH 的傳輸模式。NETCONF 協定是完全基於XML 之上的,所有的配置數據和協定訊息都用XML 表示,XML 可以表達複雜的、具有內在邏輯關係的、模型化的管理對象,而且由於它是W3C提出的國際標準,因而受到廣大軟體提供商的支持,易於進行數據交流和開發。
四個層次
如同ISO/OSI 一樣NETCONF協定也採用了分層結構,每個層分別對協定的某一個方面進行包裝,並向上層提供相關的服務。分層結構能讓每個層只關注協定的一個方面,實現起來更加簡單,同時合理的解耦各個層之間的依賴,可以將各層內部實現機制的變更對其它層的影響降低到最低。NETCONF 協定分成四層:內容層、操作層、RPC層、通信協定層。
內容層表示的是被管對象的集合。內容層的內容需要來自數據模型中,而原有的MIB等數據模型對於配置管理存在著如不允許創建和刪除行,對應的MIB 不支持複雜的表結構等缺陷,因此內容層的內容沒有定義在RFC4741 中,但在 RFC6242進行了更新,數據建模語言和數據模型使用2011年提出的 YANG 模型 。
操作層定義了一系列在RPC中套用的基本的原語操作集,這些操作將組成NETCONF的基本能力。為了簡單的目的,SNMP只定義了五種基本操作,涵蓋了取值、設值和告警三個方面。NETCONF全面地定義了九種基礎操作,功能主要包括三個方面取值操作、配置操作、鎖操作和會話操作,其中get、get- config用來對設備進行取值操作,而edit- config、copy- config、delete- config則是用於配置設備參數,lock和unlock 則是在對設備進行操作時為防止並發產生混亂的鎖行為,close- session和kill- session則是相對比較上層的操作,用於結束一個會話操作。
RPC層為RPC模組的編碼提供了一個簡單的、傳輸協定無關的機制。通過使用 和元素對NETCONF協定的客戶端(網路管理者或網路配置應用程式) 和伺服器端(網路設備) 的請求和回響數據(即操作層和內容層的內容) 進行封裝,正常情況下 元素封裝客戶端所需的數據或配置成功的提示信息,當客戶端請求報文存在錯誤或伺服器端處理不成功時,伺服器端在 元素中會封裝一個包含詳細錯誤信息的 元素來反饋給客戶端。
一旦NETCONF會話開始,控制器和設備就會交換一組“特性”。這組“特性”包括一些信息,如NETCONF協定版本支持列表、備選數據是否存在、運行中的數據存儲可修改的方式。除此之外,“特性”在NETCONF RFC中定義,開發人員可以通過遵循RFC中描述的規範格式添加額外的“特性”。
NETCONF協定的命令集由讀取、修改設備配置數據,以及讀取狀態數據的一系列命令組成。命令通過RPCs進行溝通,並以RPC回復來應答。一個RPC回復必須回響一個RPC才能返回。一個配置操作必須由一系列RPC組成,每個都有與其對應的應答RPC。
總結SNMPV1,V2 在安全方面的缺陷不難發現,原因是由於其採用面向無連線的UDP傳輸協定。與SNMP使用無連線的UDP作為傳輸協定不同,NETCONF是面向連線的,它要求通信連線埠之間永久性的連線,而且這種連線必須提供可靠的,順序的數據傳輸。在傳輸層,NETCONF制定了RFC4742、RFC4743 和RFC4744 分別給出了向傳輸協定SSH、SOAP和BEEP映射的實現方案。這些安全協定通過加密和認證等方法來保證網路連線的安全性。