本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本檔案介紹如何在基於Cisco IOS® XE 16.x的平台上設定NETCONF/YANG。
自Cisco IOS® XE 16.3.1軟體起,支援NETCONF/YANG。
註:使用本文檔之前不需要有NETCONF、YANG或Python指令碼編寫方面的經驗。
本文中的資訊係根據以下軟體和硬體版本:
在本例中,運行Cisco IOS XE 16.3.3的獨立WS-C3850-12X48U交換機用作NETCONF伺服器。這是已配置的裝置,透過NETCONF/YANG從該裝置中收集資料(show命令輸出)。
筆記型電腦(執行macOS Sierra 10.12.2和Google Chrome瀏覽器的Apple MacBook Pro)用作NETCONF使用者端。它充當集中管理平台,使用Yang Explorer應用程式。它是建立YANG格式請求的裝置,這些請求透過NETCONF RPC(遠端過程呼叫)消息傳送到Catalyst 3850,以配置和收集來自Catalyst 3850的資料。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
本文檔中的示例重點介紹使用Catalyst 3850進行的實驗室測試,但是,所提供的資訊也適用於其他Cisco IOS XE 16.x平台,例如Cisco ASR 1000系列路由器。
資料模式提供另一種集中方式來設定思科裝置(而不是使用思科指令行介面(CLI)或簡易網路管理通訊協定(SNMP)),以及從思科裝置收集作業資料(show指令)。由於資料模型是基於相同過程的標準,並且還可用於從非思科裝置配置或收集資料,因此非常適合支援多個供應商的客戶。集中管理平台(例如筆記型電腦)可用於配置多個思科裝置或從多個思科裝置收集資料,並且資料模型架構允許透過Python指令碼自動執行這些過程(另外兩項關鍵優勢)。
YANG是基於標準的資料建模語言,用於建立裝置配置請求或運行(show命令)資料請求。它具有類似於人類可讀電腦程式的結構化格式。有數個應用程式可以在集中管理平台(例如筆記型電腦)上執行,以建立這些組態和作業資料要求。
適用於所有供應商的標準(通用)YANG資料模型(例如,對於思科和非思科裝置,停用或關閉乙太網介面的請求可以相同)以及便於配置或收集與專有供應商功能相關的運算元據的裝置(本地、供應商特定)資料模型。
NETCONF是一種基於標準的可擴展標籤語言(XML)編碼的協定,它提供傳輸功能,將YANG格式的配置或運行資料請求從運行在集中管理平台上的應用程式(例如筆記型電腦)傳輸到使用者希望從中配置或請求運行(show command)資料的思科裝置。它提供基於事務的服務,例如當配置請求的一部分失敗時中止整個配置請求。NETCONF使用基於簡單遠端過程呼叫(RPF)的機制,促進客戶端(集中管理平台指令碼或應用程式)與伺服器(Cisco交換機或路由器)之間的通訊。它使用安全外殼(SSH)作為跨網路裝置的傳輸層。一些NETCONF操作包括get、get-config、edit-config和rpc。
3850-1# show running-config
netconf-yang -------------------------------------> Enable NETCONF/YANG globally. It may take up to 90 seconds to initialize
username cisco1 privilege 15 password 0 cisco1 ---> Username/password used for NETCONF-SSH access
注意:這是在Catalyst 3850上支援NETCONF/YANG資料建模所需的完整配置,但是它假定沒有全局配置aaa新模型(預設值)。如果需要透過配置aaa new-model啟用AAA(身份驗證、授權和記帳),則至少還需要此配置。您也可以將其擴展為對TACACS+或RADIUS配置使用AAA,但這超出了此示例的範圍。
aaa new-model
aaa authorization exec default local -------------> Required for NETCONF-SSH connectivity and edit-config operations
必須存在這些snmp-server配置,才能為Syslog消息和任何配置的SNMP陷阱生成NETCONF通知(RFC 5277 - Tools 5277),從而也生成NETCONF通知。
注意:雖然這是最低要求,但也可能出現額外的snmp-server enable條目。客戶端(集中管理平台)註冊以從伺服器(Catalyst 3850)接收NETCONF通知流並傳送特定訂用RPC(請參閱配置集中管理平台(筆記型電腦)的第3部分)。
3850-1# show running-config
snmp-server community <string> RW ------------------------------> SNMP gateway in DMI requires community public prior to 16.5.1. A configurable community is supported on 16.5.1 and later.
netconf-yang cisco-ia snmp-community-string <string> -----------> Configure the same community string to enable SNMP MIB access for both NETCONF and RESTCONF.
snmp-server trap link ietf -------------------------------------> enable traps for IETF link up/down
snmp-server enable traps snmp authentication linkdown linkup ---> enable traps for link up/down
snmp-server enable traps syslog --------------------------------> enable traps for Syslog so notifications can be generated
snmp-server manager --------------------------------------------> enable snmp-server
對於Syslog,當Catalyst 3850上的Ciscod生成Syslog消息時,必須存在此配置,Catalyst 3850上的資料模型介面(DMI)才能生成RFC 5277中定義的NETCONF通知。
logging history debugging -------> required for the generation of any NETCONF notification messages for Syslog
logging snmp-trap emergencies ---> configure 1 or more of the following to control which levels of Syslog messages are returned as notifications
logging snmp-trap alerts
logging snmp-trap critical
logging snmp-trap errors
logging snmp-trap warnings
logging snmp-trap notifications
logging snmp-trap informational
logging snmp-trap debugging
對於SNMP陷阱,生成NETCONF通知需要此配置。在Cisco XE 16.3.1軟體中,最多可以設定10個SNMP陷阱來產生NETCONF通知,但此限制可在未來的版本中移除。預設情況下,SNMP陷阱的通知生成處於啟用狀態。要停用生成SNMP陷阱通知,請使用此CLI,no netconf-yang cisco-ia snmp-trap-control global-forwarding。
netconf-yang cisco-ia snmp-trap-control trap-list 10.3.6.1.6.3.1.1.5.3 --------> LinkDown trap
netconf-yang cisco-ia snmp-trap-control trap-list 10.3.6.1.6.3.1.1.5.4 --------> LinkUp trap
netconf-yang cisco-ia snmp-trap-control trap-list 10.3.6.1.4.1.9.9.41.2.0.1 ---> Syslog generated notification trap
在本例中,Catalyst 3850管理介面GigabitEthernet0/0用於連線到網路和集中管理平台(可以使用筆記型電腦)。動態主機配置協定(DHCP)已用於將IP地址172.16.167.175分配給此介面。只要筆記型電腦可以到達網路上的Catalyst 3850,備用配置就可以在Catalyst 3850上使用。
3850-1# show running-config
vrf definition Mgmt-vrf
!
address-family ipv4
exit-address-family
!
address-family ipv6
exit-address-family
interface GigabitEthernet0/0
vrf forwarding Mgmt-vrf
ip address dhcp
negotiation auto
ip route vrf Mgmt-vrf 0.0.0.0 0.0.0.0 172.16.167.161
3850-1# show ip interface brief
Interface IP-Address OK? Method Status Protocol
Vlan1 10.1.1.1 YES NVRAM up up
Vlan10 10.10.10.1 YES NVRAM up up
Vlan20 10.20.20.1 YES NVRAM up up
GigabitEthernet0/0 172.16.167.175 YES DHCP up up
Fo1/1/1 unassigned YES unset down down
Fo1/1/2 unassigned YES unset down down
GigabitEthernet1/0/1 unassigned YES manual up up
GigabitEthernet1/0/2 unassigned YES unset up up
GigabitEthernet1/0/3 unassigned YES unset down down
GigabitEthernet1/0/4 unassigned YES unset down down
GigabitEthernet1/0/5 unassigned YES unset down down
1. 從Catalyst 3850的命令列介面(CLI),此命令可用於確保在配置netconf-yang後運行Catalyst 3850上支援資料模型介面(DMI)所需的軟體進程。
3850-1# show platform software yang-management process
confd : Running
nesd : Running
syncfd : Running
ncsshd : Running
dmiauthd : Running
vtyserverutild : Running
opdatamgrd : Running
ngnix : Running
接下來的步驟是從集中管理平台執行的。在本例中,使用的筆記型電腦(運行macOS Sierra 10.12.2的Apple MacBook Pro)可以訪問Catalyst 3850網路。這些命令是從筆記型電腦上的終端提示符發出的。目前筆記型電腦上並未載入任何特殊應用程式。
2. 確保集中管理平台(筆記型電腦)可以訪問網路上的Catalyst 3850 (172.16.167.175)。
USER1-M-902T:~ USER1$ ping 172.16.167.175
PING 172.16.167.175 (172.16.167.175): 56 data bytes
64 bytes from 172.16.167.175: icmp_seq=0 ttl=247 time=3.912 ms
64 bytes from 172.16.167.175: icmp_seq=1 ttl=247 time=6.917 ms
64 bytes from 172.16.167.175: icmp_seq=2 ttl=247 time=4.063 ms
64 bytes from 172.16.167.175: icmp_seq=3 ttl=247 time=4.371 ms
^C
3. 使用此Catalyst 3850配置中的使用者名稱和口令(cisco1/cisco1),驗證從集中管理平台(筆記型電腦)到Catalyst 3850(本示例中為172.16.167.175)的SSH連線。響應可以是Catalyst 3850的NETCONF功能的長清單,後跟Hello消息。TCP埠830 = netconf-ssh。
提示:如果此SSH測試不起作用,請確保筆記型電腦和Catalyst 3850之間的任何防火牆都允許TCP埠830(請參閱RFC 4742:工具4742)。
USER1-M-902T:~ USER1$ ssh -s cisco1@172.16.167.175 -p 830 netconf
cisco1@172.16.167.175’s password: cisco1
<?xml version="1.0" encoding="UTF-8"?>
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>urn:ietf:params:netconf:base:1.0</capability>
<capability>urn:ietf:params:netconf:base:1.1</capability>
<capability>urn:ietf:params:netconf:capability:writable-running:1.0</capability>
<capability>urn:ietf:params:netconf:capability:xpath:1.0</capability>
<capability>urn:ietf:params:netconf:capability:validate:1.0</capability>
<capability>urn:ietf:params:netconf:capability:validate:1.1</capability>
<capability>urn:ietf:params:netconf:capability:rollback-on-error:1.0</capability
--snip--
</capabilities>
<session-id>2870</session-id></ hello>]]>]]>
Use < ^C > to exit
在本例中,Yang Explorer應用用於筆記型電腦(運行macOS Sierra 10.12.2的Apple MacBook Pro和Google Chrome瀏覽器)作為集中管理平台。Yang Explorer允許使用者執行以下操作:
· 從使用者介面或命令列上傳/編譯YANG資料模型
· 建置NETCONF RPC (遠端程式呼叫)
· 針對真實的NETCONF伺服器(Catalyst 3850)執行RPC
· 將建立的RPC儲存到集合以供以後使用
· 瀏覽資料模型樹並檢查YANG屬性
註:Linux系統也支援YANG Explore應用程式。
啟動Yang Explorer應用程式-在筆記型電腦上的終端提示符下,從yang-explorer目錄運行./start.sh和命令。
注意:保持此終端會話處於打開狀態,否則Yang Explorer應用程式會關閉並且必須重新啟動。它還可以用作應用程式活動的控制檯日誌。
USER1-M-902T:~ USER1$ cd yang-explorer
USER1-M-902T:yang-explorer USER1$ ./start.sh &
Starting YangExplorer server ..
Use http://localhost:8088/static/YangExplorer.html
Performing system checks...
System check identified no issues (0 silenced).
January 19, 2017 - 23:12:20
Django version 1.8.3, using settings 'server.settings'
Starting development server at http://localhost:8088/
Quit the server with CONTROL-C.
啟動Yang Explorer GUI -啟動Yang Explorer應用程式GUI,並作為訪客/訪客登入到應用程式GUI主選單右上角的Yang Explorer應用程式GUI(請參閱螢幕截圖)。
從Catalyst 3850檢索功能。輸入Catalyst 3850的詳細資訊(IP地址、使用者名稱/口令、TCP埠830 for ssh-netconf),然後按一下Capabilities以從Catalyst 3850軟體檢索YANG操作功能清單。
提示:此測試還可用於確認NETCONF在集中管理平台(筆記型電腦)上的Yang Explorer應用程式與Catalyst 3850之間的通訊是否有效。
載入Yang資料模型-可在「管理模型」下訂閱各種YANG資料模型。訂閱後,它們會顯示在左邊的「總管」方塊中。這些YANG模型允許Yang Explorer應用程式建立YANG格式的NETCONF遠端過程呼叫(RPC)消息(傳送到Catalyst 3850以對其進行配置或從中檢索資料),而無需具備深入的YANG專業知識。下一節「基本NETCONF/YANG操作」中將介紹如何執行此操作
範例:
客戶端(集中管理平台)透過傳送此YANG格式的NETCONF RPC消息來註冊以從伺服器(Catalyst 3850)接收NETCONF通知流。Catalyst 3850會以非同步方式將NETCONF通知傳送到訂閱的每個使用者端。完成此任務之前,請確保Catalyst 3850上的正確配置已到位,以支援NETCONF通知(請參閱第2部分)(在Catalyst 3850上配置NETCONF/YANG)。當系統中發生事件時,NETCONF伺服器(Catalyst 3850)開始將事件通知傳送到NETCONF使用者端(集中管理平台)。這些事件通知可以繼續傳送,直到NETCONF會話終止或訂閱因其他原因終止為止。有關訂閱選項工具5277的詳細資訊,請參閱RFC 5277。
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">
<create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<stream>snmpevents</stream>
</create-subscription>
</rpc>
要執行此操作,您需要將其剪下並貼上到Yang Explorer應用程式GUI中作為自定義RPC。
接下來,選擇運行以透過NETCONF將自定義RPC消息傳送到Catalyst 3850。Catalyst 3850會以ok訊息回覆,讓使用者知道作業已成功。
注意:本示例中使用的Yang Explorer的當前版本沒有檢視已接收的NETCONF通知的選項。它們通常儲存在應用程式主選單的可點選通知日誌中。
現在,Catalyst 3850和集中管理平台已配置並開始通訊,讓我們看一些基本操作示例。
這些範例可示範從Centralized Management Platform (Laptop) Yang Explorer應用程式透過NETCONF傳送到Catalyst 3850的YANG格式化NETCONF RPC訊息,已透過Catalyst 3850上的confd軟體程式轉換成標準的Cisco IOS CLI。此外,Cisco IOS CLI資料(show command data)在Catalyst 3850上透過confd軟體進程轉換為YANG格式的資料,然後再作為NETCONF RPC消息傳送到集中管理平台(筆記型電腦) Yang Explorer應用程式。這意味著除使用NETCONF/YANG配置交換機並收集show命令資料外,在Catalyst 3850上仍可使用常規CLI來配置交換機。
所需操作可從Yang Explorer應用程式GUI的左側Explorer部分中選擇。在這種情況下,介面名稱資料會從Catalyst 3850中擷取,因此在「interface name」下拉式清單中選取了Oper(針對操作)然後選取get-config。下一步選擇RPC,以生成需要透過NETCONF傳送到Catalyst 3850以從Catalyst 3850檢索此資料的YANG格式的(人類可讀) NETCONF RPC。
生成YANG格式化的NETCONF RPC消息後,選擇Run將其傳送到Catalyst 3850。Catalyst 3850會使用YANG格式的Catalyst 3850介面名稱(GigabitEthernet1/1/1、GigabitEthernet1/1/2等)清單(人類可讀取)進行回覆。
所需的操作從Yang Explorer應用程式GUI的Explorer部分的左側選擇。在這種情況下,要在Catalyst 3850上配置介面(關閉介面),需要選擇Config(用於配置),然後是介面下拉選單下所需的操作引數。下一步選擇RPC,以生成需要透過NETCONF傳送到Catalyst 3850以執行配置任務的YANG格式的(人類可讀)NETCONF RPC。
生成YANG格式化的NETCONF RPC消息後,選擇Run將其傳送到Catalyst 3850。Catalyst 3850會以YANG格式(人類可讀取)的訊息回覆,指出組態作業成功(ok)。
為了確認更改是否發生,可以檢查配置。Catalyst 3850可能會使用get-config作業(Oper),回覆成介面GigabitEthernet 1/0/16組態現在已啟用= false,這表示介面已關閉。
提示:通常,當不清楚在Yang Explorer應用程式的Explorer部分中的值可以採用什麼格式時,如圖所示,轉儲YANG格式的Catalyst 3850配置是在嘗試修改它們之前確定它們的好方法。接下來的熒幕右邊會在「屬性」和「值」欄中提供這些值的描述和相依性。
生成YANG格式化的NETCONF RPC消息後,選擇Run將其傳送到Catalyst 3850。Catalyst 3850以YANG格式的消息作為回覆,該消息表明介面GigabitEthernet 1/0/16配置現在已啟用= false,這意味著該介面已關閉。
在上次Yang Explorer配置更改操作時,該命令是從Catalyst 3850的CLI中輸出的。在收到NETCONF RPC消息之前,GigabitEthernet 1/0/16介面處於預設的no shutdown狀態,如Catalyst 3850上的日誌消息中所示。收到包含關閉介面的YANG格式化請求的NETCONF RPC消息後,操作完成,介面關閉,並且運行配置被修改以反映這一點。此部分還演示了Catalyst 3850上的confd軟體進程如何將收到的YANG格式的NETCONF RPC消息轉換為標準Cisco IOS CLI。這意味著使用者除了使用NETCONF/YANG來修改配置和執行顯示命令外,還可以使用常規Cisco IOS CLI來修改配置。
3850-1# show running-config interface gigabitEthernet 1/0/16
Building configuration...
Current configuration : 39 bytes
!
interface GigabitEthernet1/0/16
end
3850-1# show startup-config | begin 1/0/16
interface GigabitEthernet1/0/16
!
*Jan 5 17:05:55.345: %DMI-5-CONFIG_I:Switch 1 R0/0: nesd: Configured from NETCONF/RESTCONF by cisco1, transaction-id 31332
*Jan 5 17:05:57.335: %LINK-5-CHANGED: Interface GigabitEthernet1/0/16, changed state to administratively down
3850-1# show running-config interface gigabitEthernet 1/0/16
Building configuration...
Current configuration : 49 bytes
!
interface GigabitEthernet1/0/16
shutdown -------------------------> the interface is shutdown now
end
3850-1#
注意:組態尚未儲存(從執行組態複製到啟動組態)在Catalyst 3850上。
3850-1# show startup-config | begin 1/0/16
interface GigabitEthernet1/0/16
!
運行配置可以儲存到Catalyst 3850上的啟動配置中,方法是透過NETCONF將此YANG格式的NETCONF RPC消息傳送到Catalyst 3850。
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">
<cisco-ia:save-config xmlns:cisco-ia="cisco/yang/cisco-ia"
</rpc>
當您將其剪下並貼上到Yang Explorer應用程式作為自定義RPC時,即可完成此操作。
選擇Run以透過NETCONF將自定義RPC消息傳送到Catalyst 3850。Catalyst 3850以成功訊息回覆。
啟動配置現在與運行配置相匹配:
3850-1# show running-config interface gigabitEthernet 1/0/16
Building configuration...
Current configuration : 49 bytes
!
interface GigabitEthernet1/0/16
shutdown
end
3850-1# show startup-config | begin 1/0/16
interface GigabitEthernet1/0/16
shutdown
!
如前所述,除使用NETCONF/YANG進行配置和收集show命令資料外,常規Catalyst 3850 CLI仍可用於配置交換機。使用Catalyst 3850 CLI而不是NETCONF/YANG來設定交換器時,新的running-config會透過syncfd軟體程式與Catalyst 3850上的資料模型介面(DMI)同步。
3850-1# show running-config interface gigabitEthernet 1/0/16
Building configuration...
Current configuration : 49 bytes
!
interface GigabitEthernet1/0/16
shutdown
end
3850-1# config t
Enter configuration commands, one per line. End with CNTL/Z.
3850-1(config)# interface gigabitEthernet 1/0/16
3850-1(config-if)#no shutdown
3850-1(config-if)# exit
3850-1(config)# exit
3850-1#
*Jan 24 16:39:09.968: %LINK-3-UPDOWN: Interface GigabitEthernet1/0/16, changed state to down
*Jan 24 16:39:13.479: %SYS-5-CONFIG_I: Configured from console by console
*Jan 24 16:39:15.208: %DMI-5-SYNC_START:Switch 1 R0/0: syncfd: External change to running configuration detected. The running configuration can be synchronized to the DMI data store.
*Jan 24 16:39:43.290: %DMI-5-SYNC_COMPLETE:Switch 1 R0/0: syncfd: The running configuration has been synchronized to the DMI data store.
3850-1#
下次在CLI更改後,Yang Explorer應用程式請求介面配置副本時,更改會正確反映在YANG輸出中。
選擇Run以透過NETCONF將GigabitEthernet1/0/16的RPC get-config消息傳送到Catalyst 3850。Catalyst 3850會使用GigabitEthernet1/0/16介面組態回覆,顯示enabled = true。
使用者無法配置可與NETCONF GET操作一起返回的SNMP MIB資料。所有支援的SNMP MIB若轉換成由YANG資料模型定義的結構化資料,均屬於Catalyst 3850上的Cisco XE軟體。要瞭解GET請求中有哪些MIB資料可用,可列出三個選項。所有支援的MIB都可以在功能回應中包含smiv2。
選項 1. 在Yang Explorer應用程式GUI中可以選擇Capabilities按鈕。Catalyst 3850會回覆其包含smiv2 MIB條目的功能清單。
選項 2. 此YANG格式的NETCONF RPC消息可以透過NETCONF傳送到Catalyst 3850,以便檢索包括可用smiv2 MIB模型的功能清單。
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">
<get>
<filter type="subtree">
<ncm:netconf-state xmlns:ncm="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
<ncm:capabilities/>
</ncm:netconf-state>
</filter>
</get>
</rpc>
當您將Yang Explorer應用程式剪下並貼上為自訂RPC時,即可完成此操作。
選擇Run以透過NETCONF將自定義RPC消息傳送到Catalyst 3850。Catalyst 3850會回覆包含所支援smiv2 MIB的功能清單。
選項3:可用MIB型號的清單可在Catalyst 3850為響應來自集中管理平台(筆記型電腦)的SSH連線而返回的NETCONF功能和Hello消息中檢視。
USER1-M-902T:~ USER1$ ssh -s cisco1@172.16.167.175 -p 830 netconf
cisco1@172.16.167.175’s password: cisco1
<?xml version="1.0" encoding="UTF-8"?>
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>urn:ietf:params:netconf:base:1.0</capability>
<capability>urn:ietf:params:netconf:base:1.1</capability>
<capability>urn:ietf:params:netconf:capability:writable-running:1.0</capability>
<capability>urn:ietf:params:netconf:capability:xpath:1.0</capability>
<capability>urn:ietf:params:netconf:capability:validate:1.0</capability>
<capability>urn:ietf:params:netconf:capability:validate:1.1</capability>
<capability>urn:ietf:params:netconf:capability:rollback-on-error:1.0</capability
--snip--
<capability>urn:ietf:params:xml:ns:yang:smiv2:CISCO-CONFIG-MAN-MIB?module=CISCO-CONFIG-MAN-MIB&revision=2007-04-27</capability>
<capability>urn:ietf:params:xml:ns:yang:smiv2:CISCO-CONTEXT-MAPPING-MIB?module=CISCO-CONTEXT-MAPPING-MIB&revision=2008-11-22</capability>
<capability>urn:ietf:params:xml:ns:yang:smiv2:CISCO-DATA-COLLECTION-MIB?module=CISCO-DATA-COLLECTION-MIB&revision=2002-10-30</capability>
--snip--
</capabilities>
<session-id>2870</session-id></ hello >]]>]]>
Use < ^C > to exit
此連結包含其他YANG資料模型檔案。這些檔案允許透過NETCONF/YANG執行與其他Catalyst 3850功能相關的其他操作,例如配置IPv4單播路由、QoS等。
透過選擇standard、ietf、rfc,可以找到適用於所有供應商的標準(通用、網際網路工程任務組(IETF)模型。這提供了基於IETF標準機構從RFC出版物中提取的YANG資料模型。
透過選擇vendor, cisco, xe, 1632可以找到思科本地(裝置、供應商特定)型號。這為Catalyst 3850的Cisco IOS XE軟體版本16.3.2提供專有YANG資料模型。
這些檔案可以下載到集中管理平台(筆記型電腦),然後載入到Yang Explorer應用程式。有兩種方法可以做到這一點。第一種是在各種YANG資料模型檔案中個別載入,第二種是大量載入所有檔案。
提示:從Github下載檔案可能需要rawgit。要從github下載檔案,請選擇與YANG檔案關聯的Raw按鈕。如果提供URL而不是檔案下載選項,則可以將URL貼上到rawgit中,然後由其提供生產URL。將此新的生產URL貼到瀏覽器中,它可提供檔案下載選項。
在本例中,cisco-ethernet.yang已經從github下載到集中管理平台(筆記型電腦)。以下步驟可將檔案載入到Yang Explorer應用程式GUI中,然後選擇預訂,以便將其載入到工具的Explorer部分。
提示:NETCONF功能可用於確定Catalyst 3850軟體支援哪些資料模型。請參閱設定集中管理平台(膝上型電腦)的第2節。
第5.2.2節(此處:github)中也提到了這一過程。
在集中管理平台(筆記型電腦-運行macOS Sierra 10.12.2的Apple MacBook Pro)上的終端提示符處:
USER1-M-902T:~ USER1$ cd yang-explorer
USER1-M-902T:yang-explorer USER1$ cd server
USER1-M-902T:server USER1$ python manage.py bulkupload --user guest --git https://github.com/YangModels/yang.git --dir vendor/cisco/xe/1632
Git upload ..
Cloning into '/Users/USER1/yang-explorer/server/data/session/tmpk7V4O6'...
remote: Counting objects: 5610, done.
remote: Total 5610 (delta 0), reused 0 (delta 0), pack-reused 5610
Receiving objects: 100% (5610/5610), 11.80 MiB | 2.34 MiB/s, done.
Resolving deltas: 100% (3159/3159), done.
Checking out files: 100% (3529/3529), done.
Cleaning up /Users/USER1/yang-explorer/server/data/session/tmpk7V4O6
Compiling : user: guest, file: /Users/USER1/yang-explorer/server/data/session/tmpHTAEP3/cisco-acl-oper.yang
DEBUG:root:Compiling session dependency ...
//anaconda/bin/pyang
DEBUG:root:Rebuilding dependencies for user guest
--snip--
所有Yang資料模型現在都可在Yang Explorer應用程式GUI中看到。按一下Subscribe即可選擇與所關注功能相關的檔案,然後將其增加到工具的Explorer部分。
提示:NETCONF功能可用於確定Catalyst軟體支援哪些資料模型。請參閱設定集中管理平台(膝上型電腦)的第2節。
其他任務現在可以完成,例如生成在Catalyst 3850上儲存配置所需的NETCONF/YANG RPC。當您在Yang Explorer應用程式左側的Explorer部分中選擇save-conf RPC時,即可完成此操作。然後,選擇RPC以生成YANG格式化的NETCONF RPC,該RPC可以透過NETCONF傳送到Catalyst 3850以儲存Catalyst 3850上的配置。
Run被選中以透過NETCONF將自定義RPC消息傳送到Catalyst 3850。Catalyst 3850以成功訊息回覆。
以下是cisco-ia.yang資料模型的一些RPC示例。值得注意的是,它們牽涉到如下作業:儲存Catalyst 3850組態、將Catalyst 3850執行組態同步到本機資料模型介面(DMI)資料儲存,以及重設Catalyst 3850上的DMI介面。
第一步是訂閱cisco-ia.yang資料模型,以便其顯示在YANG Explorer應用程式GUI左側的Explorer部分中。
在YANG Explorer應用GUI左側的Explorer部分中展開cisco-ia資料模型後,即可看到各種操作選項。例如,要使用其中一個可用的cisco-ia.yang資料模型選項,將會選擇save-config操作,並且會在您選擇RPC按鈕時生成關聯的RPC。
接下來,選擇運行以透過NETCONF將RPC消息傳送到Catalyst 3850。Catalyst 3850會回覆成功訊息,讓使用者知道作業已成功。
所有各種cisco-ia.yang資料模型操作都如下所述:
sync-from -此RPC使Catalyst 3850上的NETCONF介面將裝置運行配置的NETCONF資料儲存表示與裝置上的運行配置同步。兩者都存在於Catalyst 3850本身上。
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">
<cisco-ia:sync-from xmlns:cisco-ia
</rpc>
此RPC的預設行為是執行不帶預設設定的同步,這將導致傳送到裝置的show running-config命令的輸出與NETCONF資料儲存同步。如果存在sync-defaults ,則NETCONF介面還會讀取功能代碼提供的預設配置資訊。在大多數情況下,不使用此選項。通常,只有在NETCONF介面使用者希望使用NETCONF replace命令替換裝置配置的全部部分時,才使用該命令。
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">
<cisco-ia:sync-from xmlns:cisco-ia/>
<cisco-ia:sync-defaults/>
</cisco-ia:sync-from>
</rpc>
save-config -此RPC執行寫入記憶體(copy running-config startup-config)命令,以將當前裝置運行配置儲存到裝置啟動配置。
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">
<cisco-ia:save-config xmlns:cisco-ia
</rpc>
檢查點-此RPC使NETCONF介面使用Cisco IOSd內建配置存檔功能將運行配置儲存到非易失性儲存。
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">
<cisco-ia:checkpoint xmlns:cisco-ia
</rpc>
回滾-此RPC導致NETCONF介面將裝置的運行配置回滾到與檢查點RPC一起儲存的運行配置或裝置上儲存的任何其他有效運行配置。
target-url string (name of the saved checkpoint file)
verbose? Boolean (show detail during rollback process)
nolock? Boolean (lock configuration)
revert-on-error? Empty (if error occurs during rollback, leave running unchanged)
revert-timer? int16 (time in seconds before revets to the original configuration)
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">
<cisco-ia:rollback xmlns:cisco-ia=
<cisco-ia:target-url>saved-config</cisco-ia:target-url>
<cisco-ia:verbose>true</cisco-ia:verbose>
<cisco-ia:nolock>true</cisco-ia:nolock>
<cisco-ia:revert-on-error></cisco-ia:revert-on-error>
<cisco-ia:revert-timer>10</cisco-ia:revert-timer>
</cisco-ia:rollback>
</rpc>
還原-此RPC會使NETCONF介面從倒回RPC變更還原計時器。這將取消定時回滾並立即觸發回滾,或者重置定時回滾的引數。
now? empty
timer? int16
idle? int16
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">
<cisco-ia:revert xmlns:cisco-ia
<cisco-ia:now/>
<cisco-ia:timer>10</cisco-ia:timer>
<cisco-ia:idle>60</cisco-ia:idle>
</cisco-ia:revert>
</rpc>
重置-可以使用此RPC重新啟動NETCONF介面。如果reinitialize為true ,則NETCONF介面將清除可寫運行的資料儲存中存在的所有狀態資訊。如果為false(預設值),則會保留NETCONF配置datastore狀態資訊。
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="">
<cisco-ia:reset xmlns:cisco-ia
<cisco-ia:reinitialize>true</cisco-ia:reinitialize>
</cisco-ia:reset>
</rpc>
注意:某些Cisco平台或Cisco IOS軟體版本目前無法支援所有給定功能。例如,將上一次重置傳送到運行IOS 16.3.3的Catalyst 3850時,Catalyst 3850會將「不支援重置」錯誤作為RPC應答返回給集中管理平台(筆記型電腦)。
<nc:rpc-error xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
<nc:error-type>application</nc:error-type>
<nc:error-tag>operation-failed</nc:error-tag>
<nc:error-severity>error</nc:error-severity>
<nc:error-path xmlns:cisco-ia
<nc:error-message lang="en" xmlns="https://www.w3.org/XML/1998/namespace">Reset not supported</nc:error-message>
<nc:error-info>
<nc:bad-element>reset</nc:bad-element>
</nc:error-info>
</nc:rpc-error>
就思科裝置(Catalyst 3850)配置而言,網元驅動程式(NED)資料模型(如ned.yang)提供的最大功率。以下是一些演示此過程的螢幕截圖。
第一步是訂閱ned.yang資料模型,以便其顯示在YANG Explorer應用程式GUI左側的「瀏覽器」部分中。
在YANG Explorer應用程式左側Explorer區段中捲動可用選項時,GUI會在ned.yang資料模型中顯示一個長長的可設定Catalyst 3850功能清單。
例如,這些螢幕截圖演示了在首先向下滾動YANG Explorer應用程式GUI左側Explorer部分中可用ned.yang資料模型配置選項清單後,如何顯示Catalyst 3850的OSPF路由配置。ospf子選項位於router選項內部。當您選擇RPC按鈕時,將生成關聯的get-config RPC。
接下來,選擇運行以透過NETCONF將RPC消息傳送到Catalyst 3850。Catalyst 3850以其OSPF路由配置作出回覆。
以下是Catalyst 3850為響應get-config RPC操作而返回的OSPF路由配置的擴展。
<rpc-reply message-id="urn:uuid:0e2c04cf-9119-4e6a-8c05-238ee7f25208" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
<native xmlns>
<router>
<ospf>
<id>100</id>
<redistribute>
<connected>
<redist-options>
<subnets/>
</redist-options>
</connected>
</redistribute>
<network>
<ip>10.10.0.0</ip>
<mask>0.0.255.255</mask>
<area>0</area>
</network>
<network>
<ip>10.20.0.0</ip>
<mask>0.0.255.255</mask>
<area>0</area>
</network>
<network>
<ip>10.100.0.0</ip>
<mask>0.0.255.255</mask>
<area>0</area>
</network>
</ospf>
</router>
</native>
</data>
</rpc-reply>
透過NETCONF從Catalyst 3850檢索的YANG格式的OSPF路由配置是人類可讀的,它匹配透過Catalyst 3850的CLI檢視Catalyst 3850配置時看到的內容。
3850-1# show running-config | section ospf
router ospf 100
redistribute connected subnets
network 10.10.0.0 0.0.255.255 area 0
network 10.20.0.0 0.0.255.255 area 0
network 10.100.0.0 0.0.255.255 area 0
3850-1#
如果需要,ned.yang資料模型也可用於修改OSPF路由配置。在本示例中,新網路引數將增加到Catalyst 3850上的現有OSPF路由配置中,方法是:首先在左側的Yang Explorer應用程式GUI的Explorer部分輸入所需的引數(也輸入了OSPF路由器ID 100,但由於瀏覽器螢幕滾動而無法看到),然後生成相關的YANG格式的RPC並點選RPC按鈕。
接下來,選擇運行以透過NETCONF將RPC消息傳送到Catalyst 3850。Catalyst 3850會以ok訊息回覆,讓使用者知道作業已成功。
透過ned.yang資料模型修改OSPF路由配置的此NETCONF/YANG RPC操作反映在Catalyst 3850配置中,透過Catalyst 3850的CLI可以看到該配置。Catalyst 3850上也有一條系統日誌訊息,指出已透過NETCONF進行組態變更。
3850-1#
*Jan 30 14:13:41.659: %DMI-5-CONFIG_I:Switch 1 R0/0: nesd: Configured from NETCONF/RESTCONF by cisco1, transaction-id 23143
3850-1# show running-config | section ospf
router ospf 100
redistribute connected subnets
network 10.10.0.0 0.0.255.255 area 0
network 10.20.0.0 0.0.255.255 area 0
network 10.30.0.0 0.0.255.255 area 0 ------> new line added to OSPF configuration
network 10.100.0.0 0.0.255.255 area 0
3850-1#
有關如何透過NETCONF/YANG將running-config儲存到Catalyst 3850上的啟動配置的詳細資訊,請參閱上一節cisco-ia.yang資料模型中提到的儲存配置操作。
Yang Explore應用程式GUI也可用於為指定的NETCONF/YANG作業產生Python指令碼。Python指令碼編寫的一個主要好處是它允許協調和自動化NETCONF/YANG操作。
在此範例中,在集中管理平台(膝上型電腦)上Yang Explorer應用程式GUI左側的Explorer視窗中選取儲存組態作業。接下來,選擇Script按鈕以生成Python指令碼。然後,可以選擇複製按鈕複製指令碼,以便將其貼上到可儲存在中央管理平台(筆記型電腦)上、副檔名為Python .py的檔案中。在本示例中,(未顯示)此檔名為example.py。
注意:在下一個示例中,在GUI中使用Platform type other時,運行Python指令碼時出錯。因此,「平台型別已變更為csr,因為Cisco CSR路由器也像Catalyst 3850一樣執行Cisco IOS XE軟體。這樣避免了錯誤。
下面是對Python指令碼的擴展,該指令碼在集中管理平台(筆記型電腦)上生成,然後複製並貼上到名為example.py的檔案中。
注意:由Yang Explorer應用程式GUI生成的example.py檔案開頭的註釋包括運行Python指令碼所需的步驟。負載包括指令碼可以執行的NETCONF/YANG操作。在此範例中,這是儲存組態作業。
"""
Netconf python example by yang-explorer (https://github.com/CiscoDevNet/yang-explorer)
Installing python dependencies:
> pip install lxml ncclient
Running script: (save as example.py)
> python example.py -a 172.16.167.174 -u cisco1 -p cisco1 --port 830
"""
import lxml.etree as ET
from argparse import ArgumentParser
from ncclient import manager
from ncclient.operations import RPCError
payload = """ <save-config xmlns
"""
if __name__ == '__main__':
parser = ArgumentParser(description='Usage:')
# script arguments
parser.add_argument('-a', '--host', type=str, required=True,
help="Device IP address or Hostname")
parser.add_argument('-u', '--username', type=str, required=True,
help="Device Username (netconf agent username)")
parser.add_argument('-p', '--password', type=str, required=True,
help="Device Password (netconf agent password)")
parser.add_argument('--port', type=int, default=830,
help="Netconf agent port")
args = parser.parse_args()
# connect to netconf agent
with manager.connect(host=args.host,
port=args.port,
username=args.username,
password=args.password,
timeout=90,
hostkey_verify=False,
device_params={'name': 'csr'}) as m:
# execute netconf operation
try:
response = m.dispatch(ET.fromstring(payload)).xml
data = ET.fromstring(response)
except RPCError as e:
data = e._raw
# beautify output
print(ET.tostring(data, pretty_print=True))
以下是運行Python指令碼example.py之前的Catalyst 3850 CLI檢查,該指令碼可將運行配置儲存到啟動配置。此時,shutdown命令位於running-config,但不位於GigabitEthernet1/0/10介面的啟動配置中。
3850-1# show running-config interface gigabitEthernet 1/0/10
Building configuration...
Current configuration : 49 bytes
!
interface GigabitEthernet1/0/10
shutdown
end
3850-1# show startup-config | begin 1/0/10
interface GigabitEthernet1/0/10
!
interface GigabitEthernet1/0/11
!
interface GigabitEthernet1/0/12
!
interface GigabitEthernet1/0/13
!
在集中管理平台(筆記型電腦)上的常規終端提示符處,由Yang Explorer應用程式GUI生成的Python檔案example.py首先被複製到筆記型電腦上的yang-explore目錄。
USER1-M-902T:~ USER1$ pwd
/Users/USER1
USER1-M-902T:~ USER1$ cp /Users/USER1/Desktop/example.py /Users/USER1/yang-explorer
USER1-M-902T:~ USER1$ cd yang-explorer
USER1-M-902T:yang-explorer USER1$ ls -l
total 112
-rw-r--r-- 1 USER1 staff 11358 Jan 4 17:59 LICENSE
-rw-r--r-- 1 USER1 staff 13635 Jan 4 17:59 README.md
drwxr-xr-x 12 USER1 staff 408 Jan 4 17:59 YangExplorer
drwxr-xr-x 7 USER1 staff 238 Jan 4 17:59 default-models
drwxr-xr-x 3 USER1 staff 102 Jan 4 17:59 docs
-rw-r--r-- 1 USER1 staff 72 Jan 4 17:59 env.sh
-rw-r--r--@ 1 USER1 staff 1990 Jan 30 17:50 example.py
-rw-r--r-- 1 USER1 staff 207 Jan 4 17:59 requirements.txt
drwxr-xr-x 11 USER1 staff 374 Jan 5 14:37 server
-rwxr-xr-x 1 USER1 staff 4038 Jan 4 17:59 setup.sh
-rwxr-xr-x 1 USER1 staff 640 Jan 4 17:59 start.sh
drwxr-xr-x 5 USER1 staff 170 Jan 4 18:00 v
USER1-M-902T:yang-explorer USER1$
接下來,從集中管理平台(laptop)上的常規終端提示中,執行這兩個命令,這兩個命令在yang Explorer應用程式GUI生成的example.py檔案開頭的comment部分中提供(請參閱上一節「從Yang Explorer應用程式GUI生成Python指令碼」)。
USER1-M-902T:yang-explorer USER1$ pip install lxml ncclient
Collecting lxml
Downloading lxml-3.7.2.tar.gz (3.8MB)
100% |████████████████████████████████| 3.8MB 328kB/s
Collecting ncclient
Downloading ncclient-0.5.3.tar.gz (63kB)
100% |████████████████████████████████| 71kB 3.5MB/s
Requirement already satisfied: setuptools>0.6 in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (from ncclient)
Collecting paramiko>=1.15.0 (from ncclient)
Downloading paramiko-2.1.1-py2.py3-none-any.whl (172kB)
100% |████████████████████████████████| 174kB 3.1MB/s
Collecting six (from ncclient)
Using cached six-1.10.0-py2.py3-none-any.whl
Collecting cryptography>=1.1 (from paramiko>=1.15.0->ncclient)
Using cached cryptography-1.7.2-cp27-cp27m-macosx_10_6_intel.whl
Collecting pyasn1>=0.1.7 (from paramiko>=1.15.0->ncclient)
Using cached pyasn1-0.1.9-py2.py3-none-any.whl
Collecting cffi>=1.4.1 (from cryptography>=1.1->paramiko>=1.15.0->ncclient)
Using cached cffi-1.9.1-cp27-cp27m-macosx_10_10_intel.whl
Collecting enum34 (from cryptography>=1.1->paramiko>=1.15.0->ncclient)
Using cached enum34-1.1.6-py2-none-any.whl
Collecting ipaddress (from cryptography>=1.1->paramiko>=1.15.0->ncclient)
Using cached ipaddress-1.0.18-py2-none-any.whl
Collecting idna>=2.0 (from cryptography>=1.1->paramiko>=1.15.0->ncclient)
Using cached idna-2.2-py2.py3-none-any.whl
Collecting pycparser (from cffi>=1.4.1->cryptography>=1.1->paramiko>=1.15.0->ncclient)
Downloading pycparser-2.17.tar.gz (231kB)
100% |████████████████████████████████| 235kB 2.6MB/s
Installing collected packages: lxml, six, pycparser, cffi, pyasn1, enum34, ipaddress, idna, cryptography, paramiko, ncclient
Running setup.py install for lxml ... -
done
Running setup.py install for pycparser ... done
Running setup.py install for ncclient ... done
Successfully installed cffi-1.9.1 cryptography-1.7.2 enum34-1.1.6 idna-2.2 ipaddress-1.0.18 lxml-3.7.2 ncclient-0.5.3 paramiko-2.1.1 pyasn1-0.1.9 pycparser-2.17 six-1.10.0
USER1-M-902T:yang-explorer USER1$
第2個命令透過TCP埠830 (netconf-ssh)對位於IP地址172.16.167.174且使用者名稱/口令cisco1/cisco1的Catalyst 3850運行Python指令碼example.py。Catalyst 3850將RPC回覆傳送回儲存配置操作成功的集中管理平台(筆記型電腦)。
USER1-M-902T:yang-explorer USER1$ python example.py -a 172.16.167.174 -u cisco1 -p cisco1 --port 830
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:31e0fdee-b72f-4695-9e03-91ec771b37f5"><result xmlns>Save running-config successful
</result>
</rpc-reply>
USER1-M-902T:yang-explorer USER1
以下是運行Python指令碼example.py後Catalyst 3850 CLI檢查,該指令碼將運行配置儲存到啟動配置。由於save-config NETCONF/YANG操作成功,介面GigabitEthernet1/0/10的running-config和startup-config中現在都存在shutdown命令。
3850-1# show running-config interface gigabitEthernet 1/0/10
Building configuration...
Current configuration : 49 bytes
!
interface GigabitEthernet1/0/10
shutdown
end
3850-1# show startup-config | begin 1/0/10
interface GigabitEthernet1/0/10
shutdown
!
interface GigabitEthernet1/0/11
!
interface GigabitEthernet1/0/12
!
interface GigabitEthernet1/0/13
!
本節提供的資訊可用於對組態進行疑難排解。
NETCONF通訊協定定義了一組作業和訊息,可在NETCONF使用者端(集中管理平台(膝上型電腦))和伺服器裝置上的NETCONF實作(Catalyst 3850)之間交換。常用的NETCONF操作包括:
<get>、<get-config>、<edit-config>和<rpc>
NETCONF消息內容的格式和其他約束由YANG資料模型定義。NETCONF客戶端和伺服器透過傳送RPC進行互動。
如果NETCONF消息的格式存在錯誤,或者消息的內容與裝置實施的YANG資料模型中的定義不匹配,則裝置上的NETCONF伺服器可能會返回RPC錯誤。
<error-type>application</error-type>
這些RPC錯誤不表示NETCONF介面不工作,這些錯誤表明客戶端正在嘗試執行伺服器裝置上實施的YANG資料模型不支援的操作。使用者必須檢視在伺服器裝置上實施的YANG資料模型,以確定並解決這些錯誤的原因。
在此範例中,使用了不正確的介面型別ianift:fastEtherFX來產生YANG格式化的<edit-config> NETCONF RPC訊息,以透過NETCONF傳送至Catalyst 3850。
選擇Run以將RPC消息傳送到Catalyst 3850後,Catalyst 3850將以錯誤消息進行回覆。
以下是Catalyst 3850傳回的錯誤。請注意,它包含錯誤標籤「operation-failed」,並包含與錯誤相關的更多詳細資訊,如「Unsupported - value must be ethernetCsmacd or softwareLoopback」</nc:error-message>。
<nc:rpc-error xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
<nc:error-type>application</nc:error-type>
<nc:error-tag>operation-failed</nc:error-tag>
<nc:error-severity>error</nc:error-severity>
<nc:error-path xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces">/rpc/edit-config/config/if:interfaces/if:interface[if:name='GigabitEthernet1/0/16']/if:type</nc:error-path>
<nc:error-message lang="en" xmlns="https://www.w3.org/XML/1998/namespace">/interfaces/interface[name='GigabitEthernet1/0/16']/type: "Unsupported - value must be ethernetCsmacd or softwareLoopback"</nc:error-message>
<nc:error-info>
<nc:bad-element>type</nc:bad-element>
</nc:error-info>
</nc:rpc-error>
接下來,讓我們修正錯誤並在傳送到Catalyst 3850的RPC訊息中指定正確的介面型別ianift:ethernetCsmacd,以便Catalyst 3850以ok訊息而不是錯誤來回應。
這一次,一旦選擇Run將RPC消息傳送到Catalyst 3850,Catalyst 3850就會使用ok消息作為回覆,表示操作成功。
提示:如果不確定正確的Explorer Values格式為何,可在嘗試更改其引數之前檢視存在的配置。這可以透過get-config操作(Oper)完成,如下所示。
選擇Run以將RPC消息傳送到Catalyst 3850後,Catalyst 3850會使用YANG格式的介面配置進行回覆,該配置顯示介面型別為ianift:ethernetCsmacd。
1. 「使用中」(配置鎖定) RPC錯誤回覆消息
這是對<edit-config>請求的NETCONF錯誤響應。<error-tag>表示「使用中」。回應指出執行資料儲存庫的伺服器裝置(Catalyst 3850) NETCONF目前被鎖定,且此時無法執行NETCONF <edit-config>作業。這並不表示NETCONF介面實作中有錯誤。如果NETCONF客戶端在資料儲存正在使用時嘗試向運行資料儲存的NETCONF寫入資料,則客戶端會收到此RPC響應。NETCONF客戶端可以重試NETCONF編輯配置消息。當裝置執行從裝置同步內部操作以將NETCONF運行資料儲存與裝置IOSd配置同步時,可以收到此響應。
從伺服器(Catalyst 3850)到客戶端(集中管理平台(筆記型電腦))的NETCONF響應。
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="3">
<rpc-error>
<error-type>application</error-type>
<error-tag>in-use</error-tag>
<error-severity>error</error-severity>
<error-app-tag>config-locked</error-app-tag>
<error-info>
<session-id>0</session-id>
</error-info>
</rpc-error>
</rpc-reply>
2. 「資料丟失」RPC錯誤回覆消息
在本示例中,為未配置的環回介面向Catalyst 3850傳送了<edit-config> RPC。由於您無法配置不存在於Catalyst 3850上的介面,因此返回錯誤。
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="3">
<rpc-error>
<error-type>application</error-type>
<error-tag>data-missing</error-tag>
<error-severity>error</error-severity>
<error-path xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces">/rpc/edit-config/config/if:interfaces/if:interface[if:name='Loopback1111']/if:type</error-path>
<error-message xml:lang="en">/interfaces/interface[name='Loopback1111']/type is not configured</error-message>
<error-info>
<bad-element>type</bad-element>
</error-info>
</rpc-error>
</rpc-reply>
3. 「缺少資料模型」RPC錯誤回覆消息
如果對不存在於Catalyst 3850上的資料模型發出請求,或者對未實現於資料模型中的枝葉發出請求,伺服器(Catalyst 3850)以空資料響應進行響應。這是預期行為。
提示:使用NETCONF功能確定Catalyst軟體支援哪些資料模型。請參閱設定集中管理平台(膝上型電腦)的第2節。
<?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/>
4. 「Invalid-value」 RPC錯誤回覆消息
在某些情況下,根據YANG資料模型,NETCONF消息可能包含有效的內容,但是,裝置(Catalyst 3850)無法實現請求的內容。當Catalyst 3850上的NETCONF介面向IOSd傳送無法成功應用的配置時,特定RPC錯誤響應將返回到NETCONF客戶端。
在本示例中,在RPC消息中向Catalyst 3850傳送了無效的日誌記錄緩衝值False。來自Catalyst 3850的回覆中的錯誤標籤指示無效值。錯誤消息表明Catalyst 3850 IOS分析程式無法將日誌記錄緩衝的嚴重性級別配置為假的,因為這不是一個有效值。
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="6">
<rpc-error>
<error-type>application</error-type>
<error-tag>invalid-value</error-tag>
<error-severity>error</error-severity>
<error-message xml:lang="en">inconsistent value: Device refused command "logging buffered bogus" at column 20 </error-message>
</rpc-error>
</rpc-reply>
修訂 | 發佈日期 | 意見 |
---|---|---|
3.0 |
21-Dec-2023 |
已更新品牌設定需求、拼字與格式設定。 |
2.0 |
01-Dec-2022 |
已刪除PII。
增加了Alt文本。
已更正還原RPC資訊。
已更新標題、簡介、機器翻譯、名詞、樣式要求和格式。 |
1.0 |
17-Sep-2021 |
初始版本 |