One document matched: draft-wang-lime-rpc-yang-oam-management-00.xml


<?xml version="1.0" encoding="US-ASCII"?>
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com)
     by Daniel M Kohn (private) -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3775 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3775.xml">
<!ENTITY RFC4225 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4225.xml">
<!ENTITY RFC4866 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4866.xml">
<!ENTITY RFC5213 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5213.xml">
<!-- added by sjjeong: -->
<!ENTITY I-D.ietf-netlmm-pmip6-ipv4-support PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-netlmm-pmip6-ipv4-support.xml">
<!ENTITY I-D.ietf-netlmm-grekey-option PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-netlmm-grekey-option.xml">
]>
<rfc category="std" docName="draft-wang-lime-rpc-yang-oam-management-00"
     ipr="trust200902">
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

  <?rfc toc="yes" ?>

  <?rfc symrefs="yes" ?>

  <?rfc sortrefs="yes"?>

  <?rfc iprnotified="no" ?>

  <?rfc strict="yes" ?>

  <front>
    <title abbrev="Layer Independent OAM Management">Additional RPC
    definitions to Generic YANG Data Model for layer Independent OAM
    Management</title>

    <author fullname="Zitao Wang" initials="Z." surname="Wang">
      <organization abbrev="Huawei">Huawei Technologies,Co.,Ltd</organization>

      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>

          <street/>

          <city>Nanjing</city>

          <region/>

          <code>210012</code>

          <country>China</country>
        </postal>

        <email>wangzitao@huawei.com</email>
      </address>
    </author>

    <author fullname="Qin Wu" initials="Q." surname="Wu">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>

          <city>Nanjing</city>

          <region>Jiangsu</region>

          <code>210012</code>

          <country>China</country>
        </postal>

        <email>bill.wu@huawei.com</email>
      </address>
    </author>

    <date year="2014"/>

    <area>OPS Area</area>

    <workgroup/>

    <abstract>
      <t>[I-D.tissa-lime-yang-oam-model] defines a Generic YANG data model for
      Layer independent OAM Management. This document proposes additional
      extension to this YANG module which is complementary to the one defined
      in the [I-D.tissa-lime-yang-oam-model] and describes the abstract
      notification and rpc command for Unified Management Plane OAM to be used
      within IETF in a layer independent manner. The abstract notification and
      rpc command described in this document can be applied to various network
      technologies and includes technology independent configuration data and
      state data.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>[I-D.tissa-lime-yang-oam-model] defines a YANG [RFC6020] data model
      for Layer independent OAM Management implementations that can be applied
      to various network technologies. This YANG module describes the abstract
      common core configuration, statistics for Unified Management Plane OAM
      to be used within IETF in a layer independent manner.This document
      describes the abstract notification and rpc command which is
      complementary to the one defined in the [I-D.tissa-lime-yang-oam-model]
      . The abstract notification and rpc command includes technology
      independent configuration data and state data.</t>
    </section>

    <section title="Conventions and Terminology">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119"/>.</t>

      <t>The following terms are defined in [RFC6241] and are not redefined
      here:</t>

      <t><list style="symbols">
          <t>client</t>

          <t>configuration data</t>

          <t>server</t>

          <t>state data</t>
        </list></t>

      <t>The following terms are defined in [RFC6020] and are not redefined
      here:</t>

      <t><list style="symbols">
          <t>augment</t>

          <t>data model</t>

          <t>data node</t>
        </list></t>

      <t>The terminology for describing YANG data models is found in
      [RFC6020].</t>

      <section title="Tree Diagrams">
        <t>A simplified graphical representation of the data model is used in
        this document. The meaning of the symbols in these diagrams is as
        follows:</t>

        <t>Each node is printed as:<figure>
            <artwork>
<status> <flags> <name> <opts> <type>

<status> is one of:
     +  for current
     x  for deprecated
     o  for obsolete


<flags> is one of:

    rw for configuration data 
    ro for non-configuration data
    -x for rpcs
    -n for notifications


<name> is the name of the node</artwork>
          </figure></t>

        <t>If the node is augmented into the tree from another module, its
        name is printed as <prefix>:<name>. <figure>
            <artwork><opts> is one of:

     ?  for an optional leaf or choice
     !  for a presence container
     *  for a leaf-list or list
     [<keys>] for a list's keys

<type> is the name of the type for leafs and leaf-lists</artwork>
          </figure></t>
      </section>
    </section>

    <section title="Overview of the abstract Notification and RPC command">
      <t>[I-D.tissa-lime-yang-oam-model] defines a Generic YANG data model for
      Layer independent OAM Management.This data model aims to address the
      problems associated with existing OAM technology deployment described in
      [I-D.edprop-opsawg-multi- layer- oam] and adopts both IEEE CFM model and
      Y.1731 model and structures it such that it can be adapted to different
      technologies.</t>

      <t>rpc commands,in YANG terms are used between the interface between
      management plane and data plane. This document defines abstract
      notification and rpc commands providing uniform APIs for common OAM
      function defined in section 3 of [RFC7276], e.g.,CC, CV, Path Discovery,
      Performance measurement.</t>

      <section title="Notification Definition">
        <t>This notification is sent whenever the operational status of MEG is
        changed.</t>

        <figure title="Snippet of data hierarchy related to Management OAM domains">
          <artwork>         notifications:
            +--n defect-condition-notification
            +--ro technology         identityref
            +--ro md-name              string
            +--ro md-level?            uint32
            +--ro ma-name              string
            +--ro mep-id?              MEP-id
            +--ro remote-mepid?        MEP-id
               +--ro oper-status       uint32
               +--ro sub-oper-status   uint32
