draft-ietf-ospf-sr-yang-01.txt   draft-ietf-ospf-sr-yang-02.txt 
Internet D. Yeung Internet D. Yeung
Internet-Draft Arrcus Internet-Draft Arrcus
Intended status: Informational Y. Qu Intended status: Informational Y. Qu
Expires: September 14, 2017 Huawei Expires: January 3, 2018 Huawei
J. Zhang J. Zhang
Juniper Networks Juniper Networks
I. Chen I. Chen
Jabil Circuit Jabil Circuit
A. Lindem A. Lindem
Cisco Systems Cisco Systems
March 13, 2017 July 2, 2017
Yang Data Model for OSPF SR (Segment Routing) Protocol Yang Data Model for OSPF SR (Segment Routing) Protocol
draft-ietf-ospf-sr-yang-01 draft-ietf-ospf-sr-yang-02
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 Segment Routing. and manage OSPF Segment Routing.
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 38 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 September 14, 2017. This Internet-Draft will expire on January 3, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 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 14 skipping to change at page 2, line 14
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2
2. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 2 2. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 2
3. OSPF Segment Routing Yang Module . . . . . . . . . . . . . . 10 3. OSPF Segment Routing Yang Module . . . . . . . . . . . . . . 7
4. Security Considerations . . . . . . . . . . . . . . . . . . . 25 4. Security Considerations . . . . . . . . . . . . . . . . . . . 19
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 25 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.1. Normative References . . . . . . . . . . . . . . . . . . 25 6.1. Normative References . . . . . . . . . . . . . . . . . . 20
6.2. Informative References . . . . . . . . . . . . . . . . . 27 6.2. Informative References . . . . . . . . . . . . . . . . . 21
Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 28 Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 23
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23
1. Overview 1. Overview
YANG [RFC6020] [RFC7950] is a data definition language used to YANG [RFC6020] [RFC7950] is a data definition language used to
define the contents of a conceptual data store that allows networked define the contents of a conceptual data store that allows networked
devices to be managed using NETCONF [RFC6241]. YANG is proving devices to be managed using NETCONF [RFC6241]. YANG is proving
relevant beyond its initial confines, as bindings to other interfaces relevant beyond its initial confines, as bindings to other interfaces
(e.g., ReST) and encodings other than XML (e.g., JSON) are being (e.g., ReST) and encodings other than XML (e.g., JSON) are being
defined. Furthermore, YANG data models can be used as the basis for defined. 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 7 skipping to change at page 3, line 7
This document defines a model for OSPF Segment Routing feature. It This document defines a model for OSPF Segment Routing feature. It
is an augmentation of the OSPF base model. is an augmentation of the OSPF base model.
The OSPF SR YANG module requires support for the base segment routing The OSPF SR YANG module requires support for the base segment routing
module [I-D.ietf-spring-sr-yang], which defines the global segment module [I-D.ietf-spring-sr-yang], which defines the global segment
routing configuration independent of any specific routing protocol routing configuration independent of any specific routing protocol
configuration, and support of OSPF base model[I-D.ietf-ospf-yang] configuration, and support of OSPF base model[I-D.ietf-ospf-yang]
which defines basic OSPF configuration and state. which defines basic OSPF configuration and state.
module: ietf-ospf-sr module: ietf-ospf-sr
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:
+--rw segment-routing +--rw segment-routing
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw bindings | +--rw bindings
| +--rw advertise | +--rw advertise
| | +--rw policies* string | | +--rw policies* string
| +--rw receive? boolean | +--rw receive? boolean
+--rw protocol-srgb {sr:protocol-srgb}? +--rw protocol-srgb {sr:protocol-srgb}?
+--rw srgb* [lower-bound upper-bound] +--rw srgb* [lower-bound upper-bound]
+--rw lower-bound uint32 +--rw lower-bound uint32
+--rw upper-bound uint32 +--rw upper-bound uint32
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf /rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:instance/ospf:areas/ospf:area /ospf:areas/ospf:area/ospf:interfaces/ospf:interface:
/ospf:interfaces/ospf:interface: +--rw segment-routing
+--rw segment-routing +--rw adjacency-sid
+--rw adjacency-sid +--rw advertise-adj-group-sid* [group-id]
+--rw advertise-adj-group-sid* [group-id] | +--rw group-id uint32
| +--rw group-id uint32 +--rw advertise-protection? enumeration
+--rw advertise-protection? enumeration 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:areas/ospf:area/ospf:interfaces/ospf:interface
/ospf:instance/ospf:areas/ospf:area /ospf:fast-reroute:
/ospf:interfaces/ospf:interface/ospf:fast-reroute: +--rw ti-lfa {ti-lfa}?
+--rw ti-lfa {ti-lfa}? +--rw enable? boolean
+--rw enable? boolean augment /rt:routing/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
+--ro segment-routing /ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas
| +--ro enabled? boolean /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2
| +--ro bindings /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs
| +--ro advertise /ospf:extended-prefix-tlv:
| | +--ro policies* string +--ro perfix-sid-sub-tlvs
| +--ro receive? boolean +--ro prefix-sid-sub-tlv*
+--ro protocol-srgb {sr:protocol-srgb}? +--ro flags? bits
+--ro srgb* [lower-bound upper-bound] +--ro mt-id? uint8
+--ro lower-bound uint32 +--ro algorithm? uint8
+--ro upper-bound uint32 +--ro sid? uint32
augment /rt:routing-state/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf /rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:instance/ospf:areas/ospf:area /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type
/ospf:interfaces/ospf:interface: /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
+--ro segment-routing /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque
+--ro adjacency-sid /ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv:
+--ro advertise-adj-group-sid* [group-id] +--ro perfix-sid-sub-tlvs
| +--ro group-id uint32 +--ro prefix-sid-sub-tlv*
+--ro advertise-protection? enumeration +--ro flags? bits
augment /rt:routing-state/rt:control-plane-protocols +--ro mt-id? uint8
/rt:control-plane-protocol/ospf:ospf/ospf:instance +--ro algorithm? uint8
/ospf:areas/ospf:area/ospf:interfaces/ospf:interface +--ro sid? uint32
/ospf:database/ospf:link-scope-lsa-type augment /rt:routing/rt:control-plane-protocols
/ospf:link-scope-lsas/ospf:link-scope-lsa/ospf:version /rt:control-plane-protocol/ospf:ospf/ospf:instance
/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas
/ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv: /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2
+--ro perfix-sid-sub-tlvs /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs
| +--ro prefix-sid-sub-tlv* /ospf:extended-prefix-tlv:
| +--ro flags? bits +--ro perfix-sid-sub-tlvs
| +--ro mt-id? uint8 +--ro prefix-sid-sub-tlv*
| +--ro algorithm? uint8 +--ro flags? bits
| +--ro sid? uint32 +--ro mt-id? uint8
+--ro sid-binding-sub-tlvs +--ro algorithm? uint8
+--ro sid-binding-sub-tlv* +--ro sid? uint32
+--ro flags? bits augment /rt:routing/rt:control-plane-protocols
+--ro mt-id? uint8 /rt:control-plane-protocol/ospf:ospf/ospf:instance
+--ro weight? uint8 /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type
+--ro sid-sub-tlv /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
| +--ro sid? uint32 /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque
+--ro ero-metric-sub-tlv /ospf:extended-link-tlvs/ospf:extended-link-tlv:
| +--ro metric? uint32 +--ro adj-sid-sub-tlvs
+--ro ipv4-ero-sub-tlv | +--ro adj-sid-sub-tlv*
| +--ro flags? bits | +--ro flags? bits
| +--ro ipv4-address? inet:ipv4-address | +--ro mt-id? uint8
+--ro unnumbered-ero-sub-tlv | +--ro weight? uint8
| +--ro flags? bits | +--ro sid? uint32
| +--ro router-id? yang:dotted-quad +--ro lan-adj-sid-sub-tlvs
| +--ro interface-id? uint32 +--ro lan-adj-sid-sub-tlv*
+--ro ipv4-backup-ero-sub-tlv +--ro flags? bits
| +--ro flags? bits +--ro mt-id? uint8
| +--ro ipv4-address? inet:ipv4-address +--ro weight? uint8
+--ro unnumbered-backup-ero-sub-tlv +--ro neighbor-router-id? yang:dotted-quad
+--ro flags? bits +--ro sid? uint32
+--ro router-id? yang:dotted-quad augment /rt:routing/rt:control-plane-protocols
+--ro interface-id? uint32 /rt:control-plane-protocol/ospf:ospf/ospf:instance
augment /rt:routing-state/rt:control-plane-protocols /ospf:areas/ospf:area/ospf:interfaces/ospf:interface
/rt:control-plane-protocol/ospf:ospf/ospf:instance /ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas
/ospf:areas/ospf:area/ospf:database /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2
/ospf:area-scope-lsa-type/ospf:area-scope-lsas /ospf:body/ospf:opaque:
/ospf:area-scope-lsa/ospf:version/ospf:ospfv2 +--ro extended-prefix-range-tlvs
/ospf:ospfv2/ospf:body/ospf:opaque | +--ro extended-prefix-range-tlv*
/ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv: | +--ro range-size? uint16
+--ro perfix-sid-sub-tlvs | +--ro flags? bits
| +--ro prefix-sid-sub-tlv* | +--ro prefix? inet:ip-prefix
| +--ro flags? bits | +--ro perfix-sid-sub-tlvs
| +--ro mt-id? uint8 | | +--ro prefix-sid-sub-tlv*
| +--ro algorithm? uint8 | | +--ro flags? bits
| +--ro sid? uint32 | | +--ro mt-id? uint8
+--ro sid-binding-sub-tlvs | | +--ro algorithm? uint8
+--ro sid-binding-sub-tlv* | | +--ro sid? uint32
+--ro flags? bits | +--ro unknown-tlvs
+--ro mt-id? uint8 | +--ro unknown-tlv*
+--ro weight? uint8 | +--ro type? uint16
+--ro sid-sub-tlv | +--ro length? uint16
| +--ro sid? uint32 | +--ro value? yang:hex-string
+--ro ero-metric-sub-tlv +--ro sr-algorithm-tlv
| +--ro metric? uint32 | +--ro sr-algorithm* uint8
+--ro ipv4-ero-sub-tlv +--ro sid-range-tlvs
| +--ro flags? bits | +--ro sid-range-tlv*
| +--ro ipv4-address? inet:ipv4-address | +--ro range-size? ospf:uint24
+--ro unnumbered-ero-sub-tlv | +--ro sid-sub-tlv
| +--ro flags? bits | +--ro sid? uint32
| +--ro router-id? yang:dotted-quad +--ro local-block-tlvs
| +--ro interface-id? uint32 | +--ro local-block-tlv*
+--ro ipv4-backup-ero-sub-tlv | +--ro range-size? ospf:uint24
| +--ro flags? bits | +--ro sid-sub-tlv
| +--ro ipv4-address? inet:ipv4-address | +--ro sid? uint32
+--ro unnumbered-backup-ero-sub-tlv +--ro srms-preference-tlv
+--ro flags? bits +--ro preference? uint8
+--ro router-id? yang:dotted-quad augment /rt:routing/rt:control-plane-protocols
+--ro interface-id? uint32 /rt:control-plane-protocol/ospf:ospf/ospf:instance
augment /rt:routing-state/rt:control-plane-protocols /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type
/rt:control-plane-protocol/ospf:ospf/ospf:instance /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
/ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque:
/ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 +--ro extended-prefix-range-tlvs
/ospf:body/ospf:opaque/ospf:extended-prefix-tlvs | +--ro extended-prefix-range-tlv*
/ospf:extended-prefix-tlv: | +--ro range-size? uint16
+--ro perfix-sid-sub-tlvs | +--ro flags? bits
| +--ro prefix-sid-sub-tlv* | +--ro prefix? inet:ip-prefix
| +--ro flags? bits | +--ro perfix-sid-sub-tlvs
| +--ro mt-id? uint8 | | +--ro prefix-sid-sub-tlv*
| +--ro algorithm? uint8 | | +--ro flags? bits
| +--ro sid? uint32 | | +--ro mt-id? uint8
+--ro sid-binding-sub-tlvs | | +--ro algorithm? uint8
+--ro sid-binding-sub-tlv* | | +--ro sid? uint32
+--ro flags? bits | +--ro unknown-tlvs
+--ro mt-id? uint8 | +--ro unknown-tlv*
+--ro weight? uint8 | +--ro type? uint16
+--ro sid-sub-tlv | +--ro length? uint16
| +--ro sid? uint32 | +--ro value? yang:hex-string
+--ro ero-metric-sub-tlv +--ro sr-algorithm-tlv
| +--ro metric? uint32 | +--ro sr-algorithm* uint8
+--ro ipv4-ero-sub-tlv +--ro sid-range-tlvs
| +--ro flags? bits | +--ro sid-range-tlv*
| +--ro ipv4-address? inet:ipv4-address | +--ro range-size? ospf:uint24
+--ro unnumbered-ero-sub-tlv | +--ro sid-sub-tlv
| +--ro flags? bits | +--ro sid? uint32
| +--ro router-id? yang:dotted-quad +--ro local-block-tlvs
| +--ro interface-id? uint32 | +--ro local-block-tlv*
+--ro ipv4-backup-ero-sub-tlv | +--ro range-size? ospf:uint24
| +--ro flags? bits | +--ro sid-sub-tlv
| +--ro ipv4-address? inet:ipv4-address | +--ro sid? uint32
+--ro unnumbered-backup-ero-sub-tlv +--ro srms-preference-tlv
+--ro flags? bits +--ro preference? uint8
+--ro router-id? yang:dotted-quad augment /rt:routing/rt:control-plane-protocols
+--ro interface-id? uint32 /rt:control-plane-protocol/ospf:ospf/ospf:instance
augment /rt:routing-state/rt:control-plane-protocols /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas
/rt:control-plane-protocol/ospf:ospf/ospf:instance /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2
/ospf:areas/ospf:area/ospf:database /ospf:body/ospf:opaque:
/ospf:area-scope-lsa-type/ospf:area-scope-lsas +--ro extended-prefix-range-tlvs
/ospf:area-scope-lsa/ospf:version/ospf:ospfv2 | +--ro extended-prefix-range-tlv*
/ospf:ospfv2/ospf:body/ospf:opaque | +--ro range-size? uint16
/ospf:extended-link-tlvs/ospf:extended-link-tlv: | +--ro flags? bits
+--ro adj-sid-sub-tlvs | +--ro prefix? inet:ip-prefix
| +--ro adj-sid-sub-tlv* | +--ro perfix-sid-sub-tlvs
| +--ro flags? bits | | +--ro prefix-sid-sub-tlv*
| +--ro mt-id? uint8 | | +--ro flags? bits
| +--ro weight? uint8 | | +--ro mt-id? uint8
| +--ro sid? uint32 | | +--ro algorithm? uint8
+--ro lan-adj-sid-sub-tlvs | | +--ro sid? uint32
+--ro lan-adj-sid-sub-tlv* | +--ro unknown-tlvs
+--ro flags? bits | +--ro unknown-tlv*
+--ro mt-id? uint8 | +--ro type? uint16
+--ro weight? uint8 | +--ro length? uint16
+--ro neighbor-router-id? yang:dotted-quad | +--ro value? yang:hex-string
+--ro sid? uint32 +--ro sr-algorithm-tlv
augment /rt:routing-state/rt:control-plane-protocols | +--ro sr-algorithm* uint8
/rt:control-plane-protocol/ospf:ospf/ospf:instance +--ro sid-range-tlvs
/ospf:areas/ospf:area/ospf:interfaces/ospf:interface | +--ro sid-range-tlv*
/ospf:database/ospf:link-scope-lsa-type | +--ro range-size? ospf:uint24
/ospf:link-scope-lsas/ospf:link-scope-lsa | +--ro sid-sub-tlv
/ospf:version/ospf:ospfv2/ospf:ospfv2 | +--ro sid? uint32
/ospf:body/ospf:opaque: +--ro local-block-tlvs
+--ro extended-prefix-range-tlvs | +--ro local-block-tlv*
| +--ro extended-prefix-range-tlv* | +--ro range-size? ospf:uint24
| +--ro range-size? uint16 | +--ro sid-sub-tlv
| +--ro flags? bits | +--ro sid? uint32
| +--ro prefix? inet:ip-prefix +--ro srms-preference-tlv
| +--ro perfix-sid-sub-tlvs +--ro preference? uint8
| | +--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
3. OSPF Segment Routing Yang Module 3. OSPF Segment Routing Yang Module
<CODE BEGINS> file "ietf-ospf-sr@2017-03-13.yang" <CODE BEGINS> file "ietf-ospf-sr@2017-07-02.yang"
module ietf-ospf-sr { module ietf-ospf-sr {
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr";
prefix ospf-sr; prefix ospf-sr;
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 10, line 35 skipping to change at page 7, line 35
prefix "sr-cmn"; prefix "sr-cmn";
} }
import ietf-segment-routing { import ietf-segment-routing {
prefix "sr"; prefix "sr";
} }
import ietf-ospf { import ietf-ospf {
prefix "ospf"; prefix "ospf";
} }
organization organization
"Cisco Systems "IETF OSPF - OSPF Working Group";
170 West Tasman Drive
San Jose, CA 95134-1706
USA";
contact contact
"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
<mailto:acee@cisco.com>
WG Chair: Abhay Roy
<mailto:akr@cisco.com>
Editor: Derek Yeung Editor: Derek Yeung
<mailto:derek@arrcus.com> <mailto:derek@arrcus.com>
Author: Derek Yeung Author: Derek Yeung
<mailto:derek@arrcus.com> <mailto:derek@arrcus.com>
Author: Yingzhen Qu Author: Yingzhen Qu
<mailto:yingzhen.qu@huawei.com> <mailto:yingzhen.qu@huawei.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>
skipping to change at page 11, line 24 skipping to change at page 8, line 16
<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 Segment Routing, which is and operational state for OSPF Segment Routing, which is
common across all of the vendor implementations. It is common 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 Segment Routing configuration define vendor-specific OSPF Segment Routing configuration
and operational parameters and policies. and operational parameters and policies.
Terms and Acronyms Copyright (c) 2017 IETF Trust and the persons identified as
authors of the code. All rights reserved.
OSPF (ospf): Open Shortest Path First Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
IP (ip): Internet Protocol This version of this YANG module is part of RFC XXXX;
see the RFC itself for full legal notices.";
IPv4 (ipv4):Internet Protocol Version 4 reference "RFC XXXX";
IPv6 (ipv6): Internet Protocol Version 6 revision 2017-07-02 {
"; description
"* Implement NMDA model.
* Add local-block-tlvs and srms-preference-tlv.
* Remove sid-binding-sub-tlvs.";
reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
}
revision 2017-03-13 { revision 2017-03-12 {
description description
"* Add p-flag in adj-sid sub-tlv."; "* Add p-flag in adj-sid sub-tlv.";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
} }
revision 2016-10-31 { revision 2016-10-31 {
description description
"* Update authors information. "* Update authors information.
* Add import of ietf-segment-routing-common module."; * Add import of ietf-segment-routing-common module.";
skipping to change at page 12, line 45 skipping to change at page 9, line 50
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
} }
feature ti-lfa { feature ti-lfa {
description description
"Topology-Independent Loop-Free Alternate (TI-LFA) "Topology-Independent Loop-Free Alternate (TI-LFA)
computation using segment routing."; computation using segment routing.";
} }
/* Configuration */ /* Groupings */
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-cmn: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-cmn: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 { grouping sid-sub-tlv {
description "SID/Label sub-TLV grouping."; description "SID/Label sub-TLV grouping.";
container sid-sub-tlv { container sid-sub-tlv {
description description
"Used to advertise the SID/Label associated with a "Used to advertise the SID/Label associated with a
prefix or adjacency."; prefix or adjacency.";
leaf sid { leaf sid {
type uint32; type uint32;
description description
"Segment Identifier (SID) - A 20 bit label or "Segment Identifier (SID) - A 20 bit label or
skipping to change at page 15, line 27 skipping to change at page 10, line 26
grouping prefix-sid-sub-tlvs { grouping prefix-sid-sub-tlvs {
description "Prefix Segment ID (SID) sub-TLVs."; description "Prefix Segment ID (SID) sub-TLVs.";
container perfix-sid-sub-tlvs{ container perfix-sid-sub-tlvs{
description "Prefix SID sub-TLV."; description "Prefix SID sub-TLV.";
list prefix-sid-sub-tlv { list prefix-sid-sub-tlv {
description "Prefix SID sub-TLV."; description "Prefix SID sub-TLV.";
leaf flags { leaf flags {
type bits { type bits {
bit NP { bit NP {
position 1;
description description
"No-PHP flag."; "No-PHP flag.";
} }
bit M { bit M {
position 2;
description description
"Mapping server flag."; "Mapping server flag.";
} }
bit E { bit E {
position 3;
description description
"Explicit-NULL flag."; "Explicit-NULL flag.";
} }
bit V { bit V {
position 4;
description description
"Value/Index flag."; "Value/Index flag.";
} }
bit L { bit L {
position 5;
description description
"Local flag."; "Local flag.";
} }
} }
description "Segment Identifier (SID) Flags."; description "Segment Identifier (SID) Flags.";
} }
leaf mt-id { leaf mt-id {
type uint8; type uint8;
description "Multi-topology ID."; description "Multi-topology ID.";
} }
leaf algorithm { leaf algorithm {
type uint8; type uint8;
description description
"The algorithm associated with the prefix-SID."; "The algorithm associated with the prefix-SID.";
} }
leaf sid { leaf sid {
type uint32; type uint32;
description "An index or label."; description "An index or label.";
} }
skipping to change at page 16, line 19 skipping to change at page 11, line 23
"The algorithm associated with the prefix-SID."; "The algorithm associated with the prefix-SID.";
} }
leaf sid { leaf sid {
type uint32; type uint32;
description "An index or label."; 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 { grouping extended-prefix-range-tlvs {
description "Extended prefix range TLV grouping."; description "Extended prefix range TLV grouping.";
container extended-prefix-range-tlvs { container extended-prefix-range-tlvs {
description "The list of range of prefixes."; description "The list of range of prefixes.";
list extended-prefix-range-tlv { //type=2? list extended-prefix-range-tlv { //type=2?
description "The range of prefixes."; description "The range of prefixes.";
leaf range-size { leaf range-size {
type uint16; type uint16;
description "The number of prefixes covered by the description "The number of prefixes covered by the
advertisement."; advertisement.";
} }
leaf flags { leaf flags {
skipping to change at page 19, line 16 skipping to change at page 11, line 38
list extended-prefix-range-tlv { //type=2? list extended-prefix-range-tlv { //type=2?
description "The range of prefixes."; description "The range of prefixes.";
leaf range-size { leaf range-size {
type uint16; type uint16;
description "The number of prefixes covered by the description "The number of prefixes covered by the
advertisement."; advertisement.";
} }
leaf flags { leaf flags {
type bits { type bits {
bit IA { bit IA {
position 0;
description description
"Inter-Area flag."; "Inter-Area flag.";
} }
} }
description "Flags."; description "Flags.";
} }
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "Address prefix."; description "Address prefix.";
} }
uses prefix-sid-sub-tlvs; uses prefix-sid-sub-tlvs;
uses sid-binding-sub-tlvs;
uses ospf:unknown-tlvs; uses ospf:unknown-tlvs;
} }
} }
} }
grouping sr-algorithm-tlv { grouping sr-algorithm-tlv {
description "SR algorithm TLV grouping."; description "SR algorithm TLV grouping.";
container sr-algorithm-tlv { container sr-algorithm-tlv {
description "All SR algorithm TLVs."; description "All SR algorithm TLVs.";
leaf-list sr-algorithm { leaf-list sr-algorithm {
type uint8; type uint8;
description description
"The Segment Routing (SR) algorithms that the router is "The Segment Routing (SR) algorithms that the router is
skipping to change at page 20, line 12 skipping to change at page 12, line 34
list sid-range-tlv { list sid-range-tlv {
description "SID range TLV."; description "SID range TLV.";
leaf range-size { leaf range-size {
type ospf:uint24; type ospf:uint24;
description "The SID range."; description "The SID range.";
} }
uses sid-sub-tlv; uses sid-sub-tlv;
} }
} }
} }
augment "/rt:routing-state/"
grouping local-block-tlvs {
description "The SR local block TLV contains the
range of labels reserved for local SIDs.";
container local-block-tlvs {
description "List of SRLB TLVs.";
list local-block-tlv {
description "SRLB TLV.";
leaf range-size {
type ospf:uint24;
description "The SID range.";
}
uses sid-sub-tlv;
}
}
}
grouping srms-preference-tlv {
description "The SRMS preference TLV is used to advertise
a preference associated with the node that acts
as an SR Mapping Server.";
container srms-preference-tlv {
description "SRMS Preference TLV.";
leaf preference {
type uint8 {
range "0 .. 255";
}
description "SRMS preference TLV, vlaue from 0 to 255.";
}
}
}
/* 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-cmn: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.";
}
}
/* Database */
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/"
+ "ospf:interfaces/ospf:interface/ospf:database/" + "ospf:interfaces/ospf:interface/ospf:database/"
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/" + "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" {
when "../../../../../../../../../../../../../../../" when "../../../../../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" { + "rt:type = 'ospf:ospfv2'" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR specific TLVs for OSPFv2 extended prefix TLV "SR specific TLVs for OSPFv2 extended prefix TLV
in type 9 opaque LSA."; in type 9 opaque LSA.";
uses prefix-sid-sub-tlvs; uses prefix-sid-sub-tlvs;
uses sid-binding-sub-tlvs;
} }
augment "/rt:routing-state/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/" + "ospf:ospf/ospf:instance/ospf:areas/"
+ "ospf:area/ospf:database/" + "ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/" + "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" {
when "../../../../../../../../../../../../../" when "../../../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" { + "rt:type = 'ospf:ospfv2'" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR specific TLVs for OSPFv2 extended prefix TLV "SR specific TLVs for OSPFv2 extended prefix TLV
in type 10 opaque LSA."; in type 10 opaque LSA.";
uses prefix-sid-sub-tlvs; uses prefix-sid-sub-tlvs;
uses sid-binding-sub-tlvs;
} }
augment "/rt:routing-state/"
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:database/" + "ospf:ospf/ospf:instance/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/" + "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" {
when "../../../../../../../../../../../" when "../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" { + "rt:type = 'ospf:ospfv2'" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR specific TLVs for OSPFv2 extended prefix TLV "SR specific TLVs for OSPFv2 extended prefix TLV
in type 11 opaque LSA."; in type 11 opaque LSA.";
uses prefix-sid-sub-tlvs; uses prefix-sid-sub-tlvs;
uses sid-binding-sub-tlvs;
} }
augment "/rt:routing-state/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/" + "ospf:ospf/ospf:instance/ospf:areas/"
+ "ospf:area/ospf:database/" + "ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque/" + "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-link-tlvs/ospf:extended-link-tlv" { + "ospf:extended-link-tlvs/ospf:extended-link-tlv" {
when "../../../../../../../../../../../../../" when "../../../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" { + "rt:type = 'ospf:ospfv2'" {
description description
skipping to change at page 21, line 47 skipping to change at page 16, line 14
"SR specific TLVs for OSPFv2 extended link TLV "SR specific TLVs for OSPFv2 extended link TLV
in type 10 opaque LSA."; in type 10 opaque LSA.";
container adj-sid-sub-tlvs { container adj-sid-sub-tlvs {
description "Adjacency SID optional sub-TLVs."; description "Adjacency SID optional sub-TLVs.";
list adj-sid-sub-tlv { list adj-sid-sub-tlv {
description "List of Adjacency SID sub-TLVs."; description "List of Adjacency SID sub-TLVs.";
leaf flags { leaf flags {
type bits { type bits {
bit B { bit B {
position 0;
description description
"Backup flag."; "Backup flag.";
} }
bit V { bit V {
position 1;
description description
"Value/Index flag."; "Value/Index flag.";
} }
bit L { bit L {
position 2;
description description
"Local/Global flag."; "Local/Global flag.";
} }
bit G { bit G {
position 3;
description description
"Group flag."; "Group flag.";
} }
bit P { bit P {
position 4;
description description
"Persistent flag."; "Persistent flag.";
} }
} }
description "Flags."; description "Flags.";
} }
leaf mt-id { leaf mt-id {
type uint8; type uint8;
description "Multi-topology ID."; description "Multi-topology ID.";
} }
skipping to change at page 22, line 43 skipping to change at page 17, line 16
} }
} }
container lan-adj-sid-sub-tlvs { container lan-adj-sid-sub-tlvs {
description "LAN Adjacency SID optional sub-TLVs."; description "LAN Adjacency SID optional sub-TLVs.";
list lan-adj-sid-sub-tlv { list lan-adj-sid-sub-tlv {
description "List of LAN adjacency SID sub-TLVs."; description "List of LAN adjacency SID sub-TLVs.";
leaf flags { leaf flags {
type bits { type bits {
bit B { bit B {
position 0;
description description
"Backup flag."; "Backup flag.";
} }
bit V { bit V {
position 1;
description description
"Value/Index flag."; "Value/Index flag.";
} }
bit L { bit L {
position 2;
description description
"Local/Global flag."; "Local/Global flag.";
} }
bit G { bit G {
position 3;
description description
"Group flag."; "Group flag.";
} }
bit P { bit P {
position 4;
description description
"Persistent flag."; "Persistent flag.";
} }
} }
description "Flags."; description "Flags.";
} }
leaf mt-id { leaf mt-id {
type uint8; type uint8;
description "Multi-topology ID."; description "Multi-topology ID.";
} }
skipping to change at page 23, line 37 skipping to change at page 18, line 14
description "Neighbor router ID."; description "Neighbor router ID.";
} }
leaf sid { leaf sid {
type uint32; type uint32;
description "Segment Identifier (SID) index/label."; description "Segment Identifier (SID) index/label.";
} }
} }
} }
} }
augment "/rt:routing-state/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/"
+ "ospf:interfaces/ospf:interface/ospf:database/" + "ospf:interfaces/ospf:interface/ospf:database/"
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque" { + "ospf:ospfv2/ospf:body/ospf:opaque" {
when "../../../../../../../../../../../../../" when "../../../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" { + "rt:type = 'ospf:ospfv2'" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR specific TLVs for OSPFv2 type 9 opaque LSA."; "SR specific TLVs for OSPFv2 type 9 opaque LSA.";
uses extended-prefix-range-tlvs; uses extended-prefix-range-tlvs;
uses sr-algorithm-tlv; uses sr-algorithm-tlv;
uses sid-range-tlvs; uses sid-range-tlvs;
uses local-block-tlvs;
uses srms-preference-tlv;
} }
augment "/rt:routing-state/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:areas/" + "ospf:ospf/ospf:instance/ospf:areas/"
+ "ospf:area/ospf:database/" + "ospf:area/ospf:database/"
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque" { + "ospf:ospfv2/ospf:body/ospf:opaque" {
when "../../../../../../../../../../../" when "../../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" { + "rt:type = 'ospf:ospfv2'" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR specific TLVs for OSPFv2 type 10 opaque LSA."; "SR specific TLVs for OSPFv2 type 10 opaque LSA.";
uses extended-prefix-range-tlvs; uses extended-prefix-range-tlvs;
uses sr-algorithm-tlv; uses sr-algorithm-tlv;
uses sid-range-tlvs; uses sid-range-tlvs;
uses local-block-tlvs;
uses srms-preference-tlv;
} }
augment "/rt:routing-state/" augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/" + "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/ospf:instance/ospf:database/" + "ospf:ospf/ospf:instance/ospf:database/"
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/"
+ "ospf:ospfv2/ospf:body/ospf:opaque" { + "ospf:ospfv2/ospf:body/ospf:opaque" {
when "../../../../../../../../../" when "../../../../../../../../../"
+ "rt:type = 'ospf:ospfv2'" { + "rt:type = 'ospf:ospfv2'" {
description description
"This augmentation is only valid for OSPFv2."; "This augmentation is only valid for OSPFv2.";
} }
description description
"SR specific TLVs for OSPFv2 type 11 opaque LSA."; "SR specific TLVs for OSPFv2 type 11 opaque LSA.";
uses extended-prefix-range-tlvs; uses extended-prefix-range-tlvs;
uses sr-algorithm-tlv; uses sr-algorithm-tlv;
uses sid-range-tlvs; uses sid-range-tlvs;
uses local-block-tlvs;
uses srms-preference-tlv;
} }
} }
<CODE ENDS> <CODE ENDS>
4. Security Considerations 4. 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].
skipping to change at page 27, line 22 skipping to change at page 21, line 50
[RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
Management", RFC 8022, DOI 10.17487/RFC8022, November Management", RFC 8022, DOI 10.17487/RFC8022, November
2016, <http://www.rfc-editor.org/info/rfc8022>. 2016, <http://www.rfc-editor.org/info/rfc8022>.
6.2. Informative References 6.2. Informative References
[I-D.ietf-ospf-yang] [I-D.ietf-ospf-yang]
Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem,
"Yang Data Model for OSPF Protocol", draft-ietf-ospf- "Yang Data Model for OSPF Protocol", draft-ietf-ospf-
yang-06 (work in progress), October 2016. yang-08 (work in progress), July 2017.
[I-D.ietf-spring-sr-yang] [I-D.ietf-spring-sr-yang]
Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG
Data Model for Segment Routing", draft-ietf-spring-sr- Data Model for Segment Routing", draft-ietf-spring-sr-
yang-06 (work in progress), March 2017. yang-07 (work in progress), July 2017.
Appendix A. Contributors' Addreses Appendix A. Contributors' Addreses
Dean Bogdanovic Dean Bogdanovic
Volta Networks, Inc. Volta Networks, Inc.
EMail: dean@voltanet.io EMail: dean@voltanet.io
Kiran Koushik Agrahara Sreenivasa Kiran Koushik Agrahara Sreenivasa
Cisco Systems Cisco Systems
 End of changes. 53 change blocks. 
607 lines changed or deleted 352 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/