精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenDaylight中的YANG

汽車電子技術 ? 來源:碼農與軟件時代 ? 作者:碼農與軟件時代 ? 2023-02-14 15:10 ? 次閱讀

從本篇內容開始,我們將深入到OpenDaylight的核心內容:YANG、DataStore、RPC、Notification和MD-SAL等。本篇作核心內容的第一篇,我們將沿著“為什么?什么是?如何用?”的思路進行介紹。

圖片

圖片來自網絡

一、為什么出現YANG?

YANG是和NETCONF相伴而生的,而NETCONF作為網絡管理協議,包含安全傳輸層、消息層、操作層和內容層,其中內容層沒有標準化,操作層允許自定義RPC,而這兩者的標準化建模就是由YANG來完成的。

圖片

二、什么是YANG?

2.1.概述

YANG(Yet Another Next Generation)是NETCONF的數據建模語言,YANG1.0由RFC6020定義,YANG1.1由RFC7950定義,類似于XML Schema和SNMP的SMI,具有良好的可讀性和可擴展性。其關鍵特性:

①服務和網元數據模型:YANG是數據建模語言;

②領域專用語言:專為網絡配置而生,可進行網元\\服務配置建模。

YANG定義了數據層次結構:包括配置和狀態(tài)數據,遠程過程調用(RPC)和通知(Notification)。

圖片

2.2.基本結構

YANG將數據模型結構化為模塊和子模塊。模塊是YANG中定義的基本單位; 它定義了一個單一的數據模型。可以擴充模塊的層次結構,允許一個模塊將數據節(jié)點添加到另一個模塊中定義的層次結構中。如下圖所示:

圖片

YANG模塊包含如下部分:

圖片

  • Header information:用于唯一標識我們的模塊。 包含有關模塊及其歷史(修訂版)的一般信息
  • Imports & includes:指定模塊與其他模塊/子模塊之間的依賴關系。
  • Type definitions:定義將在模塊的數據建模中使用的不同數據類型。
  • Configuration & Operational data declarations:定義配置和操作數據結構。
  • Action(RPC)&Notification declarations:聲明RPC和通知語句的位置。

2.3數據類型

2.3.1內置類型

YANG定義了一組內置類型,與編程語言類似,如下圖所示:

圖片

**2.3.2 **派生類型

YANG提供了一種類型派生機制,可以使用范圍或模式限制等機制來限制其基類型的有效值集。YANG使用“typedef”語句從基類型定義派生類型?;愋涂梢允莾戎妙愋?,也可以是其他派生類型。如下圖所示,從內置字符串類型定義了派生類型DisplayString,并將值的范圍限制為0到255。

圖片

2.4數據節(jié)點類型

2.4.1 基本類型

YANG定義了四種用于建模數據的基本節(jié)點類型:

①Leaf(葉子):一個實例,具有一個值且沒有子節(jié)點的節(jié)點。YANG和XML對應關系:

圖片圖片

②Leaflist(葉子列表):多個實例,是一系列葉子節(jié)點,每個葉子有一個值,沒有子節(jié)點。YANG和XML對應關系:

圖片

③Container:一個實例,只有子節(jié)點,沒有值,包含任何類型的任何數量的子節(jié)點(包括leaf、list、leaf-list以及container)。YANG和XML對應關系:

圖片

④List:多個實例,保存相關節(jié)點。每個實例都由一個鍵標識。YANG和XML對應關系:

圖片

2.4.2 grouping

可以使用“grouping”語句將節(jié)點組裝成可重用的集合。grouping使用'uses'語句實例化節(jié)點,使用'refine'語句進行修改,以便根據特定需求定制相應的節(jié)點。grouping YANG和XML對應關系:

圖片

“grouping”語句不是數據定義語句,不定義數據樹中的任何節(jié)點,可以被視為構建數據的機制。

2.4.3 Choices

YANG允許數據模型使用“choice”和“case”語句將不兼容的節(jié)點分離為不同的選擇?!癱hoice”語句包含一組“case”語句,用于定義無法一起出現的模式節(jié)點集。YANG和XML對應關系:

圖片

2.4.4 augment

“augment”語句定義數據模型層次結構中插入新節(jié)點的位置,“when”語句定義新節(jié)點有效時的條件。YANG和XML對應關系:

圖片

此示例定義了一個“uid”節(jié)點,該節(jié)點僅在用戶的“類”不是“wheel”時才有效。 如果模塊擴充另一個模塊,則數據的XML表示將反映擴充模塊的前綴。 例如,如果上面的擴充位于帶有“other”前綴的模塊中,則XML看起來像:

圖片

**2.4.5 **RPC

