Tech-invite3GPPspaceIETFspace
96959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 8530

YANG Model for Logical Network Elements

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

Top   ToC   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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   RFC8530 - 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