draft-ietf-ospf-sr-yang-09.txt   draft-ietf-ospf-sr-yang-10.txt 
Internet D. Yeung Internet D. Yeung
Internet-Draft Arrcus Internet-Draft Arrcus
Intended status: Standards Track Y. Qu Intended status: Standards Track Y. Qu
Expires: February 8, 2020 Futurewei Expires: February 14, 2020 Futurewei
J. Zhang J. Zhang
Juniper Networks Juniper Networks
I. Chen I. Chen
The MITRE Corporation The MITRE Corporation
A. Lindem A. Lindem
Cisco Systems Cisco Systems
August 7, 2019 August 13, 2019
YANG Data Model for OSPF SR (Segment Routing) Protocol YANG Data Model for OSPF SR (Segment Routing) Protocol
draft-ietf-ospf-sr-yang-09 draft-ietf-ospf-sr-yang-10
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. The model is based on YANG 1.1 as and manage OSPF Segment Routing. The model is based on YANG 1.1 as
defined in RFC 7950 and conforms to the Network Management Datastore defined in RFC 7950 and conforms to the Network Management Datastore
Architecture (NDMA) as described in RFC 8342. Architecture (NDMA) as described in RFC 8342.
Status of This Memo Status of This Memo
skipping to change at page 1, line 40 skipping to change at page 1, line 40
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 https://datatracker.ietf.org/drafts/current/. Drafts is at https://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 February 8, 2020. This Internet-Draft will expire on February 14, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 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
(https://trustee.ietf.org/license-info) in effect on the date of (https://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 18 skipping to change at page 2, line 18
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. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 3
3. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 3 3. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 3
4. OSPF Segment Routing YANG Module . . . . . . . . . . . . . . 7 4. OSPF Segment Routing YANG Module . . . . . . . . . . . . . . 7
5. Security Considerations . . . . . . . . . . . . . . . . . . . 21 5. Security Considerations . . . . . . . . . . . . . . . . . . . 22
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.1. Normative References . . . . . . . . . . . . . . . . . . 21 7.1. Normative References . . . . . . . . . . . . . . . . . . 22
7.2. Informative References . . . . . . . . . . . . . . . . . 23 7.2. Informative References . . . . . . . . . . . . . . . . . 24
Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 24 Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 25
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25
1. Overview 1. Overview
YANG [RFC6020] [RFC7950] is a data definition language used to define YANG [RFC6020] [RFC7950] is a data definition language used to define
the contents of a conceptual data store that allows networked devices the contents of a conceptual data store that allows networked devices
to be managed using NETCONF [RFC6241]. YANG is proving relevant to be managed using NETCONF [RFC6241]. YANG is proving relevant
beyond its initial confines, as bindings to other interfaces (e.g., beyond its initial confines, as bindings to other interfaces (e.g.,
ReST) and encodings other than XML (e.g., JSON) are being defined. ReST) 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 23 skipping to change at page 3, line 23
etf-ospf-segment-routing-extensions][I-D.ietf-ospf-ospfv3-segment-rou etf-ospf-segment-routing-extensions][I-D.ietf-ospf-ospfv3-segment-rou
ting-extensions]. It is an augmentation of the OSPF base model. ting-extensions]. It 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
module: ietf-ospf-sr
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:
+--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]
skipping to change at page 4, line 4 skipping to change at page 3, line 52
| +--rw value uint32 | +--rw value uint32
| +--rw protected? boolean | +--rw protected? boolean
+--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:areas /rt:control-plane-protocol/ospf:ospf/ospf:areas
/ospf:area/ospf:interfaces/ospf:interface/ospf:fast-reroute: /ospf:area/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/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:areas /rt:control-plane-protocol/ospf:ospf/ospf:areas
/ospf:area/ospf:interfaces/ospf:interface/ospf:database /ospf:area/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:ospfv2 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2
/ospf:body/ospf:opaque/ospf:extended-prefix-opaque /ospf:body/ospf:opaque/ospf:extended-prefix-opaque
/ospf:extended-prefix-tlv: /ospf:extended-prefix-tlv:
+--ro perfix-sid-sub-tlvs +--ro perfix-sid-sub-tlvs
+--ro prefix-sid-sub-tlv* +--ro prefix-sid-sub-tlv*
+--ro flags? bits +--ro prefix-sid-flags
+--ro mt-id? uint8 | +--ro bits* identityref
+--ro algorithm? uint8 +--ro mt-id? uint8
+--ro sid? uint32 +--ro algorithm? uint8
+--ro sid? uint32
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:areas /rt:control-plane-protocol/ospf:ospf/ospf:areas
/ospf:area/ospf:database/ospf:area-scope-lsa-type /ospf:area/ospf:database/ospf:area-scope-lsa-type
/ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque
/ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv:
+--ro perfix-sid-sub-tlvs +--ro perfix-sid-sub-tlvs
+--ro prefix-sid-sub-tlv* +--ro prefix-sid-sub-tlv*
+--ro flags? bits +--ro prefix-sid-flags
+--ro mt-id? uint8 | +--ro bits* identityref
+--ro algorithm? uint8 +--ro mt-id? uint8
+--ro sid? uint32 +--ro algorithm? uint8
+--ro sid? uint32
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:database /rt:control-plane-protocol/ospf:ospf/ospf:database
/ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa
/ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque
/ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv:
+--ro perfix-sid-sub-tlvs +--ro perfix-sid-sub-tlvs
+--ro prefix-sid-sub-tlv* +--ro prefix-sid-sub-tlv*
+--ro flags? bits +--ro prefix-sid-flags
+--ro mt-id? uint8 | +--ro bits* identityref
+--ro algorithm? uint8 +--ro mt-id? uint8
+--ro sid? uint32 +--ro algorithm? uint8
+--ro sid? uint32
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:areas /rt:control-plane-protocol/ospf:ospf/ospf:areas
/ospf:area/ospf:database/ospf:area-scope-lsa-type /ospf:area/ospf:database/ospf:area-scope-lsa-type
/ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque
/ospf:extended-link-opaque/ospf:extended-link-tlv: /ospf:extended-link-opaque/ospf:extended-link-tlv:
+--ro adj-sid-sub-tlvs +--ro adj-sid-sub-tlvs
| +--ro adj-sid-sub-tlv* | +--ro adj-sid-sub-tlv*
| +--ro flags? bits | +--ro adj-sid-flags
| +--ro mt-id? uint8 | | +--ro bits* identityref
| +--ro weight? uint8 | +--ro mt-id? uint8
| +--ro sid? uint32 | +--ro weight? uint8
| +--ro sid? uint32
+--ro lan-adj-sid-sub-tlvs +--ro lan-adj-sid-sub-tlvs
+--ro lan-adj-sid-sub-tlv* +--ro lan-adj-sid-sub-tlv*
+--ro flags? bits +--ro lan-adj-sid-flags
| +--ro bits* identityref
+--ro mt-id? uint8 +--ro mt-id? uint8
+--ro weight? uint8 +--ro weight? uint8
+--ro neighbor-router-id? yang:dotted-quad +--ro neighbor-router-id? yang:dotted-quad
+--ro sid? uint32 +--ro sid? uint32
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:areas /rt:control-plane-protocol/ospf:ospf/ospf:areas
/ospf:area/ospf:interfaces/ospf:interface/ospf:database /ospf:area/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:ospfv2 /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2
/ospf:body/ospf:opaque: /ospf:body/ospf:opaque:
+--ro extended-prefix-range-tlvs +--ro extended-prefix-range-tlvs
| +--ro extended-prefix-range-tlv* | +--ro extended-prefix-range-tlv*
| +--ro prefix-length? uint8 | +--ro prefix-length? uint8
| +--ro af? uint8 | +--ro af? uint8
| +--ro range-size? uint16 | +--ro range-size? uint16
| +--ro flags? bits | +--ro extended-prefix-range-flags
| +--ro prefix? inet:ip-prefix | | +--ro bits* identityref
| +--ro prefix? inet:ip-prefix
| +--ro perfix-sid-sub-tlvs | +--ro perfix-sid-sub-tlvs
| | +--ro prefix-sid-sub-tlv* | | +--ro prefix-sid-sub-tlv*
| | +--ro flags? bits | | +--ro prefix-sid-flags
| | +--ro mt-id? uint8 | | | +--ro bits* identityref
| | +--ro algorithm? uint8 | | +--ro mt-id? uint8
| | +--ro sid? uint32 | | +--ro algorithm? uint8
| | +--ro sid? uint32
| +--ro unknown-tlvs | +--ro unknown-tlvs
| +--ro unknown-tlv* | +--ro unknown-tlv*
| +--ro type? uint16 | +--ro type? uint16
| +--ro length? uint16 | +--ro length? uint16
| +--ro value? yang:hex-string | +--ro value? yang:hex-string
+--ro sr-algorithm-tlv +--ro sr-algorithm-tlv
| +--ro sr-algorithm* uint8 | +--ro sr-algorithm* uint8
+--ro sid-range-tlvs +--ro sid-range-tlvs
| +--ro sid-range-tlv* | +--ro sid-range-tlv*
| +--ro range-size? uint24 | +--ro range-size? uint24
skipping to change at page 6, line 8 skipping to change at page 6, line 14
| +--ro sid? uint32 | +--ro sid? uint32
+--ro srms-preference-tlv +--ro srms-preference-tlv
+--ro preference? uint8 +--ro preference? uint8
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:areas /rt:control-plane-protocol/ospf:ospf/ospf:areas
/ospf:area/ospf:database/ospf:area-scope-lsa-type /ospf:area/ospf:database/ospf:area-scope-lsa-type
/ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque:
+--ro extended-prefix-range-tlvs +--ro extended-prefix-range-tlvs
| +--ro extended-prefix-range-tlv* | +--ro extended-prefix-range-tlv*
| +--ro prefix-length? uint8 | +--ro prefix-length? uint8
| +--ro af? uint8 | +--ro af? uint8
| +--ro range-size? uint16 | +--ro range-size? uint16
| +--ro flags? bits | +--ro extended-prefix-range-flags
| +--ro prefix? inet:ip-prefix | | +--ro bits* identityref
| +--ro prefix? inet:ip-prefix
| +--ro perfix-sid-sub-tlvs | +--ro perfix-sid-sub-tlvs
| | +--ro prefix-sid-sub-tlv* | | +--ro prefix-sid-sub-tlv*
| | +--ro flags? bits | | +--ro prefix-sid-flags
| | +--ro mt-id? uint8 | | | +--ro bits* identityref
| | +--ro algorithm? uint8 | | +--ro mt-id? uint8
| | +--ro sid? uint32 | | +--ro algorithm? uint8
| | +--ro sid? uint32
| +--ro unknown-tlvs | +--ro unknown-tlvs
| +--ro unknown-tlv* | +--ro unknown-tlv*
| +--ro type? uint16 | +--ro type? uint16
| +--ro length? uint16 | +--ro length? uint16
| +--ro value? yang:hex-string | +--ro value? yang:hex-string
+--ro sr-algorithm-tlv +--ro sr-algorithm-tlv
| +--ro sr-algorithm* uint8 | +--ro sr-algorithm* uint8
+--ro sid-range-tlvs +--ro sid-range-tlvs
| +--ro sid-range-tlv* | +--ro sid-range-tlv*
| +--ro range-size? uint24 | +--ro range-size? uint24
skipping to change at page 6, line 40 skipping to change at page 6, line 48
| +--ro sid? uint32 | +--ro sid? uint32
+--ro local-block-tlvs +--ro local-block-tlvs
| +--ro local-block-tlv* | +--ro local-block-tlv*
| +--ro range-size? uint24 | +--ro range-size? uint24
| +--ro sid-sub-tlv | +--ro sid-sub-tlv
| +--ro sid? uint32 | +--ro sid? uint32
+--ro srms-preference-tlv +--ro srms-preference-tlv
+--ro preference? uint8 +--ro preference? uint8
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/ospf:ospf/ospf:database /rt:control-plane-protocol/ospf:ospf/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:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque:
/ospf:body/ospf:opaque:
+--ro extended-prefix-range-tlvs +--ro extended-prefix-range-tlvs
| +--ro extended-prefix-range-tlv* | +--ro extended-prefix-range-tlv*
| +--ro prefix-length? uint8 | +--ro prefix-length? uint8
| +--ro af? uint8 | +--ro af? uint8
| +--ro range-size? uint16 | +--ro range-size? uint16
| +--ro flags? bits | +--ro extended-prefix-range-flags
| +--ro prefix? inet:ip-prefix | | +--ro bits* identityref
| +--ro prefix? inet:ip-prefix
| +--ro perfix-sid-sub-tlvs | +--ro perfix-sid-sub-tlvs
| | +--ro prefix-sid-sub-tlv* | | +--ro prefix-sid-sub-tlv*
| | +--ro flags? bits | | +--ro prefix-sid-flags
| | +--ro mt-id? uint8 | | | +--ro bits* identityref
| | +--ro algorithm? uint8 | | +--ro mt-id? uint8
| | +--ro sid? uint32 | | +--ro algorithm? uint8
| | +--ro sid? uint32
| +--ro unknown-tlvs | +--ro unknown-tlvs
| +--ro unknown-tlv* | +--ro unknown-tlv*
| +--ro type? uint16 | +--ro type? uint16
| +--ro length? uint16 | +--ro length? uint16
| +--ro value? yang:hex-string | +--ro value? yang:hex-string
+--ro sr-algorithm-tlv +--ro sr-algorithm-tlv
| +--ro sr-algorithm* uint8 | +--ro sr-algorithm* uint8
+--ro sid-range-tlvs +--ro sid-range-tlvs
| +--ro sid-range-tlv* | +--ro sid-range-tlv*
| +--ro range-size? uint24 | +--ro range-size? uint24
skipping to change at page 7, line 30 skipping to change at page 7, line 39
+--ro local-block-tlvs +--ro local-block-tlvs
| +--ro local-block-tlv* | +--ro local-block-tlv*
| +--ro range-size? uint24 | +--ro range-size? uint24
| +--ro sid-sub-tlv | +--ro sid-sub-tlv
| +--ro sid? uint32 | +--ro sid? uint32
+--ro srms-preference-tlv +--ro srms-preference-tlv
+--ro preference? uint8 +--ro preference? uint8
4. OSPF Segment Routing YANG Module 4. OSPF Segment Routing YANG Module
<CODE BEGINS> file "ietf-ospf-sr@2019-08-07.yang" <CODE BEGINS> file "ietf-ospf-sr@2019-08-13.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 {
prefix "yang"; prefix "yang";
}
import ietf-routing { }
prefix "rt";
}
import ietf-segment-routing-common {
prefix "sr-cmn";
}
import ietf-segment-routing {
prefix "sr";
} import ietf-routing {
import ietf-ospf { prefix "rt";
prefix "ospf"; }
} import ietf-segment-routing-common {
prefix "sr-cmn";
}
import ietf-segment-routing {
prefix "sr";
}
import ietf-ospf {
prefix "ospf";
}
organization organization
"IETF LSR - Link State Routing Working Group"; "IETF LSR - Link State Routing Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/lsr/> "WG Web: <http://tools.ietf.org/wg/lsr/>
WG List: <mailto:lsr@ietf.org> WG List: <mailto:lsr@ietf.org>
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@futurewei.com> <mailto:yingzhen.qu@futurewei.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:ingwherchen@mitre.org> <mailto:ingwherchen@mitre.org>
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 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.
Copyright (c) 2017 IETF Trust and the persons identified as Copyright (c) 2017 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; This version of this YANG module is part of RFC XXXX;
see the RFC itself for full legal notices."; see the RFC itself for full legal notices.";
reference "RFC XXXX"; reference "RFC XXXX";
revision 2019-08-07 { revision 2019-08-13 {
description description
""; "";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
} }
revision 2019-07-07 { revision 2019-08-07 {
description description
""; "";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
} }
revision 2019-03-05 { revision 2019-07-07 {
description description
""; "";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
} }
revision 2018-06-25 { revision 2019-03-05 {
description description
""; "";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
} }
revision 2018-03-03 { revision 2018-06-25 {
description description
"* Remove OSPF instance."; "";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
} }
revision 2017-12-28 { revision 2018-03-03 {
description description
""; "* Remove OSPF instance.";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
} }
revision 2017-07-02 { revision 2017-12-28 {
description description
"* Implement NMDA model. "";
* Add local-block-tlvs and srms-preference-tlv. reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
}
* Remove sid-binding-sub-tlvs."; revision 2017-07-02 {
reference description
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "* 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-12 { 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.";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
} }
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 Segment Routing."; "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
} }
revision 2016-03-20 { revision 2016-03-20 {
description description
"* Remove routing-instance."; "* Remove routing-instance.";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "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 { revision 2015-10-19 {
description description
"* Author list update. "* Add per-protocol SRGB support.
* Editorial changes."; * Editorial changes.";
reference reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing."; "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 { revision 2015-09-02 {
description description
"Topology-Independent Loop-Free Alternate (TI-LFA) "* Author list update.
computation using segment routing."; * Editorial changes.";
} reference
"RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
}
typedef uint24 { revision 2015-07-06 {
type uint32 { description
range "0 .. 16777215"; "Initial revision.";
} reference
description "RFC XXXX: A YANG Data Model for OSPF Segment Routing.";
"24-bit unsigned integer."; }
}
/* Groupings */ feature ti-lfa {
grouping sid-sub-tlv { description
description "SID/Label sub-TLV grouping."; "Topology-Independent Loop-Free Alternate (TI-LFA)
container sid-sub-tlv { computation using segment routing.";
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 { identity prefix-sid-bit {
description "Prefix Segment ID (SID) sub-TLVs."; description
container perfix-sid-sub-tlvs{ "Base identity for prefix sid sub-tlv bits.";
description "Prefix SID sub-TLV."; }
list prefix-sid-sub-tlv {
description "Prefix SID sub-TLV.";
leaf flags {
type bits {
bit NP {
position 1;
description
"No-PHP flag.";
}
bit M {
position 2;
description
"Mapping server flag.";
}
bit E {
position 3;
description
"Explicit-NULL flag.";
}
bit V {
position 4;
description
"Value/Index flag.";
}
bit L {
position 5;
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 extended-prefix-range-tlvs { identity np-bit {
description "Extended prefix range TLV grouping."; base prefix-sid-bit;
description
"No-PHP flag.";
}
container extended-prefix-range-tlvs { identity m-bit {
description "The list of range of prefixes."; base prefix-sid-bit;
list extended-prefix-range-tlv { //type=2? description
description "The range of prefixes."; "Mapping server flag.";
leaf prefix-length { }
type uint8; identity e-bit {
description "Length of prefix in bits."; base prefix-sid-bit;
} description
leaf af { "Explicit-NULL flag.";
type uint8; }
description "Address family for the prefix.";
}
leaf range-size {
type uint16;
description "The number of prefixes covered by the
advertisement.";
}
leaf flags {
type bits {
bit IA {
position 0;
description
"Inter-Area flag.";
}
}
description "Flags.";
}
leaf prefix {
type inet:ip-prefix;
description "Address prefix.";
}
uses prefix-sid-sub-tlvs;
uses ospf:unknown-tlvs;
}
}
}
grouping sr-algorithm-tlv { identity v-bit {
description "SR algorithm TLV grouping."; base prefix-sid-bit;
container sr-algorithm-tlv { description
description "All SR algorithm TLVs."; "Value/Index flag.";
leaf-list sr-algorithm { }
type uint8;
description
"The Segment Routing (SR) algorithms that the router is
currently using.";
}
}
}
grouping sid-range-tlvs { identity l-bit {
description "SID Range TLV grouping."; base prefix-sid-bit;
container sid-range-tlvs { description
description "List of SID range TLVs."; "Local flag.";
list sid-range-tlv { }
description "SID range TLV.";
leaf range-size {
type uint24;
description "The SID range.";
}
uses sid-sub-tlv;
}
}
}
grouping local-block-tlvs { identity extended-prefix-range-bit {
description "The SR local block TLV contains the description
range of labels reserved for local SIDs."; "Base identity for extended prefix range TLV bits.";
container local-block-tlvs { }
description "List of SRLB TLVs.";
list local-block-tlv {
description "SRLB TLV.";
leaf range-size {
type uint24;
description "The SID range.";
}
uses sid-sub-tlv;
}
}
}
grouping srms-preference-tlv { identity ia-bit {
description "The SRMS preference TLV is used to advertise base extended-prefix-range-bit;
a preference associated with the node that acts description
as an SR Mapping Server."; "Inter-Area flag. If set, advertisement is of inter-area type.";
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 */ identity adj-sid-bit {
augment "/rt:routing/rt:control-plane-protocols" description
+ "/rt:control-plane-protocol/ospf:ospf" { "Base identity for adj sid sub-tlv bits.";
}
when "../rt:type = 'ospf:ospfv2' or " identity b-bit {
+ "../rt:type = 'ospf:ospfv3'" { base adj-sid-bit;
description description
"This augments the OSPF routing protocol when used."; "Backup flag.";
} }
description
"This augments the OSPF protocol configuration
with segment routing.";
uses sr:sr-controlplane;
container protocol-srgb {
if-feature sr:protocol-srgb;
uses sr-cmn:srgb;
description
"Per-protocol SRGB.";
}
}
augment "/rt:routing/rt:control-plane-protocols/" identity vi-bit {
+ "rt:control-plane-protocol/ospf:ospf/" base adj-sid-bit;
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { description
when "../../../../../rt:type = 'ospf:ospfv2' or " "Value/Index flag.";
+ "../../../../../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; identity lo-bit {
} base adj-sid-bit;
description
"Local/Global flag.";
}
augment "/rt:routing/rt:control-plane-protocols/" identity g-bit {
+ "rt:control-plane-protocol/ospf:ospf/" base adj-sid-bit;
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" description
+ "ospf:fast-reroute" { "Group flag.";
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 { identity p-bit {
if-feature ti-lfa; base adj-sid-bit;
leaf enable { description
type boolean; "Persistent flag.";
description }
"Enables TI-LFA computation.";
}
description
"Topology Independent Loop Free Alternate
(TI-LFA) support.";
}
}
/* Database */ typedef uint24 {
augment "/rt:routing/" type uint32 {
+ "rt:control-plane-protocols/rt:control-plane-protocol/" range "0 .. 16777215";
+ "ospf:ospf/ospf:areas/ospf:area/" }
+ "ospf:interfaces/ospf:interface/ospf:database/" description
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" "24-bit unsigned integer.";
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" }
+ "ospf:ospfv2/ospf:body/ospf:opaque/"
+ "ospf:extended-prefix-opaque/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;
}
augment "/rt:routing/" /* Groupings */
+ "rt:control-plane-protocols/rt:control-plane-protocol/" grouping sid-sub-tlv {
+ "ospf:ospf/ospf:areas/" description "SID/Label sub-TLV grouping.";
+ "ospf:area/ospf:database/" container sid-sub-tlv {
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" description
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" "Used to advertise the SID/Label associated with a
+ "ospf:ospfv2/ospf:body/ospf:opaque/" prefix or adjacency.";
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { leaf sid {
when "../../../../../../../../../../../../" type uint32;
+ "rt:type = 'ospf:ospfv2'" { description
description "Segment Identifier (SID) - A 20 bit label or
"This augmentation is only valid for OSPFv2."; 32 bit SID.";
} }
description }
"SR specific TLVs for OSPFv2 extended prefix TLV }
in type 10 opaque LSA.";
uses prefix-sid-sub-tlvs;
}
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/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-opaque/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;
}
augment "/rt:routing/" grouping prefix-sid-sub-tlvs {
+ "rt:control-plane-protocols/rt:control-plane-protocol/" description "Prefix Segment ID (SID) sub-TLVs.";
+ "ospf:ospf/ospf:areas/" container perfix-sid-sub-tlvs{
+ "ospf:area/ospf:database/" description "Prefix SID sub-TLV.";
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" list prefix-sid-sub-tlv {
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" description "Prefix SID sub-TLV.";
+ "ospf:ospfv2/ospf:body/ospf:opaque/" container prefix-sid-flags {
+ "ospf:extended-link-opaque/ospf:extended-link-tlv" { leaf-list bits {
when "../../../../../../../../../../../../" type identityref {
+ "rt:type = 'ospf:ospfv2'" { base prefix-sid-bit;
description }
"This augmentation is only valid for OSPFv2."; description
} "Prefix SID Sub-TLV flag bits list.";
description }
"SR specific TLVs for OSPFv2 extended link TLV description "Segment Identifier (SID) Flags.";
in type 10 opaque LSA."; }
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.";
}
}
}
}
container adj-sid-sub-tlvs { grouping extended-prefix-range-tlvs {
description "Adjacency SID optional sub-TLVs."; description "Extended prefix range TLV grouping.";
list adj-sid-sub-tlv {
description "List of Adjacency SID sub-TLVs.";
leaf flags {
type bits {
bit B {
position 0;
description
"Backup flag.";
}
bit V {
position 1;
description
"Value/Index flag.";
}
bit L {
position 2;
description
"Local/Global flag.";
}
bit G {
position 3;
description
"Group flag.";
}
bit P {
position 4;
description
"Persistent 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 { container extended-prefix-range-tlvs {
description "LAN Adjacency SID optional sub-TLVs."; description "The list of range of prefixes.";
list lan-adj-sid-sub-tlv { list extended-prefix-range-tlv { //type=2?
description "List of LAN adjacency SID sub-TLVs."; description "The range of prefixes.";
leaf flags { leaf prefix-length {
type bits { type uint8;
bit B { description "Length of prefix in bits.";
position 0; }
description leaf af {
"Backup flag."; type uint8;
} description "Address family for the prefix.";
bit V { }
position 1; leaf range-size {
description type uint16;
"Value/Index flag."; description "The number of prefixes covered by the
} advertisement.";
bit L { }
position 2; container extended-prefix-range-flags {
description leaf-list bits {
"Local/Global flag."; type identityref {
} base extended-prefix-range-bit;
bit G { }
position 3; description "Extended prefix range TLV flags list.";
description }
"Group flag."; description "Extended Prefix Range TLV flags.";
} }
bit P { leaf prefix {
position 4; type inet:ip-prefix;
description description "Address prefix.";
"Persistent flag."; }
} uses prefix-sid-sub-tlvs;
} uses ospf:unknown-tlvs;
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/" grouping sr-algorithm-tlv {
+ "rt:control-plane-protocols/rt:control-plane-protocol/" description "SR algorithm TLV grouping.";
+ "ospf:ospf/ospf:areas/ospf:area/" container sr-algorithm-tlv {
+ "ospf:interfaces/ospf:interface/ospf:database/" description "All SR algorithm TLVs.";
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" leaf-list sr-algorithm {
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" type uint8;
+ "ospf:ospfv2/ospf:body/ospf:opaque" { description
when "../../../../../../../../../../../../" "The Segment Routing (SR) algorithms that the router is
+ "rt:type = 'ospf:ospfv2'" { currently using.";
description }
"This augmentation is only valid for OSPFv2."; }
} }
description grouping sid-range-tlvs {
"SR specific TLVs for OSPFv2 type 9 opaque LSA."; 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 uint24;
description "The SID range.";
}
uses sid-sub-tlv;
}
}
}
uses extended-prefix-range-tlvs; grouping local-block-tlvs {
uses sr-algorithm-tlv; description "The SR local block TLV contains the
uses sid-range-tlvs; range of labels reserved for local SIDs.";
uses local-block-tlvs; container local-block-tlvs {
uses srms-preference-tlv; description "List of SRLB TLVs.";
} list local-block-tlv {
description "SRLB TLV.";
leaf range-size {
type uint24;
description "The SID range.";
}
uses sid-sub-tlv;
}
}
}
augment "/rt:routing/" grouping srms-preference-tlv {
+ "rt:control-plane-protocols/rt:control-plane-protocol/" description "The SRMS preference TLV is used to advertise
+ "ospf:ospf/ospf:areas/" a preference associated with the node that acts
+ "ospf:area/ospf:database/" as an SR Mapping Server.";
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" container srms-preference-tlv {
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" description "SRMS Preference TLV.";
+ "ospf:ospfv2/ospf:body/ospf:opaque" { leaf preference {
when "../../../../../../../../../../" type uint8 {
+ "rt:type = 'ospf:ospfv2'" { range "0 .. 255";
description }
"This augmentation is only valid for OSPFv2."; description "SRMS preference TLV, vlaue from 0 to 255.";
} }
}
}
description /* Configuration */
"SR specific TLVs for OSPFv2 type 10 opaque LSA."; augment "/rt:routing/rt:control-plane-protocols"
+ "/rt:control-plane-protocol/ospf:ospf" {
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:sr-controlplane;
container protocol-srgb {
if-feature sr:protocol-srgb;
uses sr-cmn:srgb;
description
"Per-protocol SRGB.";
}
}
uses extended-prefix-range-tlvs; augment "/rt:routing/rt:control-plane-protocols/"
uses sr-algorithm-tlv; + "rt:control-plane-protocol/ospf:ospf/"
uses sid-range-tlvs; + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" {
uses local-block-tlvs; when "../../../../../rt:type = 'ospf:ospfv2' or "
uses srms-preference-tlv; + "../../../../../rt:type = 'ospf:ospfv3'" {
} description
"This augments the OSPF interface configuration
when used.";
}
description
"This augments the OSPF protocol interface
configuration with segment routing.";
augment "/rt:routing/" uses sr:igp-interface;
+ "rt:control-plane-protocols/rt:control-plane-protocol/" }
+ "ospf:ospf/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 augment "/rt:routing/rt:control-plane-protocols/"
"This augmentation is only valid for OSPFv2."; + "rt:control-plane-protocol/ospf:ospf/"
} + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/"
description + "ospf:fast-reroute" {
"SR specific TLVs for OSPFv2 type 11 opaque LSA."; 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.";
uses extended-prefix-range-tlvs; container ti-lfa {
uses sr-algorithm-tlv; if-feature ti-lfa;
uses sid-range-tlvs; leaf enable {
uses local-block-tlvs; type boolean;
uses srms-preference-tlv; description
} "Enables TI-LFA computation.";
} }
<CODE ENDS> description
"Topology Independent Loop Free Alternate
(TI-LFA) support.";
}
}
/* Database */
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/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-opaque/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;
}
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/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-opaque/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;
}
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/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-opaque/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;
}
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/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-opaque/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.";
container adj-sid-flags {
leaf-list bits {
type identityref {
base adj-sid-bit;
}
description "Adj sid sub-tlv flags list.";
}
description "Adj-sid sub-tlv 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.";
container lan-adj-sid-flags {
leaf-list bits {
type identityref {
base adj-sid-bit;
}
description "LAN adj sid sub-tlv flags list.";
}
description "LAN adj-sid sub-tlv 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/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/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;
uses local-block-tlvs;
uses srms-preference-tlv;
}
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/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;
uses local-block-tlvs;
uses srms-preference-tlv;
}
augment "/rt:routing/"
+ "rt:control-plane-protocols/rt:control-plane-protocol/"
+ "ospf:ospf/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;
uses local-block-tlvs;
uses srms-preference-tlv;
}
}
<CODE ENDS>
5. Security Considerations 5. 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].
6. Acknowledgements 6. Acknowledgements
skipping to change at page 22, line 14 skipping to change at page 22, line 48
[I-D.ietf-ospf-segment-routing-extensions] [I-D.ietf-ospf-segment-routing-extensions]
Psenak, P., Previdi, S., Filsfils, C., Gredler, H., Psenak, P., Previdi, S., Filsfils, C., Gredler, H.,
Shakir, R., Henderickx, W., and J. Tantsura, "OSPF Shakir, R., Henderickx, W., and J. Tantsura, "OSPF
Extensions for Segment Routing", draft-ietf-ospf-segment- Extensions for Segment Routing", draft-ietf-ospf-segment-
routing-extensions-27 (work in progress), December 2018. routing-extensions-27 (work in progress), December 2018.
[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-25 (work in progress), August 2019. yang-26 (work in progress), August 2019.
[I-D.ietf-spring-sr-yang] [I-D.ietf-spring-sr-yang]
Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J.
Tantsura, "YANG Data Model for Segment Routing", draft- Tantsura, "YANG Data Model for Segment Routing", draft-
ietf-spring-sr-yang-13 (work in progress), July 2019. ietf-spring-sr-yang-13 (work in progress), July 2019.
[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,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
 End of changes. 77 change blocks. 
669 lines changed or deleted 701 lines changed or added

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