Internet DRAFT - draft-wu-i2rs-isis-info-model

draft-wu-i2rs-isis-info-model






Network Working Group                                              N. Wu
Internet-Draft                                                   L. Wang
Intended status: Standards Track                                S. Hares
Expires: March 14, 2015                                           Huawei
                                                      September 10, 2014


                  Information model for IS-IS protocol
                    draft-wu-i2rs-isis-info-model-00

Abstract

   IS-IS is a widely deployed link-state protocol in routing networks.
   During the past decades, it has been operated and maintained through
   typical CLI, SNMP and NETCONF.  With the expansion and complication
   of modern networks, the necessity for rapid and dynamic control has
   been increased.  The I2RS is a standard-based interface which
   provides a programmatic way to achieve this goal.

   This document specifies an information model for the IS-IS protocol
   to facilitate the definition of a standardized data model, which can
   be used to define interfaces to the IS-IS from an entity that may
   even be external to the routing system.  Based on standardized data
   model and interfaces, use cases of IGP protocols defined by I2RS-WG
   can be supported.

Requirements Language

   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 RFC 2119 [RFC2119].

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on March 14, 2015.



Wu, et al.               Expires March 14, 2015                 [Page 1]

Internet-Draft           IS-IS information model          September 2014


Copyright Notice

   Copyright (c) 2014 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  IS-IS data  . . . . . . . . . . . . . . . . . . . . . . . . .   3
     2.1.  IS-IS instance  . . . . . . . . . . . . . . . . . . . . .   4
       2.1.1.  I2RS Requirements Fulfilled by this Informational
               Model . . . . . . . . . . . . . . . . . . . . . . . .   5
       2.1.2.  Instance parameters . . . . . . . . . . . . . . . . .   6
       2.1.3.  Multi-topology list(multi-topo*)  . . . . . . . . . .   7
     2.2.  IS-IS multi-topology  . . . . . . . . . . . . . . . . . .   8
       2.2.1.  Level list (level*) . . . . . . . . . . . . . . . . .   9
       2.2.2.  IS-IS MT RIB route  . . . . . . . . . . . . . . . . .   9
       2.2.3.  Circuit list (circuit*) . . . . . . . . . . . . . . .  11
       2.2.4.  Policy list (policy*) . . . . . . . . . . . . . . . .  11
     2.3.  IS-IS level . . . . . . . . . . . . . . . . . . . . . . .  11
       2.3.1.  Level I2RS YANG description . . . . . . . . . . . . .  11
       2.3.2.  Level parameters  . . . . . . . . . . . . . . . . . .  12
       2.3.3.  Link State database . . . . . . . . . . . . . . . . .  12
       2.3.4.  Link State PDU  . . . . . . . . . . . . . . . . . . .  12
     2.4.  IS-IS circuit . . . . . . . . . . . . . . . . . . . . . .  14
       2.4.1.  Circuit parameters  . . . . . . . . . . . . . . . . .  16
       2.4.2.  Circuit traffic engineering . . . . . . . . . . . . .  16
       2.4.3.  Circuit neighbor  . . . . . . . . . . . . . . . . . .  17
   3.  IS-IS notification  . . . . . . . . . . . . . . . . . . . . .  17
     3.1.  Adjacency . . . . . . . . . . . . . . . . . . . . . . . .  17
     3.2.  LSDB  . . . . . . . . . . . . . . . . . . . . . . . . . .  18
     3.3.  Route . . . . . . . . . . . . . . . . . . . . . . . . . .  18
     3.4.  TE  . . . . . . . . . . . . . . . . . . . . . . . . . . .  18
     3.5.  Protocol statistics . . . . . . . . . . . . . . . . . . .  18
   4.  IS-IS I2RS Operational Examples . . . . . . . . . . . . . . .  18
     4.1.  Transient loop avoidance  . . . . . . . . . . . . . . . .  18
     4.2.  Traffic blackhole prevention  . . . . . . . . . . . . . .  19
   5.  IS-IS grammar . . . . . . . . . . . . . . . . . . . . . . . .  19



Wu, et al.               Expires March 14, 2015                 [Page 2]

Internet-Draft           IS-IS information model          September 2014


     5.1.  Instance  . . . . . . . . . . . . . . . . . . . . . . . .  19
     5.2.  Multi-topology  . . . . . . . . . . . . . . . . . . . . .  20
     5.3.  Level . . . . . . . . . . . . . . . . . . . . . . . . . .  21
     5.4.  Circuit . . . . . . . . . . . . . . . . . . . . . . . . .  22
   6.  I2RS YANG model of IS-IS  . . . . . . . . . . . . . . . . . .  23
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  31
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .  31
   9.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  31
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  31
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  31
     10.2.  Informative References . . . . . . . . . . . . . . . . .  32
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  33

1.  Introduction

   IS-IS[ISO.10589.1992] is a widely deployed link-state protocol in
   routing networks.  During the past decades, it has been operated and
   maintained through typical CLI, SNMP and NETCONF.  With the expansion
   and complication of modern networks, the necessity for rapid and
   dynamic control has been increased.  The
   I2RS[I-D.ietf-i2rs-architecture] is a standard-based interface which
   provides a programmatic way to achieve this goal.

   This document specifies an information model for the IS-IS protocol
   to facilitate the definition of a standardized data model, which can
   be used to define interfaces to the IS-IS from an entity that may
   even be external to the routing system.  Based on standardized data
   model and interfaces, use cases of IGP protocols defined by
   [I-D.hares-i2rs-usecase-reqs-summary] can be supported.

   In order to support large intra-domain, IS-IS has been organized
   hierarchically into areas.  Routing within an area is referred to as
   Level 1 routing while routing between areas is referred to as Level 2
   routing.  Each IS-IS routing system advertises and collects link-
   state information independently then makes decision in the
   distributed manner.  The outcome of this decision is used to populate
   Routing Information Base (RIB) since IS-IS can be one of the clients
   of RIB as stated in [I-D.ietf-i2rs-rib-info-model].

2.  IS-IS data

   This section describes the data involved in the IS-IS information
   model in detail.  IS-IS data includes information related to IS-IS
   instance, IS-IS level, IS-IS multi-topology, IS-IS circuits, IS-IS
   adjacencies and IS-IS routes.  A high-level architecture of the IS-IS
   contents is shown as below.





Wu, et al.               Expires March 14, 2015                 [Page 3]

Internet-Draft           IS-IS information model          September 2014


                              IS-IS routing-protocol
                                      |0..N
                                      |
                                 IS-IS instance
                                      |1..N
                                      |
                                Multi-topology
                                      |
                                      |
           +--------------------------+----------+----------+
           |1..2                      |          |0..N      |0..N
           |                          |          |          |
         Level                      MT-RIB     Policy      Circuit
           |                          |                     |
           |                          |0..N                 |
          LSDB                       Route           +-----+--------+
           |1..N                      |              |     |0..N    |0..N
           |                          |              |     |        |
          LSP                    +-------+------+    TE   L1-NBR   L2-NBR
           |                     |       |1..N  |0..1      |        |
           |                     |       |      |          |1..N    |1..N
  +---------------+-------+     Prefix Nexthop Backup      MT       MT
  |0..N  |0..N    |0..N   |3..N                nexthop
  |      |        |       |
  IS    IPv4     IPv6    Area
reach   prefix   prefix  address
  |      |        |
  |1..N  |1..N    |1..N
  MT     MT       MT


            Figure 1: Architecture of IS-IS information model

2.1.  IS-IS instance

   In the context of IS-IS information model, instance behaves like an
   independent virtual IS-IS routing system which contains the instance
   parameters and the multi-topology list.  Multiple instances MAY be
   supported on one network device.

   The corresponding YANG description of the top level and instances is
   below.









Wu, et al.               Expires March 14, 2015                 [Page 4]

Internet-Draft           IS-IS information model          September 2014


   module: i2rs-isis-protocol
      +--rw isis-routing-protocol
         +--rw isis-instance* [name]
            +--rw name                         string
            +--rw isis-vpn-name?               string
            +--rw address-family               address-family-def
            +--rw net* [area-id]
            |  +--rw area-id                   string
            |  +--rw system-id?                string
            +--ro protocol-status?             enumeration
            +--rw level-type?                  enumeration
            +--rw metric-style?                enumeration
            +--rw lsp-mtu?                     uint32
            +--rw lsp-refresh?                 uint32
            +--rw lsp-lifetime?                uint32
            +--ro isis-instance-create-mode?   enumeration
            +--rw preference?                  uint32
            +--rw hostname?                    string
            +--rw domain-auth-info
                  ...
            +--rw area-auth-info
                  ...
            +--rw multi-topo-list* [mt-id]
                  ...

          Figure 2 YANG model of IS-IS instance