</artwork>
        </figure>
      </section>

      <section title="Abstract CC Command Rpc">
        <t>Rpc model defined here abstracts OAM specific commands in a
        technology independent manner. Here is rpc model for Continuity
        Check(CC) command.</t>

        <figure title="Snippet of data hierarchy related to CC">
          <artwork> rpcs:

+--x contiuity-check
|  +--ro input
|  |  +--ro technology          identityref
|  |  +--ro md-level               uint32
|  |  +--ro md-name?                string
|  |  +--ro ma-name                 string
|  |  +--ro (context-id)?
|  |  |  +--:(context-null)
|  |  |     +--ro context-null?         empty
|  |  +--ro source-mep*          [mep-id,mep-addr]
|  |  |  +--ro (mep-addr)?
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?             MEP-id
|  |  +--ro destination-mep*   [mep-id,dest-mep-addr]
|  |  |  +--ro (mep-addr)?
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?              MEP-id
|  |  +--ro outgoing-interfaces* [interface]
|  |     +--ro interface    if:interface-ref
|  +--ro output
|     +--ro md-name?              string
|     +--ro ma-name?             string
|     +--ro md-level?            uint32
|     +--ro technology        identityref
|     +--ro source-mep*          [mep-id,source-mep-addr]
|     |  +--ro (source-mep-addr)?
|     |  |  +--:(mac-address)
|     |  |  |  +--ro mac-address?    yang:mac-address
|     |  |  +--:(ipv4-address)
|     |  |  |  +--ro ipv4-address?   inet:ipv4-address
|     |  |  +--:(ipv6-address)
|     |  |     +--ro ipv6-address?   inet:ipv6-address
|     |  +--ro mep-id?              MEP-id
|     +--ro destination-mep*   [mep-id,dest-mep-addr]
|     |  +--ro (destination-mep-addr)?
|     |  |  +--:(mac-address)
|     |  |  |  +--ro mac-address?    yang:mac-address
|     |  |  +--:(ipv4-address)
|     |  |  |  +--ro ipv4-address?   inet:ipv4-address
|     |  |  +--:(ipv6-address)
|     |  |     +--ro ipv6-address?   inet:ipv6-address
|     |  +--ro mep-id?              MEP-id
|     +--ro maintenance-stats
|        +--:(maintenance-null)
|           +--ro maintenance-null?          Empty

</artwork>
        </figure>
      </section>

      <section title="Abstract CV Command Rpc">
        <t>Rpc model defined here abstracts OAM specific commands in a
        technology independent manner. Here is rpc model for Connectivity
        Verification (CV) command.</t>

        <figure title="Snippet of data hierarchy related to CV">
          <artwork>rpcs:

+--x connectity-verification
|  +--ro input
|  |  +--ro technology          identityref
|  |  +--ro md-level               uint32
|  |  +--ro md-name?                string
|  |  +--ro ma-name                string
|  |  +--ro (context-id)?
|  |  |  +--:(context-null)
|  |  |     +--ro context-null?         empty
|  |  +--ro source-mep*          [mep-id,mep-addr]
|  |  |  +--ro (mep-addr)?
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?             MEP-id
|  |  +--ro destination-mep*   [mep-id,dest-mep-addr]
|  |  |  +--ro (mep-addr)?
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?              MEP-id
|  |  +--ro outgoing-interfaces* [interface]
|  |     +--ro interface    if:interface-ref
|  +--ro output
|  |  +--ro technology          identityref
|  |  +--ro md-level               uint32
|  |  +--ro md-name?                string
|  |  +--ro ma-name             string
|     +--ro source-mep*          [mep-id,source-mep-addr]
|     |  +--ro (source-mep-addr)?
|     |  |  +--:(mac-address)
|     |  |  |  +--ro mac-address?    yang:mac-address
|     |  |  +--:(ipv4-address)
|     |  |  |  +--ro ipv4-address?   inet:ipv4-address
|     |  |  +--:(ipv6-address)
|     |  |     +--ro ipv6-address?   inet:ipv6-address
|     |  +--ro mep-id?              MEP-id
|     +--ro destination-mep*   [mep-id,dest-mep-addr]
|     |  +--ro (destination-mep-addr)?
|     |  |  +--:(mac-address)
|     |  |  |  +--ro mac-address?    yang:mac-address
|     |  |  +--:(ipv4-address)
|     |  |  |  +--ro ipv4-address?   inet:ipv4-address
|     |  |  +--:(ipv6-address)
|     |  |     +--ro ipv6-address?   inet:ipv6-address
|     |  +--ro mep-id?              MEP-id
|     +--ro maintenance-stats
|        +--:(maintenance-null)
|           +--ro maintenance-null?          Empty

