小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

NETCONF

 法律安全 2019-02-07

引子

NETCONF和YANG的目的是以可編程的方式實(shí)現(xiàn)網(wǎng)絡(luò)配置的自動(dòng)化,從而簡(jiǎn)化和加快網(wǎng)絡(luò)設(shè)備和服務(wù)的部署,為網(wǎng)絡(luò)運(yùn)營(yíng)商和企業(yè)用戶(hù)節(jié)約成本。NETCONF和YANG對(duì)應(yīng)的RFC文檔分別是RFC6241和RFC6020,而RFC6244描述了一個(gè)實(shí)現(xiàn)NETCONF/YANG的參考架構(gòu)。

按照RFC6241的定義,NETCONF是安裝、編輯和刪除網(wǎng)絡(luò)設(shè)備配置的標(biāo)準(zhǔn)協(xié)議。RFC6020指出,YANG是一種數(shù)據(jù)模型語(yǔ)言(Data Modeling Language),用來(lái)描述NETCONF相關(guān)的網(wǎng)絡(luò)配置和網(wǎng)絡(luò)狀態(tài)的數(shù)據(jù)模型,包括NETCONF支持的RPC(Remote Procedure Call)消息和異步通知(Notification)。請(qǐng)注意,YANG本身不是數(shù)據(jù)模型,而是定義數(shù)據(jù)模型的語(yǔ)言。YANG和NETCONF是相伴而生的,雖然,原則上YANG也能夠用于其他的協(xié)議和不同的領(lǐng)域,但基本上可以認(rèn)為YANG就是為NETCONF量身定做的。

2002年,IAB(Internet Architecture Board)召集了一次關(guān)于網(wǎng)絡(luò)管理的專(zhuān)題工作會(huì)議(Workshop),最終形成了RFC3535。在這份文檔中,針對(duì)當(dāng)時(shí)網(wǎng)絡(luò)管理中存在的問(wèn)題,提出了14項(xiàng)需求,我們不妨列出其中關(guān)鍵的幾項(xiàng):

  • 簡(jiǎn)單好用。這何須說(shuō)?!
  • 嚴(yán)格區(qū)分網(wǎng)絡(luò)可配置的數(shù)據(jù)和運(yùn)行時(shí)的狀態(tài)數(shù)據(jù)??膳渲玫臄?shù)據(jù)如靜態(tài)IP地址和VLAN,用來(lái)改變?cè)O(shè)備的行為;狀態(tài)數(shù)據(jù)如接收、丟棄、轉(zhuǎn)發(fā)的數(shù)據(jù)包的計(jì)數(shù)統(tǒng)計(jì),用來(lái)監(jiān)控設(shè)備的行為。PicOS的Cli就有Operational模式和Configure模式,分別用于輸出系統(tǒng)狀態(tài)和改變系統(tǒng)配置。
  • 可以將整個(gè)網(wǎng)絡(luò)作為配置的對(duì)象,而不僅僅是單獨(dú)的設(shè)備。所謂SDN的集中式管理不就是這樣嗎?很多SDN的Controller平臺(tái)如OpenDaylight本身也是基于整個(gè)網(wǎng)絡(luò)視圖的開(kāi)發(fā)平臺(tái)。
  • 支持多個(gè)網(wǎng)絡(luò)設(shè)備配置的transaction機(jī)制。比如,給定一個(gè)網(wǎng)絡(luò),利用Dijkstra算法得到兩個(gè)主機(jī)之間的最短路徑,將正確路由配置到這一路徑上的每個(gè)交換設(shè)備。若某個(gè)交換設(shè)備配置失敗,那么所有的交換設(shè)備都應(yīng)該恢復(fù)到原來(lái)狀態(tài)。這個(gè)說(shuō)起來(lái)簡(jiǎn)單,做起來(lái)恐怕并不容易。
  • 網(wǎng)絡(luò)設(shè)備可保留多份配置拷貝,不同配置之間可以自由切換,以適配不同的應(yīng)用場(chǎng)景。這樣,交換機(jī)就可以切換到特殊的配置來(lái)應(yīng)對(duì)流量高峰期的到來(lái)。

