< draft-xia-sfc-yang-oam-01.txt   draft-xia-sfc-yang-oam-02.txt >
SFC WG Liang Xia
Internet Draft Qin Wu
Intended status: Standard Track Huawei
Deepak Kumar
Cisco
Expires: June 2015 February 10, 2015
YANG Data Model for SFC Operations, Administration, and Maintenance Network Working Group L. Xia
(OAM) Internet-Draft Q. Wu
draft-xia-sfc-yang-oam-01.txt Intended status: Standards Track Huawei
Expires: September 7, 2015 D. Kumar
Cisco
M. Boucadair
France Telecom
Z. Wang
Huawei
March 6, 2015
Status of this Memo YANG Data Model for SFC Operations, Administration, and Maintenance
(OAM)
draft-xia-sfc-yang-oam-02
Abstract
This document defines YANG data model for Service Function Chaining
(SFC) Operations, Administration, and Maintenance (OAM). It extends
from the basic YANG data model for Layer independent OAM Management
defined in [I-D.tissa-lime-yang-oam-model] and [I-D.wang-lime-rpc-
yang-oam-management] with SFC technology specifics. It includes SFC
OAM related configuration, state, and RPC information data.
Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF). Note that other groups may also distribute
other groups may also distribute working documents as Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts. Drafts is at http://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."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at Internet-Drafts are draft documents valid for a maximum of six months
http://www.ietf.org/shadow.html 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."
This Internet-Draft will expire on June 25,2015. This Internet-Draft will expire on September 7, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with carefully, as they describe your rights and restrictions with respect
respect to this document. Code Components extracted from this to this document. Code Components extracted from this document must
document must include Simplified BSD License text as described in include Simplified BSD License text as described in Section 4.e of
Section 4.e of the Trust Legal Provisions and are provided without the Trust Legal Provisions and are provided without warranty as
warranty as described in the Simplified BSD License. described in the Simplified BSD License.
Abstract
This document defines YANG data model for Service Function Chaining
(SFC) Operations, Administration, and Maintenance (OAM). It extends
from the basic YANG data model for Layer independent OAM Management
defined in [I-D.tissa-lime-yang-oam-model] and [I-D.wang-lime-rpc-
yang-oam-management] with SFC technology specifics. It includes SFC
OAM related configuration, state, and RPC information data.
Table of Contents Table of Contents
1. Introduction ................................................ 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Conventions used in this document ........................... 3 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 3
2.1. Terminology ............................................ 4 2.1. Terminologies . . . . . . . . . . . . . . . . . . . . . . 3
3. SFC Extensions to LIME YANG Model ........................... 4 3. Architecture of OAM YANG Model and Relationship to SFC OAM . 4
3.1. MEP Address ............................................ 5 4. SFC Extensions to LIME YANG Model . . . . . . . . . . . . . . 5
3.2. Connectivity-Context ................................... 6 4.1. MEP Address . . . . . . . . . . . . . . . . . . . . . . . 5
3.3. SFC Layer For RPC - Path Discovery ..................... 7 4.2. Connectivity-Context . . . . . . . . . . . . . . . . . . 6
4. SFC OAM YANG Data Hierarchy ................................. 8 4.3. SFC Layer For RPC - Path Discovery . . . . . . . . . . . 7
5. SFC OAM YANG Module ........................................ 17 5. SFC OAM YANG Data Hierarchy . . . . . . . . . . . . . . . . . 8
6. Security Considerations .................................... 40 6. SFC OAM YANG Module . . . . . . . . . . . . . . . . . . . . . 15
7. IANA Considerations ........................................ 40 7. Security Considerations . . . . . . . . . . . . . . . . . . . 32
8. References ................................................. 40 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33
8.1. Normative References .................................. 40 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.2. Informative References ................................ 41 9.1. Normative References . . . . . . . . . . . . . . . . . . 33
9. Acknowledgments ............................................ 41 9.2. Informative References . . . . . . . . . . . . . . . . . 33
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33
1. Introduction 1. Introduction
YANG [RFC6020] is a data modeling language used to model YANG [RFC6020] is a data modeling language used to model
configuration and state data manipulated by the Network configuration and state data manipulated by the Network Configuration
Configuration Protocol (NETCONF) [RFC6241], NETCONF remote procedure Protocol (NETCONF) [RFC6241], NETCONF remote procedure calls (RPC),
calls (RPC), and NETCONF notifications. and NETCONF notifications. This document defines the YANG data model
for Service Function Chaining (SFC) [SFCPS] OAM. The SFC OAM YANG
This document defines the YANG data model for Service Function Chaining module involves the OAM configuration, RPCs and notifications, etc.
(SFC) [SFCPS] OAM. The SFC OAM YANG module involves the OAM
configuration, RPCs and notifications, etc.
Currently, [I-D.tissa-lime-yang-oam-model] and [I-D.wang-lime-rpc- Currently, [I-D.tissa-lime-yang-oam-model] and [I-D.wang-lime-rpc-
yang-oam-management] propose a basic YANG data model for Layer yang-oam-management] propose a basic YANG data model for Layer
independent OAM Management that can be applied to various OAM independent OAM Management that can be applied to various OAM
technologies. SFC OAM YANG data model can be defined by directly technologies. SFC OAM YANG data model can be defined by directly
extending the basic model with SFC technology specifics. It can extending the basic model with SFC technology specifics. It can
bring some obvious benefits such as unified format, reusable parts, bring some obvious benefits such as unified format, reusable parts,
and correlation of defects, faults, network failure at the specific and correlation of defects, faults, network failure at the specific
layer. layer.
In addition, various components in the SFC technology specific YANG In addition, various components in the SFC technology specific YANG
data model defined in [SFCYANG] can be directly reused in this draft data model defined in [SFCYANG] can be directly reused in this draft
to define the SFC OAM YANG data model. to define the SFC OAM YANG data model.
Note that SFC OAM mechanisms are not yet defined or standardized Note that SFC OAM mechanisms are not yet defined or standardized
although some of the basic concepts and functions (e.g., fault although some of the basic concepts and functions (e.g., fault
detection, fault localization, performance measurement, etc) may be detection, fault localization, performance measurement, etc) may be
similar to traditional OAM mechanisms. This draft should get similar to traditional OAM mechanisms. This draft should get
alignment with the latest development SFC OAM mechanisms. alignment with the latest development SFC OAM mechanisms.
2. Conventions used in this document 2. Conventions and Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC-2119 [RFC2119]. document are to be interpreted as described in [RFC2119].
The following terms are defined in [RFC6241] and are not redefined The following terms are defined in [RFC6241] and are not redefined
here: here:
o client o client
o configuration data o configuration data
o server o server
o state data o state data
The following terms are defined in [RFC6020] and are not redefined The following terms are defined in [RFC6020] and are not redefined
here: here:
o augment o augment
o data model o data model
o data node o data node
The terminology for describing YANG data models is found in The terminology for describing YANG data models is found in
[RFC6020]. [RFC6020].
2.1. Terminology 2.1. Terminologies
MP - Maintenance Point [8021Q] MP Maintenance Point [8021Q].
MEP - Maintenance End Point [8021Q] [RFC6371] MEP Maintenance End Point [8021Q] [RFC6371]
MIP - Maintenance Intermediate Point [8021Q] [RFC6371] MIP Maintenance Intermediate Point [8021Q] [RFC6371]
MEG - Maintenance Entity Group [Y1731] [RFC6371] MEG Maintenance Entity Group [Y1731] [RFC6371]
ME Maintenance Entity [Y.1731] [RFC6371]
ME - Maintenance Entity [Y.1731] [RFC6371] MD Maintenance Domain [8021Q]
MD - Maintenance Domain [8021Q] OAM Operations, Administration, and Maintenance [RFC6291]
OAM - Operations, Administration, and Maintenance [RFC6291] LIME Layer Independent OAM Management [I-D.tissa-lime-yang-oam-
model] [I-D.wang-lime-rpc-yang-oam-management]
LIME - Layer Independent OAM Management [I-D.tissa-lime-yang-oam- SF Service Function [SFCYANG]
model] [I-D.wang-lime-rpc-yang-oam-management]
SF - Service Function [SFCYANG] SFC Service Function Chaining [SFCYANG]
SFC - Service Function Chaining [SFCYANG] SFF Service Function Forwarder [SFCYANG]
SFF - Service Function Forwarder [SFCYANG] 3. Architecture of OAM YANG Model and Relationship to SFC OAM
3. SFC Extensions to LIME YANG Model Layer independent OAM YANG model[I-D.tissa-lime-yang-oam-model] and
[I-D.wang-lime-rpc-yang-oam-management] is used as the basis for all
the other OAM YANG models. This allows users to span across OAM
tools of different technologies through a uniform API. The following
Figure depicts the relationship of SFC OAM YANG model to the Layer
Independent OAM YANG Model.
+-+-+-+-+-+
| Layer |
|independent
|OAM YANG |
+-+-+-+-+-+
|
O
|
+--------------------------------------------------+
| | | |
+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+
| TRILL | | NVO3 | | SFC |. .| foo |
|OAM YANG | |OAM YANG | |OAM YANG | |OAM YANG |
+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+
| | | |
| | | |
| | | |
+----------------------------------------------------+
| Uniform API |
+----------------------------------------------------+
Relationship of SFC OAM YANG model to Layer independent OAM YANG
model
4. SFC Extensions to LIME YANG Model
A new Technology parameter of SFC is defined here for the purpose of A new Technology parameter of SFC is defined here for the purpose of
identifying the SFC specific YANG model extension: identifying the SFC specific YANG model extension:
identity SFC { identity SFC {
base goam:technology-types; base goam:technology-types;
description description
"SFC type"; "SFC type";
} }
Figure 1 SFC identity type SFC identity type
Only when the Technology parameter is set to the "SFC" value, the Only when the Technology parameter is set to the "SFC" value, the SFC
SFC specific extensions are applied. specific extensions are applied.
3.1. MEP Address 4.1. MEP Address
In SFC, either the SF on service function layer or SF/SFF on SFC In SFC, either the SF on service function layer or SF/SFF on SFC
forwarding layer can be MEP/MIP. A MEP/MIP cannot be identified forwarding layer can be MEP/MIP. A MEP/MIP cannot be identified
without specifying service function path. Therefore the MEP/MIP without specifying service function path. Therefore the MEP/MIP
address can only be identified by SF/SFF address plus service address can only be identified by SF/SFF address plus service
function path id. In [I-D.tissa-lime-yang-oam-model] and [I-D.wang- function path id. In [I-D.tissa-lime-yang-oam-model] and [I-D.wang-
lime-rpc-yang-oam-management], MEP/MIP address is defined using a lime-rpc-yang-oam-management], MEP/MIP address is defined using a
combination of choice and case statement. We augment this to include combination of choice and case statement. We augment this to include
SFC specific SF/SFF address plus service function path id. SFC specific SF/SFF address plus service function path id.
augment augment
"/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:mp- "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:mp-
address" { address" {
case sf-mep-address { case sf-mep-address {
description description
skipping to change at page 6, line 4 skipping to change at page 6, line 20
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
} }
case sff-mep-address { case sff-mep-address {
description description
"Service function forwarder address plus service function path "Service function forwarder address plus service function path
id identify one SFC MEP. A SFC MP can be a service function or id identify one SFC MEP. A SFC MP can be a service function or
service function forwarder!" service function forwarder!"
leaf sff-mep-ref { leaf sff-mep-ref {
type sfc-sff:service-function-forwarder-ref; type sfc-sff:service-function-forwarder-ref;
} }
leaf sfp-mep-ref { leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
} }
} }
Figure 2 Augment SFC MEP address Augment SFC MEP address
3.2. Connectivity-Context 4.2. Connectivity-Context
In SFC, connectivity-context is the service function path id. [I- In SFC, connectivity-context is the service function path id. [I-
D.tissa-lime-yang-oam-model] and [I-D.wang-lime-rpc-yang-oam- D.tissa-lime-yang-oam-model] and [I-D.wang-lime-rpc-yang-oam-
management] defines a placeholder for connectivity-context. This management] defines a placeholder for connectivity-context. This
allows other technologies to easily augment that to include allows other technologies to easily augment that to include
technology specific extensions. The snippet below depicts an example technology specific extensions. The snippet below depicts an example
of augmenting connectivity-context to include the SFC connectivity- of augmenting connectivity-context to include the SFC connectivity-
context. context.
augment "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam: augment "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:
connectivity-context" { connectivity-context" {
case connectivity-context-sfc { case connectivity-context-sfc {
leaf connectivity-context-sfp { leaf connectivity-context-sfp {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
}
} }
} Augment SFC Connectivity-Context
Figure 3 Augment SFC Connectivity-Context
3.3. SFC Layer For RPC - Path Discovery 4.3. SFC Layer For RPC - Path Discovery
Path Discovery is used to discover the path that specific service Path Discovery is used to discover the path that specific service
traverses in the network. For SFC, it can be used on both service traverses in the network. For SFC, it can be used on both service
function layer and SFC forwarding layer depending on what is the function layer and SFC forwarding layer depending on what is the
desired degree of path information. desired degree of path information.
typedef SFC-layer { typedef SFC-layer {
type enumeration { type enumeration {
enum "Service function layer" { enum "Service function layer" {
value 0; value 0;
} }
enum "SFC forwarding layer" { enum "SFC forwarding layer" {
value 1; value 1;
} }
}
} }
} augment "/goam-rpc:path-discovery/goam-rpc:input" {
augment "/goam-rpc:initiated-path-discovery/goam-rpc:input" { description
description "Adding SFC specific items on the input";
"Adding SFC specific items on the input"; leaf path-discovery-layer {
leaf path-discovery-layer { type SFC-layer;
type SFC-layer;
description description
"Identifying which SFC layer to run path discovery"; "Identifying which SFC layer to run path discovery";
} }
} }
Figure 4 Augment SFC SFC-layer for Path Discovery Augment SFC SFC-layer for Path Discovery
4. SFC OAM YANG Data Hierarchy 5. SFC OAM YANG Data Hierarchy
The complete data hierarchy related to the SFC OAM YANG model is The complete data hierarchy related to the SFC OAM YANG model is
presented below. The following notations are used within the data presented below. The following notations are used within the data
tree and carry the meaning as noted below. tree and carry the meaning as noted below.
Each node is printed as: Each node is printed as:
<status> <flags> <name> <opts> <type> <status> <flags> <name> <opts> <type>
<status> is one of:
+ for current
x for deprecated
o for obsolete
<flags> is one of:
rw for configuration data
ro for non-configuration data
-x for rpcs
-n for notifications
<name> is the name of the node
If the node is augmented into the tree from another module,
its
name is printed as <prefix>:<name>.
<opts> is one of:
? for an optional leaf or choice
! for a presence container
* for a leaf-list or list
[<keys>] for a list's keys
<type> is the name of the type for leafs and leaf-lists
module: sfc-oam
augment /goam:domains/goam:domain/goam:MAs/goam:MA/goam:
connectivity-context:
+--:(connectivity-context-sfc)
+--rw connectivity-context-sfp? sfc-sfp:service-function-
path-ref
augment /goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:mp-
address:
+--:(sf-mep-address)
| +--rw sf-mep-ref? sfc-sf:service-function-ref
| +--rw sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--rw sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--rw sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:
connectivity-context:
+--:(connectivity-context-sfc)
+--rw connectivity-context-sfp? sfc-sfp:service-function-
path-ref
augment
/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session/goa
m:destination-mep-address/goam:mp-address:
+--:(sf-mep-address)
| +--rw sf-mep-ref? sfc-sf:service-function-ref
| +--rw sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
+--rw sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--rw sfp-mep-ref? sfc-sfp:service-function-path-ref
augment
/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session/goa
m:connectivity-context:
+--:(connectivity-context-sfc)
+--rw connectivity-context-sfp? sfc-sfp:service-function-
path-ref
augment /goam-rpc:initiated-contiuity-check/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address:
+--:(sf-mep-address)
| +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam-rpc:initiated-contiuity-check/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address:
+--:(sf-mep-address)
| +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam-rpc:revoke-contiuity-check/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address:
+--:(sf-mep-address)
| +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam-rpc:revoke-contiuity-check/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address:
+--:(sf-mep-address)
| +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam-rpc:initiated-connectity-verification/goam-
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address:
+--:(sf-mep-address)
| +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam-rpc:initiated-connectity-verification/goam-
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address:
+--:(sf-mep-address)
| +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam-rpc:revoke-connectity-verification/goam-
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address:
+--:(sf-mep-address)
| +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam-rpc:revoke-connectity-verification/goam-
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address:
+--:(sf-mep-address)
| +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam-rpc:initiated-path-discovery/goam-rpc:input:
+--ro:path-discovery-layer SFC-layer
augment /goam-rpc:initiated-path-discovery/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address:
+--:(sf-mep-address)
| +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref <status> is one of:
+ for current
x for deprecated
o for obsolete
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref <flags> is one of:
augment /goam-rpc:initiated-path-discovery/goam-rpc:input/goam- rw for configuration data
rpc:destination-mep/goam-rpc:mp-address: ro for non-configuration data
-x for rpcs
-n for notifications
+--:(sf-mep-address) <name> is the name of the node
| +--ro sf-mep-ref? sfc-sf:service-function-ref If the node is augmented into the tree from another module, its name
is printed as <prefix>:<name>.
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref <opts> is one of:
+--:(sff-mep-address) ? for an optional leaf or choice
! for a presence container
* for a leaf-list or list
[<keys>] for a list's keys
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref <type> is the name of the type for leafs and leaf-lists
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref module: sfc-oam
augment /goam-rpc:initiated-path-discovery/goam-rpc:output/ goam- augment /goam:domains/goam:domain/goam:MAs/goam:MA/goam:
rpc:response/goam-rpc:destination-mp/goam-rpc:mp-address: connectivity-context:
+--:(sf-mep-address) +--:(connectivity-context-sfc)
| +--ro sf-mep-ref? sfc-sf:service-function-ref +--rw connectivity-context-sfp? sfc-sfp:service-function-
path-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref augment /goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:mp-
address:
+--:(sff-mep-address) +--:(sf-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref | +--rw sf-mep-ref? sfc-sf:service-function-ref
| +--rw sfp-mep-ref? sfc-sfp:service-function-path-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref +--:(sff-mep-address)
augment /goam-rpc:revoke-path-discovery/goam-rpc:input: | +--rw sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--ro:path-discovery-layer SFC-layer +--rw sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam-rpc:revoke-path-discovery/goam-rpc:input/goam- augment /goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:
rpc:source-mep/goam-rpc:mp-address: connectivity-context:
+--:(sf-mep-address) +--:(connectivity-context-sfc)
| +--ro sf-mep-ref? sfc-sf:service-function-ref +--rw connectivity-context-sfp? sfc-sfp:service-function-
path-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref augment
/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session/goa
m:destination-mep-address/goam:mp-address:
+--:(sff-mep-address) +--:(sf-mep-address)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref | +--rw sf-mep-ref? sfc-sf:service-function-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref | +--rw sfp-mep-ref? sfc-sfp:service-function-path-ref
augment /goam-rpc:revoke-path-discovery/goam-rpc:input/goam- +--:(sff-mep-address)
rpc:destination-mep/goam-rpc:mp-address:
+--:(sf-mep-address) +--rw sff-mep-ref? sfc-sff:service-function-forwarder-ref
| +--ro sf-mep-ref? sfc-sf:service-function-ref +--rw sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref augment
/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session/goa
m:connectivity-context:
+--:(sff-mep-address) +--:(connectivity-context-sfc)
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref +--rw connectivity-context-sfp? sfc-sfp:service-function-
path-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref augment /goam-rpc: contiuity-check/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address:
augment /goam-rpc:initiated-performance-measurement/goam- +--:(sf-mep-address)
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address:
+--:(sf-mep-address) | +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sf-mep-ref? sfc-sf:service-function-ref +--:(sff-mep-address)
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--:(sff-mep-address) +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref augment /goam-rpc: contiuity-check/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address:
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref +--:(sf-mep-address)
augment /goam-rpc:initiated-performance-measurement/goam- | +--ro sf-mep-ref? sfc-sf:service-function-ref
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address:
+--:(sf-mep-address) | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sf-mep-ref? sfc-sf:service-function-ref +--:(sff-mep-address)
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--:(sff-mep-address) +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref augment /goam-rpc: connectity-verification/goam-
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address:
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref +--:(sf-mep-address)
augment /goam-rpc:revoke-performance-measurement/goam- | +--ro sf-mep-ref? sfc-sf:service-function-ref
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address:
+--:(sf-mep-address) | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sf-mep-ref? sfc-sf:service-function-ref +--:(sff-mep-address)
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--:(sff-mep-address) +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref augment /goam-rpc: connectity-verification/goam-
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address:
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref +--:(sf-mep-address)
augment /goam-rpc:revoke-performance-measurement/goam- | +--ro sf-mep-ref? sfc-sf:service-function-ref
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address:
+--:(sf-mep-address) | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
| +--ro sf-mep-ref? sfc-sf:service-function-ref | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address) augment /goam-rpc: path-discovery/goam-rpc:input:
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref +--ro:path-discovery-layer SFC-layer
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref augment /goam-rpc: path-discovery/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address:
augment /goam-rpc:initiated-other-function/goam-rpc:input/goam- +--:(sf-mep-address)
rpc:source-mep/goam-rpc:mp-address:
+--:(sf-mep-address) | +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sf-mep-ref? sfc-sf:service-function-ref | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref +--:(sff-mep-address)
+--:(sff-mep-address) | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref augment /goam-rpc: path-discovery/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address:
augment /goam-rpc:initiated-other-function/goam-rpc:input/goam- +--:(sf-mep-address)
rpc:destination-mep/goam-rpc:mp-address:
+--:(sf-mep-address) | +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sf-mep-ref? sfc-sf:service-function-ref | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref +--:(sff-mep-address)
+--:(sff-mep-address) | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref augment /goam-rpc: path-discovery/goam-rpc:output/ goam-
rpc:response/goam-rpc:destination-mp/goam-rpc:mp-address:
augment /goam-rpc:revoke-other-function/goam-rpc:input/goam- +--:(sf-mep-address)
rpc:source-mep/goam-rpc:mp-address:
+--:(sf-mep-address) | +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sf-mep-ref? sfc-sf:service-function-ref | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref +--:(sff-mep-address)
+--:(sff-mep-address) | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref augment /goam-rpc:initiated-performance-measurement/goam-
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address:
augment /goam-rpc:revoke-other-function/goam-rpc:input/goam- +--:(sf-mep-address)
rpc:destination-mep/goam-rpc:mp-address:
+--:(sf-mep-address) | +--ro sf-mep-ref? sfc-sf:service-function-ref
| +--ro sf-mep-ref? sfc-sf:service-function-ref | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
| +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref +--:(sff-mep-address)
+--:(sff-mep-address) | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
| +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref augment /goam-rpc:initiated-performance-measurement/goam-
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address:
Figure 5 Data hierarchy of SFC OAM +--:(sf-mep-address)
5. SFC OAM YANG Module | +--ro sf-mep-ref? sfc-sf:service-function-ref
<CODE BEGINS> file "sfc-oam.yang" | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
module sfc-oam { +--:(sff-mep-address)
namespace "urn:huawei:params:xml:ns:yang:sfc-oam"; | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
prefix sfcoam; +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
import gen-oam { augment /goam-rpc:revoke-performance-measurement/goam-
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address:
prefix goam; +--:(sf-mep-address)
} | +--ro sf-mep-ref? sfc-sf:service-function-ref
import gen-oam-rpc {
prefix goam-rpc; | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
+--:(sff-mep-address)
} | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
import service-function { +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
prefix sfc-sf; augment /goam-rpc:revoke-performance-measurement/goam-
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address:
} +--:(sf-mep-address)
import service-function-path { | +--ro sf-mep-ref? sfc-sf:service-function-ref
prefix sfc-sfp; | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
} +--:(sff-mep-address)
import service-function-forwarder { | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
prefix sfc-sff; +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
} augment /goam-rpc:initiated-other-function/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address:
revision 2014-09-04 { +--:(sf-mep-address)
description | +--ro sf-mep-ref? sfc-sf:service-function-ref
"Initial revision."; | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
} +--:(sff-mep-address)
identity sfc { | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
base goam:technology-types; +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
description augment /goam-rpc:initiated-other-function/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address:
"sfc type"; +--:(sf-mep-address)
} | +--ro sf-mep-ref? sfc-sf:service-function-ref
typedef SFC-layer {
type enumeration { | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
enum "Service function layer" { +--:(sff-mep-address)
value 0; | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
+--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
} augment /goam-rpc:revoke-other-function/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address:
enum "SFC forwarding layer" { +--:(sf-mep-address)
value 1; | +--ro sf-mep-ref? sfc-sf:service-function-ref
} | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
} +--:(sff-mep-address)
} | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
augment +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
"/goam:domains/goam:domain/goam:MAs/goam:MA/goam:connectivity-
context" {
case connectivity-context-sfc { augment /goam-rpc:revoke-other-function/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address:
leaf connectivity-context-sfp { +--:(sf-mep-address)
type sfc-sfp:service-function-path-ref; | +--ro sf-mep-ref? sfc-sf:service-function-ref
} | +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
} +--:(sff-mep-address)
} | +--ro sff-mep-ref? sfc-sff:service-function-forwarder-ref
augment +--ro sfp-mep-ref? sfc-sfp:service-function-path-ref
"/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:mp-
address" {
case sf-mep-address { Data hierarchy of SFC OAM
description
"Service function (or service function forwarder) address plus 6. SFC OAM YANG Module
service function path id to identify one SFC MEP. A SFC MP can be a
service function or service function forwarder!";
leaf sf-mep-ref { <CODE BEGINS> file "xxx.yang"
when "/goam:domains/goam:domain/goam:technology='sfc'"; <CODE BEGINS> file "xxx.yang"
type sfc-sf:service-function-ref; module sfc-oam {
} namespace "urn:huawei:params:xml:ns:yang:sfc-oam";
leaf sfp-mep-ref { prefix sfcoam;
when "/goam:domains/goam:domain/goam:technology='sfc'"; import gen-oam {
prefix goam;
type sfc-sfp:service-function-path-ref; }
} import gen-oam-rpc {
} prefix goam-rpc;
case sff-mep-address { }
description import service-function {
"Service function address plus service function path id to prefix sfc-sf;
identify one SFC MEP. A SFC MP can be a service function or service
function forwarder!";
leaf sff-mep-ref { }
type sfc-sff:service-function-forwarder-ref; import service-function-path {
} prefix sfc-sfp;
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; import service-function-forwarder {
} prefix sfc-sff;
} }
} revision 2014-09-04 {
augment
"/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session/go
am:destination-mep-address/goam:mp-address" {
case sf-mep-address { description
leaf sf-mep-ref { "Initial revision.";
type sfc-sf:service-function-ref; }
} identity sfc {
leaf sfp-mep-ref { base goam:technology-types;
type sfc-sfp:service-function-path-ref; description
"sfc type";
} }
} typedef SFC-layer {
case sff-mep-address { type enumeration {
leaf sff-mep-ref { enum "Service function layer" {
type sfc-sff:service-function-forwarder-ref; value 0;
} }
leaf sfp-mep-ref { enum "SFC forwarding layer" {
type sfc-sfp:service-function-path-ref; value 1;
} }
} }
} }
augment augment
"/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session/go "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:connectivity-
am:connectivity-context" { context" {
case connectivity-context-sfc {
leaf connectivity-context-sfp {
type sfc-sfp:service-function-path-ref;
}
}
}
//SFC extension of contiuity-check part
augment "/goam-rpc:initiated-continuity-check/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address" {
case sf-mep-address {
leaf sf-mep-ref {
type sfc-sf:service-function-ref;
}
leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref;
}
}
case sff-mep-address {
leaf sff-mep-ref {
type sfc-sff:service-function-forwarder-ref;
} case connectivity-context-sfc {
leaf sfp-mep-ref { leaf connectivity-context-sfp {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
} }
} }
augment "/goam-rpc:initiated-continuity-check/goam-rpc:input/goam- augment
rpc:destination-mep/goam-rpc:mp-address" { "/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:mp-
address" {
case sf-mep-address { case sf-mep-address {
leaf sf-mep-ref { description
type sfc-sf:service-function-ref; "Service function (or service function forwarder) address plus
service function path id to identify one SFC MEP. A SFC MP can be a
service function or service function forwarder!";
} leaf sf-mep-ref {
leaf sfp-mep-ref { when "/goam:domains/goam:domain/goam:technology='sfc'";
type sfc-sfp:service-function-path-ref; type sfc-sf:service-function-ref;
} }
} leaf sfp-mep-ref {
case sff-mep-address { when "/goam:domains/goam:domain/goam:technology='sfc'";
leaf sff-mep-ref { type sfc-sfp:service-function-path-ref;
type sfc-sff:service-function-forwarder-ref; }
} }
leaf sfp-mep-ref { case sff-mep-address {
type sfc-sfp:service-function-path-ref; description
} "Service function address plus service function path id to
identify one SFC MEP. A SFC MP can be a service function or service
function forwarder!";
} leaf sff-mep-ref {
} type sfc-sff:service-function-forwarder-ref;
augment "/goam-rpc:revoke-continuity-check/goam-rpc:input/goam- }
rpc:source-mep/goam-rpc:mp-address" {
case sf-mep-address {
leaf sf-mep-ref { leaf sfp-mep-ref {
type sfc-sf:service-function-ref; type sfc-sfp:service-function-path-ref;
} }
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; }
} augment
"/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session/go
am:destination-mep-address/goam:mp-address" {
} case sf-mep-address {
case sff-mep-address { leaf sf-mep-ref {
leaf sff-mep-ref { type sfc-sf:service-function-ref;
type sfc-sff:service-function-forwarder-ref; }
} leaf sfp-mep-ref {
leaf sfp-mep-ref { type sfc-sfp:service-function-path-ref;
type sfc-sfp:service-function-path-ref; }
} }
} case sff-mep-address {
} leaf sff-mep-ref {
augment "/goam-rpc:revoke-continuity-check/goam-rpc:input/goam- type sfc-sff:service-function-forwarder-ref;
rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address { }
leaf sf-mep-ref { leaf sfp-mep-ref {
type sfc-sf:service-function-ref; type sfc-sfp:service-function-path-ref;
} }
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref;
} }
} augment
"/goam:domains/goam:domain/goam:MAs/goam:MA/goam:MEP/goam:session/go
am:connectivity-context" {
case sff-mep-address { case connectivity-context-sfc {
leaf connectivity-context-sfp {
leaf sff-mep-ref { type sfc-sfp:service-function-path-ref;
type sfc-sff:service-function-forwarder-ref; }
} }
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; //SFC extension of contiuity-check part
} augment "/goam-rpc: continuity-check/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address" {
} case sf-mep-address {
} leaf sf-mep-ref {
//SFC extension of connectity-verification part type sfc-sf:service-function-ref;
augment "/goam-rpc:initiated-connectivity-verification/goam- }
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address" {
case sf-mep-address { leaf sfp-mep-ref {
leaf sf-mep-ref { type sfc-sfp:service-function-path-ref;
type sfc-sf:service-function-ref; }
} }
leaf sfp-mep-ref { case sff-mep-address {
type sfc-sfp:service-function-path-ref; leaf sff-mep-ref {
} type sfc-sff:service-function-forwarder-ref;
} }
case sff-mep-address {
leaf sff-mep-ref { leaf sfp-mep-ref {
type sfc-sff:service-function-forwarder-ref; type sfc-sfp:service-function-path-ref;
} }
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; }
} augment "/goam-rpc: continuity-check/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address" {
} case sf-mep-address {
} leaf sf-mep-ref {
augment "/goam-rpc:initiated-connectivity-verification/goam- type sfc-sf:service-function-ref;
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address { }
leaf sf-mep-ref { leaf sfp-mep-ref {
type sfc-sf:service-function-ref; type sfc-sfp:service-function-path-ref;
} }
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; case sff-mep-address {
} leaf sff-mep-ref {
} type sfc-sff:service-function-forwarder-ref;
case sff-mep-address { }
leaf sff-mep-ref { leaf sfp-mep-ref {
type sfc-sff:service-function-forwarder-ref; type sfc-sfp:service-function-path-ref;
} }
leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; }
} }
} //SFC extension of connectity-verification part
} augment "/goam-rpc: connectivity-verification/goam-
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address" {
augment "/goam-rpc:revoke-connectity-verification/goam- case sf-mep-address {
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address" {
case sf-mep-address { leaf sf-mep-ref {
leaf sf-mep-ref { type sfc-sf:service-function-ref;
type sfc-sf:service-function-ref; }
} leaf sfp-mep-ref {
leaf sfp-mep-ref { type sfc-sfp:service-function-path-ref;
type sfc-sfp:service-function-path-ref; }
} }
} case sff-mep-address {
case sff-mep-address { leaf sff-mep-ref {
leaf sff-mep-ref { type sfc-sff:service-function-forwarder-ref;
type sfc-sff:service-function-forwarder-ref; }
} leaf sfp-mep-ref {
leaf sfp-mep-ref { type sfc-sfp:service-function-path-ref;
type sfc-sfp:service-function-path-ref; }
} }
} }
} augment "/goam-rpc: connectivity-verification/goam-
augment "/goam-rpc:revoke-connectity-verification/goam- rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address" {
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address { case sf-mep-address {
leaf sf-mep-ref { leaf sf-mep-ref {
type sfc-sf:service-function-ref; type sfc-sf:service-function-ref;
} }
leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref;
}
}
case sff-mep-address {
leaf sff-mep-ref {
type sfc-sff:service-function-forwarder-ref;
}
leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref;
}
}
}
//SFC extension of path-discovery part
augment "/goam-rpc:initiated-path-discovery/goam-rpc:input" {
description
"adds SFC specific items on the input";
leaf path-discovery-layer {
type SFC-layer;
description
"Identifying which SFC layer to run path discovery";
}
}
augment "/goam-rpc:initiated-path-discovery/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address" {
case sf-mep-address {
leaf sf-mep-ref {
type sfc-sf:service-function-ref; leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; }
} case sff-mep-address {
} leaf sff-mep-ref {
case sff-mep-address { type sfc-sff:service-function-forwarder-ref;
leaf sff-mep-ref { }
type sfc-sff:service-function-forwarder-ref; leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; }
} }
}
} //SFC extension of path-discovery part
augment "/goam-rpc:initiated-path-discovery/goam-rpc:input/goam- augment "/goam-rpc: path-discovery/goam-rpc:input" {
rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address { description
leaf sf-mep-ref { "adds SFC specific items on the input";
type sfc-sf:service-function-ref; leaf path-discovery-layer {
} type SFC-layer;
leaf sfp-mep-ref { description
type sfc-sfp:service-function-path-ref; "Identifying which SFC layer to run path discovery";
} }
} }
case sff-mep-address { augment "/goam-rpc: path-discovery/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address" {
leaf sff-mep-ref { case sf-mep-address {
type sfc-sff:service-function-forwarder-ref; leaf sf-mep-ref {
} type sfc-sf:service-function-ref;
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
} }
} }
augment "/goam-rpc:initiated-path-discovery/goam-rpc:output/goam- case sff-mep-address {
rpc:response/goam-rpc:destination-mp/goam-rpc:mp-address" {
case sf-mep-address { leaf sff-mep-ref {
leaf sf-mep-ref {
type sfc-sf:service-function-ref; type sfc-sff:service-function-forwarder-ref;
} }
leaf sfp-mep-ref { leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
} }
case sff-mep-address { }
leaf sff-mep-ref { augment "/goam-rpc: path-discovery/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address" {
type sfc-sff:service-function-forwarder-ref; case sf-mep-address {
leaf sf-mep-ref {
} type sfc-sf:service-function-ref;
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
} }
} }
augment "/goam-rpc:revoke-path-discovery/goam-rpc:input" { case sff-mep-address {
description leaf sff-mep-ref {
"adds SFC specific items on the input"; type sfc-sff:service-function-forwarder-ref;
leaf path-discovery-layer { }
type SFC-layer; leaf sfp-mep-ref {
description type sfc-sfp:service-function-path-ref;
"Identifying which SFC layer to run path discovery"; }
} }
} }
augment "/goam-rpc:revoke-path-discovery/goam-rpc:input/goam- augment "/goam-rpc: path-discovery/goam-rpc:output/goam-
rpc:source-mep/goam-rpc:mp-address" { rpc:response/goam-rpc:destination-mp/goam-rpc:mp-address" {
case sf-mep-address { case sf-mep-address {
leaf sf-mep-ref { leaf sf-mep-ref {
type sfc-sf:service-function-ref; type sfc-sf:service-function-ref;
} }
leaf sfp-mep-ref { leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
} }
case sff-mep-address { case sff-mep-address {
leaf sff-mep-ref { leaf sff-mep-ref {
type sfc-sff:service-function-forwarder-ref; type sfc-sff:service-function-forwarder-ref;
} }
leaf sfp-mep-ref { leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
} }
} }
augment "/goam-rpc:revoke-path-discovery/goam-rpc:input/goam- //SFC extension of performance-measurement part
rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address { augment "/goam-rpc:initiated-performance-measurement/goam-
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address" {
leaf sf-mep-ref { case sf-mep-address {
type sfc-sf:service-function-ref;
} leaf sf-mep-ref {
leaf sfp-mep-ref { type sfc-sf:service-function-ref;
type sfc-sfp:service-function-path-ref; }
} leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
case sff-mep-address { }
leaf sff-mep-ref { }
type sfc-sff:service-function-forwarder-ref; case sff-mep-address {
leaf sff-mep-ref {
} type sfc-sff:service-function-forwarder-ref;
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
} }
} }
//SFC extension of performance-measurement part }
augment "/goam-rpc:initiated-performance-measurement/goam- augment "/goam-rpc:initiated-performance-measurement/goam-
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address" { rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address { case sf-mep-address {
leaf sf-mep-ref { leaf sf-mep-ref {
type sfc-sf:service-function-ref; type sfc-sf:service-function-ref;
} }
leaf sfp-mep-ref { leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
} }
case sff-mep-address { case sff-mep-address {
leaf sff-mep-ref { leaf sff-mep-ref {
type sfc-sff:service-function-forwarder-ref; type sfc-sff:service-function-forwarder-ref;
} }
leaf sfp-mep-ref { leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
}
} }
} augment "/goam-rpc:revoke-performance-measurement/goam-
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address" {
augment "/goam-rpc:initiated-performance-measurement/goam- case sf-mep-address {
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address { leaf sf-mep-ref {
leaf sf-mep-ref { type sfc-sf:service-function-ref;
type sfc-sf:service-function-ref; }
} leaf sfp-mep-ref {
leaf sfp-mep-ref { type sfc-sfp:service-function-path-ref;
type sfc-sfp:service-function-path-ref; }
} }
} case sff-mep-address {
case sff-mep-address {
leaf sff-mep-ref { leaf sff-mep-ref {
type sfc-sff:service-function-forwarder-ref; type sfc-sff:service-function-forwarder-ref;
} }
leaf sfp-mep-ref { leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
} }
} }
augment "/goam-rpc:revoke-performance-measurement/goam- augment "/goam-rpc:revoke-performance-measurement/goam-
rpc:input/goam-rpc:source-mep/goam-rpc:mp-address" { rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address {
leaf sf-mep-ref { case sf-mep-address {
leaf sf-mep-ref {
type sfc-sf:service-function-ref; type sfc-sf:service-function-ref;
} }
leaf sfp-mep-ref { leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
} }
case sff-mep-address { case sff-mep-address {
leaf sff-mep-ref { leaf sff-mep-ref {
type sfc-sff:service-function-forwarder-ref; type sfc-sff:service-function-forwarder-ref;
} }
leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
} }
} }
augment "/goam-rpc:revoke-performance-measurement/goam- }
rpc:input/goam-rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address { //SFC extension of other-function part
leaf sf-mep-ref { augment "/goam-rpc:initiated-other-function/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address" {
type sfc-sf:service-function-ref; case sf-mep-address {
} leaf sf-mep-ref {
leaf sfp-mep-ref { type sfc-sf:service-function-ref;
type sfc-sfp:service-function-path-ref; }
} leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
case sff-mep-address { }
leaf sff-mep-ref { }
type sfc-sff:service-function-forwarder-ref; case sff-mep-address {
} leaf sff-mep-ref {
leaf sfp-mep-ref { type sfc-sff:service-function-forwarder-ref;
type sfc-sfp:service-function-path-ref; }
} leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
} }
//SFC extension of other-function part }
augment "/goam-rpc:initiated-other-function/goam-rpc:input/goam- }
rpc:source-mep/goam-rpc:mp-address" {
case sf-mep-address { augment "/goam-rpc:initiated-other-function/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address" {
leaf sf-mep-ref { case sf-mep-address {
type sfc-sf:service-function-ref; leaf sf-mep-ref {
} type sfc-sf:service-function-ref;
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
} }
case sff-mep-address { }
leaf sff-mep-ref { case sff-mep-address {
type sfc-sff:service-function-forwarder-ref; leaf sff-mep-ref {
} type sfc-sff:service-function-forwarder-ref;
leaf sfp-mep-ref { }
leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref; type sfc-sfp:service-function-path-ref;
} }
} }
} }
augment "/goam-rpc:initiated-other-function/goam-rpc:input/goam- augment "/goam-rpc:revoke-other-function/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address" { rpc:source-mep/goam-rpc:mp-address" {
case sf-mep-address { case sf-mep-address {
leaf sf-mep-ref { leaf sf-mep-ref {
type sfc-sf:service-function-ref;
} type sfc-sf:service-function-ref;
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
} }
case sff-mep-address { }
leaf sff-mep-ref { case sff-mep-address {
type sfc-sff:service-function-forwarder-ref; leaf sff-mep-ref {
} type sfc-sff:service-function-forwarder-ref;
leaf sfp-mep-ref { }
type sfc-sfp:service-function-path-ref; leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
} }
} }
}
augment "/goam-rpc:revoke-other-function/goam-rpc:input/goam- augment "/goam-rpc:revoke-other-function/goam-rpc:input/goam-
rpc:source-mep/goam-rpc:mp-address" { rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address {
leaf sf-mep-ref {
type sfc-sf:service-function-ref;
}
leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref;
}
}
case sff-mep-address {
leaf sff-mep-ref {
type sfc-sff:service-function-forwarder-ref;
}
leaf sfp-mep-ref {
type sfc-sfp:service-function-path-ref;
}
}
}
augment "/goam-rpc:revoke-other-function/goam-rpc:input/goam-
rpc:destination-mep/goam-rpc:mp-address" {
case sf-mep-address {
leaf sf-mep-ref {
type sfc-sf:service-function-ref; case sf-mep-address {
} leaf sf-mep-ref {
leaf sfp-mep-ref { type sfc-sf:service-function-ref;
type sfc-sfp:service-function-path-ref; }
} leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
case sff-mep-address { }
leaf sff-mep-ref { }
type sfc-sff:service-function-forwarder-ref; case sff-mep-address {
} leaf sff-mep-ref {
leaf sfp-mep-ref { type sfc-sff:service-function-forwarder-ref;
type sfc-sfp:service-function-path-ref; }
} leaf sfp-mep-ref {
} type sfc-sfp:service-function-path-ref;
} }
} }
<CODE ENDS> }
Figure 6 YANG module of SFC OAM }
<CODE ENDS>
6. Security Considerations 7. Security Considerations
TBD TBD.
7. IANA Considerations 8. IANA Considerations
This document registers the following namespace URI in the IETF XML TBD.
registry.
URI:TBD 9. References
8. References 9.1. Normative References
8.1. Normative References [IEEE.802.1Q-2011]
Institute of Electrical and Electronics Engineers, "Media
Access Control (MAC) Bridges and Virtual Bridged Local
Area Networks", IEEE Standard 802.1Q, August 2011.
[1] 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, March 1997. Requirement Levels", March 1997.
[2] Crocker, D. and Overell, P.(Editors), "Augmented BNF for [RFC2234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Syntax Specifications: ABNF", RFC 2234, Internet Mail Specifications: ABNF", RFC 2234, November 1997.
Consortium and Demon Internet Ltd., November 1997.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 9.2. Informative References
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2234] Crocker, D. and Overell, P.(Editors), "Augmented BNF for [I-D.penno-sfc-yang]
Syntax Specifications: ABNF", RFC 2234, Internet Mail Penno, R., Quinn, P., Zhou, D., and J. Li, "Yang Data
Consortium and Demon Internet Ltd., November 1997. Model for Service Function Chaining", draft-penno-sfc-
yang-13 (work in progress), March 2015.
[8021Q] IEEE, "Media Access Control (MAC) Bridges and Virtual [I-D.wang-lime-rpc-yang-oam-management]
Bridged Local Area Networks", IEEE Std 802.1Q-2011, August, Wang, Z. and Q. Wu, "Additional RPC definitions to Generic
2011. YANG Data Model for layer Independent OAM Management",
draft-wang-lime-rpc-yang-oam-management-00 (work in
progress), October 2014.
8.2. Informative References [Y.1731] "OAM functions and mechanisms for Ethernet based
networks", ITU G.8013/Y.1731, July 2011.
[Y1731] ITU, "OAM functions and mechanisms for Ethernet based Authors' Addresses
networks", ITU-T G.8013/Y.1731, July, 2011
[RFC6291] Andersson, L., et.al., "Guidelines for the use of the Liang Xia
"OAM" Acronym in the IETF" RFC 6291, June 2011. Huawei Technologies,Co.,Ltd
101 Software Avenue, Yuhua District
Nanjing 210012
China
[I-D.tissa-lime-yang-oam-model] Senevirathne , T. and Q. Wu, "YANG Email: frank.xialiang@huawei.com
Data Model for Generic Operations, Administration, and Qin Wu
Maintenance (OAM)", Work in Progress, November 2014. Huawei
101 Software Avenue, Yuhua District
Nanjing, Jiangsu 210012
China
[I-D.wang-lime-rpc-yang-oam-management] Wang, Z., " Additional RPC Email: bill.wu@huawei.com
definitions to Generic YANG Data Model for layer
Independent OAM Management ", Work in Progress, December,
2014.
[SFCYANG] Penno, R., et.al., "Yang Data Model for Service Function Deepak Kumar
Chaining", Work in Progress, October, 2014. Cisco Systems
510 McCarthy Blvd Milpitas,
CA 95035
USA
9. Acknowledgments Email: dekumar@cisco.com
This document was prepared using 2-Word-v2.0.template.dot. Mohamed Boucadair
France Telecom
Rennes 35000
France
Authors' Addresses Email: mohamed.boucadair@orange.com
Liang Xia Zitao Wang
Huawei Huawei Technologies,Co.,Ltd
Email: Frank.xialiang@huawei.com 101 Software Avenue, Yuhua District
Qin Wu Nanjing 210012
Huawei China
Email: Bill.wu@huawei.com
Deepak Kumar Email: wangzitao@huawei.com
CISCO Systems
510 McCarthy Blvd
Milpitas, CA 95035.
Email: dekumar@cisco.com
 End of changes. 609 change blocks. 
1105 lines changed or deleted 805 lines changed or added

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