</artwork>
        </figure>
      </section>

      <section title="Abstract Path Discovery Command Rpc">
        <t>Rpc model defined here abstracts OAM specific commands in a
        technology independent manner. Here is rpc model for Path Discovery
        command.</t>

        <figure title="Snippet of data hierarchy related to Path Discovery">
          <artwork>rpcs:
  +--x path-discovery
  |  +--ro input
  |  |  +--ro technology          identityref
  |  |  +--ro md-level               uint32
  |  |  +--ro md-name?                string
  |  |  +--ro ma-name             string
  |  |  +--ro (context-id)?
  |  |  |  +--:(context-null)
  |  |  |     +--ro context-null?         empty
  |  |  +--ro source-mep*          [mep-id,source-mep-addr]
  |  |  |  +--ro (source-mep-addr)?      MEP-id
  |  |  |  |  +--:(mac-address)
  |  |  |  |  |  +--ro mac-address?    yang:mac-address
  |  |  |  |  +--:(ipv4-address)
  |  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
  |  |  |  |  +--:(ipv6-address)
  |  |  |  |     +--ro ipv6-address?   inet:ipv6-address
  |  |  |  +--ro mep-id?              MEP-id
  |  |  +--ro destination-mep*   [mep-id,dest-mep-addr]
  |  |  |  +--ro (destination-mep-addr)?      MEP-id
  |  |  |  |  +--:(mac-address)
  |  |  |  |  |  +--ro mac-address?    yang:mac-address
  |  |  |  |  +--:(ipv4-address)
  |  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
  |  |  |  |  +--:(ipv6-address)
  |  |  |  |     +--ro ipv6-address?   inet:ipv6-address
  |  |  |  +--ro mep-id?              MEP-id
  |  |  +--ro outgoing-interfaces* [interface]
  |  |     +--ro interface    if:interface-ref
  |  +--ro output
  |     +--ro response* [mep-id]
  |     |  +--ro md-name?                string
  |     |  +--ro ma-name                 string
  |     |  +--ro md-level                uint32
  |     +--ro source-mep*          [mep-id,source-mep-addr]
  |     |  +--ro (source-mep-addr)?      MEP-id
  |     |  |  +--:(mac-address)
  |     |  |  |  +--ro mac-address?    yang:mac-address
  |     |  |  +--:(ipv4-address)
  |     |  |  |  +--ro ipv4-address?   inet:ipv4-address
  |     |  |  +--:(ipv6-address)
  |     |  |     +--ro ipv6-address?   inet:ipv6-address
  |     |  +--ro mep-id?              MEP-id
  |     +--ro destination-mep*   [mep-id,dest-mep-addr]
  |     |  +--ro (destination-mep-addr)?      MEP-id
  |     |  |  +--:(mac-address)
  |     |  |  |  +--ro mac-address?    yang:mac-address
  |     |  |  +--:(ipv4-address)
  |     |  |  |  +--ro ipv4-address?   inet:ipv4-address
  |     |  |  +--:(ipv6-address)
  |     |  |     +--ro ipv6-address?   inet:ipv6-address
  |     |  +--ro mep-id?              MEP-id
  |     +--ro maintenance-stats
  |        +--:(maintenance-null)
  |           +--ro maintenance-null?          Empty
</artwork>
        </figure>
      </section>

      <section title="Abstract Performance Measurement Command Rpc">
        <t>Rpc model defined here abstracts OAM specific commands in a
        technology independent manner. Here is rpc model for performance
        measurement command.</t>

        <figure title="Snippet of data hierarchy related to Performance Measurement">
          <artwork>rpcs:
 +--x performance-measurement
 |  +--ro input
 |  |  +--ro technology          identityref
 |  |  +--ro md-level               uint32
 |  |  +--ro md-name?                string
 |  |  +--ro ma-name                 string
 |  |  +--ro (context-id)?
 |  |  |  +--:(context-null)
 |  |  |     +--ro context-null?         empty
 |  |  +--ro source-mep*          [mep-id,source-mep-addr]
 |  |  |  +--ro (source-mep-addr)?
 |  |  |  |  +--:(mac-address)
 |  |  |  |  |  +--ro mac-address?    yang:mac-address
 |  |  |  |  +--:(ipv4-address)
 |  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
 |  |  |  |  +--:(ipv6-address)
 |  |  |  |     +--ro ipv6-address?   inet:ipv6-address
 |  |  |  +--ro mep-id?              MEP-id
 |  |  +--ro destination-mep*   [mep-id,destination-mep-addr]
 |  |  |  +--ro (destination-mep-addr)?
 |  |  |  |  +--:(mac-address)
 |  |  |  |  |  +--ro mac-address?    yang:mac-address
 |  |  |  |  +--:(ipv4-address)
 |  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
 |  |  |  |  +--:(ipv6-address)
 |  |  |  |     +--ro ipv6-address?   inet:ipv6-address
 |  |  |  +--ro mep-id?              MEP-id
 |  |  +--ro outgoing-interfaces* [interface]
 |  |     +--ro interface    if:interface-ref
 |  +--ro output
 |  |  +--ro md-level               uint32
 |  |  +--ro md-name?                string
 |  |  +--ro ma-name             string
 |     +--ro response*
 |     +--ro source-mep*          [mep-id,source-mep-addr]
 |     |  +--ro (source-mep-addr)?
 |     |  |  +--:(mac-address)
 |     |  |  |  +--ro mac-address?    yang:mac-address
 |     |  |  +--:(ipv4-address)
 |     |  |  |  +--ro ipv4-address?   inet:ipv4-address
 |     |  |  +--:(ipv6-address)
 |     |  |     +--ro ipv6-address?   inet:ipv6-address
 |     |  +--ro mep-id?              MEP-id
 |     +--ro destination-mep*   [mep-id,destination-mep-addr]
 |     |  +--ro (destination-mep-addr)?
 |     |  |  +--:(mac-address)
 |     |  |  |  +--ro mac-address?    yang:mac-address
 |     |  |  +--:(ipv4-address)
 |     |  |  |  +--ro ipv4-address?   inet:ipv4-address
 |     |  |  +--:(ipv6-address)
 |     |  |     +--ro ipv6-address?   inet:ipv6-address
 |     |  +--ro mep-id?              MEP-id
 |     +--ro maintenance-stats
 |        +--:(maintenance-null)
 |           +--ro maintenance-null?          Empty
