The notification Statement
图4
https://wiki.opendaylight.org/view/YANG Tools:YANG to Java Mapping
Typedef Statement
在Typedef中还包涵诸如“rang”、“length”的细节定义,有兴趣可查看rfc6020
图5
图中定义实现了一个“percent”类型(Derived Type),
Container Statement
作为data store有效入口的存在,可以理解为从container处以下的值才是有效的,没有值,但包含一系列的子节点
图6
Grouping Statement
定义树形结构的“暂时”树干,这么说主要是区别于container,从形式上看两者及其相似都是具有树形结构,但在运行过程中grouping是无效的数据,只有当它作为衍生类型(uses)存在于container中时才有效.
图7
Leaf Statement
leaf:用来定义属性值,如name,ID等。有值,但不包含任何子节点
List Statement
定义了一组具有相同数据结构的数据,在json格式的实例中是一个数组,在xml格式的实例中是一系列名称和结构相同的xml节点 。List中的各个元素之间通过key来唯一标识;例如nodes
图8
兼具leaf和list的特点,定义了一组相同类型的值。不包含子节点。在json格式实例中是一个数组且数组中每个元素都是一个值,在xml格式的实例中是一系列名称相同值不同的xml节点
Choice & case Statement
?choice:定义的节点结构是不完全确定的。它包含多个case子节点,代表不同的分支,分别定义了该节点的一种可能的结构。最终节点的结构是且仅能是所有分支中的一种。
Augment
YANG模型允许一个module插入附加节点到data models中,包括当前的
module(以及子mudule)或者一个外部module. 对于供应商来说,增加vendor-specific参数到标注的data model中可协作使用。
图9
Configuration & Operational Data Store
Data store中的数据存储分两种形式:config和operational ,config持有由应用所写的数据,而operational反映了设备的实际状态,从设备读取数据,如果没有错误即可以看到设备的当前实际信息。
config data store中查询流表通常不包含以路由为目的的流表项(这就是为什么operational方式可以查询到table-miss流表项,即out-port:
controller,而config方式查询不到),但是OpenDaylight开发者表示这个方面未来可以改变,而之所以这样是因为这些流通过外部的流服务(不经过dataStore和config)发送到设备,然后这些流由设备通过数据形式以operational的形式重新报回。
config具有相对于控制器的生命周期(甚至重启都可以依然存活)。这些流表项由应用添加到这里并且当有合适的设备时就会发送给它。
原则上讲openflowplugin和controller都不应该动用config。这个是为应用程序而保留的,比如FRM监听到改变就写到config里面以发送流到设备。这个可以用来做预配置-应用程序可以为一些尚未存在的设备写一些“有用的“流,一旦设备存在相关的流就会下发到其中,而不用任何应用程序的动作。 Config 一般用来下发配置(post,put),也可以获取信息(get)
Operational一般是获取实际设备信息(get),config data store的内容和operational data store的内容可能不同,但是不同模块之间两者的设计可能不太相同,举例说明:
对于openflow协议:operational反映设备的实际信息,假如下发配置,流程是config->device->operational
对于bgp协议:下发配置流程是:config->operational->device
在YANG模型中,只有当 “config true”存在时这段数据才是config data store的内容,否则均为operational data store,不定义则默认”config false”.
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库YANG模型介绍及语法(3)在线全文阅读。
相关推荐: