draft-ietf-dmm-fpc-cpdp-04.txt   draft-ietf-dmm-fpc-cpdp-05.txt 
DMM Working Group S. Matsushima DMM Working Group S. Matsushima
Internet-Draft SoftBank Internet-Draft SoftBank
Intended status: Standards Track L. Bertz Intended status: Standards Track L. Bertz
Expires: April 2, 2017 Sprint Expires: May 4, 2017 Sprint
M. Liebsch M. Liebsch
NEC NEC
S. Gundavelli S. Gundavelli
Cisco Cisco
D. Moses D. Moses
Intel Corporation Intel Corporation
September 29, 2016 October 31, 2016
Protocol for Forwarding Policy Configuration (FPC) in DMM Protocol for Forwarding Policy Configuration (FPC) in DMM
draft-ietf-dmm-fpc-cpdp-04.txt draft-ietf-dmm-fpc-cpdp-05.txt
Abstract Abstract
This document describes the solution of data-plane separation from This document describes the solution of data-plane separation from
control-plane which enables a flexible mobility management system control-plane which enables a flexible mobility management system
using agent and client functions. To configure data-plane nodes and using agent and client functions. To configure data-plane nodes and
functions, the data-plane is abstracted by an agent interface to the functions, the data-plane is abstracted by an agent interface to the
client. The data-plane abstraction model is extensible in order to client. The data-plane abstraction model is extensible in order to
support many different type of mobility management systems and data- support many different type of mobility management systems and data-
plane functions. plane functions.
skipping to change at page 1, line 43 skipping to change at page 1, line 43
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 2, 2017. This Internet-Draft will expire on May 4, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 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 respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Conventions and Terminology . . . . . . . . . . . . . . . . . 4 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. FPC Architecture . . . . . . . . . . . . . . . . . . . . . . 4 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Information Model . . . . . . . . . . . . . . . . . . . . . . 7 4. FPC Architecture . . . . . . . . . . . . . . . . . . . . . . 5
4.1. FPC-Topology . . . . . . . . . . . . . . . . . . . . . . 7 5. Information Model . . . . . . . . . . . . . . . . . . . . . . 8
4.1.1. Domains . . . . . . . . . . . . . . . . . . . . . . . 8 5.1. FPC-Topology . . . . . . . . . . . . . . . . . . . . . . 8
4.1.2. DPN-groups . . . . . . . . . . . . . . . . . . . . . 8 5.1.1. Domains . . . . . . . . . . . . . . . . . . . . . . . 9
4.1.3. DPNs . . . . . . . . . . . . . . . . . . . . . . . . 10 5.1.2. DPN-groups . . . . . . . . . . . . . . . . . . . . . 9
4.2. FPC-Policy . . . . . . . . . . . . . . . . . . . . . . . 11 5.1.3. DPNs . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2.1. Descriptors . . . . . . . . . . . . . . . . . . . . . 11 5.2. FPC-Policy . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.2. Actions . . . . . . . . . . . . . . . . . . . . . . . 12 5.2.1. Descriptors . . . . . . . . . . . . . . . . . . . . . 12
4.2.3. Policies . . . . . . . . . . . . . . . . . . . . . . 13 5.2.2. Actions . . . . . . . . . . . . . . . . . . . . . . . 13
4.2.4. Policy-groups . . . . . . . . . . . . . . . . . . . . 15 5.2.3. Policies . . . . . . . . . . . . . . . . . . . . . . 14
4.3. FPC-Mobility . . . . . . . . . . . . . . . . . . . . . . 15 5.2.4. Policy-groups . . . . . . . . . . . . . . . . . . . . 16
4.3.1. Port . . . . . . . . . . . . . . . . . . . . . . . . 15 5.3. FPC-Mobility . . . . . . . . . . . . . . . . . . . . . . 16
4.3.2. Context . . . . . . . . . . . . . . . . . . . . . . . 16 5.3.1. Port . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3.3. Monitors . . . . . . . . . . . . . . . . . . . . . . 21 5.3.2. Context . . . . . . . . . . . . . . . . . . . . . . . 17
4.4. Namespace and Format . . . . . . . . . . . . . . . . . . 22 5.3.3. Monitors . . . . . . . . . . . . . . . . . . . . . . 22
5. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.4. Namespace and Format . . . . . . . . . . . . . . . . . . 23
5.1. Protocol Messages and Semantics . . . . . . . . . . . . . 23 5.5. Attribute Application . . . . . . . . . . . . . . . . . . 24
5.1.1. CONF and CONF_BUNDLES Messages . . . . . . . . . . . 25 5.6. Policy and Runtime Data . . . . . . . . . . . . . . . . . 25
5.1.2. Monitors . . . . . . . . . . . . . . . . . . . . . . 28 6. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2. Protocol Operation . . . . . . . . . . . . . . . . . . . 29 6.1. Protocol Messages and Semantics . . . . . . . . . . . . . 25
5.2.1. Simple RPC Operation . . . . . . . . . . . . . . . . 29 6.1.1. CONF and CONF_BUNDLES Messages . . . . . . . . . . . 28
5.2.2. Policy And Mobility on the Agent . . . . . . . . . . 33 6.1.2. Monitors . . . . . . . . . . . . . . . . . . . . . . 31
5.2.3. Optimization for Current and Subsequent Messages . . 35 6.2. Protocol Operation . . . . . . . . . . . . . . . . . . . 32
5.2.4. Pre-provisioning . . . . . . . . . . . . . . . . . . 40 6.2.1. Simple RPC Operation . . . . . . . . . . . . . . . . 32
6. Protocol Message Details . . . . . . . . . . . . . . . . . . 41 6.2.2. Policy And Mobility on the Agent . . . . . . . . . . 37
6.1. Data Structures And Type Assignment . . . . . . . . . . . 41 6.2.3. Optimization for Current and Subsequent Messages . . 39
6.1.1. Policy Structures . . . . . . . . . . . . . . . . . . 41 6.2.4. Pre-provisioning . . . . . . . . . . . . . . . . . . 44
6.1.2. Mobilty Structures . . . . . . . . . . . . . . . . . 43 7. Protocol Message Details . . . . . . . . . . . . . . . . . . 45
6.1.3. Topology Structures . . . . . . . . . . . . . . . . . 45 7.1. Data Structures And Type Assignment . . . . . . . . . . . 45
6.1.4. Monitors . . . . . . . . . . . . . . . . . . . . . . 46 7.1.1. Policy Structures . . . . . . . . . . . . . . . . . . 45
6.2. Message Attributes . . . . . . . . . . . . . . . . . . . 48 7.1.2. Mobilty Structures . . . . . . . . . . . . . . . . . 47
6.2.1. Header . . . . . . . . . . . . . . . . . . . . . . . 48 7.1.3. Topology Structures . . . . . . . . . . . . . . . . . 49
6.2.2. CONF and CONF_BUNDLES Attributes and Notifications . 48 7.1.4. Monitors . . . . . . . . . . . . . . . . . . . . . . 50
6.2.3. Monitors . . . . . . . . . . . . . . . . . . . . . . 50
7. Derived and Subtyped Attributes . . . . . . . . . . . . . . . 51 7.2. Message Attributes . . . . . . . . . . . . . . . . . . . 52
7.1. 3GPP Specific Extenstions . . . . . . . . . . . . . . . . 54 7.2.1. Header . . . . . . . . . . . . . . . . . . . . . . . 52
8. Implementation Status . . . . . . . . . . . . . . . . . . . . 56 7.2.2. CONF and CONF_BUNDLES Attributes and Notifications . 52
9. Security Considerations . . . . . . . . . . . . . . . . . . . 60 7.2.3. Monitors . . . . . . . . . . . . . . . . . . . . . . 55
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 60 8. Derived and Subtyped Attributes . . . . . . . . . . . . . . . 55
11. Work Team Participants . . . . . . . . . . . . . . . . . . . 60 8.1. 3GPP Specific Extenstions . . . . . . . . . . . . . . . . 58
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 60 9. Implementation Status . . . . . . . . . . . . . . . . . . . . 60
12.1. Normative References . . . . . . . . . . . . . . . . . . 60 10. Security Considerations . . . . . . . . . . . . . . . . . . . 64
12.2. Informative References . . . . . . . . . . . . . . . . . 61 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 65
Appendix A. YANG Data Model for the FPC protocol . . . . . . . . 62 12. Work Team Participants . . . . . . . . . . . . . . . . . . . 67
A.1. YANG Models . . . . . . . . . . . . . . . . . . . . . . . 62 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 67
A.1.1. FPC Base YANG Model . . . . . . . . . . . . . . . . . 62 13.1. Normative References . . . . . . . . . . . . . . . . . . 67
A.1.2. FPC Agent YANG Model . . . . . . . . . . . . . . . . 73 13.2. Informative References . . . . . . . . . . . . . . . . . 67
A.1.3. PMIP QoS Model . . . . . . . . . . . . . . . . . . . 85 Appendix A. YANG Data Model for the FPC protocol . . . . . . . . 68
A.1.4. Traffic Selectors YANG Model . . . . . . . . . . . . 97 A.1. FPC Agent YANG Model . . . . . . . . . . . . . . . . . . 69
A.1.5. FPC 3GPP Mobility YANG Model . . . . . . . . . . . . 107 A.2. YANG Models . . . . . . . . . . . . . . . . . . . . . . . 85
A.1.6. FPC / PMIP Integration YANG Model . . . . . . . . . . 118 A.2.1. FPC YANG Model . . . . . . . . . . . . . . . . . . . 85
A.1.7. FPC Policy Extension YANG Model . . . . . . . . . . . 124 A.2.2. PMIP QoS Model . . . . . . . . . . . . . . . . . . . 99
A.2. FPC Agent Information Model YANG Tree . . . . . . . . . . 126 A.2.3. Traffic Selectors YANG Model . . . . . . . . . . . . 112
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 130 A.2.4. FPC 3GPP Mobility YANG Model . . . . . . . . . . . . 123
A.2.5. FPC / PMIP Integration YANG Model . . . . . . . . . . 138
A.2.6. FPC Policy Extension YANG Model . . . . . . . . . . . 145
A.3. FPC nformation Model YANG Tree . . . . . . . . . . . . . 148
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 152
1. Introduction 1. Introduction
This document describes Forwarding Policy Configuration (FPC), the This document describes Forwarding Policy Configuration (FPC), the
solution of data-plane separation from control-plane which enables solution of data-plane separation from control-plane which enables
flexible mobility management systems using agent and client flexible mobility management systems using agent and client
functions. To configure data-plane nodes and functions, the data- functions. To configure data-plane nodes and functions, the data-
plane is abstracted in the agent which provides an interface to the plane is abstracted in the agent which provides an interface to the
client. client.
skipping to change at page 4, line 20 skipping to change at page 4, line 22
matched to the Descriptors in the rule. An arbitrary set of matched to the Descriptors in the rule. An arbitrary set of
policies is abstracted as a Policy-group which is applied to policies is abstracted as a Policy-group which is applied to
Ports. Ports.
Mobility: An endpoint of a mobility session is abstracted as a Mobility: An endpoint of a mobility session is abstracted as a
Context with its associated runtime concrete attributes, such as Context with its associated runtime concrete attributes, such as
tunnel endpoints, tunnel identifiers, delegated prefix(es), tunnel endpoints, tunnel identifiers, delegated prefix(es),
routing information, etc. Contexts are attached to DPN-groups routing information, etc. Contexts are attached to DPN-groups
along with consequence of the control plane. One or multiple along with consequence of the control plane. One or multiple
Contexts which have same sets of policies are assigned Ports which Contexts which have same sets of policies are assigned Ports which
abstract those policiy sets. A Context can belong to multiple abstract those policy sets. A Context can belong to multiple
Ports which serve different kinds of purpose and policy. Monitors Ports which serve different kinds of purpose and policy. Monitors
aprovide a mechanism to produce reports when events regarding provide a mechanism to produce reports when events regarding
Ports, Sessions, DPNs or the Agent occurs. Ports, Sessions, DPNs or the Agent occurs.
The Agent collects applicable sets of forwarding policies for the The Agent collects applicable sets of forwarding policies for the
mobility sessions from the data model, and then renders those mobility sessions from the data model, and then renders those
policies into specific configurations for each DPN to which the policies into specific configurations for each DPN to which the
sessions attached. Specific protocols and configurations to sessions attached. Specific protocols and configurations to
configure DPN from FPC Agent are out of scope of this document. configure DPN from FPC Agent are out of scope of this document.
The data-plane abstraction model is extensible in order to support The data-plane abstraction model is extensible in order to support
many different types of mobility management systems and data-plane many different types of mobility management systems and data-plane
functions. The architecture and protocol design of FPC intends not functions. The architecture and protocol design of FPC intends not
to tie to specific types of access technologies and mobility to tie to specific types of access technologies and mobility
protocols. protocols.
2. Conventions and Terminology 2. Conventions
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 [RFC2119]. document are to be interpreted as described in [RFC2119].
3. FPC Architecture 3. Terminology
DPN: A data-plane node (DPN) is capable of
deploying data-plane features. DPNs may be
switches or routers regardless of their
realiziation, i.e. whether they are hardware
or software based.
FPC Agent: A functional entity in FPC that manages DPNs
and provides abstracted data-plane networks
to mobility management systems and/or
applications through FPC Clients.
FPC Client: A functional entity in FPC that is integrated
with mobility management systems and/or
applications to control forwarding policy,
mobility sessions and DPNs.
Tenant: An operational entity that manages mobility
management systems or applications which
require data-plane functions.
Domain: One or more DPNs that form a data-plane
network. A mobility management system or an
application in a tenant may utilize a single
or multiple domains.
Port: A set of forwarding policies.
Context: An abstracted endpoint of a mobility session
associated with runtime attributes. Ports
may apply to Context which instantiates those
forwarding policies on a DPN.
4. FPC Architecture
In accordance with the requirements of flexible data-plane functions In accordance with the requirements of flexible data-plane functions
deployment described in [RFC7333], FPC provides a means for mobility deployment described in [RFC7333], FPC provides a means for mobility
control-plane and applications to handle DPNs that must be configured control-plane and applications to handle DPNs that must be configured
with various roles of the mobility management aspect described in with various roles of the mobility management aspect described in
[I-D.ietf-dmm-deployment-models]. [I-D.ietf-dmm-deployment-models].
FPC uses building blocks of Agent, Client and data-plane abstraction FPC uses building blocks of Agent, Client and data-plane abstraction
models as the interface between the agent and the client. models as the interface between the agent and the client.
Mobility control-plane and applications integrate the FPC Client Mobility control-plane and applications integrate the FPC Client
function and connect to FPC Agent functions. The Client and the function and connect to FPC Agent functions. The Client and the
Agent communicate based on data-plane abstraction models described in Agent communicate based on data-plane abstraction models described in
Section 4. Along with models, the control-plane and the applications Section 5. Along with models, the control-plane and the applications
put forwarding policies for their mobility sessions on the Agent. put forwarding policies for their mobility sessions on the Agent.
The Agent connects to DPN(s) to manage their configuration. These The Agent connects to DPN(s) to manage their configuration. These
configurations are rendered from the forwarding policies by the configurations are rendered from the forwarding policies by the
Agent. FPC Agent may be implemented in a network controller that Agent. FPC Agent may be implemented in a network controller that
handles multiple DPNs or it also may be integrated into a DPN. handles multiple DPNs or it also may be integrated into a DPN.
The FPC architecture supports multi-tenancy where the FPC enabled The FPC architecture supports multi-tenancy where the FPC enabled
data-plane supports multiple tenants of mobile operator networks and/ data-plane supports multiple tenants of mobile operator networks and/
or applications. DPNs on the data-plane run in multiple data-plane or applications. DPNs on the data-plane run in multiple data-plane
roles which are defined per session, domain and tenant. roles which are defined per session, domain and tenant.
This architecture is illustrated in Figure 1. This document does not This architecture is illustrated in Figure 1. This document does not
adopt a specific protocol for the FPC envelope protocol and it is out adopt a specific protocol for the FPC envelope protocol and it is out
of scope. However it must be capable of supporting FPC protocol of scope. However it must be capable of supporting FPC protocol
messages and transactions described in Section 5. messages and transactions described in Section 6.
+-------------------------+ +-------------------------+
| Mobility Control-Plane | | Mobility Control-Plane |
| and | | and |
| Applications | | Applications |
|+-----------------------+| |+-----------------------+|
|| FPC Client || || FPC Client ||
|+----------^------------+| |+----------^------------+|
+-----------|-------------+ +-----------|-------------+
FPC envelope protocol | FPC envelope protocol |
skipping to change at page 6, line 51 skipping to change at page 7, line 51
| DPN Configuration | | DPN Configuration | | DPN Configuration | | DPN Configuration |
+--------------------+ +--------------------+ +--------------------+ +--------------------+
Figure 1: Reference Forwarding Policy Configuration (FPC) Figure 1: Reference Forwarding Policy Configuration (FPC)
Architecture Architecture
Note that the FPC envelope protocol is only required to handle Note that the FPC envelope protocol is only required to handle
runtime data in the Mobility model. The rest of the FPC models, runtime data in the Mobility model. The rest of the FPC models,
namely Topology and Policy, are pre-configured, therefore real-time namely Topology and Policy, are pre-configured, therefore real-time
data handling capabilities are not required for them. Operators that data handling capabilities are not required for them. Operators that
are tenants in the FPC data-plane can configure Toplogy and Policy on are tenants in the FPC data-plane can configure Topology and Policy
the Agent through other means, such as Restconf on the Agent through other means, such as Restconf
[I-D.ietf-netconf-restconf] or Netconf [RFC6241]. [I-D.ietf-netconf-restconf] or Netconf [RFC6241].
4. Information Model 5. Information Model
This section describes information model that represents the concept This section describes information model that represents the concept
of FPC which is language and protocol neutral. Figure 2 is an of FPC which is language and protocol neutral. Figure 2 is an
overview of FPC data-plane abstraction model. overview of FPC data-plane abstraction model.
(Mobile operator tenant that abstracted data-plane is used) (Mobile operator tenant that abstracted data-plane is used)
| |
+---FPC-Topology +---FPC-Topology
| | | |
| +---Domains | +---Domains
skipping to change at page 7, line 41 skipping to change at page 8, line 41
| +---Policy-groups | +---Policy-groups
| |
+---FPC-Mobility +---FPC-Mobility
| |
+---Ports +---Ports
| |
+---Contexts +---Contexts
Figure 2: FPC Data-plane Abstraction Model Figure 2: FPC Data-plane Abstraction Model
4.1. FPC-Topology 5.1. FPC-Topology
Topology abstraction enables an actual data-plane network to support Topology abstraction enables an actual data-plane network to support
multiple mobile operator's topologies of their data-plane. The FPC- multiple mobile operator's topologies of their data-plane. The FPC-
Topology consists of DPNs, DPN-groups and Domains which abstract Topology consists of DPNs, DPN-groups and Domains which abstract
data-plane topologies for the Client's mobility control-planes and data-plane topologies for the Client's mobility control-planes and
applications. applications.
A mobile operator who utilizes a FPC enabled data-plane network can A mobile operator who utilizes a FPC enabled data-plane network can
virtually create their DPNs along with their data-plane design on the virtually create their DPNs along with their data-plane design on the
Agent. The operator also creates a DPN-group of which the DPNs are Agent. The operator also creates a DPN-group of which the DPNs are
attributed roles of mobility management such as access, anchors and attributed roles of mobility management such as access, anchors and
domains. domains.
4.1.1. Domains 5.1.1. Domains
A domain is defined by the operators to attribute DPN-groups to the A domain is defined by the operators to attribute DPN-groups to the
domain. Domains may represent services or applications within the domain. Domains may represent services or applications within the
operator. operator.
(FPC-Topology) (FPC-Topology)
| |
+---Domains +---Domains
| |
+---Domain-id +---Domain-id
| |
+---Domain-name +---Domain-name
| |
+---Domain-type +---Domain-type
Figure 3: Domain Model Structure Figure 3: Domain Model Structure
Domain-id: Identifier of Domain. The ID format SHOULD refer to Domain-id: Identifier of Domain. The ID format SHOULD refer to
Section 4.4. Section 5.4.
Domain-name: Defines Domain name. Domain-name: Defines Domain name.
Domain-type: Specifies which type of communication allowed within Domain-type: Specifies which type of communication allowed within
the domain, such as ipv4, ipv6, ipv4v6 or ieee802. the domain, such as ipv4, ipv6, ipv4v6 or ieee802.
4.1.2. DPN-groups 5.1.2. DPN-groups
A DPN-group defines a set of DPNs which share common data-plane A DPN-group defines a set of DPNs which share common data-plane
attributes. DPN-groups consist data-plane topology that consists of attributes. DPN-groups consist data-plane topology that consists of
a DPN-group of access nodes connecting to an anchor nodes DPN-group. a DPN-group of access nodes connecting to an anchor nodes DPN-group.
DPN Group has attributes such as the data-plane role, supported DPN Group has attributes such as the data-plane role, supported
access technologies, mobility profiles, connected peer groups and access technologies, mobility profiles, connected peer groups and
domain. domain.
(FPC-Topology) (FPC-Topology)
skipping to change at page 9, line 24 skipping to change at page 10, line 24
| |
+---Access-type +---Access-type
| |
+---Mobility-profile +---Mobility-profile
| |
+---DPN-group-peers +---DPN-group-peers
Figure 4: DPN-groups Model Structure Figure 4: DPN-groups Model Structure
DPN-group-id: Defines identifier of DPN-group. The ID format SHOULD DPN-group-id: Defines identifier of DPN-group. The ID format SHOULD
refer to Section 4.4. refer to Section 5.4.
Data-plane-role: Defines data-plane role of the DPN-group, such as Data-plane-role: Defines data-plane role of the DPN-group, such as
access-dpn, L2/L3 or anchor-dpn. access-dpn, L2/L3 or anchor-dpn.
Domains: Specifies domains which the DPN-group belongs to. Domains: Specifies domains which the DPN-group belongs to.
Access-type: Defines access type which the DPN-group supports such Access-type: Defines access type which the DPN-group supports such
as ethernet(802.3/11), 3gpp cellular(S1, RAB), if any. as ethernet(802.3/11), 3gpp cellular(S1, RAB), if any.
Mobility-profile: Defines supported mobility profile, such as ietf- Mobility-profile: Defines supported mobility profile, such as ietf-
pmip, 3gpp, or new profiles defined as extensions of this pmip, 3gpp, or new profiles defined as extensions of this
specification. When those profiles are correctly defined, some specification. When those profiles are correctly defined, some
or all data-plane parameters of contexts can be automatically or all data-plane parameters of contexts can be automatically
derived from this profile by FPC Agent. derived from this profile by FPC Agent.
DPN-group-peers: Defines remote peers of DPN-group with parameters DPN-group-peers: Defines remote peers of DPN-group with parameters
described in Section 4.1.2.1. described in Section 5.1.2.1.
4.1.2.1. DPN-group Peers 5.1.2.1. DPN-group Peers
DPN-group-peers defines parameters of remote peer DPNs as illustrated DPN-group-peers defines parameters of remote peer DPNs as illustrated
in Figure 5. in Figure 5.
(DPN-groups) (DPN-groups)
| |
+---DPN-group-peers +---DPN-group-peers
| |
+---Remote-DPN-group-id +---Remote-DPN-group-id
| |
+---Remote-mobility-profile +---Remote-mobility-profile
| |
+---Remote-data-plane-role +---Remote-data-plane-role
| |
+---Remote-endpoint-address +---Remote-endpoint-address
| |
+---Local-endpoint-address +---Local-endpoint-address
| |
+---Tunnel-MTU-size +---MTU-size
Figure 5: DPN-groups Peer Model Structure Figure 5: DPN-groups Peer Model Structure
Remote-DPN-group-id: Indicates peering DPN-Group. Remote-DPN-group-id: Indicates peering DPN-Group.
Remote-mobility-profile: Defines mobility-profile used for this Remote-mobility-profile: Defines mobility-profile used for this
peer, currently defined profiles are ietf-pmip, 3gpp, or new peer, currently defined profiles are ietf-pmip, 3gpp, or new
profiles defined as extensions of this specification. profiles defined as extensions of this specification.
Remote-data-plane-role: Defines forwarding-plane role of peering Remote-data-plane-role: Defines forwarding-plane role of peering
DPN-group. DPN-group.
Remote-endpoint-address: Defines Endpoint address of the peering Remote-endpoint-address: Defines Endpoint address of the peering
DPN-group. DPN-group.
Local-endpoint-address: Defines Endpoint address of its own DPN- Local-endpoint-address: Defines Endpoint address of its own DPN-
group to peer the remote DPN-group. group to peer the remote DPN-group.
Tunnel-MTU-size: Defines MTU size of tunnel. MTU-size: Defines MTU size of traffic between the DPN-Group and this
DPN-group-peer.
4.1.3. DPNs 5.1.3. DPNs
List of DPNs which defines all available nodes for a tenant of the List of DPNs which defines all available nodes for a tenant of the
FPC data-plane network. Role of a DPN in the data-plane is not FPC data-plane network. Role of a DPN in the data-plane is not
determined until the DPN is attributed to a DPN-group. determined until the DPN is attributed to a DPN-group.
A DPN may have multiple DPN-groups which are in different data-plane A DPN may have multiple DPN-groups which are in different data-plane
roles or domains. Mobility sessions of that DPN-groups are installed roles or domains. Mobility sessions of that DPN-groups are installed
into actual data-plane nodes. The Agent defines DPN binding to into actual data-plane nodes. The Agent defines DPN binding to
actual nodes. actual nodes.
skipping to change at page 11, line 20 skipping to change at page 12, line 20
| |
+---DPN-name +---DPN-name
| |
+---DPN-groups +---DPN-groups
| |
+---Node-reference +---Node-reference
Figure 6: DPNs Model Structure Figure 6: DPNs Model Structure
DPN-id: Defines identifier of DPN. The ID format SHOULD refer to DPN-id: Defines identifier of DPN. The ID format SHOULD refer to
Section 4.4. Section 5.4.
DPN-name: Defines name of DPN. DPN-name: Defines name of DPN.
DPN-groups: List of DPN-group which the DPN belongs to. DPN-groups: List of DPN-group which the DPN belongs to.
Node-reference: Indicates an actual node to which the Agent binds Node-reference: Indicates an actual node to which the Agent binds
the DPN. The Agent SHOULD maintain that nodes information the DPN. The Agent SHOULD maintain that nodes information
including IP address of management and control protocol to including IP address of management and control protocol to
connect them. connect them.
4.2. FPC-Policy 5.2. FPC-Policy
The FPC-Policy consists of Descriptors, Actions, Policies and Policy- The FPC-Policy consists of Descriptors, Actions, Policies and Policy-
groups, which can be viewed as configuration data while Contexts and groups, which can be viewed as configuration data while Contexts and
Ports are akin to structures that are instantiated on the Agent. The Ports are akin to structures that are instantiated on the Agent. The
Descriptors and Actions in a Policy referenced by a Port are active Descriptors and Actions in a Policy referenced by a Port are active
when the Port is in a active Context, i.e. they can be applied to when the Port is in a active Context, i.e. they can be applied to
traffic on a DPN. traffic on a DPN.
4.2.1. Descriptors 5.2.1. Descriptors
List of Descriptors which defines classifiers of specific traffic List of Descriptors which defines classifiers of specific traffic
flow, such as those based on source and destination addresses, flow, such as those based on source and destination addresses,
protocols, port numbers of TCP/UDP/SCTP/DCCP or any packet. Note protocols, port numbers of TCP/UDP/SCTP/DCCP or any packet. Note
that Descriptors are extensibly defined by specific profiles which that Descriptors are extensibly defined by specific profiles which
3gpp, ietf or other SDOs produce. Many specifications also use the 3gpp, ietf or other SDOs produce. Many specifications also use the
terms Filter, Traffic Descriptor or Traffic Selector [RFC6088]. A terms Filter, Traffic Descriptor or Traffic Selector [RFC6088]. A
packet that meets the criteria of a Descriptor is said to satisfy, packet that meets the criteria of a Descriptor is said to satisfy,
pass or is consumed by the Descriptor. Descriptors are assigned an pass or is consumed by the Descriptor. Descriptors are assigned an
identifier and contain a type and value. identifier and contain a type and value.
skipping to change at page 12, line 18 skipping to change at page 13, line 18
| |
+---Descriptor-id +---Descriptor-id
| |
+---Descriptor-type +---Descriptor-type
| |
+---Descriptor-value +---Descriptor-value
Figure 7: Descriptor Model Structure Figure 7: Descriptor Model Structure
Descriptor-id: Identifier of Descriptor. The ID format SHOULD refer Descriptor-id: Identifier of Descriptor. The ID format SHOULD refer
to Section 4.4. to Section 5.4.
Descriptor-type: Defines descriptor type, which classifies specific Descriptor-type: Defines descriptor type, which classifies specific
traffic flow, such as source and destination addresses, traffic flow, such as source and destination addresses,
protocols, port numbers of TCP/UDP/SCTP/DCCP or any packet. protocols, port numbers of TCP/UDP/SCTP/DCCP or any packet.
Descriptor-value: Specifies the value of Descriptor such as IP Descriptor-value: Specifies the value of Descriptor such as IP
prefix/address, protocol number, port number, etc. prefix/address, protocol number, port number, etc.
4.2.2. Actions 5.2.2. Actions
List of Actions which defines treatment/actions to apply to List of Actions which defines treatment/actions to apply to
classified traffic meeting the criteria defined by Descriptors. classified traffic meeting the criteria defined by Descriptors.
Actions include traffic management related activity such as shaping, Actions include traffic management related activity such as shaping,
policing based on given bandwidth, and connectivity management policing based on given bandwidth, and connectivity management
actions such as pass, drop, forward to given nexthop. Note that actions such as pass, drop, forward to given nexthop. Note that
Actions are extensibly defined by specific profiles which 3gpp, ietf Actions are extensibly defined by specific profiles which 3gpp, ietf
or other SDOs produce. or other SDOs produce.
(FPC-Policy) (FPC-Policy)
skipping to change at page 13, line 6 skipping to change at page 14, line 6
| |
+---Action-id +---Action-id
| |
+---Action-type +---Action-type
| |
+---Action-value +---Action-value
Figure 8: Action Model Structure Figure 8: Action Model Structure
Action-id: Identifier of Action. The ID format SHOULD refer to Action-id: Identifier of Action. The ID format SHOULD refer to
Section 4.4. Section 5.4.
Action-type: Defines action type, i.e. how to treat the specified Action-type: Defines action type, i.e. how to treat the specified
traffic flow, e.g. pass, drop, forward to given nexthop value and traffic flow, e.g. pass, drop, forward to given nexthop value and
shape, police based on given bandwidth value, etc. shape, police based on given bandwidth value, etc.
Action-value: Specifies value of Action, such as bandwidth, nexthop Action-value: Specifies value of Action, such as bandwidth, nexthop
address or drop explicitly, etc. address or drop explicitly, etc.
4.2.3. Policies 5.2.3. Policies
Policies are collections of Rules. Each Policy has a Policy Policies are collections of Rules. Each Policy has a Policy
Identifier and a list of Rule/Order pairs. The Order and Rule values Identifier and a list of Rule/Order pairs. The Order and Rule values
MUST be unique in the Policy. Unlike the AND filter matching of each MUST be unique in the Policy. Unlike the AND filter matching of each
Rule the Policy uses an OR matching to find the first Rule whose Rule the Policy uses an OR matching to find the first Rule whose
Descriptors are satisfied by the packet. The search for a Rule to Descriptors are satisfied by the packet. The search for a Rule to
apply to packet is executed according to the unique Order values of apply to packet is executed according to the unique Order values of
the Rules. This is an ascending order search, i.e. the Rule with the the Rules. This is an ascending order search, i.e. the Rule with the
lowest Order value is tested first and if its Descriptors are not lowest Order value is tested first and if its Descriptors are not
satisfied by the packet the Rule with the next lowest Order value is satisfied by the packet the Rule with the next lowest Order value is
skipping to change at page 14, line 30 skipping to change at page 15, line 30
| |
+---Actions +---Actions
| |
+---Action-id +---Action-id
| |
+---Order +---Order
Figure 9: Policies Model Structure Figure 9: Policies Model Structure
Policy-id: Identifier of Policy. The ID format SHOULD refer to Policy-id: Identifier of Policy. The ID format SHOULD refer to
Section 4.4. Section 5.4.
Rules: List of Rules which are a collection of Descriptors and Rules: List of Rules which are a collection of Descriptors and
Actions. All Descriptors MUST be satisfied before the Actions Actions. All Descriptors MUST be satisfied before the Actions
are taken. This is known as an AND Descriptor list, i.e. are taken. This is known as an AND Descriptor list, i.e.
Descriptor 1 AND Descriptor 2 AND ... Descriptor X MUST be Descriptor 1 AND Descriptor 2 AND ... Descriptor X MUST be
satisfied for the Rule to apply. These are internal structure to satisfied for the Rule to apply. These are internal structure to
the Policy, i.e. it is not a first class, visible object at the the Policy, i.e. it is not a first class, visible object at the
top level of an Agent. top level of an Agent.
Order: Specifies ordering if the Rule has multiple Descriptors and Order: Specifies ordering if the Rule has multiple Descriptors and
skipping to change at page 15, line 9 skipping to change at page 16, line 9
Direction: Specifies which direction applies, such as upstream, Direction: Specifies which direction applies, such as upstream,
downstream or both. downstream or both.
Actions: List of Actions. Actions: List of Actions.
Action-id: Indicates each Action in the rule. Action-id: Indicates each Action in the rule.
Order: Specifies Action ordering if the Rule has multiple actions. Order: Specifies Action ordering if the Rule has multiple actions.
4.2.4. Policy-groups 5.2.4. Policy-groups
List of Policy-groups which are an aggregation of Policies. Common List of Policy-groups which are an aggregation of Policies. Common
applications include aggregating Policies that are defined by applications include aggregating Policies that are defined by
different functions, e.g. Network Address Translation, Security, different functions, e.g. Network Address Translation, Security,
etc. The structure has an Identifier and references the Policies via etc. The structure has an Identifier and references the Policies via
their Identifiers. their Identifiers.
(FPC-Policy) (FPC-Policy)
| |
+---Policy-groups +---Policy-groups
| |
+---Policy-group-id +---Policy-group-id
| |
+---Policies +---Policies
Figure 10: Policy-group Model Structure Figure 10: Policy-group Model Structure
Policy-group-id: Identifier of Policy-group. The ID format SHOULD Policy-group-id: Identifier of Policy-group. The ID format SHOULD
refer to Section 4.4. refer to Section 5.4.
Policies: List of Policies in the Policy-group. Policies: List of Policies in the Policy-group.
4.3. FPC-Mobility 5.3. FPC-Mobility
The FPC-Mobility consists of Port and Context. A mobility session is The FPC-Mobility consists of Port and Context. A mobility session is
abstracted as a Context with its associated runtime concrete abstracted as a Context with its associated runtime concrete
attributes, such as tunnel endpoints, tunnel identifiers, delegated attributes, such as tunnel endpoints, tunnel identifiers, delegated
prefix(es) and routing information, etc. A Port abstracts a set of prefix(es) and routing information, etc. A Port abstracts a set of
policies applied to the Context. policies applied to the Context.
4.3.1. Port 5.3.1. Port
A port represents a collection of policy groups, a group of rules A port represents a collection of policy groups, a group of rules
that can exist independent of the mobility/session lifecycle. that can exist independent of the mobility/session lifecycle.
Mobility control-plane or applications create, modify and delete Mobility control-plane or applications create, modify and delete
Ports on FPC Agent through the FPC Client. Ports on FPC Agent through the FPC Client.
When a Port is indicated in a Context, the set of Descriptors and When a Port is indicated in a Context, the set of Descriptors and
Actions in the Policies of the Port are collected and applied to the Actions in the Policies of the Port are collected and applied to the
Context. They must be instantiated on the DPN as forwarding related Context. They must be instantiated on the DPN as forwarding related
actions such as QoS differentiations, packet processing of encap/ actions such as QoS differentiations, packet processing of encap/
skipping to change at page 16, line 18 skipping to change at page 17, line 18
| |
+---Ports +---Ports
| |
+---Port-id +---Port-id
| |
+---Policy-groups +---Policy-groups
Figure 11: Port Model Structure Figure 11: Port Model Structure
Port-id: Identifier of Port. The ID format SHOULD refer to Port-id: Identifier of Port. The ID format SHOULD refer to
Section 4.4. Section 5.4.
Policy-groups: List of references to Policy-groups which apply to Policy-groups: List of references to Policy-groups which apply to
the Port. the Port.
4.3.2. Context 5.3.2. Context
An endpoint of a mobility session or the instantiation of policy- An endpoint of a mobility session or the instantiation of policy-
groups is abstracted as a Context with its associated runtime groups is abstracted as a Context with its associated runtime
concrete attributes, such as tunnel endpoints, tunnel identifiers, concrete attributes, such as tunnel endpoints, tunnel identifiers,
delegated prefix(es) and routing information, etc. Mobility control- delegated prefix(es) and routing information, etc. Mobility control-
plane or applications create, modify and delete contexts on FPC Agent plane or applications create, modify and delete contexts on FPC Agent
through the FPC Client. through the FPC Client.
A Context directly describes traffic treatment policies in QoS A Context directly describes traffic treatment policies in QoS
profile and Mobility profiles or indirectly via Ports. Parameters in profile and Mobility profiles or indirectly via Ports. Parameters in
skipping to change at page 17, line 22 skipping to change at page 18, line 22
| |
+---DPN-group +---DPN-group
| |
+---Delegating-ip-prefixes +---Delegating-ip-prefixes
| |
+---Parent-context +---Parent-context
Figure 12: Common Context Model Structure Figure 12: Common Context Model Structure
Context-id: Identifier of Context. The ID format SHOULD refer to Context-id: Identifier of Context. The ID format SHOULD refer to
Section 4.4. Section 5.4.
Ports: List of Ports. When a Context is applied to Port(s), the Ports: List of Ports. When a Context is applied to Port(s), the
context is configured by policies of those Port(s). Port-id context is configured by policies of those Port(s). Port-id
references indicate Ports which apply to the Context. Context references indicate Ports which apply to the Context. Context
can be a part of multiple Ports which have different policies. can be a part of multiple Ports which have different policies.
DPN-group: The DPN-group assigned to the Context. DPN-group: The DPN-group assigned to the Context.
Delegating-ip-prefixes: List of IP prefixes to be delegated to the Delegating-ip-prefixes: List of IP prefixes to be delegated to the
mobile node of the context. mobile node of the context.
Parent-context: Indicates context which the context inherits. Parent-context: Indicates context which the context inherits.
4.3.2.1. Single DPN Agent Case 5.3.2.1. Single DPN Agent Case
In the case where a FPC Agent supports only one DPN, the Agent MUST In the case where a FPC Agent supports only one DPN, the Agent MUST
maintain context data just for the DPN. The Agent does not need to maintain context data just for the DPN. The Agent does not need to
maintain a Topology model. The Context in single DPN case consists maintain a Topology model. The Context in single DPN case consists
of following parameters for both direction of uplink and downlink. of following parameters for both direction of uplink and downlink.
(Contexts) (Contexts)
| |
+---UL-Tunnel-local-address +---UL-Tunnel-local-address
| |
+---UL-Tunnel-remote-address +---UL-Tunnel-remote-address
| |
+---UL-Tunnel-mtu-size +---UL-MTU-size
| |
+---UL-Mobility-specific-tunnel-parameters +---UL-Mobility-specific-tunnel-parameters
| |
+---UL-Nexthop +---UL-Nexthop
| |
+---UL-QoS-profile-specific-parameters +---UL-QoS-profile-specific-parameters
| |
+---UL-DPN-specific-parameters +---UL-DPN-specific-parameters
| |
+---UL-Vendor-specific-parameters +---UL-Vendor-specific-parameters
Figure 13: Uplink Context Model of Single DPN Structure Figure 13: Uplink Context Model of Single DPN Structure
UL-Tunnel-local-address: Specifies uplink endpoint address of the UL-Tunnel-local-address: Specifies uplink endpoint address of the
DPN. DPN.
UL-Tunnel-remote-address: Specifies uplink endpoint address of the UL-Tunnel-remote-address: Specifies uplink endpoint address of the
remote DPN. remote DPN.
UL-Tunnel-Mtu-size: Specifies uplink MTU size of tunnel. UL-MTU-size: Specifies uplink MTU size.
UL-Mobility-specific-tunnel-parameters: Specifies profile specific UL-Mobility-specific-tunnel-parameters: Specifies profile specific
uplink tunnel parameters to the DPN which the agent exists. The uplink tunnel parameters to the DPN which the agent exists. The
profiles includes GTP/TEID for 3gpp profile, GRE/Key for ietf- profiles includes GTP/TEID for 3gpp profile, GRE/Key for ietf-
pmip profile, or new profiles defined by extensions of this pmip profile, or new profiles defined by extensions of this
specification. specification.
UL-Nexthop: Indicates nexthop information of uplink in external UL-Nexthop: Indicates nexthop information of uplink in external
network such as IP address, MAC address, SPI of service function network such as IP address, MAC address, SPI of service function
chain, SID of segment routing, etc. chain, SID of segment routing, etc.
skipping to change at page 19, line 14 skipping to change at page 20, line 14
UL-Vendor-specific-parameters: Specifies a vendor specific parameter UL-Vendor-specific-parameters: Specifies a vendor specific parameter
space for uplink. space for uplink.
(Contexts) (Contexts)
| |
+---DL-Tunnel-local-address +---DL-Tunnel-local-address
| |
+---DL-Tunnel-remote-address +---DL-Tunnel-remote-address
| |
+---DL-Tunnel-Mtu-size +---DL-MTU-size
| |
+---DL-Mobility-specific-tunnel-parameters +---DL-Mobility-specific-tunnel-parameters
| |
+---DL-Nexthop +---DL-Nexthop
| |
+---DL-QoS-profile-specific-parameters +---DL-QoS-profile-specific-parameters
| |
+---DL-DPN-specific-parameters +---DL-DPN-specific-parameters
| |
+---DL-Vendor-specific-parameters +---DL-Vendor-specific-parameters
Figure 14: Downlink Context Model of Single DPN Structure Figure 14: Downlink Context Model of Single DPN Structure
DL-Tunnel-local-address: Specifies downlink endpoint address of the DL-Tunnel-local-address: Specifies downlink endpoint address of the
DPN. DPN.
DL-Tunnel-remote-address: Specifies downlink endpoint address of the DL-Tunnel-remote-address: Specifies downlink endpoint address of the
remote DPN. remote DPN.
DL-Tunnel-Mtu-size: Specifies downlink MTU size of tunnel. DL-MTU-size: Specifies downlink MTU size of tunnel.
DL-Mobility-specific-tunnel-parameters: Specifies profile specific DL-Mobility-specific-tunnel-parameters: Specifies profile specific
downlink tunnel parameters to the DPN which the agent exists. downlink tunnel parameters to the DPN which the agent exists.
The profiles includes GTP/TEID for 3gpp profile, GRE/Key for The profiles includes GTP/TEID for 3gpp profile, GRE/Key for
ietf-pmip profile, or new profiles defined by extensions of this ietf-pmip profile, or new profiles defined by extensions of this
specification. specification.
DL-Nexthop: Indicates nexthop information of downlink in external DL-Nexthop: Indicates nexthop information of downlink in external
network such as IP address, MAC address, SPI of service function network such as IP address, MAC address, SPI of service function
chain, SID of segment routing, etc. chain, SID of segment routing, etc.
skipping to change at page 20, line 12 skipping to change at page 21, line 12
[RFC6089]/[RFC7222] for ietf-pmip, or new profiles defined by [RFC6089]/[RFC7222] for ietf-pmip, or new profiles defined by
extensions of this specification. extensions of this specification.
DL-DPN-specific-parameters: Specifies optional node specific DL-DPN-specific-parameters: Specifies optional node specific
parameters of downlink in need such as if-index, tunnel-if-number parameters of downlink in need such as if-index, tunnel-if-number
that must be unique in the DPN. that must be unique in the DPN.
DL-Vendor-specific-parameters: Specifies a vendor specific parameter DL-Vendor-specific-parameters: Specifies a vendor specific parameter
space for downlink. space for downlink.
4.3.2.2. Multiple DPN Agent Case 5.3.2.2. Multiple DPN Agent Case
Another case is when a FPC Agent connects to multiple DPNs. This Another case is when a FPC Agent connects to multiple DPNs. This
Agent MUST maintain a set of Context data for each DPN. The Context Agent MUST maintain a set of Context data for each DPN. The Context
contains a DPNs list where each entry of the list consists of the contains a DPNs list where each entry of the list consists of the
parameters in Figure 15. A Context data for one DPN has two entries parameters in Figure 15. A Context data for one DPN has two entries
for each direction of uplink and downlink. for each direction of uplink and downlink or, where applicable, a
direction of 'both'.
(Contexts) (Contexts)
| |
+---DPNs +---DPNs
| |
+---DPN-id +---DPN-id
| |
+---Direction +---Direction
| |
+---Tunnel-local-address +---Tunnel-local-address
| |
+---Tunnel-remote-address +---Tunnel-remote-address
| |
+---Tunnel-mtu-size +---MTU-size
| |
+---Mobility-specific-tunnel-parameters +---Mobility-specific-tunnel-parameters
| |
+---Nexthop +---Nexthop
| |
+---QoS-profile-specific-parameters +---QoS-profile-specific-parameters
| |
+---DPN-specific-parameters +---DPN-specific-parameters
| |
+---Vendor-specific-parameters +---Vendor-specific-parameters
Figure 15: Multiple-DPN Supported Context Model Structure Figure 15: Multiple-DPN Supported Context Model Structure
DPN-id: Indicates DPN of which the runtime context data installed. DPN-id: Indicates DPN of which the runtime context data installed.
Direction: Specifies which side of connection at the DPN indicated, Direction: Specifies which side of connection at the DPN indicated,
"uplink" or "downlink". "uplink", "downlink" or "both".
Tunnel-local-address: Specifies endpoint address of the DPN at the Tunnel-local-address: Specifies endpoint address of the DPN at the
uplink or downlink. uplink or downlink.
Tunnel-remote-address: Specifies endpoint address of remote DPN at Tunnel-remote-address: Specifies endpoint address of remote DPN at
the uplink or downlink. the uplink or downlink.
Tunnel-mtu-size: Specifies the MTU size of tunnel on uplink or MTU-size: Specifies the packet MTU size on uplink or downlink.
downlink.
Mobility-specific-tunnel-parameters: Specifies profile specific Mobility-specific-tunnel-parameters: Specifies profile specific
tunnel parameters for uplink or downlink of the DPN. The tunnel parameters for uplink or downlink of the DPN. The
profiles includes GTP/TEID for 3gpp profile, GRE/Key for ietf- profiles includes GTP/TEID for 3gpp profile, GRE/Key for ietf-
pmip profile, or new profiles defined by extensions of this pmip profile, or new profiles defined by extensions of this
specification. specification.
Nexthop: Indicates nexthop information for uplink or downlink in Nexthop: Indicates nexthop information for uplink or downlink in
external network of the DPN such as IP address, MAC address, SPI external network of the DPN such as IP address, MAC address, SPI
of service function chain, SID of segment routing, etc. of service function chain, SID of segment routing, etc.
skipping to change at page 21, line 36 skipping to change at page 22, line 35
3gpp profile, [RFC6089]/[RFC7222] for ietf-pmip, or new profiles 3gpp profile, [RFC6089]/[RFC7222] for ietf-pmip, or new profiles
defined by extensions of this specification. defined by extensions of this specification.
DPN-specific-parameters: Specifies optional node specific parameters DPN-specific-parameters: Specifies optional node specific parameters
for uplink or downlink of the DPN in need, such like if-index, for uplink or downlink of the DPN in need, such like if-index,
tunnel-if-number that must be unique in the DPN. tunnel-if-number that must be unique in the DPN.
Vendor-specific-parameters: Specifies a vendor specific parameter Vendor-specific-parameters: Specifies a vendor specific parameter
space for the DPN. space for the DPN.
4.3.3. Monitors Multi-DPN Agents will only use the DPNs list of a Context for
processing as described in this section. A single-DPN Agent MAY use
both the Single Agent DPN model Section 5.3.2.1 and the multi-DPN
Agent Context described here. However, Agent feature support MUST be
discoverable by the FPC Client in order to determine which option(s)
an Agent supports.
5.3.3. Monitors
Monitors provide a mechanism to produce reports when events occur. A Monitors provide a mechanism to produce reports when events occur. A
Monitor will have a target that specifies what is to be watched. Monitor will have a target that specifies what is to be watched.
When a Monitor is specified, the configuration MUST be applicable to When a Monitor is specified, the configuration MUST be applicable to
the attribute/entity monitored, e.g. a Monitor using a Threshold the attribute/entity monitored, e.g. a Monitor using a Threshold
configuration cannot be applied to a context but it can be applied to configuration cannot be applied to a context but it can be applied to
a numeric property. a numeric property.
(FPC-Mobility) (FPC-Mobility)
skipping to change at page 22, line 18 skipping to change at page 23, line 18
| |
+---Monitor-id +---Monitor-id
| |
+---Target +---Target
| |
+---Configuration +---Configuration
Figure 16: Common Monitor Model Structure Figure 16: Common Monitor Model Structure
Monitor-id: Name of the Monitor. The ID format SHOULD refer to Monitor-id: Name of the Monitor. The ID format SHOULD refer to
Section 4.4. Section 5.4.
Target: Target to be monitored. This may be an event, a Context, a Target: Target to be monitored. This may be an event, a Context, a
Port or attribute(s) of Contexts. When the type is an Port or attribute(s) of Contexts. When the type is an
attribute(s) of a Context, the target name is a concatenation of attribute(s) of a Context, the target name is a concatenation of
the Context-Id and the relative path (separated by '/') to the the Context-Id and the relative path (separated by '/') to the
attribute(s)to be monitored. attribute(s)to be monitored.
Configuration: Determined by the Monitor subtype. Four report types Configuration: Determined by the Monitor subtype. Four report types
are defined: are defined:
* Periodic reporting specifies an interval by which a * Periodic reporting specifies an interval by which a
notification is sent to the Client. notification is sent to the Client.
* Event reporting specifies a list of even types that, if they * Event reporting specifies a list of even types that, if they
occur and are related to the monitored attribute, will result occur and are related to the monitored attribute, will result
in sending a notfication to the Client in sending a notification to the Client
* Scheduled reporting specifies the time (in seconds since Jan * Scheduled reporting specifies the time (in seconds since Jan
1, 1970) when a notificaiton for the monitor should be sent to 1, 1970) when a notification for the monitor should be sent to
the Client. Once this Monitor's notification is completed the the Client. Once this Monitor's notification is completed the
Monitor is automatically de-registered. Monitor is automatically de-registered.
* Threshold reporting specifies one or both of a low and high * Threshold reporting specifies one or both of a low and high
threshold. When these values are crossed a corresponding threshold. When these values are crossed a corresponding
notification is sent to the Client. notification is sent to the Client.
4.4. Namespace and Format 5.4. Namespace and Format
The identifiers and names in FPC models which reside in the same The identifiers and names in FPC models which reside in the same
namespace must be unique. That uniqueness must be kept in agent or namespace must be unique. That uniqueness must be kept in agent or
data-plane tenant namespace on an Agent. The tenant namespace data-plane tenant namespace on an Agent. The tenant namespace
uniquenes MUST be applied to all elements of the tenant model, i.e. uniqueness MUST be applied to all elements of the tenant model, i.e.
Topology, Policy and Mobility models. Topology, Policy and Mobility models.
When a Policy needs to be applied to Contexts in all tenants on an When a Policy needs to be applied to Contexts in all tenants on an
Agent, the Agent SHOULD define that policy to be visible from all the Agent, the Agent SHOULD define that policy to be visible from all the
tenants. In this case, the Agent assign an unique identifier in the tenants. In this case, the Agent assign an unique identifier in the
agent namespace. agent namespace.
The format of identifiers can utilize any format with agreement The format of identifiers can utilize any format with agreement
between data-plane agent and client operators. The formats include between data-plane agent and client operators. The formats include
but are not limited to Globally Unique IDentifiers (GUIDs), but are not limited to Globally Unique IDentifiers (GUIDs),
Universally Unique IDentifiers (UUIDs), Fully Qualified Domain Names Universally Unique IDentifiers (UUIDs), Fully Qualified Domain Names
(FQDNs), Fully Qualified Path Names ( FQPNs) and Uniform Resource (FQDNs), Fully Qualified Path Names ( FQPNs) and Uniform Resource
Identifiers (URIs). Identifiers (URIs).
The FPC model MUST NOT limit the types of format that dictate the The FPC model MUST NOT limit the types of format that dictate the
choice of FPC protocol. It is noted that the choice of identifiers choice of FPC protocol. It is noted that the choice of identifiers
which are used in Mobility model should be suitable to handle runtime which are used in Mobility model should be suitable to handle runtime
parameters in real-time. The Topology and Policy models are not parameters in real-time. The Topology and Policy models are not
restricted to meet that requirement as described in Section 3. restricted to meet that requirement as described in Section 4.
5. Protocol 5.5. Attribute Application
5.1. Protocol Messages and Semantics Attributes in FPC Topology and Policy are pre-configured in a FPC
Agent prior to Contexts and Ports. Those pre-configured attributes
SHOULD NOT be instantiated on DPN(s) until the Contexts and Ports
indicate them.
This is intentional as it provides FPC Clients ability to reuse
attributes that helps to minimize over the wire exchanges and reduce
system errors by exchanging less information.
When an Client creates Context, the Client would be able to indicate
just DPN-group(s) instead of all endpoint addresses of the DPN(s) and
MTU-size of the tunnels for example. This is because that the Agent
can derive data for those details from pre-configured DPN-group
information in the Topology.
The Agent turns those derived data into runtime attributes of UL and
DL objects which are in the DPNs list of the Context (multiple-DPNs
Agent case) or direct under the Context (single-DPN Agent case). The
Agent consequently instantiates forwarding policies on DPN(s) based
on that attributes.
When the attribute is a direct value of the Context, e.g. IMSI
defined in the 3GPP extension, only missing values can be provided by
the Parent Context.
It is noted that the Agent SHOULD update the Context's attributes
which are instantiated on DPN(s) when the applied attributes of
Topology and Policy are changed.
5.6. Policy and Runtime Data
Contexts and Ports that are supporting runtime, realtime mobility
sessions which are produced in the mobility control plane. These
could be installed using any number of protocols, but in case of they
need to be delivered in realtime that Restconf
[I-D.ietf-netconf-restconf] and/or Netconf [RFC6241] will not
fullfill, an appropriate FPC envelope protocol MUST be required.
When data is delivered as part of the FPC envelop protocol it should
be part of a Context. If it is a binding to a generic policy that
could be used by multiple Contexts a Port is used. Given the support
for pre-configuration of policies and references by identifiers, e.g
a Rule ID, most policies do not require realtime delivery.
In case of modifying an existing Context attribute, the Agent MUST
overwrite that attribute with the value of which the Client brings to
the Agent.
6. Protocol
6.1. Protocol Messages and Semantics
Five message types are supported: Five message types are supported:
+---------------+---------------+-----------------------------------+ +---------------+----------------+----------------------------------+
| Message | Type | Description | | Message | Type | Description |
+---------------+---------------+-----------------------------------+ +---------------+----------------+----------------------------------+
| CONF | HEADER | Configure processes a single | | CONF | HEADER | Configure processes a single |
| | ADMIN_STATE | operation. | | | ADMIN_STATE | operation. |
| | SESSION_STATE | | | | SESSION_STATE | |
| | OP_TYPE BODY | | | | OP_TYPE BODY | |
| | | | | | | |
| CONF_BUNDLES | 1*[HEADER | Configure-bundles takes multiple | | CONF_BUNDLES | 1*[HEADER | Configure-bundles takes multiple |
| | ADMIN_STATE | operations that are to be | | | ADMIN_STATE | operations that are to be |
| | SESSION_STATE | executed as a group with partial | | | SESSION_STATE | executed as a group with partial |
| | OP_TYPE BODY] | failures allowed. They are | | | TRANS_STRATEGY | failures allowed. They are |
| | | executed according to the OP_ID | | | OP_TYPE BODY] | executed according to the OP_ID |
| | | value in the OP_BODY in ascendig | | | | value in the OP_BODY in |
| | | order. If a CONFIGURE_BUNDLES | | | | ascending order. If a |
| | | fails, any entities provisioned | | | | CONFIGURE_BUNDLES fails, any |
| | | in the CURRENT operation are | | | | entities provisioned in the |
| | | removed, however, any successful | | | | CURRENT operation are removed, |
| | | operations completed prior to the | | | | however, any successful |
| | | current operation are preserved | | | | operations completed prior to |
| | | in order to reduce system load. | | | | the current operation are |
| | | | | | | preserved in order to reduce |
| REG_MONITOR | HEADER | Install a monitor at an Agent. | | | | system load. |
| | ADMIN_STATE | The message includes information | | | | |
| | *[ MONITOR ] | about the attribute to monitor | | REG_MONITOR | HEADER | Install a monitor at an Agent. |
| | | and the reporting method. Note | | | ADMIN_STATE *[ | The message includes information |
| | | that a MONITOR_CONFIG is required | | | MONITOR ] | about the attribute to monitor |
| | | for this opeation. | | | | and the reporting method. Note |
| | | | | | | that a MONITOR_CONFIG is |
| DEREG_MONITOR | HEADER *[ | Remove monitors from an Agent. | | | | required for this operation. |
| | MONITOR_ID ] | Monitor IDs are provided. Boolean | | | | |
| | [ boolean ] | (optional) indicates if a | | DEREG_MONITOR | HEADER *[ | Remove monitors from an Agent. |
| | | successful DEREG triggers a | | | MONITOR_ID ] [ | Monitor IDs are provided. |
| | | NOTIFY with final data. | | | boolean ] | Boolean (optional) indicates if |
| | | | | | | a successful DEREG triggers a |
| PROBE | HEADER | Probe the status of a registered | | | | NOTIFY with final data. |
| | MONITOR_ID | monitor. | | | | |
+---------------+---------------+-----------------------------------+ | PROBE | HEADER | Probe the status of a registered |
| | MONITOR_ID | monitor. |
+---------------+----------------+----------------------------------+
Table 1: Client to Agent Messages Table 1: Client to Agent Messages
Each message contains a header with the Client Identifier, an Each message contains a header with the Client Identifier, an
execution delay timer and an operation identifier. The delay, in ms, execution delay timer and an operation identifier. The delay, in ms,
is processed as the delay for operation execution from the time the is processed as the delay for operation execution from the time the
operation is received by the Agent. operation is received by the Agent.
The Client Identifier is used by the Agent to associate specific
configuration characteristics, e.g. options used by the Client when
communicating with the Agent, as well as the association of the
Client and tenant in the information model.
Messages that create or update Monitors and Entities, i.e. CONF, Messages that create or update Monitors and Entities, i.e. CONF,
CONF_BUNDLES and REG_MONITOR, specify an Administrative State which CONF_BUNDLES and REG_MONITOR, specify an Administrative State which
specifies the Administrative state of the message subject(s) after specifies the Administrative state of the message subject(s) after
the successful completion of the operation. If the status is set to the successful completion of the operation. If the status is set to
virtual, any existing data on the DPN is removed. If the value is virtual, any existing data on the DPN is removed. If the value is
set to disabled, then an operation will occur on the DPN IF the set to disabled, then an operation to disable the associated entity
entity exists on the DPN. If set to 'active' the DPN will be will occur on the DPN IF that entity exists on the DPN. If set to
provisioned. Values are 'enabled', 'disabled' or 'virtual'. 'active' the DPN will be provisioned. Values are 'enabled',
'disabled' or 'virtual'.
CONF_BUNDLES also has the Transaction Strategy (TRANS_STRATEGY)
attribute. This value specifies the behavior of the Agent when an
operation fails while prodessing a CONF_BUNDLES message. The value
of 'default' uses the default strategy defined for the message. The
value 'all_or_nothing' will roll back all successfully executed
operations within the bundle as well as the operation that failed.
It is important to note that an envelope protocol used to support
this specification may not need to support CONF_BUNDLES messages or
specific TRANS_STRATEGY types beyond 'default' when the protocol
provides similar semantics. However, this MUST be clearly defined in
the specification that defines how the envelope protocol supports
this specificaiton.
An Agent will respond with an error, ok, or an ok with indication An Agent will respond with an error, ok, or an ok with indication
that remaining data will be sent via a notify from the Agent to the that remaining data will be sent via a notify from the Agent to the
Client Section 5.1.1.5.2. When returning an 'ok' of any kind, Client Section 6.1.1.6.2 for CONF and CONF_BUNDLES requests. When
optional data may be present. returning an 'ok' of any kind, optional data may be present.
Two Agent notifications are supported: Two Agent notifications are supported:
+----------------------+----------+---------------------------------+ +----------------------+----------+---------------------------------+
| Message | Type | Description | | Message | Type | Description |
+----------------------+----------+---------------------------------+ +----------------------+----------+---------------------------------+
| CONFIG_RESULT_NOTIFY | See | An asynchronous notification | | CONFIG_RESULT_NOTIFY | See | An asynchronous notification |
| | Table 15 | from Agent to Client based upon | | | Table 15 | from Agent to Client based upon |
| | | a previous CONFIG or | | | | a previous CONFIG or |
| | | CONFIG_BUNDLES request. | | | | CONFIG_BUNDLES request. |
| | | | | | | |
| NOTIFY | See | An asynchronous notification | | NOTIFY | See | An asynchronous notification |
| | Table 16 | from Agent to Client based upon | | | Table 16 | from Agent to Client based upon |
| | | a registered MONITOR. | | | | a registered MONITOR. |
+----------------------+----------+---------------------------------+ +----------------------+----------+---------------------------------+
Table 2: Agent to Client Messages (Notfications) Table 2: Agent to Client Messages (notifications)
5.1.1. CONF and CONF_BUNDLES Messages 6.1.1. CONF and CONF_BUNDLES Messages
CONF and CONF_BUNDLES specify the following information for each CONF and CONF_BUNDLES specify the following information for each
operation in addition to the header information: operation in addition to the header information:
SESSION_STATE: sets the expected state of the entities embedded in SESSION_STATE: sets the expected state of the entities embedded in
the operation body after successful completion of the operation. the operation body after successful completion of the operation.
Values can be 'complete', 'incomplete' or 'outdated'. Any Values can be 'complete', 'incomplete' or 'outdated'. Any
operation that is 'incomplete' MAY NOT result in communication operation that is 'incomplete' MAY NOT result in communication
between the Agent and DPN. If the result is 'outdated' any new between the Agent and DPN. If the result is 'outdated' any new
operations on these entities or new references to these entities operations on these entities or new references to these entities
have unpredictable results. have unpredictable results.
OP_TYPE: specifies the type of operation. Valid values are 'create' OP_TYPE: specifies the type of operation. Valid values are 'create'
(0), 'update' (1), 'query' (2) or 'delete' (3). (0), 'update' (1), 'query' (2) or 'delete' (3).
COMMAND_SET: specifies the Command Set IF the feature is supported COMMAND_SET: specifies the Command Set IF the feature is supported
(see Section 5.1.1.3). (see Section 6.1.1.4).
BODY A list of Clones, if supported, Ports and Contexts when the BODY A list of Clones, if supported, Ports and Contexts when the
OP_TYPE is 'create' or 'update'. Otherwise it is a list of OP_TYPE is 'create' or 'update'. Otherwise it is a list of
Targets for 'query' or 'deletion'. See Section 6.2.2 for Targets for 'query' or 'deletion'. See Section 7.2.2 for
details. details.
5.1.1.1. Agent Operation Processing 6.1.1.1. Agent Operation Processing
The Agent will process entities provided in an operation in the The Agent will process entities provided in an operation in the
following order: following order:
1. Clone Instructions, if the feature is supported 1. Clone Instructions, if the feature is supported
2. Ports 2. Ports
3. Contexts according to COMMAND_SET order processing 3. Contexts according to COMMAND_SET order processing
The following Order Processing occurs when COMMAND Sets are present The following Order Processing occurs when COMMAND Sets are present
1. The Entity specific COMMAND_SET is processed according to its bit 1. The Entity specific COMMAND_SET is processed according to its bit
order unless otherwise specified by the technology specific order unless otherwise specified by the technology specific
COMMAND_SET definition. COMMAND_SET definition.
2. Operation specific COMMAND_SET is processed upon all applicable 2. Operation specific COMMAND_SET is processed upon all applicable
entities (even if they had Entity specific COMMAND_SET values entities (even if they had Entity specific COMMAND_SET values
skipping to change at page 26, line 39 skipping to change at page 29, line 24
present) according to its bit order unless otherwise specified by present) according to its bit order unless otherwise specified by
the technology specific COMMAND_SET definition. the technology specific COMMAND_SET definition.
3. Operation OP_TYPE is processed for all entities. 3. Operation OP_TYPE is processed for all entities.
When deleting objects only their name needs to be provided. However, When deleting objects only their name needs to be provided. However,
attributes MAY be provided if the Client wishes to avoid requiring attributes MAY be provided if the Client wishes to avoid requiring
the Agent cache lookups. the Agent cache lookups.
When deleting an attribute, a leaf reference should be provided. When deleting an attribute, a leaf reference should be provided.
This is a path to the attibutes. This is a path to the attributes.
5.1.1.2. Cloning 6.1.1.2. Policy RPC Support
This optional feature permits policy elements, (Policy-Group, Policy,
Action and Descriptor), values to be in CONF or CONF_BUNDLES
requests. It enables RPC based policy provisioning.
6.1.1.3. Cloning
Cloning is an optional feature that allows a Client to copy one Cloning is an optional feature that allows a Client to copy one
structure to another in an operation. Cloning is always done first structure to another in an operation. Cloning is always done first
within the operation (see Operation Order of Execution for more within the operation (see Operation Order of Execution for more
detail). If a Client wants to build an object then Clone it, use detail). If a Client wants to build an object then Clone it, use
CONFIG_BUNDLES with the first operation being the entities to be CONFIG_BUNDLES with the first operation being the entities to be
copied and a second operation with the Cloning instructions. A CLONE copied and a second operation with the Cloning instructions. A CLONE
operation takes two arguments, the first is the name of the target to operation takes two arguments, the first is the name of the target to
clone and the second is the name of the newly created entity. clone and the second is the name of the newly created entity.
Individual attributes are not clonable; only Ports and Contexts can Individual attributes are not clonable; only Ports and Contexts can
be cloned. be cloned.
5.1.1.3. Command Bitsets 6.1.1.4. Command Bitsets
The COMMAND_SET is a technology specific bitset that allows for a The COMMAND_SET is a technology specific bitset that allows for a
single entity to be sent in an operation with requested sub- single entity to be sent in an operation with requested sub-
transactions to be completed. For example, a Context could have the transactions to be completed. For example, a Context could have the
Home Network Prefix absent but it is unclear if the Client would like Home Network Prefix absent but it is unclear if the Client would like
the address to be assigned by the Agent or if this is an error. the address to be assigned by the Agent or if this is an error.
Rather than creating a specific command for assigning the IP a bit Rather than creating a specific command for assigning the IP a bit
position in a COMMAND_SET is reserved for Agent based IP assignment. position in a COMMAND_SET is reserved for Agent based IP assignment.
Alternatively, an entity could be sent in an update operation that Alternatively, an entity could be sent in an update operation that
would be considered incomplete, e.g. missing some required data in would be considered incomplete, e.g. missing some required data in
for the entity, but has sufficient data to complete the instructions for the entity, but has sufficient data to complete the instructions
provided in the COMMAND_SET. provided in the COMMAND_SET.
5.1.1.4. Reference Scope 6.1.1.5. Reference Scope
The Reference Scope is an optional feature that provides the scope of The Reference Scope is an optional feature that provides the scope of
references used in a configuration command, i.e. CONFIG or references used in a configuration command, i.e. CONFIG or
CONFIG_BUNDLES. These scopes are defined as CONFIG_BUNDLES. These scopes are defined as
o none - all entities have no references to other entities. This o none - all entities have no references to other entities. This
implies only Contexts are present Ports MUST have references to implies only Contexts are present Ports MUST have references to
Policy-Groups. Policy-Groups.
o op - All references are contained in the operation body, i.e. only o op - All references are contained in the operation body, i.e. only
skipping to change at page 27, line 44 skipping to change at page 30, line 37
equivalent to 'op'. equivalent to 'op'.
o storage - One or more references exist outside of the operation o storage - One or more references exist outside of the operation
and bundle. A lookup to a cache / storage is required. and bundle. A lookup to a cache / storage is required.
o unknown - the location of the references are unknown. This is o unknown - the location of the references are unknown. This is
treated as a 'storage' type. treated as a 'storage' type.
If supported by the Agent, when cloning instructions are present, the If supported by the Agent, when cloning instructions are present, the
scope MUST NOT be 'none'. When Ports are present the scope MUST be scope MUST NOT be 'none'. When Ports are present the scope MUST be
'storage' or 'uknown'. 'storage' or 'unknown'.
An agent that only accepts 'op' or 'bundle' reference scope messages An agent that only accepts 'op' or 'bundle' reference scope messages
is referred to as 'stateless' as it has no direct memory of is referred to as 'stateless' as it has no direct memory of
references outside messages themselves. This permits low memory references outside messages themselves. This permits low memory
footprint Agents. Even when an Agent supports all message types an footprint Agents. Even when an Agent supports all message types an
'op' or 'bundle' scoped message can be processed quickly by the Agent 'op' or 'bundle' scoped message can be processed quickly by the Agent
as it does not require storage access. as it does not require storage access.
5.1.1.5. Operation Response 6.1.1.6. Operation Response
5.1.1.5.1. Immediate Response 6.1.1.6.1. Immediate Response
Results will be supplied per operation input. Each result contains Results will be supplied per operation input. Each result contains
the RESULT_STATUS and OP_ID that it corresponds to. RESULT_STATUS the RESULT_STATUS and OP_ID that it corresponds to. RESULT_STATUS
values are: values are:
OK - SUCCESS OK - SUCCESS
ERR - An Error has occurred ERR - An Error has occurred
OK_NOTIFY_FOLLOWS - The Operation has been accepted by the Agent OK_NOTIFY_FOLLOWS - The Operation has been accepted by the Agent
but further processing is required. A CONFIG_RESULT_NOTIFY will but further processing is required. A CONFIG_RESULT_NOTIFY will
be sent once the processing has succeeded or failed. be sent once the processing has succeeded or failed.
Any result MAY contain nothing or a entities created or partially Any result MAY contain nothing or a entities created or partially
fulfilled as part of the operation as specified in Table 14. For fulfilled as part of the operation as specified in Table 14. For
Clients that need attributes back quickly for call processing, the Clients that need attributes back quickly for call processing, the
AGENT MUST respond back with an OK_NOTIFY_FOLLOWS and minimally the AGENT MUST respond back with an OK_NOTIFY_FOLLOWS and minimally the
attributes assigned by the Agent in the response. These situations attributes assigned by the Agent in the response. These situations
MUST be determined through the use of Command Sets (see MUST be determined through the use of Command Sets (see
Section 5.1.1.3). Section 6.1.1.4).
If an error occurs the following information is returned. If an error occurs the following information is returned.
ERROR_TYPE_ID (Unsigned 32) - The identifier of a specific error ERROR_TYPE_ID (Unsigned 32) - The identifier of a specific error
type type
ERROR_INFORMATION - An OPTIONAL string of no more than 1024 ERROR_INFORMATION - An OPTIONAL string of no more than 1024
characters. characters.
5.1.1.5.2. Asynchronous Notification 6.1.1.6.2. Asynchronous Notification
A CONFIG_RESULT_NOTIFY occurs after the Agent has completed A CONFIG_RESULT_NOTIFY occurs after the Agent has completed
processing related to a CONFIG or CONFIG_BUNDLES request. It is an processing related to a CONFIG or CONFIG_BUNDLES request. It is an
asynchronous communication from the Agent to the Client. asynchronous communication from the Agent to the Client.
The values of the CONFIG_RESULT_NOTIFY are detailed in Table 15. The values of the CONFIG_RESULT_NOTIFY are detailed in Table 15.
5.1.2. Monitors 6.1.2. Monitors
When a monitor has a reporting configuration of SCHEDULED it is When a monitor has a reporting configuration of SCHEDULED it is
automatically de-registered after the NOTIFY occurs. An Agent or DPN automatically de-registered after the NOTIFY occurs. An Agent or DPN
may temporarily suspend monitoring if insufficient resources exist. may temporarily suspend monitoring if insufficient resources exist.
In such a case the Agent MUST notify the Client. In such a case the Agent MUST notify the Client.
All monitored data can be requested by the Client at any time using All monitored data can be requested by the Client at any time using
the PROBE message. Thus, reporting configuration is optional and the PROBE message. Thus, reporting configuration is optional and
when not present only PROBE messages may be used for monitoring. If when not present only PROBE messages may be used for monitoring. If
a SCHEDULED or PERIODIC configuration is provided during registration a SCHEDULED or PERIODIC configuration is provided during registration
skipping to change at page 29, line 23 skipping to change at page 32, line 13
needs and lets the Agent realize the Client has no further need for needs and lets the Agent realize the Client has no further need for
the monitor to be registered. An Agent may reject a registration if the monitor to be registered. An Agent may reject a registration if
it or the DPN has insufficient resources. it or the DPN has insufficient resources.
PROBE messages are also used by a Client to retrieve information PROBE messages are also used by a Client to retrieve information
about a previously installed monitor. The PROBE message SHOULD about a previously installed monitor. The PROBE message SHOULD
identify one or more monitors by means of including the associated identify one or more monitors by means of including the associated
monitor identifier. An Agent receiving a PROBE message sends the monitor identifier. An Agent receiving a PROBE message sends the
requested information in a single or multiple NOTIFY messages. requested information in a single or multiple NOTIFY messages.
5.2. Protocol Operation 6.1.2.1. Operation Response
5.2.1. Simple RPC Operation 6.1.2.1.1. Immediate Response
An FPC Client and Agent MUST identify themself using the CLI_ID and Results will be supplied per operation input. Each result contains
the RESULT_STATUS and OP_ID that it corresponds to. RESULT_STATUS
values are:
OK - SUCCESS
ERR - An Error has occurred
Any OK result will contain no more information.
If an error occurs the following information is returned.
ERROR_TYPE_ID (Unsigned 32) - The identifier of a specific error
type
ERROR_INFORMATION - An OPTIONAL string of no more than 1024
characters.
6.1.2.1.2. Asynchronous Notification
A NOTIFY is sent as part of de-registraiton, a trigger based upon a
Monitor Configuration or a PROBE. A NOTIFY is comprised of unique
Notification Identifier from the Agent, the Monitor ID the
notification applies to, the Trigger for the notification, a
timestamp of when the notification's associated event occurs and data
that is specific to the monitored value's type.
6.2. Protocol Operation
6.2.1. Simple RPC Operation
An FPC Client and Agent MUST identify themselves using the CLI_ID and
AGT_ID respectively to ensure that for all transactions a recipient AGT_ID respectively to ensure that for all transactions a recipient
of an FPC message can unambiguously identify the sender of the FPC of an FPC message can unambiguously identify the sender of the FPC
message. A Client MAY direct the Agent to enforce a rule in a message. A Client MAY direct the Agent to enforce a rule in a
particular DPN by including a DPN_ID value in a Context. Otherwise particular DPN by including a DPN_ID value in a Context. Otherwise
the Agent selects a suitable DPN to enforce a Context and notifies the Agent selects a suitable DPN to enforce a Context and notifies
the Client about the selected DPN using the DPN_ID. the Client about the selected DPN using the DPN_ID.
All messages sent from a Client to an Agent MUST be acknowledged by All messages sent from a Client to an Agent MUST be acknowledged by
the Agent. The response must include all entities as well as status the Agent. The response must include all entities as well as status
information, which indicates the result of processing the message, information, which indicates the result of processing the message,
using the RESPONSE_BODY property. In case the processing of the using the RESPONSE_BODY property. In case the processing of the
message results in a failure, the Agent sets the ERROR_TYPE_ID and message results in a failure, the Agent sets the ERROR_TYPE_ID and
ERROR_INFORMATION accordingly and MAY clear the Context or Port, ERROR_INFORMATION accordingly and MAY clear the Context or Port,
which caused the failure, in the response. which caused the failure, in the response.
If based upon Agent configuration or the processing of the request If based upon Agent configuration or the processing of the request
possibly taking a significant amount of time the Agent MAY respond possibly taking a significant amount of time the Agent MAY respond
with an OK_NOTIFY_FOLLOWS with an optional RESPONSE_BODY containing with an OK_NOTIFY_FOLLOWS with an optional RESPONSE_BODY containing
the paritially completed entities. When an OK_NOTIFY_FOLLOWS is the partially completed entities. When an OK_NOTIFY_FOLLOWS is sent,
sent, the Agent will, upon completion or failure of the operation, the Agent will, upon completion or failure of the operation, respond
respond with an asynchronous CONFIG_RESULT_NOTIFY to the Client. with an asynchronous CONFIG_RESULT_NOTIFY to the Client.
A Client MAY add a property to a Context without providing all A Client MAY add a property to a Context without providing all
required details of the attribute's value. In such case the Agent required details of the attribute's value. In such case the Agent
SHOULD determine the missing details and provide the completed SHOULD determine the missing details and provide the completed
property description back to the Client. If the processing will take property description back to the Client. If the processing will take
too long or based upon Agent configuration, the Agent MAY respond too long or based upon Agent configuration, the Agent MAY respond
with an OK_NOTIFY_FOLLOWS with a RESPONSE_BODY containing the with an OK_NOTIFY_FOLLOWS with a RESPONSE_BODY containing the
paritially completed entities. partially completed entities.
In case the Agent cannot determine the missing value of an In case the Agent cannot determine the missing value of an
attribute's value per the Client's request, it leaves the attribute's attribute's value per the Client's request, it leaves the attribute's
value cleared in the RESPONSE_BODY and sets the RESULT to Error, value cleared in the RESPONSE_BODY and sets the RESULT to Error,
ERROR_TYPE_ID and ERROR_INFORMATION. As example, the Control-Plane ERROR_TYPE_ID and ERROR_INFORMATION. As example, the Control-Plane
needs to setup a tunnel configuration in the Data-Plane but has to needs to setup a tunnel configuration in the Data-Plane but has to
rely on the Agent to determine the tunnel endpoint which is rely on the Agent to determine the tunnel endpoint which is
associated with the DPN that supports the Context. The Client adds associated with the DPN that supports the Context. The Client adds
the tunnel property attribute to the FPC message and clears the value the tunnel property attribute to the FPC message and clears the value
of the attribute (e.g. IP address of the local tunnel endpoint). of the attribute (e.g. IP address of the local tunnel endpoint).
skipping to change at page 32, line 5 skipping to change at page 35, line 5
Figure 17: Exemplary Message Sequence (focus on FPC reference point) Figure 17: Exemplary Message Sequence (focus on FPC reference point)
After reception of the Proxy Binding Update (PBU) at the LMA Control- After reception of the Proxy Binding Update (PBU) at the LMA Control-
Plane function (LMA_C), the LMA-C selects a suitable DPN, which Plane function (LMA_C), the LMA-C selects a suitable DPN, which
serves as Data-Plane anchor to the mobile node's (MN) traffic. The serves as Data-Plane anchor to the mobile node's (MN) traffic. The
LMA-C adds a new logical Context to the DPN to treat the MN's traffic LMA-C adds a new logical Context to the DPN to treat the MN's traffic
(1) and includes a Context Identifier (CONTEXT_ID) to the CONFIGURE (1) and includes a Context Identifier (CONTEXT_ID) to the CONFIGURE
command. The LMA-C identifies the selected Anchor DPN by including command. The LMA-C identifies the selected Anchor DPN by including
the associated DPN identifier. the associated DPN identifier.
The LMA-C adds properties during the creaton of the new Context. One The LMA-C adds properties during the creation of the new Context.
property is added to specify the forwarding tunnel type and endpoints One property is added to specify the forwarding tunnel type and
(Anchor DPN, Edge DPN1) in each direction (as required). Another endpoints (Anchor DPN, Edge DPN1) in each direction (as required).
property is added to specify the QoS differentiation, which the MN's Another property is added to specify the QoS differentiation, which
traffic should experience. At reception of the Context, the FPC the MN's traffic should experience. At reception of the Context, the
Agent utilizes local configuration commands to create the tunnel FPC Agent utilizes local configuration commands to create the tunnel
(tun1) as well as the traffic control (tc) to enable QoS (tun1) as well as the traffic control (tc) to enable QoS
differentiation. After configuration has been completed, the Agent differentiation. After configuration has been completed, the Agent
applies a new route to forward all traffic destined to the MN's HNP applies a new route to forward all traffic destined to the MN's HNP
specified as a property in the Context to the configured tunnel specified as a property in the Context to the configured tunnel
interface (tun1). interface (tun1).
During handover, the LMA-C receives an updating PBU from the handover During handover, the LMA-C receives an updating PBU from the handover
target MAG-C2. The PBU refers to a new Data-Plane node (Edge DPN2) target MAG-C2. The PBU refers to a new Data-Plane node (Edge DPN2)
to represent the new tunnel endpoints in the downlink and uplink, as to represent the new tunnel endpoints in the downlink and uplink, as
requried. The LMA-C sends a CONFIGURE message (3) to the Agent to required. The LMA-C sends a CONFIGURE message (3) to the Agent to
modify the existing tunnel property of the existing Context and to modify the existing tunnel property of the existing Context and to
update the tunnel endpoint from Edge DPN1 to Edge DPN2. Upon update the tunnel endpoint from Edge DPN1 to Edge DPN2. Upon
reception of the CONFIGURE message, the Agent applies updated tunnel reception of the CONFIGURE message, the Agent applies updated tunnel
property to the local configuration and responds to the Client (4). property to the local configuration and responds to the Client (4).
+-------Router--------+ +-------Router--------+
+-----------+ |+-------+ +---------+| +-----------+ |+-------+ +---------+|
+------+ +------+ +-----+ FPC | | FPC | | Anchor | +------+ +------+ +-----+ FPC | | FPC | | Anchor |
|MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN |
+------+ +------+ +-----+-------+ +-------+ +---------+ +------+ +------+ +-----+-------+ +-------+ +---------+
skipping to change at page 32, line 52 skipping to change at page 35, line 52
| | |---(3)--CONFIG(DELETE)--->|-- tun1 -->| | | |---(3)--CONFIG(DELETE)--->|-- tun1 -->|
| | | | delete | | | | | delete |
| | |<-(4)- OK ----------------| | | | |<-(4)- OK ----------------| |
| | | |-- route ->| | | | |-- route ->|
| | | | remove | | | | | remove |
| | | | | | | | | |
Figure 18: Exemplary Message Sequence (focus on FPC reference point) Figure 18: Exemplary Message Sequence (focus on FPC reference point)
When a teardown of the session occurs, MAG-C1 will send a PBU with a When a teardown of the session occurs, MAG-C1 will send a PBU with a
lifteime value of zero. The LMA-C sends a CONFIGURE message (1) to lifetime value of zero. The LMA-C sends a CONFIGURE message (1) to
the Agent to modify the existing tunnel property of the existing the Agent to modify the existing tunnel property of the existing
Context to delete the tunnel information.) Upon reception of the Context to delete the tunnel information.) Upon reception of the
CONFIGRE message, the Agent removes the tunnel configuration and CONFIGURE message, the Agent removes the tunnel configuration and
responds to the Client (2). Per [RFC5213], the PBA is sent back responds to the Client (2). Per [RFC5213], the PBA is sent back
immediately after the PBA is received. immediately after the PBA is received.
If no valid PBA is recieved after the expiration of the If no valid PBA is received after the expiration of the
MinDelayBeforeBCEDelete timer (see [RFC5213]), the LMA-C will send a MinDelayBeforeBCEDelete timer (see [RFC5213]), the LMA-C will send a
CONFIGURE (3) message with a deletion request for the Context. Upon CONFIGURE (3) message with a deletion request for the Context. Upon
reception of the message, the Agent deletes the tunnel and route on reception of the message, the Agent deletes the tunnel and route on
the DPN and responds to the Client (4). the DPN and responds to the Client (4).
5.2.2. Policy And Mobility on the Agent When a multi-DPN Agent is used the DPN list permits several DPNs to
be provisioned in a single message.
+-----------+ +-------+ +---------+
+------+ +------+ +-----+ FPC | | FPC | | Anchor |
|MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN1 |
+------+ +------+ +-----+-------+ +-------+ +---------+
[MN attach] | | | |
|-------------PBU----->| | |
| | |---(1)--CONFIG(CREATE)--->| |
| | | [ CONTEXT_ID, DPNS [ |--tun1 up->|
| | |[DPN1,DOWNLINK(QOS/TUN)], | |
| | | [DPN1,UPLINK(QOS/TUN)], |--tc qos-->|
| | |[DPN2,DOWNLINK(QOS/TUN)], | |
| | | [DPN2,UPLINK(QOS/TUN)], | |
| | | IP_PREFIX(HNP) ] | |
| | |<-(2)- OK_NOTIFY_FOLLOWS -|-route add>|
| | | | |
|<------------PBA------| | |
| | | | |
| +----+ | | |
| |Edge| | | |
| |DPN2| | | |
| +----+ | | |
| |<---------------------- tun1 up -------------| |
| |<---------------------- tc qos --------------| |
| |<---------------------- route add -----------| |
| | | | |
| | |<(3) CONFIG_RESULT_NOTIFY | |
| | | [ Response Data ] | |
| | | | |
Figure 19: Exemplary Message Sequence for Multi-DPN Agent
Figure 19 shows how the first 2 messages in Figure 17 are supported
when a multi-DPN Agent communicates with both Anchor DPN1 and Edge
DPN2. In such a case, the FPC Client sends the donwnlink and uplink
for both DPNs in the "DPNS" list of the same Context. Message 1
shows the DPNS list with all entries. Each entry identifies the DPN
and direction (one of 'uplink', 'downlink' or 'both'). Generally,
the 'both' direction is not used for normal mobility session
processing. It is commonly used for the instantaition of Policies on
a specific DPN (see Section 6.2.4).
The Agent responds with an OK_NOTIFY_FOLLOWS while it simultaneoulsy
provisions both DPNs. Upon successful completion, the Agent responds
to the Client with a CONFIG_RESULT_NOTIFY indicating the operation
status.
6.2.2. Policy And Mobility on the Agent
A Client may build Policy and Topology using any mechanism on the A Client may build Policy and Topology using any mechanism on the
Agent. Such entities are not always required to be constructed in Agent. Such entities are not always required to be constructed in
realtime and, therefore, there are no specific messages defined for realtime and, therefore, there are no specific messages defined for
them in this specification. them in this specification.
The Client may add, modify or delete many Ports and Contexts in a The Client may add, modify or delete many Ports and Contexts in a
single FPC message. This includes linking Contexts to Actions and single FPC message. This includes linking Contexts to Actions and
Descriptors, i.e. a Rule. As example, a Rule which performs re- Descriptors, i.e. a Rule. As example, a Rule which performs re-
writing of an arriving packet's destination IP address from IP_A to writing of an arriving packet's destination IP address from IP_A to
IP_B matching an associated Descriptor, can be enforced in the Data- IP_B matching an associated Descriptor, can be enforced in the Data-
Plane via an Agent to implicitly consider matching arriving packet's Plane via an Agent to implicitly consider matching arriving packet's
source IP address against IP_B and re- write the source IP address to source IP address against IP_B and re- write the source IP address to
IP_A. IP_A.
Figure 19 illustrates the generic policy configuration model as used Figure 20 illustrates the generic policy configuration model as used
between a FPC Client and a FPC Agent. between a FPC Client and a FPC Agent.
Descriptor_1 -+ +- Action_1 Descriptor_1 -+ +- Action_1
| | | |
Descriptor_2 -+--<Rule>--+- Action_2 Descriptor_2 -+--<Rule>--+- Action_2
+------+ +------+
/Order#/-------------+ /Order#/-------------+
+------+ | +------+ |
| |
Descriptor_3 -+ +- Action_3 +-<PolicyID> Descriptor_3 -+ +- Action_3 +-<PolicyID>
skipping to change at page 34, line 31 skipping to change at page 38, line 31
| Bind 1..M traffic | | Bind 1..N traffic | | Bind 1..M traffic | | Bind 1..N traffic |
| Descriptors to | --> | treatment actions | | Descriptors to | --> | treatment actions |
| a Policy, | | to a Policy, | | a Policy, | | to a Policy, |
| Policy-Group and | | Policy-Group and | | Policy-Group and | | Policy-Group and |
| Port | | Port | | Port | | Port |
+-------------------+ +---------------------+ +-------------------+ +---------------------+
| | | |
+-------------- Data-Plane Rule ------------------+ +-------------- Data-Plane Rule ------------------+
Figure 19: Structure of Policies and Ports Figure 20: Structure of Policies and Ports
As depicted in Figure 19, the Port represents the anchor of Rules As depicted in Figure 20, the Port represents the anchor of Rules
through the Policy-group, Policy, Rule heirarchy configured by any through the Policy-group, Policy, Rule hierarchy configured by any
mechanism including RPC or N. A Client and Agent use the identifier mechanism including RPC or N. A Client and Agent use the identifier
of the associated Policy to directly access the Rule and perform of the associated Policy to directly access the Rule and perform
modifications of traffic Descriptors or Action references. A Client modifications of traffic Descriptors or Action references. A Client
and Agent use the identifiers to access the Descriptors or Actions to and Agent use the identifiers to access the Descriptors or Actions to
perform modifications. From the viewpoint of packet processing, perform modifications. From the viewpoint of packet processing,
arriving packets are matched against traffic Descriptors and arriving packets are matched against traffic Descriptors and
processed according to the treatment Actions specified in the list of processed according to the treatment Actions specified in the list of
properties associated with the Port. properties associated with the Port.
A Client complements a rule's Descriptors with a Rule's Order A Client complements a rule's Descriptors with a Rule's Order
(priority) value to allow unambiguous traffic matching on the Data- (priority) value to allow unambiguous traffic matching on the Data-
Plane. Plane.
Figure 20 illustrates the generic context configuration model as used Figure 21 illustrates the generic context configuration model as used
between a FPC Client and a FPC Agent. between a FPC Client and a FPC Agent.
TrafficSelector_1 TrafficSelector_1
| |
profile-parameters profile-parameters
| |
mobility-profile-- dl ------+ mobility-profile-- dl ------+
^ | ^ |
| qos-profile | qos-profile
<ContextID1> | <ContextID1> |
skipping to change at page 35, line 27 skipping to change at page 39, line 27
+-------------------+ +---------------------+ +-------------------+ +---------------------+
| Bind 1..M traffic | | Bind 1..N traffic | | Bind 1..M traffic | | Bind 1..N traffic |
| selectors to | --> | treatment / qos | | selectors to | --> | treatment / qos |
| a Context | | actions to a | | a Context | | actions to a |
| | | Context | | | | Context |
+-------------------+ +---------------------+ +-------------------+ +---------------------+
| | | |
+-------------- Data-Plane Rule ------------------+ +-------------- Data-Plane Rule ------------------+
Figure 20: Structure of Contexts Figure 21: Structure of Contexts
As depicted in Figure 20, the Context represents a mobiility session As depicted in Figure 21, the Context represents a mobility session
heirarchy. A Client and Agent directly assigns values such as hierarchy. A Client and Agent directly assigns values such as
dowlink traffic descriptors, QoS information, etc. A Client and downlink traffic descriptors, QoS information, etc. A Client and
Agent use the context identifiers to access the descriptors, qos Agent use the context identifiers to access the descriptors, qos
information, etc. to perform modifications. From the viewpoint of information, etc. to perform modifications. From the viewpoint of
packet processing, arriving packets are matched against traffic packet processing, arriving packets are matched against traffic
Descriptors and processed according to the qos or other mobility Descriptors and processed according to the qos or other mobility
profile related Actions specified in the Context's properties. If profile related Actions specified in the Context's properties. If
present, the final action is to use a Context's tunnel information to present, the final action is to use a Context's tunnel information to
encapsulate and forward the packet. encapsulate and forward the packet.
A second Context also references context1 in the figure. Based upon A second Context also references context1 in the figure. Based upon
the techology a property in a parent context MAY be inherited by its the technology a property in a parent context MAY be inherited by its
descendants. This permits concise over the wire representation. descendants. This permits concise over the wire representation.
When a Client deletes a parent Context all children are also deleted. When a Client deletes a parent Context all children are also deleted.
5.2.3. Optimization for Current and Subsequent Messages 6.2.3. Optimization for Current and Subsequent Messages
5.2.3.1. Bulk Data in a Single Operation 6.2.3.1. Bulk Data in a Single Operation
A single operation MAY contain multiple entities. This permits A single operation MAY contain multiple entities. This permits
bundling of requests into a single operation. In the example below bundling of requests into a single operation. In the example below
two PMIP sessions are created via two PBU messages and sent to the two PMIP sessions are created via two PBU messages and sent to the
Agent in a single CONFIGURE message (1). Upon receiveing the Agent in a single CONFIGURE message (1). Upon recieveing the
message, the Agent responds back with an OK_NOTIFY_FOLLOWS (2), message, the Agent responds back with an OK_NOTIFY_FOLLOWS (2),
completes work on the DPN to activate the assocaited sessions then completes work on the DPN to activate the associated sessions then
responds to the Client wiht a CONFIG_RESULT_NOTIFY (3). responds to the Client with a CONFIG_RESULT_NOTIFY (3).
+-------Router--------+ +-------Router--------+
+-----------+ |+-------+ +---------+| +-----------+ |+-------+ +---------+|
+------+ +------+ +-----+ FPC | | FPC | | Anchor | +------+ +------+ +-----+ FPC | | FPC | | Anchor |
|MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN |
+------+ +------+ +-----+-------+ +-------+ +---------+ +------+ +------+ +-----+-------+ +-------+ +---------+
[MN1 attach] | | | | [MN1 attach] | | | |
|-------------PBU----->| | | |-------------PBU----->| | |
| [MN2 attach] | | | | [MN2 attach] | | |
| |---PBU----->| | | | |---PBU----->| | |
skipping to change at page 36, line 36 skipping to change at page 40, line 36
| | | IP_PREFIX(HNP) ] |--tun2 up->| | | | IP_PREFIX(HNP) ] |--tun2 up->|
| | |<-(2)- OK_NOTIFY_FOLLOWS--| | | | |<-(2)- OK_NOTIFY_FOLLOWS--| |
| | | |--tc2 qos->| | | | |--tc2 qos->|
|<------------PBA------| | | |<------------PBA------| | |
| | | |-route2 | | | | |-route2 |
| | |<(3) CONFIG_RESULT_NOTIFY | add> | | | |<(3) CONFIG_RESULT_NOTIFY | add> |
| | | [ Response Data ] | | | | | [ Response Data ] | |
| | | | | | | | | |
| | | | | | | | | |
Figure 21: Exemplary Bulk Entity with Asynchronous Notification Figure 22: Exemplary Bulk Entity with Asynchronous Notification
Sequence (focus on FPC reference point) Sequence (focus on FPC reference point)
5.2.3.2. Configuration Bundles 6.2.3.2. Configuration Bundles
Bundles provide transaction boundaries around work in a single Bundles provide transaction boundaries around work in a single
message. Operations in a bundle MUST be successfully executed in the message. Operations in a bundle MUST be successfully executed in the
order specified. This allows references created in one operation to order specified. This allows references created in one operation to
be used in a subsequent operation in the bundle. be used in a subsequent operation in the bundle.
The example bundle shows in Operation 1 (OP 1) the creation of a The example bundle shows in Operation 1 (OP 1) the creation of a
Context 1 which is then referenced in Operation 2 (OP 2) by Context 1 which is then referenced in Operation 2 (OP 2) by
CONTEXT_ID 2. If OP 1 fails then OP 2 will not be executed. The CONTEXT_ID 2. If OP 1 fails then OP 2 will not be executed. The
advantage of the CONFIGURE_BUNDLES is preservation of dependency advantage of the CONFIGURE_BUNDLES is preservation of dependency
skipping to change at page 37, line 29 skipping to change at page 41, line 29
| DOWNLINK(QOS/TUN), | | | DOWNLINK(QOS/TUN), | |
| UPLINK(QOS/TUN), | | | UPLINK(QOS/TUN), | |
| IP_PREFIX(HNP) ] | | | IP_PREFIX(HNP) ] | |
| [ OP 2, | | | [ OP 2, | |
| [ CONTEXT_ID 2, | | | [ CONTEXT_ID 2, | |
| PARENT_CONTEXT_ID 1, | | | PARENT_CONTEXT_ID 1, | |
| UPLINK(QOS/TUN), | | | UPLINK(QOS/TUN), | |
| DOWNLINK(QOS/TUN) ] ] | | | DOWNLINK(QOS/TUN) ] ] | |
| | | | | |
Figure 22: Exemplary Bundle Message (focus on FPC reference point) Figure 23: Exemplary Bundle Message (focus on FPC reference point)
5.2.3.3. Cloning Feature (Optional) 6.2.3.3. Cloning Feature (Optional)
Cloning provides a high speed copy/paste mechanism. The example Cloning provides a high speed copy/paste mechanism. The example
below shows a single Context that will be copied two times. A below shows a single Context that will be copied two times. A
subsequent update then overrides the value. The avoid the accidental subsequent update then overrides the value. The avoid the accidental
activation of the Contexts on the DPN, the CONFIGURE (1) message with activation of the Contexts on the DPN, the CONFIGURE (1) message with
the cloning instruction has a SESSION_STATE with a value of the cloning instruction has a SESSION_STATE with a value of
'incomplete' and OP_TYPE of 'CREATE'. A second CONFIGURE (2) is sent 'incomplete' and OP_TYPE of 'CREATE'. A second CONFIGURE (2) is sent
with the SESSION_STATE of 'complete' and OP_TYPE of 'UPDATE'. The with the SESSION_STATE of 'complete' and OP_TYPE of 'UPDATE'. The
second message includes any differences between the original (copied) second message includes any differences between the original (copied)
Context and its Clones. Context and its Clones.
skipping to change at page 38, line 36 skipping to change at page 42, line 36
| PARENT_CONTEXT_ID(empty),| | | PARENT_CONTEXT_ID(empty),| |
| UPLINK(QOS/TUN), | | | UPLINK(QOS/TUN), | |
| DOWNLINK(QOS/TUN) ], | | | DOWNLINK(QOS/TUN) ], | |
| [ CONTEXT_ID 4, | | | [ CONTEXT_ID 4, | |
| PARENT_CONTEXT_ID(empty),| | | PARENT_CONTEXT_ID(empty),| |
| UPLINK(QOS/TUN), | | | UPLINK(QOS/TUN), | |
| DOWNLINK(QOS/TUN) ] ] | | | DOWNLINK(QOS/TUN) ] ] | |
|<----- OK ----------------| | |<----- OK ----------------| |
| | | | | |
Figure 23: Exemplary Bundle Message (focus on FPC reference point) Figure 24: Exemplary Bundle Message (focus on FPC reference point)
Cloning has the added advantage of reducing the over the wire data Cloning has the added advantage of reducing the over the wire data
size required to create multiple entities. This can improve size required to create multiple entities. This can improve
performance if serializaiton / deserialization of multiple entities performance if serialization / deserialization of multiple entities
incurs some form of performance penalty. incurs some form of performance penalty.
5.2.3.4. Command Bitsets (Optional) 6.2.3.4. Command Bitsets (Optional)
Command Sets permit the ability to provide a single, unified data Command Sets permit the ability to provide a single, unified data
structure, e.g. CONTEXT, and specify which activities are expected structure, e.g. CONTEXT, and specify which activities are expected
to be performed on the DPN. This has some advantages to be performed on the DPN. This has some advantages
o Rather than sending N messages with a single operation performed o Rather than sending N messages with a single operation performed
on the DPN a single message can be used with a Command Set that on the DPN a single message can be used with a Command Set that
specifies the N DPN operations to be executed. specifies the N DPN operations to be executed.
o Errors become more obvious. For example, if the HNP is NOT o Errors become more obvious. For example, if the HNP is NOT
provided but the Client did not specify that the HNP should be provided but the Client did not specify that the HNP should be
assigned by the Agent this error is easily detected. Without the assigned by the Agent this error is easily detected. Without the
Command Set the default behavior of the Agent would be to assign Command Set the default behavior of the Agent would be to assign
the HNP and then respond back to the Client where the error would the HNP and then respond back to the Client where the error would
be detected and subsequent messaging would be required to remedy be detected and subsequent messaging would be required to remedy
the error. Such sitations can increase the time to error the error. Such situations can increase the time to error
detection and overall system load withouth the Command Set detection and overall system load without the Command Set present.
present.
o Unambiguous provisioning specification. The Agent is exactily in o Unambiguous provisioning specification. The Agent is exactly in
sync with the expectations of the Client as opposed to guessing sync with the expectations of the Client as opposed to guessing
what DPN work could be done based upon data present at the Agent. what DPN work could be done based upon data present at the Agent.
This greatly increases the speed by which the Agent can complete This greatly increases the speed by which the Agent can complete
work. work.
o Permits different technologies with different instructions to be o Permits different technologies with different instructions to be
sent in the same message. sent in the same message.
As Command Bitsets are technology specfic, e.g. PMIP or 3GPP As Command Bitsets are technology specific, e.g. PMIP or 3GPP
Mobility, the type of work varies on the DPN and the amount of data Mobility, the type of work varies on the DPN and the amount of data
present in a Context or Port will vary. Using the technology present in a Context or Port will vary. Using the technology
specific instructions allows the Client to serve multiple specific instructions allows the Client to serve multiple
technologies and MAY result in a more statless Client as the technologies and MAY result in a more stateless Client as the
instructions are transferred the Agent which will match the desired, instructions are transferred the Agent which will match the desired,
technology specific instructions with the capabilities and over the technology specific instructions with the capabilities and over the
wire protocol of the DPN more efficiently. wire protocol of the DPN more efficiently.
5.2.3.5. Reference Scope(Optional) 6.2.3.5. Reference Scope(Optional)
Although entities MAY refer to any other entity of an appropriate Although entities MAY refer to any other entity of an appropriate
type, e.g. Contexts can refer to Ports or Contexts, the Reference type, e.g. Contexts can refer to Ports or Contexts, the Reference
Scope gives the Agent an idea of where those references reside. They Scope gives the Agent an idea of where those references reside. They
may be in the same operation, an operation in the same CONFIG_BUNDLES may be in the same operation, an operation in the same CONFIG_BUNDLES
message or in storage. There may also be no references. This message or in storage. There may also be no references. This
permits the Agent to understand when it can stop searching for permits the Agent to understand when it can stop searching for
reference it cannot find. For example, if a CONFIG_BUNDLES message reference it cannot find. For example, if a CONFIG_BUNDLES message
uses a Reference Scope of type 'op' then it merely needs to keep an uses a Reference Scope of type 'op' then it merely needs to keep an
operation level cache and consume no memory or resources searching operation level cache and consume no memory or resources searching
across the many operations in the CONFIG_BUNDLES message or the data across the many operations in the CONFIG_BUNDLES message or the data
store. store.
Agents can also be stateless by only supporting the 'none', 'op' and Agents can also be stateless by only supporting the 'none', 'op' and
'bundle' reference scopes. This does not imply they lack storage but 'bundle' reference scopes. This does not imply they lack storage but
merely the search space they use when looking up references for an merely the search space they use when looking up references for an
entity. The figure below shows the caching heirarchy provided by the entity. The figure below shows the caching hierarchy provided by the
Reference Scope Reference Scope
Caches are temporarily created at each level and as the scope Caches are temporarily created at each level and as the scope
includes more caches the amount of entities that are searched includes more caches the amount of entities that are searched
increases. Figure 24 shows an example cache where each Cache where a increases. Figure 25 shows an example cache where each Cache where a
containment heirarchy is provided for all caches. containment hierarchy is provided for all caches.
+---------------+ +---------------+
| Global Cache | | Global Cache |
| (storage) | | (storage) |
+------+--------+ +------+--------+
| |
+----------------------+ +----------------------+
| | | |
+------+--------+ +------+--------+ +------+--------+ +------+--------+
| Bundle Cache | | Bundle Cache | | Bundle Cache | | Bundle Cache |
skipping to change at page 40, line 30 skipping to change at page 44, line 30
| |
+--------------------+--------------------+ +--------------------+--------------------+
| | | | | |
+--------+---------+ +--------+---------+ +--------+---------+ +--------+---------+ +--------+---------+ +--------+---------+
| Operation Cache | | Operation Cache | | Operation Cache | | Operation Cache | | Operation Cache | | Operation Cache |
| (op) | | (op) | | (op) | | (op) | | (op) | | (op) |
+------------------+ +------------------+ +------------------+ +------------------+ +------------------+ +------------------+
(no cache) (no cache)
Figure 24: Exemplary Heirarchical Cache Figure 25: Exemplary Hierarchical Cache
5.2.4. Pre-provisioning 6.2.4. Pre-provisioning
Although Contexts are used for Session based lifecycle elements, Although Contexts are used for Session based lifecycle elements,
Ports may exist outside of a specific lifecycle and represent more Ports may exist outside of a specific lifecycle and represent more
general policies that may affect multiple Contexts (sessions). The general policies that may affect multiple Contexts (sessions). The
use of pre-provisioning of Ports permits policy and administrative use of pre-provisioning of Ports permits policy and administrative
use cases to be exected. For example, creating tunnels to forward use cases to be executed. For example, creating tunnels to forward
traffic to a trouble management platform and dropping packets to a traffic to a trouble management platform and dropping packets to a
defective web server can be accomplished via provisioning of Ports. defective web server can be accomplished via provisioning of Ports.
The figure below shows a CONFIGURE (1) message used to install a The figure below shows a CONFIGURE (1) message used to install a
Policy-group, policy-group1, using a Context set aside for pre- Policy-group, policy-group1, using a Context set aside for pre-
provisioning on a DPN. provisioning on a DPN.
+-------Router--------+ +-------Router--------+
+-----------+ |+-------+ +---------+| +-----------+ |+-------+ +---------+|
| FPC | | FPC | | Anchor | | FPC | | FPC | | Anchor |
skipping to change at page 41, line 19 skipping to change at page 45, line 19
+-----------+ +-------+ +---------+ +-----------+ +-------+ +---------+
| | | | | |
|------CONFIG(CREATE)----->| | |------CONFIG(CREATE)----->| |
| [ PORT_ID port1, | | | [ PORT_ID port1, | |
| [ policy-group1 ] ] | | | [ policy-group1 ] ] | |
| [ CONTEXT_ID preprov, | | | [ CONTEXT_ID preprov, | |
| DPN_ID X, | | | DPN_ID X, | |
| [ port1 ] ] | | | [ port1 ] ] | |
| | | | | |
Figure 25: Exemplary Bundle Message (focus on FPC reference point) Figure 26: Exemplary Config Message for policy pre-provisioning
5.2.4.1. Basename Registry Feature (Optional) 6.2.4.1. Basename Registry Feature (Optional)
The Optional BaseName Registry support feature is provided to permit The Optional BaseName Registry support feature is provided to permit
Clients and tenants with common scopes, referred to in this Clients and tenants with common scopes, referred to in this
specification as BaseNames, to track the state of provisioned policy specification as BaseNames, to track the state of provisioned policy
information on an Agent. The registry records the BaseName and information on an Agent. The registry records the BaseName and
Checkpoint set by a Client. If a new Client attaches to the Agent it Checkpoint set by a Client. If a new Client attaches to the Agent it
can query the Registry to determine the amount of work that must be can query the Registry to determine the amount of work that must be
executed to configure the Agent to a BaseName / checkpoint revision. executed to configure the Agent to a BaseName / checkpoint revision.
A State value is also provided in the registry to help Clients A State value is also provided in the registry to help Clients
coordinate work on common BaseNames. coordinate work on common BaseNames.
6. Protocol Message Details 7. Protocol Message Details
6.1. Data Structures And Type Assignment 7.1. Data Structures And Type Assignment
6.1.1. Policy Structures 7.1.1. Policy Structures
+--------------+-----------------+----------------------------+ +--------------+-----------------+----------------------------+
| Structure | Field | Type | | Structure | Field | Type |
+--------------+-----------------+----------------------------+ +--------------+-----------------+----------------------------+
| ACTION | ACTION_ID | FPC-Identity (Section 4.4) | | ACTION | ACTION_ID | FPC-Identity (Section 5.4) |
| | | | | | | |
| ACTION | TYPE | [32, unsigned integer] | | ACTION | TYPE | [32, unsigned integer] |
| | | | | | | |
| ACTION | VALUE | Type specific | | ACTION | VALUE | Type specific |
| | | | | | | |
| DESCRIPTOR | DESCRIPTOR_ID | FPC-Identity (Section 4.4) | | DESCRIPTOR | DESCRIPTOR_ID | FPC-Identity (Section 5.4) |
| | | | | | | |
| DESCRIPTOR | TYPE | [32, unsigned integer] | | DESCRIPTOR | TYPE | [32, unsigned integer] |
| | | | | | | |
| DESCRIPTOR | VALUE | Type specific | | DESCRIPTOR | VALUE | Type specific |
| | | | | | | |
| POLICY | POLICY_ID | FPC-Identity (Section 4.4) | | POLICY | POLICY_ID | FPC-Identity (Section 5.4) |
| | | | | | | |
| POLICY | RULES | *[ RULE ] (See Table 4) | | POLICY | RULES | *[ RULE ] (See Table 4) |
| | | | | | | |
| POLICY-GROUP | POLICY_GROUP_ID | FPC-Identity (Section 4.4) | | POLICY-GROUP | POLICY_GROUP_ID | FPC-Identity (Section 5.4) |
| | | | | | | |
| POLICY-GROUP | POLICIES | *[ POLICY_ID ] | | POLICY-GROUP | POLICIES | *[ POLICY_ID ] |
+--------------+-----------------+----------------------------+ +--------------+-----------------+----------------------------+
Table 3: Action Fields Table 3: Action Fields
Policies contain a list of Rules by their order value. Each Rule Policies contain a list of Rules by their order value. Each Rule
contains Descriptors with optional directionality and Actions with contains Descriptors with optional directionality and Actions with
order values that specifies action execution ordering if the Rule has order values that specifies action execution ordering if the Rule has
multiple actions. multiple actions.
skipping to change at page 43, line 5 skipping to change at page 47, line 5
| | DESCRIPTOR_ID | is an ENUMERATION (uplink, | | | DESCRIPTOR_ID | is an ENUMERATION (uplink, |
| | DIRECTION ] | downlink or both). | | | DIRECTION ] | downlink or both). |
| | | | | | | |
| RULE_ACTIONS | *[ ACTION_ID | ORDER [8, unsigned integer] | | RULE_ACTIONS | *[ ACTION_ID | ORDER [8, unsigned integer] |
| | ORDER ] | specifies action execution | | | ORDER ] | specifies action execution |
| | | order. | | | | order. |
+------------------+---------------+--------------------------------+ +------------------+---------------+--------------------------------+
Table 4: Rule Fields Table 4: Rule Fields
6.1.2. Mobilty Structures 7.1.2. Mobilty Structures
+----------+----------------------------+ +----------+----------------------------+
| Field | Type | | Field | Type |
+----------+----------------------------+ +----------+----------------------------+
| PORT_ID | FPC-Identity (Section 4.4) | | PORT_ID | FPC-Identity (Section 5.4) |
| | | | | |
| POLICIES | *[ POLICY_GROUP_ID ] | | POLICIES | *[ POLICY_GROUP_ID ] |
+----------+----------------------------+ +----------+----------------------------+
Table 5: Port Fields Table 5: Port Fields
+------------------------+------------------------------------+ +------------------------+------------------------------------+
| Field | Type | | Field | Type |
+------------------------+------------------------------------+ +------------------------+------------------------------------+
| CONTEXT_ID | FPC-Identity (Section 4.4) | | CONTEXT_ID | FPC-Identity (Section 5.4) |
| | | | | |
| PORTS | *[ PORT_ID ] | | PORTS | *[ PORT_ID ] |
| | | | | |
| DPN_GROUP_ID | FPC-Identity (Section 4.4) | | DPN_GROUP_ID | FPC-Identity (Section 5.4) |
| | | | | |
| DELEGATING IP PREFIXES | *[ IP_PREFIX ] | | DELEGATING IP PREFIXES | *[ IP_PREFIX ] |
| | | | | |
| PARENT_CONTEXT_ID | FPC-Identity (Section 4.4) | | PARENT_CONTEXT_ID | FPC-Identity (Section 5.4) |
| | | | | |
| UPLINK [NOTE 1] | MOB_FIELDS | | UPLINK [NOTE 1] | MOB_FIELDS |
| | | | | |
| DOWNLINK [NOTE 1] | MOB_FIELDS | | DOWNLINK [NOTE 1] | MOB_FIELDS |
| | | | | |
| DPNS [NOTE 2] | *[ DPN_ID DPN_DIRECTION MOB_FIELDS | | DPNS [NOTE 2] | *[ DPN_ID DPN_DIRECTION MOB_FIELDS |
| | | | | |
| MOB_FIELDS | All parameters from Table 7 | | MOB_FIELDS | All parameters from Table 7 |
+------------------------+------------------------------------+ +------------------------+------------------------------------+
skipping to change at page 45, line 7 skipping to change at page 49, line 7
| | | | | | | |
| VENDOR_SPECIFIC_PARAM | *[ Varies ] | [NOTE 1] | | VENDOR_SPECIFIC_PARAM | *[ Varies ] | [NOTE 1] |
+---------------------------+---------------------+-----------------+ +---------------------------+---------------------+-----------------+
NOTE 1 - These parameters are extensible. The Types may be extended NOTE 1 - These parameters are extensible. The Types may be extended
for Field value by future specifications or in the case of Vendor for Field value by future specifications or in the case of Vendor
Specific Attributes by enterprises. Specific Attributes by enterprises.
Table 7: Context Downlink/Uplink Field Definitions Table 7: Context Downlink/Uplink Field Definitions
6.1.3. Topology Structures 7.1.3. Topology Structures
+----------------+------------------------------------+ +----------------+------------------------------------+
| Field | Type | | Field | Type |
+----------------+------------------------------------+ +----------------+------------------------------------+
| DPN_ID | FPC-Identity. See Section 4.4 | | DPN_ID | FPC-Identity. See Section 5.4 |
| | | | | |
| DPN_NAME | [1024, OCTET STRING] | | DPN_NAME | [1024, OCTET STRING] |
| | | | | |
| DPN_GROUPS | * [ FPC-Identity ] See Section 4.4 | | DPN_GROUPS | * [ FPC-Identity ] See Section 5.4 |
| | | | | |
| NODE_REFERENCE | [1024, OCTET STRING] | | NODE_REFERENCE | [1024, OCTET STRING] |
+----------------+------------------------------------+ +----------------+------------------------------------+
Table 8: DPN Fields Table 8: DPN Fields
+-------------+----------------------+ +-------------+----------------------+
| Field | Type | | Field | Type |
+-------------+----------------------+ +-------------+----------------------+
| DOMAIN_ID | [1024, OCTET STRING] | | DOMAIN_ID | [1024, OCTET STRING] |
skipping to change at page 46, line 8 skipping to change at page 50, line 8
| DOMAIN_NAME | [1024, OCTET STRING] | | DOMAIN_NAME | [1024, OCTET STRING] |
| | | | | |
| DOMAIN_TYPE | [1024, OCTET STRING] | | DOMAIN_TYPE | [1024, OCTET STRING] |
+-------------+----------------------+ +-------------+----------------------+
Table 9: Domain Fields Table 9: Domain Fields
+------------------+------------------------------------------------+ +------------------+------------------------------------------------+
| Field | Type | | Field | Type |
+------------------+------------------------------------------------+ +------------------+------------------------------------------------+
| DPN_GROUP_ID | FPC-Identity. See Section 4.4 | | DPN_GROUP_ID | FPC-Identity. See Section 5.4 |
| | | | | |
| DATA_PLANE_ROLE | [4, ENUMERATION (data-plane, such as access- | | DATA_PLANE_ROLE | [4, ENUMERATION (data-plane, such as access- |
| | dpn, L2/L3 anchor-dpn.)] | | | dpn, L2/L3 anchor-dpn.)] |
| | | | | |
| ACCESS_TYPE | [4, ENUMERATION ()ethernet(802.3/11), 3gpp | | ACCESS_TYPE | [4, ENUMERATION ()ethernet(802.3/11), 3gpp |
| | cellular(S1,RAB)] | | | cellular(S1,RAB)] |
| | | | | |
| MOBILITY_PROFILE | [4, ENUMERATION (ietf-pmip, 3gpp, or new | | MOBILITY_PROFILE | [4, ENUMERATION (ietf-pmip, 3gpp, or new |
| | profile)] | | | profile)] |
| | | | | |
| PEER_DPN_GROUPS | * [ DPN_GROUP_ID MOBILITY_PROFILE | | PEER_DPN_GROUPS | * [ DPN_GROUP_ID MOBILITY_PROFILE |
| | REMOTE_ENDPOINT_ADDRESS LOCAL_ENDPOINT_ADDRESS | | | REMOTE_ENDPOINT_ADDRESS LOCAL_ENDPOINT_ADDRESS |
| | TUN_MTU DATA_PLANE_ROLE ] | | | TUN_MTU DATA_PLANE_ROLE ] |
+------------------+------------------------------------------------+ +------------------+------------------------------------------------+
Table 10: DPN Groups Fields Table 10: DPN Groups Fields
6.1.4. Monitors 7.1.4. Monitors
+------------------+----------------------+-------------------------+ +------------------+----------------------+-------------------------+
| Field | Type | Description | | Field | Type | Description |
+------------------+----------------------+-------------------------+ +------------------+----------------------+-------------------------+
| MONITOR | MONITOR_ID TARGET | | | MONITOR | MONITOR_ID TARGET | |
| | [REPORT_CONFIG] | | | | [REPORT_CONFIG] | |
| | | | | | | |
| MONITOR_ID | FPC-Identity. See | | | MONITOR_ID | FPC-Identity. See | |
| | Section 4.4 | | | | Section 5.4 | |
| | | | | | | |
| EVENT_TYPE_ID | [8, Event Type ID] | Event Type (unsigned | | EVENT_TYPE_ID | [8, Event Type ID] | Event Type (unsigned |
| | | integer). | | | | integer). |
| | | | | | | |
| TARGET | OCTET STRING (See | | | TARGET | OCTET STRING (See | |
| | Section 4.3.3) | | | | Section 5.3.3) | |
| | | | | | | |
| REPORT_CONFIG | [8, REPORT-TYPE] | | | REPORT_CONFIG | [8, REPORT-TYPE] | |
| | [TYPE_SPECIFIC_INFO] | | | | [TYPE_SPECIFIC_INFO] | |
| | | | | | | |
| PERIODIC_CONFIG | [32, period] | report interval (ms). | | PERIODIC_CONFIG | [32, period] | report interval (ms). |
| | | | | | | |
| THRESHOLD_CONFIG | [32, low] [32, hi] | thresholds (at least | | THRESHOLD_CONFIG | [32, low] [32, hi] | thresholds (at least |
| | | one value must be | | | | one value must be |
| | | present) | | | | present) |
| | | | | | | |
skipping to change at page 48, line 5 skipping to change at page 52, line 5
o HIGH_THRESHOLD_CROSSED o HIGH_THRESHOLD_CROSSED
o PERIODIC_REPORT o PERIODIC_REPORT
o SCHEDULED_REPORT o SCHEDULED_REPORT
o PROBED o PROBED
o DEREG_FINAL_VALUE o DEREG_FINAL_VALUE
6.2. Message Attributes 7.2. Message Attributes
6.2.1. Header 7.2.1. Header
Each operation contains a header with the following fields: Each operation contains a header with the following fields:
+-------------+------------------------+----------------------------+ +-------------+------------------------+----------------------------+
| Field | Type | Messages | | Field | Type | Messages |
+-------------+------------------------+----------------------------+ +-------------+------------------------+----------------------------+
| CLIENT_ID | FPC-Identity (Section | All | | CLIENT_ID | FPC-Identity (Section | All |
| | 4.4) | | | | 5.4) | |
| | | | | | | |
| DELAY | [32, unsigned integer] | All | | DELAY | [32, unsigned integer] | All |
| | | | | | | |
| OP_ID | [64, unsigned integer] | All | | OP_ID | [64, unsigned integer] | All |
| | | | | | | |
| ADMIN_STATE | [8, admin state] | CONF, CONF_BUNDLES and | | ADMIN_STATE | [8, admin state] | CONF, CONF_BUNDLES and |
| | | REG_MONITOR | | | | REG_MONITOR |
| | | | | | | |
| OP_TYPE | [8, op type] | CONF and CONF_BUNDLES | | OP_TYPE | [8, op type] | CONF and CONF_BUNDLES |
+-------------+------------------------+----------------------------+ +-------------+------------------------+----------------------------+
Table 12: Message Header Fields Table 12: Message Header Fields
6.2.2. CONF and CONF_BUNDLES Attributes and Notifications 7.2.2. CONF and CONF_BUNDLES Attributes and Notifications
+---------------+-----------------------+---------------------------+ +---------------+----------------------+----------------------------+
| Field | Type | Operation Types | | Field | Type | Operation Types Create(C), |
| | | Create(C), Update(U), | | | | Update(U), Query(Q) and |
| | | Query(Q) and Delete(D) | | | | Delete(D) |
+---------------+-----------------------+---------------------------+ +---------------+----------------------+----------------------------+
| SESSION_STATE | [8, session state] | C,U | | SESSION_STATE | [8, session state] | C,U |
| | | | | | | |
| COMMAND_SET | FPC Command Bitset. | C,U | | COMMAND_SET | FPC Command Bitset. | C,U [NOTE 1] |
| (1) | See Section 5.1.1.3. | | | | See Section 6.1.1.4. | |
| | | | | | | |
| CLONES (1) | *[ FPC-Identity FPC- | C,U | | CLONES | *[ FPC-Identity FPC- | C,U [NOTE 1] |
| | Identity ] (Section | | | | Identity ] (Section | |
| | 4.4) | | | | 5.4) | |
| | | | | | | |
| PORTS | *[ PORT ] | C,U | | PORTS | *[ PORT ] | C,U |
| | | | | | | |
| CONTEXTS | *[ CONTEXT [ | C,U | | CONTEXTS | *[ CONTEXT [ | C,U |
| | COMMAND_SET (1) ] ] | | | | COMMAND_SET [NOTE 1] | |
| | | | | | ] ] | |
| TARGETS | FPC-Identity (Section | Q,D | | | | |
| | 4.4) *[DPN_ID] | | | TARGETS | FPC-Identity | Q,D |
+---------------+-----------------------+---------------------------+ | | (Section 5.4) | |
| | *[DPN_ID] | |
| | | |
| POLICY_GROUPS | *[ POLICY-GROUP ] | C,U [NOTE 1] |
| | | |
| POLICIES | *[ POLICY ] | C,U [NOTE 1] |
| | | |
| DESCRIPTORS | *[ DESCRIPTOR ] | C,U [NOTE 1] |
| | | |
| ACTIONS | *[ ACTION ] | C,U [NOTE 1] |
+---------------+----------------------+----------------------------+
(1) - Only present if the corresponding feature is supported by the NOTE 1 - Only present if the corresponding feature is supported by
Agent. the Agent.
Table 13: CONF and CONF_BUNDLES OP_BODY Fields Table 13: CONF and CONF_BUNDLES OP_BODY Fields
+----------+-----------------------+--------------------------------+ +-------------------+--------------------+--------------------------+
| Field | Type | Operation Types Create(C), | | Field | Type | Operation Types |
| | | Update(U), Query(Q) and | | | | Create(C), Update(U), |
| | | Delete(D) | | | | Query(Q) and Delete(D) |
+----------+-----------------------+--------------------------------+ +-------------------+--------------------+--------------------------+
| PORTS | *[ PORT ] | C,U | | PORTS | *[ PORT ] | C,U [NOTE 2] |
| | | | | | | |
| CONTEXTS | *[ CONTEXT [ | C,U | | CONTEXTS | *[ CONTEXT [ | C,U [NOTE 2] |
| | COMMAND_SET (1) ] ] | | | | COMMAND_SET [NOTE | |
| | | | | | 1] ] ] | |
| TARGETS | *[ FPC-Identity | Q,D | | | | |
| | (Section 4.4) | | | TARGETS | *[ FPC-Identity | Q,D [NOTE 2] |
| | *[DPN_ID] ] | | | | (Section 5.4) | |
+----------+-----------------------+--------------------------------+ | | *[DPN_ID] ] | |
| | | |
(1) - Only present if the corresponding feature is supported by the | ERROR_TYPE_ID | [32, unsigned | All [NOTE 3] |
Agent. | | integer] | |
| | | |
| ERROR_INFORMATION | [1024, octet | All [NOTE 3] |
| | string] | |
+-------------------+--------------------+--------------------------+
Table 14: Immediate Response RESPONSE_BODY Fields Table 14: Immediate Response RESPONSE_BODY Fields
If an error occurs the following information is returned. Notes:
ERROR_TYPE_ID (Unsigned 32) - The identifier of a specific error NOTE 1 - Only present if the corresponding feature is supported by
type the Agent.
ERROR_INFORMATION - An OPTIONAL string of no more than 1024 NOTE 2 - Present in OK and OK_NOTIFY_FOLLOWS for both CONF and
characters. CONF_BUNDLES. MAY also be present in an CONF_BUNDLES Error
response (ERR) if one of the operations completed successfully.
NOTE 3 - Present only for Error (ERR) responses.
+-----------------+--------------------+----------------------------+ +-----------------+--------------------+----------------------------+
| Field | Type | Description | | Field | Type | Description |
+-----------------+--------------------+----------------------------+ +-----------------+--------------------+----------------------------+
| AGENT_ID | FPC-Identity | | | AGENT_ID | FPC-Identity | |
| | (Section 4.4) | | | | (Section 5.4) | |
| | | | | | | |
| NOTIFICATION_ID | [32, unsigned | A Notification Identifier | | NOTIFICATION_ID | [32, unsigned | A Notification Identifier |
| | integer] | used to determine | | | integer] | used to determine |
| | | notification order. | | | | notification order. |
| | | | | | | |
| TIMESTAMP | [32, unsigned | The time that the | | TIMESTAMP | [32, unsigned | The time that the |
| | integer] | notification occured. | | | integer] | notification occurred. |
| | | | | | | |
| DATA | *[ OP_ID | | | DATA | *[ OP_ID | |
| | RESPONSE_BODY | | | | RESPONSE_BODY | |
| | (Table 14) ] | | | | (Table 14) ] | |
+-----------------+--------------------+----------------------------+ +-----------------+--------------------+----------------------------+
Table 15: CONFIG_RESULT_NOTIFY Asynchronous Notification Fields Table 15: CONFIG_RESULT_NOTIFY Asynchronous Notification Fields
6.2.3. Monitors 7.2.3. Monitors
+-----------------+---------------------+---------------------------+ +-----------------+---------------------+---------------------------+
| Field | Type | Description | | Field | Type | Description |
+-----------------+---------------------+---------------------------+ +-----------------+---------------------+---------------------------+
| NOTIFICATION_ID | [32, unsiged | | | NOTIFICATION_ID | [32, unsiged | |
| | integer] | | | | integer] | |
| | | | | | | |
| TRIGGER | [32, unsigned | | | TRIGGER | [32, unsigned | |
| | integer] | | | | integer] | |
| | | | | | | |
| NOTIFY | NOTIFICATION_ID | Timestamp notes when the | | NOTIFY | NOTIFICATION_ID | Timestamp notes when the |
| | MONITOR_ID TRIGGER | event occurred. | | | MONITOR_ID TRIGGER | event occurred. |
| | [32, timestamp] | Notification Data is | | | [32, timestamp] | Notification Data is |
| | [NOTIFICATION_DATA] | TRIGGER and Monitor type | | | [NOTIFICATION_DATA] | TRIGGER and Monitor type |
| | | specific. | | | | specific. |
+-----------------+---------------------+---------------------------+ +-----------------+---------------------+---------------------------+
Table 16: Monitor Notifications Table 16: Monitor Notifications
7. Derived and Subtyped Attributes 8. Derived and Subtyped Attributes
This section notes derived attributes. This section notes derived attributes.
+------------------+-------+---------------+------------------------+ +------------------+-------+---------------+------------------------+
| Field | Type | Type | Description | | Field | Type | Type | Description |
| | Value | | | | | Value | | |
+------------------+-------+---------------+------------------------+ +------------------+-------+---------------+------------------------+
| TO_PREFIX | 0 | [IP Address] | Aggregated or per-host | | TO_PREFIX | 0 | [IP Address] | Aggregated or per-host |
| | | [ Prefix Len | destination IP | | | | [ Prefix Len | destination IP |
| | | ] | address/prefix | | | | ] | address/prefix |
skipping to change at page 52, line 22 skipping to change at page 56, line 43
| REWRITE | 1 | [in_src_ip] | Rewrite IP Address | | REWRITE | 1 | [in_src_ip] | Rewrite IP Address |
| | | [out_src_ip] | (NAT) or IP Address | | | | [out_src_ip] | (NAT) or IP Address |
| | | [in_dst_ip] | / Port (NAPT). | | | | [in_dst_ip] | / Port (NAPT). |
| | | [out_dst_ip] | | | | | [out_dst_ip] | |
| | | [in_src_port] | | | | | [in_src_port] | |
| | | [out_src_port] | | | | | [out_src_port] | |
| | | [in_dst_port] | | | | | [in_dst_port] | |
| | | [out_dst_port] | | | | | [out_dst_port] | |
| | | | | | | | | |
| COPY_FORWARD | 2 | FPC-Identity. See | Copy all packets and | | COPY_FORWARD | 2 | FPC-Identity. See | Copy all packets and |
| | | Section 4.4. | forward them to the | | | | Section 5.4. | forward them to the |
| | | | provided identity. | | | | | provided identity. |
| | | | The value of the | | | | | The value of the |
| | | | identity MUST be a | | | | | identity MUST be a |
| | | | port or context. | | | | | port or context. |
+--------------+-------+---------------------+----------------------+ +--------------+-------+---------------------+----------------------+
Table 18: Action Subtypes Table 18: Action Subtypes
+-----------------+-------+-------------------+---------------------+ +-----------------+-------+-------------------+---------------------+
| Field | Type | Type | Description | | Field | Type | Type | Description |
skipping to change at page 54, line 31 skipping to change at page 58, line 31
o assign-ip - Assign the IP Address for the mobile session. o assign-ip - Assign the IP Address for the mobile session.
o assign-dpn - Assign the Dataplane Node. o assign-dpn - Assign the Dataplane Node.
o session - Assign values for the Session Level. o session - Assign values for the Session Level.
o uplink - Command applies to uplink. o uplink - Command applies to uplink.
o downlink - Command applies to downlink. o downlink - Command applies to downlink.
7.1. 3GPP Specific Extenstions 8.1. 3GPP Specific Extenstions
3GPP support is optional and detailed in this section. The following 3GPP support is optional and detailed in this section. The following
acronyms are used: acronyms are used:
APN-AMBR: Access Point Name Aggregate Maximum Bit Rate APN-AMBR: Access Point Name Aggregate Maximum Bit Rate
ARP: Allocation of Retention Priority ARP: Allocation of Retention Priority
EBI: EPS Bearer Identity EBI: EPS Bearer Identity
skipping to change at page 56, line 23 skipping to change at page 60, line 23
o assign-fteid-teid - Assign the Fully Qualified TEID (F-TEID) LOCAL o assign-fteid-teid - Assign the Fully Qualified TEID (F-TEID) LOCAL
TEID. TEID.
o session - Assign values for the Session Level. When this involves o session - Assign values for the Session Level. When this involves
'assign-fteid-ip' and 'assign-fteid-teid' this implies the values 'assign-fteid-ip' and 'assign-fteid-teid' this implies the values
are part of the default bearer. are part of the default bearer.
o uplink - Command applies to uplink. o uplink - Command applies to uplink.
o downlink - Comman applies to downlink. o downlink - Command applies to downlink.
8. Implementation Status 9. Implementation Status
Two FPC Agent implementations have been made to date. The first was Two FPC Agent implementations have been made to date. The first was
based upon Version 03 of the draft and followed Model 1. The second based upon Version 03 of the draft and followed Model 1. The second
follows Version 04 of the document. Both implementations were follows Version 04 of the document. Both implementations were
OpenDaylight plug-ins developed in Java by Sprint. Version 03 was OpenDaylight plug-ins developed in Java by Sprint. Version 03 was
known as fpcagent and version 04's implementation is simply referred known as fpcagent and version 04's implementation is simply referred
to as 'fpc'. to as 'fpc'.
fpcagent's intent was to provide a proof of concept for FPC Version fpcagent's intent was to provide a proof of concept for FPC Version
03 Model 1 in January 2016 and research various optimiziations, 03 Model 1 in January 2016 and research various errors, corrections
errors, corrections and optimizations that the Agent could make when and optimizations that the Agent could make when supporting multiple
supporting multiple DPNs. DPNs.
As the code developed to support OpenFlow and a proprietary DPN from As the code developed to support OpenFlow and a proprietary DPN from
a 3rd party, several of the advantages of a multi-DPN Agent became a 3rd party, several of the advantages of a multi-DPN Agent became
obvious including the use of machine learning to reduce the number of obvious including the use of machine learning to reduce the number of
Flows and Policy entities placed on the DPN. This work has driven Flows and Policy entities placed on the DPN. This work has driven
new efforts in the DIME WG, namely Diameter Policy Groups new efforts in the DIME WG, namely Diameter Policy Groups
[I-D.bertz-dime-policygroups]. [I-D.bertz-dime-policygroups].
A throughput performance of tens per second using various NetConf A throughput performance of tens per second using various NetConf
based solutions in OpenDaylight made fpcagent undesirable for call based solutions in OpenDaylight made fpcagent undesirable for call
processing. The RPC implementration improved throughput by an order processing. The RPC implementation improved throughput by an order
of magnitude but was not useful based upon FPC's Version 03 design of magnitude but was not useful based upon FPC's Version 03 design
using either model. During this time the features of version 04 and using two information models. During this time the features of
its converged model became attractive and teh fpcagent project was version 04 and its converged model became attractive and the fpcagent
closed in August 2016. fpcagent will no longer be developed and will project was closed in August 2016. fpcagent will no longer be
remain a proprietary implemenation. developed and will remain a proprietary implementation.
The learnings of fpcagent has influenced the second project, fpc. The learnings of fpcagent has influenced the second project, fpc.
Fpc is also an OpenDaylight project but is intended for open source Fpc is also an OpenDaylight project but is intended for open source
release, if circumstances permit. It is also scoped to be a fully release, if circumstances permit. It is also scoped to be a fully
compliant FPC Agent that supports multiple DPNs including those that compliant FPC Agent that supports multiple DPNs including those that
communicate via OpenFlow. The following features present in this communicate via OpenFlow. The following features present in this
draft and developed by the FPC co-authors have already lead to an draft and others developed by the FPC development team have already
order of magnitude improvement. lead to an order of magnitude improvement.
Migration of non-realtime provisioning of entities such as Migration of non-realtime provisioning of entities such as
topology and policy allowed the implementation to focus only on topology and policy allowed the implementation to focus only on
the rpc. the rpc.
Using only 5 messages and 2 notifications has also reduced Using only 5 messages and 2 notifications has also reduced
implementation time. As of this writing the project is 4 weeks implementation time.
old and currently supports CONFIGURE and CONFIGURE_BUNDLES based
upon the effort of 3 part time engineers.
Command Sets, an optional feature in this specfication, have Command Sets, an optional feature in this specification, have
eliminated 80% of the time spent determining what needs to be eliminated 80% of the time spent determining what needs to be
done with a Context during a Create or Update operation. done with a Context during a Create or Update operation.
The addition of the DPN List in a Context Delete operation
permits the Agent to avoid lookups of Context data in the Cache
entirely. For 3GPP support, extra attributes are required in the
Delete to avoid any cache lookup.
Op Reference is an optional feature modeled after video delivery. Op Reference is an optional feature modeled after video delivery.
It has reduced unnecessary cache lookups. It also has the It has reduced unnecessary cache lookups. It also has the
additional benefit of allowing an Agent to become cacheless and additional benefit of allowing an Agent to become cacheless and
effectively act as a FPC protocol adapater remotely with multi- effectively act as a FPC protocol adapter remotely with multi-DPN
DPN support or colocated on the DPN in a single-DPN support support or colocated on the DPN in a single-DPN support model.
model.
Multi-tenant support allows for Cache searches to be partitioned Multi-tenant support allows for Cache searches to be partitioned
for clustering and perforamnce improvements. This has not been for clustering and performance improvements. This has not been
capitalized upon by the current implementation but is part of the capitalized upon by the current implementation but is part of the
development roadmap. development roadmap.
Use of Contexts to pre-provision policy has also eliminated any Use of Contexts to pre-provision policy has also eliminated any
processing of Ports for DPNs which permitted the code for processing of Ports for DPNs which permitted the code for
CONFIGURE and CONFIGURE_BUNDLES to be implemented as a simple CONFIGURE and CONFIGURE_BUNDLES to be implemented as a simple
nested FOR loops (see below). nested FOR loops (see below).
Current performance results without code optimizations or tuning Current performance results without code optimizations or tuning
allow 2-5K FPC Contexts processed per second on a Mac laptop sourced allow 2-5K FPC Contexts processed per second on a 2013 Mac laptop.
in 2013. This results in 2x the number of transactions on the This results in 2x the number of transactions on the southbound
southbound interface to a proprietary DPN API on the same machine. interface to a proprietary DPN API on the same machine.
fpc currently supports the following after 3 weeks of development by fpc currently supports the following:
two part time engineers:
1 proprietary DPN API 1 proprietary DPN API
Policy and Topology as defined in this Policy and Topology as defined in this
specification using OpenDaylight North Bound specification using OpenDaylight North Bound
Interfaces such as NetConf and RestConf Interfaces such as NetConf and RestConf
CONFIGURE and CONFIGURE_BUNDLES (all CONFIGURE and CONFIGURE_BUNDLES (all
operations) operations)
DPN assignment, Tunnel allocations and IPv4 DPN assignment, Tunnel allocations and IPv4
address assignment by the Agent or Client. address assignment by the Agent or Client.
skipping to change at page 59, line 5 skipping to change at page 63, line 5
CONFIGURE and CONFIGURE_BUNDLES (all CONFIGURE and CONFIGURE_BUNDLES (all
operations) operations)
DPN assignment, Tunnel allocations and IPv4 DPN assignment, Tunnel allocations and IPv4
address assignment by the Agent or Client. address assignment by the Agent or Client.
Immediate Response is always an Immediate Response is always an
OK_NOTIFY_FOLLOWS. OK_NOTIFY_FOLLOWS.
assignment system (receives rpc call): assignment system (receives rpc call):
perform basic operation integrity check perform basic operation integrity check
if CONFIGURE then if CONFIGURE then
goto assignments goto assignments
if assignments was ok then if assignments was ok then
send request to activation system send request to activation system
respond back to client with assignment data respond back to client with assignment data
else else
send back error send back error
end if end if
else if CONFIGURE_BUNDLES then else if CONFIGURE_BUNDLES then
for each operation in bundles for each operation in bundles
goto assignments goto assignments
if assignments was ok then if assignments was ok then
hold onto data hold onto data
else else
return error with the assignments that occurred in return error with the assignments that occurred in
prior operations (best effort) prior operations (best effort)
end if end if
end for end for
send bundles to activation systems send bundles to activation systems
end if end if
assignments:
assign DPN, IPv4 Address and/or tunnel info as requried
if an error occurs undo all assigments in this operation
return result
activation system: assignments:
build cache according to op-ref and operation type assign DPN, IPv4 Address and/or tunnel info as required
for each operation if an error occurs undo all assignments in this operation
for each Context return result
for each DPN / direction in Context
perform actions on DPN according to Command Set
end for
end for
end for
commit changes to in memory cache
log transaction for tracking and nofication (CONFIG_RESULT_NOTIFY)
Figure 26: fpc pseudo code activation system:
build cache according to op-ref and operation type
for each operation
for each Context
for each DPN / direction in Context
perform actions on DPN according to Command Set
end for
end for
end for
commit changes to in memory cache
log transaction for tracking and notification (CONFIG_RESULT_NOTIFY)
As of this writing (Sept 2016) the implementation is 3 weeks old an Figure 27: fpc pseudo code
considered pre-alpha. It is scheduled to be conformant to all FPC
version 04 aspects within 60 days.
For further information please contact Lyle Bertz who is also a co- For further information please contact Lyle Bertz who is also a co-
author of this document. author of this document.
NOTE: Tenant support requires binding a Client ID to a Tenant ID (it NOTE: Tenant support requires binding a Client ID to a Tenant ID (it
is a one to many relation) but that is outside of the scope of this is a one to many relation) but that is outside of the scope of this
specification. Otherwise, the specification is complete in terms of specification. Otherwise, the specification is complete in terms of
providing sufficient information to implement an Agent. providing sufficient information to implement an Agent.
9. Security Considerations 10. Security Considerations
Detailed protocol implementations for DMM Forwarding Policy Detailed protocol implementations for DMM Forwarding Policy
Configuration must ensure integrity of the information exchanged Configuration must ensure integrity of the information exchanged
between an FPC Client and an FPC Agent. Required Security between an FPC Client and an FPC Agent. Required Security
Associations may be derived from co-located functions, which utilize Associations may be derived from co-located functions, which utilize
the FPC Client and FPC Agent respectively. the FPC Client and FPC Agent respectively.
10. IANA Considerations The YANG modules defined in this memo is designed to be accessed via
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the
secure transport layer and the mandatory-to-implement secure
transport is SSH [RFC6242].
This document provides a data model and protocol operation for DMM The information model defined in the memo is designed to be access by
Forwarding Policy Configuration. YANG models are currently included protocols specified in extensions to this document or, if using the
in the Appendix and will be updated per the next revision of this YANG modules, as described above.
document to specify the data model as well as to enable an
implementation of the FPC protocol using RPC.
No actions from IANA are required. In case the semantics of this There are a number of data nodes defined which are
specification will be mapped to a particular wire protocol, authors writable/creatable/deletable. These data nodes may be considered
of an associated separate document will approach IANA for the sensitive or vulnerable in some network environments. Write
associated action to create a registry or add registry entries. operations (e.g., a NETCONF edit-config) to these data nodes without
proper protection can have a negative effect on network operations.
These are the subtrees and data nodes and their sensitivity/
vulnerability:
11. Work Team Participants Nodes under the Policy tree provide generic policy enforcement and
traffic classification. The can be used to block or permit
traffic. If this portion of the model was to be compromised it
may be used to block, identify or permit traffic that was not
intended by the Tenant or FPC CLient.
Nodes under the Topology tree provide defintion of the Tenant's
fowarding topology. Any compromise of this information will
provide topology information that could be used for subsequent
attack vectors. Removal of topology can limit services.
Nodes under the Mobility Tree are runtime only and manipulated by
remote procedure calls. The unwanted deletion or removal of such
information would deny users service or provide services ot
unauthorized parties.
Some of the readable data nodes defined 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. These are the subtrees and data nodes and their
sensitivity/vulnerability:
IP address assignments in the Context along with their associated
tunnel configurations/identifiers (from the FPC base module)
Internaional Mobile Subscriber Identity (IMSI) and bearer
identifiers in the Context when using the optional 3GPP module
Some of the RPC operations defined may be considered sensitive or
vulnerable in some network environments. It is thus important to
control access to these operations. These are the operations and
their sensitivity/vulnerability:
CONF and CONF_BUNDLES send Context information which can include
information of a sensitive or vulnerable nature in some network
environments as described above.
Monitor related RPC operations do not specicially provide
sensitive or vulnerable informaiton but care must be taken by
users to avoid identifier values that expose sensitive or
vulnerable information.
Notications MUST be treated with same level of protection and
scrutiny as the operations they correspond to. For example, a
CONFIG_RESULT_NOTIFY notification provides the same information
that is sent as part of the input and output of the CONF and
CONF_BUNDLES RPC operations.
General usage of FPC MUST consider the following:
FPC Naming Section 5.4 permits arbirtrary string values but a
users MUST avoid placing sensitive or vulnerable information in
those values.
Policies that are very narrow and permit the identificaiton of
specific traffic, e.g. that of a single user, SHOULD be avoided.
11. IANA Considerations
This document registers six URIs in the "IETF XML Registry"
[RFC3688]. Following the format in RFC 3688, the following
registrations have been made.
URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc
Registrant Contact: The DMM WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-dmm-threegpp
Registrant Contact: The DMM WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos
Registrant Contact: The DMM WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-dmm-traffic-selector-types
Registrant Contact: The DMM WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-policyext
Registrant Contact: The DMM WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-pmip
Registrant Contact: The DMM WG of the IETF.
XML: N/A, the requested URI is an XML namespace.
This document registers the following YANG modules in the "YANG
Module Names" registry [RFC6020].
name: ietf-dmm-fpc
namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc
prefix: fpc
reference: TBD1
name: ietf-dmm-threegpp
namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-threegpp
prefix: threegpp
reference: TBD1
name: ietf-dmm-pmip-qos
namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos
prefix: qos-pmip
reference: TBD1
name: ietf-dmm-traffic-selector-types
namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-traffic-selector-types
prefix: traffic-selectors
reference: TBD1
name: ietf-dmm-traffic-selector-types
namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-policyext
prefix: fpcpolicyext
reference: TBD1
name: ietf-dmm-traffic-selector-types
namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-pmip
prefix: fpc-pmip
reference: TBD1
The document registers the following YANG submodules in the "YANG
Module Names" registry [RFC6020].
name: ietf-dmm-fpc-base
parent: ietf-dmm-fpc
reference: TBD1
12. Work Team Participants
Participants in the FPSM work team discussion include Satoru Participants in the FPSM work team discussion include Satoru
Matsushima, Danny Moses, Sri Gundavelli, Marco Liebsch, Pierrick Matsushima, Danny Moses, Sri Gundavelli, Marco Liebsch, Pierrick
Seite, Alper Yegin, Carlos Bernardos, Charles Perkins and Fred Seite, Alper Yegin, Carlos Bernardos, Charles Perkins and Fred
Templin. Templin.
12. References 13. References
12.1. Normative References 13.1. Normative References
[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,
<http://www.rfc-editor.org/info/rfc2119>. <http://www.rfc-editor.org/info/rfc2119>.
[RFC6088] Tsirtsis, G., Giarreta, G., Soliman, H., and N. Montavont, [RFC6088] Tsirtsis, G., Giarreta, G., Soliman, H., and N. Montavont,
"Traffic Selectors for Flow Bindings", RFC 6088, "Traffic Selectors for Flow Bindings", RFC 6088,
DOI 10.17487/RFC6088, January 2011, DOI 10.17487/RFC6088, January 2011,
<http://www.rfc-editor.org/info/rfc6088>. <http://www.rfc-editor.org/info/rfc6088>.
[RFC6089] Tsirtsis, G., Soliman, H., Montavont, N., Giaretta, G., [RFC6089] Tsirtsis, G., Soliman, H., Montavont, N., Giaretta, G.,
and K. Kuladinithi, "Flow Bindings in Mobile IPv6 and and K. Kuladinithi, "Flow Bindings in Mobile IPv6 and
Network Mobility (NEMO) Basic Support", RFC 6089, Network Mobility (NEMO) Basic Support", RFC 6089,
DOI 10.17487/RFC6089, January 2011, DOI 10.17487/RFC6089, January 2011,
<http://www.rfc-editor.org/info/rfc6089>. <http://www.rfc-editor.org/info/rfc6089>.
[RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J. [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
Korhonen, "Requirements for Distributed Mobility RFC 6991, DOI 10.17487/RFC6991, July 2013,
Management", RFC 7333, DOI 10.17487/RFC7333, August 2014, <http://www.rfc-editor.org/info/rfc6991>.
<http://www.rfc-editor.org/info/rfc7333>.
12.2. Informative References 13.2. Informative References
[I-D.bertz-dime-policygroups] [I-D.bertz-dime-policygroups]
Bertz, L., "Diameter Policy Groups and Sets", draft-bertz- Bertz, L., "Diameter Policy Groups and Sets", draft-bertz-
dime-policygroups-01 (work in progress), July 2016. dime-policygroups-01 (work in progress), July 2016.
[I-D.ietf-dmm-deployment-models] [I-D.ietf-dmm-deployment-models]
Gundavelli, S. and S. Jeon, "DMM Deployment Models and Gundavelli, S. and S. Jeon, "DMM Deployment Models and
Architectural Considerations", draft-ietf-dmm-deployment- Architectural Considerations", draft-ietf-dmm-deployment-
models-00 (work in progress), August 2016. models-00 (work in progress), August 2016.
[I-D.ietf-netconf-restconf] [I-D.ietf-netconf-restconf]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", draft-ietf-netconf-restconf-16 (work in Protocol", draft-ietf-netconf-restconf-18 (work in
progress), August 2016. progress), October 2016.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004,
<http://www.rfc-editor.org/info/rfc3688>.
[RFC5213] Gundavelli, S., Ed., Leung, K., Devarapalli, V., [RFC5213] Gundavelli, S., Ed., Leung, K., Devarapalli, V.,
Chowdhury, K., and B. Patil, "Proxy Mobile IPv6", Chowdhury, K., and B. Patil, "Proxy Mobile IPv6",
RFC 5213, DOI 10.17487/RFC5213, August 2008, RFC 5213, DOI 10.17487/RFC5213, August 2008,
<http://www.rfc-editor.org/info/rfc5213>. <http://www.rfc-editor.org/info/rfc5213>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<http://www.rfc-editor.org/info/rfc6241>. <http://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<http://www.rfc-editor.org/info/rfc6242>.
[RFC7222] Liebsch, M., Seite, P., Yokota, H., Korhonen, J., and S. [RFC7222] Liebsch, M., Seite, P., Yokota, H., Korhonen, J., and S.
Gundavelli, "Quality-of-Service Option for Proxy Mobile Gundavelli, "Quality-of-Service Option for Proxy Mobile
IPv6", RFC 7222, DOI 10.17487/RFC7222, May 2014, IPv6", RFC 7222, DOI 10.17487/RFC7222, May 2014,
<http://www.rfc-editor.org/info/rfc7222>. <http://www.rfc-editor.org/info/rfc7222>.
[RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J.
Korhonen, "Requirements for Distributed Mobility
Management", RFC 7333, DOI 10.17487/RFC7333, August 2014,
<http://www.rfc-editor.org/info/rfc7333>.
Appendix A. YANG Data Model for the FPC protocol Appendix A. YANG Data Model for the FPC protocol
These modules define YANG definitions. Seven modules are defined: These modules define YANG definitions. Seven modules are defined:
o ietf-dmm-fpcbase (fpcbase) - Defines the base model for model as o ietf-dmm-fpc (fpc) - Defines the base model and messages for FPC
defined in this document
o ietf-dmm-fpcagent (fpcagent) - Defines the FPC Agent entites and o ietf-dmm-fpc-base An FPC submodule that defines the information
messages as defined in this document model that is specified in this document
o ietf-pmip-qos (pmip-qos) - Defines proxy mobile IPv6 QoS o ietf-pmip-qos (pmip-qos) - Defines proxy mobile IPv6 QoS
parameters per RFC 7222 parameters per RFC 7222
o ietf-traffic-selectors-types (traffic-selectors) - Defines Traffic o ietf-traffic-selectors-types (traffic-selectors) - Defines Traffic
Selectors per RFC 6088 Selectors per RFC 6088
o ietf-dmm-threegpp - Defines the base structures for 3GPP based IP o ietf-dmm-threegpp - Defines the base structures for 3GPP based IP
mobility and augments fpcagent to support these parameters. mobility and augments fpcagent to support these parameters.
o ietf-dmm-fpc-pmip - Augments fpcp-base to include PMIP Traffic o ietf-dmm-fpc-pmip - Augments fpcp-base to include PMIP Traffic
Selectors as a Traffic Descriptor subtype and pmip-qos QoS Selectors as a Traffic Descriptor subtype and pmip-qos QoS
parameters, where applicable, as properties. parameters, where applicable, as properties.
o ietf-dmm-fpc-policyext - defines basic policy extensions, e.g. o ietf-dmm-fpc-policyext - defines basic policy extensions, e.g.
Actions and Descriptors, to fpcbase and as defined in this Actions and Descriptors, to fpcbase and as defined in this
document. document.
A.1. YANG Models A.1. FPC Agent YANG Model
A.1.1. FPC Base YANG Model This module defines the information model and protocol elements
specified in this document.
module ietf-dmm-fpcbase { This module references [RFC6991] and the fpc-base module defined in
namespace "urn:ietf:params:xml:ns:yang:fpcbase"; this document.
prefix fpcbase;
<CODE BEGINS> file "ietf-dmm-fpc@2016-08-03.yang"
module ietf-dmm-fpc {
namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc";
prefix fpc;
import ietf-inet-types { prefix inet; revision-date 2013-07-15; } import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
organization "IETF DMM Working Group"; include ietf-dmm-fpc-base;
contact "Satoru Matsushima <satoru.matsushima@g.softbank.co.jp>";
organization "IETF Distributed Mobility Management (DMM)
Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:netmod@ietf.org>
WG Chair: Dapeng Liu
<mailto:maxpassion@gmail.com>
WG Chair: Jouni Korhonen
<mailto:jouni.nospam@gmail.com>
Editor: Satoru Matsushima
<mailto:satoru.matsushima@g.softbank.co.jp>
Editor: Lyle Bertz
<mailto:lyleb551144@gmail.com>";
description description
"This module contains YANG definition for "This module contains YANG definition for
Forwarding Policy Configuration Protocol.(FPCP)"; Forwarding Policy Configuration Protocol (FPCP).
Copyright (c) 2016 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
(http://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 Simplified BSD License text as described
in Section 4.e of the Trust Legal Provisions and are provided
without warranty as described in the Simplified BSD License.";
revision 2016-08-03 { revision 2016-08-03 {
description "Changes based on -04 version of FPC draft."; description "Initial Revision.";
reference "draft-ietf-dmm-fpc-cpdp-04"; reference "draft-ietf-dmm-fpc-cpdp-05";
}
feature fpc-cloning {
description "An ability to support cloning in the RPC.";
}
feature fpc-basename-registry {
description "Ability to track Base Names already provisioned on the Agent";
}
feature fpc-bundles {
description "Ability for Client to send multiple bundles of actions to
an Agent";
}
feature fpc-client-binding {
description "Allows a FPC Client to bind a DPN to an Topology Object";
}
feature fpc-auto-binding {
description "Allows a FPC Agent to advertise Topology Objects that could be DPNs";
}
feature instruction-bitset {
description "Allows the expression of instructions (bit sets) over FPC.";
}
feature operation-ref-scope {
description "Provides the scope of refeneces in an operation. Used to optmize
the Agent processing.";
}
feature policy-rpc-provisioning {
description "Enables the ability to send policy elements (Policy Groups, Policies,
Descriptors and Actions) to be sent in CONF or CONF_BUNDLES operations.";
}
typedef agent-identifier {
type fpc:fpc-identity;
description "Agent Identifier";
}
typedef client-identifier {
type fpc:fpc-identity;
description "Client Identifier";
}
grouping basename-info {
leaf basename {
if-feature fpc:fpc-basename-registry;
type fpc:fpc-identity;
description "Rules Basename";
}
leaf base-state {
if-feature fpc:fpc-basename-registry;
type string;
description "Current State";
}
leaf base-checkpoint {
if-feature fpc:fpc-basename-registry;
type string;
description "Checkpoint";
}
description "Basename Information";
}
// Top Level Structures
container tenants {
list tenant {
key "tenant-id";
leaf tenant-id {
type fpc:fpc-identity;
description "Tenant ID";
}
container fpc-policy {
list policy-groups {
key "policy-group-id";
uses fpc:fpc-policy-group;
description "Policy Groups";
}
list policies {
key "policy-id";
uses fpc:fpc-policy;
description "Policies";
}
list descriptors {
key descriptor-id;
uses fpc:fpc-descriptor;
description "Descriptors";
}
list actions {
key action-id;
uses fpc:fpc-action;
description "Actions";
}
description "Policy";
}
container fpc-mobility {
config false;
list contexts {
key context-id;
uses fpc:fpc-context;
description "Contexts";
}
list ports {
key port-id;
uses fpc:fpc-port;
description "Ports";
}
list monitors {
uses fpc:monitor-config;
description "Monitors";
}
description "Mobility";
}
container fpc-topology {
// Basic Agent Topology Structures
list domains {
key domain-id;
uses fpc:fpc-domain;
uses fpc:basename-info;
description "Domains";
}
leaf dpn-id {
if-feature fpc:fpc-basic-agent;
type fpc:fpc-dpn-id;
description "DPN ID";
}
leaf-list control-protocols {
if-feature fpc:fpc-basic-agent;
type identityref {
base "fpc:fpc-dpn-control-protocol";
}
description "Control Protocols";
}
list dpn-groups {
if-feature fpc:fpc-multi-dpn;
key dpn-group-id;
uses fpc:fpc-dpn-group;
list domains {
key domain-id;
uses fpc:fpc-domain;
uses fpc:basename-info;
description "Domains";
}
description "DPN Groups";
}
list dpns {
if-feature fpc:fpc-multi-dpn;
key dpn-id;
uses fpc:fpc-dpn;
description "DPNs";
}
description "Topology";
}
description "Tenant";
}
description "Tenant List";
}
container fpc-agent-info {
// General Agent Structures
leaf-list supported-features {
type string;
description "Agent Features";
}
// Common Agent Info
list supported-events {
key event;
leaf event {
type identityref {
base "fpc:event-type";
}
description "Event Types";
}
leaf event-id {
type fpc:event-type-id;
description "Event ID";
}
description "Supported Events";
}
list supported-error-types {
key error-type;
leaf error-type {
type identityref {
base "fpc:error-type";
}
description "Error Type";
}
leaf error-type-id {
type fpc:error-type-id;
description "Error Type ID";
}
description "Supported Error Types";
}
description "General Agent Information";
} }
// Multi-DPN Agent Structures
grouping fpc-dpn-group {
leaf dpn-group-id {
type fpc:fpc-dpn-group-id;
description "DPN Group ID";
}
leaf data-plane-role {
type identityref {
base "fpc:fpc-forwaridingplane-role";
}
description "Dataplane Role";
}
leaf access-type {
type identityref {
base "fpc:fpc-access-type";
}
description "Access Type";
}
leaf mobility-profile {
type identityref {
base "fpc:fpc-mobility-profile-type";
}
description "Mobility Profile";
}
list dpn-group-peers {
key "remote-dpn-group-id";
uses fpc:fpc-dpn-peer-group;
description "Peer DPN Groups";
}
description "FPC DPN Group";
}
// RPC
// RPC Specific Structures
//Input Structures
typedef admin-status {
type enumeration {
enum enabled {
value 0;
description "enabled";
}
enum disabled {
value 1;
description "disabled";
}
enum virtual {
value 2;
description "virtual";
}
}
description "Adminstrative Status";
}
typedef session-status {
type enumeration {
enum complete {
value 0;
description "complete";
}
enum incomplete {
value 1;
description "incomplete";
}
enum outdated {
value 2;
description "outdated";
}
}
description "Session Status";
}
typedef op-delay {
type uint32;
description "Operation Delay (ms)";
}
typedef op-identifier {
type uint64;
description "Operation Identifier";
}
typedef ref-scope {
type enumeration {
enum none {
value 0;
description "no references";
}
enum op {
value 1;
description "op - All references are contained in the operation body (intra-op)";
}
enum bundle {
value 2;
description "bundle - All references in exist in bundle (inter-operation/intra-bundle).
NOTE - If this value comes in CONFIG call it is equivalen to 'op'.";
}
enum storage {
value 3;
description "storage - One or more references exist outside of the operation and bundle.
A lookup to a cache / storage is required.";
}
enum unknown {
value 4;
description " unknown - the location of the references are unknown. This is treated as
a 'storage' type.";
}
}
description "Search scope for references in the operation.";
}
grouping instructions {
container instructions {
if-feature instruction-bitset;
choice instr-type {
description "Instruction Value Choice";
}
description "Instructions";
}
description "Instructions Value";
}
grouping op-header {
leaf client-id {
type fpc:client-identifier;
description "Client ID";
}
leaf delay {
type op-delay;
description "Delay";
}
leaf session-state {
type session-status;
description "Session State";
}
leaf admin-state {
type admin-status;
description "Admin State";
}
leaf op-type {
type enumeration {
enum create {
value 0;
description "create";
}
enum update {
value 1;
description "update";
}
enum query {
value 2;
description "query";
}
enum delete {
value 3;
description "delete";
}
}
description "Type";
}
leaf op-ref-scope {
if-feature operation-ref-scope;
type fpc:ref-scope;
description "Reference Scope";
}
uses fpc:instructions;
description "Operation Header";
}
grouping clone-ref {
leaf entity {
type fpc:fpc-identity;
description "Clone ID";
}
leaf source {
type fpc:fpc-identity;
description "Source";
}
description "Clone Reference";
}
identity command-set {
description "protocol specific commands";
}
grouping context-operation {
uses fpc:fpc-context;
uses fpc:instructions;
description "Context Operation";
}
// Output Structure
grouping payload {
list ports {
uses fpc:fpc-port;
description "Ports";
}
list contexts {
uses fpc:context-operation;
description "Contexts";
}
list policy-groups {
if-feature fpc:policy-rpc-provisioning;
key "policy-group-id";
uses fpc:fpc-policy-group;
description "Policy Groups";
}
list policies {
if-feature fpc:policy-rpc-provisioning;
key "policy-id";
uses fpc:fpc-policy;
description "Policies";
}
list descriptors {
if-feature fpc:policy-rpc-provisioning;
key descriptor-id;
uses fpc:fpc-descriptor;
description "Descriptors";
}
list actions {
if-feature fpc:policy-rpc-provisioning;
key action-id;
uses fpc:fpc-action;
description "Actions";
}
description "Payload";
}
grouping op-input {
uses fpc:op-header;
leaf op-id {
type op-identifier;
description "Operation ID";
}
choice op_body {
case create_or_update {
list clones {
if-feature fpc-cloning;
key entity;
uses fpc:clone-ref;
description "Clones";
}
uses fpc:payload;
description "Create/Update input";
}
case delete_or_query {
uses fpc:targets-value;
description "Delete/Query input";
}
description "Opeartion Input value";
}
description "Operation Input";
}
typedef result {
type enumeration {
enum ok {
value 0;
description "OK";
}
enum err {
value 1;
description "Error";
}
enum ok-notify-follows {
value 2;
description "OK with NOTIFY following";
}
}
description "Result Status";
}
identity error-type {
description "Base Error Type";
}
identity name-already-exists {
description "Notification that an entity of the same name already exists";
}
typedef error-type-id {
type uint32;
description "Integer form of the Error Type";
}
grouping op-status-value {
leaf op-status {
type enumeration {
enum ok {
value 0;
description "OK";
}
enum err {
value 1;
description "Error";
}
}
description "Operation Status";
}
description "Operation Status Value";
}
grouping error-info {
leaf error-type-id {
type fpc:error-type-id;
description "Error ID";
}
leaf error-info {
type string {
length "1..1024";
}
description "Error Detail";
}
description "Error Information";
}
grouping result-body {
leaf op-id {
type op-identifier;
description "Operation Identifier";
}
choice result-type {
case err {
uses fpc:error-info;
description "Error Information";
}
case create-or-update-success {
uses fpc:payload;
description "Create/Update Success";
}
case delete_or_query-success {
uses fpc:targets-value;
description "Delete/Query Success";
}
case empty-case {
description "Empty Case";
}
description "Result Value";
}
description "Result Body";
}
// Common RPCs
rpc configure {
description "CONF message";
input {
uses fpc:op-input;
}
output {
leaf result {
type result;
description "Result";
}
uses fpc:result-body;
}
}
rpc configure-bundles {
if-feature fpc:fpc-bundles;
description "CONF_BUNDLES message";
input {
leaf highest-op-ref-scope {
if-feature operation-ref-scope;
type fpc:ref-scope;
description "Highest Op-Ref used in the input";
}
list bundles {
key op-id;
uses fpc:op-input;
description "List of operations";
}
}
output {
list bundles {
key op-id;
uses fpc:result-body;
description "Operation Identifier";
}
}
}
// Notification Messages & Structures
typedef notification-id {
type uint32;
description "Notification Identifier";
}
grouping notification-header {
leaf notification-id {
type fpc:notification-id;
description "Notification ID";
}
leaf timestamp {
type uint32;
description "timestamp";
}
description "Notification Header";
}
notification config-result-notification {
uses fpc:notification-header;
choice value {
case config-result {
uses fpc:op-status-value;
uses fpc:result-body;
description "CONF Result";
}
case config-bundle-result {
list bundles {
uses fpc:op-status-value;
uses fpc:result-body;
description "Operation Results";
}
description "CONF_BUNDLES Result";
}
description "Config Result value";
}
description "CONF/CONF_BUNDLES Async Result";
}
rpc event_register {
description "Used to register monitoring of parameters/events";
input {
uses fpc:monitor-config;
}
output {
leaf monitor-result {
type fpc:result;
description "Result";
}
uses fpc:error-info;
}
}
rpc event_deregister {
description "Used to de-register monitoring of parameters/events";
input {
list monitors {
uses fpc:monitor-id;
description "Monitor ID";
}
}
output {
leaf monitor-result {
type fpc:result;
description "Result";
}
uses fpc:error-info;
}
}
rpc probe {
description "Probe the status of a registered monitor";
input {
uses fpc:targets-value;
}
output {
leaf monitor-result {
type fpc:result;
description "Result";
}
uses fpc:error-info;
}
}
notification notify {
uses fpc:notification-header;
choice value {
case dpn-candidate-available {
if-feature fpc:fpc-auto-binding;
leaf node-id {
type inet:uri;
description "Topology URI";
}
leaf-list access-types {
type identityref {
base "fpc:fpc-access-type";
}
description "Access Types";
}
leaf-list mobility-profiles {
type identityref {
base "fpc:fpc-mobility-profile-type";
}
description "Mobility Profiles";
}
leaf-list forwarding-plane-roles {
type identityref {
base "fpc:fpc-forwaridingplane-role";
}
description "Forwarding Plane Role";
}
description "DPN Candidate Availability";
}
case monitor-notification {
choice monitor-notification-value {
case simple-monitor {
uses fpc:report;
description "Report";
}
case bulk-monitors {
list reports {
uses fpc:report;
description "Reports";
}
description "Bulk Monitor Response";
}
description "Monitor Notification value";
}
description "Monitor Notification";
}
description "Notify Value";
}
description "Notify Message";
}
}
<CODE ENDS>
A.2. YANG Models
A.2.1. FPC YANG Model
This module defines the base data elements specified in this
document.
This module references [RFC6991].
<CODE BEGINS> file "ietf-dmm-fpc-base@2016-08-03.yang"
submodule ietf-dmm-fpc-base {
belongs-to ietf-dmm-fpc {
prefix fpc;
}
import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
organization "IETF Distributed Mobility Management (DMM)
Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:netmod@ietf.org>
WG Chair: Dapeng Liu
<mailto:maxpassion@gmail.com>
WG Chair: Jouni Korhonen
<mailto:jouni.nospam@gmail.com>
Editor: Satoru Matsushima
<mailto:satoru.matsushima@g.softbank.co.jp>
Editor: Lyle Bertz
<mailto:lyleb551144@gmail.com>";
description
"This module contains YANG definition for
Forwarding Policy Configuration Protocol(FPCP).
Copyright (c) 2016 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
(http://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 Simplified BSD License text as described
in Section 4.e of the Trust Legal Provisions and are provided
without warranty as described in the Simplified BSD License.";
revision 2016-08-03 {
description "Initial Revision.";
reference "draft-ietf-dmm-fpc-cpdp-05";
}
feature fpc-basic-agent { feature fpc-basic-agent {
description "This is an agent co-located with a DPN. In this case description "This is an agent co-located with a DPN. In this case
only DPN Peer Groups, the DPN Id and Control Protocols are exposed only DPN Peer Groups, the DPN Id and Control Protocols are exposed
along with the core structures."; along with the core structures.";
} }
feature fpc-multi-dpn { feature fpc-multi-dpn {
description "The agent supports multiple DPNs."; description "The agent supports multiple DPNs.";
} }
typedef fpc-identity { typedef fpc-identity {
type union { type union {
type uint32; type uint32;
type string; type string;
type instance-identifier; type instance-identifier;
} }
description "FPC Identity";
} }
grouping target-value { grouping target-value {
leaf target { leaf target {
type fpc-identity; type fpc-identity;
description "Target Identity";
} }
description "FPC Target Value";
} }
grouping targets-value { grouping targets-value {
list targets { list targets {
key "target"; key "target";
leaf target { leaf target {
type fpc-identity; type fpc-identity;
description "Target Id";
} }
leaf dpn-id { leaf dpn-id {
type fpcbase:fpc-dpn-id; type fpc:fpc-dpn-id;
description "DPN Id";
} }
description "List of Targets";
} }
description "Targets Value";
} }
// Descriptor Structure // Descriptor Structure
typedef fpc-descriptor-id-type { typedef fpc-descriptor-id-type {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "Descriptor-ID"; description "Descriptor-ID";
} }
identity fpc-descriptor-type { identity fpc-descriptor-type {
description "A traffic descriptor"; description "A traffic descriptor";
} }
grouping fpc-descriptor-id { grouping fpc-descriptor-id {
leaf descriptor-id { leaf descriptor-id {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "Descriptor Id";
} }
description "FPC Descriptor ID value";
} }
grouping fpc-descriptor { grouping fpc-descriptor {
uses fpcbase:fpc-descriptor-id; uses fpc:fpc-descriptor-id;
leaf descriptor-type { leaf descriptor-type {
mandatory true;
type identityref { type identityref {
base "fpc-descriptor-type"; base "fpc-descriptor-type";
} }
mandatory true;
description "Descriptor Type"; description "Descriptor Type";
} }
choice descriptor-value { choice descriptor-value {
case all-traffic { case all-traffic {
leaf all-traffic { leaf all-traffic {
type empty; type empty;
description "Empty Value";
} }
} }
description "Descriptor Value";
} }
description "FPC Descriptor";
} }
// Action Structure // Action Structure
typedef fpc-action-id-type { typedef fpc-action-id-type {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "Action-ID"; description "Action-ID";
} }
identity fpc-action-type { identity fpc-action-type {
description "Action Type"; description "Action Type";
} }
grouping fpc-action-id { grouping fpc-action-id {
leaf action-id { leaf action-id {
type fpcbase:fpc-action-id-type; type fpc:fpc-action-id-type;
description "Action Identifier";
} }
description "FPC Action ID";
} }
grouping fpc-action { grouping fpc-action {
uses fpcbase:fpc-action-id; uses fpc:fpc-action-id;
leaf action-type { leaf action-type {
mandatory true;
type identityref { type identityref {
base "fpc-action-type"; base "fpc-action-type";
} }
mandatory true;
description "Action Type"; description "Action Type";
} }
choice action-value { choice action-value {
case drop { case drop {
leaf drop { leaf drop {
type empty; type empty;
description "Empty Value";
} }
} }
description "FPC Action Value";
} }
description "FPC Action";
} }
// Rule Structure // Rule Structure
grouping fpc-rule { grouping fpc-rule {
description
"FPC Rule. When no actions are present the action is DROP.
When no Descriptors are empty the default is 'all traffic'.";
list descriptors { list descriptors {
key descriptor-id; key descriptor-id;
uses fpcbase:fpc-descriptor-id; uses fpc:fpc-descriptor-id;
leaf direction { leaf direction {
type fpc-direction; type fpc:fpc-direction;
description "Direction";
} }
description "Descriptors";
} }
list actions { list actions {
key action-id; key action-id;
leaf order { leaf order {
type uint32; type uint32;
description "Action Execution Order";
} }
uses fpcbase:fpc-action-id; uses fpc:fpc-action-id;
description "Actions";
} }
description
"FPC Rule. When no actions are present the action is DROP.
When no Descriptors are empty the default is 'all traffic'.";
} }
// Policy Structures // Policy Structures
typedef fpc-policy-id { typedef fpc-policy-id {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "Policy Identifier";
} }
grouping fpc-policy { grouping fpc-policy {
leaf policy-id { leaf policy-id {
type fpcbase:fpc-policy-id; type fpc:fpc-policy-id;
description "Policy Id";
} }
list rules { list rules {
key order; key order;
leaf order { leaf order {
type uint32; type uint32;
description "Rule Order";
} }
uses fpcbase:fpc-rule; uses fpc:fpc-rule;
description "Rules";
} }
description "FPC Policy";
} }
// Policy Group // Policy Group
typedef fpc-policy-group-id { typedef fpc-policy-group-id {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "Policy Group Identifier";
} }
grouping fpc-policy-group { grouping fpc-policy-group {
leaf policy-group-id { leaf policy-group-id {
type fpcbase:fpc-policy-group-id; type fpc:fpc-policy-group-id;
description "Policy Group ID";
} }
leaf-list policies { leaf-list policies {
type fpcbase:fpc-policy-id; type fpc:fpc-policy-id;
description "Policies";
} }
description "FPC Policy Group";
} }
// Mobility Structures // Mobility Structures
// Port Group // Port Group
typedef fpc-port-id { typedef fpc-port-id {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "FPC Port Identifier";
} }
grouping fpc-port { grouping fpc-port {
leaf port-id { leaf port-id {
type fpcbase:fpc-port-id; type fpc:fpc-port-id;
description "Port ID";
} }
leaf-list policy-groups { leaf-list policy-groups {
type fpcbase:fpc-policy-group-id; type fpc:fpc-policy-group-id;
description "Policy Groups";
} }
description "FPC Port";
} }
// Context Group // Context Group
typedef fpc-context-id { typedef fpc-context-id {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "FPC Context Identifier";
} }
grouping fpc-context-profile { grouping fpc-context-profile {
description "A profile that applies to a specific direction";
leaf tunnel-local-address { leaf tunnel-local-address {
type inet:ip-address; type inet:ip-address;
description "Uplink endpoint address of the DPN which agent exists."; description "Uplink endpoint address of the DPN which agent exists.";
} }
leaf tunnel-remote-address { leaf tunnel-remote-address {
type inet:ip-address; type inet:ip-address;
description "Uplink endpoint address of the DPN which agent exists."; description "Uplink endpoint address of the DPN which agent exists.";
} }
leaf tunnel-mtu-size { leaf mtu-size {
type uint32; type uint32;
description "Tunnel MTU size"; description "MTU size";
} }
container mobility-tunnel-parameters { container mobility-tunnel-parameters {
description "Specifies profile specific uplink tunnel parameters to the DPN which the agent exists. The profiles includes GTP/TEID for 3gpp profile, GRE/Key for ietf-pmip profile, or new profile if anyone will define it."; uses fpc:mobility-info;
uses fpcbase:mobility-info; description
"Specifies profile specific uplink tunnel parameters to the DPN
which the agent exists. The profiles includes GTP/TEID for 3gpp profile,
GRE/Key for ietf-pmip profile, or new profile if anyone will define it.";
} }
container nexthop { container nexthop {
uses fpcbase:fpc-nexthop; uses fpc:fpc-nexthop;
description "Next Hop";
} }
container qos-profile-parameters { container qos-profile-parameters {
uses fpcbase:fpc-qos-profile; uses fpc:fpc-qos-profile;
description "QoS Parameters";
} }
container dpn-parameters { container dpn-parameters {
description "DPN Parameters";
} }
list vendor-parameters { list vendor-parameters {
key "vendor-id vendor-type"; key "vendor-id vendor-type";
uses fpcbase:vendor-attributes; uses fpc:vendor-attributes;
description "Vendor Parameters";
} }
description "A profile that applies to a specific direction";
} }
typedef fpc-direction { typedef fpc-direction {
type enumeration { type enumeration {
enum uplink; enum uplink {
enum downlink; description "Uplink";
}
enum downlink {
description "Downlink";
}
enum both {
description "Both";
}
} }
description "FPC Direction";
} }
grouping fpc-context { grouping fpc-context {
leaf context-id { leaf context-id {
type fpcbase:fpc-context-id; type fpc:fpc-context-id;
description "Context ID";
} }
leaf-list ports { leaf-list ports {
type fpcbase:fpc-port-id; type fpc:fpc-port-id;
description "Ports";
} }
leaf dpn-group { leaf dpn-group {
type fpcbase:fpc-dpn-group-id; type fpc:fpc-dpn-group-id;
description "DPN Group";
} }
leaf-list delegating-ip-prefixes { leaf-list delegating-ip-prefixes {
type inet:ip-prefix; type inet:ip-prefix;
description "Delegating Prefix(es)";
} }
container ul { container ul {
if-feature fpcbase:fpc-basic-agent; if-feature fpc:fpc-basic-agent;
uses fpcbase:fpc-context-profile; uses fpc:fpc-context-profile;
description "Uplink";
} }
container dl { container dl {
if-feature fpcbase:fpc-basic-agent; if-feature fpc:fpc-basic-agent;
uses fpcbase:fpc-context-profile; uses fpc:fpc-context-profile;
description "Downlink";
} }
list dpns { list dpns {
if-feature fpcbase:fpc-multi-dpn; if-feature fpc:fpc-multi-dpn;
key "dpn-id direction"; key "dpn-id direction";
leaf dpn-id { leaf dpn-id {
type fpcbase:fpc-dpn-id; type fpc:fpc-dpn-id;
description "DPN";
} }
leaf direction { leaf direction {
type fpc:fpc-direction;
mandatory true; mandatory true;
type fpcbase:fpc-direction; description "Direction";
} }
uses fpcbase:fpc-context-profile; uses fpc:fpc-context-profile;
description "DPNs";
} }
leaf parent-context { leaf parent-context {
type fpcbase:fpc-context-id; type fpc:fpc-context-id;
description "Parent Context";
} }
description "FCP Context";
} }
// Mobility (Tunnel) Information // Mobility (Tunnel) Information
grouping mobility-info { grouping mobility-info {
choice profile-parameters { choice profile-parameters {
case nothing { case nothing {
leaf none { leaf none {
type empty; type empty;
description "Empty Value";
} }
description "No Parameters Case";
} }
description "Mobility Profile Parameters";
} }
description "Mobility Information";
} }
// Next Hop Structures // Next Hop Structures
typedef fpcp-service-path-id { typedef fpcp-service-path-id {
type uint32 { type uint32 {
range "0..33554431"; range "0..33554431";
} }
description "SERVICE_PATH_ID"; description "SERVICE_PATH_ID";
} }
identity fpc-nexthop-type { identity fpc-nexthop-type {
description "Next Hop Type"; description "Next Hop Type";
} }
identity fpc-nexthop-ip { identity fpc-nexthop-ip {
base "fpcbase:fpc-nexthop-type"; base "fpc:fpc-nexthop-type";
description "Nexthop IP";
} }
identity fpc-nexthop-servicepath { identity fpc-nexthop-servicepath {
base "fpcbase:fpc-nexthop-type"; base "fpc:fpc-nexthop-type";
description "Nexthop Service Path";
} }
grouping fpc-nexthop { grouping fpc-nexthop {
leaf nexthop-type { leaf nexthop-type {
type identityref { type identityref {
base "fpcbase:fpc-nexthop-type"; base "fpc:fpc-nexthop-type";
} }
description "Nexthop Type";
} }
choice nexthop-value { choice nexthop-value {
case ip { case ip {
leaf ip { leaf ip {
type inet:ip-address; type inet:ip-address;
description "IP Value";
} }
description "IP Case";
} }
case servicepath { case servicepath {
leaf servicepath { leaf servicepath {
type fpcbase:fpcp-service-path-id; type fpc:fpcp-service-path-id;
description "Service Path Value";
} }
description "Service Path Case";
} }
description "Value";
} }
description "Nexthop Value";
} }
// QoS Information // QoS Information
identity fpc-qos-type { identity fpc-qos-type {
description "Base identity from which specific uses of QoS types are derived."; description "Base identity from which specific uses of QoS types are derived.";
} }
grouping fpc-qos-profile { grouping fpc-qos-profile {
leaf qos-type { leaf qos-type {
type identityref { type identityref {
base fpcbase:fpc-qos-type; base fpc:fpc-qos-type;
} }
description "the profile type"; description "the profile type";
} }
choice value { choice value {
description "QoS Value";
} }
description "QoS Profile";
} }
// Vendor Specific Attributes // Vendor Specific Attributes
identity vendor-specific-type { identity vendor-specific-type {
description "Vendor Specific Attribute Type"; description "Vendor Specific Attribute Type";
} }
grouping vendor-attributes { grouping vendor-attributes {
leaf vendor-id { leaf vendor-id {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "Vendor ID";
} }
leaf vendor-type { leaf vendor-type {
type identityref { type identityref {
base "fpcbase:vendor-specific-type"; base "fpc:vendor-specific-type";
} }
description "Attribute Type";
} }
choice value { choice value {
case empty-type { case empty-type {
leaf empty-type { leaf empty-type {
type empty; type empty;
description "Empty Value";
} }
description "Empty Case";
} }
description "Atttribute Value";
} }
description "Vendor Specific Attributes";
} }
// Topology // Topology
typedef fpc-domain-id { typedef fpc-domain-id {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "Domain Identifier";
} }
grouping fpc-domain { grouping fpc-domain {
leaf domain-id { leaf domain-id {
type fpcbase:fpc-domain-id; type fpc:fpc-domain-id;
description "Domain ID";
} }
leaf domain-name { leaf domain-name {
type string; type string;
description "Domain Name";
} }
leaf domain-type { leaf domain-type {
type string; type string;
description "Domain Type";
} }
description "FPC Domain";
} }
typedef fpc-dpn-id { typedef fpc-dpn-id {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "DPN Identifier"; description "DPN Identifier";
} }
identity fpc-dpn-control-protocol { identity fpc-dpn-control-protocol {
description "DPN Control Protocol"; description "DPN Control Protocol";
} }
grouping fpc-dpn { grouping fpc-dpn {
leaf dpn-id { leaf dpn-id {
type fpcbase:fpc-dpn-id; type fpc:fpc-dpn-id;
description "DPN ID";
} }
leaf dpn-name { leaf dpn-name {
type string; type string;
description "DPN Name";
} }
leaf-list dpn-groups { leaf-list dpn-groups {
type fpcbase:fpc-dpn-group-id; type fpc:fpc-dpn-group-id;
description "DPN Groups";
} }
leaf node-reference { leaf node-reference {
type instance-identifier; type instance-identifier;
description "DPN => Node (Topology) Mapping";
} }
description "FPC DPN";
} }
typedef fpc-dpn-group-id { typedef fpc-dpn-group-id {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "DPN Group Identifier"; description "DPN Group Identifier";
} }
identity fpc-forwaridingplane-role { identity fpc-forwaridingplane-role {
description "Role of DPN Group in the Forwarding Plane"; description "Role of DPN Group in the Forwarding Plane";
} }
identity fpc-access-type { identity fpc-access-type {
description "Access Type of the DPN Group"; description "Access Type of the DPN Group";
} }
identity fpc-mobility-profile-type { identity fpc-mobility-profile-type {
description "Mobility Profile Type"; description "Mobility Profile Type";
} }
grouping fpc-dpn-peer-group { grouping fpc-dpn-peer-group {
leaf remote-dpn-group-id { leaf remote-dpn-group-id {
type fpcbase:fpc-dpn-group-id; type fpc:fpc-dpn-group-id;
description "Remote DPN Group ID";
} }
leaf remote-mobility-profile { leaf remote-mobility-profile {
type identityref { type identityref {
base "fpcbase:fpc-mobility-profile-type"; base "fpc:fpc-mobility-profile-type";
} }
description "Mobility Profile";
} }
leaf remote-data-plane-role { leaf remote-data-plane-role {
type identityref { type identityref {
base "fpcbase:fpc-forwaridingplane-role"; base "fpc:fpc-forwaridingplane-role";
} }
description "Forwarding Plane Role";
} }
leaf remote-endpoint-address { leaf remote-endpoint-address {
type inet:ip-address; type inet:ip-address;
description "Remote Endpoint Address";
} }
leaf local-endpoint-address { leaf local-endpoint-address {
type inet:ip-address; type inet:ip-address;
description "Local Endpoint Address";
} }
leaf tunnel-mtu-size { leaf mtu-size {
type uint32; type uint32;
description "MTU Size";
} }
description "FPC DPN Peer Group";
} }
// Events, Probes & Notifications // Events, Probes & Notifications
identity event-type { identity event-type {
description "Base Event Type"; description "Base Event Type";
} }
typedef event-type-id { typedef event-type-id {
type uint32; type uint32;
description "Event ID Type";
} }
grouping monitor-id { grouping monitor-id {
leaf monitor-id { leaf monitor-id {
type fpcbase:fpc-identity; type fpc:fpc-identity;
description "Monitor Identifier";
} }
description "Monitor ID";
} }
identity report-type { identity report-type {
description "Type of Report"; description "Type of Report";
} }
identity periodic-report { identity periodic-report {
base "fpcbase:report-type"; base "fpc:report-type";
description "Periodic Report";
} }
identity threshold-report { identity threshold-report {
base "fpcbase:report-type"; base "fpc:report-type";
description "Threshold Report";
} }
identity scheduled-report { identity scheduled-report {
base "fpcbase:report-type"; base "fpc:report-type";
description "Scheduled Report";
} }
identity events-report { identity events-report {
base "fpcbase:report-type"; base "fpc:report-type";
description "Events Report";
} }
grouping report-config { grouping report-config {
choice event-config-value { choice event-config-value {
case periodic-config { case periodic-config {
leaf period { leaf period {
type uint32; type uint32;
description "Period";
} }
description "Periodic Config Case";
} }
case threshold-config { case threshold-config {
leaf lo-thresh { leaf lo-thresh {
type uint32; type uint32;
description "lo threshold";
} }
leaf hi-thresh { leaf hi-thresh {
type uint32; type uint32;
description "hi threshold";
} }
description "Threshold Config Case";
} }
case scheduled-config { case scheduled-config {
leaf report-time { leaf report-time {
type uint32; type uint32;
description "Reporting Time";
} }
description "Scheduled Config Case";
} }
case events-config-ident { case events-config-ident {
leaf-list event-identities { leaf-list event-identities {
type identityref { type identityref {
base "fpcbase:event-type"; base "fpc:event-type";
} }
description "Event Identities";
} }
description "Events Config Identities Case";
} }
case events-config { case events-config {
leaf-list event-ids { leaf-list event-ids {
type uint32; type uint32;
description "Event IDs";
} }
description "Events Config Case";
} }
description "Event Config Value";
} }
description "Report Configuration";
} }
grouping monitor-config { grouping monitor-config {
uses fpcbase:monitor-id; uses fpc:monitor-id;
uses fpcbase:target-value; uses fpc:target-value;
uses fpcbase:report-config; uses fpc:report-config;
description "Monitor Configuration";
} }
grouping report { grouping report {
uses fpcbase:monitor-config; uses fpc:monitor-config;
choice report-value { choice report-value {
leaf trigger { leaf trigger {
type fpcbase:event-type-id; type fpc:event-type-id;
description "Trigger Identifier";
} }
case simple-empty { case simple-empty {
leaf nothing { leaf nothing {
type empty; type empty;
description "Empty Value";
} }
description "Empty Case";
} }
case simple-val32 { case simple-val32 {
leaf val32 { leaf val32 {
type uint32; type uint32;
description "Unsigned 32 bit value";
} }
description "Simple Value Case";
} }
description "Report Value";
} }
description "Monitor Report";
} }
} }
<CODE ENDS>
Figure 27: FPC YANG base A.2.2. PMIP QoS Model
A.1.2. FPC Agent YANG Model
module ietf-dmm-fpcagent {
namespace "urn:ietf:params:xml:ns:yang:fpcagent";
prefix fpcagent;
import ietf-dmm-fpcbase { prefix fpcbase; revision-date 2016-08-03; }
import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
organization "IETF DMM Working Group";
contact "Satoru Matsushima <satoru.matsushima@g.softbank.co.jp>";
description
"This module contains YANG definition for
Forwarding Policy Configuration Protocol.(FPCP)";
revision 2016-08-03 {
description "Changes based on -04 version of FPC draft.";
reference "draft-ietf-dmm-fpc-cpdp-04";
}
feature fpc-cloning {
description "An ability to support cloning in the RPC.";
}
feature fpc-basename-registry {
description "Ability to track Base Names already provisioned on the Agent";
}
feature fpc-bundles {
description "Ability for Client to send multiple bundles of actions to
an Agent";
}
feature fpc-client-binding {
description "Allows a FPC Client to bind a DPN to an Topology Object";
}
feature fpc-auto-binding {
description "Allows a FPC Agent to advertise Topology Objects that could be DPNs";
}
feature instruction-bitset {
description "Allows the expression of instructions (bit sets) over FPC.";
}
feature operation-ref-scope {
description "Provides the scope of refeneces in an operation. Used to optmize
the Agent processing.";
}
typedef agent-identifier {
type fpcbase:fpc-identity;
}
typedef client-identifier {
type fpcbase:fpc-identity;
}
grouping basename-info {
leaf basename {
if-feature fpcagent:fpc-basename-registry;
description "Rules Basename";
type fpcbase:fpc-identity;
}
leaf base-state {
if-feature fpcagent:fpc-basename-registry;
type string;
}
leaf base-checkpoint {
if-feature fpcagent:fpc-basename-registry;
type string;
}
}
// Top Level Structures
container tenants {
description "";
list tenant {
description "";
key "tenant-id";
leaf tenant-id {
type fpcbase:fpc-identity;
}
container fpc-policy {
list policy-groups {
key "policy-group-id";
uses fpcbase:fpc-policy-group;
}
list policies {
key "policy-id";
uses fpcbase:fpc-policy;
}
list descriptors {
key descriptor-id;
uses fpcbase:fpc-descriptor;
}
list actions {
key action-id;
uses fpcbase:fpc-action;
}
}
container fpc-mobility {
config false;
list contexts {
key context-id;
uses fpcbase:fpc-context;
}
list ports {
key port-id;
uses fpcbase:fpc-port;
}
list monitors {
uses fpcbase:monitor-config;
}
}
container fpc-topology {
// Basic Agent Topology Structures
list domains {
key domain-id;
uses fpcbase:fpc-domain;
uses fpcagent:basename-info;
}
list dpn-group-peers {
if-feature fpcbase:fpc-basic-agent;
key "remote-dpn-group-id";
uses fpcbase:fpc-dpn-peer-group;
}
leaf dpn-id {
if-feature fpcbase:fpc-basic-agent;
type fpcbase:fpc-dpn-id;
}
leaf-list control-protocols {
if-feature fpcbase:fpc-basic-agent;
type identityref {
base "fpcbase:fpc-dpn-control-protocol";
}
}
list dpn-groups {
if-feature fpcbase:fpc-multi-dpn;
key dpn-group-id;
uses fpcagent:fpc-dpn-group;
list domains {
key domain-id;
uses fpcbase:fpc-domain;
uses fpcagent:basename-info;
}
}
list dpns {
if-feature fpcbase:fpc-multi-dpn;
key dpn-id;
uses fpcbase:fpc-dpn;
}
}
}
}
container fpc-agent-info {
// General Agent Structures
leaf-list supported-features {
type string;
}
// Common Agent Info
list supported-events {
key event;
leaf event {
type identityref {
base "fpcbase:event-type";
}
}
leaf event-id {
type fpcbase:event-type-id;
}
}
list supported-error-types {
key error-type;
leaf error-type {
type identityref {
base "fpcagent:error-type";
}
}
leaf error-type-id {
type fpcagent:error-type-id;
}
}
}
// Multi-DPN Agent Structures
grouping fpc-dpn-group {
leaf dpn-group-id {
type fpcbase:fpc-dpn-group-id;
}
leaf data-plane-role {
type identityref {
base "fpcbase:fpc-forwaridingplane-role";
}
}
leaf access-type {
type identityref {
base "fpcbase:fpc-access-type";
}
}
leaf mobility-profile {
type identityref {
base "fpcbase:fpc-mobility-profile-type";
}
}
list dpn-group-peers {
key "remote-dpn-group-id";
uses fpcbase:fpc-dpn-peer-group;
}
}
// RPC
// RPC Specific Structures
//Input Structures
typedef admin-status {
type enumeration {
enum enabled { value 0; }
enum disabled { value 1; }
enum virtual { value 2; }
}
}
typedef session-status {
type enumeration {
enum complete { value 0; }
enum incomplete { value 1; }
enum outdated { value 2; }
}
}
typedef op-delay {
type uint32;
}
typedef op-identifier {
type uint64;
}
typedef ref-scope {
description "Search scope for references in the operation.
op - All references are contained in the operation body (intra-op)
bundle - All references in exist in bundle (inter-operation/intra-bundle).
NOTE - If this value comes in CONFIG call it is equivalen to 'op'.
storage - One or more references exist outside of the operation and bundle.
A lookup to a cache / storage is required.
unknown - the location of the references are unknown. This is treated as
a 'storage' type.";
type enumeration {
enum none { value 0; }
enum op { value 1; }
enum bundle { value 2; }
enum storage { value 3; }
enum unknown { value 4; }
}
}
grouping instructions {
container instructions {
if-feature instruction-bitset;
choice instr-type {
}
}
}
grouping op-header {
leaf client-id {
type fpcagent:client-identifier;
}
leaf delay {
type op-delay;
}
leaf session-state {
type session-status;
}
leaf admin-state {
type admin-status;
}
leaf op-type {
type enumeration {
enum create { value 0; }
enum update { value 1; }
enum query { value 2; }
enum delete { value 3; }
}
}
leaf op-ref-scope {
if-feature operation-ref-scope;
type fpcagent:ref-scope;
}
uses fpcagent:instructions;
}
grouping clone-ref {
leaf entity {
type fpcbase:fpc-identity;
}
leaf source {
type fpcbase:fpc-identity;
}
}
identity command-set {
description "protocol specific commands";
}
grouping context-operation {
uses fpcbase:fpc-context;
uses fpcagent:instructions;
}
grouping port-operation {
uses fpcbase:fpc-port;
uses fpcagent:instructions;
}
// Output Structure
grouping payload {
list ports {
uses fpcagent:port-operation;
}
list contexts {
uses fpcagent:context-operation;
}
}
grouping op-input {
uses fpcagent:op-header;
leaf op-id {
type op-identifier;
}
choice op_body {
case create_or_update {
list clones {
if-feature fpc-cloning;
key entity;
uses fpcagent:clone-ref;
}
uses fpcagent:payload;
}
case delete_or_query {
uses fpcbase:targets-value;
}
}
}
typedef result {
type enumeration {
enum ok { value 0; }
enum err { value 1; }
enum ok-notify-follows { value 2; }
}
}
identity error-type {
description "Base Error Type";
}
identity name-already-exists {
description "Notification that an entity of the same name already exists";
}
typedef error-type-id {
description "Integer form of the Error Type";
type uint32;
}
grouping op-status-value {
leaf op-status {
type enumeration {
enum ok { value 0; }
enum err { value 1; }
}
}
}
grouping result-body {
leaf op-id {
type op-identifier;
}
choice result-type {
case err {
leaf error-type-id {
type fpcagent:error-type-id;
}
leaf error-info {
type string {
length "1..1024";
}
}
}
case create-or-update-success {
uses fpcagent:payload;
}
case delete_or_query-success {
uses fpcbase:targets-value;
}
case empty-case {
}
}
}
// Common RPCs
rpc configure {
input {
uses fpcagent:op-input;
}
output {
leaf result {
type result;
}
uses fpcagent:result-body;
}
}
rpc configure-bundles {
if-feature fpcagent:fpc-bundles;
input {
leaf highest-op-ref-scope {
if-feature operation-ref-scope;
type fpcagent:ref-scope;
}
list bundles {
key op-id;
uses fpcagent:op-input;
}
}
output {
list bundles {
key op-id;
uses fpcagent:result-body;
}
}
}
rpc bind-dpn {
if-feature fpcagent:fpc-client-binding;
input {
leaf node-id {
type inet:uri;
}
uses fpcbase:fpc-dpn;
}
output {
uses fpcagent:result-body;
}
}
rpc unbind-dpn {
if-feature fpcagent:fpc-client-binding;
input {
leaf dpn-id {
type fpcbase:fpc-dpn-id;
}
}
output {
uses fpcagent:result-body;
}
}
// Notification Messages & Structures
typedef notification-id {
type uint32;
}
grouping notification-header {
leaf notification-id {
type fpcagent:notification-id;
}
leaf timestamp {
type uint32;
}
}
notification config-result-notification {
uses fpcagent:notification-header;
choice value {
case config-result {
uses fpcagent:op-status-value;
uses fpcagent:result-body;
}
case config-bundle-result {
list bundles {
uses fpcagent:op-status-value;
uses fpcagent:result-body;
}
}
}
}
rpc event_register {
description "Used to register monitoring of parameters/events";
input {
uses fpcbase:monitor-config;
}
output {
leaf monitor-result {
type fpcagent:result;
}
}
}
rpc event_deregister {
description "Used to de-register monitoring of parameters/events";
input {
list monitors {
uses fpcbase:monitor-id;
}
}
output {
leaf monitor-result {
type fpcagent:result;
}
}
}
rpc probe {
description "Probe the status of a registered monitor";
input {
uses fpcbase:targets-value;
}
output {
leaf monitor-result {
type fpcagent:result;
}
}
}
notification notify {
uses fpcagent:notification-header;
choice value {
case dpn-candidate-available {
if-feature fpcagent:fpc-auto-binding;
leaf node-id {
type inet:uri;
}
leaf-list access-types {
type identityref {
base "fpcbase:fpc-access-type";
}
}
leaf-list mobility-profiles {
type identityref {
base "fpcbase:fpc-mobility-profile-type";
}
}
leaf-list forwarding-plane-roles {
type identityref {
base "fpcbase:fpc-forwaridingplane-role";
}
}
}
case monitor-notification {
choice monitor-notification-value {
case simple-monitor {
uses fpcbase:report;
}
case bulk-monitors {
list reports {
uses fpcbase:report;
}
}
}
}
}
}
}
Figure 28: FPC YANG agent This module defines the base protocol elements specified in this
document.
A.1.3. PMIP QoS Model This module references [RFC6991] and the traffic-selector-types
module defined in this document.
<CODE BEGINS> file "ietf-pmip-qos@2016-02-10.yang"
module ietf-pmip-qos { module ietf-pmip-qos {
yang-version 1; yang-version 1;
namespace namespace
"urn:ietf:params:xml:ns:yang:ietf-pmip-qos"; "urn:ietf:params:xml:ns:yang:ietf-pmip-qos";
prefix "qos-pmip"; prefix "qos-pmip";
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
skipping to change at page 85, line 32 skipping to change at page 100, line 4
yang-version 1; yang-version 1;
namespace namespace
"urn:ietf:params:xml:ns:yang:ietf-pmip-qos"; "urn:ietf:params:xml:ns:yang:ietf-pmip-qos";
prefix "qos-pmip"; prefix "qos-pmip";
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
revision-date 2013-07-15; revision-date 2013-07-15;
} }
import ietf-traffic-selector-types { prefix traffic-selectors; } import ietf-traffic-selector-types { prefix traffic-selectors; }
organization organization "IETF Distributed Mobility Management (DMM)
"IETF DMM (Dynamic Mobility Management) Working Group"; Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/dmm/> "WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:dmm@ietf.org> WG List: <mailto:netmod@ietf.org>
WG Chair: Dapeng Liu WG Chair: Dapeng Liu
<mailto:maxpassion@gmail.com> <mailto:maxpassion@gmail.com>
WG Chair: Jouni Korhonen WG Chair: Jouni Korhonen
<mailto:jouni.nospam@gmail.com> <mailto:jouni.nospam@gmail.com>
Editor: Editor: Satoru Matsushima
<mailto:>"; <mailto:satoru.matsushima@g.softbank.co.jp>
Editor: Lyle Bertz
<mailto:lyleb551144@gmail.com>";
description description
"This module contains a collection of YANG definitions for "This module contains a collection of YANG definitions for
quality of service paramaters used in Proxy Mobile IPv6. quality of service paramaters used in Proxy Mobile IPv6.
Copyright (c) 2015 IETF Trust and the persons identified as Copyright (c) 2016 IETF Trust and the persons identified as the
authors of the code. All rights reserved. document authors. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module was created as part of the IETF This document is subject to BCP 78 and the IETF Trust's Legal
DMM FPC YANG modules; see the RFC itself for full legal notices."; Provisions Relating to IETF Documents
(http://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 Simplified BSD License text as described
in Section 4.e of the Trust Legal Provisions and are provided
without warranty as described in the Simplified BSD License.";
revision 2016-02-10 { revision 2016-02-10 {
description "Initial revision"; description "Initial revision";
reference reference
"RFC 7222: Quality-of-Service Option for Proxy Mobile IPv6"; "RFC 7222: Quality-of-Service Option for Proxy Mobile IPv6";
} }
// Type Definitions // Type Definitions
// QoS Option Field Type Definitions // QoS Option Field Type Definitions
skipping to change at page 87, line 11 skipping to change at page 101, line 35
"RFC 3289: Management Information Base for the Differentiated "RFC 3289: Management Information Base for the Differentiated
Services Architecture Services Architecture
RFC 2474: Definition of the Differentiated Services Field RFC 2474: Definition of the Differentiated Services Field
(DS Field) in the IPv4 and IPv6 Headers (DS Field) in the IPv4 and IPv6 Headers
RFC 2780: IANA Allocation Guidelines For Values In RFC 2780: IANA Allocation Guidelines For Values In
the Internet Protocol and Related Headers"; the Internet Protocol and Related Headers";
} }
typedef operational-code { typedef operational-code {
type enumeration { type enumeration {
enum RESPONSE { value 0; } enum RESPONSE {
enum ALLOCATE { value 1; } value 0;
enum DE-ALLOCATE { value 2; } description "Response to a QoS request";
enum MODIFY { value 3; } }
enum QUERY { value 4; } enum ALLOCATE {
enum NEGOTIATE { value 5; } value 1;
description "Request to allocate QoS resources";
}
enum DE-ALLOCATE {
value 2;
description "Request to de-Allocate QoS resources";
}
enum MODIFY {
value 3;
description "Request to modify QoS parameters for a previously negotiated
QoS Service Request";
}
enum QUERY {
value 4;
description "Query to list the previously negotiated QoS Service Requests
that are still active";
}
enum NEGOTIATE {
value 5;
description "Response to a QoS Service Request with a counter QoS proposal";
}
} }
description description
"1-octet Operational code indicates the type of QoS request. "1-octet Operational code indicates the type of QoS request.
Reserved values: (6) to (255)
RESPONSE: (0)
Response to a QoS request
ALLOCATE: (1)
Request to allocate QoS resources
DE-ALLOCATE: (2)
Request to de-Allocate QoS resources
MODIFY: (3)
Request to modify QoS parameters for a previously negotiated
QoS Service Request
QUERY: (4)
Query to list the previously negotiated QoS Service Requests
that are still active
NEGOTIATE: (5)
Response to a QoS Service Request with a counter QoS proposal
Reserved: (6) to (255)
Currently not used. Receiver MUST ignore the option received Currently not used. Receiver MUST ignore the option received
with any value in this range."; with any value in this range.";
} }
// QoS Attribute Types // QoS Attribute Types
//The enumeration value for mapping - don't confuse with the identities //The enumeration value for mapping - don't confuse with the identities
typedef qos-attrubite-type-enum { typedef qos-attrubite-type-enum {
type enumeration { type enumeration {
enum Reserved { value 0; } enum Reserved {
enum Per-MN-Agg-Max-DL-Bit-Rate { value 1; } value 0;
enum Per-MN-Agg-Max-UL-Bit-Rate { value 2; } description "This value is reserved and cannot be used";
enum Per-Session-Agg-Max-DL-Bit-Rate { value 3; } }
enum Per-Session-Agg-Max-UL-Bit-Rate { value 4; } enum Per-MN-Agg-Max-DL-Bit-Rate {
enum Allocation-Retention-Priority { value 5; } value 1;
enum Aggregate-Max-DL-Bit-Rate { value 6; } description "Per-Mobile-Node Aggregate Maximum Downlink Bit Rate.";
enum Aggregate-Max-UL-Bit-Rate { value 7; } }
enum Guaranteed-DL-Bit-Rate { value 8; } enum Per-MN-Agg-Max-UL-Bit-Rate {
enum Guaranteed-UL-Bit-Rate { value 9; } value 2;
enum QoS-Traffic-Selector { value 10; } description "Per-Mobile-Node Aggregate Maximum Uplink Bit Rate.";
enum QoS-Vendor-Specific-Attribute { value 11; } }
enum Per-Session-Agg-Max-DL-Bit-Rate {
value 3;
description "Per-Mobility-Session Aggregate Maximum Downlink Bit Rate.";
}
enum Per-Session-Agg-Max-UL-Bit-Rate {
value 4;
description "Per-Mobility-Session Aggregate Maximum Uplink Bit Rate.";
}
enum Allocation-Retention-Priority {
value 5;
description "Allocation and Retention Priority.";
}
enum Aggregate-Max-DL-Bit-Rate {
value 6;
description "Aggregate Maximum Downlink Bit Rate.";
}
enum Aggregate-Max-UL-Bit-Rate {
value 7;
description "Aggregate Maximum Uplink Bit Rate.";
}
enum Guaranteed-DL-Bit-Rate {
value 8;
description "Guaranteed Downlink Bit Rate.";
}
enum Guaranteed-UL-Bit-Rate {
value 9;
description "Guaranteed Uplink Bit Rate.";
}
enum QoS-Traffic-Selector {
value 10;
description "QoS Traffic Selector.";
}
enum QoS-Vendor-Specific-Attribute {
value 11;
description "QoS Vendor-Specific Attribute.";
}
} }
description description
"8-bit unsigned integer indicating the type of the QoS "8-bit unsigned integer indicating the type of the QoS
attribute. This specification reserves the following values. attribute. This specification reserves the following reserved values.
(0) - Reserved
This value is reserved and cannot be used
(1) - Per-MN-Agg-Max-DL-Bit-Rate
Per-Mobile-Node Aggregate Maximum Downlink Bit Rate.
(2) - Per-MN-Agg-Max-UL-Bit-Rate
Per-Mobile-Node Aggregate Maximum Uplink Bit Rate.
(3) - Per-Session-Agg-Max-DL-Bit-Rate
Per-Mobility-Session Aggregate Maximum Downlink Bit Rate.
(4) - Per-Session-Agg-Max-UL-Bit-Rate
Per-Mobility-Session Aggregate Maximum Uplink Bit Rate.
(5) - Allocation-Retention-Priority
Allocation and Retention Priority.
(6) - Aggregate-Max-DL-Bit-Rate
Aggregate Maximum Downlink Bit Rate.
(7) - Aggregate-Max-UL-Bit-Rate
Aggregate Maximum Uplink Bit Rate.
(8) - Guaranteed-DL-Bit-Rate
Guaranteed Downlink Bit Rate.
(9) - Guaranteed-UL-Bit-Rate
Guaranteed Uplink Bit Rate.
(10) - QoS-Traffic-Selector
QoS Traffic Selector.
(11) - QoS-Vendor-Specific-Attribute
QoS Vendor-Specific Attribute.
(12) to (254) - Reserved (12) to (254) - Reserved
These values are reserved for future allocation. These values are reserved for future allocation.
(255) - Reserved (255) Reserved
This value is reserved and cannot be used."; This value is reserved and cannot be used.";
} }
// Attribute Type as Identities // Attribute Type as Identities
// Added for convenience of inclusion and extension in other YANG modules. // Added for convenience of inclusion and extension in other YANG modules.
identity qos-attribute-type { identity qos-attribute-type {
description description
"Base type for Quality of Service Attributes"; "Base type for Quality of Service Attributes";
} }
identity Per-MN-Agg-Max-DL-Bit-Rate-type { identity Per-MN-Agg-Max-DL-Bit-Rate-type {
base qos-attribute-type; base qos-attribute-type;
description description
"Per-Mobile-Node Aggregate Maximum Downlink Bit Rate."; "Per-Mobile-Node Aggregate Maximum Downlink Bit Rate.";
} }
identity Per-MN-Agg-Max-UL-Bit-Rate-type { identity Per-MN-Agg-Max-UL-Bit-Rate-type {
base qos-attribute-type; base qos-attribute-type;
description description
"Per-Mobile-Node Aggregate Maximum Uplink Bit Rate"; "Per-Mobile-Node Aggregate Maximum Uplink Bit Rate";
} }
identity Per-Session-Agg-Max-DL-Bit-Rate-type { identity Per-Session-Agg-Max-DL-Bit-Rate-type {
base qos-attribute-type; base qos-attribute-type;
description description
skipping to change at page 92, line 15 skipping to change at page 106, line 39
* When the (E) flag is set to a value of (0), then the request is * When the (E) flag is set to a value of (0), then the request is
not to exclude any IP flows from the target IP flows for which not to exclude any IP flows from the target IP flows for which
Per-Session-Agg-Max-UL/DL-Bit-Rate is measured. Per-Session-Agg-Max-UL/DL-Bit-Rate is measured.
* When the (S) flag and (E) flag are both set to a value of (1), * When the (S) flag and (E) flag are both set to a value of (1),
then the request is to exclude all the IP flows sharing the then the request is to exclude all the IP flows sharing the
Service Identifier associated with this mobility session from Service Identifier associated with this mobility session from
the target flows for which Per-Session-Agg-Max-UL/DL-Bit-Rate is the target flows for which Per-Session-Agg-Max-UL/DL-Bit-Rate is
measured."; measured.";
} }
description "Per-Session-Agg-Max-Bit-Rate Value";
} }
grouping Allocation-Retention-Priority-Value { grouping Allocation-Retention-Priority-Value {
leaf prioirty-level { leaf prioirty-level {
type uint8 { type uint8 {
range "0..15"; range "0..15";
} }
mandatory true; mandatory true;
description description
"This is a 4-bit unsigned integer value. It "This is a 4-bit unsigned integer value. It
skipping to change at page 92, line 45 skipping to change at page 107, line 22
priority. priority.
Values 1 to 8 should only be assigned for services that are Values 1 to 8 should only be assigned for services that are
authorized to receive prioritized treatment within an operator authorized to receive prioritized treatment within an operator
domain. Values 9 to 15 may be assigned to resources that are domain. Values 9 to 15 may be assigned to resources that are
authorized by the home network and thus applicable when a mobile authorized by the home network and thus applicable when a mobile
node is roaming."; node is roaming.";
} }
leaf premption-capability { leaf premption-capability {
type enumeration { type enumeration {
enum enabled { value 0; } enum enabled {
enum disabled { value 1; } value 0;
enum reserved1 { value 2; } description "enabled";
enum reserved2 { value 3; } }
enum disabled {
value 1;
description "disabled";
}
enum reserved1 {
value 2;
description "reserved1";
}
enum reserved2 {
value 3;
description "reserved2";
}
} }
mandatory true; mandatory true;
description description
"This is a 2-bit unsigned integer "This is a 2-bit unsigned integer
value. It defines whether a service data flow can get resources value. It defines whether a service data flow can get resources
that were already assigned to another service data flow with a that were already assigned to another service data flow with a
lower priority level. The following values are defined: lower priority level. The following values are defined:
Enabled (0): This value indicates that the service data flow is Enabled (0): This value indicates that the service data flow is
allowed to get resources that were already assigned to another allowed to get resources that were already assigned to another
IP data flow with a lower priority level. IP data flow with a lower priority level.
Disabled (1): This value indicates that the service data flow Disabled (1): This value indicates that the service data flow
is not allowed to get resources that were already assigned to is not allowed to get resources that were already assigned to
skipping to change at page 93, line 20 skipping to change at page 108, line 9
allowed to get resources that were already assigned to another allowed to get resources that were already assigned to another
IP data flow with a lower priority level. IP data flow with a lower priority level.
Disabled (1): This value indicates that the service data flow Disabled (1): This value indicates that the service data flow
is not allowed to get resources that were already assigned to is not allowed to get resources that were already assigned to
another IP data flow with a lower priority level. The values another IP data flow with a lower priority level. The values
(2) and (3) are reserved."; (2) and (3) are reserved.";
} }
leaf premption-vulnerability { leaf premption-vulnerability {
type enumeration { type enumeration {
enum enabled { value 0; } enum enabled {
enum disabled { value 1; } value 0;
enum reserved1 { value 2; } description "enabled";
enum reserved2 { value 3; } }
enum disabled {
value 1;
description "disabled";
}
enum reserved1 {
value 2;
description "reserved1";
}
enum reserved2 {
value 3;
description "reserved2";
}
} }
mandatory true; mandatory true;
description description
"This is a 2-bit unsigned integer "This is a 2-bit unsigned integer
value. It defines whether a service data flow can lose the value. It defines whether a service data flow can lose the
resources assigned to it in order to admit a service data flow resources assigned to it in order to admit a service data flow
with a higher priority level. The following values are defined: with a higher priority level. The following values are defined:
Enabled (0): This value indicates that the resources assigned Enabled (0): This value indicates that the resources assigned
to the IP data flow can be preempted and allocated to a service to the IP data flow can be preempted and allocated to a service
data flow with a higher priority level. data flow with a higher priority level.
Disabled (1): This value indicates that the resources assigned Disabled (1): This value indicates that the resources assigned
to the IP data flow shall not be preempted and allocated to a to the IP data flow shall not be preempted and allocated to a
service data flow with a higher priority level. The values (2) service data flow with a higher priority level. The values (2)
and (3) are reserved."; and (3) are reserved.";
} }
description "Allocation-Retention-Priority Value";
} }
typedef Aggregate-Max-DL-Bit-Rate-Value { typedef Aggregate-Max-DL-Bit-Rate-Value {
type uint32; type uint32;
description description
"This is a 32-bit unsigned integer that "This is a 32-bit unsigned integer that
indicates the aggregate maximum downlink bit rate that is indicates the aggregate maximum downlink bit rate that is
requested/allocated for downlink IP flows. The measurement units requested/allocated for downlink IP flows. The measurement units
for Aggregate-Max-DL-Bit-Rate are bits per second."; for Aggregate-Max-DL-Bit-Rate are bits per second.";
} }
typedef Aggregate-Max-UL-Bit-Rate-Value { typedef Aggregate-Max-UL-Bit-Rate-Value {
type uint32; type uint32;
description description
"This is a 32-bit unsigned integer that "This is a 32-bit unsigned integer that
indicates the aggregate maximum downlink bit rate that is indicates the aggregate maximum downlink bit rate that is
requested/allocated for downlink IP flows. The measurement units requested/allocated for downlink IP flows. The measurement units
for Aggregate-Max-DL-Bit-Rate are bits per second."; for Aggregate-Max-DL-Bit-Rate are bits per second.";
} }
skipping to change at page 95, line 25 skipping to change at page 110, line 28
mandatory true; mandatory true;
description "the attribute type"; description "the attribute type";
} }
//All of the sub-types by constraint //All of the sub-types by constraint
choice attribute-choice { choice attribute-choice {
case per-mn-agg-max-dl-case { case per-mn-agg-max-dl-case {
when "../attributetype = 'Per-MN-Agg-Max-DL-Bit-Rate-type'"; when "../attributetype = 'Per-MN-Agg-Max-DL-Bit-Rate-type'";
leaf per-mn-agg-max-dl { leaf per-mn-agg-max-dl {
type qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value; type qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value;
description "Per-MN-Agg-Max-DL-Bit-Rate Value";
} }
description "Per-MN-Agg-Max-DL-Bit-Rate Case";
} }
case per-mn-agg-max-ul-case { case per-mn-agg-max-ul-case {
when "../attributetype = 'Per-MN-Agg-Max-UL-Bit-Rate-type'"; when "../attributetype = 'Per-MN-Agg-Max-UL-Bit-Rate-type'";
leaf per-mn-agg-max-ul { leaf per-mn-agg-max-ul {
type qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value; type qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value;
description "Per-MN-Agg-Max-UL-Bit-Rate Value";
} }
description "Per-MN-Agg-Max-UL-Bit-Rate Case";
} }
case per-session-agg-max-dl-case { case per-session-agg-max-dl-case {
when "../attributetype = 'Per-Session-Agg-Max-DL-Bit-Rate-type'"; when "../attributetype = 'Per-Session-Agg-Max-DL-Bit-Rate-type'";
container per-session-agg-max-dl { container per-session-agg-max-dl {
uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value;
description "Per-Session-Agg-Max-Bit-Rate Value";
} }
description "Per-Session-Agg-Max-Bit-Rate Case";
} }
case per-session-agg-max-ul-case { case per-session-agg-max-ul-case {
when "../attributetype = 'Per-Session-Agg-Max-UL-Bit-Rate-type'"; when "../attributetype = 'Per-Session-Agg-Max-UL-Bit-Rate-type'";
container per-session-agg-max-ul { container per-session-agg-max-ul {
uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value;
description "Per-Session-Agg-Max-Bit-Rate Value";
} }
description "Per-Session-Agg-Max-Bit-Rate Case";
} }
case allocation-retention-priority-case { case allocation-retention-priority-case {
when "../attributetype = 'Allocation-Retention-Priority-type'"; when "../attributetype = 'Allocation-Retention-Priority-type'";
uses qos-pmip:Allocation-Retention-Priority-Value; uses qos-pmip:Allocation-Retention-Priority-Value;
description "Allocation-Retention-Priority Case";
} }
case agg-max-dl-case { case agg-max-dl-case {
when "../attributetype = 'Aggregate-Max-DL-Bit-Rate-type'"; when "../attributetype = 'Aggregate-Max-DL-Bit-Rate-type'";
leaf agg-max-dl { leaf agg-max-dl {
type qos-pmip:Aggregate-Max-DL-Bit-Rate-Value; type qos-pmip:Aggregate-Max-DL-Bit-Rate-Value;
description "Aggregate-Max-DL-Bit-Rate Value";
} }
description "Aggregate-Max-DL-Bit-Rate Case";
} }
case agg-max-ul-case { case agg-max-ul-case {
when "../attributetype = 'Aggregate-Max-UL-Bit-Rate-type'"; when "../attributetype = 'Aggregate-Max-UL-Bit-Rate-type'";
leaf agg-max-ul { leaf agg-max-ul {
type qos-pmip:Aggregate-Max-UL-Bit-Rate-Value; type qos-pmip:Aggregate-Max-UL-Bit-Rate-Value;
description "Aggregate-Max-UL-Bit-Rate Value";
} }
description "Aggregate-Max-UL-Bit-Rate Case";
} }
case gbr-dl-case { case gbr-dl-case {
when "../attributetype = 'Guaranteed-DL-Bit-Rate-type'"; when "../attributetype = 'Guaranteed-DL-Bit-Rate-type'";
leaf gbr-dl { leaf gbr-dl {
type qos-pmip:Guaranteed-DL-Bit-Rate-Value; type qos-pmip:Guaranteed-DL-Bit-Rate-Value;
description "Guaranteed-DL-Bit-Rate Value";
} }
description "Guaranteed-DL-Bit-Rate Case";
} }
case gbr-ul-case { case gbr-ul-case {
when "../attributetype = 'Guaranteed-UL-Bit-Rate-type'"; when "../attributetype = 'Guaranteed-UL-Bit-Rate-type'";
leaf gbr-ul { leaf gbr-ul {
type qos-pmip:Guaranteed-UL-Bit-Rate-Value; type qos-pmip:Guaranteed-UL-Bit-Rate-Value;
description "Guaranteed-UL-Bit-Rate Value";
} }
description "Guaranteed-UL-Bit-Rate Case";
} }
case traffic-selector-case { case traffic-selector-case {
when "../attributetype = 'QoS-Traffic-Selector-type'"; when "../attributetype = 'QoS-Traffic-Selector-type'";
container traffic-selector { container traffic-selector {
uses traffic-selectors:traffic-selector; uses traffic-selectors:traffic-selector;
description "traffic selector";
} }
description "traffic selector Case";
} }
description "Attribute Value";
} }
description "PMIP QoS Attribute";
} }
grouping qosoption { grouping qosoption {
leaf srid { leaf srid {
type sr-id; type sr-id;
mandatory true; mandatory true;
description "Service Request Identifier";
} }
leaf trafficclass { leaf trafficclass {
type traffic-class; type traffic-class;
mandatory true; mandatory true;
description "Traffic Class";
} }
leaf operationcode { leaf operationcode {
type operational-code; type operational-code;
mandatory true; mandatory true;
description "Operation Code";
} }
list attributes { list attributes {
unique "attributetype"; unique "attributetype";
uses qosattribute; uses qosattribute;
min-elements 1; min-elements 1;
description "Attributes";
} }
description "PMIP QoS Option";
} }
} }
<CODE ENDS>
Figure 29: FPC YANG PMIP QoS A.2.3. Traffic Selectors YANG Model
A.1.4. Traffic Selectors YANG Model This module defines traffic selector types commonly used in Proxy
Mobile IP (PMIP).
This module references [RFC6991].
<CODE BEGINS> file "ietf-traffic-selector-types@2016-01-14.yang"
module ietf-traffic-selector-types { module ietf-traffic-selector-types {
yang-version 1; yang-version 1;
namespace namespace
"urn:ietf:params:xml:ns:yang:ietf-traffic-selector-types"; "urn:ietf:params:xml:ns:yang:ietf-traffic-selector-types";
prefix "ietf-traffic-selectors"; prefix "traffic-selectors";
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
revision-date 2013-07-15; revision-date 2013-07-15;
} }
organization organization "IETF Distributed Mobility Management (DMM)
"IETF DMM (Dynamic Mobility Management) Working Group"; Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/wg/dmm/> "WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:dmm@ietf.org> WG List: <mailto:netmod@ietf.org>
WG Chair: Dapeng Liu WG Chair: Dapeng Liu
<mailto:maxpassion@gmail.com> <mailto:maxpassion@gmail.com>
WG Chair: Jouni Korhonen WG Chair: Jouni Korhonen
<mailto:jouni.nospam@gmail.com> <mailto:jouni.nospam@gmail.com>
Editor: Editor: Satoru Matsushima
<mailto:>"; <mailto:satoru.matsushima@g.softbank.co.jp>
Editor: Lyle Bertz
<mailto:lyleb551144@gmail.com>";
description description
"This module contains a collection of YANG definitions for "This module contains a collection of YANG definitions for
traffic selectors for flow bindings. traffic selectors for flow bindings.
Copyright (c) 2015 IETF Trust and the persons identified as Copyright (c) 2016 IETF Trust and the persons identified as the
authors of the code. All rights reserved. document authors. All rights reserved.