</artwork>
        </figure>
      </section>
    </section>

    <section title="OAM data hierarchy for Abstract Notification and rpc command">
      <t>The complete data hierarchy related to the abstract notification and
      rpc comand is presented below.</t>

      <figure title="data hierarchy of Management OAM">
        <artwork>module: gen-oam (defined in [I-D.tissa-lime-yang-oam-model])
+--rw domains
   +--rw domain* [md-name technology]
      +--rw technology        identityref
      +--rw md-name-format    MD-name-format
      +--rw md-name           binary
      +--rw md-level          int32
      +--rw MAs!
   
          .                    .
          .
          .
//the abstract rpc command and notification are defined in this document
     Please view in a fixed-width font such as Courier.

 notifications:
 +--n defect-condition-notification
 +--ro technology        identityref
 +--ro md-name              string
 +--ro md-level?           uint32
 +--ro ma-name             string
 +--ro mep-id?          MEP-id
 +--ro remote-mepid?    MEP-id
 +--ro oper-status       uint32
 +--ro sub-oper-status   uint32

+--x contiuity-check
|  +--ro input
|  |  +--ro technology          identityref
|  |  +--ro md-level               uint32
|  |  +--ro md-name?                string
|  |  +--ro ma-name                string
|  |  +--ro (context-id)?
|  |  |  +--:(context-null)
|  |  |     +--ro context-null?         empty
|  |  +--ro source-mep*          [mep-id,mep-addr]
|  |  |  +--ro (mep-addr)?
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?               MEP-id
|  |  +--ro destination-mep*   [mep-id,destination-mep-addr]
|  |  |  +--ro (mep-addr)?
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?              MEP-id
|  |  +--ro outgoing-interfaces* [interface]
|  |     +--ro interface    if:interface-ref
|  +--ro output
|  |  +--ro md-level               uint32
|  |  +--ro md-name?                string
|  |  +--ro ma-name             string
|     +--ro source-mep*          [mep-id,source-mep-addr]
|     |  +--ro (source-mep-addr)?
|     |  |  +--:(mac-address)
|     |  |  |  +--ro mac-address?    yang:mac-address
|     |  |  +--:(ipv4-address)
|     |  |  |  +--ro ipv4-address?   inet:ipv4-address
|     |  |  +--:(ipv6-address)
|     |  |     +--ro ipv6-address?   inet:ipv6-address
|     |  +--ro mep-id?              MEP-id
|     +--ro destination-mep*   [mep-id,destination-mep-addr]
|     |  +--ro (destination-mep-addr)?
|     |  |  +--:(mac-address)
|     |  |  |  +--ro mac-address?    yang:mac-address
|     |  |  +--:(ipv4-address)
|     |  |  |  +--ro ipv4-address?   inet:ipv4-address
|     |  |  +--:(ipv6-address)
|     |  |     +--ro ipv6-address?   inet:ipv6-address
|     |  +--ro mep-id?              MEP-id
|     +--ro maintenance-stats
|        +--:(maintenance-null)
|           +--ro maintenance-null?          Empty
+--x connectity-verification
|  +--ro input
|  |  +--ro technology           identityref
|  |  +--ro md-level               uint32
|  |  +--ro md-name?                string
|  |  +--ro ma-name                string
|  |  +--ro (context-id)?
|  |  |  +--:(context-null)
|  |  |     +--ro context-null?         empty
|  |  +--ro source-mep*          [mep-id,source-mep-addr]
|  |  |  +--ro (source-mep-addr)?
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?              MEP-id
|  |  +--ro destination-mep*   [mep-id,destination-mep-addr]
|  |  |  +--ro (destination-mep-addr)?
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?              MEP-id
|  |  +--ro outgoing-interfaces* [interface]
|  |     +--ro interface    if:interface-ref
|  +--ro output
|  |  +--ro md-level               uint32
|  |  +--ro md-name?                string
|  |  +--ro ma-name             string
|     +--ro source-mep*          [mep-id,source-mep-addr]
|     |  +--ro (source-mep-addr)?
|     |  |  +--:(mac-address)
|     |  |  |  +--ro mac-address?    yang:mac-address
|     |  |  +--:(ipv4-address)
|     |  |  |  +--ro ipv4-address?   inet:ipv4-address
|     |  |  +--:(ipv6-address)
|     |  |     +--ro ipv6-address?   inet:ipv6-address
|     |  +--ro mep-id?              MEP-id
|     +--ro destination-mep*   [mep-id,dest-mep-addr]
|     |  +--ro (destination-mep-addr)?
|     |  |  +--:(mac-address)
|     |  |  |  +--ro mac-address?    yang:mac-address
|     |  |  +--:(ipv4-address)
|     |  |  |  +--ro ipv4-address?   inet:ipv4-address
|     |  |  +--:(ipv6-address)
|     |  |     +--ro ipv6-address?   inet:ipv6-address
|     |  +--ro mep-id?              MEP-id
|     +--ro maintenance-stats
|        +--:(maintenance-null)
|           +--ro maintenance-null?          Empty
+--x path-discovery
|  +--ro input
|  |  +--ro technology            identityref
|  |  +--ro md-level               uint32
|  |  +--ro md-name?                string
|  |  +--ro ma-name                string
|  |  +--ro (context-id)?
|  |  |  +--:(context-null)
|  |  |     +--ro context-null?         empty
|  |  +--ro source-mep*          [mep-id,source-mep-addr]
|  |  |  +--ro (source-mep-addr)?      MEP-id
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?              MEP-id
|  |  +--ro destination-mep*   [mep-id,dest-mep-addr]
|  |  |  +--ro (destination-mep-addr)?      MEP-id
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?              MEP-id
|  |  +--ro outgoing-interfaces* [interface]
|  |     +--ro interface    if:interface-ref
|  +--ro output
|     +--ro response* [mep-id]
|     |  +--ro md-level               uint32
|     |  +--ro md-name?                string
|     |  +--ro ma-name                string
|        +--ro source-mep*      [mep-id,source-mep-addr]
|        |  +--ro (source-mep-addr)?      MEP-id
|        |  |  +--:(mac-address)
|        |  |  |  +--ro mac-address?   yang:mac-address
|        |  |  +--:(ipv4-address)
|        |  |  |  +--ro ipv4-address?  inet:ipv4-address
|        |  |  +--:(ipv6-address)
|        |  |     +--ro ipv6-address?  inet:ipv6-address
|        |  +--ro mep-id?              MEP-id
|        +--ro destination-mep* [mep-id,dest-mep-addr]
|        |  +--ro (destination-mep-addr)?      MEP-id
|        |  |  +--:(mac-address)
|        |  |  |  +--ro mac-address?    yang:mac-address
|        |  |  +--:(ipv4-address)
|        |  |  |  +--ro ipv4-address?   inet:ipv4-address
|        |  |  +--:(ipv6-address)
|        |  |     +--ro ipv6-address?   inet:ipv6-address
|        |  +--ro mep-id?              MEP-id
|        +--ro maintenance-stats
|           +--:(maintenance-null)
|             +--ro maintenance-null?          Empty
+--x performance-measurement
|  +--ro input
|  |  +--ro technology          identityref
|  |  +--ro md-level               uint32
|  |  +--ro md-name?                string
|  |  +--ro ma-name                string
|  |  +--ro (context-id)?
|  |  |  +--:(context-null)
|  |  |     +--ro context-null?         empty
|  |  +--ro source-mep*          [mep-id,source-mep-addr]
|  |  |  +--ro (source-mep-addr)?
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?              MEP-id
|  |  +--ro destination-mep*   [mep-id,dest-mep-addr]
|  |  |  +--ro (destination-mep-addr)?
|  |  |  |  +--:(mac-address)
|  |  |  |  |  +--ro mac-address?    yang:mac-address
|  |  |  |  +--:(ipv4-address)
|  |  |  |  |  +--ro ipv4-address?   inet:ipv4-address
|  |  |  |  +--:(ipv6-address)
|  |  |  |     +--ro ipv6-address?   inet:ipv6-address
|  |  |  +--ro mep-id?              MEP-id
|  |  +--ro outgoing-interfaces* [interface]
|  |     +--ro interface    if:interface-ref
|  +--ro output
|  |  +--ro md-level               uint32
|  |  +--ro md-name?                string
|  |  +--ro ma-name               string
|     +--ro source-mep*          [mep-id,source-mep-addr]
|     |  +--ro (source-mep-addr)?
|     |  |  +--:(mac-address)
|     |  |  |  +--ro mac-address?    yang:mac-address
|     |  |  +--:(ipv4-address)
|     |  |  |  +--ro ipv4-address?   inet:ipv4-address
|     |  |  +--:(ipv6-address)
|     |  |     +--ro ipv6-address?   inet:ipv6-address
|     |  +--ro mep-id?              MEP-id
|     +--ro destination-mep*   [mep-id,dest-mep-addr]
|     |  +--ro (destination-mep-addr)?
|     |  |  +--:(mac-address)
|     |  |  |  +--ro mac-address?    yang:mac-address
|     |  |  +--:(ipv4-address)
|     |  |  |  +--ro ipv4-address?   inet:ipv4-address
|     |  |  +--:(ipv6-address)
|     |  |     +--ro ipv6-address?   inet:ipv6-address
|     |  +--ro mep-id?              MEP-id
|     +--ro maintenance-stats
|        +--:(maintenance-null)
|           +--ro maintenance-null?          Empty