另外,更為重要的是,是否支持可編程配置的API不是問(wèn)題,問(wèn)題是以怎樣的方式來(lái)支持。這也是自動(dòng)化配置的基礎(chǔ)。顯然,已有的網(wǎng)絡(luò)管理協(xié)議SNMP和上述的需求比較起來(lái)就大大的力所不逮了:盡管具有一些配置的功能,但SNMP本身并不是面向配置的協(xié)議,也不適合開(kāi)發(fā)用于配置的客戶(hù)端應(yīng)用,更談不到Transaction機(jī)制的支持。要滿(mǎn)足這些需求,設(shè)計(jì)新的替代的網(wǎng)絡(luò)管理協(xié)議就不可避免了。于是NETCONF和YANG的1.0版本分別于2006年和2010年正式發(fā)布。

總的來(lái)說(shuō),NETCONF/YANG并不規(guī)范配置的內(nèi)容,支持NETCONF/YANG的設(shè)備供應(yīng)商可保留自己的特有的配置內(nèi)容,但需要轉(zhuǎn)換成用YANG定義的數(shù)據(jù)模型。然后,NETCONF通過(guò)定義標(biāo)準(zhǔn)的操作接口,必須用統(tǒng)一的方法來(lái)安裝、編輯、刪除配置內(nèi)容,獲取設(shè)備運(yùn)行的狀態(tài)數(shù)據(jù)。也就是說(shuō),數(shù)據(jù)內(nèi)容可以不同,但定義數(shù)據(jù)(YANG)和操作數(shù)據(jù)(NETCONF)的方法必須一致統(tǒng)一。

相對(duì)來(lái)講,NETCONF和YANG都不是很新的東西。SDN(Software Defined Network)在學(xué)術(shù)界和工業(yè)界的發(fā)展和影響賦予了這兩項(xiàng)技術(shù)老樹(shù)吐新芽,迎來(lái)第二春的機(jī)會(huì)。大家都知道,SDN不能僅僅停留在抽象的概念層面上,必須找到應(yīng)用的切入點(diǎn), 并向更廣泛的領(lǐng)域逐漸展開(kāi),才會(huì)具有真正的生命力。目前來(lái)看,虛擬網(wǎng)絡(luò)和自動(dòng)化配置是SDN應(yīng)用的兩個(gè)重要支柱。自動(dòng)化配置讓人們重新發(fā)現(xiàn)了NETCONF和YANG的價(jià)值。

NETCONF和YANG相互交織纏繞在一起,剪不斷,理還亂,很難把它們分開(kāi)來(lái)一一描述清楚。所以本文從自動(dòng)化網(wǎng)絡(luò)設(shè)備配置的功能為切入點(diǎn),用實(shí)際的用例,來(lái)說(shuō)明NETCONF/YANG是如何相互配合完成這些功能的。

組成和交互

NETCONF的自動(dòng)化配置系統(tǒng)采用Client/Server架構(gòu)。Client和Server之間由面向連接的傳輸協(xié)議建立會(huì)話。SSH(Secure Shell)是NETCONF強(qiáng)制支持的傳輸協(xié)議,其他的傳輸協(xié)議如TLS和SOAP也能滿(mǎn)足NETCONF的要求。Client和Server通信的內(nèi)容是NETCONF定義的雙向的XML格式的RPC(Remote Procedure Call)消息,包括從Client發(fā)送到Server的<rpc>請(qǐng)求消息,以及Server的響應(yīng)消息<rpc-reply>。這樣,Client就可以獲取并修改Server的配置數(shù)據(jù)(configuration datastore)。

