網(wǎng)絡(luò)自動化運維教程 課件 項目6 使用NETCONF協(xié)議配置網(wǎng)絡(luò)_第1頁
網(wǎng)絡(luò)自動化運維教程 課件 項目6 使用NETCONF協(xié)議配置網(wǎng)絡(luò)_第2頁
網(wǎng)絡(luò)自動化運維教程 課件 項目6 使用NETCONF協(xié)議配置網(wǎng)絡(luò)_第3頁
網(wǎng)絡(luò)自動化運維教程 課件 項目6 使用NETCONF協(xié)議配置網(wǎng)絡(luò)_第4頁
網(wǎng)絡(luò)自動化運維教程 課件 項目6 使用NETCONF協(xié)議配置網(wǎng)絡(luò)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

項目6使用NETCONF協(xié)議配置網(wǎng)絡(luò)項目6使用NETCONF協(xié)議配置網(wǎng)6.1NETCONF協(xié)議6.2NETCONF配置6.3Pythonncclient模塊6.4數(shù)據(jù)模型YANG6.5任務(wù)實施6.1NETCONF協(xié)議2003年5月,IETF成立NETCONF工作組,提出了基于XML的網(wǎng)絡(luò)配置協(xié)議。

最新的NETCONF標(biāo)準(zhǔn)是2011年6月發(fā)布的RFC6241和RFC6242。在NETCONF定義中使用了三種傳輸協(xié)議,分別是SOAP、BEEP和SSH。RFC6242更新了基于SSH的傳輸模式。目前使用最為廣泛的也是SSH協(xié)議,其使用TCP端口830作為其默認(rèn)的通信端口。由于XML可以表達復(fù)雜的、模塊化的管理對象以及具有內(nèi)在的邏輯關(guān)系等特點,NETCONF協(xié)議完全基于XML來表示配置數(shù)據(jù)和協(xié)議消息內(nèi)容。對于NETCONF中XML的數(shù)據(jù)結(jié)構(gòu)的定義,RFC6242使用了新的數(shù)據(jù)模型語言YANG1NETCONF協(xié)議-發(fā)展歷程6.1NETCONF協(xié)議NETCONF(NetworkConfigurationProtocol)網(wǎng)絡(luò)配置協(xié)議,提供一套管理網(wǎng)絡(luò)設(shè)備的機制。用戶可以使用這套機制增加、修改、刪除網(wǎng)絡(luò)設(shè)備的配置,獲取網(wǎng)絡(luò)設(shè)備的配置和狀態(tài)信息。NETCONF有三個對象:2NETCONF協(xié)議-協(xié)議對象NETCONF客戶端NETCONF服務(wù)器NETCONF消息6.1NETCONF協(xié)議能力協(xié)商是Client和Server在會話建立階段,通過發(fā)送消息給對方來通告自己支持的能力。當(dāng)NETCONF會話打開,每一端(包括Client和Server)必須發(fā)送一個包含自身能力列表的<hello>消息。雙方至少要發(fā)送NETCONF基本能力"urn:ietf:params:netconf:base:1.0"或"urn:ietf:params:netconf:base:1.1"。除了基本功能,NETCONF協(xié)議還允許客戶端發(fā)現(xiàn)服務(wù)器端支持的其它能力列表。在交換過Hello消息后,Server等待Client發(fā)送<rpc>請求。Server為每個<rpc>請求回應(yīng)<rpc-reply>。實現(xiàn)過程如圖所示。3NETCONF協(xié)議-能力協(xié)商6.1NETCONF協(xié)議NETCONF現(xiàn)在已經(jīng)廣泛地被網(wǎng)絡(luò)設(shè)備廠家所支持。NETCONF協(xié)議采用了分層的設(shè)計結(jié)構(gòu),和OSI網(wǎng)絡(luò)模型類似,下層為上層提供服務(wù),每一層是對某一個功能的分裝。NETCONF協(xié)議在概念上可以劃分為4層:安全傳輸層、消息層、操作層、內(nèi)容層。4NETCONF協(xié)議-協(xié)議框架內(nèi)容層操作層消息層安全傳輸層為客戶端和服務(wù)器之間交互提供通訊路徑。當(dāng)前華為使用SSH協(xié)議作為NETCONF協(xié)議的承載協(xié)議。提供一種簡單的不依賴傳輸協(xié)議層的RPC請求和回應(yīng)機制。定義一組基本的操作,作為RPC的調(diào)用方法,這些操作組成了NETCONF基本能力。如get、get_config、edit_config、copy_config等操作。描述了網(wǎng)絡(luò)管理所涉及的配置數(shù)據(jù),而這些數(shù)據(jù)依賴于各制造商設(shè)備。目前主流的數(shù)據(jù)模型有Schema模型,YANG模型等。6.2NETCONF協(xié)議5NETCONF協(xié)議-一個完整的NETCONF報文<?xmlversion="1.0"encoding="UTF-8"?><rpcxmlns="urn:ietf:params:xml:ns:netconf:base:1.0"message-id="801"><edit-config><target><running/></target><default-operation>merge</default-operation><error-option>rollback-on-error</error-option><configxmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0"><vlanxmlns="/netconf/vrp/huawei-vlan"><vlans><vlan><vlanId>10</vlanId><protocolVlans><protocolVlanxc:operation="merge"><protocolIndex>0</protocolIndex></protocolVlan></protocolVlans></vlan></vlans>