</artwork>
      </figure>
    </section>

    <section title="OAM YANG Module">
      <figure>
        <artwork>
<CODE BEGINS> file "ietf-layer-independent-oam-management@2014-08-07.yang"
   module gen-oam {
     namespace "urn:ietf:params:xml:ns:yang:gen-oam";
     prefix goam;

   import ietf-interfaces {
   prefix if;
   }
   import ietf-inet-types {
   prefix inet;
    }
   import ietf-yang-types {

   prefix yang;
   }

  organization "IETF LIME (Layer Independent OAM Management in Multi-Layer Environment) Working Group";

   description
   "This YANG module defines the abstract notification and rpc command for multi-layer OAM management to be used
   within IETF in a protocol independent manner.";

   revision 2014-10-23 {
   description
   "Initial revision.";
   reference " RFC XXXX: A YANG Data Model for Layer independent OAM management";
   }
   /*
   * identity definitions,
   */

   identity technology-types {
   description
    "this is the base identity of technology types which are
   ethernet, bfd, mpls, sfc, ipv4, ipv6";
   }

   identity mpls {
    base technology-types;
   description
   "mpls technology type";
   }

   identity sfc {

   base technology-types;
   description
   "sfc type";
   }

   identity ipv4 {
    base technology-types;
    description
    "technology of ipv4";
    }

   identity ipv6 {
   base technology-types;

   description
   "technology of ipv6";
   }

   /*

    * typedef definitions
   */

   typedef vni {
   type uint32;
   }

   typedef MEP-address {
   type union {
type yang:mac-address
   type inet:ipv4-address;
   type inet:ipv6-address;
   }
   description
   "Defines addresses of different MEP
   types. IPv4, IPv6";
   }

   typedef MEP-id {
   type union{
type uint32 {
   range "1..8191";
}
type yang:mac-address
    type inet:ipv4-address;
    type inet:ipv6-address;
}
   description
   "Defines type for MEPID";
    }

   typedef Context-Identifier {
   type union {
   type vni;
   type uint32;
   }
   description
   "defines context identifier types VNI, etc..";
   }

   typedef oam-counter32 {
   type yang:zero-based-counter32;

    description
    "defines 32 bit counter for OAM";
   }

   /*
   * grouping definitions

   */
grouping context-id {
       description
         "grouping for context id, this will be augmented
          by others who use this component";
       choice context-id {
         default "context-null";
         case context-null {
           description
             "this is a place holder when no context is needed";
           leaf context-null {
             type empty;
             description
               "there is no context define";
           }
         }
       }
     }

grouping maintenance-stats {
       description
         "grouping for maintenance statistics, this will be augmented
          by others who use this component";
       choice maintenance-stats {
         default "maintenance-null";
         case maintenance-null {
           description
             "this is a place holder when no maintenance statis is needed";
           leaf maintenance-null {
             type empty;
             description
               "there is no maintenance statistics to be defined";
           }
         }
       }
     }



grouping interface-status {
       description
         "collection of interface related status";
     leaf list interface-status{
         key " admin-status, oper-status ";
       leaf admin-status {
         config false;
         type leafref {
           path "/if:interfaces-state/if:interface/if:admin-status";
         }
         description
           "oper status from ietf-interface module";
       }

       leaf oper-status {
         config false;
         type leafref {
           path "/if:interfaces-state/if:interface/if:oper-status";
         }
         description
           "oper status from ietf-interface module";
       }
     }
}

leaf oper-status {
           type enumeration{
enum up;
enum down;
}
           description
" This leaf specifies the operational status of the
               Maintenance Domain (MD)";
         }

leaf sub-oper-status {
           type enumeration{
mdDown;
 maDown;
oamAppDown;
pathDown;};
           description
" This leaf specifies the reason why the MD operational
               status as mentioned by the leaf Oper-Status
               is down.

               The mdDown indicates the MD is down.
               The maDown indicates the MA table is
               down.
               The oamAppDown indicates that the
               OAM application has notified that the entity
               monitored by this MEG is down.
               The pathDown indicates that the underlying
               path is down";
         }
 }
   /*
    * below is definitions of rpc commands
   */
