< draft-raza-spring-srv6-yang-03.txt   draft-raza-spring-srv6-yang-04.txt >
SPRING Working Group K. Raza SPRING Working Group K. Raza
Internet-Draft J. Rajamanickam Internet-Draft J. Rajamanickam
Intended status: Standards Track Cisco Systems Intended status: Standards Track Cisco Systems
Expires: December 1, 2019 Expires: January 9, 2020
X. Liu X. Liu
Volta Networks Volta Networks
Z. Hu Z. Hu
Huawei Technologies Huawei Technologies
I. Hussain I. Hussain
Infinera Corporation Infinera Corporation
H. Shah H. Shah
Ciena Corporation Ciena Corporation
D. Voyer D. Voyer
Bell Canada Bell Canada
H. Elmalky H. Elmalky
Ericsson
S. Matsushima S. Matsushima
K. Horiba K. Horiba
SoftBank SoftBank
A. AbdelSalam A. AbdelSalam
Cisco Systems Cisco Systems
May 30, 2019 July 8, 2019
YANG Data Model for SRv6 Base and Static YANG Data Model for SRv6 Base and Static
draft-raza-spring-srv6-yang-03 draft-raza-spring-srv6-yang-04
Abstract Abstract
This document describes a YANG data model for Segment Routing IPv6 This document describes a YANG data model for Segment Routing IPv6
(SRv6) base. The model serves as a base framework for configuring (SRv6) base. The model serves as a base framework for configuring
and managing an SRv6 subsystem and expected to be augmented by other and managing an SRv6 subsystem and expected to be augmented by other
SRv6 technology models accordingly. Additionally, this document also SRv6 technology models accordingly. Additionally, this document also
specifies the model for the SRv6 Static application. specifies the model for the SRv6 Static application.
The YANG modules in this document conform to the Network Management The YANG modules in this document conform to the Network Management
skipping to change at page 2, line 10 skipping to change at page 2, line 10
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 December 1, 2019. This Internet-Draft will expire on January 9, 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 40 skipping to change at page 2, line 40
2. Specification of Requirements . . . . . . . . . . . . . . . . 3 2. Specification of Requirements . . . . . . . . . . . . . . . . 3
3. YANG Model . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. YANG Model . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2. SRv6 Types . . . . . . . . . . . . . . . . . . . . . . . 4 3.2. SRv6 Types . . . . . . . . . . . . . . . . . . . . . . . 4
3.3. SRv6 Base . . . . . . . . . . . . . . . . . . . . . . . . 5 3.3. SRv6 Base . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3.1. Configuration . . . . . . . . . . . . . . . . . . . . 5 3.3.1. Configuration . . . . . . . . . . . . . . . . . . . . 5
3.3.2. State . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3.2. State . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3.3. Notification . . . . . . . . . . . . . . . . . . . . 8 3.3.3. Notification . . . . . . . . . . . . . . . . . . . . 8
3.4. SRv6 Static . . . . . . . . . . . . . . . . . . . . . . . 9 3.4. SRv6 Static . . . . . . . . . . . . . . . . . . . . . . . 9
3.4.1. Configuration . . . . . . . . . . . . . . . . . . . . 9 3.4.1. Configuration . . . . . . . . . . . . . . . . . . . . 9
3.4.2. State . . . . . . . . . . . . . . . . . . . . . . . . 13 3.4.2. State . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4.3. Notification . . . . . . . . . . . . . . . . . . . . 13 3.4.3. Notification . . . . . . . . . . . . . . . . . . . . 15
4. Pending Items . . . . . . . . . . . . . . . . . . . . . . . . 14 4. Pending Items . . . . . . . . . . . . . . . . . . . . . . . . 15
5. YANG Specification . . . . . . . . . . . . . . . . . . . . . 14 5. YANG Specification . . . . . . . . . . . . . . . . . . . . . 15
5.1. SRv6 Types . . . . . . . . . . . . . . . . . . . . . . . 14 5.1. SRv6 Types . . . . . . . . . . . . . . . . . . . . . . . 15
5.2. SRv6 Base . . . . . . . . . . . . . . . . . . . . . . . . 27 5.2. SRv6 Base . . . . . . . . . . . . . . . . . . . . . . . . 33
5.3. SRv6 Static . . . . . . . . . . . . . . . . . . . . . . . 41 5.3. SRv6 Static . . . . . . . . . . . . . . . . . . . . . . . 48
6. Security Considerations . . . . . . . . . . . . . . . . . . . 58 6. Security Considerations . . . . . . . . . . . . . . . . . . . 70
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 59 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 71
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 60 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 71
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 60 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 72
9.1. Normative References . . . . . . . . . . . . . . . . . . 60 9.1. Normative References . . . . . . . . . . . . . . . . . . 72
9.2. Informative References . . . . . . . . . . . . . . . . . 62 9.2. Informative References . . . . . . . . . . . . . . . . . 73
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 63 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 74
1. Introduction 1. Introduction
The Network Configuration Protocol (NETCONF) [RFC6241] is one of the The Network Configuration Protocol (NETCONF) [RFC6241] is one of the
network management protocols that defines mechanisms to manage network management protocols that defines mechanisms to manage
network devices. YANG [RFC6020] is a modular language that network devices. YANG [RFC6020] is a modular language that
represents data structures in an XML tree format, and is used as a represents data structures in an XML tree format, and is used as a
data modeling language for the NETCONF. data modeling language for the NETCONF.
Segment Routing (SR), as defined in [RFC8402], leverages the source Segment Routing (SR), as defined in [RFC8402], leverages the source
skipping to change at page 4, line 52 skipping to change at page 4, line 52
o srv6-func-opcode-unreserved: Typedef for "unreserved" o srv6-func-opcode-unreserved: Typedef for "unreserved"
(allocatable) FUNC opcode (allocatable) FUNC opcode
o srv6-func-opcode-reserved-type: Enum (list) of "reserved" FUNC o srv6-func-opcode-reserved-type: Enum (list) of "reserved" FUNC
opcode opcode
o srv6-endpoint-type: SRv6 Endpoint behaviors o srv6-endpoint-type: SRv6 Endpoint behaviors
[I-D.ietf-spring-srv6-network-programming] identity type [I-D.ietf-spring-srv6-network-programming] identity type
o srv6-transit-type: SRv6 Transit behavior types o srv6-transit-type: SRv6 Transit behavior types
[I-D.ietf-spring-srv6-network-programming] enumeration [I-D.ietf-spring-srv6-network-programming] identity type
o srv6-security-rule-type: SRv6 Security rule type o srv6-security-type: SRv6 Security rule type
[I-D.ietf-spring-srv6-network-programming] enumeration [I-D.ietf-spring-srv6-network-programming] identity type
o srv6-counter-type: SRv6 Counter type o srv6-counter-type: SRv6 Counter type
[I-D.ietf-spring-srv6-network-programming] enumeration [I-D.ietf-spring-srv6-network-programming] identity type
The corresponding YANG specification for this module is captured in The corresponding YANG specification for this module is captured in
Section 5.1. Section 5.1.
3.3. SRv6 Base 3.3. SRv6 Base
The base SRv6 model is specified in ietf-srv6-base module. This The base SRv6 model is specified in ietf-srv6-base module. This
module augments "/rt:routing" and specifies the configuration, module augments "/rt:routing" and specifies the configuration,
operational state, and notification events that are required to operational state, and notification events that are required to
manage the base SRv6. manage the base SRv6.
skipping to change at page 6, line 15 skipping to change at page 6, line 15
augment /rt:routing: augment /rt:routing:
+--rw srv6 +--rw srv6
+--rw enable? boolean +--rw enable? boolean
+--rw encapsulation +--rw encapsulation
| +--rw source-address? inet:ipv6-address | +--rw source-address? inet:ipv6-address
| +--rw ip-ttl-propagation? boolean | +--rw ip-ttl-propagation? boolean
+--rw locators +--rw locators
+--rw locator* [name] +--rw locator* [name]
+--rw name string +--rw name string
+--rw enable? boolean +--rw enable? boolean
+--rw is-default boolean
+--rw prefix +--rw prefix
+--rw address inet:ipv6-address | +--rw address inet:ipv6-address
+--rw length srv6-types:srv6-locator-len | +--rw length srv6-types:srv6-locator-len
+--rw algorithm? uint32
Figure 1: SRv6 Base - Config Tree Figure 1: SRv6 Base - Config Tree
3.3.2. State 3.3.2. State
As per NMDA model, the state related to configuration items specified As per NMDA model, the state related to configuration items specified
in above section Section 3.3.1 can be retrieved from the same tree. in above section Section 3.3.1 can be retrieved from the same tree.
This section defines other operational state items related to SRv6 This section defines other operational state items related to SRv6
base. base.
skipping to change at page 7, line 14 skipping to change at page 7, line 14
Following is a simplified graphical tree representation of the data Following is a simplified graphical tree representation of the data
model for the SRv6 operational state: model for the SRv6 operational state:
module: ietf-srv6-base module: ietf-srv6-base
augment /rt:routing: augment /rt:routing:
+--rw srv6 +--rw srv6
+--rw locators +--rw locators
| +--rw locator* [name] | +--rw locator* [name]
| +--rw name string | +--rw name string
| +--rw enable? boolean
| +--rw prefix
| | +--rw address inet:ipv6-address
| | +--rw length srv6-types:srv6-locator-len
| +--rw algorithm? uint32
| +--ro operational-status? srv6-types:srv6-status-type | +--ro operational-status? srv6-types:srv6-status-type
| +--ro is-in-address-conflict? boolean | +--ro is-in-address-conflict? boolean
+--ro node-capabilities +--ro node-capabilities
| +--ro end-behavior* [type] | +--ro end-behavior* [type]
| | +--ro type identityref | | +--ro type identityref
| | +--ro supported boolean | | +--ro supported boolean
| +--ro transit-behavior* [type] | +--ro transit-behavior* [type]
| | +--ro type srv6-types:srv6-transit-type | | +--ro type identityref
| | +--ro supported boolean | | +--ro supported boolean
| +--ro signaled-parameters | +--ro signaled-parameters
| | +--ro max-sl? uint8 | | +--ro max-sl? uint8
| | +--ro max-end-pop-srh? uint8 | | +--ro max-end-pop-srh? uint8
| | +--ro max-t_insert? uint8 | | +--ro max-t_insert? uint8
| | +--ro max-t_encap? uint8 | | +--ro max-t_encap? uint8
| | +--ro max-end_d? uint8 | | +--ro max-end_d? uint8
| +--ro security-rule* [type] | +--ro security-rule* [type]
| | +--ro type srv6-types:srv6-security-rule-type | | +--ro type identityref
| | +--ro supported boolean | | +--ro supported boolean
| +--ro counters* [type] | +--ro counters* [type]
| +--ro type srv6-types:srv6-counter-type | +--ro type identityref
| +--ro supported boolean | +--ro supported boolean
+--ro local-sids +--ro local-sids
+--ro counters +--ro counters
| +--ro cnt3 | +--ro cnt-3
| +--ro in-pkts? yang:counter64 | +--ro in-pkts? yang:counter64
| +--ro in-octets? yang:counter64 | +--ro in-octets? yang:counter64
+--ro local-sid* [sid] +--ro local-sid* [sid]
+--ro sid srv6-types:srv6-sid +--ro sid srv6-types:srv6-sid
+--ro locator-ref? -> /rt:routing/srv6:srv6/locators/locator/name +--ro locator? -> /rt:routing/srv6:srv6/locators/locator/name
+--ro is-reserved? boolean +--ro is-reserved? boolean
+--ro end-behavior-type? identityref +--ro end-behavior-type? identityref
+--ro alloc-type? srv6-types:sid-alloc-type +--ro alloc-type? srv6-types:sid-alloc-type
+--ro owner* [type instance] +--ro owner* [type instance]
| +--ro type identityref | +--ro type identityref
| +--ro instance string | +--ro instance string
| +--ro is-winner? boolean | +--ro is-winner? boolean
+--ro forwarding +--ro forwarding
| +--ro is-installed? boolean | +--ro is-installed? boolean
| +--ro next-hop-type? srv6-types:srv6-nexthop-type | +--ro next-hop-type? srv6-types:srv6-nexthop-type
skipping to change at page 8, line 24 skipping to change at page 8, line 29
| | +--ro role? enumeration | | +--ro role? enumeration
| | +--ro backup-path-index? uint8 | | +--ro backup-path-index? uint8
| +--ro (encap-type)? | +--ro (encap-type)?
| +--:(srv6) | +--:(srv6)
| | +--ro out-sid* [sid] | | +--ro out-sid* [sid]
| | +--ro sid srv6-types:srv6-sid | | +--ro sid srv6-types:srv6-sid
| +--:(mpls) | +--:(mpls)
| +--ro out-label* [label] | +--ro out-label* [label]
| +--ro label rt-types:mpls-label | +--ro label rt-types:mpls-label
+--ro counters +--ro counters
+--ro cnt1 +--ro cnt-1
+--ro in-pkts? yang:counter64 +--ro in-pkts? yang:counter64
+--ro in-octets? yang:counter64 +--ro in-octets? yang:counter64
Figure 2: SRv6 Base - State Tree Figure 2: SRv6 Base - State Tree
3.3.3. Notification 3.3.3. Notification
This model defines a list of notifications to inform an operator of This model defines a list of notifications to inform an operator of
important events detected during the SRv6 operation. These events important events detected during the SRv6 operation. These events
include events related to: include events related to:
o locator operational state changes o locator operational state changes
o local-SID collision event o local-SID collision event
Following is a simplified graphical tree representation of the data Following is a simplified graphical tree representation of the data
model for SRv6 notifications: model for SRv6 notifications:
module: ietf-srv6-base
notifications: notifications:
+---n srv6-locator-status-event +---n srv6-locator-status-event
| +--ro operational-status? srv6-types:srv6-status-type | +--ro operational-status? srv6-types:srv6-status-type
| +--ro locator-ref? -> /rt:routing/srv6:srv6/locators/locator/name | +--ro locator? -> /rt:routing/srv6:srv6/locators/locator/name
+---n srv6-sid-collision-event +---n srv6-sid-collision-event
+--ro sid? srv6-types:srv6-sid +--ro sid? srv6-types:srv6-sid
+--ro existing +--ro existing
| +--ro end-behavior-type? identityref | +--ro end-behavior-type? identityref
+--ro requested +--ro requested
+--ro end-behavior-type? identityref +--ro end-behavior-type? identityref
Figure 3: SRv6 Base - Notification Tree Figure 3: SRv6 Base - Notification Tree
3.4. SRv6 Static 3.4. SRv6 Static
skipping to change at page 10, line 41 skipping to change at page 10, line 37
augment /rt:routing/srv6:srv6/srv6:locators/srv6:locator: augment /rt:routing/srv6:srv6/srv6:locators/srv6:locator:
+--rw static +--rw static
+--rw local-sids +--rw local-sids
+--rw sid* [opcode] +--rw sid* [opcode]
+--rw opcode srv6-types:srv6-func-opcode-unreserved +--rw opcode srv6-types:srv6-func-opcode-unreserved
+--rw end-behavior-type identityref +--rw end-behavior-type identityref
+--rw end +--rw end
+--rw end_psp +--rw end_psp
+--rw end_usp +--rw end_usp
+--rw end_psp_usp +--rw end_psp_usp
+--rw end_usd
+--rw end_psp_usd
+--rw end_usp_usd
+--rw end_psp_usp_usd
+--rw end-t +--rw end-t
| +--rw lookup-table-ipv6 srv6-types:table-id | +--rw lookup-table-ipv6 srv6-types:table-id
+--rw end-t_psp +--rw end-t_psp
| +--rw lookup-table-ipv6 srv6-types:table-id | +--rw lookup-table-ipv6 srv6-types:table-id
+--rw end-t_usp +--rw end-t_usp
| +--rw lookup-table-ipv6 srv6-types:table-id | +--rw lookup-table-ipv6 srv6-types:table-id
+--rw end-t_psp_usp +--rw end-t_psp_usp
| +--rw lookup-table-ipv6 srv6-types:table-id | +--rw lookup-table-ipv6 srv6-types:table-id
+--rw end-t_usd
| +--rw lookup-table-ipv6 srv6-types:table-id
+--rw end-t_psp_usd
| +--rw lookup-table-ipv6 srv6-types:table-id
+--rw end-t_usp_usd
| +--rw lookup-table-ipv6 srv6-types:table-id
+--rw end-t_psp_usp_usd
| +--rw lookup-table-ipv6 srv6-types:table-id
+--rw end-x +--rw end-x
| +--rw protected? boolean | +--rw protected? boolean
| +--rw paths | +--rw paths
| +--rw path* [path-index] | +--rw path* [path-index]
| +--rw path-index uint8 | +--rw path-index uint8
| +--rw interface? if:interface-ref | +--rw interface? if:interface-ref
| +--rw next-hop? inet:ipv6-address | +--rw next-hop? inet:ipv6-address
| +--rw weight? uint32 | +--rw weight? uint32
| +--rw role? enumeration | +--rw role? enumeration
| +--rw backup-path-index? uint8 | +--rw backup-path-index? uint8
skipping to change at page 12, line 6 skipping to change at page 12, line 14
| +--rw path* [path-index] | +--rw path* [path-index]
| +--rw path-index uint8 | +--rw path-index uint8
| +--rw interface? if:interface-ref | +--rw interface? if:interface-ref
| +--rw next-hop? inet:ipv6-address | +--rw next-hop? inet:ipv6-address
| +--rw weight? uint32 | +--rw weight? uint32
| +--rw role? enumeration | +--rw role? enumeration
| +--rw backup-path-index? uint8 | +--rw backup-path-index? uint8
| +--rw encap | +--rw encap
| +--rw out-sid* [sid] | +--rw out-sid* [sid]
| +--rw sid srv6-types:srv6-sid | +--rw sid srv6-types:srv6-sid
+--rw end-b6 +--rw end-x_usd
| +--rw protected? boolean
| +--rw paths
| +--rw path* [path-index]
| +--rw path-index uint8
| +--rw interface? if:interface-ref
| +--rw next-hop? inet:ipv6-address
| +--rw weight? uint32
| +--rw role? enumeration
| +--rw backup-path-index? uint8
| +--rw encap
| +--rw out-sid* [sid]
| +--rw sid srv6-types:srv6-sid
+--rw end-x_psp_usd
| +--rw protected? boolean
| +--rw paths
| +--rw path* [path-index]
| +--rw path-index uint8
| +--rw interface? if:interface-ref
| +--rw next-hop? inet:ipv6-address
| +--rw weight? uint32
| +--rw role? enumeration
| +--rw backup-path-index? uint8
| +--rw encap
| +--rw out-sid* [sid]
| +--rw sid srv6-types:srv6-sid
+--rw end-x_usp_usd
| +--rw protected? boolean
| +--rw paths
| +--rw path* [path-index]
| +--rw path-index uint8
| +--rw interface? if:interface-ref
| +--rw next-hop? inet:ipv6-address
| +--rw weight? uint32
| +--rw role? enumeration
| +--rw backup-path-index? uint8
| +--rw encap
| +--rw out-sid* [sid]
| +--rw sid srv6-types:srv6-sid
+--rw end-x_psp_usp_usd
| +--rw protected? boolean
| +--rw paths
| +--rw path* [path-index]
| +--rw path-index uint8
| +--rw interface? if:interface-ref
| +--rw next-hop? inet:ipv6-address
| +--rw weight? uint32
| +--rw role? enumeration
| +--rw backup-path-index? uint8
| +--rw encap
| +--rw out-sid* [sid]
| +--rw sid srv6-types:srv6-sid
+--rw end-b6-insert
| +--rw policy-name string | +--rw policy-name string
| +--rw paths | +--rw paths
| +--rw path* [path-index] | +--rw path* [path-index]
| +--rw path-index uint8 | +--rw path-index uint8
| +--rw interface? if:interface-ref | +--rw interface? if:interface-ref
| +--rw next-hop? inet:ipv6-address | +--rw next-hop? inet:ipv6-address
| +--rw weight? uint32 | +--rw weight? uint32
| +--rw role? enumeration | +--rw role? enumeration
| +--rw backup-path-index? uint8 | +--rw backup-path-index? uint8
| +--rw encap | +--rw encap
skipping to change at page 14, line 37 skipping to change at page 15, line 49
5.1. SRv6 Types 5.1. SRv6 Types
This YANG module imports types defined in [RFC6991]. This YANG module imports types defined in [RFC6991].
Moreover, the module models behaviors defined in Moreover, the module models behaviors defined in
[I-D.ietf-spring-srv6-network-programming], [I-D.ietf-spring-srv6-network-programming],
[I-D.xuclad-spring-sr-service-chaining], and [I-D.xuclad-spring-sr-service-chaining], and
[I-D.ietf-dmm-srv6-mobile-uplane]. [I-D.ietf-dmm-srv6-mobile-uplane].
<CODE BEGINS> file "ietf-srv6-types@2018-10-22.yang" --> <CODE BEGINS> file "ietf-srv6-types@2019-07-08.yang" -->
// RFC Editor: replace the above date with the date of
// publication and remove this note.
module ietf-srv6-types { module ietf-srv6-types {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-srv6-types"; namespace "urn:ietf:params:xml:ns:yang:ietf-srv6-types";
prefix srv6-types; prefix srv6-types;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC 6991: Common YANG Data Types"; reference "RFC 6991: Common YANG Data Types";
skipping to change at page 16, line 16 skipping to change at page 17, line 25
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).";
reference "RFC XXXX"; reference "RFC XXXX";
// RFC Editor: replace XXXX with actual RFC number and remove // RFC Editor: replace XXXX with actual RFC number and remove
// this note // this note
revision 2019-07-08 {
description
"Alignment with latest SRv6 network programming";
reference
"RFC XXXX: YANG Data Model for SRv6";
// RFC Editor: replace XXXX with actual RFC number and remove
// this note
}
revision 2018-10-22 { revision 2018-10-22 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: YANG Data Model for SRv6"; "RFC XXXX: YANG Data Model for SRv6";
// RFC Editor: replace XXXX with actual RFC number and remove // RFC Editor: replace XXXX with actual RFC number and remove
// this note // this note
} }
identity srv6-endpoint-type { identity srv6-endpoint-type {
skipping to change at page 16, line 37 skipping to change at page 18, line 6
"Base identity from which specific SRv6 Endpoint types are derived."; "Base identity from which specific SRv6 Endpoint types are derived.";
} }
/* Endpoints defined under draft-filsfils-spring-srv6-network-programming */ /* Endpoints defined under draft-filsfils-spring-srv6-network-programming */
identity End { identity End {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"End function (variant: no PSP, no USP)."; "End function (variant: no PSP, no USP).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End_PSP { identity End_PSP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"End function (variant: PSP only)."; "End function (variant: PSP only).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End_USP { identity End_USP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"End function (variant: USP only)."; "End function (variant: USP only).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End_PSP_USP { identity End_PSP_USP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"End function (variant: PSP and USP)."; "End function (variant: PSP and USP).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.X { identity End.X {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with cross-connect to an array "Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: no PSP, no USP)."; of layer-3 adjacencies (variant: no PSP, no USP).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.X_PSP { identity End.X_PSP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with cross-connect to an array "Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: PSP only)."; of layer-3 adjacencies (variant: PSP only).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.X_USP { identity End.X_USP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with cross-connect to an array "Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: USP only)."; of layer-3 adjacencies (variant: USP only).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.X_PSP_USP { identity End.X_PSP_USP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with cross-connect to an array "Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: PSP and USP)."; of layer-3 adjacencies (variant: PSP and USP).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.T { identity End.T {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with specific IPv6 table lookup "Endpoint with specific IPv6 table lookup
(variant: no PSP, no USP)."; (variant: no PSP, no USP).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.T_PSP { identity End.T_PSP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with specific IPv6 table lookup "Endpoint with specific IPv6 table lookup
(variant: PSP only)."; (variant: PSP only).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.T_USP { identity End.T_USP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with specific IPv6 table lookup "Endpoint with specific IPv6 table lookup
(variant: USP only)."; (variant: USP only).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.T_PSP_USP { identity End.T_PSP_USP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with specific IPv6 table lookup "Endpoint with specific IPv6 table lookup
(variant: PSP and USP)."; (variant: PSP and USP).";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.B6 { identity End.B6.Insert {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint bound to an SRv6 Policy"; "Endpoint bound to an SRv6 Policy";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.B6.Encaps { identity End.B6.Encaps {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"This is a variation of the End.B6 behavior "This is a variation of the End.B6.Insert behavior
where the SRv6 Policy also includes an where the SRv6 Policy also includes an
IPv6 Source Address A."; IPv6 Source Address A.";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.BM { identity End.BM {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint bound to an SR-MPLS Policy"; "Endpoint bound to an SR-MPLS Policy";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.DX6 { identity End.DX6 {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with decapsulation and cross-connect "Endpoint with decapsulation and cross-connect
to an array of IPv6 adjacencies"; to an array of IPv6 adjacencies";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.DX4 { identity End.DX4 {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with decapsulation and cross-connect "Endpoint with decapsulation and cross-connect
to an array of IPv4 adjacencies"; to an array of IPv4 adjacencies";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.DT6 { identity End.DT6 {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with decapsulation and specific "Endpoint with decapsulation and specific
IPv6 table lookup"; IPv6 table lookup";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.DT4 { identity End.DT4 {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with decapsulation and specific "Endpoint with decapsulation and specific
IPv4 table lookup"; IPv4 table lookup";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.DT46 { identity End.DT46 {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with decapsulation and specific IP "Endpoint with decapsulation and specific IP
(IPv4 or IPv6) table lookup"; (IPv4 or IPv6) table lookup";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.DX2 { identity End.DX2 {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with decapsulation and Layer-2 "Endpoint with decapsulation and Layer-2
cross-connect to an L2 interface"; cross-connect to an L2 interface";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.DX2V { identity End.DX2V {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with decapsulation and specific "Endpoint with decapsulation and specific
VLAN L2 table lookup"; VLAN L2 table lookup";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.DT2U { identity End.DT2U {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with decapsulation and specific "Endpoint with decapsulation and specific
unicast MAC L2 table lookup"; unicast MAC L2 table lookup";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.DT2M { identity End.DT2M {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint with decapsulation and specific L2 table "Endpoint with decapsulation and specific L2 table
flooding"; flooding";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.OTP { identity End.OTP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint for OAM operation of timestamp and punt"; "Endpoint for OAM operation of timestamp and punt";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.S { identity End.S {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Endpoint in search of a target in table TE"; "Endpoint in search of a target in table TE";
reference reference
"draft-filsfils-spring-srv6-network-programming-04"; "draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
/* Endpoints defined under draft-xuclad-spring-sr-service-chaining */ identity End.B6.Insert.Red {
base srv6-endpoint-type;
description
"This is a reduced insert variation of the End.B6.Insert behavior";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.B6.Encaps.Red {
base srv6-endpoint-type;
description
"This is a reduced encap variation of the End.B6.Encap behavior.";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End_USD {
base srv6-endpoint-type;
description
"End function (variant: USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.PSP_USD {
base srv6-endpoint-type;
description
"End function (variant: PSP and USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.USP_USD {
base srv6-endpoint-type;
description
"End function (variant: USP and USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.PSP_USP_USD {
base srv6-endpoint-type;
description
"End function (variant: PSP and USP and USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.X_USD {
base srv6-endpoint-type;
description
"Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.X_PSP_USD {
base srv6-endpoint-type;
description
"Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: PSP and USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.X_USP_USD {
base srv6-endpoint-type;
description
"Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: USP and USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.X_PSP_USP_USD {
base srv6-endpoint-type;
description
"Endpoint with cross-connect to an array
of layer-3 adjacencies (variant: PSP and USP and USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.T_USD {
base srv6-endpoint-type;
description
"Endpoint with decapsulation and Layer-2
cross-connect to an L2 interface";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.T_PSP_USD {
base srv6-endpoint-type;
description
"Endpoint with specific IPv6 table lookup
(variant: PSP and USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.T_USP_USD {
base srv6-endpoint-type;
description
"Endpoint with specific IPv6 table lookup
(variant: USP and USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.T_PSP_USP_USD {
base srv6-endpoint-type;
description
"Endpoint with specific IPv6 table lookup
(variant: PSP and USP and USD).";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
/* Endpoints defined under draft-xuclad-spring-sr-service-chaining */
identity End.AS { identity End.AS {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"Service-Chaining Static proxy for inner type (Ethernet, "Service-Chaining Static proxy for inner type (Ethernet,
IPv4 or IPv6)"; IPv4 or IPv6)";
reference reference
"draft-xuclad-spring-sr-service-chaining-01"; "draft-xuclad-spring-sr-service-chaining-01";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
skipping to change at page 22, line 44 skipping to change at page 26, line 50
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
/* Endpoints defined under draft-ietf-dmm-srv6-mobile-uplane */ /* Endpoints defined under draft-ietf-dmm-srv6-mobile-uplane */
identity End.MAP { identity End.MAP {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"DMM End.MAP"; "DMM End.MAP";
reference reference
"draft-ietf-dmm-srv6-mobile-uplane-01"; "draft-ietf-dmm-srv6-mobile-uplane-05";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.M.GTP6.UP { identity End.M.GTP6.D {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"DMM End.M.GTP6.UP"; "DMM End.M.GTP6.D";
reference
"draft-ietf-dmm-srv6-mobile-uplane-05";
// RFC Editor: replace with actual RFC number and remove this note
}
identity End.M.GTP6.E {
base srv6-endpoint-type;
description
"DMM End.M.GTP6.E";
reference reference
"draft-ietf-dmm-srv6-mobile-uplane-01"; "draft-ietf-dmm-srv6-mobile-uplane-05";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.M.GTP6.DN { identity End.M.GTP4.E {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"DMM End.M.GTP6.DN"; "DMM End.M.GTP4.E";
reference reference
"draft-ietf-dmm-srv6-mobile-uplane-01"; "draft-ietf-dmm-srv6-mobile-uplane-05";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.M.GTP4.DN { identity T.M.GTP4.D {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"DMM End.M.GTP4.DN"; "DMM T.M.GTP4.D";
reference reference
"draft-ietf-dmm-srv6-mobile-uplane-01"; "draft-ietf-dmm-srv6-mobile-uplane-05";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
identity End.Limit { identity End.Limit {
base srv6-endpoint-type; base srv6-endpoint-type;
description description
"DMM End.Limit"; "DMM End.Limit";
reference reference
"draft-ietf-dmm-srv6-mobile-uplane-01"; "draft-ietf-dmm-srv6-mobile-uplane-05";
// RFC Editor: replace with actual RFC number and remove this note // RFC Editor: replace with actual RFC number and remove this note
} }
typedef srv6-transit-type { identity srv6-transit-type {
description
"Base identity from which SRv6 transit rule types are derived.";
}
type enumeration { identity T {
/* draft-filsfils-spring-srv6-network-programming-04 */ base srv6-transit-type;
enum T { value 1; description "Transit behavior"; } description
enum T.Insert { "Transit rule T";
description "Transit behavior with insertion of an SRv6 policy"; reference
} "draft-ietf-spring-srv6-network-programming-01";
enum T.Insert.Red { // RFC Editor: replace with actual RFC number and remove this note
description "Transit behavior with reduced insertion of an SRv6 policy"; }
}
enum T.Encaps {
description "Transit behavior with encap of an SRv6 policy";
}
enum T.Encaps.Red {
description "Transit behavior with reduced encap of an SRv6 policy";
} identity T.Insert {
enum T.Encaps.L2 { base srv6-transit-type;
description "T.Encaps behavior on the received L2 frame"; description
} "Transit rule T.Insert with insertion of an SRv6 policy";
enum T.Encaps.L2.Red { reference
description "T.Encaps.Red behavior on the received L2 frame"; "draft-ietf-spring-srv6-network-programming-01";
} // RFC Editor: replace with actual RFC number and remove this note
} }
description "SRv6 Transit behavior types"; identity T.Insert.Red {
base srv6-transit-type;
description
"Transit rule T.Insert.Red with reduced insertion of an SRv6 policy";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity T.Encaps {
base srv6-transit-type;
description
"Transit rule T.Encaps with encapsulated of an SRv6 policy";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity T.Encaps.Red {
base srv6-transit-type;
description
"Transit rule T.Encaps.Red with reduced encap of an SRv6 policy";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity T.Encaps.L2 {
base srv6-transit-type;
description
"Transit rule T.Encaps.l2 on the received L2 frame";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity T.Encaps.L2.Red {
base srv6-transit-type;
description
"Transit rule T.Encaps.L2.Red on the received L2 frame";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity srv6-security-type {
description
"Base identity from which SRv6 Security rule types are derived.";
} }
typedef srv6-security-rule-type { identity SEC-1 {
type enumeration { base srv6-security-type;
/* draft-filsfils-spring-srv6-network-programming-04 */ description
enum SEC1 { value 1; description "Security rule SEC1"; } "Security rule SEC-1";
enum SEC2 { description "Security rule SEC2"; } reference
enum SEC3 { description "Security rule SEC3"; } "draft-ietf-spring-srv6-network-programming-01";
enum SEC4 { description "Security rule SEC4"; } // RFC Editor: replace with actual RFC number and remove this note
} }
description "SRv6 Security rule types"; identity SEC-2 {
base srv6-security-type;
description
"Security rule SEC-2";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
} }
typedef srv6-counter-type { identity SEC-3 {
type enumeration { base srv6-security-type;
/* draft-filsfils-spring-srv6-network-programming-04 */ description
enum CNT1 { value 1; description "CNT1"; } "Security rule SEC-3";
enum CNT2 { description "CNT2"; } reference
enum CNT3 { description "CNT3"; } "draft-ietf-spring-srv6-network-programming-01";
} // RFC Editor: replace with actual RFC number and remove this note
description "SRv6 counter types";
} }
identity srv6-counter-type {
description
"Base identity from which SRv6 counter types are derived.";
}
identity CNT-1 {
base srv6-counter-type;
description
"Counter rule CNT-1";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity CNT-2 {
base srv6-counter-type;
description
"Counter rule CNT-2";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
identity CNT-3 {
base srv6-counter-type;
description
"Counter rule CNT-3";
reference
"draft-ietf-spring-srv6-network-programming-01";
// RFC Editor: replace with actual RFC number and remove this note
}
typedef srv6-sid { typedef srv6-sid {
type inet:ipv6-prefix; type inet:ipv6-prefix;
description description
"This type defines a SID value in SRv6"; "This type defines a SID value in SRv6";
} }
typedef srv6-func-opcode { typedef srv6-func-opcode {
type uint32; type uint32;
description description
"This is a typedef for SID FUNC's opcode type"; "This is a typedef for SID FUNC's opcode type";
skipping to change at page 27, line 38 skipping to change at page 33, line 38
<CODE ENDS> <CODE ENDS>
Figure 5: ietf-srv6-types.yang Figure 5: ietf-srv6-types.yang
5.2. SRv6 Base 5.2. SRv6 Base
This YANG module imports types defined in [RFC6991], [RFC8294], This YANG module imports types defined in [RFC6991], [RFC8294],
[RFC8343], and [RFC8349]. [RFC8343], and [RFC8349].
<CODE BEGINS> file "ietf-srv6-base@2018-10-22.yang" --> <CODE BEGINS> file "ietf-srv6-base@2019-07-08.yang" -->
// RFC Editor: replace the above date with the date of // RFC Editor: replace the above date with the date of
// publication and remove this note. // publication and remove this note.
module ietf-srv6-base { module ietf-srv6-base {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-srv6-base"; namespace "urn:ietf:params:xml:ns:yang:ietf-srv6-base";
prefix srv6; prefix srv6;
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
reference "RFC 8343: A YANG Data Model for Interface Management"; reference "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC 6991: Common YANG Data Types"; reference "RFC 6991: Common YANG Data Types";
} }
skipping to change at page 29, line 47 skipping to change at page 35, line 45
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).";
reference "RFC XXXX"; reference "RFC XXXX";
revision 2019-07-08 {
description
"Alignment with SRv6 network programming";
reference
"RFC XXXX: YANG Data Model for SRv6";
// RFC Editor: replace XXXX with actual RFC number and remove
// this note
}
revision 2018-10-22 { revision 2018-10-22 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: YANG Data Model for SRv6"; "RFC XXXX: YANG Data Model for SRv6";
// RFC Editor: replace XXXX with actual RFC number and remove // RFC Editor: replace XXXX with actual RFC number and remove
// this note // this note
} }
/* /*
skipping to change at page 32, line 35 skipping to change at page 38, line 41
leaf name { leaf name {
type string; type string;
description "Locator name"; description "Locator name";
} }
leaf enable { leaf enable {
type boolean; type boolean;
default false; default false;
description "Enable a SRv6 locator"; description "Enable a SRv6 locator";
} }
leaf is-default {
type boolean;
mandatory true;
description "Indicates if the locator is a default locator";
}
container prefix { container prefix {
description "Specify locator prefix value"; description "Specify locator prefix value";
leaf address { leaf address {
type inet:ipv6-address; type inet:ipv6-address;
mandatory true; mandatory true;
description "IPv6 address"; description "IPv6 address";
} }
leaf length { leaf length {
type srv6-types:srv6-locator-len; type srv6-types:srv6-locator-len;
mandatory true; mandatory true;
description "Locator (prefix) length"; description "Locator (prefix) length";
} }
}
leaf algorithm {
type uint32 {
range "128..255";
}
description "Algorithm Id (for Flex-Algo)";
} }
uses srv6-locator-state; uses srv6-locator-state;
} }
} }
} }
grouping srv6-stats-in { grouping srv6-stats-in {
description "Grouping for inbound stats"; description "Grouping for inbound stats";
leaf in-pkts { leaf in-pkts {
type yang:counter64; type yang:counter64;
skipping to change at page 35, line 40 skipping to change at page 41, line 49
grouping srv6-state-sid { grouping srv6-state-sid {
description "SRv6 SID state grouping"; description "SRv6 SID state grouping";
container local-sids { container local-sids {
config false; config false;
description "Local-SID state"; description "Local-SID state";
container counters { container counters {
description "SRv6 counters"; description "SRv6 counters";
container cnt3 { container cnt-3 {
description "Counts SRv6 traffic received/dropped on local prefix not instantiated as local-SID"; description "Counts SRv6 traffic received/dropped on local prefix not instantiated as local-SID";
uses srv6-stats-in; uses srv6-stats-in;
} }
} }
list local-sid { list local-sid {
key "sid"; key "sid";
description "Per-localSID Counters"; description "Per-localSID Counters";
leaf sid { leaf sid {
type srv6-types:srv6-sid; type srv6-types:srv6-sid;
description "Local SID value"; description "Local SID value";
skipping to change at page 36, line 7 skipping to change at page 42, line 17
list local-sid { list local-sid {
key "sid"; key "sid";
description "Per-localSID Counters"; description "Per-localSID Counters";
leaf sid { leaf sid {
type srv6-types:srv6-sid; type srv6-types:srv6-sid;
description "Local SID value"; description "Local SID value";
} }
uses srv6-locator-ref; uses srv6-locator;
leaf is-reserved { leaf is-reserved {
type boolean; type boolean;
description "Set to true if SID comes from reserved pool"; description "Set to true if SID comes from reserved pool";
} }
leaf end-behavior-type { leaf end-behavior-type {
type identityref { type identityref {
base srv6-types:srv6-endpoint-type; base srv6-types:srv6-endpoint-type;
} }
skipping to change at page 36, line 43 skipping to change at page 43, line 4
} }
description "SID owner/client type"; description "SID owner/client type";
} }
leaf instance { leaf instance {
type string; type string;
description "Client instance"; description "Client instance";
} }
leaf is-winner { leaf is-winner {
type boolean; type boolean;
description "Is this client/owner the winning in terms of forwarding"; description "Is this client/owner the winning in terms of forwarding";
} }
} }
uses local-sid-fwd-state; uses local-sid-fwd-state;
container counters { container counters {
description "SRv6 per local-SID counters"; description "SRv6 per local-SID counters";
container cnt1 { container cnt-1 {
description "Counts SRv6 traffic received on local-SID prefix and processed successfully"; description "Counts SRv6 traffic received on local-SID prefix and processed successfully";
uses srv6-stats-in; uses srv6-stats-in;
} }
} }
} }
} }
} }
grouping srv6-support-ends { grouping srv6-support-ends {
description "SRv6 End behavior support grouping"; description "SRv6 End behavior support grouping";
skipping to change at page 37, line 36 skipping to change at page 43, line 46
type boolean; type boolean;
mandatory true; mandatory true;
description "True if supported"; description "True if supported";
} }
} }
} }
grouping srv6-support-transits { grouping srv6-support-transits {
description "SRv6 Transit behavior support grouping"; description "SRv6 Transit behavior support grouping";
list transit-behavior { list transit-behavior {
key "type"; key "type";
description "Transit behavior support"; description "Transit behavior support";
leaf type { leaf type {
type srv6-types:srv6-transit-type; type identityref {
description "Transit behavior (T*) type"; base srv6-types:srv6-transit-type;
}
}
description "Transit behavior (T*) type";
}
leaf supported { leaf supported {
type boolean; type boolean;
mandatory true; mandatory true;
description "True if supported"; description "True if supported";
} }
} }
} }
grouping srv6-support-signaled { grouping srv6-support-signaled {
description "SRv6 signaled parameter support grouping"; description "SRv6 signaled parameter support grouping";
container signaled-parameters { container signaled-parameters {
description "SRv6 signaled parameter support"; description "SRv6 signaled parameter support";
leaf max-sl { leaf max-sl {
type uint8; type uint8;
//mandatory true; //mandatory true;
skipping to change at page 39, line 4 skipping to change at page 45, line 15
} }
} }
} }
grouping srv6-support-security-rules { grouping srv6-support-security-rules {
description "SRv6 Security rules grouping"; description "SRv6 Security rules grouping";
list security-rule { list security-rule {
key "type"; key "type";
description "Security rule support"; description "Security rule support";
leaf type { leaf type {
type srv6-types:srv6-security-rule-type; type identityref {
base srv6-types:srv6-security-type;
}
description "Security rule type"; description "Security rule type";
} }
leaf supported { leaf supported {
type boolean; type boolean;
mandatory true; mandatory true;
description "True if supported"; description "True if supported";
} }
} }
} }
grouping srv6-support-counters { grouping srv6-support-counters {
description "SRv6 Counters grouping"; description "SRv6 Counters grouping";
list counters { list counters {
key "type"; key "type";
description "SRv6 counter support"; description "SRv6 counter support";
leaf type { leaf type {
type srv6-types:srv6-counter-type; type identityref {
base srv6-types:srv6-counter-type;
}
description "Counter type"; description "Counter type";
} }
leaf supported { leaf supported {
type boolean; type boolean;
mandatory true; mandatory true;
description "True if supported"; description "True if supported";
} }
} }
} }
skipping to change at page 40, line 24 skipping to change at page 46, line 39
uses srv6-encap; uses srv6-encap;
uses srv6-locators; uses srv6-locators;
uses srv6-state-capabilities; uses srv6-state-capabilities;
uses srv6-state-sid; uses srv6-state-sid;
} }
} }
/* Notifications */ /* Notifications */
grouping srv6-locator-ref { grouping srv6-locator {
description description
"An absolute reference to an SRv6 locator"; "An absolute reference to an SRv6 locator";
leaf locator-ref { leaf locator {
type leafref { type leafref {
path "/rt:routing/srv6:srv6/srv6:locators/srv6:locator/srv6:name"; path "/rt:routing/srv6:srv6/srv6:locators/srv6:locator/srv6:name";
} }
description description
"Reference to a SRv6 locator."; "Reference to a SRv6 locator.";
} }
} }
notification srv6-locator-status-event { notification srv6-locator-status-event {
description description
"Notification event for a change of SRv6 locator operational status."; "Notification event for a change of SRv6 locator operational status.";
leaf operational-status { leaf operational-status {
type srv6-types:srv6-status-type; type srv6-types:srv6-status-type;
description "Operational status"; description "Operational status";
} }
uses srv6-locator-ref; uses srv6-locator;
} }
notification srv6-sid-collision-event { notification srv6-sid-collision-event {
description description
"Notification event for an SRv6 SID collision - i.e., attempt to bind an already "Notification event for an SRv6 SID collision - i.e., attempt to bind an already
bound SID to a new context"; bound SID to a new context";
leaf sid { leaf sid {
type srv6-types:srv6-sid; type srv6-types:srv6-sid;
description "SRv6 SID"; description "SRv6 SID";
} }
container existing { container existing {
description "Current assignment / bind"; description "Current assignment / bind";
leaf end-behavior-type { leaf end-behavior-type {
type identityref { type identityref {
base srv6-types:srv6-endpoint-type; base srv6-types:srv6-endpoint-type;
} }
description "End type"; description "End type";
} }
// TODO: More // TODO: More
skipping to change at page 41, line 40 skipping to change at page 48, line 10
<CODE ENDS> <CODE ENDS>
Figure 6: ietf-srv6-base.yang Figure 6: ietf-srv6-base.yang
5.3. SRv6 Static 5.3. SRv6 Static
This YANG module imports types defined in [RFC6991], [RFC8343], and This YANG module imports types defined in [RFC6991], [RFC8343], and
[RFC8349]. [RFC8349].
<CODE BEGINS> file "ietf-srv6-static@2018-10-22.yang" --> <CODE BEGINS> file "ietf-srv6-static@2019-07-08.yang" -->
// RFC Editor: replace the above date with the date of // RFC Editor: replace the above date with the date of
// publication and remove this note. // publication and remove this note.
module ietf-srv6-static { module ietf-srv6-static {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-srv6-static"; namespace "urn:ietf:params:xml:ns:yang:ietf-srv6-static";
prefix srv6-static; prefix srv6-static;
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
reference "RFC 8343: A YANG Data Model for Interface Management"; reference "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC 6991: Common YANG Data Types"; reference "RFC 6991: Common YANG Data Types";
} }
skipping to change at page 43, line 47 skipping to change at page 50, line 16
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).";
reference "RFC XXXX"; reference "RFC XXXX";
// RFC Editor: replace XXXX with actual RFC number and remove // RFC Editor: replace XXXX with actual RFC number and remove
// this note // this note
revision 2019-07-08 {
description
"Alignment with SRv6 network programming";
reference
"RFC XXXX: YANG Data Model for SRv6";
// RFC Editor: replace XXXX with actual RFC number and remove
// this note
}
revision 2018-10-22 { revision 2018-10-22 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC XXXX: YANG Data Model for SRv6"; "RFC XXXX: YANG Data Model for SRv6";
// RFC Editor: replace XXXX with actual RFC number and remove // RFC Editor: replace XXXX with actual RFC number and remove
// this note // this note
} }
/* /*
skipping to change at page 48, line 18 skipping to change at page 54, line 43
} }
description description
"The Endpoint function is the most basic function. "The Endpoint function is the most basic function.
FIB lookup on updated DA and forward accordingly FIB lookup on updated DA and forward accordingly
to the matched entry. to the matched entry.
This is the SRv6 instantiation of a Prefix SID This is the SRv6 instantiation of a Prefix SID
(variant: PSP/USP)"; (variant: PSP/USP)";
} }
container end_usd {
when "../end-behavior-type = 'End_USD'" {
description
"This container is valid only when the user chooses End
behavior (variant: USD only).";
}
description
"The Endpoint function is the most basic function.
FIB lookup on updated DA and forward accordingly
to the matched entry.
This is the SRv6 instantiation of a Prefix SID
(variant: USD)";
}
container end_psp_usd {
when "../end-behavior-type = 'End_PSP_USD'" {
description
"This container is valid only when the user chooses End
behavior (variant: PSP/USD).";
}
description
"The Endpoint function is the most basic function.
FIB lookup on updated DA and forward accordingly
to the matched entry.
This is the SRv6 instantiation of a Prefix SID
(variant: PSP/USD)";
}
container end_usp_usd {
when "../end-behavior-type = 'End_USP_USD'" {
description
"This container is valid only when the user chooses End
behavior (variant: USP/USD).";
}
description
"The Endpoint function is the most basic function.
FIB lookup on updated DA and forward accordingly
to the matched entry.
This is the SRv6 instantiation of a Prefix SID
(variant: USP/USD)";
}
container end_psp_usp_usd {
when "../end-behavior-type = 'End_PSP_USP_IUSD'" {
description
"This container is valid only when the user chooses End
behavior (variant: PSP/USP/USD).";
}
description
"The Endpoint function is the most basic function.
FIB lookup on updated DA and forward accordingly
to the matched entry.
This is the SRv6 instantiation of a Prefix SID
(variant: PSP/USP/USD)";
}
container end-t { container end-t {
when "../end-behavior-type = 'End.T'" { when "../end-behavior-type = 'End.T'" {
description description
"This container is valid only when the user chooses "This container is valid only when the user chooses
End.T behavior (variant: no PSP, no USP)."; End.T behavior (variant: no PSP, no USP).";
} }
description description
"Endpoint with specific IPv6 table lookup (variant: no PSP, no USP). "Endpoint with specific IPv6 table lookup (variant: no PSP, no USP).
Lookup the next segment in IPv6 table T Lookup the next segment in IPv6 table T
associated with the SID and forward via associated with the SID and forward via
skipping to change at page 50, line 16 skipping to change at page 58, line 4
in the core."; in the core.";
// TODO presence "Mandatory child only if container is present"; // TODO presence "Mandatory child only if container is present";
leaf lookup-table-ipv6 { leaf lookup-table-ipv6 {
type srv6-types:table-id; type srv6-types:table-id;
mandatory true; mandatory true;
description description
"Table Id for lookup on updated DA (next segment)"; "Table Id for lookup on updated DA (next segment)";
} }
}
container end-t_usd {
when "../end-behavior-type = 'End.T_USD'" {
description
"This container is valid only when the user chooses
End.T behavior (variant: USD only).";
}
description
"Endpoint with specific IPv6 table lookup (variant: USD only).
Lookup the next segment in IPv6 table T
associated with the SID and forward via
the matched table entry.
The End.T is used for multi-table operation
in the core.";
// TODO presence "Mandatory child only if container is present";
leaf lookup-table-ipv6 {
type srv6-types:table-id;
mandatory true;
description
"Table Id for lookup on updated DA (next segment)";
}
}
container end-t_psp_usd {
when "../end-behavior-type = 'End.T_PSP_USD'" {
description
"This container is valid only when the user chooses
End.T behavior (variant: PSP/USD only).";
}
description
"Endpoint with specific IPv6 table lookup (variant: PSP/USD only).
Lookup the next segment in IPv6 table T
associated with the SID and forward via
the matched table entry.
The End.T is used for multi-table operation
in the core.";
// TODO presence "Mandatory child only if container is present";
leaf lookup-table-ipv6 {
type srv6-types:table-id;
mandatory true;
description
"Table Id for lookup on updated DA (next segment)";
}
}
container end-t_usp_usd {
when "../end-behavior-type = 'End.T_USP_USD'" {
description
"This container is valid only when the user chooses
End.T behavior (variant: USP/USD only).";
}
description
"Endpoint with specific IPv6 table lookup (variant: USP/USD only).
Lookup the next segment in IPv6 table T
associated with the SID and forward via
the matched table entry.
The End.T is used for multi-table operation
in the core.";
// TODO presence "Mandatory child only if container is present";
leaf lookup-table-ipv6 {
type srv6-types:table-id;
mandatory true;
description
"Table Id for lookup on updated DA (next segment)";
}
}
container end-t_psp_usp_usd {
when "../end-behavior-type = 'End.T_PSP_USP_USD'" {
description
"This container is valid only when the user chooses
End.T behavior (variant: USP only).";
}
description
"Endpoint with specific IPv6 table lookup (variant: PSP/USP/USD only).
Lookup the next segment in IPv6 table T
associated with the SID and forward via
the matched table entry.
The End.T is used for multi-table operation
in the core.";
// TODO presence "Mandatory child only if container is present";
leaf lookup-table-ipv6 {
type srv6-types:table-id;
mandatory true;
description
"Table Id for lookup on updated DA (next segment)";
}
} }
container end-x { container end-x {
when "../end-behavior-type = 'End.X'" { when "../end-behavior-type = 'End.X'" {
description description
"This container is valid only when the user chooses "This container is valid only when the user chooses
End.X behavior (variant: no USP/PSP)"; End.X behavior (variant: no USP/PSP)";
} }
description description
"Endpoint with cross-connect to an array of "Endpoint with cross-connect to an array of
skipping to change at page 52, line 4 skipping to change at page 61, line 41
"Endpoint with cross-connect to an array of "Endpoint with cross-connect to an array of
layer-3 adjacencies (variant: PSP/USP). layer-3 adjacencies (variant: PSP/USP).
Forward to layer-3 adjacency bound to the SID S. Forward to layer-3 adjacency bound to the SID S.
The End.X function is required to express any The End.X function is required to express any
traffic-engineering policy."; traffic-engineering policy.";
leaf protected { leaf protected {
type boolean; type boolean;
default false; default false;
description "Is Adj-SID protected?"; description "Is Adj-SID protected?";
}
uses multi-paths-v6;
}
container end-x_usd {
when "../end-behavior-type = 'End.X_USD'" {
description
"This container is valid only when the user chooses
End.X behavior (variant: USD only)";
}
description
"Endpoint with cross-connect to an array of
layer-3 adjacencies (variant: PSP/USP).
Forward to layer-3 adjacency bound to the SID S.
The End.X function is required to express any
traffic-engineering policy.";
leaf protected {
type boolean;
default false;
description "Is Adj-SID protected?";
}
uses multi-paths-v6;
}
container end-x_psp_usd {
when "../end-behavior-type = 'End.X_PSP_USD'" {
description
"This container is valid only when the user chooses
End.X behavior (variant: PSP/USD only)";
}
description
"Endpoint with cross-connect to an array of
layer-3 adjacencies (variant: PSP/USP).
Forward to layer-3 adjacency bound to the SID S.
The End.X function is required to express any
traffic-engineering policy.";
leaf protected {
type boolean;
default false;
description "Is Adj-SID protected?";
} }
uses multi-paths-v6; uses multi-paths-v6;
} }
container end-b6 { container end-x_usp_usd {
when "../end-behavior-type = 'End.B6'" { when "../end-behavior-type = 'End.X_USP_USD'" {
description description
"This container is valid only when the user chooses "This container is valid only when the user chooses
End.B6 behavior."; End.X behavior (variant: USP/USD only)";
}
description
"Endpoint with cross-connect to an array of
layer-3 adjacencies (variant: PSP/USP).
Forward to layer-3 adjacency bound to the SID S.
The End.X function is required to express any
traffic-engineering policy.";
leaf protected {
type boolean;
default false;
description "Is Adj-SID protected?";
}
uses multi-paths-v6;
}
container end-x_psp_usp_usd {
when "../end-behavior-type = 'End.X_PSP_USP_USD'" {
description
"This container is valid only when the user chooses
End.X behavior (variant: PSP/USP/USD only)";
}
description
"Endpoint with cross-connect to an array of
layer-3 adjacencies (variant: PSP/USP).
Forward to layer-3 adjacency bound to the SID S.
The End.X function is required to express any
traffic-engineering policy.";
leaf protected {
type boolean;
default false;
description "Is Adj-SID protected?";
}
uses multi-paths-v6;
}
container end-b6-insert {
when "../end-behavior-type = 'End.B6.Insert'" {
description
"This container is valid only when the user chooses
End.B6.Insert behavior.";
} }
description description
"Endpoint bound to an SRv6 Policy. "Endpoint bound to an SRv6 Policy.
Insert SRH based on the policy and forward the Insert SRH based on the policy and forward the
packet toward the first hop configured in the policy. packet toward the first hop configured in the policy.
This is the SRv6 instantiation of a Binding SID."; This is the SRv6 instantiation of a Binding SID.";
// TODO presence "Mandatory child only if container is present"; // TODO presence "Mandatory child only if container is present";
leaf policy-name { leaf policy-name {
type string; type string;
mandatory true; mandatory true;
description "SRv6 policy name."; description "SRv6 policy name.";
} }
uses multi-paths-v6; uses multi-paths-v6;
} }
container end-b6-encaps { container end-b6-encaps {
skipping to change at page 58, line 4 skipping to change at page 69, line 32
*/ */
container end-otp { container end-otp {
when "../end-behavior-type = 'End.OTP'" { when "../end-behavior-type = 'End.OTP'" {
description description
"This container is valid only when the user chooses "This container is valid only when the user chooses
End.OTP behavior."; End.OTP behavior.";
} }
description description
"Endpoint for OAM with timestamp and punt behavior"; "Endpoint for OAM with timestamp and punt behavior";
} }
} }
grouping srv6-static-cfg { grouping srv6-static-cfg {
description description
"Grouping configuration and operation for SRv6 sid."; "Grouping configuration and operation for SRv6 sid.";
list sid { list sid {
key "opcode"; key "opcode";
description "Local SID list"; description "List of locally instantiated SIDs";
uses srv6-sid-config; uses srv6-sid-config;
} }
} }
augment "/rt:routing/srv6:srv6/srv6:locators/srv6:locator" { augment "/rt:routing/srv6:srv6/srv6:locators/srv6:locator" {
description description
"This augments locator leaf withing SRv6."; "This augments locator leaf within SRv6.";
container static { container static {
description "Static SRv6"; description "Static SRv6";
/* Local SIDs */ /* Local SIDs */
container local-sids { container local-sids {
description description
"SRv6-static local-SIDs"; "SRv6-static locally instantiated SIDs";
uses srv6-static-cfg; uses srv6-static-cfg;
/* no state for now; SID state accessible through base model */ /* no state for now; SID state accessible through base model */
} }
} }
} }
} // module } // module
<CODE ENDS> <CODE ENDS>
skipping to change at page 60, line 39 skipping to change at page 72, line 13
Ahmed Bashandy for their input and review. Ahmed Bashandy for their input and review.
9. References 9. References
9.1. Normative References 9.1. Normative References
[I-D.ietf-spring-srv6-network-programming] [I-D.ietf-spring-srv6-network-programming]
Filsfils, C., Camarillo, P., Leddy, J., Filsfils, C., Camarillo, P., Leddy, J.,
daniel.voyer@bell.ca, d., Matsushima, S., and Z. Li, "SRv6 daniel.voyer@bell.ca, d., Matsushima, S., and Z. Li, "SRv6
Network Programming", draft-ietf-spring-srv6-network- Network Programming", draft-ietf-spring-srv6-network-
programming-00 (work in progress), April 2019. programming-01 (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>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
skipping to change at page 62, line 35 skipping to change at page 74, line 9
[I-D.hu-spring-srv6-yang] [I-D.hu-spring-srv6-yang]
Li, Z., Matsushima, S., and K. Horiba, "YANG Data Model Li, Z., Matsushima, S., and K. Horiba, "YANG Data Model
for SRv6", draft-hu-spring-srv6-yang-00 (work in for SRv6", draft-hu-spring-srv6-yang-00 (work in
progress), October 2017. progress), October 2017.
[I-D.ietf-6man-segment-routing-header] [I-D.ietf-6man-segment-routing-header]
Filsfils, C., Dukes, D., Previdi, S., Leddy, J., Filsfils, C., Dukes, D., Previdi, S., Leddy, J.,
Matsushima, S., and d. daniel.voyer@bell.ca, "IPv6 Segment Matsushima, S., and d. daniel.voyer@bell.ca, "IPv6 Segment
Routing Header (SRH)", draft-ietf-6man-segment-routing- Routing Header (SRH)", draft-ietf-6man-segment-routing-
header-19 (work in progress), May 2019. header-21 (work in progress), June 2019.
[I-D.ietf-dmm-srv6-mobile-uplane] [I-D.ietf-dmm-srv6-mobile-uplane]
Matsushima, S., Filsfils, C., Kohno, M., Camarillo, P., Matsushima, S., Filsfils, C., Kohno, M., Camarillo, P.,
daniel.voyer@bell.ca, d., and C. Perkins, "Segment Routing daniel.voyer@bell.ca, d., and C. Perkins, "Segment Routing
IPv6 for Mobile User Plane", draft-ietf-dmm-srv6-mobile- IPv6 for Mobile User Plane", draft-ietf-dmm-srv6-mobile-
uplane-04 (work in progress), March 2019. uplane-05 (work in progress), July 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-12 (work in progress), February 2019. ietf-spring-sr-yang-13 (work in progress), July 2019.
[I-D.xuclad-spring-sr-service-chaining] [I-D.xuclad-spring-sr-service-chaining]
Clad, F., Xu, X., Filsfils, C., daniel.bernier@bell.ca, Clad, F., Xu, X., Filsfils, C., daniel.bernier@bell.ca,
d., Li, C., Decraene, B., Ma, S., Yadlapalli, C., d., Li, C., Decraene, B., Ma, S., Yadlapalli, C.,
Henderickx, W., and S. Salsano, "Segment Routing for Henderickx, W., and S. Salsano, "Segment Routing for
Service Chaining", draft-xuclad-spring-sr-service- Service Chaining", draft-xuclad-spring-sr-service-
chaining-01 (work in progress), March 2018. chaining-01 (work in progress), March 2018.
Authors' Addresses Authors' Addresses
Kamran Raza Kamran Raza
Cisco Systems Cisco Systems
CA
Email: skraza@cisco.com Email: skraza@cisco.com
Jaganbabu Rajamanickam Jaganbabu Rajamanickam
Cisco Systems Cisco Systems
CA
Email: jrajaman@cisco.com Email: jrajaman@cisco.com
Xufeng Liu Xufeng Liu
Volta Networks Volta Networks
Email: xufeng.liu.ietf@gmail.com Email: xufeng.liu.ietf@gmail.com
Zhibo Hu Zhibo Hu
Huawei Technologies Huawei Technologies
Email: huzhibo@huawei.com Email: huzhibo@huawei.com
Iftekhar Hussain Iftekhar Hussain
Infinera Corporation Infinera Corporation
Email: IHussain@infinera.com Email: IHussain@infinera.com
Himanshu Shah Himanshu Shah
Ciena Corporation Ciena Corporation
Email: hshah@ciena.com Email: hshah@ciena.com
Daniel Voyer Daniel Voyer
Bell Canada Bell Canada
Email: daniel.voyer@bell.ca Email: daniel.voyer@bell.ca
Hani Elmalky Hani Elmalky
Ericsson Ericsson
 End of changes. 128 change blocks. 
164 lines changed or deleted 733 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/