</edit-config></rpc>一個完整的NETCONF報文是基于SSH安全傳輸之上,包含消息層、操作層和內(nèi)容層信息。NETCONF報文使用XML編碼。NETCONF報文消息(Message)NETCONF操作(Operations)NETCONF內(nèi)容(Content)6.1NETCONF協(xié)議6NETCONF協(xié)議-XML編碼XML作為NETCONF協(xié)議的編碼格式,用文本表示復(fù)雜的層次化數(shù)據(jù),既支持使用傳統(tǒng)的文本編譯工具,也支持使用XML專用的編輯工具讀取、保存和操作配置數(shù)據(jù)?;赬ML網(wǎng)絡(luò)管理的主要思想是利用XML強大的數(shù)據(jù)表示能力,使用XML來描述被管理數(shù)據(jù)和管理操作,使管理信息成為計算機可以理解的數(shù)據(jù)庫,提高計算機對網(wǎng)絡(luò)管理數(shù)據(jù)的處理能力,從而提高網(wǎng)絡(luò)管理能力?;赬ML的網(wǎng)絡(luò)管理的主要優(yōu)點:具有強大的數(shù)據(jù)表示能力。方便高效安全的進行大量數(shù)據(jù)傳輸。很好的適應(yīng)網(wǎng)絡(luò)配置管理的需求。6.1NETCONF協(xié)議7NETCONF協(xié)議-傳輸層和消息層NETCONF使用SSH實現(xiàn)安全傳輸,使用RPC(RemoteProcedureCall)遠(yuǎn)程調(diào)用的機制實現(xiàn)客戶端和服務(wù)端的通信。NETCONF協(xié)議使用RPC通信模式。RPC的框架與傳輸層獨立,采用XML編碼的<rpc>和<rpc-reply>元素提供獨立于傳輸層協(xié)議的請求和回應(yīng)消息框架:<rpc>用于封裝從客戶端到服務(wù)端的NETCONF請求。頭部定義message-id標(biāo)示序列。<rpc-reply>用戶服務(wù)端回復(fù)<rpc>的response消息。頭部message-id保持一致。<rpc-error>在<rpc-reply>中被發(fā)送。一個<rpc-reply>可以包含多個<rpc-error>。<ok>在<rpc-reply>中被發(fā)送,表示沒有錯誤和沒有數(shù)據(jù)返回。6.1NETCONF協(xié)議8NETCONF協(xié)議-操作層NETCONF定義了一系列操作:場景分類操作功能描述查詢數(shù)據(jù)<get-config>查詢配置數(shù)據(jù)<get>查詢設(shè)備當(dāng)前運行的配置和狀態(tài)數(shù)據(jù)編輯數(shù)據(jù)<edit-config>修改,創(chuàng)建,刪除配置數(shù)據(jù)備份/恢復(fù)<copy-config>導(dǎo)出配置,或用一套配置數(shù)據(jù)整體替換另一套配置數(shù)據(jù)<delete-config>刪除配置數(shù)據(jù)集,清空startup鎖定/解鎖<lock>加鎖,獨占配置數(shù)據(jù)集的修改權(quán)<unlock>解鎖,放棄對配置數(shù)據(jù)集修改權(quán)的獨占事務(wù)操作<commit>提交<candidate>數(shù)據(jù)集中的配置數(shù)據(jù)成為當(dāng)前運行的配置數(shù)據(jù)<cancel-commit>放棄配置提交試運行<discard-changes>放棄<candidate>中還未提交的配置數(shù)據(jù)<validate>檢查指定配置數(shù)據(jù)的語法語義是否正確會話操作<close-session>正常的結(jié)束本NETCONF會話<kill-session>強制結(jié)束其他的NETCONF會話,需管理員權(quán)限6.1NETCONF協(xié)議9NETCONF協(xié)議-內(nèi)容層NETCONF內(nèi)容層為設(shè)備配置數(shù)據(jù)。配置數(shù)據(jù)需要有建模語言,各廠家,沒有統(tǒng)一。NETCONF1.0對模型語言沒有要求。NETCONF1.1明確了與YANG結(jié)合,開始規(guī)范NETCONF內(nèi)容格式。當(dāng)前華為設(shè)備支持的內(nèi)容層有:

