前言
NETCONF(Network Configuration Protocol),該協議的配置功能非常強大,同時兼顧監控和故障管理,安全驗證和訪問控制,得到業界的一致認可,被廣泛用來配置網絡
NETCONF協議分為傳輸層、RPC層、操作層和內容層。其中,內容層是唯一沒有標准化的層,於是一種新的建模語言YANG產生了,它的目標是對NETCONF數據模型、操作進行建模,覆蓋NETCONF協議的操作層和內容層
以下詳細介紹yang文件的主要元素與語法格式
一、Modules與Submodules
一個module包含三種類型的聲明
- module-header statement(模塊頭聲明) —— 描述了該module,給出了module相關的信息。
- revision statement(版本聲明)—— 描述了該module的歷史信息。
- definition statement(定義聲明) —— 定義了數據模型的內容部分。
二、yang數據建模的節點類型
2.1 leaf nodes
一個leaf nodes包含了像integer或string這樣的簡單數據,並且沒有子節點,如:
leaf host-name{
type string;
description "hostname";
}
2.2 leaf-list nodes
一系列的leaf nodes,每個leaf都有特定類型的值
2.3 container node
將相關的節點歸總到一個subtree就是container,只能包含節點,沒有值。一個container可能會包含任何類型的任何數量的子節點(包括leafs,lists,leaf-lists以及containers)。
yang表示:
container system {
container login {
leaf message {
type string;
description
"Message given at start of login session";
}
}
}
2.4 list nodes
定義了一系列的列表項,通過名為key的leaf值唯一確定,可以包含任意類型、任意數目的子節點(包括leafs,lists,containers)
通過以上四種類型節點的組合,即可定義module
三、 state node
節點帶有"config false"標簽時,他的子結構就打上了state data的標簽,不可配置,能通過netconf操作獲取
四、 內嵌類型
+---------------------+-------------------------------------+ | Name | Description | +---------------------+-------------------------------------+ | binary | Any binary data | | bits | A set of bits or flags | | boolean | "true" or "false" | | decimal64 | 64-bit signed decimal number | | empty | A leaf that does not have any value | | enumeration | Enumerated strings | | identityref | A reference to an abstract identity | | instance-identifier | References a data tree node | | int8 | 8-bit signed integer | | int16 | 16-bit signed integer | | int32 | 32-bit signed integer | | int64 | 64-bit signed integer | | leafref | A reference to a leaf instance | | string | Human-readable string | | uint8 | 8-bit unsigned integer | | uint16 | 16-bit unsigned integer | | uint32 | 32-bit unsigned integer | | uint64 | 64-bit unsigned integer | | union | Choice of member types | +---------------------+-------------------------------------+
五、
typedef 定義衍生類型
grouping 可重用節點組
refine 重定義 重寫特定的聲明覆蓋原有grouping的定義
choice case 申明分離不相容的節點,類似於java中的switch case
augment “augment”聲明定義了在數據模型樹形結構中,新的節點插入的位置。“when”聲明了新節點生效的時間。
RPC(Remote Procedure Call) yang文件可以定義聲明RPC的輸入輸出參數
notification yang可以用來為netconf的notification做內容建模
https://www.cnblogs.com/castielangel/p/10083277.html