10-NETCONF配置
本章節下載: 10-NETCONF配置 (659.02 KB)
NETCONF(Network Configuration Protocol,網絡配置協議)是一種基於XML的網絡管理協議,它提供了一種可編程的、對網絡設備進行配置和管理的方法。用戶可以通過該協議設置屬性、獲取屬性值、獲取統計信息等。這使得它在第三方軟件的開發上非常便利,很容易開發出在混合不同廠商、不同設備的環境下的特殊定製的網管軟件。
NETCONF協議采用分層結構,分為內容層(Content)、操作層(Operations)、RPC(Remote Procedure Call,遠程調用)層和通信協議層(Transport Protocol)等。
表1-1 XML分層與NETCONF分層模型對應關係
NETCONF分層 |
XML分層 |
說明 |
內容層 |
配置數據、狀態數據、統計信息等 |
被管理對象的集合,可以是配置數據、狀態數據、統計信息等 NETCONF協議具體可讀寫的數據請參見《NETCONF XML API 手冊》 |
操作層 |
<get>,<get-config>,<edit-config>… |
在RPC中應用的基本的原語操作集,這些操作組成NETCONF的基本能力 NETCONF全麵地定義了對被管理設備的各種基礎操作,設備支持的操作請參見“2 Comware V7支持的NETCONF操作” |
RPC層 |
<rpc>,<rpc-reply> |
為RPC模塊的編碼提供了簡單的、傳輸協議無關的機製。通過使用<rpc>和<rpc-reply>元素分別對NETCONF請求和響應數據(即操作層和內容層的內容)進行封裝 |
通信協議層 |
非FIPS模式下:Console/Telnet/SSH/HTTP/HTTPS/TLS FIPS模式下: Console/SSH/HTTPS/TLS |
為NETCONF提供麵向連接的、可靠的、順序的數據鏈路。 非FIPS模式下: · NETCONF支持Telnet、SSH和Console等CLI登錄方式/協議,即NETCONF over SSH、NETCONF over Telnet和NETCONF over Console · NETCONF支持HTTP和HTTPS協議,即NETCONF over HTTP和NETCONF over HTTPS · NETCONF支持封裝成SOAP(Simple Object Access Protocol,簡單對象訪問協議)報文後通過HTTP或HTTPS協議傳輸,即NETCONF over SOAP over HTTP和NETCONF over SOAP over HTTPS FIPS模式下: · NETCONF支持SSH和Console等CLI方式/協議,即NETCONF over SSH和NETCONF over Console · NETCONF支持HTTPS登錄協議,即NETCONF over HTTPS · NETCONF支持封裝成SOAP報文後通過HTTPS協議傳輸,即NETCONF over SOAP over HTTPS |
NETCONF命令必須符合XML語言的基本格式,格式遵循RFC 4741。
NETCONF操作以及可操作的數據項,請參見《NETCONF XML API手冊》。NETCONF報文的數據合法性都將經過校驗才會下發,如果校驗失敗則會向客戶端報錯。其中,數據合法性校驗通過XML Schema的方式完成。
如下為一個NETCONF報文示例,用於獲取設備上所有接口的所有參數:
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-bulk>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
<Interface/>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get-bulk>
</rpc>
NETCONF over SOAP之後,NETCONF報文會放在SOAP報文的BODY元素裏,這些報文除了需要遵循純NETCONF報文的規則外,還需要遵循以下規則:
· SOAP消息必須用XML來編碼。
· SOAP消息必須使用SOAP Envelope命名空間。
· SOAP消息必須使用SOAP Encoding命名空間。
· SOAP消息不能包含DTD(Document Type Definition,文件類型定義)引用。
· SOAP消息不能包含XML處理指令。
如下為一個NETCONF over SOAP報文示例,用於獲取設備上所有接口的所有參數:
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Header>
<auth:Authentication env:mustUnderstand="1" xmlns:auth="//www.yolosolive.com/netconf/base:1.0">
<auth:AuthInfo>800207F0120020C</auth:AuthInfo>
</auth:Authentication>
</env:Header>
<env:Body>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-bulk>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
<Interface/>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get-bulk>
</rpc>
</env:Body>
</env:Envelope>
用戶可通過以下方式來使用NETCONF配置和管理設備:
· 通過Telnet、SSH和Console登錄到設備並進入XML視圖,將合法的NETCONF報文直接拷貝、粘貼到命令行提示符處執行,即可實現對設備的配置和管理。
· 通過HTTP或HTTPS登錄到設備的Web頁麵,係統會自動將Web頁麵的配置轉換成NETCONF指令下發給設備來實現對設備的配置和管理。該方式通過簡潔易用的圖像化Web頁麵上完成配置,配置結果也會以簡潔清晰的方式呈現給用戶,整個NETCONF的交互過程對用戶透明。
· 使用配置工具給設備下發NETCONF指令來實現對設備的配置和管理。該方式需要將NETCONF指令用SOAP封裝成通用的格式,以便設備能夠正常轉換。因此,使用該方式前必須開啟NETCONF over SOAP功能。
與NETCONF、SOAP協議相關的協議規範有:
· RFC 3339:Date and Time on the Internet: Timestamps
· RFC 4741:NETCONF Configuration Protocol
· RFC 4742:Using the NETCONF Configuration Protocol over Secure SHell (SSH)
· RFC 4743:Using NETCONF over the Simple Object Access Protocol (SOAP)
· RFC 5277:NETCONF Event Notifications
· RFC 5381:Experience of Implementing NETCONF over SOAP
· RFC 5539:NETCONF over Transport Layer Security (TLS)
· RFC 6241:Network Configuration Protocol
設備運行於FIPS模式時,本特性部分配置相對於非FIPS模式有所變化,具體差異請見本文相關描述。有關FIPS模式的詳細介紹請參見“安全配置指導”中的“FIPS”。
NETCONF配置任務如下:
(2) 建立NETCONF會話
a. (可選)配置NETCONF會話公共屬性
d. 建立NETCONF over Telnet或NETCONF over Console會話
e. 交換能力集
(3) (可選)獲取設備配置信息
(4) (可選)過濾表和列的信息
¡ 基於表的過濾
¡ 基於列的過濾
(5) (可選)配置加鎖和解鎖
a. 配置加鎖
b. 配置解鎖
(6) (可選)下發配置
(7) (可選)配置文件管理
¡ 保存配置
¡ 加載配置文件
¡ 回滾配置
(8) (可選)下發命令行
(9) (可選)訂閱事件
¡ 訂閱監控事件
¡ 訂閱模塊上報事件
¡ 取消訂閱事件
(10) (可選)關閉NETCONF會話
(11) (可選)退出XML視圖
(12) (可選)開啟NETCONF的告警功能
NETCONF支持共用命名空間和專用命名空間:
· 共用命名空間:各模塊共用一個命名空間。使用共用命名空間的報文中,命名空間位於<top>元素中,模塊位於<top>元素下,報文示例如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-bulk>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get-bulk>
</rpc>
· 專用命名空間:每個模塊單獨使用一個命名空間。使用專用命名空間的報文中無<top>元素,命名空間位於模塊名後,報文示例如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-bulk>
<filter type="subtree">
<Ifmgr xmlns="//www.yolosolive.com/netconf/data:1.0-Ifmgr">
<Interfaces>
</Interfaces>
</Ifmgr>
</filter>
</get-bulk>
</rpc>
兩種類型的命名空間互不兼容。客戶端與設備必須使用相同的命名空間才能建立會話。缺省情況下,NETCONF使用共用命名空間。如果客戶端不支持共用命名空間,則需要配置本命令,讓設備和客戶端建立會話時使用專用命名空間。
配置本功能後,用戶需要重新建立NETCONF會話,以使客戶端和設備使用相同的命名空間。
(1) 進入係統視圖。
system-view
(2) 配置NETCONF使用專用命名空間。
netconf capability specific-namespace
缺省情況下,NETCONF使用共用命名空間。
建立NETCONF會話後,客戶端先與設備進行能力集交互,完成能力集的交互後,設備才會處理客戶端發送的其他請求。
多個用戶同時配置設備時,可能會導致用戶配置與配置結果不一致,因此,請避免多個用戶同時配置設備。
設備同一時間內允許建立的最大會話數可以通過aaa session-limit命令配置,關於該命令的詳細描述,請參見“安全配置指導”中的“AAA”。用戶數超過上限後,新登錄的用戶將登錄失敗。
NETCONF支持共用命名空間和專用命名空間,兩種類型的命名空間互不兼容。客戶端與設備必須使用相同的命名空間才能建立會話。如果客戶端不支持共用命名空間,則需要配置本功能,使設備和客戶端建立會話時使用專用命名空間。
· 共用命名空間:各模塊共用一個命名空間。缺省情況下,設備使用共用命名空間。使用共用命名空間的報文中,命名空間位於<top>元素中,模塊位於<top>元素下,報文示例如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-bulk>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get-bulk>
</rpc>
· 專用命名空間:每個模塊單獨使用一個命名空間。使用專用命名空間的報文中無<top>元素,命名空間位於模塊名後,報文示例如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-bulk>
<filter type="subtree">
<Ifmgr xmlns="//www.yolosolive.com/netconf/data:1.0-Ifmgr">
<Interfaces>
</Interfaces>
</Ifmgr>
</filter>
</get-bulk>
</rpc>
(1) 進入係統視圖。
system-view
(2) 配置NETCONF會話超時時間。
netconf { agent | soap } idle-timeout minute
屬性 |
說明 |
agent |
agent表示如下NETCONF會話類型: · NETCONF over SSH · NETCONF over Telnet · NETCONF over Console 缺省超時時間為0(不超時) |
soap |
soap表示如下NETCONF會話類型: · NETCONF over SOAP over HTTP · NETCONF over SOAP over HTTPS 缺省超時時間為10分鍾 |
(3) 開啟NETCONF日誌功能。
netconf log source { all | { agent | soap | web } * } { protocol-operation { all | { action | config | get | set | session | syntax | others } * } | row-operation | verbose }
缺省情況下,NETCONF日誌功能處於關閉狀態。
(4) 配置設備使用專用命名空間。
netconf capability specific-namespace
缺省情況下,設備使用共用命名空間。
配置NETCONF使用專用命名空間後,需要重新建立NETCONF會話,使客戶端和設備使用相同的命名空間。
NETCONF支持封裝成SOAP報文後通過HTTP或HTTPS協議傳輸,即NETCONF over SOAP over HTTP和NETCONF over SOAP over HTTPS,使用該功能後,用戶可以通過配置工具給設備下發NETCONF指令來實現對設備的訪問。
用戶可以配置在SOAP請求的<UserName>中攜帶認證域信息,該信息僅對當前請求生效。通過netconf soap domain命令配置強製認證域後,SOAP請求中攜帶的認證域不生效。
(1) 進入係統視圖。
system-view
(2) (可選)配置基於HTTPS的NETCONF over SOAP功能與SSL服務器端策略關聯。
netconf soap https ssl-server-policy policy-name
缺省情況下,基於HTTPS的NETCONF over SOAP功能未與SSL服務器端策略關聯。
配置該功能後,設備將使用SSL服務器端策略指定的加密套件等SSL參數建立NETCONF連接,以加強基於HTTPS的NETCONF over SOAP功能的安全性。有關SSL服務器端策略的配置,請參見“安全配置指導”中的“SSL”。
如果修改了關聯的SSL服務器端策略,NETCONF客戶端和設備新建立的HTTPS連接將會引用新的策略,已建立的HTTPS連接不會受到影響,依然引用舊的策略。
(3) 開啟NETCONF over SOAP功能。
(非FIPS模式)
netconf soap { http | https } enable
(FIPS模式)
netconf soap https enable
缺省情況下,NETCONF over SOAP處於關閉狀態。
(4) (可選)配置基於HTTP的NETCONF over SOAP功能使用的端口號。
netconf soap http port port-number
缺省情況下,基於HTTP的NETCONF over SOAP功能使用的端口號為80。
(5) (可選)配置NETCONF over SOAP關聯ACL,隻有ACL允許通過的客戶端可以與設備建立NETCONF over SOAP會話。
(非FIPS模式)
netconf soap { http | https } [ ipv6 ] acl { acl-number | name acl-name }
(FIPS模式)
netconf soap https acl { acl-number | name acl-name }
缺省情況下,未配置NETCONF over SOAP關聯ACL。
僅當指定http參數時,支持關聯IPv6 ACL。
netconf soap domain domain-name
缺省情況下,未配置NETCONF用戶的強製認證域。
配置該功能後,所有用戶都會使用強製認證域進行認證。關於認證域的詳細介紹請參見“安全配置指導”中的“AAA”。
(7) 通過配置工具與設備建立NETCONF over SOAP會話。關於配置工具的使用方法,具體參見配置工具的配置指導。
建立NETCONF over SSH會話前,請確保配置工具能夠通過SSH登錄到設備。
(1) 進入係統視圖。
system-view
(2) 開啟NETCONF over SSH。
netconf ssh server enable
缺省情況下,NETCONF over SSH處於關閉狀態。
(3) 配置NETCONF over SSH的監聽端口。
netconf ssh server port port-number
缺省情況下,NETCONF over SSH的監聽端口為830。
(4) 配置NETCONF over SSH關聯的IPv4 ACL。
netconf ssh acl { ipv4-acl-number | name ipv4-acl-name }
缺省情況下,未配置NETCONF over SSH關聯的IPv4 ACL。
(5) 通過配置工具與設備建立NETCONF over SSH會話。關於配置工具的使用方法,具體參見配置工具的配置指導。
進入XML視圖後,用戶需要嚴格按照NETCONF報文格式將報文拷貝、粘貼到XML視圖中,請勿手工輸入NETCONF報文。
在一次NETCONF操作完成前,請勿進行其他任何操作(例如粘貼NETCONF報文或輸入回車),否則可能導致NETCONF配置失敗。
在XML視圖下進行NETCONF配置時,NETCONF報文最後需要添加“]]>]]>”結束符,否則設備無法識別。本手冊舉例中,為方便識別XML格式,均未添加該結束符,實際操作中請自行添加。
建立NETCONF over Telnet或NETCONF over Console會話前,請先通過Telnet或Console口登錄到設備。
請在用戶視圖下執行本命令,進入XML視圖。
xml
進入XML視圖,即表示成功建立NETCONF over Telnet或NETCONF over Console會話。
建立NETCONF會話後,客戶端和設備必須交換各自支持的能力集,雙方收到對方的能力集後才可以進行下一步操作。
建立NETCONF會話後,設備會發送如下報文自動告知客戶端支持的NETCONF能力集:
<?xml version="1.0" encoding="UTF-8"?><hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"><capabilities>...</capabilities><session-id>1</session-id></hello>]]>]]>
<capabilities>和</capabilities>之間的內容表示設備支持的能力集,以具體設備實際情況為準。
<session-id>和</session-id>之間的內容表示為本次會話分配的會話ID,用來唯一標識本次會話。
客戶端收到設備發送的能力集協商報文後,需要給設備發送如下格式的報文,告知設備客戶端支持哪些NETCONF能力集。
Hello協商報文格式如下:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
capability-set
</capability>
</capabilities>
</hello>
屬性 |
說明 |
capability-set |
客戶端支持的能力集,由用戶定義 一個<capability>和</capability>選項對中隻能填寫一個能力集,可以使用多個選項對,配置多個能力集 |
用戶執行<get>、<get-bulk>、<get-config>或<get-bulk-config>操作獲取設備數據時:
· 使用NETCONF讀取大量數據記錄時,建議使用get-bulk方式批量獲取指定條目的數據記錄,例如指定每次獲取1000條數據;如果使用get方式讀取,建議get操作的數據量控製在1000條以內,以提高讀取效率。
· 如果所獲取數據中包含NETCONF不能識別的字符,則NETCONF將該字符轉換為“?”輸出到客戶端。
· 如果操作中的模塊進程未啟動,則該操作可能會將空數據通過如下報文反饋給客戶端:
<?xml version="1.0"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data/>
</rpc-reply>
<get><netconf-state/></get>操作不支持數據過濾。
關於獲取設備配置信息操作的詳細規則,請參見《NETCONF XML API手冊》。
設備支持通過<get>操作獲取設備運行狀態和運行配置。
設備支持通過<get-bulk>操作從指定索引的下一條開始獲取N條運行狀態和運行配置(索引行數據不返回)。
<get>操作會返回所有符合條件的數據,在某些情況下,會導致獲取數據效率不高。<get-bulk>允許用戶從固定數據項開始,向後獲取指定條目的數據記錄。
<get>和<get-bulk>報文的通用格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<getoperation>
<filter>
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
指定模塊,子模塊,表名,列名
</top>
</filter>
</getoperation>
</rpc>
屬性 |
說明 |
getoperation |
可以為get或者get-bulk |
filter |
用於過濾信息,<filter>中可包括模塊名、子模塊名、表名和列名: · 如果不指定模塊(子模塊),則表示全部模塊(子模塊)。指定模塊(子模塊)時,則返回數據隻包含指定模塊(子模塊)。 · 如果模塊下不指定表,則表示全部表。指定表時,則返回數據隻包含指定表 · 如果隻指定索引列,則返回的數據包括全部的列。如果同時指定索引列之外的其他列,則返回的數據僅包含索引列和指定的列 |
· <get-bulk>操作報文中可以攜帶count和index屬性。
屬性 |
說明 |
index |
指定索引。如未指定索引,則以第一條操作為索引 |
count |
獲取指定數量的運行狀態和運行配置信息。count屬性遵循如下約定: · count屬性的位置在可以從top下的節點開始,到表節點為止,即:模塊節點,表節點這幾個位置都能放置count屬性,其他位置的count將不被解釋 · 如果count放在模塊節點上,則報文中指定的子孫節點(表)中沒有count的都默認count屬性的值和模塊一致 · 如果不指定count,或者數據表中符合條件的數據記錄小於count,則獲取從指定索引開始的所有數據 |
如下為一個攜帶了count和index屬性的<get-bulk>操作報文示例:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:xc="//www.yolosolive.com/netconf/base:1.0">
<get-bulk>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0" xmlns:base="//www.yolosolive.com/netconf/base:1.0">
<Syslog>
<Logs xc:count="5">
<Log>
<Index>10</Index>
</Log>
</Logs>
</Syslog>
</top>
</filter>
</get-bulk>
</rpc>
· 獲取接口數據時,如果IfIndex和vrfindex元素的值為數字,設備無法識別該值為名稱類型還是索引類型。此時,用戶可以使用valuetype指定該值的類型。valuetype取值為:
屬性 |
說明 |
name |
值為名稱類型 |
index |
值為索引類型 |
auto |
設備先按名稱類型進行匹配,如果沒有匹配到任何信息,再按照索引類型進行匹配 如果不指定valuetype的屬性,缺省使用auto |
下麵以IfIndex元素值為index類型,值為1為例:
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<getoperation>
<filter>
<top xmlns="//www.yolosolive.com/netconf/config:1.0" xmlns:base="//www.yolosolive.com/netconf/base:1.0">
<VLAN>
<TrunkInterfaces>
<Interface>
<IfIndex base:valuetype="index">1</IfIndex>
</Interface>
</TrunkInterfaces>
</VLAN>
</top>
</filter >
</getoperation>
</rpc>
設備收到配置獲取請求報文後會將相應屬性的值通過如下報文反饋給客戶端:
<?xml version="1.0"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
全部配置數據和狀態數據
</data>
</rpc-reply>
設備支持通過<get-config>和<get-bulk-config>操作獲取設備所有可配置的功能的變量值。
<get-config>和<get-bulk-config>操作報文中可以包含子標簽<filter>,用來對要獲取的信息進行過濾。
<get-config>和<get-bulk-config>的通用報文格式為:
<?xml version="1.0"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-config>
<source>
<running/>
</source>
<filter>
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
指定模塊,子模塊,表名,列名
</top>
</filter>
</get-config>
</rpc>
設備收到配置獲取請求報文後會將相應配置通過如下報文反饋給客戶端:
<?xml version="1.0"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
所有指定filter內的數據
</data>
</rpc-reply>
<get><netconf-state/></get>報文的通用格式為:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="m-641" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get>
<filter type='subtree'>
<netconf-state xmlns='urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring'>
<getType/>
</netconf-state>
</filter>
</get>
</rpc>
其中,getType可以為capabilities、datastores、schemas、sessions或者statistics:
· 不指定getType時,該操作則獲取NETCONF全部信息。
· 當指定getType時,該操作僅返回相應類型的應答數據。其中,getType取值為:
屬性 |
說明 |
capabilities |
該操作用來獲取設備能力集 |
datastores |
該操作用來獲取設備中的數據庫 |
schemas |
該操作用來獲取設備中的YANG文件名稱列表 |
sessions |
該操作用來獲取設備中的會話信息 |
statistics |
該操作用來獲取NETCONF的統計信息 |
# 設備收到NETCONF信息獲取請求報文後,將相應屬性的值通過如下報文反饋給客戶端:
<?xml version="1.0"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
全部NETCONF全部相關信息
</data>
</rpc-reply>
YANG文件中保存了設備支持的NETCONF操作,用戶通過獲取、並分析YANG文件的內容,從而獲知設備支持哪些NETCONF操作。
YANG文件集成在設備軟件中,命名格式為yang_identifier@yang_version.yang,用戶不能通過dir命令顯示YANG文件名,關於如何獲取設備上YANG文件名稱,詳細請參見“1.6.4 獲取NETCONF信息”。
如下報文要求返回名稱為H3C-syslog-data@2017-01-01.yang的YANG文件中的數據:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-schema xmlns='urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring'>
<identifier>H3C-syslog-data</identifier>
<version>2017-01-01</version>
<format>yang</format>
</get-schema>
</rpc>
設備的YANG文件名稱請以設備的實際情況為準。
設備收到YANG文件獲取請求報文後,將相應參數的值通過如下報文反饋給客戶端:
<?xml version="1.0"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
指定YANG文件的內容
</data>
</rpc-reply>
使用該功能用戶可以獲取當前設備的所有NETCONF會話信息。
獲取NETCONF會話信息的格式為:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-sessions/>
</rpc>
設備收到命令行指令後會回應客戶端,當客戶端收到如下報文時,表示命令行執行成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-sessions>
<Session>
<SessionID>用戶會話ID信息</SessionID>
<Line>line信息</Line>
<UserName>用戶登錄名稱</UserName>
<Since>用戶登錄時間</Since>
<LockHeld>用戶是否持有鎖</LockHeld>
</Session>
</get-sessions>
</rpc-reply>
獲取接口表的一條數據
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>urn:ietf:params:netconf:base:1.0</capability>
</capabilities>
</hello>
# 獲取接口表的一條數據。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:web="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-bulk>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0" xmlns:web="//www.yolosolive.com/netconf/base:1.0">
<Ifmgr>
<Interfaces web:count="1">
</Interfaces>
</Ifmgr>
</top>
</filter>
</get-bulk>
</rpc>
# 如果客戶端收到類似如下的報文,則表示操作成功:
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:web="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="100">
<data>
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
<Interface>
<IfIndex>3</IfIndex>
<Name>GigabitEthernet1/0/2</Name>
<AbbreviatedName>GE1/0/2</AbbreviatedName>
<PortIndex>3</PortIndex>
<ifTypeExt>22</ifTypeExt>
<ifType>6</ifType>
<Description>GigabitEthernet1/0/2 Interface</Description>
<AdminStatus>2</AdminStatus>
<OperStatus>2</OperStatus>
<ConfigSpeed>0</ConfigSpeed>
<ActualSpeed>100000</ActualSpeed>
<ConfigDuplex>3</ConfigDuplex>
<ActualDuplex>1</ActualDuplex>
</Interface>
</Interfaces>
</Ifmgr>
</top>
</data>
</rpc-reply>
獲取所有可配置的功能的變量值。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 獲取模塊所有配置數據。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-config>
<source>
<running/>
</source>
</get-config>
</rpc>
# 如果客戶端收到類似如下的報文,則表示操作成功:
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:web="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="100">
<data>
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<Ifmgr>
<Interfaces>
<Interface>
<IfIndex>1307</IfIndex>
<Shutdown>1</Shutdown>
</Interface>
<Interface>
<IfIndex>1308</IfIndex>
<Shutdown>1</Shutdown>
</Interface>
<Interface>
<IfIndex>1309</IfIndex>
<Shutdown>1</Shutdown>
</Interface>
<Interface>
<IfIndex>1311</IfIndex>
<VlanType>2</VlanType>
</Interface>
<Interface>
<IfIndex>1313</IfIndex>
<VlanType>2</VlanType>
</Interface>
</Interfaces>
</Ifmgr>
<Syslog>
<LogBuffer>
<BufferSize>120</BufferSize>
</LogBuffer>
</Syslog>
<System>
<Device>
<SysName>Sysname</SysName>
<TimeZone>
<Zone>+11:44</Zone>
<ZoneName>ABC</ZoneName>
</TimeZone>
</Device>
</System>
</top>
</data>
</rpc-reply>
獲取Syslog模塊的所有配置數據
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 獲取Syslog模塊的所有配置數據。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-config>
<source>
<running/>
</source>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<Syslog/>
</top>
</filter>
</get-config>
</rpc>
# 如果客戶端收到類似如下的報文,則表示操作成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="100">
<data>
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<Syslog>
<LogBuffer>
<BufferSize>120</BufferSize>
</LogBuffer>
</Syslog>
</top>
</data>
</rpc-reply>
獲取會話信息。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 獲取設備上當前存在的NETCONF會話的信息。
請將以下報文拷貝、粘貼到客戶端:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-sessions/>
</rpc>
# 如果客戶端收到類似如下的報文,則表示操作成功。
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="100">
<get-sessions>
<Session>
<SessionID>1</SessionID>
<Line>vty0</Line>
<UserName></UserName>
<Since>2017-01-07T00:24:57</Since>
<LockHeld>false</LockHeld>
</Session>
</get-sessions>
</rpc-reply>
以上信息表明:目前有一個NETCONF連接,SessionID是1,登錄用戶類型vty0,登錄時間是2017-01-07T00:24:57,此用戶不持有鎖。
當用戶執行<get>、<get-bulk>、<get-config>或者<get-bulk-config>操作時,在XML語言中增加過濾條件,可以使用戶隻看到自己關心的數據。數據過濾包括基於表的過濾和基於列的過濾:
· 基於表的過濾用於過濾表的信息。
· 基於列的過濾用於過濾單個列的信息。
基於表的過濾需要在基於列的過濾之前配置。
基於表的過濾中,過濾條件類似命令行,命令空間為//www.yolosolive.com/netconf/base:1.0,屬性名為filter。關於支持該過濾方式表的詳細信息,具體請參見模塊的XML API手冊。
如下要求返回IPv4路由表中匹配IP地址為1.1.1.0和24位掩碼最長的數據:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:h3c="//www.yolosolive.com/netconf/base:1.0">
<get>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Route>
<Ipv4Routes>
<RouteEntry h3c:filter="IP 1.1.1.0 MaskLen 24 longer"/>
</Ipv4Routes>
</Route>
</top>
</filter>
</get>
</rpc>
配置基於表的過濾時,查詢條件必須寫在行的屬性上。
基於列的過濾包括嚴格匹配過濾、正則表達式匹配過濾和條件匹配過濾。
同時指定多種過濾時,隻有一個生效,其優先級從高到低依次為:嚴格匹配過濾、正則表達式匹配過濾和條件匹配過濾。
嚴格匹配包括兩種匹配方式,一種是元素值方式,還有一種是屬性名方式。
用戶在XML語言中直接指定對應的元素值,設備將對這些值進行嚴格匹配。如果指定了多個元素的值,則返回同時符合這幾個條件的數據。隻有完全匹配條件才返回成功。
如下為一個NETCONF報文示例,用於獲取所有狀態為UP的接口的配置信息:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
<Interface>
<AdminStatus>1</AdminStatus>
</Interface>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get>
</rpc>
當用戶在行的位置上放置的某個屬性的名稱和當前表的某個列的名稱一致,則這個屬性的值將與用戶下發配置中同名稱的列的值進行嚴格匹配,例如,上麵例子用屬性名方式的等價XML請求為:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0" xmlns:data="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
<Interface data:AdminStatus="1"/>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get>
</rpc>
以上兩個NETCONF報文示例說明通過不同的嚴格匹配方式都可以獲取所有狀態為UP的接口的索引和指定列信息。
當過濾條件比較複雜時,可以在指定元素上設置regExp屬性為一個正則表達式,以完成過濾的目的。
支持正則表達式匹配的數據類型有整數、日期和時間、字符串、IPv4地址、IPv4掩碼、IPv6地址、MAC地址、OID和時區。
如下為一個NETCONF報文示例,用於獲取接口的描述信息,並要求這些描述信息全部為大寫字母,不能有其他字符。
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:h3c="//www.yolosolive.com/netconf/base:1.0">
<get-config>
<source>
<running/>
</source>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<Ifmgr>
<Interfaces>
<Interface>
<Description h3c:regExp="^[A-Z]*$"/>
</Interface>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get-config>
</rpc>
由於正則表達僅能夠完成字符匹配,對於數值邏輯的判斷過濾實現起來比較麻煩,此時,可使用條件匹配過濾功能。
條件匹配通過在元素中增加match屬性完成,屬性的值(即過濾條件)可以為數字、字符串。
表1-2 條件匹配命令
操作 |
命令 |
說明 |
大於 |
match="more:value" |
值大於value,支持的數據類型為:日期、數字、字符串 |
小於 |
match="less:value" |
值小於value,支持的數據類型為:日期、數字、字符串 |
不小於 |
match="notLess:value" |
值不小於value,支持的數據類型為:日期、數字、字符串 |
不大於 |
match="notMore:value" |
值不大於value,支持的數據類型為:日期、數字、字符串 |
等於 |
match="equal:value" |
值等於value,支持的數據類型為:日期、數字、字符串、OID、BOOL |
不等於 |
match="notEqual:value" |
值不等於value,支持的數據類型為:日期、數字、字符串、OID、BOOL |
包含 |
match="include:string" |
包含字符串string,支持的數據類型為:字符串 |
不包含 |
match="exclude:string" |
不能包含字符串string,支持的數據類型為:字符串 |
開始於 |
match="startWith:string" |
以字符串string開頭,支持的數據類型為:字符串、OID |
結束於 |
match="endWith:string" |
以字符串string結束,支持的數據類型為:字符串 |
如下為一個NETCONF報文示例,用於獲取實體擴展信息中CPU利用率大於50%的實體。
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:h3c="//www.yolosolive.com/netconf/base:1.0">
<get>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Device>
<ExtPhysicalEntities>
<Entity>
<CpuUsage h3c:match="more:50"></CpuUsage>
</Entity>
</ExtPhysicalEntities>
</Device>
</top>
</filter>
</get>
</rpc>
取Ifmgr模塊下Interfaces表下Description列包含Gigabit的所有數據。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 取Ifmgr模塊Interfaces表下Description列包含Gigabit的所有數據。
請將以下報文拷貝、粘貼到客戶端:
<?xml version="1.0"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:h3c="//www.yolosolive.com/netconf/base:1.0">
<get>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
<Interface>
<Description h3c:regExp="(Gigabit)+"/>
</Interface>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get>
</rpc>
# 如果客戶端收到類似如下的報文,則表示操作成功。
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:h3c="//www.yolosolive.com/netconf/base:1.0" message-id="100">
<data>
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
<Interface>
<IfIndex>2681</IfIndex>
<Description>GigabitEthernet1/0/1 Interface</Description>
</Interface>
<Interface>
<IfIndex>2685</IfIndex>
<Description>GigabitEthernet1/0/2 Interface</Description>
</Interface>
<Interface>
<IfIndex>2689</IfIndex>
<Description>GigabitEthernet1/0/3 Interface</Description>
</Interface>
</Interfaces>
</Ifmgr>
</top>
</data>
</rpc-reply>
取Ifmgr模塊Interfaces表下ifindex值大於等於5000的Name列信息。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 取Ifmgr模塊Interfaces表下ifindex值大於等於5000的Name列信息。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:h3c="//www.yolosolive.com/netconf/base:1.0">
<get>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
<Interface>
<IfIndex h3c:match="notLess:5000"/>
<Name/>
</Interface>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get>
</rpc>
# 如果客戶端收到類似如下的報文,則表示操作成功。
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:h3c="//www.yolosolive.com/netconf/base:1.0" message-id="100">
<data>
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces>
<Interface>
<IfIndex>7241</IfIndex>
<Name>NULL0</Name>
</Interface>
</Interfaces>
</Ifmgr>
</top>
</data>
</rpc-reply>
設備支持通過NETCONF、CLI和SNMP等多種方式配置,當用戶管理、維護設備或者定位網絡問題時,為防止其他用戶修改當前配置、引入幹擾,可以使用本特性給當前配置加鎖。給當前配置加鎖後,隻有持有鎖的用戶可以修改設備的當前配置,其他用戶隻能執行讀取操作,不能進行配置。
隻有持有鎖的用戶可以解鎖,解鎖後其他用戶才可以修改設備的當前配置或另外加鎖。如果持有鎖的用戶的當前連接斷開,係統會自動解鎖。
NETCONF加鎖操作將鎖定配置數據,即<edit-config>操作中指定的配置數據,其他操作(例如<get>操作)不受鎖的限製。
目前設備隻支持對當前配置加鎖,不能對具體的功能模塊進行加鎖。
隻有持有鎖的用戶才能解鎖,其他用戶不能解鎖。
請將以下報文拷貝、粘貼到客戶端,用戶即能完成加鎖操作:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<lock>
<target>
<running/>
</target>
</lock>
</rpc>
設備收到加鎖報文後會回應客戶端,當客戶端收到如下報文時,表示加鎖成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
請將以下報文拷貝、粘貼到客戶端,用戶即能完成解鎖操作:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<unlock>
<target>
<running/>
</target>
</unlock>
</rpc>
設備收到解鎖報文後會回應客戶端,當客戶端收到如下報文時,表示解鎖成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
給設備加鎖,以免其他用戶使用XML語言修改設備的當前配置。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 對當前配置加鎖。
請將以下報文拷貝、粘貼到客戶端:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<lock>
<target>
<running/>
</target>
</lock>
</rpc>
# 如果客戶端收到如下報文,則表示加鎖成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
用戶加鎖成功後,另一客戶端發送加鎖報文,設備會返回如下報文:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<rpc-error>
<error-type>protocol</error-type>
<error-tag>lock-denied</error-tag>
<error-severity>error</error-severity>
<error-message xml:lang="en">Lock failed because the NETCONF lock is held by another session.</error-message>
<error-info>
<session-id>1</session-id>
</error-info>
</rpc-error>
</rpc-reply>
以上報文表明加鎖失敗,session-id是1的用戶已經持有鎖。
設備支持通過<edit-config>操作下發配置,該操作支持如下配置選項:merge、create、replace、remove、delete、缺省操作選項、缺省錯誤處理選項、測試處理、增量下發,關於這些選項的詳細描述請參見“2 Comware V7支持的NETCONF操作”。
當需要向設備下發配置時,請使用如下格式的NETCONF報文:
<?xml version="1.0"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target><running></running></target>
<error-option>
error-option
</error-option>
<config>
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
指定模塊名,子模塊名,列名,表名
</top>
</config>
</edit-config>
</rpc>
error-option為下發配置過程中遇到錯誤時的處理方式,取值為:
屬性 |
說明 |
stop-on-error |
停止下發配置 |
continue-on-error |
繼續下發配置 |
rollback-on-error |
回滾到該<edit-config>操作前的配置 配置回滾時缺省不能下發<edit-config>操作。因為回滾到該<edit-config>操作前的配置時,如果回滾時間超過客戶端等待時間,客戶端會認為<edit-config>操作下發失敗,此時客戶端將重新下發<edit-config>操作,設備再次觸發回滾,如此反複,則會導致CPU/內存資源耗盡,設備重啟 如需回滾配置的同時執行<edit-config>操作,請先執行<action>操作將DisableEditConfigWhenRollback的屬性修改為false |
設備收到edit-config請求後會回應客戶端,當客戶端收到如下報文時,表示設置成功:
<?xml version="1.0">
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
用戶還可以通過<get>操作可以查看屬性的當前值是否和edit-config操作設置的值一致。
修改syslog模塊中的日誌緩衝區可存儲的信息條數為512。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>urn:ietf:params:netconf:base:1.0</capability>
</capabilities>
</hello>
# 把Syslog模塊LogBuffer表中的BufferSize列,改成512。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:web="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<config>
<top xmlns="//www.yolosolive.com/netconf/config:1.0" web:operation="merge">
<Syslog>
<LogBuffer>
<BufferSize>512</BufferSize>
</LogBuffer>
</Syslog>
</top>
</config>
</edit-config>
</rpc>
# 如果客戶端收到類似如下的報文,則表示操作成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
用戶可以執行保存配置操作將當前配置保存到配置文件中,同時該文件將自動作為下次啟動配置文件。
保存配置操作消耗係統資源較多,因此,請避免在係統資源占用較大的情況下執行這些操作。
請將以下報文拷貝、粘貼到客戶端:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save OverWrite="false" Binary-only="false" Safely="false">
<file>配置文件的名稱</file>
</save>
</rpc>
屬性 |
說明 |
OverWrite |
指定的配置文件名與原有配置文件名相同時,是否覆蓋原配置文件。取值為: · true:當指定的配置文件名與原有配置文件名相同時,覆蓋原配置文件 · false:當指定的配置文件名與原有配置文件名相同時,當前配置保存失敗,同時返回錯誤提示信息 缺省情況下,OverWrite屬性取值為true |
Binary-only |
是否將當前配置隻保存到file屬性指定的文本配置文件對應的二進製配置文件,從而縮短保存時間。取值為: · true:將當前配置隻保存到二進製配置文件中 ¡ 如果file屬性指定的文本配置文件不存在,則保存配置操作失敗 ¡ 未指定file屬性時,設備自動將當前配置保存到下次啟動的文本配置文件對應的二進製配置文件中;如果下次啟動的文本配置文件不存在,則保存配置操作失敗 · false:同時保存文本配置文件(後綴為“.cfg”)和二進製配置文件(後綴為“.mdb”,僅軟件能解析) 缺省情況下,Binary-only屬性取值為false |
Safely |
是否以安全模式保存配置文件。取值為: · true:存在同名配置文件時,係統會先將當前配置保存到一個臨時文件,保存成功後,再用這個臨時文件替換原同名文件。因此,即使在保存過程中出現設備重啟、斷電等問題導致配置保存失敗,仍然能夠以原同名的配置文件啟動設備 · false:存在同名配置文件時,係統先刪除該文件,再保存當前配置文件。在保存過程中,如果出現設備重啟、斷電、內存不足、設備存儲空間不足等問題,可能會出現當前配置保存失敗、下次啟動文件為空的問題 缺省情況下,Safely屬性取值為false 為了安全起見,在需要將當前配置保存到下次啟動配置文件的時候,建議選用Safely屬性 |
file |
文本配置文件的名稱,後綴為.cfg。該名稱包含文件路徑時,必須以存儲介質的名稱開頭,例如flash:/startup.cfg 當報文中存在file屬性時,必須輸入文本配置文件的名稱,不能為空 · 如果file屬性指定的文件不存在,則自動創建該文本配置文件和對應的二進製配置文件 · 未指定file屬性時,設備自動將當前配置保存到下次啟動配置文件(包括文本配置文件和對應的二進製配置文件) |
設備收到配置保存請求後會回應客戶端,當客戶端收到如下報文時,表示保存成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
將設備的當前配置保存到配置文件config.cfg。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 將設備的當前配置保存到配置文件config.cfg。
請將以下報文拷貝、粘貼到客戶端:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save>
<file>config.cfg</file>
</save>
</rpc>
# 如果客戶端收到類似如下的報文,則表示操作成功。
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
用戶可以執行<load>操作,將指定配置文件中的配置會被合並到設備的當前配置中。
設備將配置文件中的配置中的配置與當前配置進行比較:
· 對於配置文件中有,但當前配置中沒有的配置,則直接運行。
· 對於配置文件與當前配置中不一致的配置,則用配置文件中的配置替換當前配置中的對應配置。
加載配置文件操作消耗係統資源較多,因此,請避免在係統資源占用較大的情況下執行這些操作。
如果隻有刪除設備中現有的配置才能使配置文件中的某些配置生效,則需要先刪除當前配置後再加載配置文件,否則這些配置無法生效。
請將以下報文拷貝、粘貼到客戶端,用戶即可將配置文件中的配置追加到當前配置中:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<load>
<file>配置文件的名稱</file>
</load>
</rpc>
其中,“配置文件的名稱”必須以存儲介質的名稱開頭,後綴為.cfg。
設備收到配置加載請求後會回應客戶端,當客戶端收到如下報文時,表示配置加載成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
回滾配置操作消耗係統資源較多,因此,請避免在係統資源占用較大的情況下執行這些操作。
缺省情況下,通過NETCONF回滾配置時,不能執行<edit-config>操作。如果需要在回滾配置的同時執行<edit-config>操作,請先執行<action>操作,將DisableEditConfigWhenRollback的屬性修改為false。
請將以下報文拷貝、粘貼到客戶端,用戶即可將設備的當前配置恢複到指定配置文件中的配置:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<rollback>
<file>配置文件的名稱</file>
</rollback>
</rpc>
設備收到配置回滾請求後會回應客戶端,當客戶端收到如下報文時,表示配置回滾成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
設備支持對當前正在運行的配置進行回滾,配置回滾點後,設備可以在如下場景下進行配置回滾:
· NETCONF客戶端主動下發配置回滾指令。
· NETCONF客戶端在指定的時間內無任何指令,即NETCONF會話空閑時間超過配置的回滾空閑超時時間。
· NETCONF客戶端和設備間的連接異常斷開。
如果存在多個NETCONF會話同時配置設備,建議回滾配置前先用<lock>鎖定係統,否則可能導致設備運行配置與回滾前配置不一致。
(1) 對當前係統加鎖,具體請參見“1.8 配置加鎖和解鎖”。
(2) 啟動配置回滾功能,下發<save-point>/<begin>操作配置起始回滾點。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save-point>
<begin>
<confirm-timeout>100</confirm-timeout>
</begin>
</save-point>
</rpc>
屬性 |
說明 |
confirm-timeout |
回滾空閑超時時間,取值範圍為1~65535,單位為秒,缺省值為600。該屬性為可選 |
當客戶端收到如下報文時,表示配置起始回滾點成功:
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
<save-point>
<commit>
<commit-id>1</commit-id>
</commit>
</save-point>
</data>
</rpc-reply>
(3) 下發<edit-config>操作,對設備各功能進行配置。
(4) 下發<save-point>/<commit>操作配置回滾點。
配置<save-point>操作後,係統支持對最近50個回滾點的配置回滾。超過50個回滾點後,進行<commit>操作時需指定force屬性強製覆蓋最早的回滾點。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save-point>
<commit>
<label>SUPPORT VLAN<label>
<comment>vlan 1 to 100 and interfaces.</comment>
</commit>
</save-point>
</rpc>
<label/>和<comment/>為可選。
當客戶端收到如下報文時,表示確認成功:
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
<save-point>
<commit>
<commit-id>2</commit-id>
</commit>
</save-point>
</data>
</rpc-reply>
(5) 下發<save-point>/<get-commits>操作獲取<commit>的操作記錄。
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save-point>
<get-commits>
<commit-id/>
<commit-index/>
<commit-label/>
</get-commits>
</save-point>
</rpc>
<commit-id>,<commit-index>,<commit-label>任選一個,也可以都不選,顯示所有的commit記錄。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save-point>
<get-commits>
<commit-label>SUPPORT VLAN</commit-label>
</get-commits>
</save-point>
</rpc>
當客戶端收到如下報文時,返回對應的commit操作記錄:
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
<save-point>
<commit-information>
<CommitID>2</CommitID>
<TimeStamp>Sun Jan 1 11:30:28 2017</TimeStamp>
<UserName>test</UserName>
<Label>SUPPORT VLAN</Label>
</commit-information>
</save-point>
</data>
</rpc-reply>
(6) 下發<save-point>/<get-commit-information>操作獲取對應的commit操作時的配置。
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save-point>
<get-commit-information>
<commit-information>
<commit-id/>
<commit-index/>
<commit-label/>
</commit-information>
<compare-information>
<commit-id/>
<commit-index/>
<commit-label/>
</compare-information>
</get-commit-information>
</save-point>
</rpc>
<commit-id/>,<commit-index/>,<commit-label/>任選一個。<compare-information/>可選。
屬性 |
說明 |
commit-id |
係統唯一標識的commit編號 |
commit-index |
最近50次的commit,0表示最近一次下發commit,49表示最遠一次commit |
commit-label |
回滾點的標簽,不同回滾點的標簽不能相同 |
get-commit-information |
顯示最近的使用的commit配置 |
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save-point>
<get-commit-information>
<commit-information>
<commit-label>SUPPORT VLAN</commit-label>
</commit-information>
</get-commit-information>
</save-point>
</rpc>
當客戶端收到如下報文時,顯示對應的配置信息:
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
<save-point>
<commit-information>
<content>
…
interface vlan 1
…
</content>
</commit-information>
</save-point>
</data>
</rpc-reply>
(7) 下發<save-point>/<rollback>進行回滾配置操作。用戶可選擇對應的回滾點進行配置回滾,或者等待NETCONF會話空閑時間超過配置的回滾空閑超時時間而自動進行配置回滾到最近回滾點的配置。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save-point>
<rollback>
<commit-id/>
<commit-index/>
<commit-label/>
</rollback>
</save-point>
</rpc>
<commit-id/>、<commit-index/>、<commit-label/>任選一個,或者不選時回滾此前最近commit的配置。
屬性 |
說明 |
commit-id |
係統唯一標識的commit編號 |
commit-index |
最近50次的commit,0表示最近一次下發commit,49表示最遠一次commit |
commit-label |
回滾點的標簽,不同回滾點的標簽不能相同 |
當客戶端收到如下報文時,表示主動下發配置回滾成功:
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok></ok>
</rpc-reply>
(8) 下發<save-point>/<end>結束配置回滾或取消回滾配置。
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save-point>
<end/>
</save-point>
</rpc>
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save-point>
<end/>
</save-point>
</rpc>
當客戶端收到如下報文時,返回對應的end結果成功。
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
(9) 對當前係統解鎖,具體請參見“1.8 配置加鎖和解鎖”。
通過NETCONF功能,用戶可以將命令行封裝在XML報文中對設備進行操作。
通過NETCONF下發命令行操作消耗係統資源較多,因此,請避免一次下發多個命令行、或多個用戶同時進行NETCONF下發命令行操作。
當需要給設備發送命令時,請使用格式如下的NETCONF報文:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<CLI>
<Execution>
命令行
</Execution>
</CLI>
</rpc>
一對<Execution>子標簽中可以包含多個命令行,一條命令輸入完畢,換行,再輸入下一條命令即可。
設備收到命令行指令後會回應客戶端,當客戶端收到如下報文時,表示命令行執行成功(注意命令響應被CDATA節點包含):
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<CLI>
<Execution>
<![CDATA[對應命令行響應]]>
</Execution>
</CLI>
</rpc-reply>
向設備發送顯示VLAN相關信息的命令。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 向設備發送顯示VLAN相關信息的命令。
請將以下報文拷貝、粘貼到客戶端:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<CLI>
<Execution>
display vlan
</Execution>
</CLI>
</rpc>
# 如果客戶端收到類似如下的報文,則表示操作成功。
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<CLI>
<Execution><![CDATA[
<Sysname>display vlan
Total VLANs: 1
The VLANs include:
1(default)
]]>
</Execution>
</CLI>
用戶向設備訂閱事件後,設備上發生用戶訂閱的事件時,設備會自動向訂閱的客戶端發送事件的日誌。
對於NETCONF over SOAP會話,設備不支持訂閱事件。
訂閱隻對當前連接生效。如果連接斷開,訂閱會自動取消。
如果不配置訂閱的事件流<stream></stream>,則缺省訂閱Syslog事件。
事件訂閱報文格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<stream>NETCONF</stream>
<filter>
<event xmlns="//www.yolosolive.com/netconf/event:1.0">
<Code>code</Code>
<Group>group</Group>
<Severity>severity</Severity>
</event>
</filter>
<startTime>start-time</startTime>
<stopTime>stop-time</stopTime>
</create-subscription>
</rpc>
屬性 |
說明 |
stream |
訂閱的事件流,Syslog事件流的名稱為NETCONF |
event |
訂閱的事件,此處可訂閱的事件為係統支持的日誌。具體可以訂閱哪些模塊的事件,請參見《日誌信息參考手冊》 |
code |
日誌信息中的助記符 |
group |
日誌信息中的模塊名 |
severity |
日誌信息中的安全級別 |
start-time |
訂閱的開始時間 |
stop-time |
訂閱的結束時間 |
設備收到訂閱報文後會回應客戶端,當客戶端收到如下報文時,表示訂閱成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply >
當訂閱出錯時設備會返回錯誤信息,例如:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<rpc-error>
<error-type>error-type</error-type>
<error-tag>error-tag</error-tag>
<error-severity>error-severity</error-severity>
<error-message xml:lang="en">error-message</error-message>
</rpc-error>
</rpc-reply>
錯誤報文的詳細定義請參見RFC 4741。
配置該功能後,NETCONF每隔指定時間獲取一次所訂閱事件,並將符合訂閱條件的信息發送給用戶。
事件訂閱報文格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription xmlns='urn:ietf:params:xml:ns:netconf:notification:1.0'>
<stream>NETCONF_MONITOR_EXTENSION</stream>
<filter>
<NetconfMonitor xmlns='//www.yolosolive.com/netconf/monitor:1.0'>
<XPath>XPath</XPath>
<Interval>interval</Interval>
<ColumnConditions>
<ColumnCondition>
<ColumnName>ColumnName</ColumnName>
<ColumnValue>ColumnValue</ColumnValue>
<ColumnCondition>ColumnCondition</ColumnCondition>
</ColumnCondition>
</ColumnConditions>
<MustIncludeResultColumns>
<ColumnName>columnName</ColumnName>
</MustIncludeResultColumns>
</NetconfMonitor>
</filter>
<startTime>start-time</startTime>
<stopTime>stop-time</stopTime>
</create-subscription>
</rpc>
屬性 |
說明 |
stream |
訂閱的事件流,監控事件流的名稱為NETCONF_MONITOR_EXTENSION |
NetconfMonitor |
監控事件的過濾信息 |
XPath |
監控事件的路徑,格式為:模塊名[/子模塊名]/表名 |
interval |
監控的時間間隔,取值範圍為1~4294967,缺省值為300,單位為秒,即每隔300秒獲取一次符合訂閱條件的信息 |
ColumnName |
監控列的名稱,格式為:[組名稱.]列名稱 |
ColumnValue |
監控列的過濾值 |
ColumnCondition |
監控列的過濾條件: · more:大於 · less:小於 · notLess:不小於 · notMore:不大於 · equal:等於 · notEqual:不等於 · include:包含 · exclude:不包含 · startWith:開始於 · endWith:結束於 請根據監控列的過濾值的類型填寫過濾條件 |
start-time |
訂閱的開始時間 |
stop-time |
訂閱的結束時間 |
設備收到訂閱報文後會回應客戶端,當客戶端收到如下報文時,表示訂閱成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
配置該功能後,所訂閱模塊發生用戶所訂閱事件時,將主動上報NETCONF,NETCONF將這樣信息發送給用戶。
事件訂閱報文格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:xs="//www.yolosolive.com/netconf/base:1.0">
<create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<stream>XXX_STREAM</stream>
<filter type="subtree">
<event xmlns="//www.yolosolive.com/netconf/event:1.0/xxx-features-list-name:1.0">
<ColumnName xs:condition="Condition">value</ColumnName>
</event>
</filter>
<startTime>start-time</startTime>
<stopTime>stop-time</stopTime>
</create-subscription>
</rpc>
屬性 |
說明 |
stream |
訂閱的事件流,請根據設備實際支持情況填寫模塊上報事件流的名稱 |
event |
訂閱的事件的名稱,一個事件流中包括多個事件,請根據事件流下的事件填寫,命名空間為事件流的命名空間 |
ColumnName |
當前事件下需要過濾的列的名稱 |
Condition |
事件列的過濾條件: · more:大於 · less:小於 · notLess:不小於 · notMore:不大於 · equal:等於 · notEqual:不等於 · include:包含 · exclude:不包含 · startWith:開始於 · endWith:結束於 請根據事件列的過濾值的類型填寫過濾條件 |
value |
當前事件下需要過濾的列的值 |
start-time |
訂閱的開始時間 |
stop-time |
訂閱的結束時間 |
設備收到訂閱報文後會回應客戶端,當客戶端收到如下報文時,表示訂閱成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
用戶可以下發取消訂閱的請求報文來取消當前會話中已訂閱的事件流。
取消訂閱事件的請求報文格式如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<cancel-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<stream>XXX_STREAM</stream>
</cancel-subscription>
</rpc>
屬性 |
說明 |
stream |
訂閱的事件流的名稱 |
設備收到請求報文後會回應客戶端,當客戶端收到如下報文時,表示取消訂閱成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="100">
<ok/>
</rpc-reply>
如果要取消的已訂閱事件流不存在,設備會返回錯誤信息:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<rpc-error>
<error-type>error-type</error-type>
<error-tag>error-tag</error-tag>
<error-severity>error-severity</error-severity>
<error-message xml:lang="en">The subscription stream to be canceled doesn't exist: Stream name=XXX_STREAM.</error-message>
</rpc-error>
</rpc-reply>
客戶端訂閱沒有時間限製的全部事件。訂閱後在斷開連接之前,設備發生的所有事件都會發送給客戶端。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 訂閱全部事件,不限製訂閱時間。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<stream>NETCONF</stream>
</create-subscription>
</rpc>
# 如果客戶端收到如下報文,則表示訂閱成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="100">
<ok/>
</rpc-reply>
當用戶(IP地址為192.168.100.130)登錄設備時,設備會發送如下報文來通知訂閱客戶端:
<?xml version="1.0" encoding="UTF-8"?>
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2011-01-04T12:30:52</eventTime>
<event xmlns="//www.yolosolive.com/netconf/event:1.0">
<Group>SHELL</Group>
<Code>SHELL_LOGIN</Code>
<Slot>1</Slot>
<Severity>Notification</Severity>
<context>VTY logged in from 192.168.100.130.</context>
</event>
</notification>
客戶端訂閱接口管理模塊的InterfaceEvent事件。訂閱後在斷開連接之前,接口管理模塊發生的所訂閱的事件都會發送給客戶端。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 訂閱接口管理模塊的InterfaceEvent事件,不限製訂閱時間。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:xs="//www.yolosolive.com/netconf/base:1.0">
<create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<stream>Ifmgr</stream>
<filter type="subtree">
<InterfaceEvent xmlns="//www.yolosolive.com/netconf/event:1.0/Ifmgr:1.0">
</InterfaceEvent>
</filter>
</create-subscription>
</rpc>
# 如果客戶端沒有訂閱InterfaceEvent事件的RBAC權限,將會收到如下報文:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:xs="//www.yolosolive.com/netconf/base:1.0" message-id="100">
<rpc-error xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<error-type>application</error-type>
<error-tag>access-denied</error-tag>
<error-severity>error</error-severity>
<error-message xml:lang="en">You don't have the privilege to subscribe the InterfaceEvent event.</error-message>
</rpc-error>
</rpc-reply>
# 如果客戶端收到如下報文,則表示訂閱成功:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="100">
<ok/>
</rpc-reply>
當以太網接口狀態發生變化時,設備會發送如下報文來通知訂閱客戶端:
<?xml version="1.0" encoding="UTF-8"?>
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2019-04-28T17:31:03</eventTime>
<InterfaceEvent xmlns="Ifmgr:1.0">
<Interface>
<Name>GigabitEthernet1/0/1</Name>
<Status>IF_ACTIVE</Status>
<IfIndex>261</IfIndex>
<AdminStatus>ADMIN_UP</AdminStatus>
<OperStatus>OPER_DOWN</OperStatus>
<Description>The Interface GigabitEthernet1/0/1 occurred IF_ACTIVE event,the administration status is ADMIN_UP,operation status is OPER_DOWN.</Description>
</Interface>
</InterfaceEvent>
</notification>
NETCONF支持用戶關閉除自己外的NETCONF會話,被關閉會話的用戶退回到用戶視圖。
請將以下報文拷貝、粘貼到客戶端,用戶即能關閉指定的會話:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<kill-session>
<session-id>
指定session-ID
</session-id>
</kill-session>
</rpc>
設備收到會話關閉請求後會回應客戶端,當客戶端收到如下報文時,表示指定會話已經被關閉:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
當前有兩個NETCONF登錄用戶,session ID分別是1和2,session ID為1的用戶要關閉session ID為2用戶的會話。
# 進入XML視圖。
<Sysname> xml
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:netconf:base:1.0
</capability>
</capabilities>
</hello>
# 關閉session ID為2的用戶會話。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<kill-session>
<session-id>2</session-id>
</kill-session>
</rpc>
如果客戶端收到如下報文,則表明session ID為2的NETCONF會話已經被關閉。建立該會話的用戶會從XML視圖退回到用戶視圖。
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
進入XML視圖後,必須先完成能力交換,再執行退出XML視圖操作。
處於XML視圖的用戶退回到用戶視圖時,需要將以下報文拷貝、粘貼到客戶端:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<close-session/>
</rpc>
設備收到以上請求後會返回如下報文並退回到用戶視圖:
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply message-id="100"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
當前已通過xml命令進入XML視圖,用戶需要退出XML視圖。
# 進行能力交換。
請將以下報文拷貝、粘貼到客戶端:
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>urn:ietf:params:netconf:base:1.0</capability>
</capabilities>
</hello>]]>]]>
# 退出XML視圖。
請將以下報文拷貝、粘貼到客戶端:
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<close-session/>
</rpc>]]>]]>
# 如果回到用戶視圖,則表示成功退出XML視圖。
<Sysname>
開啟NETCONF的告警功能後,該模塊會生成告警信息,用於報告該模塊的重要事件。生成的告警信息將發送到設備的SNMP模塊,通過設置SNMP中告警信息的發送參數,來決定告警信息輸出的相關屬性。有關告警信息的詳細介紹,請參見“網絡管理和監控配置指導”中的“SNMP”。
(1) 進入係統視圖。
system-view
(2) 開啟NETCONF的告警功能。
snmp-agent trap enable netconf
缺省情況下,NETCONF的告警功能處於開啟狀態。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後NETCONF的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下,執行reset命令可以清除NETCONF的統計信息。
表1-3 NETCONF顯示和維護
操作 |
命令 |
顯示當前NETCONF服務的狀態及全局統計信息 |
display netconf service |
顯示當前NETCONF會話信息 |
display netconf session |
清除當前NETCONF服務的全局統計信息 |
reset netconf service statistics |
清除當前NETCONF會話的統計信息 |
reset netconf session statistics |
Comware V7平台對NETCONF標準協議做了一些修訂,刪除了不常用的操作,增加部分新的操作
【使用指導】
下發可配置的功能的動作,例如reset操作。
【XML格式樣例】
清除全部接口的統計信息,XML請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<action>
<top xmlns="//www.yolosolive.com/netconf/action:1.0">
<Ifmgr>
<ClearAllIfStatistics>
<Clear>
</Clear>
</ClearAllIfStatistics>
</Ifmgr>
</top>
</action>
</rpc>
【使用指導】
執行命令行的命令。
請求消息將命令行語句封裝在<CLI>標簽中,命令行輸出信息被封裝在<CLI>標簽中返回。
CLI支持Execution和Configuration方式執行命令行:
· Execution:在用戶視圖下執行命令行。
· Configuration:在係統視圖下執行命令行。使用該方式時需要指定exec-use-channel的屬性:
¡ false:不使用channel方式執行命令行。
¡ true:使用臨時channel執行命令行,執行完成後,自動關閉該channel。
¡ persist:使用保留channel執行命令行。使用該方式時,則需要執行Open-channel操作打開當前對話的channel;使用完成後,執行Close-channel關閉Channel。
· 對於其他視圖下命令,則需要在Configuration下先指定進入子視圖的命令,再指定配置命令。
一個NETCONF會話隻能打開一個保留channel,可以打開多個臨時channel。
如果沒有執行Open-channel操作,則係統將自動打開channel。
如果沒有執行關閉保留channel操作,再次使用保留channel時,係統在上次最後執行的命令行所在視圖再次執行命令行。
不支持執行交互式命令。
使用channel方式執行命令行時,不支持執行quit命令退出用戶視圖。
【XML格式樣例】
在係統視圖下不使用channel方式執行display this命令:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<CLI>
<Configuration exec-use-channel="false">display this</Configuration>
</CLI>
</rpc>
【使用指導】
關閉當前NETCONF會話,並釋放鎖和這個session用到的內部資源(如內存等),退出XML視圖。
【XML格式樣例】
關閉當前NETCONF會話,並釋放鎖和這個session用到的內部資源(如內存等),退出XML視圖
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<close-session/>
</rpc>
【使用指導】
創建配置。
create操作必須指定配置對象。
· 如果當前配置表支持創建對象,且當前對象不存在,則先創建配置對象,再創建指定的配置。
· 如果配置對象下對應的配置項已經存在,則返回data-exist錯誤。
【XML格式樣例】
將BufferSize設置為120的xml請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<config>
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<Syslog xmlns="//www.yolosolive.com/netconf/config:1.0" xc:operation="create">
<LogBuffer>
<BufferSize>120</BufferSize>
</LogBuffer>
</Syslog>
</top>
</config>
</edit-config>
</rpc>
【使用指導】
刪除配置。
· 當指定的刪除對象中隻有表索引時,則刪除此配置指定對象的所有配置,同時刪除指定對象。
· 當指定的刪除對象中不僅僅有表索引還存在配置項時,則刪除此對象下麵的指定配置。
· 如果係統中指定對象不存在,則直接返回不存在的錯誤消息。
【XML格式樣例】
同edit-config: create,把create修改為delete即可。
【使用指導】
在當前運行配置的基礎上直接運行指定配置。
merge操作的XML數據格式和create類似,隻是operation屬性需要指定為“merge”。
merge操作必須指定具體的操作對象(行):
· 如果指定的對象存在,則直接配置該對象。
· 如果指定的對象不存在,但允許創建,則先創建再配置該對象。
· 如果指定的對象不存在且不允許創建,則返回merge失敗。
【XML格式樣例】
同edit-config: create,把create修改為merge即可。
【使用指導】
刪除配置。
· 當指定的刪除對象中隻有表索引時,則刪除此配置指定對象的所有配置,同時刪除指定對象。
· 當指定的刪除對象中不僅僅有表索引還存在配置項時,則刪除此對象下麵的指定配置。
· 如果係統中指定對象不存在,或者XML消息未指定對象,則直接返回成功。
【XML格式樣例】
同edit-config: create,把create修改為remove即可。
【使用指導】
替換配置。
· 如果指定的對象存在,則替換指定對象的配置為當前配置。
· 如果指定的對象不存在,但允許創建,則先創建再配置該對象為當前配置。
· 如果指定對象不存在且不允許創建,則不進行replace操作,返回invalid-value錯誤,提示用戶配置對象不存在。
【XML格式樣例】
同edit-config: create,把create修改為replace即可。
【使用指導】
執行edit-config操作時,可指定一個測試選項,使用<test-option>節點來決定當前配置是否下發。
該節點的缺省值為test-then-set,全部取值為:
· test-then-set:如果沒有錯誤則將配置設置到係統。
· set:將配置設置到係統。
· test-only:隻測試,並不下發配置到係統。語法檢查通過,就返回ok成功,否則失敗。
【XML格式樣例】
下發一個接口的配置,僅測試,XML請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<test-option>test-only</test-option>
<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<Ifmgr xc:operation="merge">
<Interfaces>
<Interface>
<IfIndex>262</IfIndex>
<Description>222</Description>
<ConfigSpeed>2</ConfigSpeed>
<ConfigDuplex>1</ConfigDuplex>
</Interface>
</Interfaces>
</Ifmgr>
</top>
</config>
</edit-config>
</rpc>
【使用指導】
edit-config操作用於修改當前係統配置。
NETCONF定製了merge、create、delete和replace等修改配置的方式。當XML消息中未指定修改配置方式時,則使用缺省操作作為當前指令的操作方式,不會修改缺省操作的缺省值。
缺省操作的缺省值為merge,可以在XML消息中通過<default-operation>節點設置,取值為:
· merge:當配置方式和缺省操作方式均未指定時,使用該方式。
· replace:當配置方式未指定,缺省操作指定為replace時,edit-config操作缺省為replace操作。
· none:當配置方式未指定,缺省操作指定為none的時候,edit-config操作缺省為none操作。none操作主要用來檢查,下發為none操作的配置僅僅做Schema校驗,不進行真正的配置下發。語法檢查通過,返回ok成功,否則失敗。
【XML格式樣例】
下發一個空的操作,該操作僅僅驗證格式,並不真正下發給係統,xml請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<default-operation>none</default-operation>
<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<Ifmgr>
<Interfaces>
<Interface>
<IfIndex>262</IfIndex>
<Description>222222</Description>
</Interface>
</Interfaces>
</Ifmgr>
</top>
</config>
</edit-config>
</rpc>
【使用指導】
edit-config將指定的配置設置到係統上,完成配置設置的操作。
在執行edit-config的過程中,如果遇到一個實例配置出錯,缺省情況下會直接返回錯誤,並提供錯誤選項,通過錯誤選項取值的不同,在發生錯誤的時候進行不同的處理操作。
<error-option>節點用於設置一個實例配置出錯後,後續實例配置的處理方式,缺省值為stop-on-error,全部取值為:
· stop-on-error:停止處理,返回錯誤。此選項為缺省選項。
· continue-on-error:繼續處理,但是報告錯誤。
· rollback-on-error:停止並回滾配置。
【XML格式樣例】
下發兩個接口的配置,當下發第一個接口的配置發生錯誤時,繼續進行下一個接口配置的下發,XML請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<error-option>continue-on-error</error-option>
<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<Ifmgr xc:operation="merge">
<Interfaces>
<Interface>
<IfIndex>262</IfIndex>
<Description>222</Description>
<ConfigSpeed>1024</ConfigSpeed>
<ConfigDuplex>1</ConfigDuplex>
</Interface>
<Interface>
<IfIndex>263</IfIndex>
<Description>333</Description>
<ConfigSpeed>1024</ConfigSpeed>
<ConfigDuplex>1</ConfigDuplex>
</Interface>
</Interfaces>
</Ifmgr>
</top>
</config>
</edit-config>
</rpc>
【使用指導】
增量下發選項incremental放置在列上,對於類似vlan permitlist列表集合性質的列,可能支持增量下發,用戶請求XML中有增量下發選項時,最終執行結果不影響本列原有的數據。
增量下發隻支持edit-config,但不支持edit-config中的replace。
關於支持增量下發的模塊,請參見模塊對應的NETCONF XML API。
【XML格式樣例】
下發一個接口的VLAN配置,使用增量下發,262接口原有untagvlanlist為12~15,下發後為1~10,12~15。XML請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
xmlns:h3c="//www.yolosolive.com/netconf/base:1.0">
<edit-config>
<target>
<running/>
</target>
<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<VLAN xc:operation="merge">
<HybridInterfaces>
<Interface>
<IfIndex>262</IfIndex>
<UntaggedVlanList h3c:incremental="true">1-10</UntaggedVlanList>
</Interface>
</HybridInterfaces>
</VLAN>
</top>
</config>
</edit-config>
</rpc>
【使用指導】
獲取設備運行狀態和運行配置。
【XML格式樣例】
獲取Syslog模塊的全部數據的XML請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:xc="//www.yolosolive.com/netconf/base:1.0">
<get>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Syslog>
</Syslog>
</top>
</filter>
</get>
</rpc>
【使用指導】
從指定索引的下一條開始獲取N條運行狀態和運行配置(索引行數據不返回)。
用戶通過index屬性指定索引,通過count屬性指定N。如未指定索引,則以第一條為索引;如未指定N,或者數據表中符合條件的數據記錄不足N條,則返回表中所有剩下的數據條目。
get操作會返回所有符合條件的數據,在某些情況下會導致效率問題。get-bulk允許用戶從固定數據項開始,向後獲取指定條目的數據記錄。
【XML格式樣例】
獲取全部接口的數據的xml請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-bulk>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/data:1.0">
<Ifmgr>
<Interfaces xc:count="5" xmlns:xc="//www.yolosolive.com/netconf/base:1.0">
<Interface/>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get-bulk>
</rpc>
【使用指導】
從指定索引的下一條批量獲取可配置的功能的變量值。
配置限製與get-bulk操作相同。
【XML格式樣例】
獲取全部接口配置信息的xml請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-bulk-config>
<source>
<running/>
</source>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<Ifmgr>
</Ifmgr>
</top>
</filter>
</get-bulk-config>
</rpc>
【使用指導】
獲取可配置的功能的變量值。如果對應功能未配置,則返回一個空的<data>。
【XML格式樣例】
獲取接口表內所有配置的XML請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:xc="//www.yolosolive.com/netconf/base:1.0">
<get-config>
<source>
<running/>
</source>
<filter type="subtree">
<top xmlns="//www.yolosolive.com/netconf/config:1.0">
<Ifmgr>
<Interfaces>
<Interface/>
</Interfaces>
</Ifmgr>
</top>
</filter>
</get-config>
</rpc>
【使用指導】
獲取當前係統中所有NETCONF會話的信息(不能指定sessions-ID)。
【XML格式樣例】
獲取當前係統中所有NETCONF會話的信息:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-sessions/>
</rpc>
【使用指導】
關閉其他NETCONF會話。
該操作不支持關閉用戶自己的NETCONF會話。
【XML格式樣例】
關閉session-id為1的NETCONF會話:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<kill-session>
<session-id>1</session-id>
</kill-session>
</rpc>
【使用指導】
加載配置。
執行該操作後,指定配置文件中的配置被合並到當前運行配置中。
【XML格式樣例】
將文件a1.cfg中的配置合並到設備的當前配置中:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<load>
<file>a1.cfg</file>
</load>
</rpc>
【使用指導】
NETCONF加鎖操作將鎖定配置數據,即<edit-config>操作中指定配置數據,其他操作(例如<get>操作)不受鎖的限製。
用戶通過NETCONF加鎖操作鎖定NETCONF連接後,其他用戶既不能使用NETCONF執行下發配置操作,也不能通過CLI等其他配置方式對設備進行配置。
【XML格式樣例】
禁止NETCONF會話修改設備的當前配置,XML請求如下:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<lock>
<target>
<running/>
</target>
</lock>
</rpc>
【使用指導】
回滾配置。
該操作必須使用子元素<file>指定需要回滾的配置文件的名稱。
執行該操作後,當前運行配置回滾為指定配置文件中的配置。
【XML格式樣例】
將設備當前配置回退到文件1A.cfg中配置的狀態:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<rollback>
<file>1A.cfg</file>
</rollback>
</rpc>
【使用指導】
保存運行配置。
該操作可以使用子元素<file>來指定保存的配置文件名稱。當save操作中不存在子元素<file>列時,則設備會自動將當前運行配置保存到主用下次啟動配置文件中。
OverWrite屬性用來判斷當指定的配置文件名存在時,當前配置是否覆蓋原配置文件並保存成功。
Binary-only屬性用來隻保存當前使用的二進製配置文件。
Safely屬性用來以安全模式保存配置文件。
【XML格式樣例】
將設備當前配置保存到文件test.cfg中:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<save OverWrite="false" Binary-only="false">
<file>test.cfg</file>
</save>
</rpc>
【使用指導】
解鎖。
當會話結束時鎖也會被自動釋放。
【XML格式樣例】
取消鎖保護,允許NETCONF會話修改設備的當前配置:
<rpc message-id="100" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<unlock>
<target>
<running/>
</target>
</unlock>
</rpc>
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!