NETCONF當(dāng)前有兩種建模語言,Schema和YANG:Schema是為了描述XML文檔而定義的一套規(guī)則。Schema文件中定義了設(shè)備所有管理對象,以及管理對象的層次關(guān)系、讀寫屬性和約束條件。YANG是專門為NETCONF協(xié)議設(shè)計的數(shù)據(jù)建模語言,用來為NETCONF協(xié)議設(shè)計可操作的配置數(shù)據(jù)、狀態(tài)數(shù)據(jù)模型、遠(yuǎn)程調(diào)用(RPCs)模型和通知機制等。Huawei-YANG、NETCONFSchema、IETF-YANG、OpenConfig-YANG項目6使用NETCONF協(xié)議配置網(wǎng)6.1NETCONF協(xié)議6.2NETCONF配置6.3Pythonncclient模塊6.4數(shù)據(jù)模型YANG6.5任務(wù)實施6.2NETCONFSchema案例1NETCONF配置–會話基礎(chǔ)Schema是華為基于W3Cxml標(biāo)準(zhǔn),又?jǐn)U展了私有語法的一種語言,在NETCONF標(biāo)準(zhǔn)沒有確定和YANG模型綁定前,VRPV8已經(jīng)實現(xiàn)了Schema。Schema文件中定義了設(shè)備所有管理對象,以及管理對象的層次關(guān)系、讀寫屬性和約束條件。設(shè)備通過Schema文件向客戶端提供配置和管理設(shè)備的接口。NETCONF種傳輸協(xié)議,目前使用最為廣泛的也是SSH協(xié)議,默認(rèn)使用TCP端口830。6.2NETCONFSchema案例2NETCONF配置–會話流程NETCONF會話建立和關(guān)閉的基本流程如下:1、客戶端觸發(fā)NETCONF會話建立,完成SSH連接建立,并進行認(rèn)證與授權(quán)。2、客戶端和服務(wù)器完成NETCONF會話建立和能力協(xié)商。詳情請參考能力集交互。3、客戶端發(fā)送一個或多個請求給服務(wù)器,進行RPC交互(鑒權(quán))。例如:4.客戶端關(guān)閉NETCONF會話。5.SSH連接關(guān)閉。修改并提交配置。查詢配置數(shù)據(jù)或狀態(tài)。對設(shè)備進行維護操作。6.2NETCONFSchema案例3NETCONF配置–配置NETCONF1、進入NETCONF視圖2、配置NETCONF服務(wù)端口號3、使能NETCONF功能[CE1]netconf

#進入NETCONF視圖[CE1-netconf]protocolinboundsshport830#配置NETCOF都按口號Info:Succeededinstartingthesshport830service.[CE1-netconf]quit[CE1]snetconfserverenable

