YANG:普通container和presence container

专注NETCONF/YANG技术科普,接受任何问题,包括我答不上来的问题。欢迎光临!欢迎提问:链接

一、container:容器的概念

container是schema tree里面的单实例的内部数据节点。container的下面会有一系列的子节点(包括:container、leaf、list等)。container本身也属于data node,但是container只有一个节点名称,并没有值。

1.1 container的单实例特点

“单实例”指表项仅有一条数据。举例:
如系统的全局属性:系统名称、系统时间,整机只有一个取值;
或者某个对象是多实例的,但对于单个对象实例仅有一个属性。如:接口的mtu值,接口本身是多实例的(设备上有很多个接口),但一个接口只能有一个mtu值。
container对应单实例节点。

二、两种风格的container:普通container和presence container

YANG支持两种类型的容器,一种是仅用于组织数据节点层次结构的容器,我们称为普通container或者NP-container(non-presence container);另一种是container节点是否存在在数据树中具有明确含义的容器,我们称为存在性容器或者presence container。
第一种普通容器,容器本身没有意义,container存在的意义仅仅是将相关的子节点聚合在一起,让YANG模型在组织形式上更清晰。因此光有普通容器而没有任何子节点(也没有含default值的叶子节点)这样的container是没有意义的。
第二种是存在性容器,顾名思义,此种容器本身的存在与否具有某种意义,代表着某种使能类的数据。

我在ietf-ntp@2022-07-05.yang文件中找到了以下这个例子:
container ntp是存在性容器,仅有此container,没有子节点表示使能了ntp协议开关。按照注释:是能ntp协议开关后,系统会尝试与NTP服务器进行系统时钟的同步。
container ntp下有个“container authentication”,是普通容器。“container authentication”的作用是将NTP协议认证的所有业务模型放在一起,在组织结构上更加清晰。NTP协议认证的业务模型包括了一个认证使能的开关,和多组认证证书(list authentication-keys)

//在ietf-ntp@2022-07-05.yang的基础上做了部分删减
  container ntp {
   
    // <-- 存在性容器
    presence "NTP is enabled and system should attempt to synchronize the system clock with an NTP server from the 'ntp/associations' list.";
    description "Configuration parameters for NTP";
    leaf port {
   
   
      type inet:port-number {
   
   
        range "123 | 1024..max";
      }
      default "123";
      description "Specify the port used to send and receive NTP packets.";
      reference "RFC 5905: Network Time Protocol Version 4...";
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值