RFC6020 YANG-NETCONF数据建模语言.pdf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RFC6020 YANG-NETCONF数据建模语言 YANG NETCONF 数据 建模 语言
- 资源描述:
-
RFC6020 YANG-NETCONF 数据建模语言RFC6020 YANG-NETCONF数据建模语言第1页/共150页RFC6020 YANG-NETCONF 数据建模语言修订记录修订日期修改人修改内容2020-03-15程怀玺-Jade完成翻译初稿概述:YANG(Yet Another Next Generation)是一种数据建模语言,用于对NETCONF协议操纵的配 置和状态数据、NETCONF远程过程调用以及NETCONF的通知进行建模。第2页/共150页RFC6020 YANG-NETCONF 数据建模语言目录目录.31引言.122 关键字.123 术语.123.1 Mandatory 节点.144 YANG 概览.144.1 功能概述.144.2 语言概述.154.2.1 模块和子模块.164.2.2 数据建模基础.164.2.3 状态数据.194.2.4 内置类型.204.2.5 派生类型(typedef).214.2.6 可重用节点组(分组).224.2.7 选择.234.2.8 扩展数据模型(augment).244.2.9 RFC 定义.254.2.10 通知定义.265 语言概念.265.1 模块和子模块.265.1.1 模块和子模块.275.1.2 模块层次(Module Hierarchies).285.2 文件布局.295.3 XML 名称空间(Namesapce).295.3.1 YANG XML 名称空间.295.4 解析组、类型和身份标识.29第3页/共150页RFC6020 YANG-NETCONF 数据建模语言5.5 嵌套类型定义和分组.305.6 一致性.305.6.1 基本行为.315.6.2 可选特性.315.6.3 偏差.315.6.4 在hello中通告一致性信息.325.7 数据存储修改.336 YANG 语法.336.1 词,匚标,己(Lexical Tokenization).346.1.1 注释(Comments).346.1.2 Tokens.346.1.3 使用弓I号(Quoting).346.2 ID(identifiers).356.2.1 标识符和其名字空间.366.3 语句.366.3.1 语言扩展.366.4 XPath 评估.376.4.1 XPath 上下文.376.5 架构(Schema)节点标识符.377 YANG 语句.387.1 module 语句.387.1.1 模块的子语句.397.1.2 yang-version语句.407.1.3 namespace 语句.407.1.4 prefix 语句.407.1.5 import 语句.417.1.6 include 语句.417.1.7 organization 语句.427.1.8 contact 语句.427.1.9 revision 语句.42第4页/共150页RFC6020 YANG-NETCONF 数据建模语言7.1.10 使用范例.437.2 submodule 语句.437.2.1 子模块的子语句.447.2.2 子模块的子语句.457.2.3 使用范例.457.3 typedef 语句.467.3.1 typedef语句的子语句.467.3.2 typedef 的 type 语句.477.3.3 typedef 的 units 语句.477.3.4 typedef 的 default 语句.477.3.5 使用范例.477.4 type 语句.477.4.1 type的子语句.477.5 container 语句.487.5.1 在场 container(Presence Container).487.5.2 container 子语句.497.5.3 must 语句.497.5.4 must的子语句.507.5.5 presence 语句.517.5.6 容器子节点语句.517.5.7 XML 映射规贝!J.527.5.8 NETCONF edit-config操作.527.5.9 使用范例.527.6 leaf 语句.537.6.1 叶子的默认值.547.6.2 叶子的子语句.547.6.3 叶子的type语句.547.6.4 叶子的default语句.557.6.5 叶子的 mandatory 语句.557.6.6 XML映射规则.55第5页/共150页RFC6020 YANG-NETCONF 数据建模语言7.6.7 NETCONFedit-config操作.557.6.8 使用范例.567.7 leaf-list 语句.577.7.1 顺序.577.7.2 leaf-list 的子语句.577.7.3 min-elements 语句.587.7.4 max-elements 语句.587.7.5 ordered-by 语句.587.7.6 XML 映射规贝!J.597.7.7 NETCONFedit-config操作.597.7.8 使用范例.607.8 list 语句.617.8.1 list的子语句.627.8.2 list 的 key 语句.627.8.3 list 的 unique 语句.637.8.4 list的孩子节点语句.647.8.5 XML 映射规贝!J.647.8.6 NETCONF ediconfig操作.657.8.7 使用范例.657.9 choice 语句.687.9.1 choice 子语句.687.9.2 choice 的 case 语句.697.9.3 choice 的 default 语句.707.9.4 choice 的 mandatory 语句.727.9.5 XML 映射规贝!J.727.9.6 NETCONFedit-config操作.727.9.7 使用范例.727.10 anyxml 语句.737.10.1 anyxml 子语句.747.10.2 XML 映射规贝!J.74第6页/共150页RFC6020 YANG-NETCONF 数据建模语言7.10.3 NETCONFedit-config操作.747.10.4 使用范例.757.11 grouping 语句.757.11.1 group 的子语句.767.11.2 使用范例.767.12 uses 语句.767.12.1 uses 的子语句.777.12.2 refine 语句.777.12.3 XML 映射规贝!J.787.12.4 使用范例.787.13 rpc 语句.797.13.1 rpc的子语句.797.13.2 input 语句.797.13.3 output 语句.807.13.4 XML 映射规贝!J.817.13.5 使用范例.817.14 notification 语句.827.14.1 notification 的子语句.827.14.2 XML 映射规贝!J.837.14.3 使用范例.837.15 augment 语句.847.15.1 augment 的子语句.847.15.2 XML 映射规贝!J.857.15.3 使用范例.857.16 identity 语句.877.16.1 identity 的子语句.877.16.2 base 语句.877.16.3 使用范例.877.17 extension 语句.887.17.1 extension 的子语句.88第7页/共150页RFC6020 YANG-NETCONF 数据建模语言7.17.2 argument 的子语句.897.17.3 使用范例.897.18 一致性相关语句.907.18.1 feature 语句.907.18.2 if-feature 语句.917.18.3 deviation 语句.927.19 公共语句.947.19.1 config 语句.947.19.2 status 语句.947.19.3 description 语句.957.19.4 reference 语句.957.19.5 when 语句.958 约束.968.1 数据约束.968.2 约束层次.978.3 约束执行模型.978.3.1 载荷解析.978.3.2 NETCONF leaf-lists list choice、case、rpc input notification、anyxl 中的一个。schema node indentifier:架构节点标识符,一种标识架构树中一个特定节点的机制。schema tree:架构树,模型内部制定的层次树的定义。state data:状态数据,RFC4741定义的系统内部除配置数据外的只读状态数据和话统指标。第13页/共150页RFC6020 YANG-NETCONF 数据建模语言submodule:子模块,向模块提供派生类型、分组、数据节点、RPC、通知等等类型定义的模块,一个YANG模块可以由多个子模块组成。top-level data node:一个在它和模块或子模块语句之间,没有其他数据节点的节点。uese:“uses”语句用于实例化分组语句中定义的架构节点集。实例化的节点可以被改进和扩充,以使它们适应任何特定的需要。3.1 Mandatory 节点以下之一是强制(Mandatory)节点:o 包含取值为true的mandatory”的 leaf choice 或者 anyxml 节点,即 leaf、choice 或者anyxml节点中,包含取值为true的mandatory”语句;o包含取值大于0的min-elements”语句的list或leaf-list节点,即list或leaf-list 节点,包含取值大于0的min-elements”语句o 一个不包含presence”语句的容器节点,其中至少包含一个mandatory节点作为子节点;4 YANG概览4.1 功能概述YANG是用于NETCONF协议的数据建模语言,一个YANG模块定义了一个可以用于NETCONF基本操 作的数据层次结构,包括配置、状态数据、RPCs和通知,这可以完整描述NETCONF客户端和Server 间交互的所有数据。YANG将数据的层次结构模型化为一个树,树中每个节点都有一个名字,和一个取值或者一个子节点 集合。YANG对每个节点以及节点间的交互提供了清晰的、简洁的描述。YANG将数据模型组织成为模块和子模块。模块可以从其他外部模块导入数据,从子模块中包含数据。允许一个模块向其他模块定义的层次树增加数据节点,从而增强该模块定义的层次结构,同时这种增强操 作可以是条件性的,即只有满足特定条件时新的节点才会出现。YANG模型可以描述附加于数据上约束,基于其他节点是否存在或其取值,去限制层次结构中特定节 点的出现或者取值。这些约束由Client或Server强制执行,并且有效的内容必须遵从这些约束。YANG定义了一组内置数据类型,并且定义了基于内置类型增加其他类型的派生机制。派生类型可以 使用诸如指定范围(range)或模式(pattern)的方式,去限制Client或Server强制要求的,基 第14页/共150页RFC6020 YANG-NETCONF 数据建模语言于的基础类型的取值范围。它们还可以定义派生类型的约定用法,比如包含一个主机名字的基于字符串的 类型。YANG允许将节点分组,以便于复用,这些分组的实例可以完善(refine)或扩大(augment)节 点,使其可以根据特定需求裁剪节点。派生类型和分组可以定义在单独的模块或子模块中,可以在本地或 其他模块以及子模块中引入或包含它。YANG数据层次结构包括定义列表,并且列表的条目可以通过key作为键以区分每个条目。这些列表 在用户定义时排序或者被系统自动排序。对于用户排序的列表,定义了用于操纵列表条目顺序的操作。YANG模块可以被转换为一个等效的XML语法,称为YANG Independent Notation(YIN),使得 应用程序可以使用 XML 解析器或者 XSLT(Extensible Stylesheet Language Transformations)脚本,直接操作数据模型。从YANG到Y工N的转换是无损的,所以Y工N的内容可以往返回YANG。YANG在高层数据建模和底层有线编码间取得了平衡。YANG模块的读者可以看到数据模型的高层视 图,同时理解在NETCONF操作中如何编码数据。YANG是一个可以扩展的语言,允许标准机构、供应商和个人定义扩展语句。语句语法允许这些扩展 以自然的方式与标准YANG语句共存,而YANG模块中的扩展非常突出,足以使读者注意到它们。YANG抵制去解决所有问题的倾向,而是限定问题空间,以表达NETCONF的数据模型,而不是任意的 XML文档或任意的数据模型。YANG描述的数据模型更多的是使得通过NETCONF操作更加轻松。就是说,YANG就是为了建模NETCONF的配置数据和操作。为了可能的扩展,YANG 维护了与 SNMP(Simple Network Management Protocol)定义的 SMIV2(Structure of Management Information version 2 RFC2578,RFC2579)的兼容性。基于SM工v2的MHB模块可以自动地转换为YANG模块,以进行只读访问。然而,YANG不关心从YANG至I SMIv2的反向转换。和NETCONF一样,YANG致力于和设备本机管理基础架构的平滑集成,以允许实现利用其现有的访问 机制去保护或者暴露数据模型的元素。4.2 语言概述本章介绍YANG语言中一些重要的数据结构,这将有助于描述后续章节中的语言规范。这种渐进的方 式处理了 YANG的概念和语言内部相互关联的本质。YANG语句和语法从第7章开始详细描述。第15页/共150页RFC6020 YANG-NETCONF 数据建模语言4.2.1.模块和子模块模块由三种类型的语句组成:模块头语句、修订语句、定义语句。模块头语句描述模块以及模块自身 的特定信息;修订语句给出模块的修订记录;定义语句用来定义数据模型,它是模块的主体内容。NETCONF Server也许会实现多个模块,以支持相同数据的不同视图或者设备数据不连续的多个视 图。当然,Server也许只实现一个定义了所有可用数据的模块。基于模块所有者的需求,模块可以划分为多个子模块,但是,其外部视图始终是一个模块,不论是否 存在子模块或子模块的尺寸大小。“include”语句用于模块或子子模块引用其他子模块的内容,“import”语句用于引用其他模块中定 义的。4.2.2 数据建模基础YANG为数据模型定义了四种类型的节点。如下章节中的每个章节中的示例展示了 YANG的语法以及 其对应的XML表现形式。4.2.2.1 叶子节点 Leaf Nodes叶子节点包含简单的数据,比如整数或字符串。它只包括一个特定类型的值,并且没有孩子节点。YANG示例:leaf host-name type string;description Hostname for this system;)NETCONF XML 示例: 第7.6章节介绍“leaf”语句。4.2.2.2 叶子列表节点 LeaList Nodes叶子列表节点是一个叶子节点的列表(可以理解为单个类型的元素组成的数组),列表中每个叶子节 点有且仅有一个特定类型的值。YANG示例:leaf-list domain-search 第16页/共150页RFC6020 YANG-NETCONF 数据建模语言type string;description List of domain names to search;)NETCONF XML 示例: 第7.6章节介绍leaf-list”语句。4.2.2.3 容器节点 Container Nodes容器节点用于组织子树中的相关节点,容器节点没有值,只有孩子节点。容器节点可以包含任意类型 的任意数目的孩子节点,孩子节点的类型可以是叶子节点、列表节点、容器、以及叶子列表。YANG示例:container system container login leaf message type string;description Message given at start of login session;)NETCONF XML 示例:Good morning 容器节点的描述在7.5章节。4.2.2.4 歹ij表节点 List Nodes列表由一系列列表条目组成,每个条目就像一个结构或记录的实例,并且通过它的键叶叶子的值唯一 识别。列表可以指定多个键叶叶子,并且可以包含任意类型的任意数目的孩子节点(节点的类型可以是叶 子节点、列表节点、容器节点等等)。YANG示例:list user 第17页/共150页RFC6020 YANG-NETCONF 数据建模语言key name;leaf name type string;I leaf full-name type string;I leaf class type string;)NETCONF XML 示例:glocksGoldie Locks intruder snoweySnow White free-loader rzellRapun Zell/tower 列表的定义在7.8章节。4.2.2.5 模块示例这些语句组合定义了一个模块:/Contents of acme-system.yangmodule acme-system namespace http:/ acme;organization ACME Inc.contact ;descriptionThe module for entities implementing the ACME system.;revision 2007-06-09 description Initial revision.;第18页/共150页RFC6020 YANG-NETCONF 数据建模语言container system leaf host-name type string;description Hostname for this system;I leaf-list domain-search type string;description List of domain names to search;I container login leaf message type string;descriptionMessage given at start of login session;I list user key name;leaf name type string;)leaf full-name type string;)leaf class type string;)4.2.3 状态数据YANG可以基丁 config”语句为状态数据和配置数据建模,当一个节点被打上“config false”标签,那么它的子层次被标志为状态数据,可以通过使用NETCONF的get操作上报,而不是get-config操作。同时,其父亲容器、列表以及键叶叶子会一起上报,以给出状态数据的上下文信息。在下边这个例子中,每个接口定义了两个叶子节点,一个是配置速度,另一个是观察速度。其中观察速度 不是配置,所以它会被NETCONF的get操作返回,而不是get-config操作。观察速度不是配置数据,因止匕它不能被edit-conf ig操纵。list interface key“name”;第19页/共150页RFC6020 YANG-NETCONF 数据建模语言leaf name type string;Ileaf speed type enumeration enum 10m;enum 100m;enum auto;)leaf observed-speed type uint32;config false;)NETCONF XML 示例:fei lun auto l0m zhou100m/interface4.2.4 内置类型YANG语言和其他许多编程语言一样,定义了一组内置类型,但是由于管理域的需求不同,存在一些差异。如下表格汇总了将在第9章介绍的内置类型。名字描述binary任何二进制数据bits位或标志的集合booleantrue 或者 falsedecimal6464-bit有符号10进制整数empty一个没有任何值的叶子节点enumeration枚举字符串第20页/共150页RFC6020 YANG-NETCONF 数据建模语言identifyref对抽象标识的引用instance-identifier对数据树节点的引用int88-bit有符号整数intl616-bit有符号整数int3232-bit有符号整数int6464-bit有符号整数leafrefleaf实例的引用string人类可读的字符串uint88-bit无符号整数uintl616-bit无符号整数uint3232-bit无符号整数uint6464-bit无符号整数union成员类型选择类型语句在7.4章节详细介绍。4.2.5 派生类型(typedef)YANG可以使用typedef语句从基础类型派生其他类型,基础类型可以是内置类型或其他派生类型,以允许派生类型的层次结构。派生类型可以用作“type”语句的参数。YANG示例:typedef percent type uint8 range 0.100;)description Percentage;0leaf completed type percent;NETCONF XML 示例:第21页/共150页RFC6020 YANG-NETCONF 数据建模语言20在7.3章节介绍typedef”语句。4.2.6 可重用节点组(分组)一组节点可以通过使用“grouping”语句组合成可重用的集合,分组定义了一个通过“uses”实例化 的节点集合:grouping target leaf address type inet:ip-address;description Target IP address;I leaf port type inet:port-number;description Target port number;I)container peer container destination uses target;)NETCONF XML 示例:l92.0.2.1 830 分组可以在使用时进行改进,使得特定的语句被重写。在下边这个例子中,描述(description)被 重写了:container connection container source uses target refine address description Source IP address;I refine port 第22页/共150页RFC6020 YANG-NETCONF 数据建模语言description Source port number;)container destination uses target refine address description Destination IP address;I refine port description Destination port number;)分组语句在第7.11章节描述。4.2.7 选择YANG允许数据模型使用”choice”和“case”(类姒C语音switch case)将不兼容节点类型分为 不同的选择。choice”语句包含了一组“case”浴句,“case”语句定义了不能同时出现的架构节点的集 合。每个“case”语句可以包含多个节点,但是“choice”下的每个“case”也可以只包含一个节点。当一个case下的元素被创建时,其他所有case下的元素都被隐式的删除。设备处理该约束的强制执行,以防止与现有配置的不兼容性。choice和case节点都仅出现在架构树中,不会出现在数据树或NETCONF消息中。除了概念性的 架构外,不需要额外的层次结构。YANG示例:container food choice snack case sports-arena leaf pretzel leaf beer case late-night leaf chocolate 第23页/共150页RFC6020 YANG-NETCONF 数据建模语言type enumeration enum dark;enum milk;enum first-available;NETCONF XML 示例:choice”语句在7.9章节中描述。4.2.8 扩展数据模型(augment)YANG允许模块将其他节点插入到数据模型中,包括当前模块(或它的子模块)或者外部模块。例如,这对供应商很有价值,使得供应商可以以可互操作的方式将其特定的参数添加到标准数据模型中。YANG语言的”augment”语句定义了数据模型层次结构中插入其他节点的位置,并且“when”语句指定 了在什么条件下,新的节点是有效的。YANG示例:augment/system/login/user when class!=wheel;leaf uid type uintl6 range 1000.30000;I)在上边的例子中,当user的class不是wheel时,插入uid节点。如果一个模块扩充(augments)了其它模块,则数据的XML呈现将反应扩展定义所在模块的前缀。比如,如果上面的扩充内容在一个以“other”为前缀的模块中,则相应的XML将如下所示:NETCONF XML 示例:第24页/共150页RFC6020 YANG-NETCONF 数据建模语言alicewAlice N.Wonderlanddrop-out1024“augment”语句的描述在7.15章节。4.2.9 RFC 定义YANG允许定义NETCONF RPCs。使用YANG的数据定义语句,可以对操作名字、输入参数、输出参数进行建模。YANG示例:rpc activate-software-image input leaf image-name)output leaf status type string;)NETCONF XML 示例:activate-software-image xmlns=,http:/ xmlns=http:/ image acmefw-2.3 is being installed.“rpc”语句的介绍在7.13章节。第25页/共150页RFC6020 YANG-NETCONF 数据建模语言4.2.10 通知定义YANG允许定义适合于NETCONF的通知,YANG的数据定义语句可以用于为通知的内容进行建模。YANG示例:notification link-failure description“A link failure has been detected;leaf if-name type leafref path/interface/name;)leaf if-admin-status type admin-status;I leaf if-oper-status type oper-status;I)NETCONF XML 示例:2007-09-01T10:00:0 0 Z(link-failure xmlns=http:/ so-l/2/3.0 up down /notificationnotification”在 7.14 章节描述。5语言概念5模块和子模块模块是YANG定义的基本单元,一个模块定义了一个单独的数据模型,一个模块可以定义一个完整的、内聚的模型(不依赖于第三方模块),或者使用其他节点扩充(augment)现有的数据模型。子模块(Submodule)是为模块提供定义的部分模块(partial module),一个模块也许包含任 意数量的子模块,但是每个子模块仅能属于一个模块。第26页/共150页RFC6020 YANG-NETCONF 数据建模语言所有模块和子模块的名字必须是唯一的,因此建议企业模块的开发者为他们的模块选择的名字要尽量 降低与其他厂商的模块或者标准模块的名字冲突的概率。比如,使用企业名称或组织名称作为模块名字的 前缀。模块使用”include”语句包含它的子模块,并且使用“import”语句引用外部的模块。同样地,子模 块使用”import”引用其他模块,并且使用“include”引用模块内部的其他子模块。一个模块或子模块不 得包含其他模块的子模块,并且子模块不得import它自身的模块。include语句是包含,import 语句是导入,可以包含属于同一模块内部的子模块,而外部模块要用导入语句。import和include语句用于将定义对其他模块或子模块变得可用:o模块或子模块引用外部模块的定义时,外部模块必须被导入(imported)o 一个模块要引用自身子模块内的定义,它必须包含(include)这个子模块o 一个子模块要引用二级子模块内部的定义,该子模块必须包含(include)该二级子模块禁止出现任何import或include的循环链。例如,如果子模块a包含了子模块b,则b不能包含 a o当外部模块的一个定义被引用时,必须为其使用一个本地定义的前缀,并紧跟“:“,然后是外部标识 符。引用本地模块的定义也可以使用前缀表示法。因为内置的数据属性不属于任何模块,并且没有前缀,引用内置数据类型(比如int32)不能使用前缀表示法。5.1.1 模块和子模块发布的模块会随着时间独立演进。为了允许这种演进,模块需要使用特定的修订版本被导入。当编写 模块时,它使用了其他模块当时可用的修订版本。随着被导入模块新修订版本的发布,importing模块(导入其他模块的模块)不受影响,它的内容保持不变。当模块的作者准备迁移到被导入模块的最新发布 的修订版本时,该模块可以通过更新的import语句重新发布。通过指定新的修订重发布模块,作者显式 地指示重发布的模块接受了被导入模块的任何变化。对于子模块,问题是相似的。一个包含其他子模块的模块或子模块,需要指定被包含模块的修订版本 号。如果一个子模块发生了变更,任何包含它的模块或子模块都需要进行更新。比如,模块b”导入了模块a”:module a revision 2008-01-01 grouping a leaf eh .第27页/共150页RFC6020 YANG-NETCONF 数据建模语言module b import a prefix p;revision-date 2008-01-01;container bee uses p:a;)当模块”a”的作者发布了新的修订版本时,修订变化对于模块“b”的作者也许是不可接受的。如果此 次修订可以接受,则模块的作者可以通过更新“import”语句中的修订版本,从而重新发布模块”b”。5.1.2 模块层次(Module Hierarchies)YANG允许多层次的数据模型,其中数据也许会包含多对于一个顶层节点。有多个顶层节点的模型有 时是方便的,所以被YANG所支持。NETCONF能够在和data元素中携带任何XML内容作为有效载荷,YANG模块的顶级节 点可以以任意顺序编码为这些元素的孩子元素,这封装伊济了相应的NETCONF消息总是良构的XML文档。举例来说:module my-config namespace http:/ co;container system .container routing .)在NETCONF中编码为:第28页/共150页RFC6020 YANG-NETCONF 数据建模语言5.2文件布局YANG模块和子模块通常情况下保存在文件中,一般是一个模块或子模块一个文件。文件的名字应该 是如下格式:module-or-submodule-name 飞,revision-date(.yangz/.yinz)YANG编译器通过此约定找到被导入(imported)或被包含(included)的子模块。YANG语言定义模 块时,工具可能出于性能和管理上的原因,单独编译子模块。错误和告警在单独编译子模块可能无法检测出来,从而推迟到子模块被链接进内聚的模块时为止。5.3 XML 名称空间(Namesapce)YANG指定的所有的定义都被绑定到一个特定的XML名称空间(参考XML-NAMES),它是一个全 球唯一的UR工(参考RFC3986)。NETCONF客户端或Server对数据进行XML编码时使用该名称空间。RFC stream 参考RFC4844中发布的模块的命名空间必须由工ANA分配,请参见第14节。私有模块的名称空间由模块所属的组织自己分配,而不需要到工NAN这种集中的管理机构登记。名称 空间URI必须避免标准或其他公司的名称空间冲突,比如通过在名称空间中使用企业或组织的名字。“名称空间”在7.1.3章节中描述。5.3.1 YANG XML名称空间YANG为NETCONF edit-ccmf ig操作和error-info内容定义了一个XML名字空间。名字空 间的名字是:urn:ietf:params:xml:ns:yang:1o5.4 解析组、类型和标识名称分组、类型和标识名称在其定义的上下文中解析,而不是它们使用的上下文。分组(groupings)、类型定义(typedefs)和标识名称(identities)的使用者不需要导入或包含子模块去满足原始定义 所做的所有引用。这一点类似于传统编程语言中的静态作用域。第29页/共150页RFC6020 YANG-NETCONF 数据建模语言举例来说,如果一个模块定义了一个分组,其中一个类型是引用而来,当这个分组被用在二级模块中 时,这个引用来的类型在原始模块的上下文中解析,而不是在二级模块中。不必担心冲突,即使两个模块 都定义了这个类型,因为没有歧义。5.5 嵌套类型定义和分组类型定义(typedefs)和分组(groupings)可以嵌套在许多YANG语句之下,使得这些类型定义和 分组的范围限定在他们出现的层次结构下。这使得类型定义和分组可以定义在靠近使用他们的地方,而不 是将他们放置于层次的顶层。在临近使用的地方定义,增加了可读性,此称为范围界定(scoping)。范围界定也允许类型定义,而不必担心不同子模块间不同类型名称的冲突问题。可以在不添加旨在防 止大型模块内名称冲突的前导字符串的情况下指定类型名称。最后,范围界定使得模块作者将类型定义和分组保持为模块或子模块自有,以防止重用。因为只有顶 层(top-level)的类型和分组(即作为模块的子语句或者子模块语句)可以被外部模块或子模块使用,开发者可以更好的控制,他们的模块的哪些部分可以对外部世界呈现,支持隐藏内部信息的需要,并在什 么东西可以共享给外部世界和什么东西要保持私有之间维护一个界限。范围界定不能shadow上层的定义(类似C语言用同名的局部变量在不同层级的作用域重定义,NETCONF 不允许这样使用)。一个类型或分组不能被定义,如果架构层次内的上个层次已经定义了一个相同的标识符。对一个不带前缀的类型或分组的引用,或者使用了当前模块的前缀,采用就近解析的原则:在其引用位置 所在的每个祖先的每个子语句中查找匹配的类型定义(typedef)或分组语句(grouping)05.6 一致性一致性是对一个设备满足模型准确程度的度量。一般来说,设备有责任忠实的实现模型,使得应用程序同 等地对待实现模型的每一个设备。对模型实现的偏差会降低模型的实用性,同时会增加使用该模型的应用程序 的脆弱性。YANG模型作者要从三个方面考虑一致性:o模型的基本行为o模型的可选特性O相对模型的偏差我们将逐一讨论每个方面。第30页/共150页RFC6020 YANG-NETCONF 数据建模语言5.6.1 基本行为模型在NETCONF客户端和Server间建立展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




RFC6020 YANG-NETCONF数据建模语言.pdf



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/277028.html