#使能NETCONF功能Info:SucceededinstartingtheSNETCONFserveronSSHport22.[CE1]snetconfserverenable和protocolinboundsshport830都可以使能NETCONF功能。如果這兩個命令都配置,表示客戶端可以使用22端口號或830端口號與服務(wù)器建立NETCONF連接。NETCONF使用SSH作為承載協(xié)議。在使用前必須配置SSH,建議用戶level為15。項目6使用NETCONF協(xié)議配置網(wǎng)6.1NETCONF協(xié)議6.2NETCONF配置6.3Pythonncclient模塊6.4數(shù)據(jù)模型YANG6.5任務(wù)實施6.3NETCONFSchema案例1Pythonncclient模塊ncclient是一個專門用于NETCONF客戶端的Python庫。它提供直觀的API,將NETCONF的XML編碼特性映射到Python構(gòu)造和習(xí)語,并使編寫網(wǎng)絡(luò)管理腳本更容易。安裝ncclient模塊查看ncclient,當(dāng)前使用的ncclient版本是0.6.12。C:\Users\Administrator>pipinstallncclient-i/pypi/simple/--trusted-hostC:\Users\Administrator>pythonPython3.9.6(tags/v3.9.6:db3ff76,Jun282021,15:26:21)[MSCv.192964bit(AMD64)]onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>importncclient>>>ncclient.__version__'0.6.12'>>>exit()C:\Users\Administrator>6.3Pythonncclient模塊2Pythonncclient模塊ncclient中最重要的對象是manager,manager.connect()函數(shù)用來通過NETCONF協(xié)議連接設(shè)備。上面參數(shù)中,device_params對于華為設(shè)備有兩個選擇??梢耘渲脼閔uawei或者h(yuǎn)uaweiyang,分別對應(yīng)IETFYANG和華為的YANG模型。manager.connect(host=host,port=port,username=user,password=password,hostkey_verify=False,device_params={'name':"huawei"},allow_agent=False,

look_for_keys=False)6.3Pythonncclient模塊3Pythonncclient模塊manager中支持的操作,通過通過manager.OPERATIONS查看。6.3Pythonncclient模塊4Pythonncclient模塊

-常用方法get()方法get_config(source,filter=None)檢索運行配置和設(shè)備狀態(tài)信息。查詢的是設(shè)備當(dāng)前運行的狀態(tài)數(shù)據(jù),即只能從配置數(shù)據(jù)庫中獲取數(shù)據(jù)。不需要使用source參數(shù)指定配置數(shù)據(jù)庫。操作成功,Server回復(fù)的元素中含有參數(shù),中封裝了獲取的結(jié)果數(shù)據(jù)。否則在消息中返回。檢索指定配置的全部或部分。source:指定需要查詢的數(shù)據(jù)庫名稱。有running

(正在運行的數(shù)據(jù)庫),startup

(下次設(shè)備啟動配置數(shù)據(jù)庫),

candidate

