欢迎来到天天文库
浏览记录
ID:10266158
大小:3.54 MB
页数:23页
时间:2018-06-14
《yang模型介绍及语法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、YANG模型介绍及语法YANG模型是什么?YANG模型是一种数据建模语言,用来建模由NETCONF协议、NETCONF远端过程调用(RPCs)、和NETCONF通知(notification)操作的配置数据和状态数据。YANG建模NETCONF协议的操作和内容层(RFC4741,Section1.1)。YANG模型特性:•建模XML格式数据并由控制器元素提供功能:具有自己的语法格式,可以无差地转化为XML格式,同时通过yangtoolsplugin可以生成相应的java接口、类及方法等,为OpenDaylight内
2、部数据(控制器元素)处理编程提供了便利。•定义语义元素和他们的关系,模拟所有的元素作为一个系统,YANG模型是一种树形结构的建模语言,通过YANG模型本身的语法和语义关系可以看出其定义方式的灵活性。•YANG数据模型的XML特性提供了一种自表述数据的方式,控制器元素和采用控制器北向接口API的应用可以以一种原生格式与数据模型一起调用。•利用一种模式语言简化控制器元素和应用的开发。模块中提供功能的开发者可以定义一个模型,从而可以创建对于所提供功能的更简单的、数据类型的API。因此降低了通过服务抽象层提供的数据结构的错
3、误交互。YANG模型与NETCONF由最初YANG模型的定义可知,YANG模型与NETCONF密切相关,其产生是为了对NETCONF协议所操作的数据进行建模。最初的网络管理协议SNMP也有对应的建模语言SMI。下图给出NETCONF/YANG与SNMP/SMI相关概念对比。图1如图中所示,NETCONF在很多方面体现出对于SNMP协议的优越性,NETCONF协议由XML编码,以SSH加密,采用TCP连接,体现出更好的安全性和可靠性。下面简单引出NETCONF协议的configurationdatastore。Pic
4、YANG模型通过树形结构的节点定义描述了数据模型的层级嵌套结构以及各属性的数据类型。YANG具有自己的语法格式,也可以无差别地转换为XML格式,称之为YIN。可以使用第三方工具pyang进行转换。pyang地址:http://www.yang-central.org/twiki/pub/Main/YangTools/pyang.1.html接下来将会对YANG模型的语法和语义进行描述,说明在YANG中数据模型是如何定义的,并且以XML格式展示,以及NETCONF操作如何来操作数据。(https://tools.ie
5、tf.org/html/rfc6020#section-1)YANG模型语义及语法YANG模型主要内容图2正如之前所提到的,除去headerinformation、imports&includes、Typedefinitions之外,YANG模型的主要内容Configuration&Operationaldatadeclarations和Action(RPC)&Notificationdeclarations对应了YANG模型定义中的“NETCONF协议、NETCONF远端过程调用(RPCs)、和NETCONF通知
6、(notification)”。下面将通过基本示例来介绍以上所述主要内容。YANGHEADER图3上图所示是一个YANG文件的HEADER,其中modulename(vxlan)要与YANG文件的文件名一致(即这个YANG文件的名字为vxlan.yang),namespace用来唯一标识这个YANG模型与其他YANG模型不同,prefix作为namespace的一种简写,其次import用来定义导入的其他YANG模型,注意到在后面的大括号中包括这个YANG模型的prefix和revision-data。revisi
7、on用来唯一定义这个YANG模型的revision。其余一些organization、contact、description定义仅用于描述。YANG模型是一个XML格式定义语言。另外,针对上图示例中没有体现的“include”来说,include是用于将sub-module引入到module里面,这个module不一定要有一个文件。Submodule没有namespace而是以belongs-to来表征属于哪一个mainmodule.YANGTYPESDataTypeYANG模型的DataType包括BaseTyp
8、e和DerivedType,BaseType即为一个简单的类型,DerivedType或许是typedefs定义的一个BaseType或许是grouping定义的具有结构的类型。接下来在TypedefStatement和GroupingStatement中将会进一步介绍DerivedType。BaseTypeTheleafStatementTheleaf-l
此文档下载收益归作者所有