日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

NETCONF

發布時間:2024/1/4 综合教程 39 生活家
生活随笔 收集整理的這篇文章主要介紹了 NETCONF 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NETCONF協議(Network Configration Protocol)

NETCONF是一個基于XML的交換機配置接口,用于替代CLI、SNMP等配置交換機。
本質上來說,NETCONF就是利用XML-RPC的通訊機制實現配置客戶端和配置服務端之間的通信,實現對網絡設備的配置和管理。

NETCONF通過RPC與交換機通信,協議包含四層

i.安全傳輸層,用于跟交換機安全通信,NETCONF并未規定具體使用哪種傳輸層協議,所以可以使用SSH、TLS、HTTP等各種協議,官方默認使用SSH進行加密及數據傳輸

ii.消息層,提供一種傳輸無關的消息封裝格式,用于RPC通信,消息層流程如下

NETCONF中定義了三種消息類型,分別是hello,rpc和rpc-reply, notification。

Ø<hello>

<hello>僅用于回話剛剛建立時netconf-server和netconf-client之間進行能力交換。

server和client需要在回話建立后互相發送<hello>消息,并在<hello>消息中攜帶自身支持的能力,以及支持的netconf協議的版本號,server和client根據自身和對方的能力信息協商使用的netconf版本。

一般來說,C/S雙方互發<hello>且協商版本成功后,認為netconf會話建立成功。操作層,定義了一系列的RPC調用方法,并可以通過Capabilities來擴展

幾種常用能力

(1) XPath Capability

  該能力表示client可以在filter中使用XPath表達式作為過濾條件

  Capability Identifier:

  urn:ietf:params:netconf:capability:xpath:1.0

(2) Writable-Running Capability

  該能力表示server支持直接對<running/>庫進行修改操作。

  Capability Identifier:

  urn:ietf:params:netconf:capability:writable-running:1.0

(3) Candidate Configuration Capability

  該能力表示server具有一個candidate數據庫,并且可以將candidate數據庫中的配置提交生效并更新running數據庫

  Capability Identifier:

  urn:ietf:params:netconf:capability:candidate:1.0

(4) Rollback-on-Error Capability

  該能力表示server在執行client發送的配置數據出錯后可以進行回滾

  Capability Identifier:

  urn:ietf:params:netconf:capability:rollback-on-error:1.0

(5) Validate Capability

  該能力表示server可以校驗client發送的配置數據是否正確

  Capability Identifier:

  urn:ietf:params:netconf:capability:validate:1.1

(6) Distinct startup Capability

  該能力表示server有一個startup數據庫,用于保存啟動配置

  Capability Identifier:

  urn:ietf:params:netconf:capability:startup:1.0

Ørpc和rpc-reply,

<rpc>是由netconf-client發起的發送到netconf-server的消息。用于client請求server執行某項具體的操作。

<rpc>包含一個強制屬性”message-id”,這個id是一個單調遞增的正整數,同一會話內不能重復。該id用于<rpc>和<rpc-reply>的配對。

<rpc-reply>是有netconf-server發送給netconf-client的rpc響應。不能主動發起,僅能在收到<rpc>之后回復,切必須攜帶與收到的rpc相同的message-id。

在<rpc-reply>定義了兩種默認的元素分別是<ok>和<rpc-error>。<ok>表示未定義響應內容的rpc執行成功,而<rpc-error>表示rpc執行失敗。

Ønotification

持Notification上報的netconf-server需在能力交換時上報能力:

  “urn:ietf:params:netconf:capability:notification:1.0”

1. Netconf的通知采用的是訂閱發布機制,server僅會向發送過訂閱請求的client發送通知。

   2. Netconf的通知是以Stream進行分類的,不同類的Stream以不同的stream-name進行區分。netconf-server默認需要支持的stream-name是”NETCONF”。

3. client不能重復下發訂閱,即同一Stream的訂閱不能重復下發,也不能同時訂閱多個Stream,訂閱可以設置定時取消,如果沒有設置終止時間,取消訂閱需要使用close-session或者kill-session。定時取消的訂閱netconf的會話還是激活的,而使用close-session或者kill-session來取消的話,netconf會話會關閉。

