Tech-invite   3GPPspecs   Glossaries   IETFRFCs   Groups   SIP   ABNFs   Ti+   Search in Tech-invite

in Index   Prev   Next
in Index   Prev   Next  Group: RTGWG

RFC 8530

YANG Model for Logical Network Elements

Pages: 49
Proposed STD
Part 3 of 3 – Pages 33 to 49
First   Prev   None

Top   ToC   Page 33   prevText
A.2.  Example: Self-Managed LNE

   This section describes an example of the LNE model using schema mount
   to achieve child-independent management.  An example device supports
   multiple instances of LNEs (logical routers), each of which has the
   features of Layer 2 and Layer 3 interfaces [RFC8343], a routing
   information base [RFC8349], and the OSPF protocol.  Each of these
   features is specified by a YANG model, and they are put together by
   the YANG schema mount as follows:
Top   ToC   Page 34
    module: ietf-logical-network-element
      +--rw logical-network-elements
         +--rw logical-network-element* [name]
            +--rw name           string
            +--mp root
               // The internal modules of the LNE are not visible to
               // the parent management.
               // The child manages its modules, including ietf-routing
               // and ietf-interfaces

    module: ietf-interfaces
      +--rw interfaces
         +--rw interface* [name]
            +--rw name                        string
            +--rw lne:bind-lne-name?          string
            +--ro oper-status        enumeration

    module: ietf-yang-library
      +--ro modules-state
         +--ro module-set-id    string
         +--ro module* [name revision]
            +--ro name                yang:yang-identifier

    module: ietf-system
      +--rw system
      |  +--rw contact?          string
      |  +--rw hostname?         inet:domain-name
      |  +--rw authentication {authentication}?
      |     +--rw user-authentication-order*   identityref
      |     +--rw user* [name] {local-users}?
      |        +--rw name              string
      |        +--rw password?         ianach:crypt-hash
      |        +--rw authorized-key* [name]
      |           +--rw name         string
      |           +--rw algorithm    string
      |           +--rw key-data     binary
      +--ro system-state
         +--ro platform
         |  +--ro os-name?      string
         |  +--ro os-release?   string
Top   ToC   Page 35
   To realize the above schema, the device implements the following
   schema mount instance:

   "ietf-yang-schema-mount:schema-mounts": {
     "mount-point": [
       {
         "module": "ietf-logical-network-element",
         "label": "root",
         "inline": {}
       }
     ]
   }

   By using the implementation of the YANG schema mount, an operator can
   create instances of logical routers, each with their logical router-
   specific inline modules.  An interface can be assigned to a logical
   router, so that the logical router has the permission to access this
   interface.  The OSPF protocol can then be enabled on this assigned
   interface.  Each logical router independently manages its own set of
   modules, which may or may not be the same as other logical routers.
   The following is an example of schema set implemented on one
   particular logical router:
Top   ToC   Page 36
    module: ietf-yang-library
      +--ro modules-state
         +--ro module-set-id    string
         +--ro module* [name revision]
            +--ro name                yang:yang-identifier

    module: ietf-system
      +--rw system
      |  +--rw contact?          string
      |  +--rw hostname?         inet:domain-name
      |  +--rw authentication {authentication}?
      |     +--rw user-authentication-order*   identityref
      |     +--rw user* [name] {local-users}?
      |        +--rw name              string
      |        +--rw password?         ianach:crypt-hash
      |        +--rw authorized-key* [name]
      |           +--rw name         string
      |           +--rw algorithm    string
      |           +--rw key-data     binary
      +--ro system-state
         +--ro platform
         |  +--ro os-name?      string
         |  +--ro os-release?   string

    module: ietf-routing
      +--rw routing
         +--rw router-id?                 yang:dotted-quad
         +--rw control-plane-protocols
            +--rw control-plane-protocol* [type name]
               +--rw ospf:ospf/
                  +--rw areas
                    +--rw area* [area-id]
                       +--rw interfaces
                          +--rw interface* [name]
                             +--rw name    if:interface-ref
                             +--rw cost?   uint16

    module: ietf-interfaces
      +--rw interfaces
         +--rw interface* [name]
            +--rw name                        string
            +--ro oper-status        enumeration

A.2.1.  Configuration Data

   Each of the child virtual routers is managed through its own sessions
   and configuration data.
Top   ToC   Page 37
A.2.1.1.  Logical Network Element 'vnf1'

   The following shows an example of configuration data for the LNE name
   "vnf1":

   {
     "ietf-system:system": {
       "authentication": {
         "user": [
           {
             "name": "john",
             "password": "$0$password"
           }
         ]
       }
     },
     "ietf-routing:routing": {
       "router-id": "192.0.2.1",
       "control-plane-protocols": {
         "control-plane-protocol": [
           {
             "type": "ietf-routing:ospf",
             "name": "1",
             "ietf-ospf:ospf": {
               "af": "ipv4",
               "areas": {
                 "area": [
                   {
                     "area-id": "203.0.113.1",
                     "interfaces": {
                       "interface": [
                         {
                           "name": "eth1",
                           "cost": 10
                         }
                       ]
                     }
                   }
                 ]
               }
             }
           }
         ]
       }
     },
     "ietf-interfaces:interfaces": {
       "interface": [
         {
Top   ToC   Page 38
           "name": "eth1",
           "type": "iana-if-type:ethernetCsmacd",
           "ietf-ip:ipv4": {
             "address": [
               {
                 "ip": "192.0.2.11",
                 "prefix-length": 24
               }
             ]
           }
         }
       ]
     }
   }

A.2.1.2.  Logical Network Element 'vnf2'

   The following shows an example of configuration data for the LNE name
   "vnf2":

   {
     "ietf-system:system": {
       "authentication": {
         "user": [
           {
             "name": "john",
             "password": "$0$password"
           }
         ]
       }
     },
     "ietf-routing:routing": {
       "router-id": "192.0.2.2",
       "control-plane-protocols": {
         "control-plane-protocol": [
           {
             "type": "ietf-routing:ospf",
             "name": "1",
             "ietf-ospf:ospf": {
               "af": "ipv4",
               "areas": {
                 "area": [
                   {
                     "area-id": "203.0.113.1",
                     "interfaces": {
                       "interface": [
                         {
                           "name": "eth1",
Top   ToC   Page 39
                           "cost": 10
                         }
                       ]
                     }
                   }
                 ]
               }
             }
           }
         ]
       }
     },
     "ietf-interfaces:interfaces": {
       "interface": [
         {
           "name": "eth1",
           "type": "iana-if-type:ethernetCsmacd",
           "ietf-ip:ipv4": {
             "address": [
               {
                 "ip": "192.0.2.11",
                 "prefix-length": 24
               }
             ]
           }
         }
       ]
     }
   }

A.2.2.  State Data

   The following sections show possible state data associated with the
   above configuration data.  Note that there are three views: the host
   device's view and each of the LNE's views.

A.2.2.1.  Host Device

   The following shows state data for the device hosting the example
   LNEs:

   {
     "ietf-logical-network-element:logical-network-elements": {
       "logical-network-element": [
         {
           "name": "vnf1",
           "root": {
           }
Top   ToC   Page 40
         },
         {
           "name": "vnf2",
           "root": {
           }
         }
       ]
     },

     "ietf-interfaces:interfaces": {
       "interface": [
         {
           "name": "eth0",
           "type": "iana-if-type:ethernetCsmacd",
           "oper-status": "up",
           "phys-address": "00:01:02:A1:B1:C0",
           "statistics": {
             "discontinuity-time": "2017-06-26T12:34:56-05:00"
           },
           "ietf-ip:ipv4": {
             "address": [
               {
                 "ip": "192.0.2.10",
                 "prefix-length": 24
               }
             ]
           }
         },
         {
           "name": "vnf1:eth1",
           "type": "iana-if-type:ethernetCsmacd",
           "oper-status": "up",
           "phys-address": "00:01:02:A1:B1:C1",
           "statistics": {
             "discontinuity-time": "2017-06-26T12:34:56-05:00"
           },
           "ietf-logical-network-element:bind-lne-name": "vnf1"
         },
         {
           "name": "vnf2:eth2",
           "type": "iana-if-type:ethernetCsmacd",
           "oper-status": "up",
           "phys-address": "00:01:02:A1:B1:C2",
           "statistics": {
             "discontinuity-time": "2017-06-26T12:34:56-05:00"
           },
           "ietf-logical-network-element:bind-lne-name": "vnf2"
         }
Top   ToC   Page 41
       ]
     },

     "ietf-system:system-state": {
       "platform": {
         "os-name": "NetworkOS"
       }
     },

     "ietf-yang-library:modules-state": {
       "module-set-id": "123e4567-e89b-12d3-a456-426655440000",
       "module": [
         {
           "name": "iana-if-type",
           "revision": "2014-05-08",
           "namespace": "urn:ietf:params:xml:ns:yang:iana-if-type",
           "conformance-type": "import"
         },
         {
           "name": "ietf-inet-types",
           "revision": "2013-07-15",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types",
           "conformance-type": "import"
         },
         {
           "name": "ietf-interfaces",
           "revision": "2014-05-08",
           "feature": [
             "arbitrary-names",
             "pre-provisioning"
           ],
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-interfaces",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-ip",
           "revision": "2014-06-16",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-ip",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-logical-network-element",
           "revision": "2017-03-13",
           "feature": [
             "bind-lne-name"
           ],
           "namespace":
             "urn:ietf:params:xml:ns:yang:ietf-logical-network-element",
Top   ToC   Page 42
           "conformance-type": "implement"
         },
         {
           "name": "ietf-system",
           "revision": "2014-08-06",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-system",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-yang-library",
           "revision": "2016-06-21",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-library",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-yang-schema-mount",
           "revision": "2017-05-16",
           "namespace":
             "urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-yang-types",
           "revision": "2013-07-15",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-types",
           "conformance-type": "import"
         }
       ]
     },

     "ietf-yang-schema-mount:schema-mounts": {
       "mount-point": [
         {
           "module": "ietf-logical-network-element",
           "label": "root",
           "inline": {}
         }
       ]
     }
   }
Top   ToC   Page 43
A.2.2.2.  Logical Network Element 'vnf1'

   The following shows state data for the example LNE with the name
   "vnf1":

   {
     "ietf-yang-library:modules-state": {
       "module-set-id": "123e4567-e89b-12d3-a456-426655440000",
       "module": [
         {
           "name": "iana-if-type",
           "revision": "2014-05-08",
           "namespace": "urn:ietf:params:xml:ns:yang:iana-if-type",
           "conformance-type": "import"
         },
         {
           "name": "ietf-inet-types",
           "revision": "2013-07-15",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types",
           "conformance-type": "import"
         },
         {
           "name": "ietf-interfaces",
           "revision": "2014-05-08",
           "feature": [
             "arbitrary-names",
             "pre-provisioning"
           ],
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-interfaces",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-ip",
           "revision": "2014-06-16",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-ip",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-ospf",
           "revision": "2018-03-03",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-ospf",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-routing",
           "revision": "2018-03-13",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-routing",
           "conformance-type": "implement"
Top   ToC   Page 44
         },
         {
           "name": "ietf-system",
           "revision": "2014-08-06",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-system",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-yang-library",
           "revision": "2016-06-21",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-library",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-yang-types",
           "revision": "2013-07-15",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-types",
           "conformance-type": "import"
         }
       ]
     },

     "ietf-system:system-state": {
       "platform": {
         "os-name": "NetworkOS"
       }
     },

     "ietf-routing:routing": {
       "router-id": "192.0.2.1",
       "control-plane-protocols": {
         "control-plane-protocol": [
           {
             "type": "ietf-routing:ospf",
             "name": "1",
             "ietf-ospf:ospf": {
               "af": "ipv4",
               "areas": {
                 "area": [
                   {
                     "area-id": "203.0.113.1",
                     "interfaces": {
                       "interface": [
                         {
                           "name": "eth1",
                           "cost": 10
                         }
                       ]
Top   ToC   Page 45
                     }
                   }
                 ]
               }
             }
           }
         ]
       }
     },

     "ietf-interfaces:interfaces": {
       "interface": [
         {
           "name": "eth1",
           "type": "iana-if-type:ethernetCsmacd",
           "oper-status": "up",
           "phys-address": "00:01:02:A1:B1:C1",
           "statistics": {
             "discontinuity-time": "2017-06-26T12:34:56-05:00"
           },
           "ietf-ip:ipv4": {
             "address": [
               {
                 "ip": "192.0.2.11",
                 "prefix-length": 24
               }
             ]
           }
         }
       ]
     }
   }

