draft-ietf-ospf-yang-05.txt   draft-ietf-ospf-yang-06.txt 
Internet D. Yeung Internet D. Yeung
Internet-Draft Y. Qu Internet-Draft Arrcus
Intended status: Informational Cisco Systems Intended status: Informational Y. Qu
Expires: January 8, 2017 J. Zhang Expires: May 4, 2017 Cisco Systems
J. Zhang
Juniper Networks Juniper Networks
D. Bogdanovic I. Chen
Kuatro Technologies
K. Sreenivasa A. Lindem
Cisco Systems Cisco Systems
July 7, 2016 October 31, 2016
Yang Data Model for OSPF Protocol Yang Data Model for OSPF Protocol
draft-ietf-ospf-yang-05 draft-ietf-ospf-yang-06
Abstract Abstract
This document defines a YANG data model that can be used to configure This document defines a YANG data model that can be used to configure
and manage OSPF. and manage OSPF.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
skipping to change at page 1, line 37 skipping to change at page 1, line 38
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 8, 2017. This Internet-Draft will expire on May 4, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 21 skipping to change at page 2, line 22
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3
2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3 2. Design of Data Model . . . . . . . . . . . . . . . . . . . . 3
2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5 2.2. OSPFv2 and OSPFv3 . . . . . . . . . . . . . . . . . . . . 5
2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 5 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 5
2.4. Inheritance . . . . . . . . . . . . . . . . . . . . . . . 5 2.4. Inheritance . . . . . . . . . . . . . . . . . . . . . . . 5
2.5. OSPF Router Configuration . . . . . . . . . . . . . . . . 6 2.5. OSPF Router Configuration . . . . . . . . . . . . . . . . 6
2.6. OSPF Instance Configuration . . . . . . . . . . . . . . . 6 2.6. OSPF Instance Configuration . . . . . . . . . . . . . . . 6
2.7. OSPF Area Configuration . . . . . . . . . . . . . . . . . 7 2.7. OSPF Area Configuration . . . . . . . . . . . . . . . . . 7
2.8. OSPF Interface Configuration . . . . . . . . . . . . . . 10 2.8. OSPF Interface Configuration . . . . . . . . . . . . . . 10
2.9. OSPF notification . . . . . . . . . . . . . . . . . . . . 11 2.9. OSPF notification . . . . . . . . . . . . . . . . . . . . 12
3. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 14 3. OSPF BFD Yang Module . . . . . . . . . . . . . . . . . . . . 15
4. OSPF BFD Yang Module . . . . . . . . . . . . . . . . . . . . 22 4. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 15
5. OSPF Yang Module . . . . . . . . . . . . . . . . . . . . . . 22 5. OSPF BFD Yang Module . . . . . . . . . . . . . . . . . . . . 91
6. OSPF Segment Routing Yang Module . . . . . . . . . . . . . . 95 6. Security Considerations . . . . . . . . . . . . . . . . . . . 94
7. OSPF BFD Yang Module . . . . . . . . . . . . . . . . . . . . 110 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 94
8. Security Considerations . . . . . . . . . . . . . . . . . . . 113 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 94
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 113 8.1. Normative References . . . . . . . . . . . . . . . . . . 94
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 113 8.2. Informative References . . . . . . . . . . . . . . . . . 96
10.1. Normative References . . . . . . . . . . . . . . . . . . 113 Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 97
10.2. Informative References . . . . . . . . . . . . . . . . . 115 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 97
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 115
1. Overview 1. Overview
YANG [RFC6020] is a data definition language used to define the YANG [RFC6020] is a data definition language used to define the
contents of a conceptual data store that allows networked devices to contents of a conceptual data store that allows networked devices to
be managed using NETCONF [RFC6241]. YANG is proving relevant beyond be managed using NETCONF [RFC6241]. YANG is proving relevant beyond
its initial confines, as bindings to other interfaces (e.g., ReST) its initial confines, as bindings to other interfaces (e.g., ReST)
and encodings other than XML (e.g., JSON) are being defined. and encodings other than XML (e.g., JSON) are being defined.
Furthermore, YANG data models can be used as the basis for Furthermore, YANG data models can be used as the basis for
implementation of other interfaces, such as CLI and programmatic implementation of other interfaces, such as CLI and programmatic
skipping to change at page 3, line 10 skipping to change at page 3, line 10
[I-D.ietf-netmod-routing-cfg], and it provides the basis for the [I-D.ietf-netmod-routing-cfg], and it provides the basis for the
development of data models for routing protocols. The interface data development of data models for routing protocols. The interface data
model is defined in [RFC7223] and is used for referencing interfaces model is defined in [RFC7223] and is used for referencing interfaces
from the routing protocol. The key-chain data model used for OSPF from the routing protocol. The key-chain data model used for OSPF
authentication is defined in [I-D.ietf-rtgwg-yang-key-chain] and authentication is defined in [I-D.ietf-rtgwg-yang-key-chain] and
provides both a reference to configured key-chains and an enumeration provides both a reference to configured key-chains and an enumeration
of cryptographic algorithms. of cryptographic algorithms.
Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In Both OSPFv2 [RFC2328] and OSPFv3 [RFC5340] are supported. In
addition to the core OSPF protocol, features described in other OSPF addition to the core OSPF protocol, features described in other OSPF
RFCs are also supported. They includes demand circuit [RFC1793], RFCs are also supported. These includes demand circuit [RFC1793],
traffic engineering [RFC3630], multiple address family [RFC5838], traffic engineering [RFC3630], multiple address family [RFC5838],
graceful restart [RFC3623] [RFC5187], NSSA [RFC3101], and sham link graceful restart [RFC3623] [RFC5187], NSSA [RFC3101], and OSPF(v3) as
[RFC4577]. These non-core features are made optional in the OSPF a PE-CE Protocol [RFC4577], [RFC6565]. These non-core features are
data model. optional in the OSPF data model.
1.1. Requirements Language 1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
2. Design of Data Model 2. Design of Data Model
Although the basis of OSPF configuration elements like routers, Although the basis of OSPF configuration elements like routers,
areas, and interfaces remains the same, the detailed configuration areas, and interfaces remains the same, the detailed configuration
model varies among router vendors. Differences are observed in terms model varies among router vendors. Differences are observed in terms
of how the protocol engine is tied to routing domain, how multiple of how the protocol engine is tied to the routing domain, how
protocol engines are be instantiated, and configuration inheritance, multiple protocol engines are be instantiated, and configuration
among others. inheritance, among others.
The goal of this document is to define a data model that provides a The goal of this document is to define a data model that provides a
common user interface to the OSPFv2 and OSPFv3 protocol. There is common user interface to the OSPFv2 and OSPFv3 protocols. There is
very little information that is designated as "mandatory", providing very little information that is designated as "mandatory", providing
freedom for vendors to adapt this data model to their respective freedom for vendors to adapt this data model to their respective
product implementations. product implementations.
2.1. Overview 2.1. Overview
The OSPF YANG module defined in this document has all the common The OSPF YANG module defined in this document has all the common
building blocks for the OSPF protocol. building blocks for the OSPF protocol.
The OSPF YANG module augments the routing/routing-instance/routing- The OSPF YANG module augments the routing/routing-instance/routing-
skipping to change at page 4, line 44 skipping to change at page 4, line 44
| +--rw interfaces | +--rw interfaces
| | +--rw interface* [interface] | | +--rw interface* [interface]
| | . | | .
| | . | | .
| . | .
| . | .
+--rw topologies +--rw topologies
+--rw topology* [name] +--rw topology* [name]
The ospf module is intended to match to the vendor specific OSPF The ospf module is intended to match to the vendor specific OSPF
configuration construct that is identified by a local identifier configuration construct that is identified by the local identifier
'name'. The field 'version' allows support for OSPFv2 and OSPFv3. 'name'. The field 'version' allows support for OSPFv2 and OSPFv3.
The ospf container includes one or more OSPF protocol engines, each The ospf container includes one or more OSPF protocol engines, each
enclosed in a separate instance entity. Each instance includes enclosed in a separate instance entity. Each instance includes
information for the routing domain based on the [routing-instance af] information for the routing domain based on the [routing-instance af]
specification. There is no default routing domain assumed by the specification. There is no default routing domain assumed by the
data model. For example, to enable OSPF on a vendor's default IPv4 data model. For example, to enable OSPF on a vendor's default IPv4
routing domain, an explicit instance entity with a specification like routing domain, an explicit instance entity with a specification like
["default" "ipv4-unicast"] is required. The instance also contains ["default" "ipv4-unicast"] is required. The instance also contains
skipping to change at page 5, line 43 skipping to change at page 5, line 43
This data model supports configuration inheritance at different This data model supports configuration inheritance at different
levels including instance-level, area-level, and interface-level levels including instance-level, area-level, and interface-level
inheritance. inheritance.
The all-instances-inherit, all-areas-inherit, and all-interfaces- The all-instances-inherit, all-areas-inherit, and all-interfaces-
inherit containers are defined to provide a consistent way to inherit containers are defined to provide a consistent way to
configure inheritable configuration parameters. For example, configure inheritable configuration parameters. For example,
parameters defined in the all-instances-inherit container apply to parameters defined in the all-instances-inherit container apply to
all OSPF instances. However, a particular instance configuration can all OSPF instances. However, a particular instance configuration can
override this inheritance. include leaves that override this inheritance.
Inheritance is defined as an optional feature, and vendors are Inheritance is defined as an optional feature, and vendors are
permitted to augment the inheritance containers with their own vendor permitted to augment the inheritance containers with their own vendor
specific parameters. specific parameters.
2.5. OSPF Router Configuration 2.5. OSPF Router Configuration
The ospf container is the top level container in this data model. It The ospf container is the top level container in this data model. It
contains shared information among the OSPF instances configured contains shared information among the OSPF instances configured
within the container. within the container.
skipping to change at page 6, line 29 skipping to change at page 6, line 29
. .
2.6. OSPF Instance Configuration 2.6. OSPF Instance Configuration
The instance container represents an OSPF protocol engine and The instance container represents an OSPF protocol engine and
contains the router level configuration. The routing domain for each contains the router level configuration. The routing domain for each
instance is dictated through the specification of [routing-instance instance is dictated through the specification of [routing-instance
af]. af].
The all-areas-inherit container contains area configuration that may The all-areas-inherit container contains area configuration that may
be inherited by configured OSPF areas. be inherited by configured OSPF areas in the OSPF instance.
module: ospf module: ospf
+--rw ospf +--rw ospf
. .
. .
+--rw instance* [af] +--rw instance* [af]
+--rw af identityref +--rw af identityref
+--rw all-areas-inherit {area-inheritance}? +--rw all-areas-inherit {area-inheritance}?
| +--rw area | +--rw area
| +--rw interface | +--rw interface
skipping to change at page 7, line 45 skipping to change at page 7, line 45
2.7. OSPF Area Configuration 2.7. OSPF Area Configuration
The area container contains OSPF area configuration and the list of The area container contains OSPF area configuration and the list of
interface containers representing all the OSPF interfaces in the interface containers representing all the OSPF interfaces in the
area. area.
The all-interfaces-inherit contains interface configuration that may The all-interfaces-inherit contains interface configuration that may
be inherited by all OSPF area interfaces. be inherited by all OSPF area interfaces.
module: ospf module: ospf
+--rw ospf +--rw ospf
. .
. .
+--rw instance* [routing-instance af] +--rw instance* [routing-instance af]
. .
. .
+--rw areas +--rw areas
| +--rw area* [area-id] | +--rw area* [area-id]
| +--rw area-id area-id-type | +--rw area-id area-id-type
| +--rw all-interfaces-inherit {interface-inheritance}? | +--rw all-interfaces-inherit {interface-inheritance}?
| | +--rw interface | | +--rw interface
| +--rw area-type? identityref | +--rw area-type? identityref
| +--rw summary? boolean | +--rw summary? boolean
| +--rw default-cost? uint32 | +--rw default-cost? uint32
| +--rw ranges | +--rw ranges
| | +--rw range* [prefix] | | +--rw range* [prefix]
| | +--rw prefix inet:ip-prefix | | +--rw prefix inet:ip-prefix
| | +--rw advertise? boolean | | +--rw advertise? boolean
| | +--rw cost? uint24 | | +--rw cost? uint24
| +--rw virtual-links | +--rw virtual-links
| | +--rw virtual-link* [router-id] | | +--rw virtual-link* [router-id]
| | +--rw transit-area-id -> ../../../area-id | | +--rw transit-area-id -> ../../../area-id
| | +--rw router-id yang:dotted-quad | | +--rw router-id yang:dotted-quad
| | +--rw hello-interval? uint16 | | +--rw hello-interval? uint16
| | +--rw dead-interval? uint16 | | +--rw dead-interval? uint32
| | +--rw retransmit-interval? uint16 | | +--rw retransmit-interval? uint16
| | +--rw transmit-delay? uint16 | | +--rw transmit-delay? uint16
| | +--rw mtu-ignore? boolean {mtu-ignore}? | | +--rw mtu-ignore? boolean {mtu-ignore}?
| | +--rw lls? boolean {lls}? | | +--rw lls? boolean {lls}?
| | +--rw prefix-suppression? boolean {prefix-suppression}? | | +--rw prefix-suppression? boolean {prefix-suppression}?
| | +--rw ttl-security {ttl-security}? | | +--rw ttl-security {ttl-security}?
| | | +--rw enable? boolean | | | +--rw enable? boolean
| | | +--rw hops? uint8 | | | +--rw hops? uint8
| | +--rw enable? boolean {admin-control}? | | +--rw enable? boolean {admin-control}?
| | +--rw authentication | | +--rw authentication
| | +--rw (auth-type-selection)? | | +--rw (auth-type-selection)?
| | +--:(auth-ipsec) {ospfv3-authentication-ipsec}? | | +--:(auth-ipsec) {ospfv3-authentication-ipsec}?
| | | +--rw sa? string | | | +--rw sa? string
| | +--:(auth-trailer-key-chain) | | +--:(auth-trailer-key-chain)
| | | +--rw key-chain? key-chain:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(auth-trailer-key) | | +--:(auth-trailer-key)
| | +--rw key? string | | +--rw key? string
| | +--rw crypto-algorithm | | +--rw crypto-algorithm
| | +--rw (algorithm)? | | +--rw (algorithm)?
| | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
| | | +--rw hmac-sha1-12? empty | | | +--rw hmac-sha1-12? empty
| | +--:(md5) | | +--:(md5)
| | | +--rw md5? empty | | | +--rw md5? empty
| | +--:(sha-1) | | +--:(sha-1)
| | | +--rw sha-1? empty | | | +--rw sha-1? empty
| | +--:(hmac-sha-1) | | +--:(hmac-sha-1)
| | | +--rw hmac-sha-1? empty | | | +--rw hmac-sha-1? empty
| | +--:(hmac-sha-256) | | +--:(hmac-sha-256)
| | | +--rw hmac-sha-256? empty | | | +--rw hmac-sha-256? empty
| | +--:(hmac-sha-384) | | +--:(hmac-sha-384)
| | | +--rw hmac-sha-384? empty | | | +--rw hmac-sha-384? empty
| | +--:(hmac-sha-512) | | +--:(hmac-sha-512)
| | | +--rw hmac-sha-512? empty | | | +--rw hmac-sha-512? empty
| | +--:(clear-text) {clear-text}? | | +--:(clear-text) {clear-text}?
| | +--rw clear-text? empty | | +--rw clear-text? empty
| | +--:(replay-protection-only) {replay-protection-only}? | | +--:(replay-protection-only)
| | +--rw replay-protection-only? empty | | {replay-protection-only}?
| +--rw sham-link | | +--rw replay-protection-only? empty
| | +--rw sham-link* [local-id remote-id] | +--rw sham-link
| | +--rw local-id inet:ip-address | | +--rw sham-link* [local-id remote-id]
| | +--rw remote-id inet:ip-address | | +--rw local-id inet:ip-address
| | +--rw cost? uint16 | | +--rw remote-id inet:ip-address
| | +--rw hello-interval? uint16 | | +--rw cost? uint16
| | +--rw dead-interval? uint16 | | +--rw hello-interval? uint16
| | +--rw retransmit-interval? uint16 | | +--rw dead-interval? uint16
| | +--rw transmit-delay? uint16 | | +--rw retransmit-interval? uint16
| | +--rw mtu-ignore? boolean {mtu-ignore}? | | +--rw transmit-delay? uint16
| | +--rw lls? boolean {lls}? | | +--rw mtu-ignore? boolean {mtu-ignore}?
| | +--rw prefix-suppression? boolean {prefix-suppression}? | | +--rw lls? boolean {lls}?
| | +--rw bfd? boolean {bfd}? | | +--rw prefix-suppression? boolean {prefix-suppression}?
| | +--rw ttl-security {ttl-security}? | | +--rw bfd? boolean {bfd}?
| | | +--rw enable? boolean | | +--rw ttl-security {ttl-security}?
| | | +--rw hops? uint8 | | | +--rw enable? boolean
| | +--rw enable? boolean {admin-control}? | | | +--rw hops? uint8
| | +--rw authentication | | +--rw enable? boolean {admin-control}?
| | +--rw (auth-type-selection)? | | +--rw authentication
| | +--:(auth-ipsec) {ospfv3-authentication-ipsec}? | | +--rw (auth-type-selection)?
| | | +--rw sa? string | | +--:(auth-ipsec) {ospfv3-authentication-ipsec}?
| | +--:(auth-trailer-key-chain) | | | +--rw sa? string
| | | +--rw key-chain? key-chain:key-chain-ref | | +--:(auth-trailer-key-chain)
| | +--:(auth-trailer-key) | | | +--rw key-chain? key-chain:key-chain-ref
| | +--rw key? string | | +--:(auth-trailer-key)
| | +--rw crypto-algorithm | | +--rw key? string
| | +--rw (algorithm)? | | +--rw crypto-algorithm
| | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? | | +--rw (algorithm)?
| | | +--rw hmac-sha1-12? empty | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
| | +--:(md5) | | | +--rw hmac-sha1-12? empty
| | | +--rw md5? empty | | +--:(md5)
| | +--:(sha-1) | | | +--rw md5? empty
| | | +--rw sha-1? empty | | +--:(sha-1)
| | +--:(hmac-sha-1) | | | +--rw sha-1? empty
| | | +--rw hmac-sha-1? empty | | +--:(hmac-sha-1)
| | +--:(hmac-sha-256) | | | +--rw hmac-sha-1? empty
| | | +--rw hmac-sha-256? empty | | +--:(hmac-sha-256)
| | +--:(hmac-sha-384) | | | +--rw hmac-sha-256? empty
| | | +--rw hmac-sha-384? empty | | +--:(hmac-sha-384)
| | +--:(hmac-sha-512) | | | +--rw hmac-sha-384? empty
| | | +--rw hmac-sha-512? empty | | +--:(hmac-sha-512)
| | +--:(clear-text) {clear-text}? | | | +--rw hmac-sha-512? empty
| | +--rw clear-text? empty | | +--:(clear-text) {clear-text}?
| | +--:(replay-protection-only) {replay-protection-only}? | | +--rw clear-text? empty
| | +--rw replay-protection-only? empty | | +--:(replay-protection-only)
| | {replay-protection-only}?
| | +--rw replay-protection-only? empty
2.8. OSPF Interface Configuration 2.8. OSPF Interface Configuration
The interface container contains OSPF interface configuration. The interface container contains OSPF interface configuration.
module: ospf module: ospf
+--rw ospf +--rw ospf
. .
. .
+--rw instance* [routing-instance af] +--rw instance* [routing-instance af]
. .
. .
+--rw areas +--rw areas
| +--rw area* [area-id] | +--rw area* [area-id]
. .
. .
| +--rw interfaces | +--rw interfaces
| +--rw interface* [interface] | +--rw interface* [interface]
| +--rw name if:interface-ref | +--rw name if:interface-ref
| +--rw network-type? enumeration | +--rw network-type? enumeration
| +--rw passive? boolean | +--rw passive? boolean
| +--rw demand-circuit? boolean {demand-circuit}? | +--rw demand-circuit? boolean {demand-circuit}?
| +--rw multi-areas | +--rw multi-areas
| | +--rw multi-area* [multi-area-id] {multi-area-adj}? | | +--rw multi-area* [multi-area-id] {multi-area-adj}?
| | +--rw multi-area-id area-id-type | | +--rw multi-area-id area-id-type
| | +--rw cost? uint16 | | +--rw cost? uint16
| +--rw static-neighbors | +--rw static-neighbors
| | +--rw neighbor* [address] | | +--rw neighbor* [address]
| | +--rw address inet:ip-address | | +--rw address inet:ip-address
| | +--rw cost? uint16 | | +--rw cost? uint16
| | +--rw poll-interval? uint16 | | +--rw poll-interval? uint16
| | +--rw priority? uint8 | | +--rw priority? uint8
| +--rw node-flag? boolean {node-flag}? | +--rw node-flag? boolean {node-flag}?
| +--rw fast-reroute {fast-reroute}? | +--rw fast-reroute {fast-reroute}?
| | +--rw lfa {lfa}? | | +--rw lfa {lfa}?
| | +--rw candidate-disabled? boolean | | +--rw candidate-disable? boolean
| | +--rw enabled? boolean | | +--rw enable? boolean
| | +--rw remote-lfa {remote-lfa}? | | +--rw remote-lfa {remote-lfa}?
| | +--rw enabled? boolean | | +--rw enable? boolean
| +--rw hello-interval? uint16 | +--rw hello-interval? uint16
| +--rw dead-interval? uint16 | +--rw dead-interval? uint16
| +--rw retransmit-interval? uint16 | +--rw retransmit-interval? uint16
| +--rw transmit-delay? uint16 | +--rw transmit-delay? uint16
| +--rw mtu-ignore? boolean {mtu-ignore}? | +--rw mtu-ignore? boolean {mtu-ignore}?
| +--rw lls? boolean {lls}? | +--rw lls? boolean {lls}?
| +--rw prefix-suppression? boolean {prefix-suppression}? | +--rw prefix-suppression? boolean {prefix-suppression}?
| +--rw ttl-security {ttl-security}? | +--rw ttl-security {ttl-security}?
| | +--rw enable? boolean | | +--rw enable? boolean
| | +--rw hops? uint8 | | +--rw hops? uint8
| +--rw enable? boolean {admin-control}? | +--rw enable? boolean {admin-control}?
| +--rw authentication | +--rw authentication
| | +--rw (auth-type-selection)? | | +--rw (auth-type-selection)?
| | +--:(auth-ipsec) {ospfv3-authentication-ipsec}? | | +--:(auth-ipsec) {ospfv3-authentication-ipsec}?
| | | +--rw sa? string | | | +--rw sa? string
| | +--:(auth-trailer-key-chain) | | +--:(auth-trailer-key-chain)
| | | +--rw key-chain? key-chain:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(auth-trailer-key) | | +--:(auth-trailer-key)
| | +--rw key? string | | +--rw key? string
| | +--rw crypto-algorithm | | +--rw crypto-algorithm
| | +--rw (algorithm)? | | +--rw (algorithm)?
| | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
| | | +--rw hmac-sha1-12? empty | | | +--rw hmac-sha1-12? empty
| | +--:(md5) | | +--:(md5)
| | | +--rw md5? empty | | | +--rw md5? empty
| | +--:(sha-1) | | +--:(sha-1)
| | | +--rw sha-1? empty | | | +--rw sha-1? empty
| | +--:(hmac-sha-1) | | +--:(hmac-sha-1)
| | | +--rw hmac-sha-1? empty | | | +--rw hmac-sha-1? empty
| | +--:(hmac-sha-256) | | +--:(hmac-sha-256)
| | | +--rw hmac-sha-256? empty | | | +--rw hmac-sha-256? empty
| | +--:(hmac-sha-384) | | +--:(hmac-sha-384)
| | | +--rw hmac-sha-384? empty | | | +--rw hmac-sha-384? empty
| | +--:(hmac-sha-512) | | +--:(hmac-sha-512)
| | | +--rw hmac-sha-512? empty | | | +--rw hmac-sha-512? empty
| | +--:(clear-text) {clear-text}? | | +--:(clear-text) {clear-text}?
| | +--rw clear-text? empty | | +--rw clear-text? empty
| | +--:(replay-protection-only) {replay-protection-only}? | | +--:(replay-protection-only)
| | +--rw replay-protection-only? empty | | {replay-protection-only}?
| +--rw cost? uint16 | | +--rw replay-protection-only? empty
| +--rw topologies | +--rw cost? uint16
| | +--rw topology* [name] | +--rw topologies
| | +--rw name leafref | | +--rw topology* [name]
| | +--rw cost? uint32 | | +--rw name leafref
| +--rw instance-id? uint8 | | +--rw cost? uint32
| +--rw instance-id? uint8
2.9. OSPF notification 2.9. OSPF notification
This YANG model defines a list of notifications that inform YANG This YANG model defines a list of notifications that inform YANG
clients of important events detected during protocol operation. The clients of important events detected during protocol operation. The
defined notifications cover the common set of traps from the OSPFv2 defined notifications cover the common set of traps from the OSPFv2
MIB [RFC4750] and OSPFv3 MIB [RFC5643]. MIB [RFC4750] and OSPFv3 MIB [RFC5643].
module: ospf module: ospf
notifications: notifications:
skipping to change at page 14, line 45 skipping to change at page 15, line 5
| +--ro status? nssa-translator-state-type | +--ro status? nssa-translator-state-type
+---n restart-status-change +---n restart-status-change
+--ro routing-instance? string +--ro routing-instance? string
+--ro routing-protocol-type? -> ... +--ro routing-protocol-type? -> ...
+--ro routing-protocol-name? -> ... +--ro routing-protocol-name? -> ...
+--ro af? -> ... +--ro af? -> ...
+--ro status? restart-status-type +--ro status? restart-status-type
+--ro restart-interval? uint16 +--ro restart-interval? uint16
+--ro exit-reason? restart-exit-reason-type +--ro exit-reason? restart-exit-reason-type
3. OSPF Segment Routing 3. OSPF BFD Yang Module
In addition to the OSPF base YANG model, this document also defines a
model for the OSPF segment routing feature.
The OSPF SR YANG module requires support for the base segment routing
module [I-D.ietf-spring-sr-yang], which defines the global segment
routing configuration independent of any specific routing protocol
configuration.
module: ietf-ospf-sr
augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance:
+--rw segment-routing
| +--rw enabled? boolean
| +--rw bindings
| +--rw advertise
| | +--rw policies* string
| +--rw receive? boolean
+--rw protocol-srgb {sr:protocol-srgb}?
+--rw srgb* [lower-bound upper-bound]
+--rw lower-bound uint32
+--rw upper-bound uint32
augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:areas/ospf:area/ospf:interfaces/ospf:interface:
+--rw segment-routing
+--rw adjacency-sid
+--rw advertise-adj-group-sid* [group-id]
| +--rw group-id uint32
+--rw advertise-protection? enumeration
augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:areas/ospf:area/ospf:interfaces/ospf:interface
/ospf:fast-reroute:
+--rw ti-lfa {ti-lfa}?
+--rw enable? boolean
augment /rt:routing-state/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance:
+--ro segment-routing
| +--ro enabled? boolean
| +--ro bindings
| +--ro advertise
| | +--ro policies* string
| +--ro receive? boolean
+--ro protocol-srgb {sr:protocol-srgb}?
+--ro srgb* [lower-bound upper-bound]
+--ro lower-bound uint32
+--ro upper-bound uint32
augment /rt:routing-state/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:areas/ospf:area/ospf:interfaces/ospf:interface:
+--ro segment-routing
+--ro adjacency-sid
+--ro advertise-adj-group-sid* [group-id]
| +--ro group-id uint32
+--ro advertise-protection? enumeration
augment /rt:routing-state/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:areas/ospf:area/ospf:interfaces/ospf:interface
/ospf:database/ospf:link-scope-lsa-type
/ospf:link-scope-lsas/ospf:link-scope-lsa/ospf:version
/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque
/ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv:
+--ro perfix-sid-sub-tlvs
| +--ro prefix-sid-sub-tlv*
| +--ro flags? bits
| +--ro mt-id? uint8
| +--ro algorithm? uint8
| +--ro sid? uint32
+--ro sid-binding-sub-tlvs
+--ro sid-binding-sub-tlv*
+--ro flags? bits
+--ro mt-id? uint8
+--ro weight? uint8
+--ro sid-sub-tlv
| +--ro sid? uint32
+--ro ero-metric-sub-tlv
| +--ro metric? uint32
+--ro ipv4-ero-sub-tlv
| +--ro flags? bits
| +--ro ipv4-address? inet:ipv4-address
+--ro unnumbered-ero-sub-tlv
| +--ro flags? bits
| +--ro router-id? yang:dotted-quad
| +--ro interface-id? uint32
+--ro ipv4-backup-ero-sub-tlv
| +--ro flags? bits
| +--ro ipv4-address? inet:ipv4-address
+--ro unnumbered-backup-ero-sub-tlv
+--ro flags? bits
+--ro router-id? yang:dotted-quad
+--ro interface-id? uint32
augment /rt:routing-state/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:areas/ospf:area/ospf:database
/ospf:area-scope-lsa-type/ospf:area-scope-lsas
/ospf:area-scope-lsa/ospf:version/ospf:ospfv2
/ospf:ospfv2/ospf:body/ospf:opaque
/ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv:
+--ro perfix-sid-sub-tlvs
| +--ro prefix-sid-sub-tlv*
| +--ro flags? bits
| +--ro mt-id? uint8
| +--ro algorithm? uint8
| +--ro sid? uint32
+--ro sid-binding-sub-tlvs
+--ro sid-binding-sub-tlv*
+--ro flags? bits
+--ro mt-id? uint8
+--ro weight? uint8
+--ro sid-sub-tlv
| +--ro sid? uint32
+--ro ero-metric-sub-tlv
| +--ro metric? uint32
+--ro ipv4-ero-sub-tlv
| +--ro flags? bits
| +--ro ipv4-address? inet:ipv4-address
+--ro unnumbered-ero-sub-tlv
| +--ro flags? bits
| +--ro router-id? yang:dotted-quad
| +--ro interface-id? uint32
+--ro ipv4-backup-ero-sub-tlv
| +--ro flags? bits
| +--ro ipv4-address? inet:ipv4-address
+--ro unnumbered-backup-ero-sub-tlv
+--ro flags? bits
+--ro router-id? yang:dotted-quad
+--ro interface-id? uint32
augment /rt:routing-state/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas
/ospf:as-scope-lsa/ospf:version/ospf:ospfv2
ospf:ospfv2/ospf:body/ospf:opaque
/ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv:
+--ro perfix-sid-sub-tlvs
| +--ro prefix-sid-sub-tlv*
| +--ro flags? bits
| +--ro mt-id? uint8
| +--ro algorithm? uint8
| +--ro sid? uint32
+--ro sid-binding-sub-tlvs
+--ro sid-binding-sub-tlv*
+--ro flags? bits
+--ro mt-id? uint8
+--ro weight? uint8
+--ro sid-sub-tlv
| +--ro sid? uint32
+--ro ero-metric-sub-tlv
| +--ro metric? uint32
+--ro ipv4-ero-sub-tlv
| +--ro flags? bits
| +--ro ipv4-address? inet:ipv4-address
+--ro unnumbered-ero-sub-tlv
| +--ro flags? bits
| +--ro router-id? yang:dotted-quad
| +--ro interface-id? uint32
+--ro ipv4-backup-ero-sub-tlv
| +--ro flags? bits
| +--ro ipv4-address? inet:ipv4-address
+--ro unnumbered-backup-ero-sub-tlv
+--ro flags? bits
+--ro router-id? yang:dotted-quad
+--ro interface-id? uint32
augment /rt:routing-state/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:areas/ospf:area/ospf:database
/ospf:area-scope-lsa-type/ospf:area-scope-lsas
/ospf:area-scope-lsa/ospf:version/ospf:ospfv2
/ospf:ospfv2/ospf:body/ospf:opaque
/ospf:extended-link-tlvs/ospf:extended-link-tlv:
+--ro adj-sid-sub-tlvs
| +--ro adj-sid-sub-tlv*
| +--ro flags? bits
| +--ro mt-id? uint8
| +--ro weight? uint8
| +--ro sid? uint32
+--ro lan-adj-sid-sub-tlvs
+--ro lan-adj-sid-sub-tlv*
+--ro flags? bits
+--ro mt-id? uint8
+--ro weight? uint8
+--ro neighbor-router-id? yang:dotted-quad
+--ro sid? uint32
augment /rt:routing-state/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:areas/ospf:area/ospf:interfaces/ospf:interface
/ospf:database/ospf:link-scope-lsa-type
/ospf:link-scope-lsas/ospf:link-scope-lsa
/ospf:version/ospf:ospfv2/ospf:ospfv2
/ospf:body/ospf:opaque:
+--ro extended-prefix-range-tlvs
| +--ro extended-prefix-range-tlv*
| +--ro range-size? uint16
| +--ro flags? bits
| +--ro prefix? inet:ip-prefix
| +--ro perfix-sid-sub-tlvs
| | +--ro prefix-sid-sub-tlv*
| | +--ro flags? bits
| | +--ro mt-id? uint8
| | +--ro algorithm? uint8
| | +--ro sid? uint32
| +--ro sid-binding-sub-tlvs
| | +--ro sid-binding-sub-tlv*
| | +--ro flags? bits
| | +--ro mt-id? uint8
| | +--ro weight? uint8
| | +--ro sid-sub-tlv
| | | +--ro sid? uint32
| | +--ro ero-metric-sub-tlv
| | | +--ro metric? uint32
| | +--ro ipv4-ero-sub-tlv
| | | +--ro flags? bits
| | | +--ro ipv4-address? inet:ipv4-address
| | +--ro unnumbered-ero-sub-tlv
| | | +--ro flags? bits
| | | +--ro router-id? yang:dotted-quad
| | | +--ro interface-id? uint32
| | +--ro ipv4-backup-ero-sub-tlv
| | | +--ro flags? bits
| | | +--ro ipv4-address? inet:ipv4-address
| | +--ro unnumbered-backup-ero-sub-tlv
| | +--ro flags? bits
| | +--ro router-id? yang:dotted-quad
| | +--ro interface-id? uint32
| +--ro unknown-tlvs
| +--ro unknown-tlv*
| +--ro type? uint16
| +--ro length? uint16
| +--ro value? yang:hex-string
+--ro sr-algorithm-tlv
| +--ro sr-algorithm* uint8
+--ro sid-range-tlvs
+--ro sid-range-tlv*
+--ro range-size? ospf:uint24
+--ro sid-sub-tlv
+--ro sid? uint32
augment /rt:routing-state/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:areas/ospf:area/ospf:database
/ospf:area-scope-lsa-type/ospf:area-scope-lsas
/ospf:area-scope-lsa/ospf:version/ospf:ospfv2
/ospf:ospfv2/ospf:body/ospf:opaque:
+--ro extended-prefix-range-tlvs
| +--ro extended-prefix-range-tlv*
| +--ro range-size? uint16
| +--ro flags? bits
| +--ro prefix? inet:ip-prefix
| +--ro perfix-sid-sub-tlvs
| | +--ro prefix-sid-sub-tlv*
| | +--ro flags? bits
| | +--ro mt-id? uint8
| | +--ro algorithm? uint8
| | +--ro sid? uint32
| +--ro sid-binding-sub-tlvs
| | +--ro sid-binding-sub-tlv*
| | +--ro flags? bits
| | +--ro mt-id? uint8
| | +--ro weight? uint8
| | +--ro sid-sub-tlv
| | | +--ro sid? uint32
| | +--ro ero-metric-sub-tlv
| | | +--ro metric? uint32
| | +--ro ipv4-ero-sub-tlv
| | | +--ro flags? bits
| | | +--ro ipv4-address? inet:ipv4-address
| | +--ro unnumbered-ero-sub-tlv
| | | +--ro flags? bits
| | | +--ro router-id? yang:dotted-quad
| | | +--ro interface-id? uint32
| | +--ro ipv4-backup-ero-sub-tlv
| | | +--ro flags? bits
| | | +--ro ipv4-address? inet:ipv4-address
| | +--ro unnumbered-backup-ero-sub-tlv
| | +--ro flags? bits
| | +--ro router-id? yang:dotted-quad
| | +--ro interface-id? uint32
| +--ro unknown-tlvs
| +--ro unknown-tlv*
| +--ro type? uint16
| +--ro length? uint16
| +--ro value? yang:hex-string
+--ro sr-algorithm-tlv
| +--ro sr-algorithm* uint8
+--ro sid-range-tlvs
+--ro sid-range-tlv*
+--ro range-size? ospf:uint24
+--ro sid-sub-tlv
+--ro sid? uint32
augment /rt:routing-state/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:database/ospf:as-scope-lsa-type
/ospf:as-scope-lsas/ospf:as-scope-lsa/ospf:version
/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque:
+--ro extended-prefix-range-tlvs
| +--ro extended-prefix-range-tlv*
| +--ro range-size? uint16
| +--ro flags? bits
| +--ro prefix? inet:ip-prefix
| +--ro perfix-sid-sub-tlvs
| | +--ro prefix-sid-sub-tlv*
| | +--ro flags? bits
| | +--ro mt-id? uint8
| | +--ro algorithm? uint8
| | +--ro sid? uint32
| +--ro sid-binding-sub-tlvs
| | +--ro sid-binding-sub-tlv*
| | +--ro flags? bits
| | +--ro mt-id? uint8
| | +--ro weight? uint8
| | +--ro sid-sub-tlv
| | | +--ro sid? uint32
| | +--ro ero-metric-sub-tlv
| | | +--ro metric? uint32
| | +--ro ipv4-ero-sub-tlv
| | | +--ro flags? bits
| | | +--ro ipv4-address? inet:ipv4-address
| | +--ro unnumbered-ero-sub-tlv
| | | +--ro flags? bits
| | | +--ro router-id? yang:dotted-quad
| | | +--ro interface-id? uint32
| | +--ro ipv4-backup-ero-sub-tlv
| | | +--ro flags? bits
| | | +--ro ipv4-address? inet:ipv4-address
| | +--ro unnumbered-backup-ero-sub-tlv
| | +--ro flags? bits
| | +--ro router-id? yang:dotted-quad
| | +--ro interface-id? uint32
| +--ro unknown-tlvs
| +--ro unknown-tlv*
| +--ro type? uint16
| +--ro length? uint16
| +--ro value? yang:hex-string
+--ro sr-algorithm-tlv
| +--ro sr-algorithm* uint8
+--ro sid-range-tlvs
+--ro sid-range-tlv*
+--ro range-size? ospf:uint24
+--ro sid-sub-tlv
+--ro sid? uint32
4. OSPF BFD Yang Module
Additionally this document defines a module that can be used to Additionally, this document defines a module that can be used to
configure and monitor the OSPF BFD feature. configure and monitor the OSPF BFD feature.
Bidirectional Forwarding Detection (BFD) [RFC5880] is a network Bidirectional Forwarding Detection (BFD) [RFC5880] is a network
protocol that is used for liveness detection of arbitrary paths protocol that is used for liveness detection of arbitrary paths
between systems. A YANG data model is defined in [I-D.ietf-bfd-yang] between systems. A YANG data model is defined in [I-D.ietf-bfd-yang]
that supports BFD configuration and management. that supports BFD configuration and management.
As a client of BFD, the OSPF protocol uses the services provided by As a client of BFD, the OSPF protocol uses the services provided by
BFD. The OSPF BFD YANG augments the base OSPF module and is defined BFD. The OSPF BFD YANG augments the base OSPF module and is defined
as a separate module. So any implementation that does not support as a separate module. Hence, an implementation that does not support
BFD can still use the OSPF base model without having to import the BFD can still use the OSPF base model without having to import the
BFD module [I-D.ietf-bfd-yang]. BFD module [I-D.ietf-bfd-yang].
module: ietf-ospf-bfd module: ietf-ospf-bfd
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance /rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:areas/ospf:area/ospf:interfaces/ospf:interface: /ospf:areas/ospf:area/ospf:interfaces/ospf:interface:
+--rw bfd +--rw bfd
+--rw enabled? boolean +--rw enable? boolean
augment /rt:routing-state/rt:control-plane-protocols augment /rt:routing-state/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:instance /rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:areas/ospf:area/ospf:interfaces/ospf:interface: /ospf:areas/ospf:area/ospf:interfaces/ospf:interface:
+--ro bfd +--ro bfd
+--ro enabled? boolean +--ro enable? boolean
5. OSPF Yang Module 4. OSPF Yang Module
<CODE BEGINS> file "ietf-ospf@2016-07-07.yang" <CODE BEGINS> file "ietf-ospf@2016-10-31.yang"
module ietf-ospf { module ietf-ospf {
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; namespace "urn:ietf:params:xml:ns:yang:ietf-ospf";
prefix ospf; prefix ospf;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-yang-types { import ietf-yang-types {
skipping to change at page 23, line 29 skipping to change at page 16, line 29
"WG Web: <http://tools.ietf.org/wg/ospf/> "WG Web: <http://tools.ietf.org/wg/ospf/>
WG List: <mailto:ospf@ietf.org> WG List: <mailto:ospf@ietf.org>
WG Chair: Acee Lindem WG Chair: Acee Lindem
<mailto:acee@cisco.com> <mailto:acee@cisco.com>
WG Chair: Abhay Roy WG Chair: Abhay Roy
<mailto:akr@cisco.com> <mailto:akr@cisco.com>
Editor: Derek Yeung Editor: Derek Yeung
<mailto:myeung@cisco.com> <mailto:derek@arrcus.com>
Author: Derek Yeung Author: Derek Yeung
<mailto:myeung@cisco.com> <mailto:derek@arrcus.com>
Author: Yingzhen Qu Author: Yingzhen Qu
<mailto:yiqu@cisco.com> <mailto:yiqu@cisco.com>
Author: Jeffrey Zhang Author: Jeffrey Zhang
<mailto:zzhang@juniper.net> <mailto:zzhang@juniper.net>
Author: Ing-Wher Chen Author: Ing-Wher Chen
<mailto:ing-wher.chen@ericsson.com> <mailto:ichen@kuatrotech.com>
Author: Dean Bogdanovic Author: Dean Bogdanovic
<mailto:ivandean@gmail.com> <mailto:ivandean@gmail.com>
Author: Kiran Agrahara Sreenivasa Author: Kiran Agrahara Sreenivasa
<mailto:kkoushik@cisco.com>"; <mailto:kkoushik@cisco.com>";
description description
"This YANG module defines the generic configuration and "This YANG module defines the generic configuration and
operational state for the OSPF protocol common to all operational state for the OSPF protocol common to all
vendor implementations. It is intended that the module vendor implementations. It is intended that the module
will be extended by vendors to define vendor-specific will be extended by vendors to define vendor-specific
skipping to change at page 24, line 15 skipping to change at page 17, line 15
IP (ip): Internet Protocol IP (ip): Internet Protocol
IPv4 (ipv4):Internet Protocol Version 4 IPv4 (ipv4):Internet Protocol Version 4
IPv6 (ipv6): Internet Protocol Version 6 IPv6 (ipv6): Internet Protocol Version 6
MTU (mtu) Maximum Transmission Unit MTU (mtu) Maximum Transmission Unit
"; ";
revision 2016-10-31 {
description
"* Update authors information.
* Rename candidate-disabled to candidiate-enable
and set the default value to TRUE.
* Rename node identifiers that end with
'enabled' to 'enable'.
* Set the default value of
ospf/instance/areas/area/interfaces/interface/
fast-reroute/lfa/enable (previously named 'enabled')
to FALSE.
* Set the default value of
ospf/instance/areas/area/interfaces/interface/
fast-reroute/remote-lfa/enable (previously named 'enabled')
to FALSE.
* Rename
ospf/instance/areas/area/interfaces/interface/
static-neighbors/neighbor/address to 'identifier'
with type inet:ip-address
* Add 'dead-timer' to
ospf-state/instance/areas/area/interfaces/interface/
neighbors/neighbor.
* Remove 'mtu-ignore' and 'prefix-suppression' from
virtual-link configuration.
* Adjust range specifications from 'transmit-delay',
'dead-interval', and 'retransmit-interval' in
ospf/instance/areas/area/interfaces/interface.
* Change the type of
ospf/instance/areas/area/interface/interface/dead-interval
to uint32 to match RFC2328 Appendix A.3.2.
* Change hello-timer and wait-timer unit to seconds.
* Update hello-timer, dead-timer and wait-timer descriptions.
* Add IEEE bandwidth type and update all TE bandwidth fields to use it.
* Add Nt-bit to OSPFv2 router LSA.
* Remove L-bit from OSPFv2 router LSA.
";
reference
"RFC XXXX: A YANG Data Model for OSPF.";
}
revision 2016-07-07 { revision 2016-07-07 {
description description
"* Add ospfv3 AF bit. "* Add ospfv3 AF bit.
* Add ospfv2 MT, L, O, DN bit. * Add ospfv2 MT, L, O, DN bit.
* Add interface priority config. * Add interface priority config.
* Change bdr-ip-address to type ip-address. * Change bdr-ip-address to type ip-address.
* Rename leaf interface to name. * Rename leaf interface to name.
* Rename rx-bad-packet to if-rx-bad-packet. * Rename rx-bad-packet to if-rx-bad-packet.
* Move virtual link placement to backbone area. * Move virtual link placement to backbone area.
* Remove cost configuration from virtual link. * Remove cost configuration from virtual link.
skipping to change at page 32, line 26 skipping to change at page 26, line 19
} }
typedef checksum16-type { typedef checksum16-type {
type string { type string {
pattern '(0x)?[0-9a-fA-F]{4}'; pattern '(0x)?[0-9a-fA-F]{4}';
} }
description description
"16-bit checksum in hex-string format 0xXXXX."; "16-bit checksum in hex-string format 0xXXXX.";
} }
typedef ieee-bandwidth {
type string {
pattern
'0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+ '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
+ '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}';
}
description
"Bandwidth in IEEE 754 floating point 32-bit binary format:
(-1)**(S) * 2**(Exponent-127) * (1 + Fraction),
where Exponent uses 8 bits, and Fraction uses 23 bits.
The units are bytes per second.
The encoding format is the external hexadecimal-significand
character sequences specified in IEEE 754 and C99,
restricted to be normalized, non-negative, and non-fraction:
0x1.hhhhhhp{+}d or 0X1.HHHHHHP{+}D
where 'h' and 'H' are hexadecimal digits, 'd' and 'D' are
integers in the range of [0..127].
When six hexadecimal digits are used for 'hhhhhh' or 'HHHHHH',
the least significant digit must be an even number.
'x' and 'X' indicate hexadecimal; 'p' and 'P' indicate power
of two.
Some examples are: 0x0p0, 0x1p10, and 0x1.abcde2p+20";
reference
"IEEE Std 754-2008: IEEE Standard for Floating-Point
Arithmetic.";
}
feature multi-topology { feature multi-topology {
description description
"Support Multiple-Topolgy Routing (MTR)."; "Support Multiple-Topolgy Routing (MTR).";
} }
feature multi-area-adj { feature multi-area-adj {
description description
"OSPF multi-area adjacency support as in RFC 5185."; "OSPF multi-area adjacency support as in RFC 5185.";
} }
feature explicit-router-id { feature explicit-router-id {
skipping to change at page 35, line 14 skipping to change at page 29, line 34
feature area-inheritance { feature area-inheritance {
description description
"Support area inheritance"; "Support area inheritance";
} }
feature interface-inheritance { feature interface-inheritance {
description description
"Support interface inheritance"; "Support interface inheritance";
} }
feature pe-ce-protocol {
description
"Support PE-CE protocol";
}
grouping tlv { grouping tlv {
description description
"TLV"; "TLV";
leaf type { leaf type {
type uint16; type uint16;
description "TLV type."; description "TLV type.";
} }
leaf length { leaf length {
type uint16; type uint16;
description "TLV length."; description "TLV length.";
skipping to change at page 36, line 45 skipping to change at page 31, line 22
bit E { bit E {
description description
"When set, the router is an AS Boundary Router "When set, the router is an AS Boundary Router
(ASBR)."; (ASBR).";
} }
bit B { bit B {
description description
"When set, the router is an Area Border "When set, the router is an Area Border
Router (ABR)."; Router (ABR).";
} }
bit Nt {
description
"When set, the router is an NSSA border router
that is unconditionally translating NSSA LSAs
into AS-external LSAs.";
}
} }
description "Flags."; description "Flags.";
} }
leaf num-of-links { leaf num-of-links {
type uint16; type uint16;
description "Number of links."; description "Number of links.";
} }
container links { container links {
description "All router Links."; description "All router Links.";
list link { list link {
skipping to change at page 40, line 47 skipping to change at page 35, line 30
type inet:ipv4-address; type inet:ipv4-address;
description description
"List of remote interface IPv4 addresses."; "List of remote interface IPv4 addresses.";
} }
} }
leaf te-metric { leaf te-metric {
type uint32; type uint32;
description "TE metric."; description "TE metric.";
} }
leaf max-bandwidth { leaf max-bandwidth {
type decimal64 { type ieee-bandwidth;
fraction-digits 2;
}
description "Maximum bandwidth."; description "Maximum bandwidth.";
} }
leaf max-reservable-bandwidth { leaf max-reservable-bandwidth {
type decimal64 { type ieee-bandwidth;
fraction-digits 2;
}
description "Maximum reservable bandwidth."; description "Maximum reservable bandwidth.";
} }
container unreserved-bandwidths { container unreserved-bandwidths {
description "All unreserved bandwidths."; description "All unreserved bandwidths.";
list unreserved-bandwidth { list unreserved-bandwidth {
leaf priority { leaf priority {
type uint8 { type uint8 {
range "0 .. 7"; range "0 .. 7";
} }
description "Priority from 0 to 7."; description "Priority from 0 to 7.";
} }
leaf unreserved-bandwidth { leaf unreserved-bandwidth {
type decimal64 { type ieee-bandwidth;
fraction-digits 2;
}
description "Unreserved bandwidth."; description "Unreserved bandwidth.";
} }
description description
"List of unreserved bandwidths for different "List of unreserved bandwidths for different
priorities."; priorities.";
} }
} }
leaf admin-group { leaf admin-group {
type uint32; type uint32;
description description
skipping to change at page 51, line 27 skipping to change at page 46, line 4
} }
bit MC { bit MC {
description description
"When set, the router supports MOSPF."; "When set, the router supports MOSPF.";
} }
bit E { bit E {
description description
"This bit describes the way AS-external LSAs "This bit describes the way AS-external LSAs
are flooded."; are flooded.";
} }
bit L {
description
"L-bit is set in Hello and DD packets to indicate that
the packet contains an LLS data block as in RFC 5613.";
}
bit O { bit O {
description description
"When set, the router is opaque-capable as in RFC 5250."; "When set, the router is opaque-capable as in RFC 5250.";
} }
bit DN { bit DN {
description description
"When a type 3, 5 or 7 LSA is sent from a PE to a CE, the DN "When a type 3, 5 or 7 LSA is sent from a PE to a CE, the DN
bit must be set. See RFC 4576."; bit must be set. See RFC 4576.";
} }
} }
skipping to change at page 57, line 23 skipping to change at page 51, line 43
} }
} }
grouping interface-fast-reroute-config { grouping interface-fast-reroute-config {
description description
"This group defines interface configuration of IP-FRR."; "This group defines interface configuration of IP-FRR.";
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
container lfa { container lfa {
if-feature lfa; if-feature lfa;
leaf candidate-disabled { leaf candidate-enable {
type boolean; type boolean;
default true;
description description
"Prevent the interface to be used as backup."; "Enable the interface to be used as backup.";
} }
leaf enabled { leaf enable {
type boolean; type boolean;
default false;
description description
"Activates LFA - Per-prefix LFA computation "Activates LFA - Per-prefix LFA computation
is assumed."; is assumed.";
} }
container remote-lfa { container remote-lfa {
if-feature remote-lfa; if-feature remote-lfa;
leaf enabled { leaf enable {
type boolean; type boolean;
default false;
description description
"Activates Remote LFA (R-LFA)."; "Activates Remote LFA (R-LFA).";
} }
description description
"Remote LFA configuration."; "Remote LFA configuration.";
} }
description description
"LFA configuration."; "LFA configuration.";
} }
description description
"IP Fast-reroute configuration."; "IP Fast-reroute configuration.";
} }
} }
grouping interface-cost-config {
grouping interface-physical-link-config {
description description
"Interface cost configuration that only applies to "Interface cost configuration that only applies to
physical interfaces and sham links."; physical interfaces and sham links.";
leaf cost { leaf cost {
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
description description
"Interface cost."; "Interface cost.";
} }
leaf mtu-ignore {
if-feature mtu-ignore;
type boolean;
description
"Enable/Disable bypassing the MTU mismatch check in
Database Description packets.";
}
leaf prefix-suppression {
if-feature prefix-suppression;
type boolean;
description
"Suppress advertisement of the prefixes associated
with the interface.";
}
} }
grouping interface-common-config { grouping interface-common-config {
description description
"Common configuration for all types of interfaces, "Common configuration for all types of interfaces,
including virtual links and sham links."; including virtual links and sham links.";
leaf hello-interval { leaf hello-interval {
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
units seconds; units seconds;
description description
"Interval between hello packets in seconds."; "Interval between hello packets in seconds.";
} }
leaf dead-interval { leaf dead-interval {
type uint16 { type uint32 {
range "1..65535"; range "1..2147483647";
} }
units seconds; units seconds;
must "../dead-interval > ../hello-interval" { must "../dead-interval > ../hello-interval" {
error-message "The dead interval must be " error-message "The dead interval must be "
+ "larger than the hello interval"; + "larger than the hello interval";
description description
"The value MUST be greater than 'hello-internval'."; "The value MUST be greater than 'hello-internval'.";
} }
description description
"Interval after which a neighbor is "Interval after which a neighbor is
declared down in seconds."; declared down in seconds.";
} }
leaf retransmit-interval { leaf retransmit-interval {
type uint16 { type uint16 {
range "1..65535"; range "1..3600";
} }
units seconds; units seconds;
description description
"Interval between retransmitting unacknowledged Link "Interval between retransmitting unacknowledged Link
State Advertisements (LSAs) in seconds."; State Advertisements (LSAs) in seconds.";
} }
leaf transmit-delay { leaf transmit-delay {
type uint16 { type uint16 {
range "1..65535"; range "1..3600";
} }
units seconds; units seconds;
description description
"Estimated time needed to transmit Link State Update "Estimated time needed to transmit Link State Update
packets on the interface in seconds."; packets on the interface in seconds.";
} }
leaf mtu-ignore {
if-feature mtu-ignore;
type boolean;
description
"Enable/Disable bypassing the MTU mismatch check in
Database Description packets.";
}
leaf lls { leaf lls {
if-feature lls; if-feature lls;
type boolean; type boolean;
description description
"Enable/Disable link-local signaling (LLS) support."; "Enable/Disable link-local signaling (LLS) support.";
} }
leaf prefix-suppression {
if-feature prefix-suppression;
type boolean;
description
"Suppress advertisement of the prefixes associated
with the interface.";
}
container ttl-security { container ttl-security {
if-feature ttl-security; if-feature ttl-security;
description "TTL security check."; description "TTL security check.";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable/Disable TTL security check."; "Enable/Disable TTL security check.";
} }
leaf hops { leaf hops {
type uint8 { type uint8 {
skipping to change at page 62, line 34 skipping to change at page 57, line 7
description description
"Interface cost for multi-area adjacency."; "Interface cost for multi-area adjacency.";
} }
} }
} }
container static-neighbors { container static-neighbors {
description "Statically configured neighbors."; description "Statically configured neighbors.";
list neighbor { list neighbor {
key "address"; key "identifier";
description description
"Specify a static OSPF neighbor."; "Specify a static OSPF neighbor.";
leaf address { leaf identifier {
type inet:ip-address; type inet:ip-address;
description "Neighbor IP address."; description "Neighbor IPv4 address or router ID.";
} }
leaf cost { leaf cost {
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
description "Neighbor cost."; description "Neighbor cost.";
} }
leaf poll-interval { leaf poll-interval {
type uint16 { type uint16 {
skipping to change at page 63, line 27 skipping to change at page 57, line 47
leaf node-flag { leaf node-flag {
if-feature node-flag; if-feature node-flag;
type boolean; type boolean;
default false; default false;
description description
"Set prefix as a node representative prefix."; "Set prefix as a node representative prefix.";
} }
uses interface-fast-reroute-config; uses interface-fast-reroute-config;
uses interface-common-config; uses interface-common-config;
uses interface-cost-config; uses interface-physical-link-config;
} // grouping interface-config } // grouping interface-config
grouping neighbor-operation { grouping neighbor-operation {
description description
"OSPF neighbor operation data."; "OSPF neighbor operation data.";
leaf address { leaf address {
type inet:ip-address; type inet:ip-address;
description description
"Neighbor address."; "Neighbor address.";
skipping to change at page 64, line 17 skipping to change at page 58, line 37
leaf bdr-ip-addr { leaf bdr-ip-addr {
type inet:ip-address; type inet:ip-address;
description description
"Neighbor's Backup Designated Router (BDR) IP Address."; "Neighbor's Backup Designated Router (BDR) IP Address.";
} }
leaf state { leaf state {
type nbr-state-type; type nbr-state-type;
description description
"OSPF neighbor state."; "OSPF neighbor state.";
} }
leaf dead-timer {
type uint32;
units "seconds";
description "This timer tracks the remaining time before
the neighbor is declared dead.";
}
container statistics { container statistics {
description "Per neighbor statistics"; description "Per neighbor statistics";
uses neighbor-stat; uses neighbor-stat;
} }
} }
grouping interface-common-operation { grouping interface-common-operation {
description description
"OSPF interface common operation state."; "OSPF interface common operation state.";
reference "RFC2328 Section 9"; reference "RFC2328 Section 9";
leaf state { leaf state {
type if-state-type; type if-state-type;
description "Interface state."; description "Interface state.";
} }
leaf hello-timer { leaf hello-timer {
type uint32; type uint32;
units "milliseconds"; units "seconds";
description "Hello timer."; description "This timer tracks the remaining time before
the next hello packet is sent.";
} }
leaf wait-timer { leaf wait-timer {
type uint32; type uint32;
units "milliseconds"; units "seconds";
description "Wait timer."; description "This timer tracks the remaining time before
the interface exits the Waiting state.";
} }
leaf dr-router-id { leaf dr-router-id {
type yang:dotted-quad; type yang:dotted-quad;
description "Designated Router (DR) router ID."; description "Designated Router (DR) router ID.";
} }
leaf dr-ip-addr { leaf dr-ip-addr {
type inet:ip-address; type inet:ip-address;
description "Designated Router (DR) IP address."; description "Designated Router (DR) IP address.";
skipping to change at page 67, line 4 skipping to change at page 61, line 34
"OSPF virtual link operation state."; "OSPF virtual link operation state.";
leaf cost { leaf cost {
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
description description
"Virtual link interface cost."; "Virtual link interface cost.";
} }
uses interface-common-operation; uses interface-common-operation;
} }
grouping sham-link-config { grouping sham-link-config {
description description
"OSPF sham link configuration state."; "OSPF sham link configuration state.";
uses interface-common-config; uses interface-common-config;
uses interface-cost-config; uses interface-physical-link-config;
} }
grouping sham-link-operation { grouping sham-link-operation {
description description
"OSPF sham link operation state."; "OSPF sham link operation state.";
uses interface-common-operation; uses interface-common-operation;
} }
grouping af-area-config { grouping af-area-config {
skipping to change at page 69, line 16 skipping to change at page 63, line 45
base area-type; base area-type;
} }
default normal; default normal;
description description
"Area type."; "Area type.";
} }
uses area-common-config; uses area-common-config;
uses af-area-config { uses af-area-config {
when "../../operation-mode = " when "../../../operation-mode = "
+ "'ospf:ships-in-the-night'" { + "'ospf:ships-in-the-night'" {
description description
"Ships in the night configuration."; "Ships in the night configuration.";
} }
} }
} }
grouping area-operation { grouping area-operation {
description description
"OSPF area operation state."; "OSPF area operation state.";
container statistics { container statistics {
description "Per area statistics"; description "Per area statistics";
uses area-stat; uses area-stat;
} }
container database { container database {
skipping to change at page 78, line 13 skipping to change at page 72, line 39
description description
"OSPF operation mode."; "OSPF operation mode.";
} }
} }
grouping ospf-operation { grouping ospf-operation {
description description
"OSPF top operation state."; "OSPF top operation state.";
} }
grouping multi-topology-area-common-config {
description
"OSPF multi-topology area common configuration state.";
leaf summary {
when "../../../../../areas/area[area-id=current()/../area-id]/"
+ "area-type = 'ospf:stub' or "
+ "../../../../../areas/area[area-id=current()/../area-id]/"
+ "area-type = 'ospf:nssa'" {
description
"Summary advertisement into the stub/NSSA area.";
}
type boolean;
description
"Enable/Disable summary advertisement into the
topology in the stub or NSSA area.";
}
leaf default-cost {
when "../../../../../areas/area[area-id=current()/../area-id]/"
+ "area-type = 'ospf:stub' or "
+ "../../../../../areas/area[area-id=current()/../area-id]/"
+ "area-type = 'ospf:nssa'" {
description
"Cost for LSA default route advertised into the
topology into the stub or NSSA area.";
}
type uint32 {
range "1..16777215";
}
description
"Set the summary default route cost for a
stub or NSSA area.";
}
}
grouping multi-topology-area-config { grouping multi-topology-area-config {
description description
"OSPF multi-topology area configuration state."; "OSPF multi-topology area configuration state.";
uses area-common-config; uses multi-topology-area-common-config;
uses af-area-config { uses af-area-config {
when "../../../../operation-mode = " when "../../../../../operation-mode = "
+ "'ospf:ships-in-the-night'" { + "'ospf:ships-in-the-night'" {
description description
"Ships in the night configuration."; "Ships in the night configuration.";
} }
} }
} }
grouping multi-topology-area-operation { grouping multi-topology-area-operation {
description description
"OSPF multi-topology area operation state."; "OSPF multi-topology area operation state.";
skipping to change at page 81, line 19 skipping to change at page 76, line 31
leaf router-id { leaf router-id {
type yang:dotted-quad; type yang:dotted-quad;
description description
"Virtual Link remote endpoint router ID."; "Virtual Link remote endpoint router ID.";
} }
uses virtual-link-config; uses virtual-link-config;
} }
} }
container sham-links { container sham-links {
if-feature pe-ce-protocol;
description "All sham links."; description "All sham links.";
list sham-link { list sham-link {
key "local-id remote-id"; key "local-id remote-id";
description description
"OSPF sham link"; "OSPF sham link";
leaf local-id { leaf local-id {
type inet:ip-address; type inet:ip-address;
description description
"Address of the local Sham Link endpoint."; "Address of the local Sham Link endpoint.";
} }
skipping to change at page 95, line 37 skipping to change at page 91, line 4
leaf exit-reason { leaf exit-reason {
type restart-exit-reason-type; type restart-exit-reason-type;
description description
"Restart exit reason."; "Restart exit reason.";
} }
description description
"This notification is sent when the graceful restart "This notification is sent when the graceful restart
state for the router has changed."; state for the router has changed.";
} }
} }
<CODE ENDS> <CODE ENDS>
6. OSPF Segment Routing Yang Module 5. OSPF BFD Yang Module
<CODE BEGINS> file "ietf-ospf-sr@2016-07-07.yang"
module ietf-ospf-sr {
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr";
prefix ospf-sr;
import ietf-inet-types {
prefix "inet";
}
import ietf-yang-types {
prefix "yang";
}
import ietf-routing {
prefix "rt";
}
import ietf-segment-routing {
prefix "sr";
}
import ietf-ospf {
prefix "ospf";
}
organization
"Cisco Systems
170 West Tasman Drive
San Jose, CA 95134-1706
USA";
contact
"WG Web: <http://tools.ietf.org/wg/ospf/>
WG List: <mailto:ospf@ietf.org>
WG Chair: Acee Lindem
<mailto:acee@cisco.com>
WG Chair: Abhay Roy
<mailto:akr@cisco.com>
Editor: Derek Yeung
<mailto:myeung@cisco.com>
Author: Derek Yeung
<mailto:myeung@cisco.com>
Author: Yingzhen Qu
<mailto:yiqu@cisco.com>
Author: Acee Lindem
<mailto:acee@cisco.com>
Author: Jeffrey Zhang
<mailto:zzhang@juniper.net>
Author: Ing-Wher Chen
<mailto:ing-wher.chen@ericsson.com>
Author: Greg Hankins
<mailto:greg.hankins@alcatel-lucent.com>";
description
"This YANG module defines the generic configuration
and operational state for OSPF Segment Routing, which is
common across all of the vendor implementations. It is
intended that the module will be extended by vendors to
define vendor-specific OSPF Segment Routing configuration
and operational parameters and policies.
Terms and Acronyms
OSPF (ospf): Open Shortest Path First
IP (ip): Internet Protocol
IPv4 (ipv4):Internet Protocol Version 4
IPv6 (ipv6): Internet Protocol Version 6
";
revision 2016-07-07 {
description
"* Change routing-protocol to control-plane-protocol.";
reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
}
revision 2016-03-20 {
description
"* Remove routing-instance.";
reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
}
revision 2015-10-19 {
description
"* Add per-protocol SRGB support.
* Editorial changes.";
reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
}
revision 2015-09-02 {
description
"* Author list update.
* Editorial changes.";
reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
}
revision 2015-07-06 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
}
feature ti-lfa {
description
"Topology-Independent Loop-Free Alternate (TI-LFA)
computation using segment routing.";
}
/* Configuration */
augment "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/ospf:ospf/ospf:instance" {
when "../../rt:type = 'ospf:ospfv2' or "
+ "../../rt:type = 'ospf:ospfv3'" {
description
"This augments the OSPF routing protocol when used.";
}
description
"This augments the OSPF protocol configuration
with segment routing.";
uses sr:controlplane-cfg;
container protocol-srgb {
if-feature sr:protocol-srgb;
uses sr:srgb-cfg;
description
"Per-protocol SRGB.";
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/ospf:instance/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" {
when "../../../../../../rt:type = 'ospf:ospfv2' or "
+ "../../../../../../rt:type = 'ospf:ospfv3'" {
description
"This augments the OSPF interface configuration
when used.";
}
description
"This augments the OSPF protocol interface
configuration with segment routing.";
uses sr:igp-interface-cfg;
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/ospf:instance/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/"
+ "ospf:fast-reroute" {
when "../../../../../../../rt:type = 'ospf:ospfv2' or "
+ "../../../../../../../rt:type = 'ospf:ospfv3'" {
description
"This augments the OSPF routing protocol when used.";
}
description
"This augments the OSPF protocol IP-FRR with TI-LFA.";
container ti-lfa {
if-feature ti-lfa;
leaf enable {
type boolean;
description
"Enables TI-LFA computation.";
}
description
"Topology Independent Loop Free Alternate
(TI-LFA) support.";
}
}
/* Operational states */
augment "/rt:routing-state/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance" {
when "../../rt:type = 'ospf:ospfv2' or "
+ "../../rt:type = 'ospf:ospfv3'" {
description
"This augments the OSPF routing protocol when used.";
}
description
"This augments the OSPF protocol operational state
with segment routing.";
uses sr:controlplane-cfg;
container protocol-srgb {
if-feature sr:protocol-srgb;
uses sr:srgb-cfg;
description
"Per-protocol SRGB.";
}
}
augment "/rt:routing-state/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/ospf:area/"
+ "ospf:interfaces/ospf:interface" {
when "../../../../../../rt:type = 'ospf:ospfv2' or "
+ "../../../../../../rt:type = 'ospf:ospfv3'" {
description
"This augments the OSPF routing protocol when used.";
}
description
"This augments the OSPF protocol interface
operational state with segment routing.";
uses sr:igp-interface-cfg;
}
/* Database */
grouping sid-sub-tlv {
description "SID/Label sub-TLV grouping.";
container sid-sub-tlv {
description
"Used to advertise the SID/Label associated with a
prefix or adjacency.";
leaf sid {
type uint32;
description
"Segment Identifier (SID) - A 20 bit label or
32 bit SID.";
}
}
}
grouping prefix-sid-sub-tlvs {
description "Prefix Segment ID (SID) sub-TLVs.";
container perfix-sid-sub-tlvs{
description "Prefix SID sub-TLV.";
list prefix-sid-sub-tlv {
description "Prefix SID sub-TLV.";
leaf flags {
type bits {
bit NP {
description
"No-PHP flag.";
}
bit M {
description
"Mapping server flag.";
}
bit E {
description
"Explicit-NULL flag.";
}
bit V {
description
"Value/Index flag.";
}
bit L {
description
"Local flag.";
}
}
description "Segment Identifier (SID) Flags.";
}
leaf mt-id {
type uint8;
description "Multi-topology ID.";
}
leaf algorithm {
type uint8;
description
"The algorithm associated with the prefix-SID.";
}
leaf sid {
type uint32;
description "An index or label.";
}
}
}
}
grouping sid-binding-sub-tlvs {
description "SID/Label binding sub-TLV grouping.";
container sid-binding-sub-tlvs {
description "SID binding sub-TLVs.";
list sid-binding-sub-tlv {
description "SID binding sub-TLV.";
leaf flags {
type bits {
bit M {
description
"Mirroring context flag.";
}
}
description "Flags.";
}
leaf mt-id {
type uint8;
description "Multi-topology ID.";
}
leaf weight {
type uint8;
description "Weight for load-balancing purposes.";
}
uses sid-sub-tlv;
container ero-metric-sub-tlv {
description
"The cost of an Explicit Route Object (ERO) path.";
leaf metric {
type uint32;
description "The aggregate IGP or TE path cost.";
}
}
container ipv4-ero-sub-tlv {
description
"The IPv4 ERO sub-TLV describes a path segment
using IPv4 address.";
leaf flags {
type bits {
bit L {
description
"If set, then the segment path is designated as
'loose'. Otherwise, the path is 'strict'.";
}
}
description "ERO Flags.";
}
leaf ipv4-address {
type inet:ipv4-address;
description "The address of the explicit route hop.";
}
}
container unnumbered-ero-sub-tlv {
description "The unnumbered interface ID ERO sub-TLV
describes a path segment that includes an
unnumbered interface.";
leaf flags {
type bits {
bit L {
description
"If set, then the segment path is designated as
'loose'. Otherwise as 'strict'.";
}
}
description "ERO Flags.";
}
leaf router-id {
type yang:dotted-quad;
description "Router-id of the next-hop.";
}
leaf interface-id {
type uint32;
description
"The identifier assigned to the link by the
router specified by the router-id.";
}
}
container ipv4-backup-ero-sub-tlv {
description
"The IPv4 backup ERO sub-TLV describes a path
segment using IPv4 address.";
leaf flags {
type bits {
bit L {
description
"If set, then the segment path is designated as
'loose'. Otherwise as 'strict'.";
}
}
description "Flags.";
}
leaf ipv4-address {
type inet:ipv4-address;
description "The address of the explicit route hop.";
}
}
container unnumbered-backup-ero-sub-tlv {
description
"The unnumbered interface ID backup ERO sub-TLV
describes a path segment that includes an
unnumbered interface.";
leaf flags {
type bits {
bit L {
description
"If set, then the segment path is designated as
'loose'. Otherwise, the path is 'strict'.";
}
}
description "Flags.";
}
leaf router-id {
type yang:dotted-quad;
description "Router-id of the next-hop.";
}
leaf interface-id {
type uint32;
description
"The identifier assigned to the link by the
router specified by the router-id.";
}
}
}
}
}
grouping extended-prefix-range-tlvs {
description "Extended prefix range TLV grouping.";
container extended-prefix-range-tlvs {
description "The list of range of prefixes.";
list extended-prefix-range-tlv { //type=2?
description "The range of prefixes.";
leaf range-size {
type uint16;
description "The number of prefixes covered by the
advertisement.";
}
leaf flags {
type bits {
bit IA {
description
"Inter-Area flag.";
}
}
description "Flags.";
}
leaf prefix {
type inet:ip-prefix;
description "Address prefix.";
}
uses prefix-sid-sub-tlvs;
uses sid-binding-sub-tlvs;
uses ospf:unknown-tlvs;
}
}
}
grouping sr-algorithm-tlv {
description "SR algorithm TLV grouping.";
container sr-algorithm-tlv {
description "All SR algorithm TLVs.";
leaf-list sr-algorithm {
type uint8;
description
"The Segment Routing (SR) algorithms that the router is
currently using.";
}
}
}
grouping sid-range-tlvs {
description "SID Range TLV grouping.";
container sid-range-tlvs {
description "List of SID range TLVs.";
list sid-range-tlv {
description "SID range TLV.";
leaf range-size {
type ospf:uint24;
description "The SID range.";
}
uses sid-sub-tlv;
}
}
}
augment "/rt:routing-state/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/ospf:area/"
+ "ospf:interfaces/ospf:interface/ospf:database/"
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" {
when "../../../../../../../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" {
description
"This augmentation is only valid for OSPFv2.";
}
description
"SR specific TLVs for OSPFv2 extended prefix TLV
in type 9 opaque LSA.";
uses prefix-sid-sub-tlvs;
uses sid-binding-sub-tlvs;
}
augment "/rt:routing-state/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/"
+ "ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" {
when "../../../../../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" {
description
"This augmentation is only valid for OSPFv2.";
}
description
"SR specific TLVs for OSPFv2 extended prefix TLV
in type 10 opaque LSA.";
uses prefix-sid-sub-tlvs;
uses sid-binding-sub-tlvs;
}
augment "/rt:routing-state/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" {
when "../../../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" {
description
"This augmentation is only valid for OSPFv2.";
}
description
"SR specific TLVs for OSPFv2 extended prefix TLV
in type 11 opaque LSA.";
uses prefix-sid-sub-tlvs;
uses sid-binding-sub-tlvs;
}
augment "/rt:routing-state/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/"
+ "ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-link-tlvs/ospf:extended-link-tlv" {
when "../../../../../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" {
description
"This augmentation is only valid for OSPFv2.";
}
description
"SR specific TLVs for OSPFv2 extended link TLV
in type 10 opaque LSA.";
container adj-sid-sub-tlvs {
description "Adjacency SID optional sub-TLVs.";
list adj-sid-sub-tlv {
description "List of Adjacency SID sub-TLVs.";
leaf flags {
type bits {
bit B {
description
"Backup flag.";
}
bit V {
description
"Value/Index flag.";
}
bit L {
description
"Local/Global flag.";
}
bit S {
description
"Set flag.";
}
}
description "Flags.";
}
leaf mt-id {
type uint8;
description "Multi-topology ID.";
}
leaf weight {
type uint8;
description "Weight used for load-balancing.";
}
leaf sid {
type uint32;
description "Segment Identifier (SID) index/label.";
}
}
}
container lan-adj-sid-sub-tlvs {
description "LAN Adjacency SID optional sub-TLVs.";
list lan-adj-sid-sub-tlv {
description "List of LAN adjacency SID sub-TLVs.";
leaf flags {
type bits {
bit B {
description
"Backup flag.";
}
bit V {
description
"Value/Index flag.";
}
bit L {
description
"Local/Global flag.";
}
bit S {
description
"Set flag.";
}
}
description "Flags.";
}
leaf mt-id {
type uint8;
description "Multi-topology ID.";
}
leaf weight {
type uint8;
description "Weight used for load-balancing.";
}
leaf neighbor-router-id {
type yang:dotted-quad;
description "Neighbor router ID.";
}
leaf sid {
type uint32;
description "Segment Identifier (SID) index/label.";
}
}
}
}
augment "/rt:routing-state/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/ospf:area/"
+ "ospf:interfaces/ospf:interface/ospf:database/"
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque" {
when "../../../../../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" {
description
"This augmentation is only valid for OSPFv2.";
}
description
"SR specific TLVs for OSPFv2 type 9 opaque LSA.";
uses extended-prefix-range-tlvs;
uses sr-algorithm-tlv;
uses sid-range-tlvs;
}
augment "/rt:routing-state/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/"
+ "ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque" {
when "../../../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" {
description
"This augmentation is only valid for OSPFv2.";
}
description
"SR specific TLVs for OSPFv2 type 10 opaque LSA.";
uses extended-prefix-range-tlvs;
uses sr-algorithm-tlv;
uses sid-range-tlvs;
}
augment "/rt:routing-state/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque" {
when "../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" {
description
"This augmentation is only valid for OSPFv2.";
}
description
"SR specific TLVs for OSPFv2 type 11 opaque LSA.";
uses extended-prefix-range-tlvs;
uses sr-algorithm-tlv;
uses sid-range-tlvs;
}
}
<CODE ENDS>
7. OSPF BFD Yang Module
<CODE BEGINS> file "ietf-ospf-bfd@2016-07-07.yang" <CODE BEGINS> file "ietf-ospf-bfd@2016-10-31.yang"
module ietf-ospf-bfd { module ietf-ospf-bfd {
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-bfd"; namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-bfd";
prefix ospf-bfd; prefix ospf-bfd;
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
} }
import ietf-ospf { import ietf-ospf {
prefix "ospf"; prefix "ospf";
skipping to change at page 110, line 48 skipping to change at page 91, line 40
"WG Web: <http://tools.ietf.org/wg/ospf/> "WG Web: <http://tools.ietf.org/wg/ospf/>
WG List: <mailto:ospf@ietf.org> WG List: <mailto:ospf@ietf.org>
WG Chair: Acee Lindem WG Chair: Acee Lindem
<mailto:acee@cisco.com> <mailto:acee@cisco.com>
WG Chair: Abhay Roy WG Chair: Abhay Roy
<mailto:akr@cisco.com> <mailto:akr@cisco.com>
Editor: Derek Yeung Editor: Derek Yeung
<mailto:myeung@cisco.com> <mailto:derek@arrcus.com>
Author: Derek Yeung Author: Derek Yeung
<mailto:myeung@cisco.com> <mailto:derek@arrcus.com>
Author: Yingzhen Qu Author: Yingzhen Qu
<mailto:yiqu@cisco.com> <mailto:yiqu@cisco.com>
Author: Acee Lindem Author: Acee Lindem
<mailto:acee@cisco.com> <mailto:acee@cisco.com>
Author: Jeffrey Zhang Author: Jeffrey Zhang
<mailto:zzhang@juniper.net> <mailto:zzhang@juniper.net>
Author: Ing-Wher Chen Author: Ing-Wher Chen
<mailto:ing-wher.chen@ericsson.com> <mailto:ichen@kuatrotech.com>
Author: Greg Hankins Author: Greg Hankins
<mailto:greg.hankins@alcatel-lucent.com>"; <mailto:greg.hankins@alcatel-lucent.com>";
description description
"This YANG module defines the generic configuration "This YANG module defines the generic configuration
and operational state for OSPF BFD, which is common and operational state for OSPF BFD, which is common
across all of the vendor implementations. It is across all of the vendor implementations. It is
intended that the module will be extended by vendors to intended that the module will be extended by vendors to
define vendor-specific OSPF BFD configuration define vendor-specific OSPF BFD configuration
and operational parameters and policies. and operational parameters and policies.
skipping to change at page 111, line 33 skipping to change at page 92, line 24
OSPF (ospf): Open Shortest Path First OSPF (ospf): Open Shortest Path First
IP (ip): Internet Protocol IP (ip): Internet Protocol
IPv4 (ipv4):Internet Protocol Version 4 IPv4 (ipv4):Internet Protocol Version 4
IPv6 (ipv6): Internet Protocol Version 6 IPv6 (ipv6): Internet Protocol Version 6
"; ";
revision 2016-10-31 {
description
"* Update authors information.
* Rename bfd/enabled to bfd/enable";
reference
"RFC XXXX: A YANG Data Model for OSPF BFD.";
}
revision 2016-07-07 { revision 2016-07-07 {
description description
"* Change routing-protocol to control-plane-protocol."; "* Change routing-protocol to control-plane-protocol.";
reference reference
"RFC XXXX: A YANG Data Model for OSPF BFD."; "RFC XXXX: A YANG Data Model for OSPF BFD.";
} }
revision 2016-03-20 { revision 2016-03-20 {
description description
"* Remove routing-instance. "* Remove routing-instance.
skipping to change at page 112, line 23 skipping to change at page 93, line 23
+ "../../../../../../rt:type = 'ospf:ospfv3'" { + "../../../../../../rt:type = 'ospf:ospfv3'" {
description description
"This augments the OSPF routing protocol when used"; "This augments the OSPF routing protocol when used";
} }
description description
"This augments OSPF protocol configuration "This augments OSPF protocol configuration
with BFD."; with BFD.";
container bfd { container bfd {
description "BFD configuration."; description "BFD configuration.";
leaf enabled { leaf enable {
type boolean; type boolean;
default false; default false;
description description
"True if BFD is enabled for the OSPF interface."; "True if BFD is enabled for the OSPF interface.";
} }
} }
} }
/* Operational states */ /* Operational states */
skipping to change at page 112, line 49 skipping to change at page 93, line 49
+ "../../../../../../rt:type = 'ospf:ospfv3'" { + "../../../../../../rt:type = 'ospf:ospfv3'" {
description description
"This augments the OSPF routing protocol when used"; "This augments the OSPF routing protocol when used";
} }
description description
"This augments OSPF protocol operation "This augments OSPF protocol operation
with BFD."; with BFD.";
container bfd { container bfd {
description "BFD operation."; description "BFD operation.";
leaf enabled { leaf enable {
type boolean; type boolean;
description description
"True if BFD is enabled for the OSPF interface."; "True if BFD is enabled for the OSPF interface.";
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
8. Security Considerations 6. Security Considerations
The data model defined does not create any security implications. The data model defined does not create any security implications.
This draft does not change any underlying security issues inherent in This draft does not change any underlying security issues inherent in
[I-D.ietf-netmod-routing-cfg]. [I-D.ietf-netmod-routing-cfg].
9. Acknowledgements 7. Acknowledgements
The authors wish to thank Acee Lindem, Yi Yang, Alexander Clemm, The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta,
Gaurav Gupta, Ing-Wher Chen, Ladislav Lhotka, Stephane Litkowski, Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and
Greg Hankins, Manish Gupta and Alan Davey for their thorough reviews Alan Davey for their thorough reviews and helpful comments.
and helpful comments.
This document was produced using Marshall Rose's xml2rfc tool. This document was produced using Marshall Rose's xml2rfc tool.
10. References 8. References
10.1. Normative References 8.1. Normative References
[RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits", [RFC1793] Moy, J., "Extending OSPF to Support Demand Circuits",
RFC 1793, DOI 10.17487/RFC1793, April 1995, RFC 1793, DOI 10.17487/RFC1793, April 1995,
<http://www.rfc-editor.org/info/rfc1793>. <http://www.rfc-editor.org/info/rfc1793>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>. <http://www.rfc-editor.org/info/rfc2119>.
skipping to change at page 115, line 5 skipping to change at page 96, line 5
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<http://www.rfc-editor.org/info/rfc6020>. <http://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<http://www.rfc-editor.org/info/rfc6241>. <http://www.rfc-editor.org/info/rfc6241>.
[RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and
M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge
(PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565,
June 2012, <http://www.rfc-editor.org/info/rfc6565>.
[RFC7223] Bjorklund, M., "A YANG Data Model for Interface [RFC7223] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 7223, DOI 10.17487/RFC7223, May 2014, Management", RFC 7223, DOI 10.17487/RFC7223, May 2014,
<http://www.rfc-editor.org/info/rfc7223>. <http://www.rfc-editor.org/info/rfc7223>.
10.2. Informative References 8.2. Informative References
[I-D.ietf-bfd-yang] [I-D.ietf-bfd-yang]
Zheng, L., Rahman, R., Networks, J., Jethanandani, M., and Zheng, L., Rahman, R., Networks, J., Jethanandani, M., and
G. Mirsky, "Yang Data Model for Bidirectional Forwarding G. Mirsky, "Yang Data Model for Bidirectional Forwarding
Detection (BFD)", draft-ietf-bfd-yang-01 (work in Detection (BFD)", draft-ietf-bfd-yang-03 (work in
progress), February 2016. progress), July 2016.
[I-D.ietf-netmod-routing-cfg] [I-D.ietf-netmod-routing-cfg]
Lhotka, L. and A. Lindem, "A YANG Data Model for Routing Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
Management", draft-ietf-netmod-routing-cfg-22 (work in Management", draft-ietf-netmod-routing-cfg-24 (work in
progress), July 2016. progress), October 2016.
[I-D.ietf-rtgwg-yang-key-chain] [I-D.ietf-rtgwg-yang-key-chain]
Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y. Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y.
Yang, "Routing Key Chain YANG Data Model", draft-ietf- Yang, "Routing Key Chain YANG Data Model", draft-ietf-
rtgwg-yang-key-chain-06 (work in progress), June 2016. rtgwg-yang-key-chain-10 (work in progress), October 2016.
[I-D.ietf-spring-sr-yang] Appendix A. Contributors' Addreses
Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG
Data Model for Segment Routing", draft-ietf-spring-sr-
yang-03 (work in progress), July 2016.
Authors' Addresses Dean Bogdanovic
Volta Networks, Inc.
Derek Yeung EMail: dean@voltanet.io
Kiran Koushik Agrahara Sreenivasa
Cisco Systems Cisco Systems
170 West Tasman Drive 12515 Research Blvd, Bldg 4
San Jose, CA 95134 Austin, TX 78681
USA USA
EMail: myeung@cisco.com EMail: kkoushik@cisco.com
Authors' Addresses
Derek Yeung
Arrcus
EMail: derek@arrcus.com
Yingzhen Qu Yingzhen Qu
Cisco Systems Cisco Systems
170 West Tasman Drive 170 West Tasman Drive
San Jose, CA 95134 San Jose, CA 95134
USA USA
EMail: yiqu@cisco.com EMail: yiqu@cisco.com
Jeffrey Zhang Jeffrey Zhang
Juniper Networks Juniper Networks
10 Technology Park Drive 10 Technology Park Drive
Westford, MA 01886 Westford, MA 01886
USA USA
EMail: zzhang@juniper.net EMail: zzhang@juniper.net
Dean Bogdanovic Ing-Wher Chen
Kuatro Technologies
EMail: ivandean@gmail.com
Kiran Koushik Agrahara Sreenivasa EMail: ichen@kuatrotech.com
Acee Lindem
Cisco Systems Cisco Systems
12515 Research Blvd, Bldg 4 301 Midenhall Way
Austin, TX 78681 Cary, NC 27513
USA
EMail: kkoushik@cisco.com EMail: acee@cisco.com
 End of changes. 95 change blocks. 
1356 lines changed or deleted 456 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/