iii.操作層,NETCONF提供了九種基本操作:

Øget-config用于查詢配置數據

Øedit-config 用于對指定配置數據庫的內容進行修改,支持以下幾種操作:

  merge:合并操作,此操作為默認操作。

  replace:替換操作,如果對象已經存在則替換,不存在則創建。

  create:創建操作,如果對象已經存在,則報錯誤“data-exists”。

  delete:刪除操作,如果對象存在則刪除,不存在則報錯 “data-missing”。

  remove:刪除操作,如果對象存在則刪除,不存在則忽略。

Øcopy-config 將一個庫的數據復制到另一個庫

Ødelete-config刪除一個數據庫。但是<running/>庫不能被刪除。

Ølock獲取指定數據庫的鎖,當某個client獲得了指定數據庫的鎖之后,在其沒有釋放該鎖之前,其余client均不能獲得該數據庫的鎖,也不能對其進行修改操作。同一client也不能在沒有釋放鎖之前,重復申請鎖。獲取鎖的主要目的就是避免并發導致數據沖突。

Øunlock釋放指定數據庫的鎖。client只能釋放自己持有的鎖,不能釋放其它client的鎖。

Øget用于查詢狀態數據

Øclose-session優雅關閉netconf會話,netconf-server將釋放該client持有的鎖和為其分配的資源,并優雅的關閉與該client鏈接。

Økill-session強制關閉netconf會話。

get-config請求報文解析流程B

iv.內容層,定義RPC調用的數據內容,即配置數據庫

NETCONF實現流程:

RPC模型

NETCONF協議使用基于RPC的通信模型。NETCONF對等體使用<rpc>和<rpc-reply>元素來提供NETCONF請求和響應的傳輸協議無關幀。

<rpc>元素用于封裝從客戶端發送到服務器的NETCONF請求。

<rpc>元素有一個強制屬性“message-id”,它是由RPC的發送者選擇的一個字符串,它通常編碼一個單調遞增的整數。RPC的接收者不解碼或解釋這個字符串,只是簡單地保存它在任何生成的<rpc-reply>消息中用作“message-id”屬性。

<rpc-reply>響應<rpc>操作發送<rpc-reply>消息。

<rpc-reply>元素有一個強制屬性“message-id”,它等于這是一個響應的<rpc>的“message-id”屬性。

響應名稱和響應數據被編碼為<rpc-reply>元素的內容。 回復的名字是直接在<rpc-reply>元素中的一個元素,任何數據都在這個元素內編碼。

如果在處理<rpc>請求期間發生錯誤,<rpc-error>元素將在<rpc-reply>消息中發送。

如果服務器在處理<rpc>請求期間遇到多個錯誤,<rpc-reply>可能包含多個<rpc-error>元素。但是,如果請求包含多個錯誤,則服務器不需要檢測或報告多個<rpc-error>元素。

服務器不需要按照特定的順序檢查特定的錯誤條件。如果在處理期間出現任何錯誤情況,服務器務必返回一個<rpc-error>元素,并且如果在處理期間出現任何警告條件,應該返回一個<rpc-error>元素。

服務器絕對不能在客戶端沒有足夠訪問權限的<rpc-error>元素中返回應用級或數據模型特定的錯誤信息。

error-type:定義錯誤發生的概念層,下列類型之一。

Øtransport(layer: Secure Transport)

Ørpc(layer: Messages)

Øprotocol(layer: Operations)

Øapplication(layer: Content)

error-tag:包含識別錯誤條件的字符串。

error-severity:包含標識錯誤嚴重性的字符串,由設備確定。 下列之一:

Øerror

Øwarning

error-app-tag:包含標識數據模型特定或特定于實現的錯誤條件(如果存在)的字符串。

error-path:包含絕對XPath表達式,用于標識<rpc-error>元素中報告的錯誤關聯的節點的元素路徑。 如果沒有適當的有效載荷元素或數據存儲節點可以與特定的錯誤條件相關聯,則該元素將不存在。

error-message:包含一個適合人類閱讀的字符串,用于描述錯誤情況

error-info:包含協議或數據模型特定的錯誤內容。

總結

以上是生活随笔為你收集整理的NETCONF的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。