A.2.2.3.  Logical Network Element 'vnf2'

   The following shows state data for the example LNE with the name
   "vnf2":

   {
     "ietf-yang-library:modules-state": {
       "module-set-id": "123e4567-e89b-12d3-a456-426655440000",
       "module": [
         {
           "name": "iana-if-type",
           "revision": "2014-05-08",
           "namespace": "urn:ietf:params:xml:ns:yang:iana-if-type",
           "conformance-type": "import"
         },
Top   ToC   Page 46
         {
           "name": "ietf-inet-types",
           "revision": "2013-07-15",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types",
           "conformance-type": "import"
         },
         {
           "name": "ietf-interfaces",
           "revision": "2014-05-08",
           "feature": [
             "arbitrary-names",
             "pre-provisioning"
           ],
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-interfaces",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-ip",
           "revision": "2014-06-16",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-ip",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-ospf",
           "revision": "2018-03-03",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-ospf",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-routing",
           "revision": "2018-03-13",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-routing",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-system",
           "revision": "2014-08-06",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-system",
           "conformance-type": "implement"
         },
         {
           "name": "ietf-yang-library",
           "revision": "2016-06-21",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-library",
           "conformance-type": "implement"
         },
Top   ToC   Page 47
         {
           "name": "ietf-yang-types",
           "revision": "2013-07-15",
           "namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-types",
           "conformance-type": "import"
         }
       ]
     },

     "ietf-system:system-state": {
       "platform": {
         "os-name": "NetworkOS"
       }
     },

     "ietf-routing:routing": {
       "router-id": "192.0.2.2",
       "control-plane-protocols": {
         "control-plane-protocol": [
           {
             "type": "ietf-routing:ospf",
             "name": "1",
             "ietf-ospf:ospf": {
               "af": "ipv4",
               "areas": {
                 "area": [
                   {
                     "area-id": "203.0.113.1",
                     "interfaces": {
                       "interface": [
                         {
                           "name": "eth1",
                           "cost": 10
                         }
                       ]
                     }
                   }
                 ]
               }
             }
           }
         ]
       }
     },
Top   ToC   Page 48
     "ietf-interfaces:interfaces": {
       "interface": [
         {
           "name": "eth1",
           "type": "iana-if-type:ethernetCsmacd",
           "oper-status": "up",
           "phys-address": "00:01:02:A1:B1:C2",
           "statistics": {
             "discontinuity-time": "2017-06-26T12:34:56-05:00"
           },
           "ietf-ip:ipv4": {
             "address": [
               {
                 "ip": "192.0.2.11",
                 "prefix-length": 24
               }
             ]
           }
         }
       ]
     }
   }
Top   ToC   Page 49
Acknowledgments

   The Routing Area Yang Architecture design team members included Acee
   Lindem, Anees Shaikh, Christian Hopps, Dean Bogdanovic, Lou Berger,
   Qin Wu, Rob Shakir, Stephane Litkowski, and Yan Gang.  Useful review
   comments were also received by Martin Bjorklund, John Scudder, Dan
   Romascanu, and Taylor Yu.

   This document was motivated by, and derived from "Network Device YANG
   Logical Organization" [DEVICE-MODEL].

   Thanks to Alvaro Retana for the IESG review.

Authors' Addresses

   Lou Berger
   LabN Consulting, L.L.C.

   Email: lberger@labn.net


   Christian Hopps
   LabN Consulting, L.L.C.

   Email: chopps@chopps.org


   Acee Lindem
   Cisco Systems
   301 Midenhall Way
   Cary, NC  27513
   United States of America

   Email: acee@cisco.com


   Dean Bogdanovic
   Volta Networks

   Email: ivandean@gmail.com


   Xufeng Liu
   Volta Networks

   Email: xufeng.liu.ietf@gmail.com