YANG可以定義NETCONF RPC。 使用YANG數據定義語句對操作的名稱,輸入參數和輸出參數進行建模。YANG和XML對應關系:

圖片

2.4.6 Notification

YANG允許定義適合NETCONF的通知。 YANG數據定義語句用于建模通知的內容。YANG和XML對應關系:

圖片

三、YANG文件來自哪里?

YANG文件來自于工業(yè)標準和設備供應商兩部分。工業(yè)標準又包含IETF、ITU等組織的標準定義和符合標準,如:ietf-diffserv-policy.yang、ietf-diffserv-classifer.yang、ietf-diffserv-target.yang。設備供應商如思科、華為定義的私有標準。

四、YANG在OpenDaylight中的應用

4.1 概述

OpenDaylight現有版本采用MD-SAL(模型驅動)的設計思想,使用Yang模型和工具來定義全部的API,YANG充當“M”的角色。在SDN的架構體系下,從YANG文件所處位置的角度,可以將YANG大致分為:設備YANG、插件YANG和北向接口YANG。那么,OpenDaylight中定義的YANG模型有哪些呢?我們可以在如下鏈接中找到SAL和各種插件定義的YANG模型:

https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Model_Reference

這么多的YANG文件,在OpenDaylight中YANG的管理由YANGTools項目負責,該項目包含以下模塊:YANG模型的代碼生成、YANG和DOM/Java格式之間的映射、DataStore的建模及其操作(RPC和通知)、提供RESTCONF訪問數據等。其中,YANG到JAVA代碼的映射,可參考如下鏈接:

https://wiki.opendaylight.org/view/YANG_Tools:YANG_to_Java_Mapping

4.2 YANG UI

4.2.1 什么是YANG UI?

為了簡化和促進Open Daylight應用程序的開發(fā),Open Daylight提供了

基于YANG模型生成并呈現簡單的界面,相關的feature有odl-dlux-core、odl-dluxapps-yangman、odl-dluxapps-yangui、odl-dluxapps-yangvisualizer等等,如下圖所示:

圖片

4.2.2 YANG UI示例

啟動OpenDaylight控制器后,在瀏覽器輸入如下URL地址,將顯示YANG UI的界面:http://127.0.0.1:8181/index.html#/yangui/index

圖片

那么,YANGUI是如何從ODL中檢索到這些module信息的呢?我們打開瀏覽器開發(fā)者工具,再次請求可以看到如下信息:

請求URL地址為:http://127.0.0.1:8181/restconf/modules,返回內容的格式為json。

圖片

圖片

詳情信息如下所示:

圖片

獲取module:network-topology的詳細信息,請求URL地址為:

http://127.0.0.1:8181/restconf/modules/module/ietf-network-topology/2015-06-08/schema

返回內容的格式為yin+xml。

圖片

圖片

通過上面的分析可知,YANG UI的數據與協議交互關系如下圖所示:

圖片

4.2.3 YANG模型開發(fā)

在《從零開始學OpenDaylight之三:Hello示例》一文中,我們知道基于MD-SAL的開發(fā)流程如下圖所示:

圖片

那么YANG模型的開發(fā)流程又是怎樣的呢?我們可遵循如下流程:

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • RPC
    RPC
    +關注

    關注

    0

    文章

    111

    瀏覽量

    11515
  • 傳輸層
    +關注

    關注

    0

    文章

    29

    瀏覽量

    10878
  • 網絡管理協議

    關注

    0

    文章

    8

    瀏覽量

    7792
