YANG模型簡介(一)

      網(wǎng)友投稿 3825 2022-05-30

      概述:現(xiàn)有的SNMP模型的MIB由于是平鋪的表、不能區(qū)分配置和狀態(tài),XML模型的Schema是標(biāo)簽語言,對人不直觀;在這種情況下,YANG語言應(yīng)運而生,本期我們從YANG模型的定義、YANG文件與XML之間的關(guān)系、YANG模型的語法結(jié)構(gòu)、標(biāo)準(zhǔn)YANG的開發(fā)步驟這4個方面來簡單聊聊YANG模型。

      YANG模型的定義

      YANG是一種數(shù)據(jù)建模語言,一種非標(biāo)簽語言,在YANG模型之前,建模語言一直存在,因此YANG只能定義為Yet Another Next Generation,即稱為另一代的新模型。YANG有標(biāo)準(zhǔn)語法定義,基于RFC6020標(biāo)準(zhǔn),最早由Tail-F提出,2016年IETF發(fā)布1.1版本。

      YANG文件與XML之間的關(guān)系

      YANG文件就類似模板,填上數(shù)據(jù),就可以生成一致的XML,設(shè)備使用YANG文件,校驗XML、解析出數(shù)據(jù)。

      YANG模型的語法結(jié)構(gòu)

      YANG模型是一種樹形結(jié)構(gòu),是由無數(shù)的葉子、列表、葉列表、容器組成的描述整個設(shè)備的一棵樹。下面介紹YANG模型的四種主要類型的數(shù)據(jù)節(jié)點,包括葉節(jié)點(leaf)、列表節(jié)點(list)、葉列表節(jié)點(leaf-list)和容器節(jié)點(container):

      基礎(chǔ)數(shù)據(jù)類型

      在定義葉節(jié)點和葉列表節(jié)點時,須指定值類型。YANG原生支持的基礎(chǔ)數(shù)據(jù)類型有binary、bits、boolean、decimal64、empty、enumeration、instance-identifier、int8/16/32/64、leafref、string、uint8/16/32/64、union。

      葉(leaf)

      葉子包含簡單的數(shù)據(jù),如整數(shù)和字符串。它只有一個特定類型的值并且沒有子節(jié)點。

      定義了一個名為host-name的leaf。type表示host-name的值是string類型的。description是對host-name的描述。

      YANG模型簡介(一)

      列表(list)

      列表為一系列數(shù)據(jù)節(jié)點的集合,由key標(biāo)識,并由unique定義哪些數(shù)據(jù)節(jié)點需保持唯一。子節(jié)點可以是容器、葉節(jié)點、葉列表。

      定義了一個名為user的list。這個list包含了三個leaf,分別為name、first-name和full-name。其中name為key,即name是唯一值,其他值(first-name和full-name)可以相同。

      葉列表(leaf-list)

      葉列表定義了特定類型的值序列。它是只有一個葉子的列表,只能創(chuàng)建和刪除。作用相當(dāng)于只有一個節(jié)點的表。

      定義了一個名為domain-search的leaf-list。domain-search可以賦值為多個不同的值,但是值的類型都是string。

      容器(container)

      容器節(jié)點用于在子樹中組織相關(guān)的節(jié)點。容器只有子節(jié)點而沒有具體值。容器可以包含任何數(shù)量的任何類型(包括葉節(jié)點,列表節(jié)點,葉列表節(jié)點和容器)的子節(jié)點。

      定義了一個名為system的container。且system中包含一個名為login的container。login中還包含一個名為message的leaf。

      除了以上四種主要類型的數(shù)據(jù)節(jié)點外,組(grouping)、分支(choice)、派生類型(typedef)也是YANG模型其中一部分的相關(guān)功能定義語句。我們接著往下看:

      組(grouping)

      如果一組節(jié)點可以在不同的模塊或節(jié)點中重復(fù)使用,可以將這一組節(jié)點定義為可重用節(jié)點組,然后在需要引用的模塊或節(jié)點中使用uses關(guān)鍵字進行引用。

      定義了一個grouping endpoint的A模塊,它包含兩個名為ip和port的leaf。B模塊是一個名為http-server的container,它包含一個名為name的leaf,以及引用了一個grouping endpoint。當(dāng)實例化的時候,需要對name以及endpoint中的ip和port進行賦值。

      分支(choice)

      choice定義了一系列替代選擇,同一時間只能有一項存在。一個choice節(jié)點包含許多分支,分支用case定義聲明。有點像C語言中的case語句。

      一個名為food的container,包含一個choice snack。choice snack有2個case,case1為sports-arena,其包含兩個子節(jié)點leaf pretzel和leaf beer。case2為late-night,只包含一個子節(jié)點leaf chocolate。

      派生類型(typedef)

      除此之外,還可以使用typedef語句從基本類型定義派生新類型。基本類型可以是基礎(chǔ)數(shù)據(jù)類型也可以是派生類型,允許一個層次化的派生類型。派生類型可以作為參數(shù)的類型聲明。

      通過typedef定義派生類型percent——取值范圍為0到100的無符號整數(shù)。隨后,定義了一個名為completed的leaf,其類型為上面定義的派生類型percent。

      標(biāo)準(zhǔn)YANG的開發(fā)步驟

      總體來說,標(biāo)準(zhǔn)yang開發(fā)整個過程如下:

      標(biāo)準(zhǔn)yang--->需要映射的主機復(fù)雜類-->主機映射yin文件---->devation文件--->app腳本

      (1)首先要拿到標(biāo)準(zhǔn)yang文件,可以直接去網(wǎng)上下載,根據(jù)yang文件的節(jié)點建模塊的主機復(fù)雜類,和schema的復(fù)雜類建模一致。

      (2)參考標(biāo)準(zhǔn)YANG開發(fā)指南修改yang文件,該yang文件只是臨時文件,為了轉(zhuǎn)yin文件。

      (3)使用pyang將yang文件轉(zhuǎn)為yin文件,可直接使用以前私有yang轉(zhuǎn)換工具xsd2yang,轉(zhuǎn)換過程中出現(xiàn)報錯可以不用理會,不影響yin文件的生成,yin文件生成后需要做一些小處理,yin文件里只轉(zhuǎn)出了類和字段的id,未生成類和字段名,需要自己手動添加上去。yin文件歸檔在和主機schema文件一樣的目錄即可。

      (4)生成devation.yang文件和devation.yin文件,歸檔于多產(chǎn)品目錄下

      (5)完成app lua腳本編寫,和shcema app腳本類似。

      (6)標(biāo)準(zhǔn)yang的調(diào)試手段和私有yang一致,使用MG-SOFT NetConf Browser調(diào)試驗證。

      智能云網(wǎng)

      智能云網(wǎng)社區(qū)是華為專為開發(fā)者打造的“學(xué)習(xí)、開發(fā)、驗證、交流”一站式支持與服務(wù)平臺,該平臺涵蓋多領(lǐng)域知識。目前承載了云園區(qū)網(wǎng)絡(luò),云廣域網(wǎng)絡(luò),數(shù)通網(wǎng)絡(luò)開放可編程,超融合數(shù)據(jù)中心網(wǎng)絡(luò),數(shù)通網(wǎng)絡(luò)設(shè)備開發(fā)社區(qū)共五個場景。為了響應(yīng)廣大開發(fā)者需求,還提供了開發(fā)者交流、API?體驗中心、多媒體課件、SDK工具包、開發(fā)者工具以及遠(yuǎn)程實驗室共六大工具,讓開發(fā)者輕松開發(fā)。

      數(shù)通網(wǎng)絡(luò)開放可編程社區(qū)里的數(shù)通網(wǎng)絡(luò)開放可編程系統(tǒng)以YANG模型驅(qū)動力為基礎(chǔ),提供端到端的開發(fā)可編程能力;設(shè)備驅(qū)動可編程、網(wǎng)絡(luò)業(yè)務(wù)可編程、開發(fā)設(shè)備和業(yè)務(wù)北向接口,并且提供了安全可靠的保障機制。歡迎各位前來體驗。

      歡迎大家來智能云網(wǎng)社區(qū)進行體驗學(xué)習(xí):《戳我戳我》

      *注:部分文檔來源于網(wǎng)絡(luò)

      容器

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Java虛擬機生態(tài)技術(shù)及其7種編程語言探秘(上)
      下一篇:linux系統(tǒng)下實現(xiàn)銀行家算法
      相關(guān)文章
      亚洲av午夜电影在线观看 | 亚洲人成电影福利在线播放| 五月婷婷亚洲综合| 亚洲综合色婷婷在线观看| 亚洲国产精品人久久电影| 亚洲国产精品线在线观看| 久久亚洲国产午夜精品理论片| 中文字幕亚洲电影| 亚洲综合最新无码专区| 亚洲熟女乱综合一区二区| 亚洲AV成人精品日韩一区18p| 国产综合激情在线亚洲第一页| 亚洲av无码成人精品区一本二本| 在线综合亚洲欧洲综合网站 | 亚洲国产一区二区视频网站| 国产午夜亚洲精品不卡| 国产成人亚洲综合a∨| 一本久久综合亚洲鲁鲁五月天| 国产成人+综合亚洲+天堂| 国产亚洲Av综合人人澡精品| 国产亚洲精品美女久久久久久下载| 亚洲aⅴ无码专区在线观看| 女bbbbxxxx另类亚洲| 亚洲人成色7777在线观看不卡| 亚洲欧洲自拍拍偷精品 美利坚| 2048亚洲精品国产| 中文字幕人成人乱码亚洲电影| 亚洲色婷婷六月亚洲婷婷6月| 亚洲欧洲精品无码AV| 亚洲AV无码一区二区三区系列| 亚洲AV永久无码精品| 久久久久亚洲AV片无码下载蜜桃| 亚洲美女激情视频| 亚洲一级免费视频| 亚洲熟女精品中文字幕| 爱情岛亚洲论坛在线观看| 亚洲中文字幕无码专区| 好看的电影网站亚洲一区| 精品亚洲成a人片在线观看少妇| 亚洲熟妇无码爱v在线观看| 国产精品亚洲片在线va|