2.1.1.  I2RS Requirements Fulfilled by this Informational Model

   The following IGP requirements of I2RS Requirements Summary
   [I-D.hares-i2rs-usecase-reqs-summary] are fulfilled by this document:
   [IGP-REQ-01], [IGP-REQ-03], [IGP-REQ-04], [IGP-REQ-05], [IGP-REQ-06],
   [IGP-REQ-07], and [IGP-REQ-08].  This version of the ISIS IM only
   supports the monitoring of ISIS static and dynamic data within these
   requirements.  Later versions will include the configuration
   requirements.  The restatement of these requirements for ISIS for
   just monitoring is included below:

   o  [IGP-REQ-01]: I2RS Client/Agent SHOULD be able to read/write the
      unique ISIS identification for IS within an AS (router-id, system-
      id, or others).  I2RS agents may send a notification if another IS
      the detection of another router with the same unique ID.

   o  [IGP-REQ-03]: I2RS client should be able to aid in IGP table
      reduction by actively monitoring ISIS tables for Level information
      L1 only, L1/L2 routers, L1/L2/external routers, and L2 external
      routers.  The I2RS Client/Agent must allow for rapid cycle of
      querying ISIS topology information.



Wu, et al.               Expires March 14, 2015                 [Page 5]

Internet-Draft           IS-IS information model          September 2014


   o  [IGP-REQ-04]: The I2RS programmatic interface should allow the
      balancing of both ECMP traffic and end-to-end traffic flows in the
      IGP.  The I2RS agent should support monitoring circuits under ISIS
      control, traffic engineering (TE) parameters, LSDBs, and maximum
      capacities (circuits, LSDB, and nodes), plus policy control ISIS
      traffic via query or notification mechanisms.

   o  [IGP-REQ-05]: The I2RS interface (protocol and data models) should
      use the subscription service to filter the topology changes to the
      interested events and use the publish mechanism to control the
      pace these events are notified.  This filtering should protect the
      client or applications who depend on topology data from being
      drowned by massive original events or duplicate events from
      different sources.

   o  [IGP-REQ-06]: Since an IGP protocol is essential to the whole
      network, the I2RS Clients SHOULD monitor the protocol's running
      status before forwarding is impacted.  Performance data can be
      collected by collecting static configuration and dynamic status.
      Static configuration includes the number of instances configured
      to run a protocol, the number of interfaces configured, the
      circuits configured the number if ISIS neighbors configured, and
      others.  The dynamic state includes: actual number of instances
      running a protocol, number of multi-topology instances, and all
      data related to a MT instance (each level's LSDB, TE DB, MT-RIBs,
      Policy, and circuits).

   o  [IGP-REQ-07]: The I2RS interface [protocol and IMs] should support
      a mechanism where the I2RS clients can subscribe to the I2RS
      agent's notification.  ISIS critical events include: LSDB
      overflow, routing table overflow, circuit down or circuit's
      interface down.

   o  [IGP-REQ-08]: The I2RS interface [protocol and IMs] shuld support
      the reporting of the ISIS statistics such as dropped packet
      statistics, LSDB overflows, circuit down, (Eric-Lixing - please
      add in others you want covered here.)

2.1.2.  Instance parameters

   o  name: A name uniquely identifying IS-IS instance across all of
      those supported on one network device.

   o  isis-vpn-name: The name of the VPN instance which this instance is
      binded to.

   o  address-family: The address family of this instance.  Valid input
      MAY be IPv4, IPv6 or Both.



Wu, et al.               Expires March 14, 2015                 [Page 6]

Internet-Draft           IS-IS information model          September 2014


   o  net list (net*): The list of NET or NSAP-address which is used to
      identify the network device among interaction with other network
      devices.  Each NET MUST be unique among the routing network.

   o  protocol-status: The status of current instance.  Valid status
      could include Active, Shutdown, Overload, Reset and etc.

   o  level-type: The level type designated for current instance.  Valid
      input could be Level-1-Only, Level-2-Only or Level-1-2-Both.

   o  metric-style: The metric style of current process used to express
      metric according to different TLV.  Valid input could be Narrow or
      Wide or Compatible.

   o  lsp-mtu: The maximum size of LSP for current instance.  Range from
      512 to 16384 bytes with as 1497 as the default value.

   o  lsp-refresh: The refresh interval of LSP for current instance.
      Range from 1 to 65534 bytes with as 900 as the default value.

   o  lsp-lifetime: The refresh interval of LSP for current instance.
      Range from 2 to 65535 bytes with as 1200 as the default value.

   o  isis-instance-create-mode: The mode used to create IS-IS instance
      through I2RS Agent.

   o  preference: The IS-IS route preference for current instance.

   o  hostname: The symbolic name used to represent current instance,
      which would be more preferable for human eyes.

   o  area-auth-info: The information related to level-1 authentication,
      including password, authentication mode and other attributes.

   o  domain-auth-info: The information related to level-2
      authentication, including password, authentication mode and other
      attributes.

2.1.3.  Multi-topology list(multi-topo*)

   This represents the list of topologies associated with this IS-IS
   instance.  Each IS-IS routing protocol MAY support multiple
   topologies to represent different involvement within those
   topologies.  The list is mandatory for IS-IS process and MUST support
   one topology at least.  More discussion for this list is in the
   section below.





Wu, et al.               Expires March 14, 2015                 [Page 7]

Internet-Draft           IS-IS information model          September 2014


2.2.  IS-IS multi-topology

   A set of independent Multi-Topologies (MTs) can be supported on the
   same IS-IS routing domain.  This section describes the information
   model related to MT.  This includes the following which is shown in
   the yang high-level description in figure 3.

   o  mt-id: The identifier of this MT.  This ID is globally unique
      across the routing domain.

   o  mt-status: The status of this MT.  Valid input MAY be Active or
      Inactive.

   o  address-family: The address family supported on this MT.

   o  level list (level*): This is the list of levels supported in this
      IS-IS MT.

   o  mt-ipv4-rib: The IPv4 routing information base for this MT.

   o  mt-ipv6-rib: The IPv6 routing information base for this MT.

   o  circuit list (circuit*): This is the list of circuits supported in
      this IS-IS MT.

   o  policy list (policy*): This is the list of policies supported in
      this IS-IS MT.
























Wu, et al.               Expires March 14, 2015                 [Page 8]

Internet-Draft           IS-IS information model          September 2014


   module: i2rs-isis-protocol
      +--rw isis-routing-protocol
         +--rw isis-instance* [name]
               ...
            +--rw multi-topo-list* [mt-id]
               +--rw mt-id             uint16
               +--ro mt-status?        enumeration
               +--rw address-family    address-family-def
               +--rw level-list* [level-id]
               |  +--rw level-id       string
               |  +--rw lsdb
                        ...
               |     +--rw lsdb-status?   enumeration
               |     +--rw lsdb-size?     uint32
               |     +--ro is-number?     uint32
               +--rw mt-ipv4-rib* [ipv4-prefix]
                     ...
               +--rw mt-ipv6-rib* [ipv6-prefix]
                     ...
               +--rw circuit-list* [circuit-id]
                     ...
               +--rw policy-list* [policy-id]
                     ...

           Figure 3 YANG model of ISIS MT

2.2.1.  Level list (level*)

   This is the list of levels supported in this IS-IS MT.  It is a
   mandatory component for IS-IS MT and it MUST contain one element at
   least in the list.  The information model of level-list will be
   elaborated in the section below.

2.2.2.  IS-IS MT RIB route

   o  address-family: The address family of this route.  Valid input MAY
      be IPv4 or IPv6.

   o  prefix: The destination address of this route.

   o  prefix-length: The length of this prefix.

   o  mask: The mask of destination address.

   o  nexthop list (nexthop*): The nexthops of this route.

   o  backup-nexthop: The backup nexthop for this route.




Wu, et al.               Expires March 14, 2015                 [Page 9]