(兩階段運行數(shù)據(jù)庫,需要commit提交生效)Filter參數(shù)不常用6.3Pythonncclient模塊5Pythonncclient模塊-常用方法edit_config(target,config,default_operation=None,test_option=None,error_option=None):copy_config(source,target)將指定配置的全部或部分加載到目標(biāo)配置數(shù)據(jù)存儲中。target:指定要配置的數(shù)據(jù)庫。config:必須放在元素中,它可以指定為字符串或Elementdefault_operation:如果指定,必須是{“merge”,“replace”,or“none”}其中之一。test_option:{“test_then_set”,“set”}之一。error_option:{“stop-on-error”,“continue-on-error”,“rollback-on-error”}之一。The“rollback-on-error”error_option:rollback-on-errorcapability.源配置數(shù)據(jù)庫替換目標(biāo)配置數(shù)據(jù)庫。如果目標(biāo)配置數(shù)據(jù)庫沒有創(chuàng)建,則直接創(chuàng)建配置數(shù)據(jù)庫,否則用源配置數(shù)據(jù)庫直接覆蓋目標(biāo)配置數(shù)據(jù)庫。source:是配置數(shù)據(jù)存儲的名稱,用作包含要復(fù)制的配置子樹的復(fù)制操作或配置元素的源。target:是要用作復(fù)制操作目標(biāo)的配置數(shù)據(jù)存儲的名稱。6.3Pythonncclient模塊6Pythonncclient模塊-常用方法delete_config(target):close_session():kill_session(session_id):刪除配置數(shù)據(jù)庫。target:target指定要刪除的配置數(shù)據(jù)存儲的名稱或URL請求優(yōu)雅地終止NETCONF會話,并關(guān)閉傳輸層會話。強制去終止一個NETCONF會話。session_id:要終止會話的NETCONF會話標(biāo)識符。項目6使用NETCONF協(xié)議配置網(wǎng)6.1NETCONF協(xié)議6.2NETCONF配置6.3Pythonncclient模塊6.4數(shù)據(jù)模型YANG6.5任務(wù)實施6.4數(shù)據(jù)模型YANG1數(shù)據(jù)模型YANG當(dāng)今,NETCONF協(xié)議的傳輸層,RPC層和操作層已經(jīng)有標(biāo)準(zhǔn)來定義,但內(nèi)容層尚未有標(biāo)準(zhǔn)的數(shù)據(jù)建模語言和相關(guān)的數(shù)據(jù)模型。沒有標(biāo)準(zhǔn)的數(shù)據(jù)模型NETCONF協(xié)議實際上并不能真正地普及到網(wǎng)絡(luò)管理當(dāng)中。為了使NETCONF協(xié)議成為一個互操作性強的協(xié)議,所建立的數(shù)據(jù)模型必須是獨立于各種廠商的。因此,需要建立一個專門為NETCONF協(xié)議建立模型的解決方法,在這樣的背景下,YANG就是專門為NETCONF服務(wù)的數(shù)據(jù)建模語言。YANG起源于NETCONF,但不僅用于NETCONF。雖然統(tǒng)一了YANG建模語言,但是YANG文件沒有統(tǒng)一。YANG文件可以簡單分為三類:廠家私有YANG文件,IETF標(biāo)準(zhǔn)YANG和OpenConfigYANG。6.4數(shù)據(jù)模型YANG2數(shù)據(jù)模型YANGYANG模型定義了數(shù)據(jù)的層次化結(jié)構(gòu),可用于基于NETCONF的操作。建模對象包括配置、狀態(tài)數(shù)據(jù)、遠(yuǎn)程過程調(diào)用和通知。它可以對NETCONF客戶端和服務(wù)器端之間發(fā)送的所有數(shù)據(jù)進行一個完整的描述。Yang有以下特點:基于層次化的樹狀結(jié)構(gòu)建模。數(shù)據(jù)模型以模塊和子模塊呈現(xiàn)??梢院突赬ML的語法的YIN(YANGIndepentNotation)模型無損轉(zhuǎn)換。定義內(nèi)置的數(shù)據(jù)類型和允許可擴展類型。6.4數(shù)據(jù)模型YANG3數(shù)據(jù)模型YANG–模塊和子模塊一個YANG文件通??梢远x為一個模塊(module)或者子模塊(submodule)。一個模塊包含三種類型的語句:模塊頭(moduleheader)語句,“修訂”(revision)語句和定義(definition)語句。模塊頭部語句描述模塊并提供關(guān)于模塊本身的信息,“修訂”語句提供關(guān)于模塊歷史的信息,定義語句是定義數(shù)據(jù)模型的模塊的主體。服務(wù)器可以實現(xiàn)多個模塊,允許相同數(shù)據(jù)的多個視圖或服務(wù)器數(shù)據(jù)的不相交子部分的多個視圖?;蛘撸?wù)器可以只實現(xiàn)一個定義所有可用數(shù)據(jù)的模塊?;谀K設(shè)計者的需求,模塊可以將其部分定義分成子模塊。無論子模塊的存在或大小如何,外部視圖都是單個模塊的外觀。6.4數(shù)據(jù)模型YANG4數(shù)據(jù)模型YANG–數(shù)據(jù)節(jié)點YANG定義了數(shù)據(jù)建模的四種主要類型的數(shù)據(jù)節(jié)點。葉節(jié)點(LeafNodes)葉列表節(jié)點(Leaf-ListNodes)容器節(jié)點(ContainerNodes)列表節(jié)點(ListNodes)6.4數(shù)據(jù)模型YANG5數(shù)據(jù)模型YANG–數(shù)據(jù)節(jié)點–葉節(jié)點葉子實例包含簡單的數(shù)據(jù),如整數(shù)或字符串。它只有一個特定類型的值,沒有子節(jié)點。YANG葉節(jié)點示例XML編碼示例leafhost-name{typestring;description"Hostnameforthissystem.";}<host-name></host-name>6.4數(shù)據(jù)模型YANG6數(shù)據(jù)模型YANG–數(shù)據(jù)節(jié)點–葉列表節(jié)點葉列表定義了特定類型的值序列。YANG葉節(jié)點示例XML編碼示例leaf-listdomain-search{typestring;description"Listofdomainnamestosearch.";}<domain-search></domain-search><domain-search></domain-search><domain-search></domain-search>6.4數(shù)據(jù)模型YANG7數(shù)據(jù)模型YANG–數(shù)據(jù)節(jié)點–容器節(jié)點一個容器節(jié)點用于分組子樹中的相關(guān)節(jié)點。一個容器只有子節(jié)點,沒有值。容器可以包含任何類型的任何數(shù)量的子節(jié)點(葉子,列表,容器,葉子列表,動作和通知)。YANG葉節(jié)點示例XML編碼示例containersystem{containerlogin{leafmessage{typestring;description"Messagegivenatstartofloginsessio

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論