![YANG模型介紹及語(yǔ)法_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/23/9ab300c5-e7c7-44c5-b0f9-26ef9615ee84/9ab300c5-e7c7-44c5-b0f9-26ef9615ee841.gif)
![YANG模型介紹及語(yǔ)法_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/23/9ab300c5-e7c7-44c5-b0f9-26ef9615ee84/9ab300c5-e7c7-44c5-b0f9-26ef9615ee842.gif)
![YANG模型介紹及語(yǔ)法_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/23/9ab300c5-e7c7-44c5-b0f9-26ef9615ee84/9ab300c5-e7c7-44c5-b0f9-26ef9615ee843.gif)
![YANG模型介紹及語(yǔ)法_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/23/9ab300c5-e7c7-44c5-b0f9-26ef9615ee84/9ab300c5-e7c7-44c5-b0f9-26ef9615ee844.gif)
![YANG模型介紹及語(yǔ)法_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/23/9ab300c5-e7c7-44c5-b0f9-26ef9615ee84/9ab300c5-e7c7-44c5-b0f9-26ef9615ee845.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、YANG 模型介紹及語(yǔ)法YANG模型是什么?YANG模型是一種數(shù)據(jù)建模語(yǔ)言,用來(lái)建模由NETCONF協(xié)議、NETCONF遠(yuǎn)端過(guò)程調(diào)用(RPCs)、和NETCONF通知(notification)操作的配置數(shù)據(jù)和狀態(tài)數(shù)據(jù)。YANG建模NETCONF協(xié)議的操作和內(nèi)容層(RFC4741,Section 1.1)。 YANG模型特性:建模XML格式數(shù)據(jù)并由控制器元素提供功能:具有自己的語(yǔ)法格式,可以無(wú)差地轉(zhuǎn)化為XML格式,同時(shí)通過(guò)yangtools plugin可以生成相應(yīng)的java接口、類及方法等,為OpenDaylight內(nèi)部數(shù)據(jù)(控制器元素)處理編程提供了便利。定義語(yǔ)義元素和他們的關(guān)系,模擬所有
2、的元素作為一個(gè)系統(tǒng),YANG模型是一種樹(shù)形結(jié)構(gòu)的建模語(yǔ)言,通過(guò)YANG模型本身的語(yǔ)法和語(yǔ)義關(guān)系可以看出其定義方式的靈活性。YANG數(shù)據(jù)模型的XML特性提供了一種自表述數(shù)據(jù)的方式,控制器元素和采用控制器北向接口API的應(yīng)用可以以一種原生格式與數(shù)據(jù)模型一起調(diào)用。利用一種模式語(yǔ)言簡(jiǎn)化控制器元素和應(yīng)用的開(kāi)發(fā)。模塊中提供功能的開(kāi)發(fā)者可以定義一個(gè)模型,從而可以創(chuàng)建對(duì)于所提供功能的更簡(jiǎn)單的、數(shù)據(jù)類型的API。因此降低了通過(guò)服務(wù)抽象層提供的數(shù)據(jù)結(jié)構(gòu)的錯(cuò)誤交互。YANG模型與NETCONF由最初YANG模型的定義可知,YANG模型與NETCONF密切相關(guān),其產(chǎn)生是為了對(duì)NETCONF協(xié)議所操作的數(shù)據(jù)進(jìn)行建模。最
3、初的網(wǎng)絡(luò)管理協(xié)議SNMP也有對(duì)應(yīng)的建模語(yǔ)言SMI。下圖給出NETCONF/YANG與SNMP/SMI相關(guān)概念對(duì)比。 圖1如圖中所示,NETCONF在很多方面體現(xiàn)出對(duì)于SNMP協(xié)議的優(yōu)越性,NETCONF協(xié)議由XML編碼,以SSH加密,采用TCP連接,體現(xiàn)出更好的安全性和可靠性。下面簡(jiǎn)單引出NETCONF協(xié)議的configuration data store。PicYANG模型通過(guò)樹(shù)形結(jié)構(gòu)的節(jié)點(diǎn)定義描述了數(shù)據(jù)模型的層級(jí)嵌套結(jié)構(gòu)以及各屬性的數(shù)據(jù)類型。YANG具有自己的語(yǔ)法格式,也可以無(wú)差別地轉(zhuǎn)換為XML格式,稱之為YIN。可以使用第三方工具pyang進(jìn)行轉(zhuǎn)換。pyang地址:http:/www.y
4、/twiki/pub/Main/YangTools/pyang.1.html接下來(lái)將會(huì)對(duì)YANG模型的語(yǔ)法和語(yǔ)義進(jìn)行描述,說(shuō)明在YANG中數(shù)據(jù)模型是如何定義的,并且以XML格式展示,以及NETCONF操作如何來(lái)操作數(shù)據(jù)。(/html/rfc6020#section-1)YANG模型語(yǔ)義及語(yǔ)法YANG模型主要內(nèi)容圖2正如之前所提到的,除去header information、imports&includes、Type definitions之外,YANG模型的主要內(nèi)容Configuration&Operational dat
5、a declarations和Action(RPC)&Notification declarations對(duì)應(yīng)了YANG模型定義中的“NETCONF協(xié)議、NETCONF遠(yuǎn)端過(guò)程調(diào)用(RPCs)、和NETCONF通知(notification)”。下面將通過(guò)基本示例來(lái)介紹以上所述主要內(nèi)容。YANG HEADER圖3上圖所示是一個(gè)YANG文件的HEADER,其中module name(vxlan)要與YANG文件的文件名一致(即這個(gè)YANG文件的名字為vxlan.yang),namespace用來(lái)唯一標(biāo)識(shí)這個(gè)YANG模型與其他YANG模型不同,prefix作為namespace的一種簡(jiǎn)寫(xiě),其次imp
6、ort用來(lái)定義導(dǎo)入的其他YANG模型,注意到在后面的大括號(hào)中包括這個(gè)YANG模型的prefix和revision-data。revision用來(lái)唯一定義這個(gè)YANG模型的revision。其余一些organization、contact、description定義僅用于描述。YANG模型是一個(gè)XML格式定義語(yǔ)言。另外,針對(duì)上圖示例中沒(méi)有體現(xiàn)的“include”來(lái)說(shuō),include是用于將sub-module引入到module里面,這個(gè)module不一定要有一個(gè)文件。Submodule沒(méi)有namespace而是以belongs-to來(lái)表征屬于哪一個(gè)main module. YANG TYPESD
7、ata TypeYANG模型的Data Type包括Base Type和Derived Type, Base Type即為一個(gè)簡(jiǎn)單的類型,Derived Type或許是typedefs定義的一個(gè)Base Type或許是grouping定義的具有結(jié)構(gòu)的類型。接下來(lái)在Typedef Statement和Grouping Statement中將會(huì)進(jìn)一步介紹Derived Type。Base Type The leaf StatementThe leaf-list StatementThe container StatementThe must StatementThe list StatementT
8、he augment StatementThe when StatementThe union StatementThe grouping StatementThe choice StatementThe anyxml StatementThe rpc StatementThe notification Statement 圖4/view/YANG Tools:YANG to Java Mapping Typedef Statement在Typedef中還包涵諸如“rang”、“l(fā)ength”的細(xì)節(jié)定義,有興趣可查看rfc6020圖5圖中
9、定義實(shí)現(xiàn)了一個(gè)“percent”類型(Derived Type),Container Statement作為data store有效入口的存在,可以理解為從container處以下的值才是有效的,沒(méi)有值,但包含一系列的子節(jié)點(diǎn)圖6Grouping Statement定義樹(shù)形結(jié)構(gòu)的“暫時(shí)”樹(shù)干,這么說(shuō)主要是區(qū)別于container,從形式上看兩者及其相似都是具有樹(shù)形結(jié)構(gòu),但在運(yùn)行過(guò)程中g(shù)rouping是無(wú)效的數(shù)據(jù),只有當(dāng)它作為衍生類型(uses)存在于container中時(shí)才有效.圖7Leaf Statementleaf:用來(lái)定義屬性值,如name,ID等。有值,但不包含任何子節(jié)點(diǎn)List Sta
10、tement定義了一組具有相同數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù),在json格式的實(shí)例中是一個(gè)數(shù)組,在xml格式的實(shí)例中是一系列名稱和結(jié)構(gòu)相同的xml節(jié)點(diǎn) 。List中的各個(gè)元素之間通過(guò)key來(lái)唯一標(biāo)識(shí);例如nodes圖8兼具leaf和list的特點(diǎn),定義了一組相同類型的值。不包含子節(jié)點(diǎn)。在json格式實(shí)例中是一個(gè)數(shù)組且數(shù)組中每個(gè)元素都是一個(gè)值,在xml格式的實(shí)例中是一系列名稱相同值不同的xml節(jié)點(diǎn)Choice & case Statementchoice:定義的節(jié)點(diǎn)結(jié)構(gòu)是不完全確定的。它包含多個(gè)case子節(jié)點(diǎn),代表不同的分支,分別定義了該節(jié)點(diǎn)的一種可能的結(jié)構(gòu)。最終節(jié)點(diǎn)的結(jié)構(gòu)是且僅能是所有分支中的一種。Augme
11、ntYANG模型允許一個(gè)module插入附加節(jié)點(diǎn)到data models中,包括當(dāng)前的module(以及子mudule)或者一個(gè)外部module. 對(duì)于供應(yīng)商來(lái)說(shuō),增加vendor-specific參數(shù)到標(biāo)注的data model中可協(xié)作使用。圖9Configuration & Operational Data StoreData store中的數(shù)據(jù)存儲(chǔ)分兩種形式:config和operational ,config持有由應(yīng)用所寫(xiě)的數(shù)據(jù),而operational反映了設(shè)備的實(shí)際狀態(tài),從設(shè)備讀取數(shù)據(jù),如果沒(méi)有錯(cuò)誤即可以看到設(shè)備的當(dāng)前實(shí)際信息。config data store中查詢流表通常不包含
12、以路由為目的的流表項(xiàng)(這就是為什么operational方式可以查詢到table-miss流表項(xiàng),即out-port:controller,而config方式查詢不到),但是OpenDaylight開(kāi)發(fā)者表示這個(gè)方面未來(lái)可以改變,而之所以這樣是因?yàn)檫@些流通過(guò)外部的流服務(wù)(不經(jīng)過(guò)dataStore和config)發(fā)送到設(shè)備,然后這些流由設(shè)備通過(guò)數(shù)據(jù)形式以operational的形式重新報(bào)回。config具有相對(duì)于控制器的生命周期(甚至重啟都可以依然存活)。這些流表項(xiàng)由應(yīng)用添加到這里并且當(dāng)有合適的設(shè)備時(shí)就會(huì)發(fā)送給它。原則上講openflowplugin和controller都不應(yīng)該動(dòng)用config
13、。這個(gè)是為應(yīng)用程序而保留的,比如FRM監(jiān)聽(tīng)到改變就寫(xiě)到config里面以發(fā)送流到設(shè)備。這個(gè)可以用來(lái)做預(yù)配置-應(yīng)用程序可以為一些尚未存在的設(shè)備寫(xiě)一些“有用的“流,一旦設(shè)備存在相關(guān)的流就會(huì)下發(fā)到其中,而不用任何應(yīng)用程序的動(dòng)作。Config 一般用來(lái)下發(fā)配置(post,put),也可以獲取信息(get)Operational一般是獲取實(shí)際設(shè)備信息(get),config data store的內(nèi)容和operational data store的內(nèi)容可能不同,但是不同模塊之間兩者的設(shè)計(jì)可能不太相同,舉例說(shuō)明:對(duì)于openflow協(xié)議:operational反映設(shè)備的實(shí)際信息,假如下發(fā)配置,流程是con
14、fig-device-operational對(duì)于bgp協(xié)議:下發(fā)配置流程是:config-operational-device在YANG模型中,只有當(dāng) “config true”存在時(shí)這段數(shù)據(jù)才是config data store的內(nèi)容,否則均為operational data store,不定義則默認(rèn)”config false”.RPCrpc:用于定義netconf的一個(gè)rpc操作。它可能包含input和output子節(jié)點(diǎn),分別是該rpc操作所需要的輸入和輸出數(shù)據(jù)結(jié)構(gòu)。若沒(méi)有則表明該操作不需要輸入數(shù)據(jù)或者沒(méi)有輸出數(shù)據(jù)。NOTIFICAION除了rpc,yang還有一個(gè)類似的“notifica
15、tion”, notification用于定義netconf的通知消息的內(nèi)容,也是用來(lái)定義一個(gè)服務(wù)。兩者的區(qū)別在于rpc是一對(duì)一的,即單播,而notification是多播的,當(dāng)Provider提交一個(gè)notification時(shí),所有的訂閱該服務(wù)的Consumer都會(huì)收到通知,如典型的PacketIn消息,所謂的訂閱即實(shí)現(xiàn)該notification的接口。rpc生成的接口類名后綴都是Service。nontification生成的接口類名后綴是Listener。OpenDaylight南北向接口針對(duì)以上討論了這么多關(guān)于YANG模型的知識(shí), YANG模型除卻本身作為NETCONF協(xié)議的數(shù)據(jù)建模語(yǔ)
16、言之外,在OpenDaylight中的應(yīng)用誕生了眾所周知的MD-SAL。MD-SAL簡(jiǎn)述對(duì)于服務(wù)抽象層的Model-driven方法體現(xiàn)出一種統(tǒng)一北向和南向API以及SDN控制器中多種服務(wù)和元素中所使用的數(shù)據(jù)結(jié)構(gòu)。為了描述控制器元素所提供的數(shù)據(jù)結(jié)構(gòu),YANG模型作為一種服務(wù)和數(shù)據(jù)抽象的建模語(yǔ)言就起到了作用。MD-SAL(Model Driven Service Abstraction Layer)模型驅(qū)動(dòng)服務(wù)抽象層的特別就體現(xiàn)在模型(即YANG模型)驅(qū)動(dòng)。如前所述,YANG模型可以無(wú)差別地轉(zhuǎn)換為XML格式,同時(shí)可以通過(guò)yangtools生成java代碼,這就是YANG模型實(shí)現(xiàn)對(duì)OpenDayl
17、ight南北向接口數(shù)據(jù)建模的關(guān)鍵。下面以實(shí)際示例的形式展現(xiàn)YANG模型定義與南北向接口的關(guān)系。YANG模型與北向接口圖3、圖6、圖7所示為一個(gè)簡(jiǎn)單的北向接口示例的YANG模型截圖,在完成YANG模型、java程序?qū)崿F(xiàn)以后,啟動(dòng)起OpenDaylight可以在北向得到如下RESTCONF接口:圖12為了看的清楚接下來(lái)采用restclient做展示針對(duì)以上YANG模型定義,可以知道相應(yīng)的配置下發(fā)為: 圖13下發(fā)之后可以通過(guò)get方法查到剛剛所下發(fā)的配置,如下圖所示圖14以上簡(jiǎn)單示例了一個(gè)yang模型對(duì)北向接口數(shù)據(jù)結(jié)構(gòu)的定義模式,其中還有很多諸如operational data store& con
18、fig data store、list& key以及格式書(shū)寫(xiě)的細(xì)節(jié),由于時(shí)間關(guān)系就暫且不展示了。YANG模型與南向接口YANG模型與南向接口的關(guān)系主要由java語(yǔ)言體現(xiàn),也即yangtools將YANG模型生成相應(yīng)的java代碼,對(duì)于這部分將以ovsdb代碼作展示。在ovsdb-southbound中定義了ovsdb的具體南向接口,截取southbound-api中ovsdb.yang中的一條主線如下所示,其實(shí)由此我們同時(shí)也可以分析出ovsdb的北向接口,即為http:/localhost:8181/config/network-topology:network-topology/topolo
19、gy/topology-id/node/node-id/termination-point/tp-id/下面我們來(lái)找一下這樣的YANG模型會(huì)生成什么樣子的java代碼:跟從YANG模型定義的路徑就可以追蹤到想要找到的接口生成代碼,對(duì)于這個(gè)例子來(lái)說(shuō),YANG模型生成的代碼如上圖所示。上圖是針對(duì)augment來(lái)說(shuō)所生成的代碼,圖中容易看到,在ovsdb-port-interface-attributes中所具有的leaf節(jié)點(diǎn),在ovsdbTerminationPointAugmentationBuilder.java中都有相應(yīng)的getter和setter方法(如圖中灰色部分的getOptions)。在中很容易搜到y(tǒng)ang-java mapping的頁(yè)面,在此不再敖述。Tips:仔細(xì)觀察yang模型與生成的代碼不難發(fā)現(xiàn),本例中的list都是具有interface的java文件,而leaf則沒(méi)有,yang模型生成的代碼多很容易混亂,實(shí)際編程體
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年智能杯墊合作協(xié)議書(shū)
- 2025年家電制造設(shè)備合作協(xié)議書(shū)
- 2025年固態(tài)地振動(dòng)強(qiáng)度記錄儀合作協(xié)議書(shū)
- 一年級(jí)上冊(cè)語(yǔ)文期末試題(15篇)
- 護(hù)理心電圖知識(shí)專項(xiàng)考核試題
- 2025年個(gè)人獨(dú)資轉(zhuǎn)讓合同(2篇)
- 2025年個(gè)人項(xiàng)目投資合作協(xié)議經(jīng)典版(2篇)
- 2025年產(chǎn)品購(gòu)買合同參考樣本(2篇)
- 2025年個(gè)人房屋抵押貸款合同(4篇)
- 2025年書(shū)面離婚合同協(xié)議范文(2篇)
- 部編人教版五年級(jí)道德與法治下冊(cè)全冊(cè)課件(完整版)
- 廣西貴港市2023年中考物理試題(原卷版)
- 仁愛(ài)英語(yǔ)八年級(jí)閱讀理解測(cè)試題和答案
- 山東省中考物理總復(fù)習(xí) 八上 第4講 光現(xiàn)象
- DB11∕T 1875-2021 市政工程施工安全操作規(guī)程
- 傳統(tǒng)節(jié)日春節(jié)英文介紹課件
- 質(zhì)量獎(jiǎng)現(xiàn)場(chǎng)評(píng)審問(wèn)題集錦精編版
- 裝配式結(jié)構(gòu)技術(shù)課程教學(xué)大綱
- 水資源論證報(bào)告
- 實(shí)現(xiàn)結(jié)構(gòu)化:初中語(yǔ)文大單元教學(xué)設(shè)計(jì)的核心
- FZ∕T 54088-2016 錦綸6全牽伸單絲
評(píng)論
0/150
提交評(píng)論