下圖描述了NETCONF配置系統(tǒng)的結(jié)構(gòu)。NETCONF Server是要配置的網(wǎng)絡(luò)設(shè)備,除了硬件之外,NETCONF引擎是和NETCONF Client建立會(huì)話的軟件模塊,當(dāng)然,Server上面還會(huì)運(yùn)行自身設(shè)備的軟件系統(tǒng)。配置數(shù)據(jù)由NETCONF引擎維護(hù)并傳遞給Server的軟件系統(tǒng),最終應(yīng)用到硬件的芯片。正如上文所述,配置數(shù)據(jù)的語(yǔ)法結(jié)構(gòu)是用YANG語(yǔ)言定義的數(shù)據(jù)模型來(lái)描述的,包括數(shù)據(jù)類(lèi)型和數(shù)據(jù)結(jié)構(gòu)。這和XML的Schema與對(duì)應(yīng)的應(yīng)用域數(shù)據(jù)的關(guān)系完全類(lèi)似。YANG分層的樹(shù)狀結(jié)構(gòu)非常適用于網(wǎng)絡(luò)設(shè)備的配置數(shù)據(jù)的定義。YANG的另外一個(gè)優(yōu)點(diǎn)是沒(méi)有晦澀的內(nèi)容,簡(jiǎn)單易懂。用戶(hù)拿到Y(jié)ANG的數(shù)據(jù)模型文件,即可明白如何寫(xiě)NETCONF Client程序來(lái)配置網(wǎng)絡(luò)設(shè)備。YANG語(yǔ)言的數(shù)據(jù)模型可以無(wú)信息丟失的轉(zhuǎn)換為XML的格式,稱(chēng)為YIN(YANG Independent Notation),主要是為了利用隨手可得的標(biāo)準(zhǔn)的XML解析器。開(kāi)源的NETCONF工具庫(kù)libnetconf提供了轉(zhuǎn)換的工具lnctool。NETCONF引擎和Client程序用YIN檢查配置數(shù)據(jù)的合法性。下文將用一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明YANG是如何定義配置數(shù)據(jù)的數(shù)據(jù)模型。

一般地,Client和Server經(jīng)過(guò)如下的步驟來(lái)完成配置的獲取和改變:

  1. Client和Server建立面向連接的傳輸協(xié)議的會(huì)話;
  2. 通過(guò)Hello消息協(xié)商彼此支持的功能(Capability),如都支持的NETCONF的最高級(jí)版本,從而避免解析時(shí)的歧義;
  3. Client向Server發(fā)送<rpc>的請(qǐng)求;
  4. Server接收并解析<rpc>請(qǐng)求;
  5. 通過(guò)YANG數(shù)據(jù)模型的定義來(lái)驗(yàn)證RPC請(qǐng)求的合法性;
  6. 執(zhí)行RPC的請(qǐng)求;
  7. 執(zhí)行結(jié)果作為<rpc-reply>響應(yīng)消息返回給Client;
  8. Client接收并解析響應(yīng)消息。

由此可見(jiàn),用戶(hù)能夠以任何編程語(yǔ)言實(shí)現(xiàn)遠(yuǎn)端網(wǎng)絡(luò)設(shè)備的定制化配置的需求,所做的無(wú)非是與Server建立會(huì)話連接,封裝發(fā)送<rpc>請(qǐng)求消息,接收解析<rpc-reply>消息。重要的是,用戶(hù)可以通過(guò)這種簡(jiǎn)單的交互模式,實(shí)現(xiàn)自己的業(yè)務(wù)邏輯,比如,可根據(jù)網(wǎng)絡(luò)的負(fù)載和設(shè)備的狀態(tài),應(yīng)用不同的配置。這也許就是可編程的自動(dòng)化配置的內(nèi)涵,也是YANG和NETCONF設(shè)計(jì)的目標(biāo)。

模型和數(shù)據(jù)

