This document describes a YANG data model for Segment Routing (SR) Service Programming.
The model serves as a base framework for configuring and managing an SR based
service programming. Additionally, this document specifies the model for
a Service Proxy for SR-unaware services.¶
The YANG modules in this document conform to the Network Management
Datastore Architecture (NMDA).¶
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task
Force (IETF). Note that other groups may also distribute working
documents as Internet-Drafts. The list of current Internet-Drafts is
at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."¶
Copyright (c) 2022 IETF Trust and the persons identified as the
document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this
document must include Revised BSD License text as described in
Section 4.e of the Trust Legal Provisions and are provided without
warranty as described in the Revised BSD License.¶
The Network Configuration Protocol (NETCONF) [RFC6241] is one of the
network management protocols that defines mechanisms to manage network devices. YANG
[RFC6020] is a modular language that represents data structures in an
XML tree format, and is used as a data modeling language for the NETCONF.¶
Segment Routing is an architecture based on the source routing
paradigm that seeks the right balance between distributed
intelligence and centralized programmability. SR can be used with an
MPLS or an IPv6 data plane to steer packets through an ordered list
of instructions, called segments. These segments may encode simple
routing instructions for forwarding packets along a specific network
path, but also steer them through Virtual Network Function (VNF) or
physical service appliances available in the network.¶
In an SR network, each of these services, running either on a
physical appliance or in a virtual environment, are associated with a
segment identifier (SID). These service SIDs are then leveraged as
part of a SID-list to steer packets through the desired
services in the service chain. Service SIDs may be combined together in a SID-list
to achieve the service programming, but also with other types of segments as
defined in [RFC8402]. SR thus provides a fully integrated solution
for overlay, underlay and service programming. Furthermore, the IPv6
instantiation of SR (SRv6) supports metadata transportation in the
Segment Routing header [RFC8754], either natively in the tag field or
with extensions such as TLVs.¶
This document describes how a service can be associated with a SID,
including legacy services with no SR capabilities, and how these
service SIDs are integrated within an SR policy. The definition of
an SR Policy and the traffic steering mechanisms are covered in
[I-D.ietf-spring-segment-routing-policy] and hence outside the scope
of this document.¶
This document introduces a YANG data model for the SR based service
programming configuration and management.
Furthermore, this document also covers the basic SR unaware behaviours as defined in
[I-D.ietf-spring-sr-service-programming].¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14 [RFC2119][RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This document defines the following four new YANG modules:¶
ietf-service-function-types: Defines common service function types¶
ietf-sr-service-programming-types: Defines common type definitions used for
SR based service programming YANG model¶
ietf-sr-service-programming: Defines management model for SR based service
programming framework. This is a base and common framework for both
SR-aware and SR-unaware services.¶
ietf-sr-service-programming-proxy: Defines management model for SR service proxy
for SR unaware services¶
The modelling in this document complies with the Network Management Datastore
Architecture (NMDA) defined in [RFC8342].
The operational state data is combined with the associated configuration data in
the same hierarchy [RFC8407].
When protocol states are retrieved from the NMDA operational state datastore, the
returned states cover all "config true" (rw) and "config false" (ro) nodes defined
in the schema.¶
In this document, when a simplified graphical representation of
YANG model is presented in a tree diagram, the meaning of the symbols
in these tree diagrams is defined in [RFC8340].¶
In this document, the SR service programming YANG model is split based
on dynamic SID allocation and static SID allocation. In the case of
dynamic SID allocation, new SR service programming tree would be used.
In the case of static MPLS SID allocation for the SR service
programming, the existing SR MPLS YANG model [RFC9020]
would be augmented with the SR MPLS service programming specific
parameters. Similarly the static SRv6 base YANG model (TBD) would be
augmented with the SRv6 service programming specific parameters.¶
A service is identified by (type, variant, instance). The type
represents the type of service functions (such as Firewall,
DPI IPS etc.), The variant value is a unique identifier which
could identify the vendor and its product informations, The
instance is used to refer to a specific instance of the same
(service, variant).¶
We define a new YANG module ietf-service-function-types to
specify common definitions and types for service and service
function. The types and definitions are generic and hence
can be used in any (SR based or non-SR) YANG models.¶
The main definitions and types defined in ietf-service-function-types module include:¶
service-function-type: A new identity type to specify service
function types, such as firewall, dpi etc. Other identities can be
define by other modules in future.¶
The base model and framework for SR based service
programming using dynamic SID allocation is defined in a new module
ietf-sr-service-programming.¶
In the case of static MPLS SID allocation
for the SR service programming, the existing SR MPLS
YANG model [RFC9020] would be augmented with the
SR MPLS service programming specific parameters.¶
In the case of static SRv6 based YANG
model (TBD) would be augmented with the
SRv6 service programming specific parameters.¶
This module provides a common base
for both the SR-aware and SR-unaware
service programming in terms of configuration,
operation state and notifications.¶
The ietf-sr-service-programming module hangs off
main SR parent by augmenting "/rt:routing/sr:segment-routing".¶
This module defines some fundamental items required to configure
SR based service programming. In particular, it defines
service program provisioning as follows:¶
service program behaviour: Defining a service program behaviour¶
service offered: Defining a specific service
(type, variant, instance) offered this service programming¶
Assigning a SR service SID: Defining SID data plane, method to
allocate the SID etc..¶
service program enablement: Administratively Enable/Disable
a service program¶
SR services: Defining a base container which could be augmented to
define SR-aware or SR-unaware (via service-proxy) service
specific parameters¶
Following is a simplified graphical tree representation of the data model for
SR service programming (Dynamic SID allocation) base configuration only¶
Following is a simplified graphical tree representation of the data model for
SR service programming (Static SR MPLS SID allocation) base configuration only.
In this case SR MPLS base YANG model has been augmented to support SR service
programming using static SR MPLS SID allocation. This has been done for the
user convince to program all the SR service programming parameters from the
based SR MPLS YANG itself¶
Following is a simplified graphical tree representation of the data model for
SR service programming (Static SRv6 SID allocation) base configuration only.
TBD (Once the based SRv6 static model is available, this section will be filled)¶
As per NMDA model, the state related to configuration items specified in above
section Section 3.4.1 can be retrieved from the same tree. This
section defines other operational state items related to SR based
service programming.¶
The operational state corresponding to an SR based service program includes:¶
Operational status: Provides detail information on the operational state of
the SR service program.¶
statistics: Provides the statistics details such as number of
packets/bytes received, processed and dropped corresponding to
a SR service program.¶
Following is a simplified graphical tree representation of the data model for the
SR service programming base operational state (for read-only items):¶
This model defines a list of notifications to inform an operator of important
events detected during the SR service programming operation. These events are:¶
SR service program operational state changes: This would also give the
reason for the state change when it is down¶
Following is a simplified graphical tree representation of the data model for the
SR service programming notification:¶
This document also defines a separate and new YANG
data model for Service Proxy for SR unaware services.
The model defines the configuration and operational
state related to different proxy behaviours defined
earlier in ietf-sr-service-programming-types.
The model is defined in a new module
ietf-sr-service-programming proxy.¶
To support SR service programming proxy for dynamic SID
allocation,this module augments the SR service program tree
(/rt:routing/sr:segment-routing/sr-svc-pgm:service-programming/
sr-svc-pgm:service-program/sr-svc-pgm:sr-services)
as defined earlier in ietf-sr-service-programming module.¶
To support SR service programming proxy for static
SR MPLS SID allocation, this module augments the base SR MPLS
YANG mode defined in the RFC [RFC9020]
(/rt:routing/sr:segment-routing/sr-mpls:sr-mpls/sr-mpls:bindings/
sr-svc-pgm:mpls-static-service-programming/
sr-svc-pgm:service-program/sr-svc-pgm:service-programming-info/
sr-svc-pgm:sr-services:)¶
To support SR service programming proxy for static
SRv6 SID allocation, this module augments the base static
SRv6 model - TBD¶
The following sections describe different types of proxy behaviours and associated YANG modelling constructs.¶
The dynamic proxy is an improvement over the static proxy that dynamically learns
the SR information before removing it from the incoming traffic. The same
information can be re-attached to the traffic returning from the service Endpoints.
The dynamic proxy relies on the local caching.¶
The following parameters are required to provision the SR dynamic proxy:¶
out-interface-name: Local interface for sending traffic towards the service
Endpoint¶
in-interface-name: Local interface receiving traffic coming back from the
service Endpoint¶
Following is a simplified graphical tree representation of the data model for the
SR static proxy:¶
The masquerading proxy is an SR endpoint behaviour for processing SRv6 traffic on
behalf of an SR-unaware service. This masquerading behaviour is independent from
the inner payload type.¶
The following parameters are required to provision the SR masquerading proxy¶
The YANG module specified in this document defines a schema for data that
is designed to be accessed via network management protocols such as
NETCONF [RFC6241] or RESTCONF [RFC8040].
The lowest NETCONF layer is the secure transport
layer, and the mandatory-to-implement secure transport is Secure Shell (SSH)
[RFC6242]. The lowest RESTCONF layer is HTTPS, and the
mandatory-to-implement secure transport is TLS [RFC8446].¶
The Network Configuration Access Control Model (NACM) [RFC8341]
provides the means to restrict access for particular NETCONF or RESTCONF users to a
preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.¶
There are a number of data nodes defined in this YANG module that are writable/creatable/
deletable (i.e., config true, which is the default). These data nodes may be considered
sensitive or vulnerable in some network environments. Write operations (e.g., edit-config)
to these data nodes without proper protection can have a negative effect on network
operations.¶
Some of the readable data nodes in this YANG module may be considered sensitive or
vulnerable in some network environments. It is thus important to control read access
(e.g., via get, get-config, or notification) to these data nodes.¶
It goes without saying that this specification also inherits the security
considerations captured in the SRv6 specification document
[I-D.ietf-spring-sr-service-programming].¶
Clad, F., Xu, X., Filsfils, C., Bernier, D., Li, C., Decraene, B., Ma, S., Yadlapalli, C., Henderickx, W., and S. Salsano, "Service Programming with Segment Routing", Work in Progress, Internet-Draft, draft-ietf-spring-sr-service-programming-05, , <https://www.ietf.org/archive/id/draft-ietf-spring-sr-service-programming-05.txt>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, , <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241]
Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, , <https://www.rfc-editor.org/info/rfc6241>.
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, , <https://www.rfc-editor.org/info/rfc8341>.
[RFC8342]
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, , <https://www.rfc-editor.org/info/rfc8342>.
[RFC8402]
Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, , <https://www.rfc-editor.org/info/rfc8402>.
[RFC8407]
Bierman, A., "Guidelines for Authors and Reviewers of Documents Containing YANG Data Models", BCP 216, RFC 8407, DOI 10.17487/RFC8407, , <https://www.rfc-editor.org/info/rfc8407>.
Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header (SRH)", RFC 8754, DOI 10.17487/RFC8754, , <https://www.rfc-editor.org/info/rfc8754>.
[RFC9020]
Litkowski, S., Qu, Y., Lindem, A., Sarkar, P., and J. Tantsura, "YANG Data Model for Segment Routing", RFC 9020, DOI 10.17487/RFC9020, , <https://www.rfc-editor.org/info/rfc9020>.