rpc continuity-check {

       description
         "Generates continuity-check and return response";
       input {

         leaf technology {
         type identityref;
         description
         "Defines the technology";
         }

         leaf md-name{
status current;
description
"Defines the MA-Domain name. This is a binary (octet) string
of 43 bytes";
type binary;  
}

         leaf md-level{
         mandatory true;
         status current;
         description
         "Defines the MD-Level";
         type int32;    
}

         leaf ma-name{

         mandatory true;
         description
         "Define the MA-Name according to the specified format.
         This is 43 byte string.";
         type binary;
}

        uses context-id;

         list source-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
           type MEP-id;
           }
         }

         list destination-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
           type MEP-id;
           }
         }
         list outgoing-interfaces {
           key "interface";
           leaf interface {
           type if:interface-ref;
           }
         }
       }
       output {
         
         leaf md-name{
status current;
description
"Defines the MA-Domain name. 
This is a binary (octet) string
of 43 bytes";
type binary;  
}

         leaf md-level{
         mandatory true;
         status current;
         description
         "Defines the MD-Level";
         type int32;    
}

         leaf ma-name{

         mandatory true;
         description
         "Define the MA-Name according to the specified format.
         This is 43 byte string.";
         type binary;
}

         list source-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
             type MEP-id;
           }
         }

         list destination-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
             type MEP-id;
           }
         }
         