METCONF Server上面的配置叫做配置存儲(chǔ)。配置存儲(chǔ)是設(shè)備完整的合法的一份配置數(shù)據(jù)拷貝,使能某個(gè)配置存儲(chǔ)可以把設(shè)備從缺省的初始狀態(tài)轉(zhuǎn)換到特定的運(yùn)行狀態(tài)。在同一個(gè)設(shè)備上,NETCONF可支持三種配置存儲(chǔ),包括:

  • 運(yùn)行時(shí)配置(running configuration datastore)是設(shè)備當(dāng)前激活狀態(tài)的運(yùn)行中的配置,和運(yùn)行的狀態(tài)完全一致。
  • 重啟時(shí)配置(startup configuration datastore)是系統(tǒng)下次重啟時(shí)的配置,可以和運(yùn)行時(shí)配置不一樣。
  • 可選配置(candidate configuration datastore)是沒(méi)有生效的候選配置,可使用commit命令將可選配置應(yīng)用到設(shè)備,從而,可選配置變?yōu)楫?dāng)前的運(yùn)行時(shí)配置。

無(wú)論是運(yùn)行時(shí)配置,重啟時(shí)配置還是可選配置的數(shù)據(jù),都是用YANG定義的數(shù)據(jù)模型來(lái)描述的。下面給出一個(gè)關(guān)于網(wǎng)絡(luò)設(shè)備接口的極度簡(jiǎn)化的例子。

YANG語(yǔ)言是非常直觀的模型語(yǔ)言,理解了上面代碼中YANG語(yǔ)言的一些關(guān)鍵詞,如module,container,list,leaf等,就基本可以清楚的知道代碼的含義了。解釋如下:

  • module定義了一種分層的配置樹(shù)結(jié)構(gòu),一個(gè)module是自包含的(self-contained),可重用的。它可以使能NETCONF的所有功能,如配置操作(operation),RPC和異步通知(notification)。開(kāi)發(fā)者可根據(jù)配置數(shù)據(jù)的語(yǔ)義來(lái)定義不同的module。?
  • namespace用于唯一的標(biāo)識(shí)module,等同于xml文件中的namespace。?
  • container節(jié)點(diǎn)把相關(guān)的子節(jié)點(diǎn)組織在一起。?
  • list節(jié)點(diǎn)可以有多個(gè)實(shí)例,每個(gè)實(shí)例都有一個(gè)key唯一標(biāo)識(shí)。??
  • leaf是葉子節(jié)點(diǎn),具有數(shù)據(jù)類(lèi)型和值,如葉子結(jié)點(diǎn)name的數(shù)據(jù)類(lèi)型(type)是string,它唯一的表示list節(jié)點(diǎn)interface。??
  • 另一個(gè)布爾類(lèi)型的葉子節(jié)點(diǎn),缺省值是true。??

配置和操作

上文已說(shuō)明,NETCONF Client和NETCONF Server通過(guò)RPC交互完成網(wǎng)絡(luò)設(shè)備的配置。下面給一個(gè)具體的例子,NETCONF Client向NETCONF Server發(fā)送一個(gè)xml編碼的<rpc>請(qǐng)求?,在Server的運(yùn)行時(shí)配置?上通過(guò)操作(operation)create新建一個(gè)網(wǎng)絡(luò)接口?。

如果操作成功,NETCONF Server將返回<rpc-reply>。

異步通知(notification)

通知類(lèi)似于SNMP的trap機(jī)制,當(dāng)NETCONF Client訂閱(subcribe)通知時(shí),通知所對(duì)應(yīng)的事件發(fā)生之后,NETCONF Client就可以得到事件的信息。如下面的例子,NETCONF Client從NETCONF Server那里得到一個(gè)網(wǎng)絡(luò)接口的link-up事件。

參考文獻(xiàn)

Network Configuration Protocol (NETCONF)
https://tools./html/rfc6241

YANG - A Data Modeling Language for the Network Configuration Protocol
https://tools./html/rfc6020

An Architecture for Network Management Using NETCONF and YANG
https://tools./html/rfc6244

Network Configuration Management with NETCONF and YANG
https://www./edu/documents/2012-ietf-84-netconf-yang.pdf

NETCONF toolset Netopeer
https://github.com/cesnet/netopeer

Overview of the 2002 IAB Network Management Workshop
http://www./txt/rfc-3535.txt

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多