Internet-Draft           IS-IS information model          September 2014


   o  metric: The metric for this routes.

   o  type: The type for this route.  Valid input MAY be Level-1 or
      Level-2.

   o  route-state: The current and previous state of this route and the
      reason for this change.

   o  lsp-id-adv: The ID of corresponding LSP which advertised the route
      prefix.

   module: i2rs-isis-protocol
      +--rw isis-routing-protocol
         +--rw isis-instance* [name]
               ...
            +--rw multi-topo-list* [mt-id]
                  ...
               +--rw mt-ipv4-rib* [ipv4-prefix]
               |  +--rw ipv4-prefix                inet:ipv4-prefix
               |  +--rw nexthop-list* [nexthop]
               |  |  +--rw nexthop    inet:ipv4-prefix
               |  +--rw back-nexthop?              inet:ipv4-prefix
               |  +--rw ipv4-isis-route-para
               |     +--rw metric?                 uint32
               |     +--ro type?                   enumeration
               |     +--ro route-current-state?    route-state-def
               |     +--ro route-previous-state?   route-state-def
               |     +--rw lsp-id?                 inet:ipv4-prefix
               |     +--ro route-chg-reason?       enumeration
               +--rw mt-ipv6-rib* [ipv6-prefix]
               |  +--rw ipv6-prefix                inet:ipv6-prefix
               |  +--rw nexthop-list* [nexthop]
               |  |  +--rw nexthop    inet:ipv6-prefix
               |  +--rw back-nexthop?              inet:ipv4-prefix
               |  +--rw ipv6-isis-route-para
               |     +--rw metric?                 uint32
               |     +--ro type?                   enumeration
               |     +--ro route-current-state?    route-state-def
               |     +--ro route-previous-state?   route-state-def
               |     +--rw lsp-id?                 inet:ipv4-prefix
               |     +--ro route-chg-reason?       enumeration

                  Figure 4 YANG model of ISIS MT RIB








Wu, et al.               Expires March 14, 2015                [Page 10]

Internet-Draft           IS-IS information model          September 2014


2.2.3.  Circuit list (circuit*)

   This list indicates those circuits which have been involved into the
   IS-IS MT.  It is optional for the protocol and will be explained in
   the section below.

2.2.4.  Policy list (policy*)

   This list contains those policies referenced within this IS-IS MT.
   It is optional for the protocol to reference policy or not.

2.3.  IS-IS level

   IS-IS level is used to organize routing in a hierarchical manner.
   According to the level-type of current IS-IS MT, the elements in
   level-list MAY contain level-1 or level-2 or both.  Each level SHOULD
   contain information related to level parameters, link-state database
   and so on.  Below is the description of the level parameters followed
   by the high level yang description.

2.3.1.  Level I2RS YANG description

   The IGP requirement(IGP-REQ-02) of I2RS Requirements Summary
   specifies the I2RS agent SHOULD be able to aid IGP table reduction by
   actively monitoring the IGP tables and allowing temporary changes to
   IGPs in order to partition the IGPs and place ABR and ASBRs.  The
   Level information has both LSDB and TE information as shown below.

   module: i2rs-isis-protocol
      +--rw isis-routing-protocol
         +--rw isis-instance* [name]
               ...
            +--rw multi-topo-list* [mt-id]
                  ...
               +--rw level-list* [level-id]
               |  +--rw level-id    string
               |  +--rw lsdb
               |     +--rw lsp* [lsp-id sequence-number checksum]
                           ...
               |     +--rw lsdb-status?   enumeration
               |     +--rw lsdb-size?     uint32
               |     +--ro is-number?     uint32

            Figure 5 YANG model of IS-IS LSDB







Wu, et al.               Expires March 14, 2015                [Page 11]

Internet-Draft           IS-IS information model          September 2014


2.3.2.  Level parameters

   This section demonstrates those parameters in level scope.

   Mandatory fields MUST be contained in the IS-IS level.

   o  level-id: The identification of this level which SHOULD be level-1
      or level-2.

2.3.3.  Link State database

   Link State Database (LSDB) is composed of all link-state information
   advertised in the corresponding level.  These pieces of link-state
   information are organized in the form of Link State PDU (LSP) which
   can be divided into two groups: self-originated LSP and remote-
   generated LSP.  Some attributes of database can also be included in
   the information model.

   o  lsp list (lsp*): This list indicates those LSPs which are
      advertised in current level by either remote IS or self-
      origination.

   o  lsdb-status: This represents the current status for database.  It
      MAY be Normal or Overflow or something else.

   o  lsdb-size: The size of database in the form of LSP number or bytes
      or percentage of maximum size.

   o  is-number: The total number of IS in this level.

2.3.4.  Link State PDU

   Link State PDU (LSP) is a data unit used to hold and organize link-
   state information in the level scope.  Intermediate-Systems in the
   same level depend on the exchange of LSPs to synchronize their
   database which is the basis for per-hop forwarding paradigm.  This
   section demonstrates some important components of LSP.

   o  maximum-area-addresses: The maxinum number of area addresses
      supported by the originator of this lsp.

   o  pdu-length: The length in bytes of this LSP PDU.

   o  rem-lifetime: Remaining lifetime of one LSP.  Those with zero
      lifetime will be handled in special way.

   o  lsp-id: The identifier of one LSP.  It uniquely identify one LSP
      in the level scope.



Wu, et al.               Expires March 14, 2015                [Page 12]

Internet-Draft           IS-IS information model          September 2014


   o  sequence-number: The sequence number of a LSP.  It is used to
      differentiate between the old instance and the new one for the LSP
      from the same place.

   o  checksum: The calculated checksum of one LSP.

   o  p-bit: This indicates when set that the issuing Intermediate
      System supports the Partition Repair optional function.

   o  lspdbol-bit: A value of 0 indicates no LSP Database Overload, and
      a value of 1 indicates that the LSP Database is Overloaded.  An
      LSP with this bit set will not be used by any decision process to
      calculate routes to another IS through the originating system

   o  is-type-bit: Bits 1 and 2 indicate the type of Intermediate
      System.  Valid choice SHOULD be level-1 or level-2.

module: i2rs-isis-protocol
   +--rw isis-routing-protocol
      +--rw isis-instance* [name]
            ...
         +--rw multi-topo-list* [mt-id]
               ...
            +--rw level-list* [level-id]
                  ...
            |  +--rw lsdb
            |     +--rw lsp* [lsp-id sequence-number checksum]
            |     |  +--rw maximum-area-addresses                     uint8
            |     |  +--rw pdu-length                                 uint16
            |     |  +--rw remaining-lifetime                         uint16
            |     |  +--rw lsp-id                                     string
            |     |  +--rw sequence-number                            uint32
            |     |  +--rw checksum                                   uint16
            |     |  +--rw p-bit                                      boolean
            |     |  +--rw error-metric-bit                           boolean
            |     |  +--rw expense-metric-bit                         boolean
            |     |  +--rw delay-metric-bit                           boolean
            |     |  +--rw default-metric-bit                         boolean
            |     |  +--rw lspdbol-bit?                               enumeration
            |     |  +--rw is-type-bit?                               enumeration
            |     |  +--rw area-addresse--tlv
                           ...
            |     |  +--rw intermediate-system-neighbours-tlv
                           ...
            |     |  +--rw nlpid-tlv
                           ...
            |     |  +--rw ip-interface-addresses-tlv
                           ...



Wu, et al.               Expires March 14, 2015                [Page 13]

Internet-Draft           IS-IS information model          September 2014


            |     |  +--rw ip-internal-reachability-tlv
                           ...
            |     |  +--rw ip-external-reachability-tlv
                           ...
            |     |  +--rw inter-domain-information-tlv
                           ...
            |     |  +--rw extended-is-reachability-tlv
                           ...
            |     |  +--rw extended-ip-reachability-tlv
                           ...
            |     |  +--rw ipv6-reachability-tlv
                           ...
            |     |  +--rw ipv6-interface-address-tlv
                           ...
            |     |  +--rw ipv6-te-router-id-tlv
                           ...
            |     |  +--rw ipv6-srlg-tlv
                           ...
            |     |  +--rw multi-topology-tlv
                           ...
            |     |  +--rw mt-intermediate-systems-tlv
                           ...
            |     |  +--rw mt-topology-reachable-ipv4-prefixes-tlv
                           ...
            |     |  +--rw mt-topology-reachable-ipv6-prefixes-tlv
                           ...

            Figure 6 YANG model of IS-IS LSP