uses maintenance-stats {
          description
         "maintenance Stats of CC";
           }
         }
}

rpc connectivity-verification {
 description
"Generates connectivity-verification and return response";
       input {

         leaf technology {
         type identityref;
         description
         "Defines the technology";
         }

         leaf md-name{
status current;
description
"Defines the MA-Domain name. This is a binary (octet) string
of 43 bytes";
type binary;  
}

         leaf md-level{
         mandatory true;
         status current;
         description
         "Defines the MD-Level";
         type int32;    
}

         leaf ma-name{

         mandatory true;
         description
         "Define the MA-Name according to the specified format.
         This is 43 byte string.";
         type binary;
}
        uses context-id;

         list source-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
           type MEP-id;
           }
         }

         list destination-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
           type MEP-id;
           }
         }
         list outgoing-interfaces {
           key "interface";
           leaf interface {
           type if:interface-ref;
           }
         }
       }
       output {
         
         leaf md-name{
status current;
description
"Defines the MA-Domain name. This is a binary (octet) string
of 43 bytes";
type binary;  
}

         leaf md-level{
         mandatory true;
         status current;
         description
         "Defines the MD-Level";
         type int32;    
}

         leaf ma-name{
         mandatory true;
         description
         "Define the MA-Name according to the specified format.
         This is 43 byte string.";
         type binary;
}
 
         list source-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
             type MEP-id;
           }
         }

         list destination-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
             type MEP-id;
           }
         }
         
uses maintenance-stats {
          description
         "maintenance Stats of CV";
           }
         }
}

rpc path discovery {
       description
          "Generates path discovery and return response";
       input {

         leaf technology {
         type identityref;
         description
         "Defines the technology";
         }

         leaf md-name{
status current;
description
"Defines the MA-Domain name. This is a binary (octet) string
of 43 bytes";
type binary;  
}

         leaf md-level{
         mandatory true;
         status current;
         description
         "Defines the MD-Level";
         type int32;    
}

         leaf ma-name{

         mandatory true;
         description
         "Define the MA-Name according to the specified format.
         This is 43 byte string.";
         type binary;
}
        uses context-id;

         list source-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
           type MEP-id;
           }
         }

         list destination-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
           type MEP-id;
           }
         }
         list outgoing-interfaces {
           key "interface";
           leaf interface {
           type if:interface-ref;
           }
         }
       }
       output {
         list response {
         key "mep-id";
         leaf md-name{
status current;
description
"Defines the MA-Domain name. This is a binary (octet) string
of 43 bytes";
type binary;  
}

         leaf md-level{
         mandatory true;
         status current;
         description
         "Defines the MD-Level";
         type int32;    
}

         leaf ma-name{

         mandatory true;
         description
         "Define the MA-Name according to the specified format.
         This is 43 byte string.";
         type binary;
}

         list source-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
             type MEP-id;
           }
         }

         list destination-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
             type MEP-id;
           }
         }
         
uses maintenance-stats {
          description
         "maintenance Stats of path discovery ";
           }
         }
    }
}