收藏 人收藏

    評論

    相關推薦

    經典電磁場和Yang-Mills場方程的量子表述

    經典電磁場和Yang-Mills場方程的量子表述 
    發(fā)表于 11-26 10:56

    經典電磁場和Yang-Mills場方程的量子表述

    經典電磁場和Yang-Mills場方程的量子表述:摘要:本文主要將經典電磁場和Yang-Mills 場方程擴展改寫為類中微子方程的量子形式,并將其納入一般的任意自旋粒子方程的框架。并指出
    發(fā)表于 11-26 10:57 ?14次下載

    Yang_Engineering_Optimziation_to

    優(yōu)化算法論文,屬于混沌,粒子群,遺傳算法等智能優(yōu)化算法,可以應用到控制領域
    發(fā)表于 05-10 17:06 ?7次下載

    IP知識百科之什么是YANG

    YANG的定義與產生 YANG是一種數據建模語言,可以為NETCONF等協議的數據進行定義與描述。YANG模型是對數據特征的抽象和表達,在YANG模型文件
    的頭像 發(fā)表于 11-19 10:25 ?5950次閱讀
    IP知識百科之什么是<b class='flag-5'>YANG</b>

    牽手《冬日暖央yang》!卡薩帝攜央視打造全民冰雪盛會

    2021年冬季最熱門的運動項目是什么?自然是全民關注的冰雪運動了。為助力冰雪運動,12月11日開始,卡薩帝獨家呈現的《冬日暖央yang》全民冰雪盛會在央視頻播出,超40位央視主持集結,點燃冰雪運動
    發(fā)表于 12-27 19:30 ?235次閱讀
    牽手《冬日暖央<b class='flag-5'>yang</b>》!卡薩帝攜央視打造全民冰雪盛會

    好書推薦:《基于YANG的可編程網絡》

    如果你是網絡管理員、軟件開發(fā)工程師、DevOps工程師、OSS架構師,又或是渴望入門軟件定義網絡的關鍵技術——YANG領域的技術開發(fā)人員,那就請不要錯過!
    的頭像 發(fā)表于 01-24 16:08 ?2431次閱讀

    如何從零開始學OpenDaylight

    OpenDaylight的邏輯架構分為應用層、控制器層和數據轉發(fā)層。其中,應用層聚焦網絡業(yè)務邏輯開發(fā),負責資源編排;控制器層進行全局網絡的管理;數據轉發(fā)層為各種網絡設備,負責數據的轉發(fā)。
    的頭像 發(fā)表于 02-14 14:04 ?2120次閱讀
    如何從零開始學<b class='flag-5'>OpenDaylight</b>

    OpenDaylight的運行環(huán)境

    OpenDaylight作為一種開源的SDN控制器,使用Java語言編寫,
    的頭像 發(fā)表于 02-14 14:08 ?797次閱讀
    <b class='flag-5'>OpenDaylight</b>的運行環(huán)境

    OpenDaylight的示例

    對于External System來說,我們在介紹基于REST API編程時再進行介紹。
    的頭像 發(fā)表于 02-14 14:11 ?639次閱讀
    <b class='flag-5'>OpenDaylight</b>的示例

    什么是OpenDaylight的Maven

    構建的實質是將我們編寫的Java源文件、XML配置文件、HTML頁面、CSS和JS文件等,通過某種方式組合在一起,變?yōu)榭蓪ν夥枕椖康倪^程。同時,構建過程很多都是沒有技術含量且重復的工作,手工操作很無趣且太麻煩。
    的頭像 發(fā)表于 02-14 15:02 ?1006次閱讀
    什么是<b class='flag-5'>OpenDaylight</b>的Maven

    OpenDaylight的OSGi

    從寫單個類的打印Hello World小程序到OSGi模塊化開發(fā),確實存在較大的難度,本文將從模塊化、OSGI模型以及OSGI在OpenDaylight的應用等方面進行介紹。
    的頭像 發(fā)表于 02-14 15:05 ?748次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的OSGi

    OpenDaylight的Karaf

    Karaf是一個現代的、多種形態(tài)的(polymorphic),輕量的、強大的、經過OSGI認證的企業(yè)級容器。這里的多種形態(tài)指的是它能夠容納各種應用,諸如OSGi、Spring、war等等。單從OSGi的角度來說,Karaf是OSGI的容器實例,類似tomcat是Servlet的容器實例一樣。
    的頭像 發(fā)表于 02-14 15:08 ?1633次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的Karaf

    OpenDaylight的DataStore是什么

    SDN起源于校園網,發(fā)揚光大于數據中心,現廣泛用于廣域網,SDN控制器,可能管理著數十萬臺軟交換機,下發(fā)數百萬乃至上千萬條路由信息。因此,作為SDN控制器的開源項目OpenDaylight,無論是業(yè)務邏輯還是數據存儲,
    的頭像 發(fā)表于 02-14 15:13 ?1427次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的DataStore是什么

    OpenDaylight的RPC &amp; Notification是什么

    我們將介紹RPC和Notification,并從進程內外的通信開始,著重介紹遠程過程調用和發(fā)布-訂閱機制,然后分析MD-SAL的通信交互過程。
    的頭像 發(fā)表于 02-14 15:15 ?928次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的RPC &amp; Notification是什么

    OpenDaylight的MD-SAL是什么

    一般情況下,軟件系統(tǒng)的研發(fā)分為需求獲取與分析、架構設計、代碼實現、系統(tǒng)發(fā)布、上線等階段。其中,架構設計可以細分為架構需求、分析、設計、文檔化、評審、修改和實現等過程,我們以簡化歸一,描述為:提供UI界面和消息接口服務,UI選擇B\S架構風格,消息可以是REST、SOAP以及AMQP等類型,數據庫采用關系型數據庫
    的頭像 發(fā)表于 02-14 15:17 ?1087次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的MD-SAL是什么