2.4.  IS-IS circuit

   IS-IS circuits are used to help to constrain the boundaries of IS-IS
   PDU sending and receiving.  PDUs handled on these circuits are
   directly associated with the same process.  This section demonstrates
   the information model of IS-IS circuits shown below in figure 7 in
   the yang high level language.

   module: i2rs-isis-protocol
      +--rw isis-routing-protocol
         +--rw isis-instance* [name]
               ...
            +--rw multi-topo-list* [mt-id]
                  ...
               +--rw circuit-list* [circuit-id]
               |  +--rw circuit-id             uint32
               |  +--rw circuit-name?          string
               |  +--rw ip-address?            inet:ip-address
               |  +--ro circuit-status?        enumeration



Wu, et al.               Expires March 14, 2015                [Page 14]

Internet-Draft           IS-IS information model          September 2014


               |  +--ro circuit-down-reason?   enumeration
               |  +--rw circuit-net-type?      enumeration
               |  +--rw circuit-level-type?    enumeration
               |  +--rw circuit-auth-info
               |  |  +--rw auth-mode
               |  |  |  +--rw (auth-mode-type)?
               |  |  |     +--:(mode-simple)
               |  |  |     |  +--rw simple-password?     string
               |  |  |     +--:(mode-md5)
               |  |  |     |  +--rw md5-password?        string
               |  |  |     +--:(mode-hmac-sha256)
               |  |  |     |  +--rw hmac-key-id?         uint32
               |  |  |     |  +--rw hmac-password?       string
               |  |  |     +--:(mode-keychain)
               |  |  |        +--rw keychain-key-id?     uint32
               |  |  |        +--rw keychain-password?   string
               |  |  |        +--rw keychain-mode?       enumeration
               |  |  |        +--rw keychain-periodic?   enumeration
               |  |  |        +--rw send_time?           uint32
               |  |  |        +--rw receive_tim?         uint32
               |  |  +--rw snp-auth-status?   enumeration
               |  |  +--rw auth-scope?        enumeration
               |  +--rw l1-dis-id?             inet:ipv4-prefix
               |  +--rw l2-dis-id?             inet:ipv4-prefix
               |  +--rw l1-nbr-list* [l1nbr-system-id]
               |  |  +--rw l1nbr-system-id    uint32
               |  |  +--rw snpa?              uint32
               |  |  +--ro nbr-status?        enumeration
               |  |  +--ro nbr-down-reason?   enumeration
               |  |  +--rw nbr-type?          enumeration
               |  +--rw l2-nbr-list* [l2nbr-system-id]
               |  |  +--rw l2nbr-system-id    uint32
               |  |  +--rw snpa?              uint32
               |  |  +--ro nbr-status?        enumeration
               |  |  +--ro nbr-down-reason?   enumeration
               |  |  +--rw nbr-type?          enumeration
               |  +--rw circuit-te
               |     +--rw admin-group?         uint32
               |     +--rw ipv4-addr?           inet:ipv4-prefix
               |     +--rw nbr-ipv4-addr?       inet:ipv4-prefix
               |     +--rw max-bandwidth?       uint32
               |     +--rw max-rsv-bandwidth?   uint32
               |     +--rw unrsv-bandwidth?     uint32

                 Figure 7 YANG model of IS-IS circuit






Wu, et al.               Expires March 14, 2015                [Page 15]

Internet-Draft           IS-IS information model          September 2014


2.4.1.  Circuit parameters

   o  circuit-id: The index for this circuit.  It MUST be unique
      globally in the same routing system.

   o  circuit-name: The name used to refer to this circuit.

   o  ip-address: The IP address of this circuit.

   o  circuit-status: The status of this circuit.  Valid choice SHOULD
      be UP or DOWN.

   o  circuit-down-reason: The reason why this circuit is brought to
      down.  Valid reason SHOULD be Physical-down, Admin-shutdown, IP-
      down and MTU-down.

   o  circuit-net-type: The network type simulated on this circuit.
      Valid choice SHOULD be P2P, Broadcast or NBMA.

   o  circuit-level-type: The level type supported on this circuit.
      Valid choice SHOULD be Level-1-Only, Level-2-Only or Level-
      1-2-Both.

   o  circuit-auth-info: The information related to circuit
      authentication, including password, authentication mode and other
      attributes.

   o  l1-dis-id: The identifier for DIS in level-1.

   o  l2-dis-id: The identifier for DIS in level-2.

   o  l1-nbr list (l1-nbr*): The IS reachability list on this circuit
      for level-1.

   o  l2-nbr list (l2-nbr*): The IS reachability list on this circuit
      for level-2.

   o  circuit-te: The traffic-engineer information related to this
      circuit.

2.4.2.  Circuit traffic engineering

   This section describes the TE related data on this circuit.

   o  admin-group: The bit mask assigned by operators used for
      identifying administrative group.





Wu, et al.               Expires March 14, 2015                [Page 16]

Internet-Draft           IS-IS information model          September 2014


   o  ipv4-address: A 4-octet IPv4 address for the circuit described by
      Circuit-index.

   o  nbr-ipv4-addr: A single IPv4 address for a neighboring router on
      this link.

   o  max-bandwidth: The maximum bandwidth that can be used on this link
      in this direction.

   o  max-rsv-bandwidth: The maximum amount of bandwidth that can be
      reserved in this direction on this link.

   o  unrsv-bandwidth: The amount of bandwidth reservable in this
      direction on this link.

2.4.3.  Circuit neighbor

   This section describes the neighbor information related to one
   circuit.

   o  nbr-system-id: The system-id of one neighbor supported on this
      circuit.

   o  snpa: The SNPA address of corresponding neighbor.

   o  nbr-status: The status for the adjacency with this neighbor.

   o  nbr-down-reason: The reason this adjacency was brought.  Valid
      choice SHOULD be Circuit-down, BFD-down, Expired, CFG-change and
      I2RS-down.

   o  nbr-type: The system type of corresponding neighbor.

3.  IS-IS notification

   With the help of IS-IS information model, the I2RS Client can collect
   IS-IS state data through publish/subscription mechanism.  This
   section describes several data which is important for operating and
   maintaining of IS-IS routing-protocol.

3.1.  Adjacency

   Information related to adjacencies SHOULD be readable through I2RS
   Agent.  This includes total number of adjacencies in the network and
   their current status and even their history of transition.  For
   certain specific adjacencies, the I2RS Client MAY subscribe for their
   data when events happened.




Wu, et al.               Expires March 14, 2015                [Page 17]

Internet-Draft           IS-IS information model          September 2014


3.2.  LSDB

   Link state database is the most important part in IS-IS information
   model.  It contains the whole topology information from the network.
   The I2RS Agent SHOULD support reading LSDB information related to
   size, status and contents.  It MAY be useful to subscribe some
   critical reachability information from LSP when specific events
   happened.

3.3.  Route

   Since the IS-IS routing-table is one client for the RIB, it MAY be
   beneficial to read data from ISIS routes.  This data may contain the
   size and status of the routing-table and even the detailed contents
   of routes.  It MAY be necessary to subscribe the data and status of
   certain specific routes especially when the reachability was lost.
   Through the IS-IS information model, it will be more convenient for
   operators to get corresponding LSP and even the adjacency when one
   route disappeared.

3.4.  TE

   It MAY be helpful to read the traffic engineering information for one
   level or for one specific circuit.  This can help to find out
   mistakes or data loss during the procedure of advertising and
   flooding.

3.5.  Protocol statistics

   It SHOULD be necessary to subscribe protocol statistics for health
   diagnostics.  This statistics may contain packet discard for
   different reasons, adjacency transition frequency, the size of LSDB
   and routing-table, SPF-trigger frequency and etc.

4.  IS-IS I2RS Operational Examples

   Based on the standardized information model of IS-IS protocol as
   described above, use cases defined in
   [I-D.hares-i2rs-usecase-reqs-summary] can be supported.  This section
   provides several specific examples of these use cases.

4.1.  Transient loop avoidance

   Link-state protocols may need to reconverge when the network topology
   changes.  During this phase packet loss and transient loops are
   frequently observed since inconsistent RIBs exist, even the
   reachability of the destinations is not compromised after the
   topology change.  [IGP-REQ-02] in



Wu, et al.               Expires March 14, 2015                [Page 18]

Internet-Draft           IS-IS information model          September 2014


   [I-D.hares-i2rs-usecase-reqs-summary] suggests that the there should
   be rapid cycle of querying and configuration change.  Monitoring via
   the mechanisms in [IGP-REQ-04] and [IGP-REQ-05], [IGP-REQ-06], [IGP-
   REQ-07], and [IGP-REQ-08] in [I-D.hares-i2rs-usecase-reqs-summary]
   may aid in detecting the condition.

