資源描述:
《yang模型介紹及語法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、YANG模型介紹及語法YANG模型是什么?YANG模型是一種數(shù)據(jù)建模語言,用來建模由NETCONF協(xié)議、NETCONF遠端過程調(diào)用(RPCs)、和NETCONF通知(notification)操作的配置數(shù)據(jù)和狀態(tài)數(shù)據(jù)。YANG建模NETCONF協(xié)議的操作和內(nèi)容層(RFC4741,Section1.1)。YANG模型特性:?建模XML格式數(shù)據(jù)并由控制器元素提供功能:具有自己的語法格式,可以無差地轉(zhuǎn)化為XML格式,同時通過yangtoolsplugin可以生成相應(yīng)的java接口、類及方法等,為OpenDaylight內(nèi)
2、部數(shù)據(jù)(控制器元素)處理編程提供了便利。?定義語義元素和他們的關(guān)系,模擬所有的元素作為一個系統(tǒng),YANG模型是一種樹形結(jié)構(gòu)的建模語言,通過YANG模型本身的語法和語義關(guān)系可以看出其定義方式的靈活性。?YANG數(shù)據(jù)模型的XML特性提供了一種自表述數(shù)據(jù)的方式,控制器元素和采用控制器北向接口API的應(yīng)用可以以一種原生格式與數(shù)據(jù)模型一起調(diào)用。?利用一種模式語言簡化控制器元素和應(yīng)用的開發(fā)。模塊中提供功能的開發(fā)者可以定義一個模型,從而可以創(chuàng)建對于所提供功能的更簡單的、數(shù)據(jù)類型的API。因此降低了通過服務(wù)抽象層提供的數(shù)據(jù)結(jié)構(gòu)的錯
3、誤交互。YANG模型與NETCONF由最初YANG模型的定義可知,YANG模型與NETCONF密切相關(guān),其產(chǎn)生是為了對NETCONF協(xié)議所操作的數(shù)據(jù)進行建模。最初的網(wǎng)絡(luò)管理協(xié)議SNMP也有對應(yīng)的建模語言SMI。下圖給出NETCONF/YANG與SNMP/SMI相關(guān)概念對比。圖1如圖中所示,NETCONF在很多方面體現(xiàn)出對于SNMP協(xié)議的優(yōu)越性,NETCONF協(xié)議由XML編碼,以SSH加密,采用TCP連接,體現(xiàn)出更好的安全性和可靠性。下面簡單引出NETCONF協(xié)議的configurationdatastore。Pic
4、YANG模型通過樹形結(jié)構(gòu)的節(jié)點定義描述了數(shù)據(jù)模型的層級嵌套結(jié)構(gòu)以及各屬性的數(shù)據(jù)類型。YANG具有自己的語法格式,也可以無差別地轉(zhuǎn)換為XML格式,稱之為YIN??梢允褂玫谌焦ぞ遬yang進行轉(zhuǎn)換。pyang地址:http://www.yang-central.org/twiki/pub/Main/YangTools/pyang.1.html接下來將會對YANG模型的語法和語義進行描述,說明在YANG中數(shù)據(jù)模型是如何定義的,并且以XML格式展示,以及NETCONF操作如何來操作數(shù)據(jù)。(https://tools.ie
5、tf.org/html/rfc6020#section-1)YANG模型語義及語法YANG模型主要內(nèi)容圖2正如之前所提到的,除去headerinformation、imports&includes、Typedefinitions之外,YANG模型的主要內(nèi)容Configuration&Operationaldatadeclarations和Action(RPC)&Notificationdeclarations對應(yīng)了YANG模型定義中的“NETCONF協(xié)議、NETCONF遠端過程調(diào)用(RPCs)、和NETCONF通知
6、(notification)”。下面將通過基本示例來介紹以上所述主要內(nèi)容。YANGHEADER圖3上圖所示是一個YANG文件的HEADER,其中modulename(vxlan)要與YANG文件的文件名一致(即這個YANG文件的名字為vxlan.yang),namespace用來唯一標識這個YANG模型與其他YANG模型不同,prefix作為namespace的一種簡寫,其次import用來定義導入的其他YANG模型,注意到在后面的大括號中包括這個YANG模型的prefix和revision-data。revisi
7、on用來唯一定義這個YANG模型的revision。其余一些organization、contact、description定義僅用于描述。YANG模型是一個XML格式定義語言。另外,針對上圖示例中沒有體現(xiàn)的“include”來說,include是用于將sub-module引入到module里面,這個module不一定要有一個文件。Submodule沒有namespace而是以belongs-to來表征屬于哪一個mainmodule.YANGTYPESDataTypeYANG模型的DataType包括BaseTyp
8、e和DerivedType,BaseType即為一個簡單的類型,DerivedType或許是typedefs定義的一個BaseType或許是grouping定義的具有結(jié)構(gòu)的類型。接下來在TypedefStatement和GroupingStatement中將會進一步介紹DerivedType。BaseTypeTheleafStatementTheleaf-l