rpc performance-measurement {
       description

       "Generates performance-measurement";

       input {

         leaf technology {
         type identityref;
         description
         "Defines the technology";
         }

         leaf md-name{
         status current;
         description
         "Defines the MA-Domain name. This is a binary (octet) string
         of 43 bytes";
         type binary;  
}

         leaf md-level{
         mandatory true;
         status current;
         description
         "Defines the MD-Level";
         type int32;    
}

         leaf ma-name{

         mandatory true;
         description
         "Define the MA-Name according to the specified format.
         This is 43 byte string.";
         type binary;
}
        uses context-id;
  
         list source-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
           type MEP-id;
           }
         }

         list destination-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
           type MEP-id;
           }
         }
         list outgoing-interfaces {
           key "interface";
           leaf interface {
           type if:interface-ref;
           }
         }
       }
       output {
         
         leaf md-name{
status current;
description
"Defines the MA-Domain name. This is a binary (octet) string
of 43 bytes";
type binary;  
}

         leaf md-level{
         mandatory true;
         status current;
         description
         "Defines the MD-Level";
         type int32;    
}

         leaf ma-name{
         mandatory true;
         description
         "Define the MA-Name according to the specified format.
         This is 43 byte string.";
         type binary;
}

         list source-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
             type MEP-id;
           }
         }

         list destination-mep {
           key "[mep-id,mep-address]";
           uses mep-address;
           leaf mep-id {
             type MEP-id;
           }
         }
         
uses maintenance-stats {
          description
         "maintenance Stats of performance-measurement ";
           }
         }
}

   /*
    * below is definitions of notifications
   */

notification defect-codition-notification {
       
         leaf technology {
         type identityref;
         description
         "Defines the technology";
         }

         leaf md-name{
status current;
description
"Defines the MA-Domain name. This is a binary (octet) string
of 43 bytes";
type binary;  
}

leaf md-level{
         mandatory true;
         status current;
         description
         "Defines the MD-Level";
         type int32;    
}

         leaf ma-name{
         mandatory true;
         description
         "Define the MA-Name according to the specified format.
         This is 43 byte string.";
         type binary;
}

uses context-id;

leaf mep-id {
mandatory true;
status current;
description
"Assigm MEPID in the range of 1..8191";
         type MEP-id; 
}
         leaf remote-mepid {
         type MEP-id;
         description
         "Who is seeing the error (if known) if unknown make it 0.";
         }

leaf oper-status {
       type enumeration{
enum up;
enum down;
}
       description
" This leaf specifies the operational status of the
       Maintenance Association (MA)";
         }
leaf meg-sub-oper-status {
       type enumeration{
megDown;
       meDown;
oamAppDown;
pathDown;};
       description
" This leaf specifies the reason why the MEG operational
       status as mentioned by the leaf Meg-Oper-Status
       is down.
       The megDown indicates the MEG is down.
       The meDown indicates the ME table is
       down.
       The oamAppDown indicates that the
       OAM application has notified that the entity
       monitored by this MEG is down.
       The pathDown indicates that the underlying
       path is down";
         }
     }//the notification defection-condition-notification

   }// end ietf-layer-independent-oam-management module
</artwork>
      </figure>
    </section>

    <section title="Security Considerations">
      <t>TBD.</t>
    </section>

    <section title="IANA Considerations">
      <t>TBD.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      &rfc2119;

      <reference anchor="RFC6020">
        <front>
          <title>YANG - A Data Modeling Language for the Network Configuration
          Protocol (NETCONF)</title>

          <author fullname="M.Bjorklund" initials="M." surname="Bjorklund">
            <organization/>
          </author>

          <date month="October" year="2010"/>
        </front>

        <seriesInfo name="RFC" value="6020"/>
      </reference>

      <reference anchor="RFC6241">
        <front>
          <title>Network Configuration Protocol (NETCONF)</title>

          <author fullname="R.Enns" initials="R." surname="Enns">
            <organization/>
          </author>

          <author fullname="M.Bjorklund" initials="M." surname="Bjorklund">
            <organization/>
          </author>

          <author fullname="J.Schoenwaelder" initials="J."
                  surname="Schoenwaelder">
            <organization/>
          </author>

          <author fullname="A.Bierman " initials="A." surname="Bierman">
            <organization/>
          </author>

          <date month="June" year="2011"/>
        </front>

        <seriesInfo name="RFC" value="6241'"/>
      </reference>

      <reference anchor="I-D.edprop-opsawg-multi-layer-oam">
        <front>
          <title>Problem Statement for Layer and Technology Independent OAM in
          a Multi- Layer Environment</title>

          <author fullname="Q.Wu" initials="Q." surname="Wu">
            <organization/>
          </author>

          <date month="September" year="2014"/>
        </front>

        <seriesInfo name="ID"
                    value="http://tools.ietf.org/html/draft-edprop-opsawg-multi-layer-oam-02"/>
      </reference>
    </references>

    <references title="Informative References">
      <reference anchor="I-D.tissa-lime-yang-oam-model">
        <front>
          <title>YANG Data Model for Generic Operations, Administration, and
          Maintenance (OAM)</title>

          <author fullname="Tissa Senevirathne" initials="T."
                  surname="Senevirathne ">
            <organization/>
          </author>

          <author fullname="Q.Wu" initials="Q." surname="Wu">
            <organization/>
          </author>

          <date month="October" year="2014"/>
        </front>

        <seriesInfo name="ID"
                    value="http://tools.ietf.org/html/draft-tissa-lime-yang-oam-management-01"/>
      </reference>
    </references>
  </back>
</rfc>

PAFTECH AB 2003-20262026-04-24 08:24:08