4.2.  Traffic blackhole prevention

   IS-IS Hello packet is used to discover and maintain adjacencies among
   different IS-IS nodes.  Without the deployment of fast detection
   techniques, one node has to wait for several seconds before it
   realized the adjacency had broken.  This kind of issue can cause one
   device is cut off from its network and lose connectivity completely.
   No matter planned or accidentally it may cause traffic blackhole
   before damage can be controlled.  [IGP-REQ-01] and [IGP-REQ-02] plus
   the monitoring requirements in [IGP-REQ-04] and [IGP-REQ-05], [IGP-
   REQ-06], [IGP-REQ-07], and [IGP-REQ-08] in
   [I-D.hares-i2rs-usecase-reqs-summary] may aid in detecting the
   condition.

   Under the scenario of I2RS and IS-IS information model deployed, it
   is RECOMMENDED that the adjacency data of the other end side can be
   removed simultaneously or LSP can be updated directly by I2RS Agent
   when IS-IS is disabled or detached on one side.  The configuration of
   [IGP-REQ-02] can aid in configuring.  (Note: configuration will be
   added in a future version.

5.  IS-IS grammar

   This section demonstrates the information model of IS-IS routing-
   protocol using the syntax stated in [RFC5511]

5.1.  Instance

   <isis routing-protocol> ::= [ <isis instance> ... ]

   <isis instance> ::= <instance-parameters> <mt-list>

   <instance-parameters> ::= <NAME> [ <ISIS_VPN_NAME> ] [ <address-
   family> ] <net-list> <protocol-status> [ <level-type> ] [ <metric-
   style> ] [ <LSP_MTU> ] [ <LSP_REFRESH> ] [ <LSP-LIFETIME> ] [ <isis-
   instance-create-mode> ] [ <PREFERENCE> ] [ <HOSTNAME> ] [ <area-auth-
   info> ] [ <domain-auth-info> ]

   <net-list> ::= <net> [ <net> ... ]

   <net> ::= <AREA_ADDRESS> <SYSTEM_ID> <SEL>




Wu, et al.               Expires March 14, 2015                [Page 19]

Internet-Draft           IS-IS information model          September 2014


   <level-type> ::= <LEVEL-1-ONLY> | <LEVEL-2-ONLY> | <LEVEL-1-2-BOTH>

   <address-family> ::= <IPV4> | <IPV6> | <IPV4IPV6>

   <metric-style> ::= <NARROW> | <WIDE> | <COMPATIBLE>

   <protocol-status> ::= <ACTIVE> | <SHUTDOWN> | <OVERLOAD> | <RESET>

   <mt-list> ::= <mt> [ <mt> ... ]

   <area-auth-info> ::= <auth-mode> <snp-auth-status> <auth-scope>

   <auth-mode> ::= <mode-simple> | <mode-md5> | <mode-hmac-sha256> |
   <mode-keychain>

   <mode-simple> ::= <PASSWORD>

   <mode-md5> ::= <PASSWORD>

   <mode-hmac-sha256> ::= <KEY_ID> <PASSWORD>

   <mode-keychain> ::= <KEY_ID> <PASSWORD> <keychain-mode> [ <SEND_TIME>
   ] [ <RECEIVE_TIME> ]

   <keychain-mode> ::= <ABSOLUTE> | <periodic>

   <periodic> ::= <DAILY> | <WEEKLY> | <MONTHLY> | <YEARLY>

   <snp-auth-status> ::= <AUTH_AND_VALIDATE> <NON_AUTH_AND_VALIDATE>
   <AUTH_AND_NON_VALIDATE>

   <auth-scope> ::= <LSP_PACKET> | <LSP_SNP_HELLO_PACKET> |
   <HELLO_PACKET> | <LSP_SNP_PACKET>

   <domain-auth-info> ::= <auth-mode> <snp-auth-status> <auth-scope>

5.2.  Multi-topology

   <mt> ::= <MT_ID> <mt-status> <address-family> <level-list> [ <mt-
   ipv4-rib> ] [ <mt-ipv6-rib> ] [ <circuit-list> ] [ <policy-list> ]

   <address-family> ::= <IPV4> | <IPV6>

   <mt-status> ::= <ACTIVE> | <INACTIVE>

   <level-list> ::= <level> [ <level> ]

   <circuit-list> ::= [ <circuit> ... ]



Wu, et al.               Expires March 14, 2015                [Page 20]

Internet-Draft           IS-IS information model          September 2014


   <policy-list> ::= [ <policy> ... ]

   <mt-ipv4-rib> ::= <route-list>

   <mt-ipv6-rib> ::= <route-list>

   <route-list> ::= <route> [ <route> ... ]

   <route> ::= <address-family> ( <IPV4_PREFIX> | <IPV6_PREFIX> ) <MASK>
   <nexthop-list> [ <back-nexthop> ] <METRIC> <TYPE> <route-state-info>
   [ <LSP_ID> ]

   <backup-nexthop> ::= <nexthop>

   <nexthop-list> and <nexthop> SHOULD follow the definition in the RIB
   iformation model as stated in [I-D.ietf-i2rs-rib-info-model].

   <route-state-info> ::= <route-current-state> [ <route-previous-state>
   [ <LSP-ID> ] ] [ <route-chg-reason> ]

   <route-current-state> ::= ( <ACTIVE> | <INACTIVE> ) ( <PRIMARY> |
   <BACKUP> )

   <route-previous-state> ::= ( <ACTIVE> | <INACTIVE> ) ( <PRIMARY> |
   <BACKUP> )

   <route-chg-reason> ::= <ORIG_ADV> | <ORIG_WITHDRAW> | <ADJ_DOWN> |
   <POLICY_DENY>

5.3.  Level

   <level> ::= <level-parameters> <lsdb>

   <level-parameters> ::= <level-id> [ <IS_NUMBER> ]

   <level-id> ::= <LEVEL-1> | <LEVEL-2>

   <lsdb> ::= <lsdb-status> <LSDB_SIZE> <lsp-list> [ <IS_NUMBER> ]

   <lsdb-status> ::= <NORMAL> | <OVERFLOW>

   <lsp-list> ::= <lsp> [ <lsp> ... ]

   <lsp> ::= <MAXIMUM_AREA_ADDRESSES> <PDU_LENGTH> <REMAINING_LIFETIME>
   <LSP_ID> <SEQUENCE_NUMBER> <CHECKSUM> <P_BIT> <ERROR_METRIC_BIT>
   <EXPENSE_METRIC_BIT> <DELAY_METRIC_BIT> <DEFAULT_METRIC_BIT>
   <LSPDB_OL_BIT> <IS_TYPE_BIT> <area-address-tlv> <intermediate-system-
   neighbours-tlv> <nlpid-tlv> <ip-interface-addresses-tlv> [ <ip-



Wu, et al.               Expires March 14, 2015                [Page 21]

Internet-Draft           IS-IS information model          September 2014


   internal-reachability-tlv> ] [ <ip-external-reachability-tlv> ] [
   <inter-domain-information-tlv> ] [ <extended-is-reachability-tlv> ] [
   <extended-ip-reachability-tlv> ] [ <ipv6-reachability-tlv> ] [ <ipv6-
   interface-address-tlv> ] [ <ipv6-te-router-id-tlv> ] [ <ipv6-srlg-
   tlv> ] [ <multi-topology-tlv> ] [ <mt-intermediate-systems-tlv> ] [
   <mt-topology-reachable-ipv4-prefixes-tlv> ] [ <mt-topology-reachable-
   ipv6-prefixes-tlv> ]

5.4.  Circuit

   <circuit-list> ::= [ <circuit> ... ]

   <circuit> ::= <CIRCUIT_ID> <CIRCUIT_NAME> <IP_ADDRESS> <circuit-
   status> [ <circuit-down-reason> ] [ <circuit-net-type> <circuit-
   level-type> [ <L1_DIS_ID> <L2_DIS_ID> ] ] [ <circuit-auth-info> ]
   <l1-nbr-list> <l2-nbr-list> [ <circuit-te> ]

   <circuit-net-type> ::= <P2P> | <BRODCAST> | <NBMA>

   <circuit-level-type> ::= <LEVEL-1-ONLY> | <LEVEL-2-ONLY> | <LEVEL-
   1-2-BOTH>

   <circuit-status> ::= <CIRCUIT_UP> | <CIRCUIT_DOWN>

   <circuit-down-reason> ::= <PHY_DOWN> | <ADMIN_DOWN> | <IP_DOWN> |
   <MTU_DOWN>

   <circuit-auth-info> ::= <auth-mode> <snp-auth-status> <auth-scope>

   <l1-nbr-list> ::= [ <nbr> ... ]

   <l2-nbr-list> ::= [ <nbr> ... ]

   <nbr> ::= <SYSTEM_ID> <SNPA> <nbr-status> [ <nbr-down-reason> ] <nbr-
   type>

   <nbr-type> ::= <LEVEL-1-ONLY> | <LEVEL-2-ONLY> | <LEVEL-1-2-BOTH>

   <nbr-status> ::= <INIT> | <UP> | <DOWN>

   <nbr-down-reason> ::= <CIRC_DOWN> | <BFD_DOWN> | <EXPIRATION> |
   <CFG_CHG> | <I2RS_DOWN>

   <circuit-te> ::= <ADMIN_GROUP> <IPV4_ADDR> <NBR_IPV4_ADDR>
   <MAX_BANDWIDTH> <MAX_RSV_BANDWIDTH> <UNRSV_BANDWIDTH>






Wu, et al.               Expires March 14, 2015                [Page 22]

Internet-Draft           IS-IS information model          September 2014


6.  I2RS YANG model of IS-IS

module: i2rs-isis-protocol
   +--rw isis-routing-protocol
      +--rw isis-instance* [name]
         +--rw name                         string
         +--rw isis-vpn-name?               string
         +--rw address-family               address-family-def
         +--rw net* [area-id]
         |  +--rw area-id      string
         |  +--rw system-id?   string
         +--ro protocol-status?             enumeration
         +--rw level-type?                  enumeration
         +--rw metric-style?                enumeration
         +--rw lsp-mtu?                     uint32
         +--rw lsp-refresh?                 uint32
         +--rw lsp-lifetime?                uint32
         +--ro isis-instance-create-mode?   enumeration
         +--rw preference?                  uint32
         +--rw hostname?                    string
         +--rw domain-auth-info
         |  +--rw auth-mode
         |  |  +--rw (auth-mode-type)?
         |  |     +--:(mode-simple)
         |  |     |  +--rw simple-password?     string
         |  |     +--:(mode-md5)
         |  |     |  +--rw md5-password?        string
         |  |     +--:(mode-hmac-sha256)
         |  |     |  +--rw hmac-key-id?         uint32
         |  |     |  +--rw hmac-password?       string
         |  |     +--:(mode-keychain)
         |  |        +--rw keychain-key-id?     uint32
         |  |        +--rw keychain-password?   string
         |  |        +--rw keychain-mode?       enumeration
         |  |        +--rw keychain-periodic?   enumeration
         |  |        +--rw send_time?           uint32
         |  |        +--rw receive_tim?         uint32
         |  +--rw snp-auth-status?   enumeration
         |  +--rw auth-scope?        enumeration
         +--rw area-auth-info
         |  +--rw auth-mode
         |  |  +--rw (auth-mode-type)?
         |  |     +--:(mode-simple)
         |  |     |  +--rw simple-password?     string
         |  |     +--:(mode-md5)
         |  |     |  +--rw md5-password?        string
         |  |     +--:(mode-hmac-sha256)
         |  |     |  +--rw hmac-key-id?         uint32



Wu, et al.               Expires March 14, 2015                [Page 23]

Internet-Draft           IS-IS information model          September 2014


         |  |     |  +--rw hmac-password?       string
         |  |     +--:(mode-keychain)
         |  |        +--rw keychain-key-id?     uint32
         |  |        +--rw keychain-password?   string
         |  |        +--rw keychain-mode?       enumeration
         |  |        +--rw keychain-periodic?   enumeration
         |  |        +--rw send_time?           uint32
         |  |        +--rw receive_tim?         uint32
         |  +--rw snp-auth-status?   enumeration
         |  +--rw auth-scope?        enumeration
         +--rw multi-topo-list* [mt-id]
            +--rw mt-id             uint16
            +--ro mt-status?        enumeration
            +--rw address-family    address-family-def
            +--rw level-list* [level-id]
            |  +--rw level-id    string
            |  +--rw lsdb
            |     +--rw lsp* [lsp-id sequence-number checksum]
            |     |  +--rw maximum-area-addresses                     uint8
            |     |  +--rw pdu-length                                 uint16
            |     |  +--rw remaining-lifetime                         uint16
            |     |  +--rw lsp-id                                     string
            |     |  +--rw sequence-number                            uint32
            |     |  +--rw checksum                                   uint16
            |     |  +--rw p-bit                                      boolean
            |     |  +--rw error-metric-bit                           boolean
            |     |  +--rw expense-metric-bit                         boolean
            |     |  +--rw delay-metric-bit                           boolean
            |     |  +--rw default-metric-bit                         boolean
            |     |  +--rw lspdbol-bit?                               enumeration
            |     |  +--rw is-type-bit?                               enumeration
            |     |  +--rw area-addresse--tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value* [area-addresse]
            |     |  |     +--rw address-length    uint8
            |     |  |     +--rw area-addresse     uint8
            |     |  +--rw intermediate-system-neighbours-tlv
            |     |  |  +--rw code            enumeration
            |     |  |  +--rw length          uint8
            |     |  |  +--rw virtual-flag    boolean
            |     |  |  +--rw value* [neighbor-id]
            |     |  |     +--rw default-metric    uint8
            |     |  |     +--rw delay-metric      uint8
            |     |  |     +--rw expense-metric    uint8
            |     |  |     +--rw error-metric      uint8
            |     |  |     +--rw neighbor-id       string
            |     |  +--rw nlpid-tlv



Wu, et al.               Expires March 14, 2015                [Page 24]

Internet-Draft           IS-IS information model          September 2014


            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value* [nlpid]
            |     |  |     +--rw nlpid    uint8
            |     |  +--rw ip-interface-addresses-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value* [ip-address]
            |     |  |     +--rw ip-address    inet:ipv4-address
            |     |  +--rw ip-internal-reachability-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value* [ip-prefix]
            |     |  |     +--rw i-e-bit                 boolean
            |     |  |     +--rw default-metric          uint8
            |     |  |     +--rw s-bit                   boolean
            |     |  |     +--rw delay-metric            uint8
            |     |  |     +--rw s-bit-expense-metric    boolean
            |     |  |     +--rw expense-metric          uint8
            |     |  |     +--rw s-bit-error-metric      boolean
            |     |  |     +--rw error-metric            uint8
            |     |  |     +--rw ip-prefix               inet:ipv4-prefix
            |     |  +--rw ip-external-reachability-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value* [ip-prefix]
            |     |  |     +--rw i-e-bit                 boolean
            |     |  |     +--rw default-metric          uint8
            |     |  |     +--rw s-bit                   boolean
            |     |  |     +--rw delay-metric            uint8
            |     |  |     +--rw s-bit-expense-metric    boolean
            |     |  |     +--rw expense-metric          uint8
            |     |  |     +--rw s-bit-error-metric      boolean
            |     |  |     +--rw error-metric            uint8
            |     |  |     +--rw ip-prefix               inet:ipv4-prefix
            |     |  +--rw inter-domain-information-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value* [inter-domain-information-type external-information]
            |     |  |     +--rw inter-domain-information-type    uint8
            |     |  |     +--rw external-information             uint32
            |     |  +--rw extended-is-reachability-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value* [neighbor-system-id]
            |     |  |     +--rw neighbor-system-id                         uint32
            |     |  |     +--rw metric                                     uint32
            |     |  |     +--rw sub-tlv-length                             uint8



Wu, et al.               Expires March 14, 2015                [Page 25]

Internet-Draft           IS-IS information model          September 2014


            |     |  |     +--rw administrative-group-stlv
            |     |  |     |  +--rw type      enumeration
            |     |  |     |  +--rw length?   uint32
            |     |  |     |  +--rw value?    uint32
            |     |  |     +--rw ipv4-interface-address--stlv* [ipv4-interface-address]
            |     |  |     |  +--rw type                      enumeration
            |     |  |     |  +--rw length?                   uint32
            |     |  |     |  +--rw ipv4-interface-address    inet:ipv4-address
            |     |  |     +--rw ipv4-neighbor-address--stlv* [ipv4-neighbor-address]
            |     |  |     |  +--rw type                     enumeration
            |     |  |     |  +--rw length?                  uint32
            |     |  |     |  +--rw ipv4-neighbor-address    inet:ipv4-address
            |     |  |     +--rw maximum-bandwidth--stlv
            |     |  |     |  +--rw type                 enumeration
            |     |  |     |  +--rw length?              uint32
            |     |  |     |  +--rw maximum-bandwidth?   uint32
            |     |  |     +--rw maximum-reservable-link-bandwidth-stlv
            |     |  |     |  +--rw type                 enumeration
            |     |  |     |  +--rw length?              uint32
            |     |  |     |  +--rw maximum-bandwidth?   uint32
            |     |  |     +--rw unreserved-bandwidth-stlv
            |     |  |     |  +--rw type                    enumeration
            |     |  |     |  +--rw length?                 uint32
            |     |  |     |  +--rw unreserved-bandwidth?   uint32
            |     |  |     +--rw traffic-engineering-default-metric-stlv
            |     |  |     |  +--rw type                                   enumeration
            |     |  |     |  +--rw length?                                uint32
            |     |  |     |  +--rw utraffic-engineering-default-metric?   uint32
            |     |  |     +--rw ipv6-interface-address--stlv* [ipv6-interface-address]
            |     |  |     |  +--rw type                      enumeration
            |     |  |     |  +--rw length?                   uint32
            |     |  |     |  +--rw ipv6-interface-address    inet:ipv6-address
            |     |  |     +--rw ipv6-neighbor-address--stlv* [ipv6-neighbor-address]
            |     |  |        +--rw type                     enumeration
            |     |  |        +--rw length?                  uint32
            |     |  |        +--rw ipv6-neighbor-address    inet:ipv6-address
            |     |  +--rw extended-ip-reachability-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value* [ip-prefix]
            |     |  |     +--rw metric             uint32
            |     |  |     +--rw up-down-bit        boolean
            |     |  |     +--rw sub-TLV-bit        boolean
            |     |  |     +--rw prefix-length      uint8
            |     |  |     +--rw ip-prefix          inet:ipv4-prefix
            |     |  |     +--rw length-sub-TLVs?   uint8
            |     |  |     +--rw sub-tlv* [type value]
            |     |  |        +--rw type      uint8



Wu, et al.               Expires March 14, 2015                [Page 26]

Internet-Draft           IS-IS information model          September 2014


            |     |  |        +--rw length?   uint32
            |     |  |        +--rw value     string
            |     |  +--rw ipv6-reachability-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value
            |     |  |     +--rw metric         uint32
            |     |  |     +--rw u-bit          boolean
            |     |  |     +--rw x-bit          boolean
            |     |  |     +--rw s-bit          boolean
            |     |  |     +--rw prefix-len     uint8
            |     |  |     +--rw prifix-list* [ipv6-prifix]
            |     |  |        +--rw ipv6-prifix    inet:ipv6-prefix
            |     |  +--rw ipv6-interface-address-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value
            |     |  |     +--rw ipv6-interface-address-list* [ipv6-interface-address]
            |     |  |        +--rw ipv6-interface-address    inet:ipv6-address
            |     |  +--rw ipv6-te-router-id-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value
            |     |  |     +--rw ipv6-te-router-id?   inet:ipv6-address
            |     |  +--rw ipv6-srlg-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value
            |     |  |     +--rw system-id                 uint64
            |     |  |     +--rw pseudonode-number         uint8
            |     |  |     +--rw flags                     uint8
            |     |  |     +--rw ipv6-interface-address    inet:ipv6-address
            |     |  |     +--rw ipv6-neighbor-address     inet:ipv6-address
            |     |  |     +--rw srlg-list* [srlg]
            |     |  |        +--rw srlg    uint32
            |     |  +--rw multi-topology-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value
            |     |  |     +--rw o-bit    boolean
            |     |  |     +--rw a-bit    boolean
            |     |  |     +--rw mt-id    uint16
            |     |  +--rw mt-intermediate-systems-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value
            |     |  |     +--rw mt-id                           uint16
            |     |  |     +--rw mt-intermediate-systems-list* [mt-intermediate-systems-index]



Wu, et al.               Expires March 14, 2015                [Page 27]

Internet-Draft           IS-IS information model          September 2014


            |     |  |        +--rw mt-intermediate-systems-index    uint32
            |     |  |        +--rw extended-is-reachability-tlv
            |     |  |           +--rw code      enumeration
            |     |  |           +--rw length    uint8
            |     |  |           +--rw value* [neighbor-system-id]
            |     |  |              +--rw neighbor-system-id                         uint32
            |     |  |              +--rw metric                                     uint32
            |     |  |              +--rw sub-tlv-length                             uint8
            |     |  |              +--rw administrative-group-stlv
            |     |  |              |  +--rw type      enumeration
            |     |  |              |  +--rw length?   uint32
            |     |  |              |  +--rw value?    uint32
            |     |  |              +--rw ipv4-interface-address--stlv* [ipv4-interface-address]
            |     |  |              |  +--rw type                      enumeration
            |     |  |              |  +--rw length?                   uint32
            |     |  |              |  +--rw ipv4-interface-address    inet:ipv4-address
            |     |  |              +--rw ipv4-neighbor-address--stlv* [ipv4-neighbor-address]
            |     |  |              |  +--rw type                     enumeration
            |     |  |              |  +--rw length?                  uint32
            |     |  |              |  +--rw ipv4-neighbor-address    inet:ipv4-address
            |     |  |              +--rw maximum-bandwidth--stlv
            |     |  |              |  +--rw type                 enumeration
            |     |  |              |  +--rw length?              uint32
            |     |  |              |  +--rw maximum-bandwidth?   uint32
            |     |  |              +--rw maximum-reservable-link-bandwidth-stlv
            |     |  |              |  +--rw type                 enumeration
            |     |  |              |  +--rw length?              uint32
            |     |  |              |  +--rw maximum-bandwidth?   uint32
            |     |  |              +--rw unreserved-bandwidth-stlv
            |     |  |              |  +--rw type                    enumeration
            |     |  |              |  +--rw length?                 uint32
            |     |  |              |  +--rw unreserved-bandwidth?   uint32
            |     |  |              +--rw traffic-engineering-default-metric-stlv
            |     |  |              |  +--rw type                                   enumeration
            |     |  |              |  +--rw length?                                uint32
            |     |  |              |  +--rw utraffic-engineering-default-metric?   uint32
            |     |  |              +--rw ipv6-interface-address--stlv* [ipv6-interface-address]
            |     |  |              |  +--rw type                      enumeration
            |     |  |              |  +--rw length?                   uint32
            |     |  |              |  +--rw ipv6-interface-address    inet:ipv6-address
            |     |  |              +--rw ipv6-neighbor-address--stlv* [ipv6-neighbor-address]
            |     |  |                 +--rw type                     enumeration
            |     |  |                 +--rw length?                  uint32
            |     |  |                 +--rw ipv6-neighbor-address    inet:ipv6-address
            |     |  +--rw mt-topology-reachable-ipv4-prefixes-tlv
            |     |  |  +--rw code      enumeration
            |     |  |  +--rw length    uint8
            |     |  |  +--rw value



Wu, et al.               Expires March 14, 2015                [Page 28]

Internet-Draft           IS-IS information model          September 2014


            |     |  |     +--rw mt-id                                       uint16
            |     |  |     +--rw mt-topology-reachable-ipv4-prefixes-list* [mt-topology-reachable-ipv4-prefixes-index]
            |     |  |        +--rw mt-topology-reachable-ipv4-prefixes-index    uint32
            |     |  |        +--rw extended-ip-reachability-tlv
            |     |  |           +--rw code      enumeration
            |     |  |           +--rw length    uint8
            |     |  |           +--rw value* [ip-prefix]
            |     |  |              +--rw metric             uint32
            |     |  |              +--rw up-down-bit        boolean
            |     |  |              +--rw sub-TLV-bit        boolean
            |     |  |              +--rw prefix-length      uint8
            |     |  |              +--rw ip-prefix          inet:ipv4-prefix
            |     |  |              +--rw length-sub-TLVs?   uint8
            |     |  |              +--rw sub-tlv* [type value]
            |     |  |                 +--rw type      uint8
            |     |  |                 +--rw length?   uint32
            |     |  |                 +--rw value     string
            |     |  +--rw mt-topology-reachable-ipv6-prefixes-tlv
            |     |     +--rw code      enumeration
            |     |     +--rw length    uint8
            |     |     +--rw value
            |     |        +--rw mt-id                                       uint16
            |     |        +--rw mt-topology-reachable-ipv6-prefixes-list* [mt-topology-reachable-ipv6-prefixes-index]
            |     |           +--rw mt-topology-reachable-ipv6-prefixes-index    uint32
            |     |           +--rw ipv6-reachability-tlv
            |     |              +--rw code      enumeration
            |     |              +--rw length    uint8
            |     |              +--rw value
            |     |                 +--rw metric         uint32
            |     |                 +--rw u-bit          boolean
            |     |                 +--rw x-bit          boolean
            |     |                 +--rw s-bit          boolean
            |     |                 +--rw prefix-len     uint8
            |     |                 +--rw prifix-list* [ipv6-prifix]
            |     |                    +--rw ipv6-prifix    inet:ipv6-prefix
            |     +--rw lsdb-status?   enumeration
            |     +--rw lsdb-size?     uint32
            |     +--ro is-number?     uint32
            +--rw mt-ipv4-rib* [ipv4-prefix]
            |  +--rw ipv4-prefix             inet:ipv4-prefix
            |  +--rw nexthop-list* [nexthop]
            |  |  +--rw nexthop              inet:ipv4-prefix
            |  +--rw back-nexthop?           inet:ipv4-prefix
            |  +--rw ipv4-isis-route-para
            |     +--rw metric?                 uint32
            |     +--ro type?                   enumeration
            |     +--ro route-current-state?    route-state-def
            |     +--ro route-previous-state?   route-state-def



Wu, et al.               Expires March 14, 2015                [Page 29]

Internet-Draft           IS-IS information model          September 2014


            |     +--rw lsp-id?                 inet:ipv4-prefix
            |     +--ro route-chg-reason?       enumeration
            +--rw mt-ipv6-rib* [ipv6-prefix]
            |  +--rw ipv6-prefix             inet:ipv6-prefix
            |  +--rw nexthop-list* [nexthop]
            |  |  +--rw nexthop              inet:ipv6-prefix
            |  +--rw back-nexthop?           inet:ipv4-prefix
            |  +--rw ipv6-isis-route-para
            |     +--rw metric?                 uint32
            |     +--ro type?                   enumeration
            |     +--ro route-current-state?    route-state-def
            |     +--ro route-previous-state?   route-state-def
            |     +--rw lsp-id?                 inet:ipv4-prefix
            |     +--ro route-chg-reason?       enumeration
            +--rw circuit-list* [circuit-id]
            |  +--rw circuit-id             uint32
            |  +--rw circuit-name?          string
            |  +--rw ip-address?            inet:ip-address
            |  +--ro circuit-status?        enumeration
            |  +--ro circuit-down-reason?   enumeration
            |  +--rw circuit-net-type?      enumeration
            |  +--rw circuit-level-type?    enumeration
            |  +--rw circuit-auth-info
            |  |  +--rw auth-mode
            |  |  |  +--rw (auth-mode-type)?
            |  |  |     +--:(mode-simple)
            |  |  |     |  +--rw simple-password?     string
            |  |  |     +--:(mode-md5)
            |  |  |     |  +--rw md5-password?        string
            |  |  |     +--:(mode-hmac-sha256)
            |  |  |     |  +--rw hmac-key-id?         uint32
            |  |  |     |  +--rw hmac-password?       string
            |  |  |     +--:(mode-keychain)
            |  |  |        +--rw keychain-key-id?     uint32
            |  |  |        +--rw keychain-password?   string
            |  |  |        +--rw keychain-mode?       enumeration
            |  |  |        +--rw keychain-periodic?   enumeration
            |  |  |        +--rw send_time?           uint32
            |  |  |        +--rw receive_tim?         uint32
            |  |  +--rw snp-auth-status?   enumeration
            |  |  +--rw auth-scope?        enumeration
            |  +--rw l1-dis-id?             inet:ipv4-prefix
            |  +--rw l2-dis-id?             inet:ipv4-prefix
            |  +--rw l1-nbr-list* [l1nbr-system-id]
            |  |  +--rw l1nbr-system-id    uint32
            |  |  +--rw snpa?              uint32
            |  |  +--ro nbr-status?        enumeration
            |  |  +--ro nbr-down-reason?   enumeration



Wu, et al.               Expires March 14, 2015                [Page 30]

Internet-Draft           IS-IS information model          September 2014


            |  |  +--rw nbr-type?          enumeration
            |  +--rw l2-nbr-list* [l2nbr-system-id]
            |  |  +--rw l2nbr-system-id    uint32
            |  |  +--rw snpa?              uint32
            |  |  +--ro nbr-status?        enumeration
            |  |  +--ro nbr-down-reason?   enumeration
            |  |  +--rw nbr-type?          enumeration
            |  +--rw circuit-te
            |     +--rw admin-group?         uint32
            |     +--rw ipv4-addr?           inet:ipv4-prefix
            |     +--rw nbr-ipv4-addr?       inet:ipv4-prefix
            |     +--rw max-bandwidth?       uint32
            |     +--rw max-rsv-bandwidth?   uint32
            |     +--rw unrsv-bandwidth?     uint32
            +--rw policy-list* [policy-id]
               +--rw policy-id               string

              Figure 8 The I2RS YANG model of IS-IS

7.  IANA Considerations

   This draft includes no request to IANA.

8.  Security Considerations

   This document introduces no new security threat and SHOULD follow the
   security requirements as stated in [I-D.ietf-i2rs-architecture].

9.  Acknowledgements

   TBD

10.  References

10.1.  Normative References

   [I-D.hares-i2rs-usecase-reqs-summary]
              Hares, S., "Summary of I2RS Use Case Requirements", draft-
              hares-i2rs-usecase-reqs-summary-00 (work in progress),
              July 2014.

   [I-D.ietf-i2rs-architecture]
              Atlas, A., Halpern, J., Hares, S., Ward, D., and T.
              Nadeau, "An Architecture for the Interface to the Routing
              System", draft-ietf-i2rs-architecture-05 (work in
              progress), July 2014.





