Internet DRAFT - draft-wang-i2rs-ospf-info-model
draft-wang-i2rs-ospf-info-model
Network Working Group E. Wu
Internet-Draft L. Wang
Intended status: Standards Track S. Hares
Expires: March 30, 2015 Huawei
September 26, 2014
I2RS Information Model for OSPF protocol
draft-wang-i2rs-ospf-info-model-00
Abstract
As one of well-known link-state protocols, OSPF has been widely used
in the routing of intra domain networks. During the past decades, it
has been deployed with the help of typical interfaces such as CLI,
SNMP and NETCONF. As modern networks grow in scale and complexity,
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 OSPF protocol to
facilitate the definition of a standardized data model, which can be
used to define interfaces to the OSPF 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."
Wu, et al. Expires March 30, 2015 [Page 1]
Internet-Draft OSPF information model September 2014
This Internet-Draft will expire on March 30, 2015.
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. OSPF data . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. OSPF instance . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1. Instance parameters . . . . . . . . . . . . . . . . . 5
2.1.2. Multi-topology-list . . . . . . . . . . . . . . . . . 5
2.2. OSPF multi-topology . . . . . . . . . . . . . . . . . . . 6
2.2.1. OSPF MT route . . . . . . . . . . . . . . . . . . . . 6
2.3. OSPF area . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.1. Area parameters . . . . . . . . . . . . . . . . . . . 8
2.3.2. Link state database . . . . . . . . . . . . . . . . . 9
2.3.3. OSPFv2 Link State Advertisement . . . . . . . . . . . 9
2.3.4. OSPFv3 Link State Advertisement . . . . . . . . . . . 12
2.3.5. Interface-list . . . . . . . . . . . . . . . . . . . 14
2.3.6. Network-list . . . . . . . . . . . . . . . . . . . . 14
2.3.7. Router-info database . . . . . . . . . . . . . . . . 14
2.4. OSPF interface . . . . . . . . . . . . . . . . . . . . . 14
2.4.1. Interface parameters . . . . . . . . . . . . . . . . 14
2.4.2. Interface neighbor . . . . . . . . . . . . . . . . . 16
2.4.3. Interface traffic engineering . . . . . . . . . . . . 17
3. OSPF notification . . . . . . . . . . . . . . . . . . . . . . 18
3.1. Adjacency . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2. LSDB . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3. Route . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4. TE . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.5. Protocol statistics . . . . . . . . . . . . . . . . . . . 18
4. OSPF operation . . . . . . . . . . . . . . . . . . . . . . . 19
4.1. Router number monitoring . . . . . . . . . . . . . . . . 19
4.2. Router-ID conflict recovery . . . . . . . . . . . . . . . 19
5. OSPF grammar . . . . . . . . . . . . . . . . . . . . . . . . 20
Wu, et al. Expires March 30, 2015 [Page 2]
Internet-Draft OSPF information model September 2014
5.1. Instance . . . . . . . . . . . . . . . . . . . . . . . . 20
5.2. Multi-topology . . . . . . . . . . . . . . . . . . . . . 20
5.3. Area . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.4. Interface . . . . . . . . . . . . . . . . . . . . . . . . 23
6. I2RS YANG model of OSPF . . . . . . . . . . . . . . . . . . . 23
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34
8. Security Considerations . . . . . . . . . . . . . . . . . . . 34
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 34
10.1. Normative References . . . . . . . . . . . . . . . . . . 34
10.2. Informative References . . . . . . . . . . . . . . . . . 35
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35
1. Introduction
As one of well-known link-state protocols, OSPF[RFC2328] has been
widely used in the routing of intra domain networks. During the past
decades, it has been deployed with the help of typical interfaces
such as CLI, SNMP and NETCONF. As modern networks grow in scale and
complexity, 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 OSPF protocol to
facilitate the definition of a standardized data model, which can be
used to define interfaces to the OSPF 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.wu-i2rs-igp-usecases] can be supported.
In order to support large intra-domain, OSPF has been organized
hierarchically into areas. The topology of one area is hidden from
the rest of networks, which is beneficial from the reduction of
routing traffic. Based on flooding mechanism, each routing-system in
one OSPF area will maintain the identical database from which a pair-
wise shortest tree is calculated in the distributed manner. As one
client of RIB, OSPF SHOULD populate its routing information into RIB
as stated in [I-D.ietf-i2rs-rib-info-model].
2. OSPF data
This section describes the data involved in the OSPF information
model in detail. Please note OSPF in this document means both OSPFv2
and OSPFv3[RFC5340] protocol unless specified. OSPF data includes
information related to OSPF instance, OSPF area, OSPF multi-topology,
OSPF interfaces, OSPF adjacencies and OSPF routes. A high-level
architecture of the OSPF contents is shown as below.
Wu, et al. Expires March 30, 2015 [Page 3]
Internet-Draft OSPF information model September 2014
OSPF routing-protocol
|0..N
|
OSPF instance
|1..N
|
Multi-topology
|
|
+----------------------------------------+---------------+
|0..N | |0..N
| | |
Area MT-RIB Policy
| |0..N
| |
+-------+---------------+ Route
| |1..1 |0..N |
| | | |
TE LSDB Interface +-------+------+
|0..N | | |1..N |0..N
| | | | |
LSA +---+--------+ Prefix Nexthop Backup
| | | |0..N nexthop
| | | |
| TE Link-LSA NBR-list
|
+-------+-------+-------+------+-----------+-----------+
|0..N |0..N |0..N |0..N |0..N |0..N |0..1
| | | | | | |
ADJ-list Intra- Inter- ASBR ASE-prefix NSSA-prefix TE-router-ID
area area
prefix prefix
list
Figure 1: Architecture of OSPF information model
2.1. OSPF instance
In the context of OSPF information model, instance behaves like an
independent virtual OSPF routing system which contains the instance
parameters and the multi-topology list. Multiple instances MAY be
supported on one network device.
Wu, et al. Expires March 30, 2015 [Page 4]
Internet-Draft OSPF information model September 2014
module: ospf-protocol
+--rw ospf-instance
| +--rw ospf-instance-name string
| +--rw ospf-vpn-name? string
| +--rw router-id inet:ip-address
| +--ro protocol-status enumeration
| +--ro ospf-type enumeration
| +--rw version enumeration
| +--ro ospf-process-create-mode enumeration
| +--rw preference uint32
| +--rw hostname? string
| +--rw mt-list
Figure 2 YANG model of OSPF instance
2.1.1. Instance parameters
o ospf-instance-name: A name uniquely identifying OSPF instance
across all of those supported on one network device.
o ospf-vpn-name: The name of the VPN instance which this instance is
binded to.
o router-id: The identification of this process. Every router-id
MUST be unique among the OSPF network.
o protocol-status: The status of current process. Valid status
could include Active, Suppressed, Shutdown, Stub, Reset or etc.
o ospf-type: This indicates whether this OSPF routing system is
acting as an ABR or ASBR in this instance.
o version: The version number of OSPF protocol. Valid input SHOULD
be V2 or V3.
o ospf-instance-create-mode: The mode used to create OSPF instance
through I2RS Agent.
o preference: The OSPF route preference for current process.
o hostname: The symbolic name used to represent current process,
which would be more preferable for human eyes.
2.1.2. Multi-topology-list
This represents the list of topologies associated with this OSPF
instance. Each OSPF instance MAY support multiple topologies to
represent different involvement within those topologies. The list is
Wu, et al. Expires March 30, 2015 [Page 5]
Internet-Draft OSPF information model September 2014
mandatory for OSPF instance and MUST support one topology at least.
More discussion for this list is in below section.
2.2. OSPF multi-topology
A set of independent Multi-Topologies (MTs) can be supported on the
same OSPF routing domain. This section describes the information
model related to MT.
o mt-id: The identifier of this MT. This ID is globally unique
across the routing domain.
o address-family: The address family supported on this MT.
o mt-status: The status of this MT. Valid input MAY be Active or
Inactive.
o policy-list: This list contains those policies referenced within
this OSPF MT. It is optional for the MT to reference policy or
not.
o mt-rib: The routing information base for this MT.
o area-list: This is the list of area involved in this OSPF MT. The
information model of area-list will be elaborated in the section
below.
module: ospf-protocol
+--rw ospf-instance
...
| +--rw multi-topo* [mt-id]
| +--rw mt-id uint16
| +--rw address-family address-family-def
| +--rw mt-status? enumeration
| +--rw policy-list* [policy-id]
| | +--rw policy-id string
| +--rw mt-rib
...
| +--rw area-list
Figure 3 YANG model of OSPF MT
2.2.1. OSPF MT route
o prefix: The destination address of this route.
o nexthop-list: The nexthops of this route.
Wu, et al. Expires March 30, 2015 [Page 6]
Internet-Draft OSPF information model September 2014
o backup nexthop: The backup nexthop for this route.
o metric: The metric for this routes.
o type: The type for this route. Valid input MAY be OSPF or
OSPF_ASE.
o route-state-info: The current and previous state of this route,
the reason for this change and the related LSA invovled for this
route.
module: ospf-protocol
+--rw ospf-instance
...
| +--rw multi-topo* [mt-id]
...
| +--rw mt-rib
| | +--rw route* [prefix]
| | +--rw prefix inet:ipv4-prefix
| | +--rw nexthop-list
| | | +--rw nexthop* [ospf-nexthop]
| | | +--rw ospf-nexthop inet:ipv4-prefix
| | +--rw back-nexthop? inet:ipv4-prefix
| | +--rw metric? uint32
| | +--rw type? ospf-route-type-def
| | +--rw route-state-info
| | +--rw metric? uint32
| | +--rw route-current-state? ospf-route-state-def
| | +--rw route-previous-state? ospf-route-state-def
| | +--rw route-chg-reason? route-chg-reason-def
| | +--rw lsid? inet:ip-address
| | +--rw lsa-type? lsa-type-def
| | +--rw advertiser? inet:ip-address
Figure 4 YANG model of OSPF RIB and route
2.3. OSPF area
OSPF area is used to organize routing network in a hierarchical
manner. OSPF process has to contain one area at least to work
properly. The maximum number of area supported in one OSPF process
is implementation dependent. Each area SHOULD contain information
related to area parameters, link-state database and so on.
Wu, et al. Expires March 30, 2015 [Page 7]
Internet-Draft OSPF information model September 2014
module: ospf-protocol
+--rw ospf-instance
...
| +--rw multi-topo* [mt-id]
...
| +--rw area-list
| +--rw area* [area-id]
| +--rw area-id uint16
| +--rw area-type? area-type-def
| +--rw area-status? area-status-def
| +--rw lsa-arrival-int? uint32
| +--rw lsa-orig-int? uint32
| +--rw router-number? uint32
| +--rw area-auth
...
| +--rw lsdb
...
| +--rw interface-list
...
| +--rw network-list* [network-prefix mask]
...
| +--rw route-info-list* [route-info-index]
...
Figure 5 YANG model of OSPF area
2.3.1. Area parameters
This section demonstrates those parameters in area scope.
o area-id: The identification of this level which SHOULD be level-1
or level-2.
o area-type: The type of current area. Valid choice SHOULD be
Normal, STUB or NSSA.
o area-status: The status of current area. Valid input SHOULD be
Active, Shutdown or Reset.
o lsa-arrival-int: The interval of arrival between two consecutive
LSA.
o lsa-orig-int: The interval of origination between two consecutive
LSA.
o router-number: The total number of routers working in current
area.
Wu, et al. Expires March 30, 2015 [Page 8]
Internet-Draft OSPF information model September 2014
o area-auth: The information related to area authentication,
including authentication mode, password and other attributes.
2.3.2. Link state database
Link State Database (LSDB) is composed of all link-state information
advertised in the corresponding area. These pieces of link-state
information are organized in the form of Link State Advertisement
(LSA) which can be divided into two groups: self-originated LSA and
remote-generated LSA. Some attributes of database can also be
included in the information model.
o lsdb-status: This represents the current status for database. It
MAY be Normal or Overflow or something else.
o lsdb-overflow-limit: The limit for overflow threshold of
corresponding LSDB. When reaching or recovering from this
threshold, one notification SHOULD be sent to I2RS Client.
o lsdb-size: The size of database in the form of LSP number or bytes
or percentage.
o lsa-list: This list indicates those LSAs which are advertised in
current area by either remote router or self-origination.
module: ospf-protocol
+--rw ospf-instance
...
| +--rw multi-topo* [mt-id]
...
| +--rw area-list
...
| +--rw lsdb
| | +--rw lsdb-status? enumeration
| | +--rw lsdb-overflow-limit? uint32
| | +--rw lsdb-size? uint32
| | +--rw lsa* [lsa-v2-type link-state-id advertiser-id]
...
Figure 5 YANG model of OSPF LSDB
2.3.3. OSPFv2 Link State Advertisement
Link State Advertisement (LSA) is a data unit used to hold and
organize link-state information in the area scope. OSPF routers in
the same area depend on the exchange of LSAes to synchronize their
database which is the basis for per-hop forwarding paradigm. This
section demonstrates some important components of LSA for OSPFv2
protocol.
Wu, et al. Expires March 30, 2015 [Page 9]
Internet-Draft OSPF information model September 2014
o lsa-age: The time in seconds since the LSA was originated.
o lsa-options: The optional capabilities supported by the described
portion of the routing domain.
o lsa-v2-type: The type of LSA. There are 6 types of LSA for OSPFv2
in total.
o link-state-id: The identifier for this LSA which is decided by
originating router.
o advertiser-id: The Router ID of the router that originated the
LSA.
o seq-no: The sequence number of a LSA. It is used to differentiate
between the old instance and the new one for the LSA from the same
place.
o chksum: The Fletcher checksum of the complete contents of the LSA,
including the LSA header but excluding the lsa-age field.
o lsa-length: The length in bytes of the LSA.
o router-lsa: Router-LSAs are the Type 1 LSAs. Each router in an
area originates a router-LSA. The LSA describes the state and
cost of the router's links to the area.
o network-lsa: Network-LSAs are the Type 2 LSAs. A network-LSA is
originated for each broadcast and NBMA network in the area which
supports two or more routers. The network-LSA is originated by
the network's Designated Router.
o summary-lsa: Summary-LSAs are the Type 3 and 4 LSAs. These LSAs
are originated by area border routers. Summary-LSAs describe
inter-area destinations.
o as-external-lsa: AS-external-LSAs are the Type 5 LSAs. These LSAs
are originated by AS boundary routers, and describe destinations
external to the AS.
o nssa-lsa: NSSA-LSAs are the Type 7 LSAs. There LSAs are
originated by NSSA AS boundary routers for imported external
routes.
o te-router-lsa: This LSA is used to carry the Router Address TLV,
which specifies a stable IP address of the advertising router that
is always reachable if there is any connectivity to it.
Wu, et al. Expires March 30, 2015 [Page 10]
Internet-Draft OSPF information model September 2014
o te-link-lsa: This LSA is used to carry the Link TLV which
describes traffic engineering information related to a single
link.
module: ospf-protocol
+--rw ospf-v4ur-instance
...
| +--rw multi-topo* [mt-id]
...
| +--rw area-list
...
| +--rw lsdb
| | +--rw lsa* [lsa-v2-type link-state-id advertiser-id]
| | +--rw lsa-age? uint32
| | +--rw lsa-options? uint8
| | +--rw lsa-v2-type enumeration
| | +--rw link-state-id inet:ipv4-address
| | +--rw advertiser-id inet:ip-prefix
| | +--rw seq-no? uint32
| | +--rw chksum? uint32
| | +--rw lsa-length? uint32
| | +--rw (ls-type)?
| | +--:(router-lsa)
| | | +--rw ospf-v2-router-lsa
...
| | +--:(network-lsa)
| | | +--rw ospf-v2-network-lsa
...
| | +--:(summary-lsa)
| | | +--rw ospf-v2-summary-lsa
...
| | +--:(as-external-lsa)
| | | +--rw ospf-v2-as-external-lsa
...
| | +--:(nssa-external-lsa)
| | | +--rw ospf-v2-nssa-external-lsa
...
| | +--:(te-router-lsa)
| | | +--rw ospf-v2-te-router-lsa
...
| | +--:(te-link-lsa)
| | +--rw ospf-v2-te-link-lsa
...
Figure 6 YANG model of OSPFv2 LSA
Wu, et al. Expires March 30, 2015 [Page 11]
Internet-Draft OSPF information model September 2014
2.3.4. OSPFv3 Link State Advertisement
This section demonstrates some important components of LSA for OSPFv3
protocol.
o lsa-age: The time in seconds since the LSA was originated.
o lsa-v3-type: The type of LSA. There are 8 types of LSA for OSPFv3
in total.
o lsa-state-id: The identifier for this LSA which is decided by
originating router.
o advertiser-id: The Router ID of the router that originated the
LSA.
o seq-no: The sequence number of a LSA. It is used to differentiate
between the old instance and the new one for the LSA from the same
place.
o chksum: The Fletcher checksum of the complete contents of the LSA,
including the LSA header but excluding the lsa-age field.
o lsa-length: The length in bytes of the LSA.
o router-lsa: Router-LSAs have LS type equal to 0x2001. Each router
in an area originates one or more router-LSAs.
o network-lsa: Network-LSAs have LS type equal to 0x2002. A
network-LSA is originated for each broadcast and NBMA link in the
area that includes two or more adjacent routers. The network-LSA
is originated by the link's Designated Router.
o inter-area-prefix-lsa: Inter-area-prefix-LSAs have LS type equal
to 0x2003. These LSAs are the IPv6 equivalent of OSPF for IPv4's
type 3 summary-LSAs.
o inter-area-router-lsa: Inter-area-router-LSAs have LS type equal
to 0x2004. These LSAs are the IPv6 equivalent of OSPF for IPv4's
type 4 summary-LSAs.
o as-external-lsa: AS-external-LSAs have LS type equal to 0x4005.
These LSAs are originated by AS boundary routers and describe
destinations external to the AS.
o nssa-lsa: NSSA-LSAs have LS type equal to 0x2007. These LSAs are
originated by AS boundary routers within an NSSA and describe
Wu, et al. Expires March 30, 2015 [Page 12]
Internet-Draft OSPF information model September 2014
destinations external to the AS that may or may not be propagated
outside the NSSA.
o link-lsa: Link-LSAs have LS type equal to 0x0008. A router
originates a separate link-LSA for each attached physical link.
o intra-area-prefix-lsa: Intra-area-prefix-LSAs have LS type equal
to 0x2009. A router uses intra-area-prefix-LSAs to advertise one
or more IPv6 address prefixes that are associated with a local
router address, an attached stub network segment, or an attached
transit network segment.
o te-link-lsa: This LSA is used to carry the Link TLV which
describes traffic engineering information related to a single
link.
module: ospf-protocol
+--rw ospf-v6ur-instance
...
| +--rw multi-topo* [mt-id]
...
| +--rw area-list
...
+--rw lsdb
| +--rw lsa*
| [lsa-v3-type link-state-id advertiser-id]
| +--rw lsa-age? uint32
| +--rw lsa-v3-type enumeration
| +--rw link-state-id uint32
| +--rw advertiser-id inet:ip-prefix
| +--rw seq-no? uint32
| +--rw chksum? uint32
| +--rw lsa-length? uint32
| +--rw (ls-type)?
| +--:(router-lsa)
| | +--rw ospf-v3-router-lsa
...
| +--:(network-lsa)
| | +--rw ospf-v3-network-lsa
...
| +--:(inter-area-prefix-lsa)
| | +--rw ospf-v3-inter-area-prefix-lsa
...
| +--:(inter-area-router-lsa)
| | +--rw ospf-v3-inter-area-router-lsa
...
| +--:(as-external-lsa)
| | +--rw ospf-v3-as-external-lsa
Wu, et al. Expires March 30, 2015 [Page 13]
Internet-Draft OSPF information model September 2014
...
| +--:(nssa-lsa)
| | +--rw ospf-v3-nssa-lsa
...
| +--:(link-lsa)
| | +--rw ospf-v3-link-lsa
...
| +--:(intra-area-prefix-lsa)
| | +--rw ospf-v3-intra-area-prefix-lsa
...
| +--:(te-router-ipv6-address-lsa)
| | +--rw ospf-v2-te-router-ipv6-address
...
| +--:(te-link-lsa)
| +--rw ospf-v3-te-link-lsa
...
Figure 7 YANG model of OSPFv3 LSA
2.3.5. Interface-list
This list contains interfaces enabled in this area. The information
model of interface-list will be elaborated in the section below.
2.3.6. Network-list
This list contains different pairs of IP address and mask which are
used to enable interfaces into this area. The enabled interfaces' IP
address are covered by the scope define by address & mask pair. The
most exact pair is used when different pairs overlay on their scopes.
2.3.7. Router-info database
This list contains the router information of every routers from this
area. Router information includes the identification of the router,
the Area-ID, the hostname if possible and some attributes such as ID
of neighbors. Such a population database MAY be useful for future
scenarioes.
2.4. OSPF interface
This section demonstrates the information model of OSPF interfaces.
2.4.1. Interface parameters
o interface-index: The index for this interface. It MUST be unique
globally in the same routing system.
Wu, et al. Expires March 30, 2015 [Page 14]
Internet-Draft OSPF information model September 2014
o interface-name: The name used to refer to this interface.
o interface-status: The state of this interface in current area.
Valid state SHOULD be DOWN, P2P, WAITING, DR, BDR or DROther.
o interface-down-reason: The reason the state of this interface
changed to down. Valid reason SHOULD be Physical-down, Admin-
shutdown or IP-down.
o interface-net-type: The network type simulated on this interface.
Valid choice SHOULD be P2P, Broadcast, NBMA, P2MP or even virtual-
link.
o interface-role: The identification of DR, BDR or DROther role for
this interface.
o interface-te-info: The traffic-engineer information related to
this interface.
o interface-auth: The information related to interface
authentication, including authentication mode, password and other
attributes.
o ip-address: The IPv4 or IPv6 address of this interface.
o nbr-list: The neighbor list on this interface.
Wu, et al. Expires March 30, 2015 [Page 15]
Internet-Draft OSPF information model September 2014
module: ospf-protocol
+--rw ospf-instance
...
| +--rw multi-topo* [mt-id]
...
| +--rw area-list
...
| +--rw interface-list
| | +--rw interface* [interface-index]
| | +--rw interface-index uint64
| | +--rw interface-name? string
| | +--rw interface-status? interface-status-def
| | +--rw interface-down-reason? interface-down-reason-def
| | +--rw interface-net-type? interface-net-type-def
| | +--rw interface-role? interface-role-def
| | +--rw interface-te-info
...
| | +--rw interface-auth
...
| | +--rw ip-address? inet:ipv4-address
| | +--rw nbr-list
...
Figure 7 YANG model of OSPF interface
2.4.2. Interface neighbor
This section describes the neighbor information related to one
interface.
o router-id: The Router-ID of one neighbor supported on this
interface.
o interface-index: The index for the interface which this neighbor
belongs to.
o interface-name: The name used to refer to this interface.
o nbr-status: The status for the adjacency with this neighbor.
Valid input SHOULD be Down, Attempt, 2-way, ExStart, Exchange,
Loading and Full.
o nbr-previous-status: The status for the adjacency with this
neighbor before the latest change.
o nbr-down-reason: The reason this adjacency was brought. Valid
choice SHOULD be Interface-down, BFD-down, Expired and CFG-change.
Wu, et al. Expires March 30, 2015 [Page 16]
Internet-Draft OSPF information model September 2014
o nbr-address: The IPv4 or IPv6 address for this neighbor.
module: ospf-protocol
+--rw ospf-instance
...
| +--rw multi-topo* [mt-id]
...
| +--rw area-list
...
| +--rw interface-list
...
| | +--rw nbr-list
| | +--rw nbr* [router-id]
| | +--rw router-id inet:ip-address
| | +--rw interface-index? uint64
| | +--rw interface-name? string
| | +--rw nbr-status? nbr-status-def
| | +--rw nbr-previous-status? nbr-status-def
| | +--rw nbr-down-reason? nbr-down-reason-def
| | +--rw nbr-address? inet:ipv4-address
...
Figure 8 YANG model of OSPF neighbor
2.4.3. Interface traffic engineering
This section describes the TE related data on this interface.
o interface-index: The index for this interface. It MUST be unique
globally in the same routing system.
o admin-Group: The bit mask assigned by operators used for
identifying administrative group.
o ipv4-address: A 4-octet IPv4 address for the interface described
by interface-index.
o nbr-ipv4-address: A single IPv4 address for a neighboring router
on this link.
o max-link-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.
Wu, et al. Expires March 30, 2015 [Page 17]
Internet-Draft OSPF information model September 2014
3. OSPF notification
With the help of OSPF information model, the I2RS Client can collect
OSPF state data through publish/subscription mechanism. This section
describes several data which is important for operating and
maintaining of OSPF 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.
3.2. LSDB
Link state database is the most important part in OSPF 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 LSA when specific events
happened.
3.3. Route
Since the OSPF routing-table is one client for the RIB, it MAY be
beneficial to read data from OSPF 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 OSPF information model, it will be more convenient for
operators to get corresponding LSA and even the adjacency when one
route disappeared.
3.4. TE
It MAY be helpful to read the traffic engineering information for one
area or for one specific interface. 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.
Wu, et al. Expires March 30, 2015 [Page 18]
Internet-Draft OSPF information model September 2014
4. OSPF operation
Based on the standardized information model of OSPF protocol as
described above, use cases defined in [I-D.wu-i2rs-igp-usecases] can
be supported. This section demonstrates several specific examples of
these use cases.
4.1. Router number monitoring
Complaint can be heard frequently from clients about how many routers
should be deployed in one area. The answer for this question is not
very clear in vendor's guide since the product specification is only
for reference and what's worse, those words like "usually", "roughly"
or "most of the time" are often used from field engineers. As the
consequence, it is always convenient for clients to deploy all the
routers in one area, which may introduce scaling issue in future.
With the help of OSPF information model and I2RS interfaces, it is
possible to give out deployment suggestion or warning dynamically in
the real-time manner. Based on the statistics of router number and
system resource consuming, plus the ratio relationship between them,
one notification or warning can be sent to I2RS Client. From there
decision can be made to expand safely or have to shrink for
precaution.
4.2. Router-ID conflict recovery
It is not rare to observe router-ID conflict in networks both intra
and inter area, especially when different area merged. It is time-
consuming and troublesome to detect and locate the place where this
trouble happened. The frequently used solution is to rename one of
the conflicted router-ID to a new one then reboot the involved OSPF
instance to force all adjacencies to rebuild and re-synchronize the
LSDB.
It MAY be possible to alleviate this issue with the help of OSPF
information model and programmatic I2RS interfaces. With the help of
router-info-list, this conflict can be detected automatically. When
one substantial conflict is on the horizon, no need to wait for
mutual re-origination happened, ID conflict can be found in router-
info-list with help of their coordinate information, no matter the
conflict routers come from the same area or not. What is more,
through I2RS interfaces and Agent, it is possible to rewrite one of
the conflicted router-ID into a new one then reboot the routing-
protocol.
Wu, et al. Expires March 30, 2015 [Page 19]
Internet-Draft OSPF information model September 2014
5. OSPF grammar
This section demonstrates the information model of OSPF routing-
protocol using the syntax stated in [RFC5511]
5.1. Instance
<OSPF routing-protocol> ::= [ <OSPF instance> ... ]
<OSPF instance> ::= <instance-parameters> <multi-topo-list>
<instance-parameters> ::= <OSPF_INSTANCE_NAME> [ <OSPF_VPN_NAME> ]
<ROUTER_ID> <protocol-status> <ospf-type> <version> <ospf-instance-
create-mode> [ <PREFERENCE> ] [ <HOSTNAME> ]
<ospf-type> ::= <ABR> | <ASBR> | <NONE>
<protocol-status> ::= <ACTIVE> | <RESET> | <SHUTDOWN> | <OVERLOAD>
<version> ::= <V2> | <V3>
5.2. Multi-topology
<multi-topo-list> ::= [ <mt> ... ]
<mt> ::= <MT_ID> <address-family> <mt-status> [ <policy-list> ] <mt-
rib> <area-list>
<address-family> ::= <V4UR> | <V6UR> | <V4MR> | <V6MR>
<mt-status> ::= <ACTIVE> | <INACTIVE>
<mt-rib> ::= <route-list>
<area-list> ::= [ <area> ... ]
<policy-list> ::= [ <Policy-Rule> ... ]
<Policy-Rule> SHOULD follow the definition in the information model
for policy as stated in [I-D.hares-i2rs-info-model-policy].
<route-list> ::= <route> [ <route> ... ]
<route> ::= <PREFIX> <nexthop-list> [ <back-nexthop> ] <METRIC>
<TYPE> <route-state-info>
<backup-nexthop> ::= <nexthop>
Wu, et al. Expires March 30, 2015 [Page 20]
Internet-Draft OSPF information model September 2014
<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>
] [ <route-chg-reason> ] [ <LSID> <lsa-type> <advertiser> ]
<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. Area
<area-list> ::= [ <area> ... ]
<area> ::= <area-parameters> <lsdb> <interface-list> [ <network-list>
] [ <router-info-list> ]
<area-parameters> ::= <AREA_ID> <area-type> <area-status> [
<LSA_ARRIVAL_INT> ] [ <LSA_ORIG_INT> ] [ <ROUTER_NUMBER> ] [ <area-
auth> ]
<area-type> ::= <NORMAL> | <STUB> | <NSSA>
<area-status> ::= <ACTIVE> | <RESET> | <SHUTDOWN>
<area-auth> ::= <auth-mode-type>
<auth-mode-type> ::= <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>
Wu, et al. Expires March 30, 2015 [Page 21]
Internet-Draft OSPF information model September 2014
<lsdb> ::= <lsdb-status> <LSDB_SIZE> [ <LSDB_OVERFLOW_LIMIT> ] <lsa-
list>
<lsdb-status> ::= <NORMAL> | <OVERFLOW>
<network-list> ::= [ <network> ... ]
<network> ::= [ (<IPV4_ADDRESS> <MASK>) ... ]
<router-info-list> ::= [ <router-info> ... ]
<router-info> ::= <ROUTER_ID> [ <IP_ADDRESS> ...]
<lsa-list> ::= <lsa2-list> | <lsa3-list>
<lsa2-list> ::= [ <lsa2> ... ]
<lsa2> ::= <lsa2-header> <ospf-v2-lsa>
<lsa2-header> ::= <LSA_AGE> <LSA_OPTIONS> <lsa-v2-type>
<LINK_STATE_ID> <advertiser-id> <SEQ_NO> <CHKSUM> <LSA_LENGTH>
<lsa-v2-type> ::= <ROUTER_LSA> | <NETWORK_LSA> | <SUMMARY_LSA> |
<AS_EXTERNAL_LSA> | <NSSA_LSA>
<advertiser-id> ::= <ROUTER_ID>
<ospf-v2-lsa> ::= <ospf-v2-router-lsa> | <ospf-v2-network-lsa> |
<ospf-v2-summary-lsa> | <ospf-v2-as-external-lsa> | <ospf-v2-nssa-
external-lsa> | <ospf-v2-te-router-lsa> | <ospf-v2-te-link-lsa>
<lsa3-list> ::= [ <lsa3> ... ]
<lsa3> ::= <lsa3-header> <ospf-v3-lsa>
<lsa3-header> ::= <LSA_AGE> <lsa-v3-type> <link-state-id>
<advertiser-id> <SEQ_NO> <CHKSUM> <LSA_LENGTH>
<lsa-v3-type> ::= <U_BIT> <flood-scope> <function-code>
<flood-scope> ::= <LINK_LOCAL> | <AREA> | <AS>
<function-code> ::= <ROUTER_LSA> | <NETWORK_LSA> | <SUMMARY_LSA> |
<AS_EXTERNAL_LSA> | <NSSA_LSA>
<ospf-v3-lsa> ::= <ospf-v3-router-lsa> | <ospf-v3-network-lsa> |
<ospf-v3-inter-area-prefix-lsa> | <ospf-v3-inter-area-router-lsa> |
<ospf-v3-as-external-lsa> | <ospf-v3-nssa-lsa> | <ospf-v3-link-lsa> |
Wu, et al. Expires March 30, 2015 [Page 22]
Internet-Draft OSPF information model September 2014
<ospf-v3-intra-area-prefix-lsa> | <ospf-v3-te-router-ipv6-address-
lsa> | <ospf-v3-te-link-lsa>
5.4. Interface
<interface-list> ::= [ <interface> ... ]
<interface> ::= <INTERFACE_INDEX> <INTERFACE_NAME> <interface-status>
<IP_ADDRESS> [ <interface-down-reason> ] [ <interface-net-type> ] [
<interface-role> ] [ <interface-te-info> ] [ <interface-auth> ] [
<nbr-list> ]
<interface-net-type> ::= <P2P> | <BRODCAST> | <NBMA> | <P2MP>
<interface-status> ::= <IF_UP> | <IF_DOWN>
<interface-down-reason> ::= <PHY_DOWN> | <ADMIN_DOWN> | <IP_DOWN>
<interface-role> ::= <DR> | <BDR> | <DROther>
<interface-auth> ::= <auth-mode-type>
<interface-te> ::= <ADMIN_GROUP> <IP_ADDR> <NBR_IP_ADDR>
<MAX_BANDWIDTH> <MAX_RSV_BANDWIDTH> <UNRSV_BANDWIDTH>
<nbr-list> ::= <nbr> [ <nbr> ... ]
<nbr> ::= <ROUTER_ID> <INTERFACE_INDEX> <INTERFACE_NAME> <nbr-status>
[ <nbr-previous-status> ] [ <nbr-down-reason> ] <nbr-address>
<nbr-status> ::= <DOWN> | <ATTEMPT> | <2-WAY> | <EXSTAT> |
<EXCHANGE> | <LOADING> | <FULL>
<nbr-previous-status> ::= <DOWN> | <ATTEMPT> | <2-WAY> | <EXSTAT> |
<EXCHANGE> | <LOADING> | <FULL>
<nbr-down-reason> ::= <IF_DOWN> | <BFD_DOWN> | <EXPIRATION> |
<CFD_CHG> | <I2RS_DOWN>
<nbr-address> ::= <IP_ADDRESS>
6. I2RS YANG model of OSPF
Wu, et al. Expires March 30, 2015 [Page 23]
Internet-Draft OSPF information model September 2014
module: ospf-protocol
+--rw ospf-v4ur-instance
| +--rw ospf-instance-name string
| +--rw ospf-vpn-name? string
| +--rw router-id inet:ip-address
| +--ro protocol-status protocol-status-def
| +--ro ospf-type ospf-type-def
| +--ro version ospf-version-def
| +--ro ospf-process-create-mode ospf-process-create-mode-def
| +--rw preference uint32
| +--rw hostname? string
| +--rw mt-list
| +--rw multi-topo* [mt-id]
| +--rw mt-id uint16
| +--rw address-family address-family-def
| +--rw mt-status? enumeration
| +--rw policy-list* [policy-id]
| | +--rw policy-id string
| +--rw mt-rib
| | +--rw route* [prefix]
| | +--rw prefix inet:ipv4-prefix
| | +--rw nexthop-list
| | | +--rw nexthop* [ospf-nexthop]
| | | +--rw ospf-nexthop inet:ipv4-prefix
| | +--rw back-nexthop? inet:ipv4-prefix
| | +--rw metric? uint32
| | +--rw type? ospf-route-type-def
| | +--rw route-state-info
| | +--rw metric? uint32
| | +--rw route-current-state? ospf-route-state-def
| | +--rw route-previous-state? ospf-route-state-def
| | +--rw route-chg-reason? route-chg-reason-def
| | +--rw lsid? inet:ip-address
| | +--rw lsa-type? lsa-type-def
| | +--rw advertiser? inet:ip-address
Wu, et al. Expires March 30, 2015 [Page 24]
Internet-Draft OSPF information model September 2014
| +--rw area-list
| +--rw area-id uint16
| +--rw area-type? area-type-def
| +--rw area-status? area-status-def
| +--rw lsa-arrival-int? uint32
| +--rw lsa-orig-int? uint32
| +--rw router-number? uint32
| +--rw area-auth
| | +--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
Wu, et al. Expires March 30, 2015 [Page 25]
Internet-Draft OSPF information model September 2014
| +--rw lsdb
| | +--rw lsa*[lsa-v2-type link-state-id advertiser-id]
| | +--rw lsa-age? uint32
| | +--rw lsa-options? uint8
| | +--rw lsa-v2-type enumeration
| | +--rw link-state-id inet:ipv4-address
| | +--rw advertiser-id inet:ip-prefix
| | +--rw seq-no? uint32
| | +--rw chksum? uint32
| | +--rw lsa-length? uint32
| | +--rw (ls-type)?
| | +--:(ospf-v2-router-lsa)
| | | +--rw ospf-v2-router-lsa
| | | +--rw bit-flag uint16
| | | +--rw link-num uint16
| | | +--rw link-list* [link-id link-data]
| | | +--rw link-id inet:ipv4-address
| | | +--rw link-data inet:ipv4-address
| | | +--rw link-type enumeration
| | | +--rw mt-num uint16
| | | +--rw metric uint16
| | | +--rw mt-metric* [mt-id]
| | | +--rw mt-id uint16
| | | +--rw metric? uint16
| | +--:(ospf-v2-network-lsa)
| | | +--rw ospf-v2-network-lsa
| | | +--rw network-mask inet:ipv4-prefix
| | | +--rw attached-router* [router-id]
| | | +--rw router-id inet:ipv4-address
| | +--:(ospf-v2-summary-lsa)
| | | +--rw ospf-v2-summary-lsa
| | | +--rw network-mask inet:ipv4-prefix
| | | +--rw mt-metric* [mt-id]
| | | +--rw mt-id uint16
| | | +--rw metric? uint16
| | +--:(ospf-v2-as-external-lsa)
| | | +--rw ospf-v2-as-external-lsa
| | | +--rw network-mask inet:ipv4-prefix
| | | +--rw mt-metric* [mt-id]
| | | +--rw e-bit? uint8
| | | +--rw mt-id uint8
| | | +--rw metric? uint16
| | | +--rw forwarding-address?
| | | inet:ipv4-address
| | | +--rw external-route-tag? uint32
| | +--:(ospf-v2-nssa-external-lsa)
| | | +--rw ospf-v2-nssa-external-lsa
Wu, et al. Expires March 30, 2015 [Page 26]
Internet-Draft OSPF information model September 2014
| | | +--rw network-mask inet:ipv4-prefix
| | | +--rw mt-metric* [mt-id]
| | | +--rw e-bit? uint8
| | | +--rw mt-id uint8
| | | +--rw metric? uint32
| | | +--rw forwarding-address?
| | | inet:ipv4-address
| | | +--rw external-route-tag? uint32
| | +--:(ospf-v2-te-router-lsa)
| | | +--rw ospf-v2-te-router-lsa
| | | +--rw type? uint8
| | | +--rw length? uint32
| | | +--rw router-id? inet:ipv4-address
| | +--:(ospf-te-link-lsa)
| | +--rw ospf-te-link-lsa
| | +--rw type? uint8
| | +--rw length? uint32
| | +--rw link-type-stlv
| | | +--rw type? uint8
| | | +--rw length? uint32
| | | +--rw link-type? enumeration
| | +--rw link-id-tlv-stlv
| | | +--rw type? uint8
| | | +--rw length? uint32
| | | +--rw link-id? inet:ipv4-address
| | +--rw local-address-stlv
| | | +--rw type? uint8
| | | +--rw length? uint32
| | | +--rw local-address-list*
| | [remote-address]
| | | +--rw remote-address
| | inet:ipv4-address
| | +--rw remote-address-stlv
| | | +--rw type? uint8
| | | +--rw length? uint32
| | | +--rw remote-address-list*
| | [remote-address]
| | | +--rw remote-address
| | inet:ipv4-address
| | +--rw te-metric-stlv
| | | +--rw type? uint8
| | | +--rw length? uint32
| | | +--rw value? uint32
| | +--rw maximum-bandwidth-stlv
| | | +--rw type? uint8
| | | +--rw length? uint32
| | | +--rw value? uint32
| | +--rw maximum-reservable-bandwidth-stlv
Wu, et al. Expires March 30, 2015 [Page 27]
Internet-Draft OSPF information model September 2014
| | | +--rw type? uint8
| | | +--rw length? uint32
| | | +--rw value? uint32
| | +--rw unreserved-bandwidth-stlv
| | | +--rw type? uint8
| | | +--rw length? uint32
| | | +--rw value? uint32
| | +--rw administrative-group-stlv
| | +--rw type? uint8
| | +--rw length? uint32
| | +--rw value? uint32
| +--rw interface-list
| | +--rw interface* [interface-index]
| | +--rw interface-index uint64
| | +--rw interface-name? string
| | +--rw interface-status? interface-status-def
| | +--rw interface-down-reason?
| | interface-down-reason-def
| | +--rw interface-net-type? interface-net-type-def
| | +--rw interface-role? interface-role-def
| | +--rw interface-te-info
| | | +--rw admin_group? uint32
| | | +--rw max_bandwidth? uint32
| | | +--rw max_rsv_bandwidth? uint32
| | | +--rw unrsv_bandwidth? uint32
| | +--rw interface-auth
| | | +--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 ip-address? inet:ipv4-address
| | +--rw nbr-list
| | +--rw nbr* [router-id]
| | +--rw router-id inet:ip-address
| | +--rw interface-index? uint64
| | +--rw interface-name? string
Wu, et al. Expires March 30, 2015 [Page 28]
Internet-Draft OSPF information model September 2014
| | +--rw nbr-status? nbr-status-def
| | +--rw nbr-previous-status? nbr-status-def
| | +--rw nbr-down-reason? nbr-down-reason-def
| | +--rw nbr-address? inet:ipv4-address
| | +--rw ip-address? inet:ipv4-address
| +--rw network-list* [network-prefix mask]
| | +--rw network-prefix inet:ipv4-prefix
| | +--rw mask inet:ipv4-prefix
| +--rw route-info-list* [route-info-index]
| +--rw route-info-index uint32
| +--rw router-id inet:ipv4-address
| +--rw ip-address-list* [ip-address]
| +--rw ip-address inet:ipv4-address
+--rw ospf-v6ur-instance
+--rw ospf-instance-name string
+--rw ospf-vpn-name? string
+--rw router-id inet:ip-address
+--ro protocol-status protocol-status-def
+--ro ospf-type ospf-type-def
+--ro version ospf-version-def
+--ro ospf-process-create-mode ospf-process-create-mode-def
+--rw preference uint32
+--rw hostname? string
+--rw mt-list
+--rw multi-topo* [mt-id]
+--rw mt-id uint16
+--rw address-family address-family-def
+--rw mt-status? enumeration
+--rw policy-list* [policy-id]
| +--rw policy-id string
+--rw mt-rib
| +--rw route* [prefix]
| +--rw prefix inet:ipv6-prefix
| +--rw nexthop-list
| | +--rw nexthop* [ospf-nexthop]
| | +--rw ospf-nexthop inet:ipv6-prefix
| +--rw back-nexthop? inet:ipv6-prefix
| +--rw metric? uint32
| +--rw type? ospf-route-type-def
| +--rw route-state-info
| +--rw metric? uint32
| +--rw route-current-state? ospf-route-state-def
| +--rw route-previous-state? ospf-route-state-def
| +--rw route-chg-reason? route-chg-reason-def
| +--rw lsid? inet:ip-address
| +--rw lsa-type? lsa-type-def
| +--rw advertiser? inet:ip-address
Wu, et al. Expires March 30, 2015 [Page 29]
Internet-Draft OSPF information model September 2014
+--rw area-list
+--rw area* [area-id]
+--rw area-id uint16
+--rw area-type? area-type-def
+--rw area-status? area-status-def
+--rw lsa-arrival-int? uint32
+--rw lsa-orig-int? uint32
+--rw router-number? uint32
+--rw area-auth
| +--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 lsdb
| +--rw lsa* [lsa-v3-type link-state-id advertiser-id]
| +--rw lsa-age? uint32
| +--rw lsa-v3-type enumeration
| +--rw link-state-id uint32
| +--rw advertiser-id inet:ip-prefix
| +--rw seq-no? uint32
| +--rw chksum? uint32
| +--rw lsa-length? uint32
| +--rw (ls-type)?
| +--:(ospf-v3-router-lsa)
| | +--rw ospf-v3-router-lsa
| | +--rw option uint16
| | +--rw link-list*
| | [link-type interface-id neighbor-interface-id]
| | +--rw link-type enumeration
| | +--rw metric? uint32
| | +--rw interface-id uint32
| | +--rw neighbor-interface-id uint32
| | +--rw neighbor-router-id?
| | inet:ipv4-address
| +--:(ospf-v3-network-lsa)
| | +--rw ospf-v3-network-lsa
| | +--rw option uint32
Wu, et al. Expires March 30, 2015 [Page 30]
Internet-Draft OSPF information model September 2014
| | +--rw link-list* [attached-router-id]
| | +--rw attached-router-id
| | inet:ipv4-address
| +--:(ospf-v3-inter-area-prefix-lsa)
| | +--rw ospf-v3-inter-area-prefix-lsa
| | +--rw metric? uint32
| | +--rw prefix-length uint8
| | +--rw prefix-options uint8
| | +--rw address-prefix-list* [address-prefix]
| | +--rw address-prefix inet:ipv6-prefix
| +--:(ospf-v3-inter-area-router-lsa)
| | +--rw ospf-v3-inter-area-router-lsa
| | +--rw options uint8
| | +--rw metric? uint32
| | +--rw destination-router-id? inet:ipv4-address
| +--:(ospf-v3-as-external-lsa)
| | +--rw ospf-v3-as-external-lsa
| | +--rw options uint16
| | +--rw metric uint16
| | +--rw prefix-length uint8
| | +--rw prefix-options uint8
| | +--rw referenced-ls-type uint8
| | +--rw address-prefix-list* [address-prefix]
| | | +--rw address-prefix inet:ipv6-prefix
| | +--rw forwarding-address? inet:ipv6-prefix
| | +--rw external-route-tag? uint32
| | +--rw referenced-link-state-id? uint32
| +--:(ospf-v3-nssa-lsa)
| | +--rw ospf-v3-nssa-lsa
| | +--rw options uint16
| | +--rw metric uint16
| | +--rw prefixlength uint8
| | +--rw prefixoptions uint8
| | +--rw referenced-ls-type uint8
| | +--rw address-prefix-list* [address-prefix]
| | | +--rw address-prefix inet:ipv6-prefix
| | +--rw forwarding-address? inet:ipv6-prefix
| | +--rw external-route-tag? uint32
| | +--rw referenced-link-state-id? uint32
| +--:(ospf-v3-link-lsa)
| | +--rw ospf-v3-link-lsa
| | +--rw priority uint8
| | +--rw options uint32
| | +--rw link-local-interface-address?
| | inet:ipv6-address
| | +--rw prefixes uint32
| | +--rw address-prefix-list*
| | [address-prefix-index]
Wu, et al. Expires March 30, 2015 [Page 31]
Internet-Draft OSPF information model September 2014
| | +--rw address-prefix-index uint32
| | +--rw prefix-length uint8
| | +--rw prefix-options? uint8
| | +--rw address-prefix* [address]
| | +--rw address inet:ipv6-prefix
| +--:(ospf-v3-intra-area-prefix-lsa)
| | +--rw ospf-v3-intra-area-prefix-lsa
| | +--rw prefixes uint32
| | +--rw referenced-ls-type uint16
| | +--rw referenced-link-state-id uint32
| | +--rw referenced-advertising-router
| | inet:ipv4-address
| | +--rw address-prefix-list*
| | [address-prefix-index]
| | +--rw address-prefix-index uint32
| | +--rw prefix-length uint8
| | +--rw prefix-options uint8
| | +--rw address-prefix* [address]
| | +--rw address inet:ipv6-prefix
| +--:(ospf-v3-te-router-ipv6-address-lsa)
| | +--rw ospf-v3-te-router-ipv6-address
| | +--rw type uint8
| | +--rw length uint16
| | +--rw router-id inet:ipv6-address
| +--:(te-link-lsa)
| +--rw ospf-te-link-lsa
| +--rw type? uint8
| +--rw length? uint32
| +--rw link-type-stlv
| | +--rw type? uint8
| | +--rw length? uint32
| | +--rw link-type? enumeration
| +--rw link-id-tlv-stlv
| | +--rw type? uint8
| | +--rw length? uint32
| | +--rw link-id? inet:ipv4-address
| +--rw local-address-stlv
| | +--rw type? uint8
| | +--rw length? uint32
| | +--rw local-address-list*
| | [remote-address]
| | +--rw remote-address
| | inet:ipv4-address
| +--rw remote-address-stlv
| | +--rw type? uint8
| | +--rw length? uint32
| | +--rw remote-address-list*
| | [remote-address]
Wu, et al. Expires March 30, 2015 [Page 32]
Internet-Draft OSPF information model September 2014
| | +--rw remote-address
| | inet:ipv4-address
| +--rw te-metric-stlv
| | +--rw type? uint8
| | +--rw length? uint32
| | +--rw value? uint32
| +--rw maximum-bandwidth-stlv
| | +--rw type? uint8
| | +--rw length? uint32
| | +--rw value? uint32
| +--rw maximum-reservable-bandwidth-stlv
| | +--rw type? uint8
| | +--rw length? uint32
| | +--rw value? uint32
| +--rw unreserved-bandwidth-stlv
| | +--rw type? uint8
| | +--rw length? uint32
| | +--rw value? uint32
| +--rw administrative-group-stlv
| +--rw type? uint8
| +--rw length? uint32
| +--rw value? uint32
+--rw interface-list
| +--rw interface* [interface-index]
| +--rw interface-index uint64
| +--rw interface-name? string
| +--rw interface-status? interface-status-def
| +--rw interface-down-reason?
| interface-down-reason-def
| +--rw interface-net-type? interface-net-type-def
| +--rw interface-role? interface-role-def
| +--rw interface-te-info
| | +--rw admin_group? uint32
| | +--rw max_bandwidth? uint32
| | +--rw max_rsv_bandwidth? uint32
| | +--rw unrsv_bandwidth? uint32
| +--rw interface-auth
| | +--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
Wu, et al. Expires March 30, 2015 [Page 33]
Internet-Draft OSPF information model September 2014
| | +--rw keychain-mode? enumeration
| | +--rw keychain-periodic? enumeration
| | +--rw send_time? uint32
| | +--rw receive_tim? uint32
| +--rw ip-address inet:ipv6-address
| +--rw nbr-list
| +--rw nbr* [router-id]
| +--rw router-id inet:ip-address
| +--rw interface-index? uint64
| +--rw interface-name? string
| +--rw nbr-status? nbr-status-def
| +--rw nbr-previous-status? nbr-status-def
| +--rw nbr-down-reason? nbr-down-reason-def
| +--rw nbr-address? inet:ipv6-address
| +--rw ip-address inet:ipv6-address
+--rw network-list* [network-index]
| +--rw network-index uint32
| +--rw network-prefix inet:ipv4-prefix
| +--rw mask inet:ipv4-prefix
+--rw route-info-list* [route-info-index]
+--rw route-info-index uint32
+--rw router-id inet:ipv4-address
+--rw ip-address-list* [ip-address]
+--rw ip-address inet:ipv4-address
Figure 1 The I2RS YANG model of OSPF
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-info-model-policy]
Hares, S. and W. Wu, "An Information Model for Basic
Network Policy", draft-hares-i2rs-info-model-policy-03
(work in progress), July 2014.
Wu, et al. Expires March 30, 2015 [Page 34]
Internet-Draft OSPF information model September 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.
[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
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.
[RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF
for IPv6", RFC 5340, July 2008.
[RFC5511] Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax
Used to Form Encoding Rules in Various Routing Protocol
Specifications", RFC 5511, April 2009.
Authors' Addresses
Eric 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
Wu, et al. Expires March 30, 2015 [Page 35]
Internet-Draft OSPF information model September 2014
Susan Hares
Huawei
7453 Hickory Hill
Saline, MI 48176
USA
Email: shares@ndzh.com
Wu, et al. Expires March 30, 2015 [Page 36]