Wu, et al.               Expires March 14, 2015                [Page 31]

Internet-Draft           IS-IS information model          September 2014


   [I-D.ietf-i2rs-rib-info-model]
              Bahadur, N., Folkes, R., Kini, S., and J. Medved, "Routing
              Information Base Info Model", draft-ietf-i2rs-rib-info-
              model-03 (work in progress), May 2014.

   [I-D.wu-i2rs-igp-usecases]
              Wu, N., Li, Z., and S. Hares, "Use Cases for an Interface
              to IGP Protocol", draft-wu-i2rs-igp-usecases-00 (work in
              progress), July 2014.

10.2.  Informative References

   [I-D.ietf-isis-oper-enhance]
              Shen, N., Li, T., Amante, S., and M. Abrahamsson, "IS-IS
              Operational Enhancements for Network Maintenance Events",
              draft-ietf-isis-oper-enhance-03 (work in progress),
              February 2013.

   [I-D.litkowski-rtgwg-uloop-delay]
              Litkowski, S., Decraene, B., Filsfils, C., and P.
              Francois, "Microloop prevention by introducing a local
              convergence delay", draft-litkowski-rtgwg-uloop-delay-03
              (work in progress), February 2014.

   [ISO.10589.1992]
              International Organization for Standardization,
              "Intermediate system to intermediate system intra-domain-
              routing routine information exchange protocol for use in
              conjunction with the protocol for providing the
              connectionless-mode Network Service (ISO 8473)", ISO
              Standard 10589, 1992.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC5511]  Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax
              Used to Form Encoding Rules in Various Routing Protocol
              Specifications", RFC 5511, April 2009.

   [RFC6976]  Shand, M., Bryant, S., Previdi, S., Filsfils, C.,
              Francois, P., and O. Bonaventure, "Framework for Loop-Free
              Convergence Using the Ordered Forwarding Information Base
              (oFIB) Approach", RFC 6976, July 2013.








Wu, et al.               Expires March 14, 2015                [Page 32]

Internet-Draft           IS-IS information model          September 2014


Authors' Addresses

   Nan Wu
   Huawei
   Huawei Bld., No.156 Beiqing Rd.
   Beijing  100095
   China

   Email: eric.wu@huawei.com


   Lixing Wang
   Huawei
   Huawei Bld., No.156 Beiqing Rd.
   Beijing  10095
   China

   Email: wanglixing@huawei.com


   Susan Hares
   Huawei
   7453 Hickory Hill
   Saline, MA  48176
   USA

   Email: shares@ndzh.com
























Wu, et al.               Expires March 14, 2015                [Page 33]