draft-ietf-dmm-fpc-cpdp-10.txt   draft-ietf-dmm-fpc-cpdp-11.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: September 6, 2018 Sprint Expires: December 20, 2018 Sprint
M. Liebsch M. Liebsch
NEC NEC
S. Gundavelli S. Gundavelli
Cisco Cisco
D. Moses D. Moses
Intel Corporation Intel Corporation
C. Perkins C. Perkins
Futurewei Futurewei
March 5, 2018 June 18, 2018
Protocol for Forwarding Policy Configuration (FPC) in DMM Protocol for Forwarding Policy Configuration (FPC) in DMM
draft-ietf-dmm-fpc-cpdp-10 draft-ietf-dmm-fpc-cpdp-11
Abstract Abstract
This document describes a way, called Forwarding Policy Configuration This document describes a way, called Forwarding Policy Configuration
(FPC) to manage the separation of data-plane and control-plane. FPC (FPC) to manage the separation of data-plane and control-plane. FPC
defines a flexible mobility management system using FPC agent and FPC defines a flexible mobility management system using FPC agent and FPC
client functions. An FPC agent provides an abstract interface to the client functions. A FPC agent provides an abstract interface to the
data-plane. The FPC client configures data-plane nodes by using the data-plane. The FPC client configures data-plane nodes by using the
functions and abstractions provided by the FPC agent for the data- functions and abstractions provided by the FPC agent for the data-
plane nodes. The data-plane abstractions presented in this document plane nodes. The data-plane abstractions presented in this document
are extensible, in order to support many different types of mobility are extensible in order to support many different types of mobility
management systems and data-plane functions. management systems and data-plane functions.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 6, 2018. This Internet-Draft will expire on December 20, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
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. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. FPC Design Objectives and Deployment . . . . . . . . . . . . 6 3. FPC Design Objectives and Deployment . . . . . . . . . . . . 7
4. FPC Mobility Information Model . . . . . . . . . . . . . . . 9 4. FPC Mobility Information Model . . . . . . . . . . . . . . . 9
4.1. Model Notation and Conventions . . . . . . . . . . . . . 9 4.1. Model Notation and Conventions . . . . . . . . . . . . . 9
4.2. Templates and Attributes . . . . . . . . . . . . . . . . 12 4.2. Templates and Attributes . . . . . . . . . . . . . . . . 12
4.3. Attribute-Expressions . . . . . . . . . . . . . . . . . . 13 4.3. Attribute-Expressions . . . . . . . . . . . . . . . . . . 13
4.4. Attribute Value Types . . . . . . . . . . . . . . . . . . 14 4.4. Attribute Value Types . . . . . . . . . . . . . . . . . . 14
4.5. Namespace and Format . . . . . . . . . . . . . . . . . . 14 4.5. Namespace and Format . . . . . . . . . . . . . . . . . . 14
4.6. Configuring Attribute Values . . . . . . . . . . . . . . 14 4.6. Configuring Attribute Values . . . . . . . . . . . . . . 15
4.7. Entity Configuration Blocks . . . . . . . . . . . . . . . 15 4.7. Entity Configuration Blocks . . . . . . . . . . . . . . . 16
4.8. Infomation Model Checkpoint . . . . . . . . . . . . . . . 16 4.8. Information Model Checkpoint . . . . . . . . . . . . . . 17
4.9. Information Model Components . . . . . . . . . . . . . . 17 4.9. Information Model Components . . . . . . . . . . . . . . 18
4.9.1. Service-Group . . . . . . . . . . . . . . . . . . . . 17 4.9.1. Topology Information Model . . . . . . . . . . . . . 18
4.9.2. Service Endpoints . . . . . . . . . . . . . . . . . . 17 4.9.2. Service-Group . . . . . . . . . . . . . . . . . . . . 18
4.9.3. Topology Information Model . . . . . . . . . . . . . 19 4.9.3. Domain Information Model . . . . . . . . . . . . . . 20
4.9.4. Domain Information Model . . . . . . . . . . . . . . 19 4.9.4. DPN Information Model . . . . . . . . . . . . . . . . 20
4.9.5. DPN Information Model . . . . . . . . . . . . . . . . 19 4.9.5. Policy Information Model . . . . . . . . . . . . . . 21
4.9.6. Policy Information Model . . . . . . . . . . . . . . 21 4.9.6. Mobility-Context Information Model . . . . . . . . . 24
4.9.7. Mobility-Context Information Model . . . . . . . . . 24 4.9.7. Monitor Information Model . . . . . . . . . . . . . . 26
4.9.8. Monitor Information Model . . . . . . . . . . . . . . 26
5. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.1. Protocol Messages and Semantics . . . . . . . . . . . . . 27 5.1. Protocol Messages and Semantics . . . . . . . . . . . . . 27
5.1.1. Configure Message . . . . . . . . . . . . . . . . . . 30 5.1.1. Configure Message . . . . . . . . . . . . . . . . . . 30
5.1.2. Monitor Messages . . . . . . . . . . . . . . . . . . 36 5.1.2. Monitor Messages . . . . . . . . . . . . . . . . . . 36
5.2. Protocol Operation . . . . . . . . . . . . . . . . . . . 38 5.2. Protocol Operation . . . . . . . . . . . . . . . . . . . 38
5.2.1. Simple RPC Operation . . . . . . . . . . . . . . . . 38 5.2.1. DPN Selection . . . . . . . . . . . . . . . . . . . . 38
5.2.2. Policy And Mobility on the Agent . . . . . . . . . . 46 5.2.2. Policy Creation and Installation . . . . . . . . . . 41
6. Templates And Command Sets . . . . . . . . . . . . . . . . . 48 5.2.3. Simple RPC Operation . . . . . . . . . . . . . . . . 43
6.1. Monitor Configuration Templates . . . . . . . . . . . . . 49 5.2.4. Policy and Mobility on the Agent . . . . . . . . . . 51
6.2. Descriptor Templates . . . . . . . . . . . . . . . . . . 49 5.2.5. Monitor Example . . . . . . . . . . . . . . . . . . . 53
6.3. Tunnel Templates . . . . . . . . . . . . . . . . . . . . 52 6. Templates and Command Sets . . . . . . . . . . . . . . . . . 55
6.4. Action Templates . . . . . . . . . . . . . . . . . . . . 53 6.1. Monitor Configuration Templates . . . . . . . . . . . . . 55
6.5. Quality of Service Action Templates . . . . . . . . . . . 54 6.2. Descriptor Templates . . . . . . . . . . . . . . . . . . 56
6.6. PMIP Command-Set . . . . . . . . . . . . . . . . . . . . 55 6.3. Tunnel Templates . . . . . . . . . . . . . . . . . . . . 59
6.7. 3GPP Specific Templates and Command-Set . . . . . . . . . 55 6.4. Action Templates . . . . . . . . . . . . . . . . . . . . 60
7. Implementation Status . . . . . . . . . . . . . . . . . . . . 57 6.5. Quality of Service Action Templates . . . . . . . . . . . 61
8. Security Considerations . . . . . . . . . . . . . . . . . . . 61 6.6. PMIP Command-Set . . . . . . . . . . . . . . . . . . . . 62
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 62 6.7. 3GPP Specific Templates and Command-Set . . . . . . . . . 62
10. Work Team Participants . . . . . . . . . . . . . . . . . . . 64 7. Implementation Status . . . . . . . . . . . . . . . . . . . . 64
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 64 8. Security Considerations . . . . . . . . . . . . . . . . . . . 68
11.1. Normative References . . . . . . . . . . . . . . . . . . 64 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 69
11.2. Informative References . . . . . . . . . . . . . . . . . 65 10. Work Team Participants . . . . . . . . . . . . . . . . . . . 71
Appendix A. YANG Data Model for the FPC protocol . . . . . . . . 66 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 71
A.1. FPC YANG Model . . . . . . . . . . . . . . . . . . . . . 67 11.1. Normative References . . . . . . . . . . . . . . . . . . 71
A.2. YANG Models . . . . . . . . . . . . . . . . . . . . . . . 89 11.2. Informative References . . . . . . . . . . . . . . . . . 72
A.2.1. FPC YANG Settings and Extensions Model . . . . . . . 89 Appendix A. YANG Data Model for the FPC protocol . . . . . . . . 73
A.2.2. PMIP QoS Model . . . . . . . . . . . . . . . . . . . 101 A.1. FPC YANG Model . . . . . . . . . . . . . . . . . . . . . 75
A.2.3. Traffic Selectors YANG Model . . . . . . . . . . . . 109 A.2. FPC YANG Settings and Extensions Model . . . . . . . . . 97
A.2.4. RFC 5777 Classifier YANG Model . . . . . . . . . . . 117 A.3. PMIP QoS Model . . . . . . . . . . . . . . . . . . . . . 109
A.3. FPC YANG Data Model Structure . . . . . . . . . . . . . . 125 A.4. Traffic Selectors YANG Model . . . . . . . . . . . . . . 117
Appendix B. Changes since Version 09 . . . . . . . . . . . . . . 133 A.5. RFC 5777 Classifier YANG Model . . . . . . . . . . . . . 125
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 134 Appendix B. FPC YANG Tree Structure . . . . . . . . . . . . . . 132
Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 150
C.1. Changes since Version 09 . . . . . . . . . . . . . . . . 150
C.2. Changes since Version 10 . . . . . . . . . . . . . . . . 151
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 151
1. Introduction 1. Introduction
This document describes Forwarding Policy Configuration (FPC), a This document describes Forwarding Policy Configuration (FPC), a
system for managing the separation of control-plane and data-plane. system for managing the separation of control-plane and data-plane.
FPC enables flexible mobility management using FPC client and FPC FPC enables flexible mobility management using FPC client and FPC
agent functions. An FPC agent exports an abstract interface agent functions. A FPC agent exports an abstract interface
representing the data-plane. To configure data-plane nodes and representing the data-plane. To configure data-plane nodes and
functions, the FPC client uses the interface to the data-plane functions, the FPC client uses the interface to the data-plane
offered by the FPC agent. offered by the FPC agent.
Control planes of mobility management systems, or related Control planes of mobility management systems, or related
applications which require data-plane control, can utilize the FPC applications which require data-plane control, can utilize the FPC
client at various levels of abstraction. FPC operations are capable client at various levels of abstraction. FPC operations are capable
of directly configuring a single Data-Plane Node (DPN), as well as of directly configuring a single Data-Plane Node (DPN), as well as
multiple DPNs, as determined by the data-plane models exported by the multiple DPNs, as determined by the data-plane models exported by the
FPC agent. FPC agent.
A FPC agent represents the data-plane operation according to several A FPC agent represents the data-plane operation according to several
basic information models. An FPC agent also provides access to basic information models. A FPC agent also provides access to
Monitors, which produce reports when triggered by events regarding Monitors, which produce reports when triggered by events or FPC
Mobility Contexts, DPNs or the Agent. Client requests regarding Mobility Contexts, DPNs or the Agent.
To manage mobility sessions, the FPC client assembles applicable sets To manage mobility sessions, the FPC client assembles applicable sets
of forwarding policies from the data model, and configures them on of forwarding policies from the data model, and configures them on
the appropriate FPC Agent. The Agent then renders those policies the appropriate FPC Agent. The Agent then renders those policies
into specific configurations for each DPN at which mobile nodes are into specific configurations for each DPN at which mobile nodes are
attached. The specific protocols and configurations to configure a attached. The specific protocols and configurations to configure a
DPN from a FPC Agent are outside the scope of this document. DPN from a FPC Agent are outside the scope of this document.
A DPN is a logical entity that performs data-plane operations (packet A DPN is a logical entity that performs data-plane operations (packet
movement and management). It may represent a physical DPN unit, a movement and management). It may represent a physical DPN unit, a
skipping to change at page 4, line 44 skipping to change at page 4, line 48
different mobility management systems and data-plane functions. The different mobility management systems and data-plane functions. The
architecture and protocol design of FPC is not tied to specific types architecture and protocol design of FPC is not tied to specific types
of access technologies and mobility protocols. of access technologies and mobility protocols.
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
Attribute Expression: The definition of a template Property. This
includes setting the type, current value,
default value and if the attribute is static,
i.e. can no longer be changed.
Domain: One or more DPNs that form a logical Domain: One or more DPNs that form a logical
partition of network resources (e.g., a data- partition of network resources (e.g., a data-
plane network under common network plane network under common network
administration). An FPC client (e.g., a administration). A FPC client (e.g., a
mobility management system) may utilize a mobility management system) may utilize a
single or multiple domains. single or multiple domains.
DPN: A data-plane node (DPN) is capable of DPN: A data-plane node (DPN) is capable of
performing data-plane features. For example, performing data-plane features. For example,
DPNs may be switches or routers, regardless DPNs may be switches or routers, regardless
of whether they are realized as hardware or of whether they are realized as hardware or
purely in software. purely in software.
DPN-Set: the set of DPNs in a network configuration FPC Client: A FPC Client is integrated with a mobility
Service-Endpoint-Set: a set of Service-Endpoint entities
FPC Agent: An FPC Agent manages DPNs, thereby providing
abstracted data-plane networks to FPC
Clients.
FPC Client: An FPC Client is integrated with a mobility
management system or related application, management system or related application,
enabling control over forwarding policy, enabling control over forwarding policy,
mobility sessions and DPNs via an FPC Agent. mobility sessions and DPNs via a FPC Agent.
Service-Group-Set: a set of DPN interfaces that support a
specific data-plane purpose (inbound/
outbound, roaming, subnetwork with common
specific configuration, etc.)
Mobility Context: A Mobility Context contains the data-plane Mobility Context: A Mobility Context contains the data-plane
information necessary to efficiently send and information necessary to efficiently send and
receive traffic from a mobile node. This receive traffic from a mobile node. This
includes policies that are created or includes policies that are created or
modified during the network's operation - in modified during the network's operation - in
most cases, on a per-flow or per session most cases, on a per-flow or per session
basis. A Mobility-Context represents the basis. A Mobility-Context represents the
mobility sessions (or flows) which are active mobility sessions (or flows) which are active
on a mobile node. This includes associated on a mobile node. This includes associated
skipping to change at page 6, line 6 skipping to change at page 5, line 47
signaling requests. The Mobility Context signaling requests. The Mobility Context
supplies information about the policy supplies information about the policy
settings specific to a mobile node and its settings specific to a mobile node and its
flows; this information is often quite flows; this information is often quite
dynamic. dynamic.
Mobility Session: Traffic to/from a mobile node that is Mobility Session: Traffic to/from a mobile node that is
expected to survive reconnection events. expected to survive reconnection events.
Monitor: A reporting mechanism for a list of events Monitor: A reporting mechanism for a list of events
that trigger notification messages from an that trigger notification messages from a FPC
FPC Agent to an FPC Client. Agent to a FPC Client.
Policy: A Policy determines the mechanisms for Policy: A Policy determines the mechanisms for
managing specific traffic flows or packets. managing specific traffic flows or packets.
Policies specify QoS, rewriting rules for Policies specify QoS, rewriting rules for
packet processing, etc. A Policy consists of packet processing, etc. A Policy consists of
one or more rules. Each rule is composed of one or more rules. Each rule is composed of
a Descriptor and Actions. The Descriptor in a Descriptor and Actions. The Descriptor in
a rule identifies packets (e.g., traffic a rule identifies packets (e.g., traffic
flows), and the Actions apply treatments to flows), and the Actions apply treatments to
packets that match the Descriptor in the packets that match the Descriptor in the
rule. Policies can apply to Domains, DPNs, rule. Policies can apply to Domains, DPNs,
Mobile Nodes, Service Groups, or particular Mobile Nodes, Service-Groups, or particular
Flows on a Mobile Node. Flows on a Mobile Node.
Property: An attribute-value pair for an instance of an Property: An attribute-value pair for an instance of a
FPC entity FPC entity.
Service-Group: A set of DPN interfaces that support a
specific data-plane purpose, e.g. inbound/
outbound, roaming, subnetwork with common
specific configuration, etc.
Template: A recipe for instantiating FPC entities. Template: A recipe for instantiating FPC entities.
Template definitions are accessible (by name Template definitions are accessible (by name
or by a key) in an indexed set. A template or by a key) in an indexed set. A Template
is used to create specific instances (e.g., is used to create specific instances (e.g.,
specific policies) by assigning appropriate specific policies) by assigning appropriate
values into the template definition. values into the Template definition via
Attribute Expression.
Template Configuration The process by which a Template is referenced
(by name or by key) and Attribute Expressions
are created that change the value, default
value or static nature of the Attribute, if
permitted. If the Template is Extensible,
new attributes MAY be added.
Tenant: An operational entity that manages mobility Tenant: An operational entity that manages mobility
management systems or applications which management systems or applications which
require data-plane functions. require data-plane functions. A Tenant
defines a global namespace for all entities
owned by the Tenant enabling its entities to
be used by multiple FPC Clients across
multiple FPC Agents.
Topology: The DPNs and the links between them. For Topology: The DPNs and the links between them. For
example, access nodes may be assigned to a example, access nodes may be assigned to a
Service Group which peers to a Service Group Service-Group which peers to a Service-Group
of anchor nodes. of anchor nodes.
3. FPC Design Objectives and Deployment 3. FPC Design Objectives and Deployment
Using FPC, mobility control-planes and applications can configure Using FPC, mobility control-planes and applications can configure
DPNs to perform various mobility management roles as described in DPNs to perform various mobility management roles as described in
[I-D.ietf-dmm-deployment-models]. This fulfills the requirements [I-D.ietf-dmm-deployment-models]. This fulfills the requirements
described in [RFC7333]. described in [RFC7333].
This document defines FPC Agent and FPC Client, as well as the This document defines FPC Agent and FPC Client, as well as the
skipping to change at page 7, line 17 skipping to change at page 7, line 29
Client and the Agent communicate based on information models Client and the Agent communicate based on information models
described in Section 4. The models allow the control-plane to described in Section 4. The models allow the control-plane to
configure forwarding policies on the Agent for data-plane configure forwarding policies on the Agent for data-plane
communications with mobile nodes. communications with mobile nodes.
Once the Topology of DPN(s) and domains are defined on an Agent for a Once the Topology of DPN(s) and domains are defined on an Agent for a
data plane, the DPNs in the topology are available for further data plane, the DPNs in the topology are available for further
configuration. The FPC Agent connects those DPNs to manage their configuration. The FPC Agent connects those DPNs to manage their
configurations. configurations.
An FPC Agent configures and manages its DPN(s) according to A FPC Agent configures and manages its DPN(s) according to forwarding
forwarding policies requested by the FPC Client. Configuration policies requested and Attributes provided by the FPC Client.
commands used by the FPC agent to configure its DPN node(s) may be Configuration commands used by the FPC agent to configure its DPN
specific to the DPN implementation; consequently the method by which node(s) may be specific to the DPN implementation; consequently the
the FPC Agent carries out the specific configuration for its DPN(s) method by which the FPC Agent carries out the specific configuration
is out of scope for this document. Along with the data models, the for its DPN(s) is out of scope for this document. Along with the
FPC Client (on behalf of control-plane and applications) requests data models, the FPC Client (on behalf of control-plane and
that the Agent configures Policies prior to the time when the DPNs applications) requests that the Agent configures Policies prior to
start forwarding data for their mobility sessions. the time when the DPNs start forwarding data for their mobility
sessions.
This architecture is illustrated in Figure 1. An FPC Agent may be This architecture is illustrated in Figure 1. A FPC Agent may be
implemented in a network controller that handles multiple DPNs, or implemented in a network controller that handles multiple DPNs, or
(more simply) an FPC Agent may itself be integrated into a DPN. (more simply) an FPC Agent may itself be integrated into a DPN.
This document does not specify a protocol for the FPC interface; it This document does not specify a protocol for the FPC interface; it
is out of scope. However, an implementation must support the FPC is out of scope. However, an implementation must support the FPC
transactions described in Section 5. transactions described in Section 5.
+-------------------------+ +-------------------------+
| Mobility Control-Plane | | Mobility Control-Plane |
| and | | and |
skipping to change at page 8, line 30 skipping to change at page 8, line 30
|| [Data-plane model] || ||[Data-plane model]|| || [Data-plane model] || ||[Data-plane model]||
|| FPC Agent || || FPC Agent || || FPC Agent || || FPC Agent ||
|+-----------------------+| |+------------------+| |+-----------------------+| |+------------------+|
|+------------+----------+| | | |+------------+----------+| | |
||SB Protocol |FPC Client|| | DPN Configuration | ||SB Protocol |FPC Client|| | DPN Configuration |
|| Modules | Module || +--------------------+ || Modules | Module || +--------------------+
|+------^-----+----^-----+| |+------^-----+----^-----+|
+-------|----------|------+ +-------|----------|------+
| | | |
Other | | FPC interface Other | | FPC interface
southband | | protocol southbound | | protocol
protocols | | protocols | |
| +-----------------+ | +-----------------+
| | | |
DPN | DPN | DPN | DPN |
+----------|---------+ +----------|---------+ +----------|---------+ +----------|---------+
|+---------v--------+| |+---------v--------+| |+---------v--------+| |+---------v--------+|
|| Configuration || ||[Data-plane model]|| || Configuration || ||[Data-plane model]||
|| Protocol module || || FPC Agent || || Protocol module || || FPC Agent ||
|+------------------+| |+------------------+| |+------------------+| |+------------------+|
| | | | | | | |
| DPN Configuration | | DPN Configuration | | DPN Configuration | | DPN Configuration |
+--------------------+ +--------------------+ +--------------------+ +--------------------+
Figure 1: Reference Forwarding Policy Configuration (FPC) Figure 1: Reference Forwarding Policy Configuration (FPC)
Architecture Architecture
The FPC architecture supports multi-tenancy; an FPC enabled data- The FPC architecture supports multi-tenancy; a FPC enabled data-plane
plane supports tenants of multiple mobile operator networks and/or supports tenants of multiple mobile operator networks and/or
applications. It means that the FPC Client of each tenant connects applications. It means that the FPC Client of each tenant connects
to the FPC Agent and it MUST partition namespace and data for their to the FPC Agent and it MUST partition namespace and data for their
data-planes. DPNs on the data-plane may fulfill multiple data-plane data-planes. DPNs on the data-plane may fulfill multiple data-plane
roles which are defined per session, domain and tenant. roles which are defined per session, domain and tenant.
Multi-tenancy permits the paritioning of data-plane entities as well
as a common namespace requirement upon FPC Agents and Clients when
they use the same Tenant for a common data-plane entity.
FPC information models often configuration to fit the specific needs FPC information models often configuration to fit the specific needs
for DPN management of a mobile node's traffic. The FPC interfaces in for DPN management of a mobile node's traffic. The FPC interfaces in
Figure 1 are the only interfaces required to handle runtime data in a Figure 1 are the only interfaces required to handle runtime data in a
Mobility Context. The Topology and some Policy FPC models may be Mobility Context. The Topology and some Policy FPC models MAY be
pre-configured; in that case real-time protocol exchanges are not pre-configured; in that case real-time protocol exchanges are not
required for them. required for them.
The information model provides an extensibility mechanism through
Templates that permits specialization for the needs of a particular
vendor's equipment or future extension of the model presented in this
specification.
4. FPC Mobility Information Model 4. FPC Mobility Information Model
The FPC information model includes the following components: The FPC information model includes the following components:
DPN Information Model, DPN Information Model,
Topology Information Model, Topology Information Model,
Policy Information Model, Policy Information Model,
Mobility-Context, and Mobility-Context, and
Monitor, as illustrated in Figure 2. Monitor, as illustrated in Figure 2.
: :
| |
+-[FPC Mobility Information Model] +-[FPC Mobility Information Model]
| | | |
| +-[DPN Information Model]
| |
| +-[Topology Information Model] | +-[Topology Information Model]
| | | |
| +-[Policy Information Model] | +-[Policy Information Model]
| | | |
| +-[Mobility-Context] | +-[Mobility-Context]
| | | |
| +-[Monitor] | +-[Monitor]
| |
Figure 2: FPC Information Model structure Figure 2: FPC Information Model structure
skipping to change at page 10, line 16 skipping to change at page 10, line 19
+-[entity2] +-[entity2]
| +-[entity2.1] | +-[entity2.1]
| +-[entity2.2] | +-[entity2.2]
Figure 3: Model Notation - An Example Figure 3: Model Notation - An Example
Some entities have one or more qualifiers placed on the right hand Some entities have one or more qualifiers placed on the right hand
side of the element definition in angle-brackets. Common types side of the element definition in angle-brackets. Common types
include: include:
List: a collection of entities (some could be duplicated) List: A collection of entities (some could be duplicated)
Set: a nonempty collection of entities without duplications Set: A nonempty collection of entities without duplications
Name: a human-readable string Name: A human-readable string
Key: a unique value. We distinguish 3 types of keys: Key: A unique value. We distinguish 3 types of keys:
U-Key: a key unique across all tenants. U-Key spaces typically U-Key: A key unique across all Tenants. U-Key spaces typically
involve the use of registries or language specific mechanisms involve the use of registries or language specific mechanisms
that guarantee universal uniqueness of values. that guarantee universal uniqueness of values.
G-Key: a key unique within a tenant G-Key: A key unique within a Tenant
L-Key: a key unique within a local namespace. For example, there L-Key: A key unique within a local namespace. For example, there
may exist interfaces with the same name, e.g. "if0", in two may exist interfaces with the same name, e.g. "if0", in two
different DPNs but there can only be one "if0" within each DPN different DPNs but there can only be one "if0" within each DPN
(i.e. its local Interface-Key L-Key space). (i.e. its local Interface-Key L-Key space).
Each entity or attribute may be optional (O) or mandatory (M). Each entity or attribute may be optional (O) or mandatory (M).
Entities that are not marked as optional are mandatory. Entities that are not marked as optional are mandatory.
The following example shows 3 entities: The following example shows 3 entities:
-- Entity1 is a globally unique key, and optionally can have -- Entity1 is a globally unique key, and optionally can have
an associated Name an associated Name
skipping to change at page 11, line 6 skipping to change at page 11, line 21
| |
+-[entity1] <G-Key> (M), <Name> (O) +-[entity1] <G-Key> (M), <Name> (O)
+-[entity2] <List> +-[entity2] <List>
+-[entity3] <Set> (O) +-[entity3] <Set> (O)
| |
+ +
Figure 4 Figure 4
When expanding entity1 into a modeling language such as YANG it would When expanding entity1 into a modeling language such as YANG it would
result in two values: entity1-GKey and entity1-Name. result in two values: entity1-Key and entity1-Name.
To encourage re-use, FPC defines indexed sets of various entity To encourage re-use, FPC defines indexed sets of various entity
templates. Other model elements that need access to an indexed model Templates. Other model elements that need access to an indexed model
entity contain an attribute which is always denoted as "entity-Key". entity contain an attribute which is always denoted as "entity-Key".
When a Key attribute is encountered, the referencing model element When a Key attribute is encountered, the referencing model element
may supply attribute values for use when the referenced entity model may supply attribute values for use when the referenced entity model
is instantiated. For example: Figure 5 shows 2 entities: is instantiated. For example: Figure 5 shows 2 entities:
EntityA definition references an entityB model element. EntityA definition references an entityB model element.
EntityB model elements are indexed by entityB-Key. EntityB model elements are indexed by entityB-Key.
Each EntityB model element has an entityB-Key which allows it to be Each EntityB model element has an entityB-Key which allows it to be
skipping to change at page 11, line 44 skipping to change at page 12, line 24
+-[entityB] <L-Key> (M) <Set> +-[entityB] <L-Key> (M) <Set>
| +-[entityB-Type] | +-[entityB-Type]
. .
. .
Figure 5: Indexed sets of entities Figure 5: Indexed sets of entities
Indexed sets are specified for each of the following kinds of Indexed sets are specified for each of the following kinds of
entities: entities:
Domain (See Section 4.9.4) Domain (See Section 4.9.3)
DPN (See Section 4.9.5) DPN (See Section 4.9.4)
Policy (See Section 4.9.6) Policy (See Section 4.9.5)
Descriptor (See Figure 13) Rule (See Section 4.9.5)
Action (See Figure 13) Descriptor (See Figure 12)
Service Group (See Section 4.9.1, and Action (See Figure 12)
Mobility-Context (See Section 4.9.7) Service-Group (See Section 4.9.2, and
Mobility-Context (See Section 4.9.6)
As an example, for a Domain entity, there is a corresponding As an example, for a Domain entity, there is a corresponding
attribute denoted as "Domain-Key" whose value can be used to attribute denoted as "Domain-Key" whose value can be used to
determine a reference to the Domain. determine a reference to the Domain.
4.2. Templates and Attributes 4.2. Templates and Attributes
In order to simplify development and maintenance of the needed In order to simplify development and maintenance of the needed
policies and other objects used by FPC, the Information Models which policies and other objects used by FPC, the Information Models which
are presented often have attributes that are not initialized with are presented often have attributes that are not initialized with
their final values. When an FPC entity is instantiated according to their final values. When an FPC entity is instantiated according to
a template definition, specific values need to be configured for each a template definition, specific values need to be configured for each
such attribute. For instance, suppose an entity Template has an such attribute. For instance, suppose an entity Template has an
Attribute named "IPv4-Address", and also suppose that an FPC Client Attribute named "IPv4-Address", and also suppose that a FPC Client
instantiates the entity and requests that it be installed on a DPN. instantiates the entity and requests that it be installed on a DPN.
An IPv4 address will be needed for the value of that Attribute before An IPv4 address will be needed for the value of that Attribute before
the entity can be used. the entity can be used.
+-[Template] <U-Key, Name> (M) <Set> +-[Template] <U-Key, Name> (M) <Set>
| +-[Attributes] <Set> (M) | +-[Attributes] <Set> (M)
| +-[Extensible ~ FALSE] | +-[Extensible ~ FALSE]
| +-[Entity-State ~ Initial] | +-[Entity-State ~ Initial]
| +-[Version] | +-[Version]
Figure 6: Template entities Figure 6: Template entities
Attributes: A set of Attribute names MAY be included when defining a Attributes: A set of Attribute names MAY be included when defining a
Template for instantiating FPC entities. Any instantiation from a Template for instantiating FPC entities.
Template MUST have at least one Attribute in order to be a useful
entity.
Extensible: Determines whether or not entities instantiated from the Extensible: Determines whether or not entities instantiated from the
Template can be extended with new non-mandatory Attributes not Template can be extended with new non-mandatory Attributes not
originally defined for the Template. Default value is FALSE. If originally defined for the Template. Default value is FALSE. If
a Template does not explicitly specify this attribute, the default a Template does not explicitly specify this attribute, the default
value is considered to be in effect. value is considered to be in effect.
Entity-State: Either Initial, PartiallyConfigured, Configured, or Entity-State: Either Initial, PartiallyConfigured, Configured, or
Active. Default value is Initial. See Section 4.6 for more Active. Default value is Initial. See Section 4.6 for more
information about how the Entity-Status changes during the information about how the Entity-Status changes during the
configuration steps of the Entity. configuration steps of the Entity.
Version: Provides a version tag for the template. Version: Provides a version tag for the Template.
The Attributes in an Entity Template may be either mandatory or non- The Attributes in an Entity Template may be either mandatory or non-
mandatory. Attribute values may also be associated with the mandatory. Attribute values may also be associated with the
attributes in the Entity Template. If supplied, the value may be attributes in the Entity Template. If supplied, the value may be
either assigned with a default value that can be reconfigured later, either assigned with a default value that can be reconfigured later,
or the value can be assigned with a static value that cannot be or the value can be assigned with a static value that cannot be
reconfigured later (see Section 4.3). reconfigured later (see Section 4.3).
It is possible for a Template to provide values for all of its It is possible for a Template to provide values for all of its
Attributes, so that no additional values are needed before the entity Attributes, so that no additional values are needed before the entity
can made Active. Any instantiation from a Template MUST have at can made Active. Any instantiation from a Template MUST have at
least one Attribute in order to be a useful entity. least one Attribute in order to be a useful entity unless the
Template has none.
4.3. Attribute-Expressions 4.3. Attribute-Expressions
The syntax of the Attribute definition is formatted to make it clear, The syntax of the Attribute definition is formatted to make it clear.
for every Attribute in the Entity Template, which of the six For every Attribute in the Entity Template, six possibilities are
possibilities is specified, as follows: specified as follows:
'[Att-Name: ]' Mandatory Attribute is defined, but template does not '[Att-Name: ]' Mandatory Attribute is defined, but template does not
provide any configured value. provide any configured value.
'[Att-Name: Att-Value]' Mandatory Attribute is defined, and has a '[Att-Name: Att-Value]' Mandatory Attribute is defined, and has a
statically configured value. statically configured value.
'[Att-Name: ~ Att-Value]' Mandatory Attribute is defined, and has a '[Att-Name: ~ Att-Value]' Mandatory Attribute is defined, and has a
default value. default value.
skipping to change at page 13, line 39 skipping to change at page 14, line 20
'[Att-Name = Att-Value]' Non-mandatory Attribute may be included and '[Att-Name = Att-Value]' Non-mandatory Attribute may be included and
has a statically configured value. has a statically configured value.
'[Att-Name ~ Att-Value]' Non-mandatory Attribute may be included and '[Att-Name ~ Att-Value]' Non-mandatory Attribute may be included and
has a default value. has a default value.
So, for example, a default value for a non-mandatory IPv4-Address So, for example, a default value for a non-mandatory IPv4-Address
attribute would be denoted by [IPv4-Address ~ 127.0.0.1]. attribute would be denoted by [IPv4-Address ~ 127.0.0.1].
After an FPC Client identifies which additional Attributes have been After a FPC Client identifies which additional Attributes have been
configured to be included in an instantiated entity, those configured configured to be included in an instantiated entity, those configured
Attributes MUST NOT be deleted by the FPC Agent. Similarly, any Attributes MUST NOT be deleted by the FPC Agent. Similarly, any
statically configured value for an entity Attribute MUST NOT be statically configured value for an entity Attribute MUST NOT be
changed by the FPC Agent. changed by the FPC Agent.
Whenever there is danger of confusion, the fully qualified Attribute Whenever there is danger of confusion, the fully qualified Attribute
name MUST be used when supplying needed Attribute Values for a name MUST be used when supplying needed Attribute Values for a
structured Attribute. structured Attribute.
4.4. Attribute Value Types 4.4. Attribute Value Types
skipping to change at page 14, line 20 skipping to change at page 14, line 45
parenthesized data type (foo). So, for instance, [(float) Max- parenthesized data type (foo). So, for instance, [(float) Max-
Latency-in-ms:] would indicate that the mandatory Attribute "Max- Latency-in-ms:] would indicate that the mandatory Attribute "Max-
Latency-in-ms" requires to be configured with a floating point value Latency-in-ms" requires to be configured with a floating point value
before the instantiated entity could be used. Similarly, [(float) before the instantiated entity could be used. Similarly, [(float)
Max-Latency-in-ms: 9.5] would statically configure a floating point Max-Latency-in-ms: 9.5] would statically configure a floating point
value of 9.5 to the mandatory Attribute "Max-Latency-in-ms". value of 9.5 to the mandatory Attribute "Max-Latency-in-ms".
4.5. Namespace and Format 4.5. 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 maintained by all Tenant must be unique. That uniqueness must be maintained by all
Clients, Agents and DPNs that support the tenant. The tenant Clients, Agents and DPNs that support the Tenant. The Tenant
namespace uniqueness MUST be applied to all elements of the tenant namespace uniqueness MUST be applied to all elements of the tenant
model, i.e. Topology, Policy and Mobility models. model, i.e. 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 Mobility-Contexts in all Tenants
Agent, the Agent SHOULD define that policy to be visible from all the on an Agent, the Agent SHOULD define that policy to be visible by all
tenants. In this case, the Agent assigns an unique identifier in the Tenants. In this case, the Agent assigns a unique identifier in the
agent namespace and effectively creates a U-Key although only a G-Key Agent namespace and copies the values to each Tenant. This
is required. effectively creates a U-Key although only a G-Key is required within
the Tenant.
The notation for identifiers can utilize any format with agreement The notation for 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). The FPC model does not limit the format, which Identifiers (URIs). The FPC model does not limit the format, which
could dictate the choice of FPC protocol. Nevertheless, the could dictate the choice of FPC protocol. Nevertheless, the
identifiers which are used in a Mobility model should be considered identifiers which are used in a Mobility model should be considered
to efficiently handle runtime parameters. to efficiently handle runtime parameters.
skipping to change at page 14, line 51 skipping to change at page 15, line 28
There are identifiers reserved for Protocol Operation. See There are identifiers reserved for Protocol Operation. See
Section 5.1.1.5 for details. Section 5.1.1.5 for details.
4.6. Configuring Attribute Values 4.6. Configuring Attribute Values
Attributes of Information Model components such as policy templates Attributes of Information Model components such as policy templates
are configured with values as part of FPC configuration operations. are configured with values as part of FPC configuration operations.
There may be several such configuration operations before the There may be several such configuration operations before the
template instantiation is fully configured. template instantiation is fully configured.
Entity-Status indicates when an Entity is usable within a DPN. This
permits DPN design tradeoffs amongst local storage (or other
resources), over the wire request size and the speed of request
processing. For example, DPN designers with constrained systems MAY
only house entities whose status is Active which may result in
sending over all policy information with a Mobility-Context request.
Storing information elements with an entity status of
"PartiallyConfigured" on the DPN requires more resources but can
result in smaller over the wire FPC communication and request
processing efficiency.
When the FPC Client instantiates a Policy from a Template, the When the FPC Client instantiates a Policy from a Template, the
Policy-Status is "Initial". When the FPC Client sends the policy to Policy-Status is "Initial". When the FPC Client sends the policy to
an FPC Agent for installation on a DPN, the Client often will a FPC Agent for installation on a DPN, the Client often will
configure appropriate attribute values for the installation, and configure appropriate attribute values for the installation, and
accordingly changes the Policy-Status to "PartiallyConfigured" or accordingly changes the Policy-Status to "PartiallyConfigured" or
"Configured". The FPC Agent will also configure Domain-specific "Configured". The FPC Agent will also configure Domain-specific
policies and DPN-specific policies (if any) on the DPN. When policies and DPN-specific policies on the DPN. When configured to
configured to provide particular services for mobile nodes, the FPC provide particular services for mobile nodes, the FPC Agent will
Agent will apply whatever service-specific policies are needed on the apply whatever service-specific policies are needed on the DPN. When
DPN. When a mobile node attaches to the network data-plane within a mobile node attaches to the network data-plane within the topology
the topology under the jurisdiction of an FPC Agent, the Agent may under the jurisdiction of a FPC Agent, the Agent may apply policies
apply policies and settings as appropriate for that mobile node. and settings as appropriate for that mobile node. Finally, when the
Finally, when the mobile node launches new flows, or quenches mobile node launches new flows, or quenches existing flows, the FPC
existing flows, the DPN Agent, on behalf of the FPC Client, applies Agent, on behalf of the FPC Client, applies or deactivates whatever
or deactivates whatever policies and attribute values are appropriate policies and attribute values are appropriate for managing the flows
for managing the flows of the mobile node. When a "Configured" of the mobile node. When a "Configured" policy is de-activated,
policy is de-activated, Policy-Status is changed to be "Active". Policy-Status is changed to be "Active". When an "Active" policy is
When an "Active" policy is activated, Policy-Status is changed to be activated, Policy-Status is changed to be "Configured".
"Configured".
Attribute values in DPN-resident Policies may be configured by the Attribute values in DPN resident Policies may be configured by the
FPC Agent as follows: FPC Agent as follows:
Domain-Settings: Values for Policy attributes that are required for Domain-Policy-Configuration: Values for Policy attributes that are
every DPN in the domain. required for every DPN in the domain.
DPN-Settings: Values for Policy attributes that are required for DPN-Policy-Configuration: Values for Policy attributes that are
every policy configured on this DPN. required for every policy configured on this DPN.
Service-Settings: Values for Policy attributes that are required to Service-Group-Policy-Configuration: Values for Policy attributes
carry out the intended Service of the Service Group. that are required to carry out the intended Service of the Service
Group.
MN-Settings: Values for Policy attributes that are required for all MN-Policy-Configuration: Values for Policy attributes that are
traffic to/from a particular mobile node. required for all traffic to/from a particular mobile node.
Flow-Settings: Values for Policy attributes that are required for Service-Data-Flow-Policy-Configuration: Values for Policy attributes
traffic belonging to a particular set of flows on the mobile node. that are required for traffic belonging to a particular set of
flows on the mobile node.
Any of these configuration steps may also supply updated values for Any configuration changes MAY also supply updated values for existing
existing default attribute values that may have been previously default attribute values that may have been previously configured on
configured on the DPN-resident policy. the DPN resident policy.
Entity blocks describe the format of the policy configurations.
4.7. Entity Configuration Blocks 4.7. Entity Configuration Blocks
As described in Section 4.6, a Policy Template may be configured in As described in Section 4.6, a Policy Template may be configured in
several stages by configuring default or missing values for several stages by configuring default or missing values for
Attributes that do not already have statically configured values. A Attributes that do not already have statically configured values. A
Policy-Configuration is the combination of a Policy-Key (to identify Policy-Configuration is the combination of a Policy-Key (to identify
the Policy Template defining the Attributes) and the currently the Policy Template defining the Attributes) and the currently
configured Attribute Values to be applied to the Policy Template. configured Attribute Values to be applied to the Policy Template.
Policy-Configurations MAY add attributes to a Template if Extensible
is True. They MAY also refine existing attributes by:
assign new values if the Attribute is not static
make attributes static if they were not
make an attribute mandatory
A Policy-Configuration MUST NOT define or refine an attribute twice.
More generally, an Entity-Configuration can be defined for any More generally, an Entity-Configuration can be defined for any
configurable Indexed Set to be the combination of the Entity-Key configurable Indexed Set to be the combination of the Entity-Key
along with a set of Attribute-Expressions that supply configuration along with a set of Attribute-Expressions that supply configuration
information for the entity's Attributes. Figure 7 shows a schematic information for the entity's Attributes. Figure 7 shows a schematic
representation for such Entity Configuration Blocks. representation for such Entity Configuration Blocks.
[Entity Configuration Block] [Entity Configuration Block]
| +-[Entity-Key] (M) | +-[Entity-Key] (M)
| +-[Attribute-Expression] <Set> (M) | +-[Attribute-Expression] <Set> (M)
Figure 7: Entity Configuration Block Figure 7: Entity Configuration Block
This document makes use of the following kinds of Entity This document makes use of the following kinds of Entity
Configuration Blocks: Configuration Blocks:
Descriptor-Configuration
Action-Configuration
Rule-Configuration
Interface-Configuration
Service-Group-Configuration
Domain-Policy-Configuration Domain-Policy-Configuration
DPN-Policy-Configuration DPN-Policy-Configuration
Descriptor-Configuration Policy-Configuration
Action-Configuration
MN-Policy-Configuration MN-Policy-Configuration
Flow-Policy-Configuration Service-Data-Flow-Policy-Configuration
4.8. Infomation Model Checkpoint 4.8. Information Model Checkpoint
The Information Model Checkpoint permits Clients and tenants with The Information Model Checkpoint permits Clients and Tenants with
common scopes, referred to in this specification as Checkpoint common scopes, referred to in this specification as Checkpoint
BaseNames, to track the state of provisioned information on an Agent. BaseNames, to track the state of provisioned information on an Agent.
The Agent records the Checkpoint BaseName and Checkpoint value set by The Agent records the Checkpoint BaseName and Checkpoint value set by
a Client. If a new Client attaches to the Agent it can query to a Client. When a Client attaches to the Agent it can query to
determine the amount of work that must be executed to configure the determine the amount of work that must be executed to configure the
Agent to a specific BaseName / checkpoint revision. Agent to a specific BaseName / checkpoint revision.
Checkpoints are defined for the following information model Checkpoints are defined for the following information model
components: components:
Service-Group Service-Group
DPN Information Model DPN Information Model
Topology Information Model Domain Information Model
Policy Information Model Policy Information Model
4.9. Information Model Components 4.9. Information Model Components
4.9.1. Service-Group 4.9.1. Topology Information Model
A Service-Group is collection of DPN interfaces serving some data- The Topology structure specifies DPNs and the communication paths
plane purpose. Each Group contains a list of DPNs (referenced by between them. A network management system can use the Topology to
DPN-Key) and selected interfaces (referenced by Interface-Key). The select the most appropriate DPN resources for handling specific
Interfaces are listed explicitly (rather than referred implicitly by session flows.
its specific DPN) so that every Interface of a DPN is not required to
be part of the Group.
| The Topology structure is illustrated in Figure 8 (for definitions
+-[Service-Group] <G-Key>, <Name> (O) <Set> see Section 2):
| +-[Extensible: FALSE]
| +-[DPN-Key]
| +-[Role] <U-Key>
| +-[Referenced-Interface] <Set>
| | +-[Interface-Key] <L-Key>
| | +-[Peer-Service-Group-Key] <Set> (O)
Figure 8: Service Group |
+-[Topology Information Model]
| +-[Extensible: FALSE]
| +-[Service-Group]
| +-[DPN] <Set>
| +-[Domain] <Set>
Each Service-Group contains the following information: Figure 8: Topology Structure
Service-Group (Key): A unique ID of the Service-Group 4.9.2. Service-Group
Service-Group (Name): a human-readable display string Service-Group-Set is collection of DPN interfaces serving some data-
plane purpose including but not limited to DPN Interface selection to
fulfill a Mobility-Context. Each Group contains a list of DPNs
(referenced by DPN-Key) and selected interfaces (referenced by
Interface-Key). The Interfaces are listed explicitly (rather than
referred implicitly by its specific DPN) so that every Interface of a
DPN is not required to be part of a Group. The information provided
is sufficient to ensure that the Protocol, Settings (stored in the
Service-Group-Configuration) and Features relevant to successful
interface selection is present in the model.
Role: the role (MAG, LMA, PGW, AMF etc.) of the device hosting the |
interfaces of the DPN Group. +-[Service-Group] <G-Key>, <Name> (O) <Set>
| +-[Extensible: FALSE]
| +-[Role] <U-Key>
| +-[Protocol] <Set>
| +-[Feature] <Set> (O)
| +-[Service-Group-Configuration] <Set> (O)
| +-[DPN-Key] <Set>
| | +-[Referenced-Interface] <Set>
| | | +-[Interface-Key] <L-Key>
| | | +-[Peer-Service-Group-Key] <Set> (O)
Referenced-Interface: <Set> The Interfaces and peer Service-Groups Figure 9: Service Group
associated with them. Each entry contains
Interface-Key: a key that is used together with the Role, to Each Service-Group element contains the following information:
create a key that is referred to be the interface definition of
DPNs
Peer-Service-Group-Key: Enables location of the peer Service Service-Group-Key: A unique ID of the Service-Group.
Group for this Interface.
4.9.2. Service Endpoints Service-Group-Name: A human-readable display string.
Service Endpoint is the collection of all services provided by DPN Role: The role (MAG, LMA, etc.) of the device hosting the interfaces
interfaces in the network. The interfaces are grouped according to of the DPN Group.
their Role (e.g. LMA, MAG, PGW, AMF, etc.) Within a group, DPN
interfaces may have additional properties that are more specific, as
determined by a list of features and (optionally) settings relevant
to DPN selection. This information is used when searching for
resources in a network to carry out required operations on data-plane
traffic.
| Protocol-Set: The set of protocols supported by this interface
+-[Service-Endpoint] <Set> (e.g., PMIP, S5-GTP, S5-PMIP etc.). The protocol MAY be only its
| +-[Extensible: FALSE] name, e.g. 'gtp', but many protocols implement specific message
| +-[Role] <U-Key>, <Name> (O) sets, e.g. s5-pmip, s8-pmip. When the Service-Group supports
| +-[Service-Group-Key] <Set> specific protocol message sub-subsets the Protocol value MUST
| +-[Interface] <Set> include this information.
| | +-[Interface-Key] <L-Key>, <Name> (O)
| | +-[DPN-Key]
| | +-[Protocol] <Set>
| | +-[Features] <Set> (O)
| | +-[Settings] <Set> (O)
Figure 9: DPN Type Feature-Set: An optional set of static features which further
determine the suitability of the interface to the desired
operation.
Each Service-Endpoint entry contains the following information: Service-Group-Configuration-Set: An optional set of configurations
that further determine the suitability of an interface for the
specific request. For example: SequenceNumber=ON/OFF.
Service-Group-Key: Keys enabling reference to the Service-Groups DPN-Key-Set: A key used to identify the DPN.
that are to be supported by this Service-Endpoint.
Interface: A set of interfaces possible for the group defined by Referenced-Interface-Set: The DPN Interfaces and peer Service-Groups
the Role. Each interface carries the following information: associated with them. Each entry contains
Interface-Key: a key that is used to locate the interface Interface-Key: A key that is used together with the DPN-Key, to
create a key that is refers to a specific DPN interface
definition. definition.
Role: the roles (MAG, LMA, PGW, AMF, etc.) of the interface. Peer-Service-Group-Key: Enables location of the peer Service-
Group for this Interface.
DPN-Key: The DPN key of the associated interface.
Protocol: set of protocols supported by this interface (e.g.,
PMIP, S5-GTP, S5-PMIP etc.).
Features (optional): a set of static features which further
determine the suitability of the interface to the desired
operation for which selection is underway.
Settings (optional): configurable settings that further
determine the suitability of an interface for the specific
request. For example: SequenceNumber=ON/OFF.
The Role uniquely identifies the kind of interfaces that may be
available for DPNs of the specific type.
4.9.3. Topology Information Model
The Topology structure specifies DPNs and the communication paths
between them. A network management system can use the Topology to
select the most appropriate DPN resources for handling specific
session flows.
The Topology structure is illustrated in Figure 10 (for definitions
see Section 2):
|
+-[Topology Information Model]
| +-[Extensible: FALSE]
| +-[DPN] <Set>
| +-[Domain] <Set>
Figure 10: Topology Structure
4.9.4. Domain Information Model 4.9.3. Domain Information Model
A Domain represents a group of heterogeneous Topology resources A Domain-Set represents a group of heterogeneous Topology resources
typically sharing a common administrative authority. Other models, typically sharing a common administrative authority. Other models,
outside of the scope of this specification, provide the details for outside of the scope of this specification, provide the details for
the Domain. the Domain.
| |
+-[Domain] <G-Key>, <Name> (O) <Set> +-[Domain] <G-Key>, <Name> (O) <Set>
| +-[Domain-Policy-Configuration] (O) <Set> | +-[Domain-Policy-Configuration] (O) <Set>
| |
Figure 11: Domain Information Model Figure 10: Domain Information Model
Each Domain entry contains the following information: Each Domain entry contains the following information:
Domain (Key): Identifies and enables reference to the Domain Domain-Key: Identifies and enables reference to the Domain.
Domain (Name): A human-readable display string naming the Domain Domain-Name: A human-readable display string naming the Domain.
4.9.5. DPN Information Model 4.9.4. DPN Information Model
A DPN-Set contains some or all of the DPNs in the tenant's network. A DPN-Set contains some or all of the DPNs in the Tenant's network.
Some of the DPNs in the Set may be identical in functionality and Some of the DPNs in the Set may be identical in functionality and
only differ by their Key. only differ by their Key.
| |
+-[DPN] <G-Key>, <Name> (O) <Set> +-[DPN] <G-Key>, <Name> (O) <Set>
| +-[Extensible: FALSE] | +-[Extensible: FALSE]
| +-[Interface] <L-Key> <Set> | +-[Interface] <L-Key> <Set>
| | +-[Role] <U-Key> | | +-[Role] <U-Key>
| | +-[Protocol] <Set> | | +-[Protocol] <Set>
| | +-[Settings] (O) | | +-[Interface-Configuration] <Set> (O)
| +-[Domain-Key] | +-[Domain-Key]
| +-[Service-Group-Key] <Set> (O) | +-[Service-Group-Key] <Set> (O)
| +-[DPN-Policy-Configuration] <List> (M) | +-[DPN-Policy-Configuration] <List> (M)
| +-[DPN-Resource-Mapping-Reference] (O) | +-[DPN-Resource-Mapping-Reference] (O)
Figure 12: DPN Information Model Figure 11: DPN Information Model
Each DPN entry contains the following information: Each DPN entry contains the following information:
DPN-Key: A unique Identifier of the DPN DPN-Key: A unique Identifier of the DPN.
DPN-Name: A human-readable display string DPN-Name: A human-readable display string.
Domain-Key: A Key providing access to the Domain information about Domain-Key: A Key providing access to the Domain information about
the Domain in which the DPN resides. the Domain in which the DPN resides.
Interface-Set: The Interface-Set references all interfaces (through Interface-Set: The Interface-Set references all interfaces (through
which data packets are received and transmitted) available on the which data packets are received and transmitted) available on the
DPN. Each Interface makes use of attribute values that are DPN. Each Interface makes use of attribute values that are
specific to that interface, for example, the MTU size. These do specific to that interface, for example, the MTU size. These do
not affect the DPN selection of active or enabled interfaces. not affect the DPN selection of active or enabled interfaces.
Interfaces contain the following informaiton: Interfaces contain the following information:
Role: the role (MAG, LMA, PGW, AMF, etc.) of the DPN. Role: The role (MAG, LMA, PGW, AMF, etc.) of the DPN.
Settings (optional): configurable settings that further Protocol (Set): The set of protocols supported by this interface
(e.g., PMIP, S5-GTP, S5-PMIP etc.). The protocol MAY implement
specific message sets, e.g. s5-pmip, s8-pmip. When a protocol
implements such message sub-subsets the Protocol value MUST
include this information.
Interface-Configuration-Set: Configurable settings that further
determine the suitability of an interface for the specific determine the suitability of an interface for the specific
request. For example: SequenceNumber=ON/OFF. request. For example: SequenceNumber=ON/OFF.
Service-Group-Set: The Service-Group-Set references all of the Service-Group-Set: The Service-Group-Set references all of the
Service-Groups which have been configured using Interfaces hosted Service-Groups which have been configured using Interfaces hosted
on this DPN. The purpose of a Service-Group is not to describe on this DPN. The purpose of a Service-Group is not to describe
each interface of each DPN, but rather to indicate interface types each interface of each DPN, but rather to indicate interface types
for use during the DPN selection process, when a DPN with specific for use during the DPN selection process, when a DPN with specific
interface capabilities is required. interface capabilities is required.
DPN-Policy-Configuration: A list of Policies that have been DPN-Policy-Configuration: A list of Policies that have been
configured on this DPN. Some may have values for all attributes, configured on this DPN. Some may have values for all attributes,
and some may require further configuration. Each Policy- and some may require further configuration. Each Policy-
Configuration has a key to enable reference to its Policy- Configuration has a key to enable reference to its Policy-
Template. Each Policy-Configuration also has been configured to Template. Each Policy-Configuration also has been configured to
supply missing and non-default values to the desired Attributes supply missing and non-default values to the desired Attributes
defined within the Policy-Template. defined within the Policy-Template.
DPN-Resident-Policy.Policy-Configuration: A Policy Key providing
access to Template from which the DPN-Resident-Policy was
instantiated, as well as an Attribute-Expression for this
instantiation from the Policy-Template, which supplies default
values and statically configured values for the Attributes,
according to the syntax specified in Section 4.2.
DPN-Resource-Mapping-Reference (O): A reference to the underlying DPN-Resource-Mapping-Reference (O): A reference to the underlying
implementation, e.g. physical node, software module, etc. that implementation, e.g. physical node, software module, etc. that
supports this DPN. This value MUST be non-empty prior to Dynamic- supports this DPN. Further specification of this attribute is out
Policies being installed upon the DPN. Further specification of of scope for this document.
this attribute is out of scope for this document.
4.9.6. Policy Information Model 4.9.5. Policy Information Model
The Policy Information Model defines and identifies Rules for The Policy Information Model defines and identifies Rules for
enforcement at DPNs. A Policy is basically a set of Rules that are enforcement at DPNs. A Policy is basically a set of Rules that are
to be applied to each incoming or outgoing packet at a DPN interface. to be applied to each incoming or outgoing packet at a DPN interface.
Rules comprise Descriptors and a set of Actions. The Descriptors, Rules comprise Descriptors and a set of Actions. The Descriptors,
when evaluated, determine whether or not a set of Actions will be when evaluated, determine whether or not a set of Actions will be
performed on the packet. The Policy structure is independent of a performed on the packet. The Policy structure is independent of a
policy context, whether it's an administratively configurable policy policy context.
which applies to all data flows, or a defined aggregate of flows, or
to a mobility context-related policy, which is associated with a
mobility session and may apply only to data traffic of an associated
mobile node when that node is being registered.
In addition to the Policy structure, the Information Model (per In addition to the Policy structure, the Information Model (per
Section 4.9.7) defines Mobility-Context. Each Mobility-Context may Section 4.9.6) defines Mobility-Context. Each Mobility-Context may
be configured with appropriate Attribute values, for example be configured with appropriate Attribute values, for example
depending on the identity of a mobile node. depending on the identity of a mobile node.
Traffic descriptions are defined in Descriptors, and treatments are Traffic descriptions are defined in Descriptors, and treatments are
defined separately in Actions. A Rule-Set binds Descriptors and defined separately in Actions. A Rule-Set binds Descriptors and
associated Actions by reference, using Descriptor-Key and Action-Key. associated Actions by reference, using Descriptor-Key and Action-Key.
A Rule-Set is bound to a policy in the Policy-Set (using Policy-Key), A Rule-Set is bound to a policy in the Policy-Set (using Policy-Key),
and the Policy references the Rule definitions (using Rule-Key). and the Policy references the Rule definitions (using Rule-Key).
| |
+-[Policy Information Model] +-[Policy Information Model]
| +-[Extensible:] | +-[Extensible:]
| +-[Policy-Template] <G-Key> (M) <Set> | +-[Policy-Template] <G-Key> (M) <Set>
| | +-[Policy-Status] | | +-[Policy-Configuration] <Set> (O)
| | +-[Rule-Template-Key] <List> (M) | | +-[Rule-Template-Key] <List> (M)
| | | +-[Precedence] (M) | | | +-[Precedence] (M)
| +-[Rule-Template] <L-Key> (M) <Set> | +-[Rule-Template] <L-Key> (M) <Set>
| | +-[Descriptor-Match-Type] (M) | | +-[Descriptor-Match-Type] (M)
| | +-[Descriptor-Configuration] <Set> (M) | | +-[Descriptor-Configuration] <Set> (M)
| | | +-[Direction] (O) | | | +-[Direction] (O)
| | +-[Action-Configuration] <Set> (M) | | +-[Action-Configuration] <Set> (M)
| | | +-[Action-Order] (M) | | | +-[Action-Order] (M)
| | +-[Rule-Configuration] (O)
| +-[Descriptor-Template] <L-Key> (M) <Set> | +-[Descriptor-Template] <L-Key> (M) <Set>
| | +-[Descriptor-Type] (O) | | +-[Descriptor-Type] (O)
| | +-[Attribute-Expression] <Set> (M) | | +-[Attribute-Expression] <Set> (M)
| +-[Action-Template] <L-Key> (M) <Set> | +-[Action-Template] <L-Key> (M) <Set>
| +-[Action-Type] (O) | +-[Action-Type] (O)
| | +-[Attribute-Expression] <Set> (M) | | +-[Attribute-Expression] <Set> (M)
Figure 13: Policy Information Model Figure 12: Policy Information Model
The Policy structure defines Policy-Set, Rule-Set, Descriptor-Set, The Policy structure defines Policy-Set, Rule-Set, Descriptor-Set,
and Action-Set, as follows: and Action-Set, as follows:
Policy-Template: <Set> A set of Policy structures, indexed by Policy-Template: <Set> A set of Policy structures, indexed by
Policy-Key, each of which is determined by a list of Rules Policy-Key, each of which is determined by a list of Rules
referenced by their Rule-Key. Each Policy structure contains the referenced by their Rule-Key. Each Policy structure contains the
following: following:
Policy-Key: Identifies and enables reference to this Policy Policy-Key: Identifies and enables reference to this Policy
definition. definition.
Policy-Status: Either Initial, PartiallyConfigured, Configured,
or Active. Default value is Initial.
Rule-Template-Key: Enables reference to a Rule template Rule-Template-Key: Enables reference to a Rule template
definition. definition.
Rule-Precedence: For each Rule identified by a Rule-Template-Key Rule-Precedence: For each Rule identified by a Rule-Template-Key
in the Policy, specifies the order in which that Rule must be in the Policy, specifies the order in which that Rule must be
applied. The lower the numerical value of Precedence, the applied. The lower the numerical value of Precedence, the
higher the rule precedence Rules with equal precedence MAY be higher the rule precedence. Rules with equal precedence MAY be
executed in parallel if supported by the Resource Management executed in parallel if supported by the DPN. If this value is
Function. If this value is absent, the rules SHOULD be applied absent, the rules SHOULD be applied in the order in which they
in the order in which they appear in the Policy. appear in the Policy.
Rule-Template-Set: A set of Rule template definitions indexed by Rule-Template-Set: A set of Rule Template definitions indexed by
Rule-Key. Each Rule is defined by a list of Descriptors (located Rule-Key. Each Rule is defined by a list of Descriptors (located
by Descriptor-Key) and a list of Actions (located by Action-Key) by Descriptor-Key) and a list of Actions (located by Action-Key)
as follows: as follows:
Rule-Template-Key: Identifies and enables reference to this Rule Rule-Template-Key: Identifies and enables reference to this Rule
definition. definition.
Descriptor-Match-Type Indicates whether the evaluation of the Descriptor-Match-Type Indicates whether the evaluation of the
Rule proceeds by using conditional-AND, or conditional-OR, on Rule proceeds by using conditional-AND, or conditional-OR, on
the list of Descriptors. the list of Descriptors.
skipping to change at page 23, line 31 skipping to change at page 23, line 42
default value or a statically configured value, according to default value or a statically configured value, according to
the syntax specified in Section 4.2. the syntax specified in Section 4.2.
Direction: Indicates if a rule applies to uplink traffic, to Direction: Indicates if a rule applies to uplink traffic, to
downlink traffic, or to both uplink and downlink traffic. downlink traffic, or to both uplink and downlink traffic.
Applying a rule to both uplink and downlink traffic, in case of Applying a rule to both uplink and downlink traffic, in case of
symmetric rules, eliminates the requirement for a separate symmetric rules, eliminates the requirement for a separate
entry for each direction. When not present, the direction is entry for each direction. When not present, the direction is
implied by the Descriptor's values. implied by the Descriptor's values.
Action-Configuration: References an Action template definition, Action-Configuration: References an Action Template definition,
along with an expression which names the Attributes for this along with an expression which names the Attributes for this
instantiation from the Action-Template and also specifies instantiation from the Action-Template and also specifies
whether each Attribute of the Action has a default value or a whether each Attribute of the Action has a default value or a
statically configured value, according to the syntax specified statically configured value, according to the syntax specified
in Section 4.2. in Section 4.2.
Action-Order: Defines the order in which actions are executed Action-Order: Defines the order in which actions are executed
when the associated traffic descriptor selects the packet. when the associated traffic descriptor selects the packet.
Descriptor-Template-Set: A set of traffic Descriptors, each of Descriptor-Template-Set: A set of traffic Descriptor Templates,
which can be evaluated on the incoming or outgoing packet, each of which can be evaluated on the incoming or outgoing packet,
returning a TRUE or FALSE value, defined as follows: returning a TRUE or FALSE value, defined as follows:
Descriptor-Template-Key: Identifies and enables reference to Descriptor-Template-Key: Identifies and enables reference to
this descriptor template definition. this descriptor template definition.
Attribute-Expression: An expression which defines an Attribute in Attribute-Expression: An expression which defines an Attribute in
the Descriptor-Template and also specifies whether the Template the Descriptor-Template and also specifies whether the Template
also defines a default value or a statically configured value also defines a default value or a statically configured value
for the Attribute of the Descriptor has, according to the for the Attribute of the Descriptor has, according to the
syntax specified in Section 4.2. syntax specified in Section 4.2.
Descriptor-Type: Identifies the type of descriptor, e.g. an IPv6 Descriptor-Type: Identifies the type of descriptor, e.g. an IPv6
traffic selector per [RFC6088]. traffic selector per [RFC6088].
Action-Template-Set: A set of actions defined as follows: Action-Template-Set: A set of Action Templates defined as follows:
Action-Template-Key: Identifies and enables reference to this Action-Template-Key: Identifies and enables reference to this
action template definition. action template definition.
Attribute-Expression: An expression which defines an Attribute in Attribute-Expression: An expression which defines an Attribute in
the Action-Template and also specifies whether the Template the Action-Template and also specifies whether the Template
also defines a default value or a statically configured value also defines a default value or a statically configured value
for the Attribute of the Action has, according to the syntax for the Attribute of the Action has, according to the syntax
specified in Section 4.2. specified in Section 4.2.
Action-Type: Identifies the type of an action for unambiguous Action-Type: Identifies the type of an action for unambiguous
interpretation of an Action-Value entry. interpretation of an Action-Value entry.
4.9.7. Mobility-Context Information Model 4.9.6. Mobility-Context Information Model
The Mobility-Context structure holds entries associated with a mobile The Mobility-Context structure holds entries associated with a mobile
node and its mobility sessions (flows). It is created on a DPN node and its mobility sessions (flows). It is created on a DPN
during the mobile node's registration to manage the mobile node's during the mobile node's registration to manage the mobile node's
flows. Flow information is added or deleted from the Mobility- flows. Flow information is added or deleted from the Mobility-
Context as needed to support new flows or to deallocate resources for Context as needed to support new flows or to deallocate resources for
flows that are deactivated. Descriptors are used to characterize the flows that are deactivated. Descriptors are used to characterize the
nature and resource requirement for each flow. nature and resource requirement for each flow.
Termination of a Mobility-Context implies termination of all flows Termination of a Mobility-Context implies termination of all flows
represented in the Mobility-Context, e.g. after deregistration of a represented in the Mobility-Context, e.g. after deregistration of a
mobile node. If any Child-Contexts are defined, they are also mobile node. If any Child-Contexts are defined, they are also
terminated. terminated.
+-[Mobility-Context] <G-Key> <Set> +-[Mobility-Context] <G-Key> <Set>
| +-[Extensible ~ FALSE] | +-[Extensible:~ FALSE]
| +-[Delegating-IP-Prefix:] <Set> | +-[Delegating-IP-Prefix:] <Set> (O)
| +-[Parent-Context] | +-[Parent-Context] (O)
| +-[Child-Context] <Set> | +-[Child-Context] <Set> (O)
| +-[Mobile-Node] | +-[Service-Group-Key] <Set> (O)
| | +-[IP-Address] <Set> | +-[Mobile-Node]
| | +-[MN-Policy-Configuration] <Set> | | +-[IP-Address] <Set> (O))
| +-[Domain-Key] | | +-[MN-Policy-Configuration] <Set>
| | +-[Domain-Policy-Configuration] <Set> | +-[Domain-Key]
| +-[DPN-Key] <Set> | | +-[Domain-Policy-Configuration] <Set>
| | +-[Role] | +-[DPN-Key] <Set>
| | +-[DPN-Policy-Configuration] <Set> | | +-[Role]
| | +-[ServiceDataFlow] | | +-[DPN-Policy-Configuration] <Set>
| | | +-[Service-Group-Key] | | +-[ServiceDataFlow] <L-Key> <Set> (O)
| | | +-[Interface-Key] <Set> | | | +-[Service-Group-Key] (O)
| | | +-[Flow-Policy-Configuration] <Set> | | | +-[Interface-Key] <Set>
| | | | +-[Direction] | | | +-[ServiceDataFlow-Policy-
Configuration] <Set> (O)
| | | | +-[Direction]
Figure 14: Mobility-Context Information Model Figure 13: Mobility-Context Information Model
The Mobility-Context Substructure holds the following entries: The Mobility-Context Substructure holds the following entries:
Mobility-Context-Key: Identifies a Mobility-Context Mobility-Context-Key: Identifies a Mobility-Context
Extensible: Determines whether or not entities instantiated from Delegating-IP-Prefix-Set: Delegated IP Prefixes assigned to the
this Template can be extended with new non-mandatory Attributes Mobility-Context
not defined here. Default value is FALSE.
Parent-Context: If present, a Mobility Context from which the Parent-Context: If present, a Mobility Context from which the
Attributes and Attribute Values of this Mobility Context are Attributes and Attribute Values of this Mobility Context are
inherited. inherited.
Child-Context: A set of Mobility Contexts which inherit the Child-Context-Set: A set of Mobility Contexts which inherit the
Attributes and Attribute Values of this Mobility Context. Attributes and Attribute Values of this Mobility Context.
Mobile-Node: Attributes specific to the Mobile Node. Service-Group-Key: Service-Group(s) used during DPN assignment and
re-assignment.
Mobile-Node: Attributes specific to the Mobile Node. It contains
the following
IP-Address-Set IP addresses assigned to the Mobile Node.
MN-Policy-Configuration-Set For each MN-Policy in the set, a key
and relevant information for the Policy Attributes.
Domain-Key: Enables access to a Domain instance. Domain-Key: Enables access to a Domain instance.
Domain-Policy-Configuration: For each Domain-Policy in the set, a Domain-Policy-Configuration-Set: For each Domain-Policy in the set,
key and relevant information for the Policy Attributes. a key and relevant information for the Policy Attributes.
DPN-Key: Enables access to a DPN instance. DPN-Key-Set: Enables access to a DPN instance assigned to a
specific role, i.e. this is a Set that uses DPN-Key and Role as a
compound key to access specific set instances.
Role: Role this DPN fulfills in the Mobility-Context. Role: Role this DPN fulfills in the Mobility-Context.
DPN-Policy-Configuration: For each DPN-Policy in the set, a key and DPN-Policy-Configuration-Set: For each DPN-Policy in the set, a key
relevant information for the Policy Attributes. and relevant information for the Policy Attributes.
ServiceDataFlow: Characterizes a traffic flow that has been ServiceDataFlow-Key-Set: Characterizes a traffic flow that has been
configured (and provided resources) on the DPN to support data- configured (and provided resources) on the DPN to support data-
plane traffic to and from the mobile device. plane traffic to and from the mobile device.
Service-Group-Key: Enables access to a Service-Group instance. Service-Group-Key: Enables access to a Service-Group instance.
Interface-Key: Assigns the selected interface of the DPN. Interface-Key-Set: Assigns the selected interface of the DPN.
Flow-Policy-Configuration: For each Flow-Policy in the set, a ServiceDataFlow-Policy-Configuration-Set: For each Policy in the
key and relevant information for the Policy Attributes. set, a key and relevant information for the Policy Attributes.
Direction: Indicates if a rule applies to uplink or downlink Direction: Indicates if the reference Policy applies to
traffic, or to both, uplink- and downlink traffic. Applying uplink or downlink traffic, or to both, uplink- and downlink
a rule to both, uplink- and downlink traffic, in case of traffic. Applying a rule to both, uplink- and downlink
symmetric rules, allows omitting a separate entry for each traffic, in case of symmetric rules, allows omitting a
direction. When not present the value is assumed to apply separate entry for each direction. When not present the
to both directions. value is assumed to apply to both directions.
4.9.8. Monitor Information Model 4.9.7. Monitor Information Model
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.
The attribute/entity to be monitored places certain constraints on The attribute/entity to be monitored places certain constraints on
the configuration that can be specified. For example, a Monitor the configuration that can be specified. For example, a Monitor
using a Threshold configuration cannot be applied to a Mobility- using a Threshold configuration cannot be applied to a Mobility-
Context, because it does not have a threshold. Such a monitor Context, because it does not have a threshold. Such a monitor
configuration could be applied to a numeric threshold property of a configuration could be applied to a numeric threshold property of a
Context. Context.
| |
+-[Monitor] <List> +-[Monitor] <G-Key> <List>
| +-[Extensible:] | +-[Extensible:]
| +-[Monitor-Key:] <U-Key> | +-[Target:]
| +-[Target:] | +-[Deferrable]
| +-[Deferrable] | +-[Configuration]
| +-[Configuration]
Figure 15: Monitor Substructure Figure 14: Monitor Substructure
Monitor-Key: Name of the Monitor. The format MUST conform to Monitor-Key: Identifies the Monitor.
Section 4.5.
Target: Description of what is to be monitored. This can be a Target: Description of what is to be monitored. This can be a
Service Data Flow, a Policy installed upon a DPN, values of a Service Data Flow, a Policy installed upon a DPN, values of a
Mobility-Context, etc. The target name is the absolute Mobility-Context, etc. The target name is the absolute
information model path (separated by '/') to the attribute / information model path (separated by '/') to the attribute /
entity to be monitored. entity to be monitored.
Deferrable: Indicates that a monitoring report can be delayed up to Deferrable: Indicates that a monitoring report can be delayed up to
a defined maximum delay for possible bundling with other reports. a defined maximum delay, set in the Agent, for possible bundling
with other reports.
Configuration: Determined by the Monitor subtype. The monitor Configuration: Determined by the Monitor subtype. The monitor
report is specified by the Configuration. Four report types are report is specified by the Configuration. Four report types are
defined: defined:
* "Periodic" reporting specifies an interval by which a * "Periodic" reporting specifies an interval by which a
notification is sent. notification is sent.
* "Event-List" reporting specifies a list of event types that, if * "Event-List" reporting specifies a list of event types that, if
they occur and are related to the monitored attribute, will they occur and are related to the monitored attribute, will
skipping to change at page 28, line 18 skipping to change at page 28, line 18
| Configure | A Configure message includes multiple edits | | Configure | A Configure message includes multiple edits |
| | to one or more information model entities. | | | to one or more information model entities. |
| | Edits are executed according to their Edit- | | | Edits are executed according to their Edit- |
| | Id in ascending order. The global status | | | Id in ascending order. The global status |
| | of the operation and the status of | | | of the operation and the status of |
| | individual edits are returned. Partial | | | individual edits are returned. Partial |
| | failures, i.e. individual edit failures, | | | failures, i.e. individual edit failures, |
| | are allowed. | | | are allowed. |
| Register-Monitors | Register monitors at an Agent. The message | | Register-Monitors | Register monitors at an Agent. The message |
| | includes the Monitor information as | | | includes the Monitor information as |
| | specified in Section 4.9.8. | | | specified in Section 4.9.7. |
| Deregister-Monitors | Deregister monitors from an Agent. An | | Deregister-Monitors | Deregister monitors from an Agent. An |
| | optional boolean, Send-Data, indicates if a | | | optional boolean, Send-Data, indicates if a |
| | successful deregistration triggers a Notify | | | successful deregistration triggers a Notify |
| | with final data from the Agent for the | | | with final data from the Agent for the |
| | corresponding Monitor. | | | corresponding Monitor. |
| Probe | Probe the status of registered monitors. | | Probe | Probe the status of registered monitors. |
| | This triggers a Notify with current data | | | This triggers a Notify with current data |
| | from the Agent for the corresponding | | | from the Agent for the corresponding |
| | Monitors. | | | Monitors. |
+---------------------+---------------------------------------------+ +---------------------+---------------------------------------------+
skipping to change at page 28, line 47 skipping to change at page 28, line 47
Client and tenant in the information model as well as tracking Client and tenant in the information model as well as tracking
operations and notifications. operations and notifications.
Delay: An optional time (in ms) to delay the execution of the Delay: An optional time (in ms) to delay the execution of the
operation on the DPN once it is received by the Agent. operation on the DPN once it is received by the Agent.
Operation Identifier: A unique identifier created by the Client to Operation Identifier: A unique identifier created by the Client to
correlate responses and notifications correlate responses and notifications
An Agent will respond with an ERROR, indicating one or more Errors An Agent will respond with an ERROR, indicating one or more Errors
have occured, or an OK. have occurred, or an OK.
For Configure messages, an OK status for an edit MAY include For Configure messages, an OK status for an edit MAY include
subsquent edits in the response that were required to properly subsequent edits in the response that were required to properly
execute the edit. It MAY also indicate that the final status and any execute the edit. It MAY also indicate that the final status and any
final edits required to fulfill the request will be sent via a final edits required to fulfill the request will be sent via a
Configure result notification from the Agent to the Client, see Configure Result Notification from the Agent to the Client, see
Section 5.1.1.4.2. Section 5.1.1.4.2.
If errors occur, they MUST be returned as a list in responses and If errors occur, they MUST be returned as a list in responses and
each Error contains the following information: each Error contains the following information:
Error-type: The specific error type. Values are TRANSPORT (0), RPC Error-type: The specific error type. Values are TRANSPORT (0), RPC
(1), PROTOCOL(2) or APPLICATION (3). (1), PROTOCOL(2) or APPLICATION (3).
Error-Tag: An error tag. Error-Tag: An error tag.
skipping to change at page 29, line 29 skipping to change at page 29, line 29
Error-Info: Any data required for the response. Error-Info: Any data required for the response.
| |
+-[Errors] <List> +-[Errors] <List>
| +-[(Enumeration) Error-Type ] | +-[(Enumeration) Error-Type ]
| +-[(String) Error-Tag ] | +-[(String) Error-Tag ]
| +-[(String) Error-App-Tag ] (O) | +-[(String) Error-App-Tag ] (O)
| +-[(String) Error-Message ] (O) | +-[(String) Error-Message ] (O)
| +-[Error-Info] (O) | +-[Error-Info] (O)
Figure 16: Error Information Model Figure 15: Error Information Model
Two Agent to Client notifications are supported. Two Agent to Client notifications are supported.
+-------------------------------+-----------------------------------+ +-------------------------------+-----------------------------------+
| Message | Description | | Message | Description |
+-------------------------------+-----------------------------------+ +-------------------------------+-----------------------------------+
| Configure-Result-Notification | An asynchronous notification from | | Configure-Result-Notification | An asynchronous notification from |
| | Agent to Client based upon a | | | Agent to Client based upon a |
| | previous Configure request. | | | previous Configure request. |
| Notify | An asynchronous notification from | | Notify | An asynchronous notification from |
skipping to change at page 30, line 38 skipping to change at page 30, line 38
| | returned. | | | returned. |
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
Table 3: Configure Edit Operations Table 3: Configure Edit Operations
5.1.1.2. Edit Operation 5.1.1.2. Edit Operation
Each Configure includes one or more edits. These edits include the Each Configure includes one or more edits. These edits include the
following information: following information:
Edit-Id: uniquely specifies the identifier of the edit within the Edit-Id: Uniquely specifies the identifier of the edit within the
operation. operation.
Edit-Type: specifies the type of operation (see Section 5.1.1.1). Edit-Type: Specifies the type of operation (see Section 5.1.1.1).
Command-Set: The Command-Set is a technology-specific bitset that Command-Set: The Command-Set is a technology-specific bitset that
allows for a single entity to be sent in an edit with multiple allows for a single entity to be sent in an edit with multiple
requested, technology specific sub-transactions to be completed. requested, technology specific sub-transactions to be completed.
It can also provide clarity for a request. For example, a It can also provide clarity for a request. For example, a
Mobility-Context could have the Home Network Prefix absent but it Mobility-Context could have the Home Network Prefix absent but it
is unclear if the Client would like the address to be assigned by is unclear if the Client would like the address to be assigned by
the Agent or if this is an error. Rather than creating a the Agent or if this is an error. Rather than creating a
specific command for assigning the IP a bit position in a specific command for assigning the IP, a bit position in a
Command-Set can be used to indicate Agent based IP assignment Command-Set can be used to indicate Agent based IP assignment
requests. requests.
Reference-Scope: If supported, specifies the Reference Scope (see Reference-Scope: If supported, specifies the Reference Scope (see
Section 5.1.1.3) Section 5.1.1.3)
Target: Specifies the Target node (Data node path or FPC Identity) Target: Specifies the Target node (Data node path or FPC Identity)
for the edit operation. This MAY be a resource, e.g. Mobility- for the edit operation. This MAY be a resource, e.g. Mobility-
Context, Descriptor-Template, etc., or a data node within a Context, Descriptor-Template, etc., or a data node within a
resource as specified by its path. resource as specified by its path.
Point: The absolute URL path for the data node that is being used as Point: The absolute URL path for the data node that is being used as
the insertion point, clone point or move point for the target of the insertion point, clone point or move point for the target of
this 'edit' entry. this 'edit' entry.
Where: Identifies where a data resource will be inserted, cloned to Where: Identifies where a data resource will be inserted, cloned to
or moved. Only allowed these for lists and lists of data nodes or moved. Only allowed these for lists and lists of data nodes
that are 'ordered-by user'. The values are 'before', 'after', that are 'ordered-by user'. The values are 'before', 'after',
'first', 'last' (default value). 'first', 'last' (default value).
Value The value used for this edit operation. Value The value used for this edit operation. In this message it
MUST NOT be a MONITOR entity.
| |
+-[Configure] +-[Configure]
| +-[Client-Id:] | +-[Client-Id:]
| +-[(Unsigned 32) Execution-Delay] | +-[(Unsigned 32) Execution-Delay]
| +-[Operation-Id:] | +-[Operation-Id:]
| +-[Edits:] <List> | +-[Edit:] <List>
| | +-[Edit-Id:] <L-Key> | | +-[Edit-Id:] <L-Key>
| | +-[(Enumeration) Edit-Type:] | | +-[(Enumeration) Edit-Type:]
| | +-[(BitSet) Command-Set] | | +-[(BitSet) Command-Set]
| | +-[(Enumeration) Reference-Scope] | | +-[(Enumeration) Reference-Scope]
| | +-[Target:] | | +-[Target:]
| | +-[Point] | | +-[Point]
| | +-[(Enumeration) Where] | | +-[(Enumeration) Where]
| | +-[Value] | | +-[Value]
Figure 17: Configure Request Figure 16: Configure Request
Edits sent to the Agent provided in an operation SHOULD be sent in Edits sent to the Agent provided in an operation SHOULD be sent in
the following order to avoid errors: the following order to avoid errors:
1. Action Templates 1. Action Templates
2. Descriptor Templates 2. Descriptor Templates
3. Rule Templates 3. Rule Templates
skipping to change at page 31, line 51 skipping to change at page 32, line 4
Edits sent to the Agent provided in an operation SHOULD be sent in Edits sent to the Agent provided in an operation SHOULD be sent in
the following order to avoid errors: the following order to avoid errors:
1. Action Templates 1. Action Templates
2. Descriptor Templates 2. Descriptor Templates
3. Rule Templates 3. Rule Templates
4. Policy Templates 4. Policy Templates
5. DPN Templates 5. DPN Templates
6. Mobility Contexts 6. Mobility Contexts
5.1.1.3. Reference Scope 5.1.1.3. 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. These scopes are defined references used in a configuration command. These scopes are defined
as: as:
o none - All entities have no references to other entities. o none - All edits have no references to other entities or within
edits.
o edit - All references are contained in the edit body, i.e. only o edit - All references are contained within each edit body (intra-
intra-operation references exist. edit/intra-operation)
o operation - All references exist in the operation (inter-edit/ o operation - All references exist in the operation (inter-edit/
intra-operation). intra-operation).
o storage - One or more references exist outside of the operation. o storage - One or more references exist outside of the operation.
A lookup to cache / storage is required. A lookup to 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.
An Agent that only accepts 'edit' or 'operation' reference scope An Agent that only accepts 'edit' or 'operation' reference scope
messages is referred to as 'stateless' as it has no direct memory of messages 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/DPNs. Even when an Agent supports all message types footprint Agents/DPNs. Even when an Agent supports all message types
an 'edit' or 'operation' scoped message can be processed quickly by an 'edit' or 'operation' scoped message can be processed quickly by
the Agent/DPN as it does not require storage access. the Agent/DPN as it does not require storage access.
Figure 18 shows an example containment hierarchy provided for all Figure 17 shows an example containment hierarchy provided for all
caches. caches.
+---------------+ +---------------+
| Global Cache | | Global Cache |
| (storage) | | (storage) |
+------+--------+ +------+--------+
| |
+----------------+ +----------------+
| | | |
+------+-----------+ +------+-----------+ +------+-----------+ +------+-----------+
skipping to change at page 33, line 26 skipping to change at page 33, line 26
| | | |
+---+-----------+ | +---+-----------+ |
| | | | | |
+------+------+ +------+------+ +------+------+ +------+------+ +------+------+ +------+------+
| Edit Cache | | Edit Cache | | Edit Cache | | Edit Cache | | Edit Cache | | Edit Cache |
| (edit) | | (edit) | | (edit) | | (edit) | | (edit) | | (edit) |
+-------------+ +-------------+ +-------------+ +-------------+ +-------------+ +-------------+
(no cache) (no cache)
Figure 18: Exemple Hierarchical Cache Figure 17: Example Hierarchical Cache
5.1.1.4. Operation Response 5.1.1.4. Operation Response
5.1.1.4.1. Immediate Response 5.1.1.4.1. Immediate Response
The Response MUST include the following: The Response MUST include the following:
Operation Identifier of the corresponding request. Operation Identifier of the corresponding request.
Global Status for the operation (see Table 1). Global Status for the operation (see Table 1).
A list of Edit results (described below). A list of Edit results (described below).
An edit response, Edit-Status, is comprised of the following: An edit response, Edit-Status, is comprised of the following:
Edit-Id: Edit Indentifier. Edit-Id: Edit Identifier.
Edit-Status: OK. Edit-Status: OK.
When the Edit-Status is OK the following values MAY be present When the Edit-Status is OK the following values MAY be present
Notify-Follows - A boolean indicator that the edit has been Notify-Follows - A boolean indicator that the edit has been
accepted by the Agent but further processing is required. A accepted by the Agent but further processing is required. A
Configure-Result-Notification will be sent once the processing Configure-Result-Notification will be sent once the processing
has succeeded or failed. has succeeded or failed.
Subsequent-Edits: This is a list of Edits that were required to Subsequent-Edits-List: This is a list of Edits that were
fulfill the request. It follows the edit request semantics required to fulfill the request. It follows the edit request
(see Section 5.1.1.2). semantics (see Section 5.1.1.2).
Errors: When the Edit-Status is ERROR the following values are Errors-List: When the Edit-Status is ERROR the following values
present. See Table 1 for details. are present. See Table 1 for details.
The response will minimally contain an Edit-Status implying 'OK' or a The response will minimally contain an Edit-Status implying 'OK' or a
list of errors. list of errors.
| |
+-[Operation-Id:] +-[Operation-Id:]
+-[Result-Status:] +-[Result-Status:]
+-[Errors] <List> +-[Errors] <List>
| +-[(Enumeration) Error-Type:] | +-[(Enumeration) Error-Type:]
| +-[(String) Error-Tag:] | +-[(String) Error-Tag:]
skipping to change at page 34, line 43 skipping to change at page 34, line 43
| | +-[(Enumeration) Where] | | +-[(Enumeration) Where]
| | +-[Value] | | +-[Value]
| +-[Errors] <List> | +-[Errors] <List>
| | +-[(Enumeration) Error-Type:] | | +-[(Enumeration) Error-Type:]
| | +-[(String) Error-Tag:] | | +-[(String) Error-Tag:]
| | +-[(String) Error-App-Tag] | | +-[(String) Error-App-Tag]
| | +-[(String) Error-Message] | | +-[(String) Error-Message]
| | +-[Error-Info] | | +-[Error-Info]
| |
Figure 19: Configure Operation Response Figure 18: Configure Operation Response
5.1.1.4.2. Asynchronous Notification 5.1.1.4.2. Asynchronous Notification
A Configure-Result-Notification occurs after the Agent has completed A Configure-Result-Notification occurs after the Agent has completed
processing related to a Configure request. It is an asynchronous processing related to a Configure request. It is an asynchronous
communication from the Agent to the Client. communication from the Agent to the Client.
It is identical to the immediate response with the exception that the It is identical to the immediate response with the exception that the
Notify-Follows, if present, MUST be false. As this value is Notify-Follows, if present, MUST be false. As this value is
unnecessary it SHOULD be ommitted. unnecessary it SHOULD be omitted.
5.1.1.5. Reserved Identities 5.1.1.5. Reserved Identities
Several identities are reserved in the Policy Information Model and Several identities are reserved in the Policy Information Model and
Mobility-Context to faciliate specfic uses cases. Mobility-Context to facilitate specific uses cases.
Agents and tenants express their support for descriptors and actions Agents and tenants express their support for descriptors and actions
using the following Key patterns using the following Key patterns
supported-<descriptor template name> indicates a support for the supported-<descriptor template name> indicates a support for the
descriptor template as defined in its original specification. For descriptor template as defined in its original specification. For
example "base-rfc5777classifier" is a Descriptor Template that example "supported-rfc5777classifier" is a Descriptor Template
conforms to the rfc5777-classifier (Figure 28) as defined in this that conforms to the rfc5777-classifier (Figure 31) as defined in
document. this document.
supported-<action template name> indicates a support for the supported-<action template name> indicates a support for the
action template as defined in its original specification. action template as defined in its original specification.
"base-rule" is comprised of all base descriptors using an 'or' "base-rule" is comprised of all base descriptors using an 'or'
Descriptor-Match-Type and all Actions in no specific order. Descriptor-Match-Type and all Actions in no specific order.
"base-template" is comprised of the base rule. "base-template" is comprised of the base rule.
"base-template" can be used to determine supported Action and "base-template" can be used to determine supported Action and
Descriptor Templates. It can also be used to support an open Descriptor Templates. It can also be used to support an open
template where any specific Descriptors and Actions can be applied, template where any specific Descriptors and Actions can be applied,
however, depending upon the Order of Actions it is likely to produce however, depending upon the Order of Actions it is likely to produce
undesirable results. undesirable results.
One use case is supported via reservation of specific DPN-Keys: One use case is supported via reservation of specific DPN-Keys:
Requested policies are those that the Client would like to be Requested policies are those that the Client would like to be
assigned to a DPN. The naming convention is similar to those used assigned to a DPN within a Mobility-Context. The naming
for DPN Assignment via an Agent. convention is similar to those used for DPN Assignment via an
Agent.
"Requested" is a Key that represents requested policies which "Requested" is a Key that represents requested policies which
have not been assigned to a specific DPN. No Role is assigned have not been assigned to a specific DPN. No Role is assigned
to the DPN. to the DPN.
"Requested-<Role>" represents requested policies that have not "Requested-<Role>" represents requested policies that have not
been assigned to a DPN and can only be assigned to DPNs that been assigned to a DPN and can only be assigned to DPNs that
fulfill the specified Role. fulfill the specified Role.
It is possible to have policies in the "Requested" DPN that do not It is possible to have policies in the "Requested" DPN that do not
skipping to change at page 36, line 42 skipping to change at page 36, line 42
information in a single or multiple Notify messages. information in a single or multiple Notify messages.
If the Monitor configuration associated with a Notify can be If the Monitor configuration associated with a Notify can be
deferred, then the Notify MAY be bundled with other messages back to deferred, then the Notify MAY be bundled with other messages back to
the Agent even if this results in a delay of the Notify. the Agent even if this results in a delay of the Notify.
The Monitor messages use the following data: The Monitor messages use the following data:
Monitor-Key: Monitor Key. Monitor-Key: Monitor Key.
Monitor: A Monitor configuration (see Section 4.9.8). Monitor: A Monitor configuration (see Section 4.9.7).
Send-Data: An indicator that specifies that the final value MUST be Send-Data: An indicator that specifies that the final value MUST be
sent as a notification from the Agent. sent as a notification from the Agent.
| |
+-[Register-Monitors] +-[Register-Monitor]
| +-[Client-Id:] | +-[Client-Id:]
| +-[(Unsigned 32) Execution-Delay] | +-[(Unsigned 32) Execution-Delay]
| +-[Operation-Id:] | +-[Operation-Id:]
| +-[Monitors] <List> | +-[Monitor:] <List>
| | +-[Extensible:] | | +-[Extensible:]
| | +-[Monitor-Key:] <U-Key> | | +-[Monitor-Key:] <U-Key>
| | +-[Target:] | | +-[Target:]
| | +-[Binding-Information]
| | +-[Deferrable] | | +-[Deferrable]
| | +-[Configuration:] | | +-[Configuration:]
| |
+-[Deregister-Monitors] +-[Deregister-Monitor]
| +-[Client-Id:] | +-[Client-Id:]
| +-[(Unsigned 32) Execution-Delay] | +-[(Unsigned 32) Execution-Delay]
| +-[Operation-Id:] | +-[Operation-Id:]
| +-[Monitors:] <List> | +-[Monitor:] <List>
| | +-[Monitor-Key:] <U-Key> | | +-[Monitor-Key:] <U-Key>
| | +-[(Boolean) Send-Data ~ False] | | +-[(Boolean) Send-Data ~ False]
| |
+-[Deregister-Monitors] +-[Probe]
| +-[Client-Id:] | +-[Client-Id:]
| +-[(Unsigned 32) Execution-Delay] | +-[(Unsigned 32) Execution-Delay]
| +-[Operation-Id:] | +-[Operation-Id:]
| +-[Monitor-Key:] <List> | +-[Monitor-Key:] <List>
Figure 20: Monitor Messages Figure 19: Monitor Messages
5.1.2.1. Asynchronous Notification 5.1.2.1. Asynchronous Notification
A Monitor Report can be sent as part of de-registration, a trigger A Monitor Report can be sent as part of de-registration, a trigger
based upon a Monitor Configuration or a Probe. A Report is comprised based upon a Monitor Configuration or a Probe. A Report is comprised
of the Monitor Key the report applies to, the Trigger for the report, of the Monitor Key the report applies to, the Trigger for the report,
a timestamp of when the report's' associated event occurs and data a timestamp of when the report's associated event occurs and data,
that is specific to the monitored value's type. Report-Value, that is specific to the monitored value's type.
Triggers include but are not limited to Triggers include but are not limited to
o Subscribed Event occurred o Subscribed Event occurred
o Low Threshold Crossed o Low Threshold Crossed
o High Threshold Crossed o High Threshold Crossed
o Periodic Report
o Periodic Report
o Scheduled Report o Scheduled Report
o Probe o Probe
o Deregistration Final Value o Deregistration Final Value
o Monitoring Suspended o Monitoring Suspended
o Monitoring Resumed o Monitoring Resumed
o DPN Availabile o DPN Available
o DPN Unavailable o DPN Unavailable
Multiple Reports are sent in a Notify message. Each Notify is Multiple Reports are sent in a Notify message. Each Notify is
comprised of unique Notification Identifier from the Agent and comprised of unique Notification Identifier from the Agent and
timestamp indicating when the notification was created. timestamp indicating when the notification was created.
| |
+-[ Notify ] +-[ Notify ]
| +-[(Unsigned 32) Notification-Identifier:] | +-[(Unsigned 32) Notification-Identifier:]
| +-[Timestamp:] | +-[Timestamp:]
| +-[Report:] <List> | +-[Report:] <List>
| | +-[Trigger:] | | +-[Trigger:]
| | +-[Monitor-Key:] | | +-[Monitor-Key:]
| | +-[Value] | | +-[Report-Value]
Figure 21: Monitor Messages Figure 20: Monitor Messages
5.2. Protocol Operation 5.2. Protocol Operation
Please note that JSON is used to represent the information in Figures Please note that JSON is used to represent the information in Figures
in this section but any over the wire representation that accurately in this section but any over the wire representation that accurately
reflects the information model MAY be used. reflects the information model MAY be used.
5.2.1. Simple RPC Operation 5.2.1. DPN Selection
An FPC Client and Agent MUST identify themselves using the Client In order to assign a DPN to a Mobility Context, the Client or Agent
Identifier and Agent Identifier respectively to ensure that for all requires topology information. The Service-Group provides
transactions a recipient of an FPC message can unambiguously identify information, e.g. function, role, protocol, features and
configuration, to determine suitable DPN interfaces.
Consider a Client attempting to select DPN interfaces that are served
by a single Agent. In this example interfaces are present with
different protocols, settings and features as shown in the following
figure.
"topology-information-model" : {
"dpn" : [ {
"dpn-key" : "dpn1",
"interface" : [ {
"interface-key" : "ifc1",
"role" : "lma",
"protocol" : [ "pmip" ],
"interface-configuration" : [ {
"index" : 0,
"setting" : [ "optionA" : "OFF" ]
} ]
},{
"interface-key" : "ifc2",
"role" : "lma",
"protocol" : [ "pmip" ],
"interface-configuration" : [ {
"index" : 0,
"setting" : [ "optionC" : "OFF" ]
} ]
},{
"interface-key" : "ifc2-b",
"role" : "mag",
"protocol" : [ "pmip" ]
} ] },
{
"dpn-key" : "dpn2",
"interface" : [ {
"interface-key" : "ifc1",
"role" : "mag",
"protocol" : [ "pmip" ],
"interface-configuration" : [ {
"index" : 0,
"settings" : [ "optionA" : "OFF", "optionB" : "ON" ]
} ]
} ] }
],
...
},
"service-group" : [
{ "service-group-key" : "group1",
"service-group-name" : "Anchors-OptionA-OFF",
"role-key" : "lma",
"protocol" : [ "pmip" ],
"service-group-configuration" : [ {
"index" : 0,
"setting" : [ "optionA" : "OFF" ]
} ],
"dpn" : [
{ "dpn-key" : "dpn1",
"referenced-interface" : [ { "interface-key" : "ifc1" } ] }
]
},{ "service-group-key" : "group2",
"service-group-name" : "Anchors",
"role-role" : "lma",
"protocol" : [ "pmip" ],
"dpn" : [
{ "dpn-key" : "dpn1",
"referenced-interface" : [ { "interface-key" : "ifc2" } ] }
]
},{ "service-group-key" : "group3",
"service-group-name" : "MAGs",
"role-role" : "mag",
"protocol" : [ "pmip" ],
"dpn" : [
{ "dpn-key" : "dpn2",
"referenced-interface" : [ { "interface-key" : "ifc1" } ] },
{ "dpn-key" : "dpn1",
"referenced-interface" : [ { "interface-key" : "ifc2-b" } ] }
]
}
]
NOTE - A Setting is, in this example, a list of string attributes in
a Configuration.
Figure 21: Monitor Messages
Two DPNs are present. The first, dpn1, has 3 interfaces. Two
support the LMA role and both have settings. The third supports the
MAG function. The second DPN, dpn2, provides a single interface with
the MAG function.
Three ServiceGroups are presented. The first provides the PMIP
protocol and LMA role. It also has a setting, OptionA, that is OFF
and only contains ifc1 from dpn1.
The second group is comprised of interfaces that support the PMIP
protocol and LMA function. It only contains ifc2 from dpn1. An
interface that has setting(s) or feature(s) that must appear in a
ServiceGroup SHOULD NOT appear in ServiceGroups that do not have
those setting(s) or feature(s) present. Thus, ifc1 of dpn1 should
not be present in this second Service-Group.
A third group is comprised of interfaces that support the MAG
function of the LMA protocol. It contains the MAG interfaces form
both dpn1 and dpn2.
Given the task to find a LMA that supports the PMIP protocol the
Client can determine that dpn1 is its only option and, depending on
its requirement of OptionA, can appropriately determine which
interface to select.
5.2.2. Policy Creation and Installation
A Policy must be installed upon an Agent in order to install policies
on the selected dpn(s). This requires construction of the Action(s),
Descriptor(s) and Rule(s) used by the Policy.
The CONFIGURE message permits editing all information elements except
monitors. The following figure shows use of a CONFIGURE message to
install policy information on the Agent.
+-------Router--------+
+-----------+ |+-------+ +---------+|
+------+ +------+ +-----+ FPC | | FPC | | Anchor |
|MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN |
+------+ +------+ +-----+-------+ +-------+ +---------+
| | |---(1)--Configure-------->| |
| | "configure" : { | |
| | "client-id" : 0, | |
| | "operation-id" : 0, | |
| | "edit" : [ { | |
| | "edit-id" : 0, | |
| | "edit-type" : "create", | |
| | "target" : "/policy-information-model/
/descriptor-template", |
| | "value" : { |
| | "descriptor-template-key" : "desc1", |
| | "descriptor-type" : "all-traffic" } |
| | }, { |
| | "edit-id" : 1, | |
| | "edit-type" : "create", | |
| | "target" : "/policy-information-model/
/action-template", |
| | "value" : { |
| | "action-template-key" : "action1", |
| | "action-type" : "drop" } |
| | }, { |
| | "edit-id" : 2, | |
| | "edit-type" : "create", | |
| | "target" : "/policy-information-model/
/rule-template", |
| | "value" : { |
| | "rule-template-key" : "deny-all", |
| | "descriptor-match-type" : "and", |
| | "descriptor-configuration" : [{ |
| | "descriptor-template-key" : "all" }],|
| | "action-configuration" : [{ |
| | "action-template-key" : "deny", |
| | "action-order" : 0 }] |
| | }, { |
| | "edit-id" : 3, | |
| | "edit-type" : "create", | |
| | "target" : "/policy-information-model/
/policy-template", |
| | "value" : { |
| | "policy-template-key" : "policy1", |
| | "entity-state" : "configured", |
| | "rule-template" : [ { |
| | "rule-template-key" : "deny-all", |
| | "precedence" : 0 } ] |
| | } } ] } |
| | |<---(2)- Response --------| |
| | | { | |
| | | "agent-id" : "agent1"," | |
| | | "operation-id" : 0, | |
| | | "result-status" : "ok" | |
| | | } | |
| | | | |
Figure 22: Example Policy Installation (focus on FPC reference point)
In this example a Descriptor "all-traffic" Template and an Action,
"drop", Template are both empty Templates. The "deny-all" Rule
Template is comprised of the action and descriptor. The Rule is
included in "policy1". The policy's status is "Configured" as it is
a complete policy ready for immediate use. The policy could be set
as "Active" if the Client intends to use it upon immediate
installation in a DPN.
Installation of the policy on dpn1 is shown in the following Figure.
The Policy-Status is set to "Active" to make it immediately usable.
Leaving the status as Configured would permit its installation on the
DPN without an ability to use it in a Mobility Context. Such a use
case is often referred to as policy pre-configuration.
+-------Router--------+
+-----------+ |+-------+ +---------+|
+------+ +------+ +-----+ FPC | | FPC | | Anchor |
|MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN |
+------+ +------+ +-----+-------+ +-------+ +---------+
| | |---(1)--Configure-------->| |
| | "configure" : { | |
| | "client-id" : 0, | |
| | "operation-id" : 1, | |
| | "edit" : [ { | |
| | "edit-id" : 0, | |
| | "edit-type" : "create", | |
| | "target" : "/topology-information-model/
/dpn/dpn1/dpn-policy-configuration", |
| | "value" : { |
| | "policy-template-key" : "policy1", |
| | "policy-status" : "active" } } ] } |
| | |<---(2)- Response --------|-policy--->|
| | | { | install |
| | | "agent-id" : "agent1"," | |
| | | "operation-id" : 1, | |
| | | "result-status" : "ok" | |
| | | } | |
| | | | |
Figure 23: Example Policy Installation (focus on FPC reference point)
This message uses an edit type of "create" to add the policy template
directly to the installed DPN policy set.
5.2.3. Simple RPC Operation
A Client and Agent MUST identify themselves using the Client
Identifier and Agent Identifier respectively to ensure that, for all
transactions, a recipient of a FPC message can unambiguously identify
the sender of the FPC message. the sender of the FPC message.
A Client MAY direct the Agent to enforce a rule in a particular DPN A Client MAY direct the Agent to enforce a rule in a particular DPN
by including a DPN Key value in a Mobility Context. Otherwise the by including a DPN Key value in a Mobility Context. Otherwise the
Agent selects a suitable DPN to enforce one or more portions of a Agent selects a suitable DPN to enforce one or more portions of a
Mobility Context and notifies the Client about the selected DPN(s) Mobility Context and notifies the Client about the selected DPN(s)
using the DPN Identifier(s). using DPN Identifier(s).
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 edit status as well as the Agent. The response must include all edit status as well as
subsequent edits, which indicates the result of processing the subsequent edits, which indicates the result of processing the
message, as part of the Configure response. In case the processing message, as part of the Configure response. In case the processing
of the message results in a failure, the Agent sets the global status of the message results in a failure, the Agent sets the global
Error-Type and Error-Tag accordingly and MAY clear the entity, e.g. status, Error-Type and Error-Tag accordingly and MAY clear the
Context or Configurable-Policy, which caused the failure, in the entity, e.g. Mobility-Context, which caused the failure, in the
response. 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 a Notify-Follows indication with optional Subsequent-Edit(s) with a Notify-Follows indication with optional Subsequent-Edit(s)
containing the partially completed entity modifications. When a containing the partially completed entity modifications. When a
Notify-Follows indication is indicated, the Agent will, upon Notify-Follows indication is sent in a response, the Agent will, upon
completion or failure of the operation, respond with an asynchronous completion or failure of the operation, respond with an asynchronous
Configuration-Result-Notification to the Client. Configuration-Result-Notification to the Client.
A Client MAY add a property to a Mobilty-Context without providing A Client MAY add a property to a Mobility-Context without providing
all required details of the attribute's value. In such case the all required details of the attribute's value. In such case the
Agent SHOULD determine the missing details and provide the completed Agent SHOULD determine the missing details and provide the completed
property description, via Subsequent-Edit(s) back to the Client. If property description, via Subsequent-Edit(s), back to the Client. If
the processing will take too long or based upon Agent configuration, the processing will take too long or based upon Agent configuration,
the Agent MAY respond with an OK for the Edit that indicates a the Agent MAY respond with an OK for the Edit that indicates a
Notify-Follows and also includes Subsequent-Edit(s) containing the Notify-Follows and also includes Subsequent-Edit(s) containing the
partially completed entity edits. partially completed entity edits.
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 ]and sets the Edit Result to Error and provides an value cleared, sets the Edit Result to Error and provides an Error-
Error-Type and Error-Tag. As example, the Control-Plane needs to Type and Error-Tag. As example, the Control-Plane needs to setup a
setup a tunnel configuration in the Data-Plane but has to rely on the tunnel configuration in the Data-Plane but has to rely on the Agent
Agent to determine the tunnel endpoint which is associated with the to determine the tunnel endpoint which is associated with the DPN
DPN that supports the Mobility-Context. The Client adds the tunnel that supports the Mobility-Context. The Client adds the tunnel
property attribute to the FPC message and clears the value of the property attribute to the FPC message and clears the value of the
attribute (e.g. IP address of the local tunnel endpoint). The Agent attribute (e.g. IP address of the local tunnel endpoint). The Agent
determines the tunnel endpoint and includes the completed tunnel determines the tunnel endpoint and includes the completed tunnel
property in its response to the Client in a Subsequent-Edit entry. property in its response to the Client in a Subsequent-Edit entry.
Figure 22 illustrates an exemplary session life-cycle based on Proxy Figure 24 illustrates an exemplary session life-cycle based on Proxy
Mobile IPv6 registration via MAG Control-Plane function 1 (MAG-C1) Mobile IPv6 registration via MAG Control-Plane function 1 (MAG-C1)
and handover to MAG Control-Plane function 2 (MAG-C2). Edge DPN1 and handover to MAG Control-Plane function 2 (MAG-C2). Edge DPN1
represents the Proxy CoA after attachment, whereas Edge DPN2 serves represents the Proxy CoA after attachment, whereas Edge DPN2 serves
as Proxy CoA after handover. As exemplary architecture, the FPC as Proxy CoA after handover. As exemplary architecture, the FPC
Agent and the network control function are assumed to be co-located Agent and the network control function are assumed to be co-located
with the Anchor-DPN, e.g. a Router. with the Anchor-DPN, e.g. a Router.
The Target of the second request uses the Mobility-Context by name. The Target of the second request uses the Mobility-Context by name.
Alternatively, the Target could have included the DPN-Key and Policy- Alternatively, the Target could have included the DPN-Key and Policy-
Key to further reduce the amount of information exchnanged. Setting Key to further reduce the amount of information exchanged. Setting
the Target's value to the most specific node SHOULD be followed the Target's value to the most specific node SHOULD be followed
whenever practicle. whenever practical.
+-------Router--------+ +-------Router--------+
+-----------+ |+-------+ +---------+|
+------+ +------+ +-----+ FPC | | FPC | | Anchor | +-----------+ |+-------+ +---------+|
|MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | +------+ +------+ +-----+ FPC | | FPC | | Anchor |
+------+ +------+ +-----+-------+ +-------+ +---------+ |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN1 |
+------+ +------+ +-----+-------+ +-------+ +---------+
[MN attach] | | | | [MN attach] | | | |
|-------------PBU----->| | | |-------------PBU----->| | |
| | |---(1)--Configure-------->| | | | |---(1)--Configure-------->| |
| | "configure" : { | | | | "configure" : { | |
| | "client-id" : 0, | | | | "client-id" : 0, | |
| | "operation-id" : 0, | | | | "operation-id" : 3, | |
| | "edit" : [ | | | | "edit" : [ | |
| | "edit-id" : 0, | | | | "edit-id" : 0, | |
| | "edit-type" : "create", | | | | "edit-type" : "create", | |
| | "target" : "/mobility-context", | | | "target" : "/mobility-context", |
| | "value" : { | | | "value" : { |
| | "mobility-context-key" : "ctxt1", | | | "mobility-context-key" : "ctxt1", |
| | "delegating-ip-prefix" : [ <HNP> ], | | | "delegating-ip-prefix" : [ <HNP> ], |
| | "dpn" : "[ { | | | "dpn" : [ { |
| | "dpn-key" : "DPN1", | | | "dpn-key" : "DPN1", |
| | "service-data-flow" : [ | | "role" : "lma", |
| | "identifier" : 0, | | "service-data-flow" : [ {
| | "flow-settings" : [ | | "identifier" : 0,
| | ... | | "interface" : [ "interface-key" : "ifc1" ],
| | {"policy-key" : "dl-tunnel-with-qos", | | "service-data-flow-policy-configuration" :[
| | "qos-template" : <QOS Settings...>, | | {"policy-template-key" :
| | ... "dl-tunnel-with-qos",
| | "tunnel" : <DL tunnel info...> }, | | "policy-status" : "active",
| | {"policy-key" : "ul-tunnel", | | "policy-configuration" : [
| | ... | | {"index" : 0,
| | "tunnel" : <UL tunnel info...> } ] | | "qos-template" : <QOS Settings...>},
| | ] } ] } ] } | | | | {"index" : 1,
| | "tunnel" : <DL tunnel info...>},
| | {"policy-template-key" : "ul-tunnel",
| | "policy-status" : "active",
| | "policy-configuration" : [
| | {"index" : 1,
| | "tunnel" : <UL tunnel info...>}] }]
| | } ] } ] } ] } ] } | |
| | | |--tun1 up->| | | | |--tun1 up->|
| | | | | | | | | |
| | | |--tc qos-->| | | | |--tc qos-->|
| | | | | | | | | |
| | |<---(2)- Response --------|-route add>| | | |<---(2)- Response --------|-route add>|
| | | { | | | | | { | |
| | | "agent-id" : "agent1"," | | | | | "agent-id" : "agent1"," | |
| | | "operation-id" : 0, | | | | | "operation-id" : 3, | |
| | | "result-status" : "ok", | | | | | "result-status" : "ok", | |
| | | "edit-status" : [ | | | | | } | |
| | | "edit-id" : 0, | |
| | | "edit-status" : "ok" | |
| | | ] } | |
| | | | | | | | | |
|<------------PBA------| | | |<------------PBA------| | |
| | | | | | | | | |
| +----+ | | | | | +----+ | | | |
| |Edge| | | | | | |Edge| | | | |
| |DPN1| | | | | | |DPN1| | | | |
| +----+ | | | | | +----+ | | | |
| | | | | |
| |-=======================================================-| | |-=======================================================-|
| | | | | | | |
| [MN handover] | | | | [MN handover] | | |
| |---PBU ---->| | | | |---PBU ---->| | |
| | |--(3)- CONFIG(MODIFY)---->| | | | |--(3)- CONFIG(MODIFY)---->| |
| | "configure" : { |-tun1 mod->| | | "configure" : { |-tun1 mod->|
| | "client-id" : 0, | | | | "client-id" : 0, | |
| | "operation-id" : 1, | | | | "operation-id" : 4, | |
| | "edit" : [ | | | | "edit" : [ | |
| | "edit-id" : 0, | | | | "edit-id" : 0, | |
| | "edit-type" : "merge", | | | | "edit-type" : "merge", | |
| | "target" : "/mobility-context/ctxt1", | | | "target" : "/mobility-context/ctxt1", |
| | "value" : { | | | | "value" : { |
| | "dpn-set" : "[ { | | | "mobility-context-key" : "ctxt1", |
| | "dpn-key" : "DPN1", | | | "dpn" : "[ { |
| | "service-data-flow" : [ | | "dpn-key" : "DPN1", |
| | "identifier" : 0, | | "service-data-flow" : [ {
| | "flow-settings" : [ | | "identifier" : 0,
| | ... | | "service-data-flow-policy-configuration":[
| | {"policy-key" : "dl-tunnel-with-qos", | | {"policy-template-key" :
| | "tunnel" : <NEW tunnel info...> } ] "dl-tunnel-with-qos",
| | } ] } ] } | | | | "policy-configuration" : [
| | {"index" : 1,
| | "tunnel" : <NEW tunnel info...>}]}]
| | } ] } ] } ] } | |
| |<--PBA------| | | | |<--PBA------| | |
| | | |-tun1 mod->| | | | |-tun1 mod->|
| | |<---(4)- OK --------------| | | | |<---(4)- OK --------------| |
| | | { | | | | | { | |
| | | "agent-id" : "agent1"," | | | | | "agent-id" : "agent1"," | |
| | | "operation-id" : 1, | | | | | "operation-id" : 4, | |
| | | "result-status" : "ok", | | | | | "result-status" : "ok", | |
| | | "edit-status" : [ | | | | | } | |
| | | "edit-id" : 0, | |
| | | "edit-status" : "ok" | |
| | | ] } | |
| | +----+ | | | | | +----+ | | |
| | |Edge| | | | | | |Edge| | | |
| | |DPN2| | | | | | |DPN2| | | |
| | +----+ | | | | | +----+ | | |
| | | | | | | | | | | |
| | |-============================================-| | | |-============================================-|
| | | | | | | | | |
Figure 22: Example Message Sequence (focus on FPC reference point) Figure 24: Single Agent with Handover (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 Mobility-Context to the DPN to treat the
(1) and includes a Context Identifier (ctxt1) in the Configure MN's traffic (1) and includes a Mobility-Context-Key (ctxt1) in the
command. The LMA-C identifies the selected Anchor DPN by including Configure command. The LMA-C identifies the selected Anchor DPN by
the associated DPN identifier. including the associated DPN identifier.
The LMA-C adds policy template properties during the creation of the The LMA-C adds policy template properties during the creation of the
new Mobility-Context. One policy, "dl-tunnel-with-qos", is an new Mobility-Context. One policy, "dl-tunnel-with-qos", is an
example template that permits tunnel forwarding of traffic destined example template that permits tunnel forwarding of traffic destined
to the MN's HNP, i.e. downlink traffic, with optional QoS parameters. to the MN's HNP, i.e. downlink traffic, with optional QoS parameters.
Another policy, "ul-tunnel", provides a simple uplink anchor Another policy, "ul-tunnel", provides a simple uplink anchor
termination template where the uplink tunnel information is provided. termination template where uplink tunnel information is provided.
The downlink tunnel information specifies the destination endpoint The downlink tunnel information specifies the destination endpoint
(Edge DPN1). (Edge DPN1).
At reception of the Mobility-Context, the FPC Agent utilizes local Upon reception of the Mobility-Context, the FPC Agent utilizes local
configuration commands to create the tunnel (tun1) as well as the configuration commands to create the tunnel (tun1) as well as the
traffic control (tc) to enable QoS differentiation. After traffic control (tc) to enable QoS differentiation. After
configuration has been completed, the Agent applies a new route to configuration has been completed, the Agent applies a new route to
forward all traffic destined to the MN's HNP specified as a property forward all traffic destined to the MN's HNP specified as a property
in the Mobility-Context and applied the configured tunnel interface in the Mobility-Context and applied the configured tunnel interface
(tun1). (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 endpoint in the downlink as required. to represent the new tunnel endpoint in the downlink as required.
skipping to change at page 43, line 4 skipping to change at page 47, line 48
update the downlink tunnel endpoint from Edge DPN1 to Edge DPN2. update the downlink tunnel endpoint from Edge DPN1 to Edge DPN2.
Upon reception of the Configure message, the Agent applies updated Upon reception of the Configure message, the Agent applies updated
tunnel property to the local configuration and responds to the Client tunnel property to the local configuration and responds to the Client
(4). (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 |
+------+ +------+ +-----+-------+ +-------+ +---------+ +------+ +------+ +-----+-------+ +-------+ +---------+
[MN detach] | | | |
[MN attach] | | | |
|-------------PBU----->| | | |-------------PBU----->| | |
| | |---(1)--Configure-------->| | | | |---(1)--Configure-------->| |
| | "configure" : { | | | | "configure" : { | |
| | "client-identifier" : 0, | | | | "client-identifier" : 0, | |
| | "operation-id" : 3, | | | | "operation-id" : 5, | |
| | "edits" : [ | | | | "edits" : [ | |
| | "edit-id" : 0, | | | | "edit-id" : 0, | |
| | "edit-type" : "merge", | | | | "edit-type" : "merge", | |
| | "target" : "/mobility-context/ctxt1 | | | "target" : "/mobility-context/ctxt1 |
| | /dpn/DPN1/service-data-flow/0 | | | /dpn/DPN1/service-data-flow/0 |
| | /flow-settings/dl-tunnel-with-qos | | | /service-data-flow-policy-
| | /0" | configuration/dl-tunnel-with-qos/1"
| | "value" : { | | | | "value" : { | |
| | "tunnel" : null | | | | "tunnel" : null | |
| | } ] } | | | | } ] } | |
|<------------PBA------| |--tun1 ->| |<------------PBA------| |--tun1 ->|
| | | | down | | | | | down |
| | | | | | | | | |
| | |<---(2)- Response --------| | | | |<---(2)- Response --------| |
| | | { | | | | | { | |
| | | "agent-id" : "agent1"," | | | | | "agent-id" : "agent1"," | |
| | | "operation-id" : 3, | | | | | "operation-id" : 5, | |
| | | "result-status" : "ok", | | | | | "result-status" : "ok", | |
| | | "edit-status" : [ | | | | | } | |
| | | "edit-id" : 0, | |
| | | "edit-status" : "ok" | |
| | | ] } | |
| | | | | | | | | |
| | [ MinDelayBeforeBCEDelete expires ] | | | | [ MinDelayBeforeBCEDelete expires ] | |
| | | | | | | | | |
| | |---(3)--Configure-------->|-- tun1 -->| | | |---(3)--Configure-------->|-- tun1 -->|
| | "configure" : { | delete | | | "configure" : { | delete |
| | "client-identifier" : 0, | | | | "client-identifier" : 0, | |
| | "operation-id" : 4, | | | | "operation-id" : 6, | |
| | "edits" : [ | | | | "edits" : [ | |
| | "edit-id" : 0, | | | | "edit-id" : 0, | |
| | "edit-type" : "delete", | | | | "edit-type" : "delete", | |
| | "target" : "/mobility-context/ctxt1" | | | "target" : "/mobility-context/ctxt1" |
| | ] } | | | | ] } | |
| | | | | | | | | |
| | |<---(4)- Response --------| | | | |<---(4)- Response --------| |
| | | { | | | | | { | |
| | | "agent-id" : "agent1"," | | | | | "agent-id" : "agent1"," | |
| | | "operation-id" : 4, | | | | | "operation-id" : 6, | |
| | | "result-status" : "ok", | | | | | "result-status" : "ok", | |
| | | "edit-status" : [ | | | | | } | |
| | | "edit-id" : 0, | |
| | | "edit-status" : "ok" | |
| | | ] } | |
| | | |-- route ->| | | | |-- route ->|
| | | | remove | | | | | remove |
| | | | | | | | | |
Figure 23: Exemplary Message Sequence (focus on FPC reference point) Figure 25: Single Agent with Deletion (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
lifetime 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
Mobility-Context to delete the tunnel information. Upon reception of Mobility-Context to delete the tunnel information. Upon reception of
the Configure message, the Agent removes the tunnel configuration and the 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 received 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).
When a multi-DPN Agent is used the DPN list permits several DPNs to When a multi-DPN Agent is used the DPN list permits several DPNs to
be provisioned in a single message for the single Mobility-Conext. be provisioned in a single message for the single Mobility-Context.
+-----------+ +-------+ +---------+ +-----------+ +-------+ +---------+
+------+ +------+ +-----+ FPC | | FPC | | Anchor | +------+ +------+ +-----+ FPC | | FPC | | Anchor |
|MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN1 | |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN1 |
+------+ +------+ +-----+-------+ +-------+ +---------+ +------+ +------+ +-----+-------+ +-------+ +---------+
[MN attach] | | | | [MN attach] | | | |
|-------------PBU----->| | | |-------------PBU----->| | |
| | |---(1)--Configure-------->| | | | |---(1)--Configure-------->| |
| | "configure" : { |--tun1 up->| | | "configure" : { |--tun1 up->|
| | "client-identifier" : 0, | | | | "client-id" : 0, | |
| | "operation-id" : 0, | | | | "operation-id" : 0, | |
| | "edit" : [ |--tc qos-->| | | "edit" : [ |--tc qos-->|
| | "edit-id" : 0, | | | | "edit-id" : 0, | |
| | "edit-type" : "create", | | | | "edit-type" : "create", | |
| | "target" : "mobility-context", | | | "target" : "/mobility-context", |
| | "value" : { | | | "value" : { |
| | "mobility-context-key" : "ctxt1", | | | "mobility-context-key" : "ctxt1", |
| | "delegating-ip-prefix" : [ <HNP> ], | | | "delegating-ip-prefix" : [ <HNP> ], |
| | "dpn" : "[ { | | | "dpn" : [ { |
| | "dpn-key" : "DPN1", | | | "role" : "lma", |
| | "service-data-flow" : [ | | "dpn-key" : "DPN1", |
| | "identifier" : 0, | | "service-data-flow" : [ {
| | "flow-settings" : [ | | "identifier" : 0,
| | ... | | "interface" : [ "interface-key" : "ifc1" ],
| | "service-data-flow-policy-configuration" :[
| | {"policy-key" : "dl-tunnel-with-qos", | | {"policy-template-key" :
| | "qos-template" : <QOS Settings...>, "dl-tunnel-with-qos",
| | ... | | "policy-status" : "active",
| | "tunnel" : <DL tunnel info...> }, | | "policy-configuration" : [
| | {"policy-key" : "ul-tunnel", | | {"index" : 0,
| | ... | | "qos-template" : <QOS Settings...>},
| | "tunnel" : <UL tunnel info...> } ] | | {"index" : 1,
| | "dpn-key" : "DPN2", | | | "tunnel" : <DL tunnel info...>},
| | "service-data-flow" : [ | | {"policy-template-key" : "ul-tunnel",
| | "identifier" : 0, | | "policy-status" : "active",
| | "flow-settings" : [ | | "policy-configuration" : [
| | ... | | {"index" : 1,
| | {"policy-key" : "dl-tunnel-with-qos", | | "tunnel" : <UL tunnel info...>}] }]
| | "qos-template" : <QOS Settings...>, | | } ] } ] }, {
| | ... | | "dpn-key" : "DPN2", |
| | "tunnel" : <DL tunnel info...> }, | | "role" : "mag", |
| | {"policy-key" : "ul-tunnel", | | "service-data-flow" : [ {
| | ... | | "identifier" : 0,
| | "tunnel" : <UL tunnel info...> } ] | | "interface" : [ "interface-key" : "ifc2" ],
| | } ] } ] } | | | | "service-data-flow-policy-configuration" :[
| | {"policy-template-key" :
"dl-tunnel-with-qos",
| | "policy-status" : "active",
| | "policy-configuration" : [
| | {"index" : 0,
| | "qos-template" : <QOS Settings...>},
| | {"index" : 1,
| | "tunnel" : <DL tunnel info...>},
| | {"policy-template-key" : "ul-tunnel",
| | "policy-status" : "active",
| | "policy-configuration" : [
| | {"index" : 1,
| | "tunnel" : <UL tunnel info...>}] }]
| | } ] } ] } | |
| | ] } ] } | |
| | | | | | | | | |
| | |<---(2)- Response --------| | | | |<---(2)- Response --------| |
| | | { |-route add>| | | | { |-route add>|
| | | "agent-id" : "agent1"," | | | | | "agent-id" : "agent1"," | |
| | | "operation-id" : 3, | | | | | "operation-id" : 0, | |
| | | "result-status" : "ok", | | | | | "result-status" : "ok", | |
| | | "notify-follows" : "true", | | | | "notify-follows" : "true", |
| | | "edit-status" : [ | | | | | } | |
| | | "edit-id" : 0, | |
| | | "edit-status" : "ok" | |
| | | ] } | |
| | | | | | | | | |
|<------------PBA------| | | |<------------PBA------| | |
| | | | | | | | | |
| +----+ | | | | +----+ | | |
| |Edge| | | | | |Edge| | | |
| |DPN2| | | | | |DPN2| | | |
| +----+ | | | | +----+ | | |
| |<---------------------- tun1 up -------------| | | |<---------------------- tun1 up -------------| |
| |<---------------------- tc qos --------------| | | |<---------------------- tc qos --------------| |
| |<---------------------- route add -----------| | | |<---------------------- route add -----------| |
skipping to change at page 46, line 12 skipping to change at page 51, line 14
| | | "operation-id" : 3, | | | | | "operation-id" : 3, | |
| | | "result-status" : "ok", | | | | | "result-status" : "ok", | |
| | | "notify-follows" : "true", | | | | "notify-follows" : "true", |
| | | "edit-status" : [ | | | | | "edit-status" : [ | |
| | | "edit-id" : 0, | | | | | "edit-id" : 0, | |
| | | "edit-status" : "ok" | | | | | "edit-status" : "ok" | |
| | | ] } | | | | | ] } | |
| | | | | | | | | |
| | | | | | | | | |
Figure 24: Exemplary Message Sequence for Multi-DPN Agent Figure 26: Exemplary Message Sequence for Multi-DPN Agent
Figure 24 shows how the first 2 messages in Figure 22 are supported Figure 26 shows how the first 2 messages in Figure 24 are supported
when a multi-DPN Agent communicates with both Anchor DPN1 and Edge when a multi-DPN Agent communicates with both Anchor DPN1 and Edge
DPN2. In such a case, the FPC Client sends the downlink and uplink DPN2. In such a case, the FPC Client sends the downlink and uplink
for both DPNs in the DPN Reference List of the same Mobility-Context. for both DPNs in the DPN Reference List of the same Mobility-Context.
Message 1 shows the DPN Set with all entries. Each entry identifies Message 1 shows the DPN Set with all entries. Each entry identifies
the DPN. the DPN.
The Agent responds with an OK and Notify-Follows indication while it The Agent responds with an OK and Notify-Follows indication while it
simultaneoulsy provisions both DPNs. Upon successful completion, the simultaneously provisions both DPNs. Upon successful completion, the
Agent responds to the Client with a Configuration-Result-Notification Agent responds to the Client with a Configuration-Result-Notification
indicating the operation status. indicating the operation status.
5.2.2. Policy And Mobility on the Agent 5.2.4. Policy and Mobility on the Agent
A Client may build Policy and Topology using Configure messages. A Client may build Policy and Topology using Configure messages.
The Client may add, modify or delete many DPN Policies as DPN Policy The Client may add, modify or delete many DPN Policies as DPN Policy
Expressions and Mobility-Contexts in a single FPC message. This Configurations and Mobility-Contexts in a single FPC message. This
includes linking Mobility-Contexts to DPN Policies as well as includes linking Mobility-Contexts to DPN Policies as well as
creating the Policy, Rules Actions and Descriptors. As example, a creating the Policy, Rules Actions and Descriptors. As example, a
Rule which performs re-writing of an arriving packet's destination IP Rule which performs re-writing of an arriving packet's destination IP
address from IP_A to IP_B matching an associated Descriptor, can be address from IP_A to IP_B matching an associated Descriptor, can be
enforced in the Data-Plane via an Agent to implicitly consider enforced in the Data-Plane via an Agent to implicitly consider
matching arriving packet's source IP address against IP_B and re- matching arriving packet's source IP address against IP_B and re-
write the source IP address to IP_A. write the source IP address to IP_A.
Figure 25 illustrates the generic policy configuration model as used Figure 27 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
+-----------+ +-----------+
/Precendent#/--------+ /Precendent#/--------+
+----------+ | +----------+ |
| |
Descriptor_3 -+ +- Action_3 +-<Policy> Descriptor_3 -+ +- Action_3 +-<Policy>
| | | ^ | | | ^
Descriptor_4 -+--<Rule>--+- Action_4 | | Descriptor_4 -+--<Rule>--+- Action_4 | |
+-----------+ | | +-----------+ | |
/Precendent#/--------+ | /Precendent#/--------+ |
+----------+ | +----------+ |
<DPN-Settings> <DPN-Policy-Configuration>
+---------------------+ +----------------------+ +---------------------+ +----------------------+
| Bind 1..M traffic | | Bind 1..N traffic | | Bind 1..M traffic | | Bind 1..N traffic |
| Descriptors to | --> | treatment actions | | Descriptors to | --> | treatment actions |
| to a Policy and | | to a Policy and | | to a Policy | | to a Policy |
| Configurable-Policy | | Configurable-Policy | +---------------------+ +----------------------+
+---------------------+ +----------------------+
| | | |
+-------------- Data-Plane Rule ------------------+ +-------------- Data-Plane Rule ------------------+
Figure 25: Structure of Configurable Policies Figure 27: Structure of Configurable Policies
As depicted in Figure 25, the DPN Settings represents the anchor of As depicted in Figure 27, the DPN Settings represents the anchor of
Rules through the Policy / Rule hierarchy. A Client and Agent use Rules through the Policy / Rule hierarchy. A Client and Agent use
the identifier of the associated Policy to directly access the Rule the identifier of the associated Policy to directly access the Rule
and perform modifications of traffic Descriptors or Action and perform modifications of traffic Descriptors or Action
references. Arriving packets are matched against traffic according references. Arriving packets are matched against traffic according
to Rule precedence and Descriptors. If a Rule is applicable the to Rule precedence and Descriptors. If a Rule is applicable the
packet is treated according to the ordered Action values. packet is treated according to the ordered Action values.
A Client associates a Precedence value for the Rule's Descriptors, to A Client associates a Precedence value for the Rule's Descriptors, to
allow unambiguous traffic matching on the Data-Plane. allow unambiguous traffic matching on the Data-Plane.
Figure 26 illustrates the generic context configuration model as used Figure 28 illustrates the generic context configuration model as used
between a Client and a Agent. between a Client and an Agent.
<Policy 1> <Policy 1>
^ ^
| |
<Service-Data-Flow 0> <--- <Mobility-Context-ID2> <Service-Data-Flow 0> <--- <Mobility-Context-ID2>
^ ^
| |
<Policy 1> | <Policy 1> |
^ | ^ |
| | | |
skipping to change at page 48, line 26 skipping to change at page 53, line 26
+-------------------+ +---------------------+ +-------------------+ +---------------------+
| 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 26: Mobility Context Heirarchy Figure 28: Mobility Context Hierarchy
The figure Figure 26 represents a mobility session hierarchy. A Figure 28 represents a mobility session hierarchy. A Client and
Client and Agent directly assigns values such as downlink traffic Agent directly assigns values such as downlink traffic descriptors,
descriptors, QoS information, etc. A Client and Agent use the QoS information, etc. A Client and Agent use the context identifiers
context identifiers to access the descriptors, qos information, etc. to access the descriptors, qos information, etc. to perform
to perform modifications. From the viewpoint of packet processing, modifications. From the viewpoint of packet processing, arriving
arriving packets are matched against traffic Descriptors and packets are matched against traffic Descriptors and processed
processed according to the qos or other mobility profile related according to the qos or other mobility profile related Actions
Actions specified in the Mobilty-Context's and Service-Data-Flow's' specified in the Mobility-Context's and Service-Data-Flow's'
properties. If present, a Policy could contain tunnel information to properties. If present, a Policy could contain tunnel information to
encapsulate and forward the packet. encapsulate and forward the packet.
A second Mobility-Context also references Mobility-Context-ID1 in the A second Mobility-Context also references Mobility-Context-ID1 in the
figure. Based upon the technology a property in a parent context figure. Based upon the technology a property in a parent context
(parent mobility-context-id reference) MAY be inherited by its (parent mobility-context-id reference) 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.
6. Templates And Command Sets 5.2.5. Monitor Example
Configurations templates are shown below. The following example shows the installation of a DPN level monitor
(1) to observe ifc1 status, a property that is either "up" or "down",
and another monitor to watch for interface events. The interface
experiences an outage which is reported to the Client via a Notify
(3) message. At a later time a Probe (4) and corresponding Notify
(5) is sent. Finally, the monitors are de-registered (6).
Note, specific event identifiers and types are out of scope.
+-------Router--------+
+-----------+ |+-------+ +---------+|
+------+ +------+ +-----+ FPC | | FPC | | Anchor |
|MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN |
+------+ +------+ +-----+-------+ +-------+ +---------+
| | |---(1)--Configure-------->| |
| | "register-monitor" : { | |
| | "client-id" : 0, | |
| | "operation-id" : 0, | |
| | "monitor" : [ { | |
| | "monitor-key" : "ifc1-status", |
| | "target" : "/dpn/dpn1/interface/ifc1/status"
| | "deferrable" : false |
| | }, { |
| | "monitor-key" : "ifc1-events", |
| | "target" : "/dpn/dpn1/interface/ifc1" |
| | "deferrable" : false, |
| | "configuration" : { |
| | "target-event-configuration" : [ 0,
| | 1, 3, .. ] } } ] } |
| | |<---(2)- Response --------| |
| | | { | |
| | | "agent-id" : "agent1"," | |
| | | "operation-id" : 0, | |
| | | "result-status" : "ok", | |
| | | } | |
| | | | |
[ ifc1 goes down which is reported as event type 3 ]
| | |<---(3)-- NOTIFY ---------| |
| | "notify" : { | |
| | "notification-id" : 0, | |
| | "timestamp" : ..., | |
| | "report" : [ { | |
| | "monitor-key" : "ifc1-events", |
| | "trigger" : "subscribed-event-occurred",
| | "report-value" : { 3 } } ] } |
| | | | |
| | |---(4)-- Probe -------->| |
| | "probe" : { | |
| | "client-id" : 0, | |
| | "operation-id" : 1, | |
| | "monitor" : [ | |
| | "monitor-key" : "ifc1-status" ] } |
| | |<---(5)- Response --------| |
| | | { | |
| | | "agent-id" : "agent1"," | |
| | | "operation-id" : 1, | |
| | | "result-status" : "ok", | |
| | | } | |
| | | | |
| | |<---(6)-- NOTIFY ---------| |
| | "notify" : { | |
| | "notification-id" : 1, | |
| | "timestamp" : ..., | |
| | "report" : [ { | |
| | "monitor-key" : "ifc1-status", |
| | "trigger" : "probe",
| | "report-valuerporte" : { "up" } } ] } |
| | | | |
| | |---(7)- Deregister ------>| |
| | "deregister-monitor" : { | |
| | "client-id" : 0, | |
| | "operation-id" : 2, | |
| | "monitor" : [ | |
| | { "monitor-key" : "ifc1-events" }, |
| | { "monitor-key" : "ifc1-status", |
| | "send-data" : true } ] } |
| | |<---(8)- Response --------| |
| | | { | |
| | | "agent-id" : "agent1"," | |
| | | "operation-id" : 2, | |
| | | "result-status" : "ok", | |
| | | } | |
| | | | |
| | |<---(9)-- NOTIFY ---------| |
| | "notify" : { | |
| | "notification-id" : 2, | |
| | "timestamp" : ..., | |
| | "report" : [ { | |
| | "monitor-key" : "ifc1-status", |
| | "trigger" : "deregistration-final-value",
| | "report-value" : { "up" } } ] } |
Figure 29: Monitor Example (focus on FPC reference point)
6. Templates and Command Sets
Configuration templates are shown below.
6.1. Monitor Configuration Templates 6.1. Monitor Configuration Templates
A periodic configuration specifies a time interval (ms) for A periodic configuration specifies a time interval (ms) for
reporting. reporting.
A scheduled configuration specifies a time for reporting. A scheduled configuration specifies a time for reporting.
A threshold configuration MUST have at least one hi or low threshold A threshold configuration MUST have at least one hi or low threshold
and MAY have both. and MAY have both.
skipping to change at page 49, line 38 skipping to change at page 56, line 33
... ...
| +-[Configuration] | +-[Configuration]
| | +-[Threshold-Configuration] | | +-[Threshold-Configuration]
| | | +-[(Unsigned32) Low] | | | +-[(Unsigned32) Low]
| | | +-[(Unsigned32) Hi] | | | +-[(Unsigned32) Hi]
... ...
| +-[Configuration] | +-[Configuration]
| | +-[Target-Events-Configuration] | | +-[Target-Events-Configuration]
| | | +-[(Unsigned32) Event-Key:] <List> | | | +-[(Unsigned32) Event-Key:] <List>
Figure 27: Monitor Configuration Templates Figure 30: Monitor Configuration Templates
6.2. Descriptor Templates 6.2. Descriptor Templates
A IP-Prefix-Template MUST have at least the To or From IP Prefix / A IP-Prefix-Template MUST have at least the To or From IP Prefix /
Length populated. The IP Prefix specifies and Address and Length. Length populated. The IP Prefix specifies and Address and Length.
The PMIP Traffic Selector template is mapped according to [RFC6088] The PMIP Traffic Selector template is mapped according to [RFC6088]
The RFC 5777 Classifier is a structured version of common filter The RFC 5777 Classifier is a structured version of common filter
rules and follows the format specified in [RFC5777]. The Flow-Label, rules and follows the format specified in [RFC5777]. The Flow-Label,
skipping to change at page 52, line 12 skipping to change at page 59, line 7
| +-[TCP-Option] <List> | +-[TCP-Option] <List>
| +-[TCP-Flags] | +-[TCP-Flags]
| +-[ICMP-Type] <List> | +-[ICMP-Type] <List>
| +-[ETH-Option] <List> | +-[ETH-Option] <List>
| +-[ecn-ip-codepoint] <List> | +-[ecn-ip-codepoint] <List>
| +-[(flowlabel) flow-label] <List> | +-[(flowlabel) flow-label] <List>
| +-[flow-label-range] <List> | +-[flow-label-range] <List>
| | +-[(flowlabel) flow-label-start] | | +-[(flowlabel) flow-label-start]
| | +-[(flowlabel) flow-label-end] | | +-[(flowlabel) flow-label-end]
Figure 28: Descriptor Templates Figure 31: Descriptor Templates
6.3. Tunnel Templates 6.3. Tunnel Templates
The Network Service Header is specified in [RFC8300]. The Network Service Header is specified in [RFC8300].
The MPLS SR Stack is specified in The MPLS SR Stack is specified in
[I-D.ietf-spring-segment-routing-mpls]. [I-D.ietf-spring-segment-routing-mpls].
The IPv6 SR Stack is specified in The IPv6 SR Stack is specified in
[I-D.ietf-6man-segment-routing-header]. [I-D.ietf-6man-segment-routing-header].
skipping to change at page 53, line 37 skipping to change at page 60, line 37
| +-[(Enumeration - ip-in-ip(0), | +-[(Enumeration - ip-in-ip(0),
udp(1), gre(2), gtpv1(3), gtpv2(4)) type:] udp(1), gre(2), gtpv1(3), gtpv2(4)) type:]
| +-[interface] | +-[interface]
| +-[next-hop] | +-[next-hop]
| +-[gre-key:] (type == gre) | +-[gre-key:] (type == gre)
| +-[gtp-info] (type == gtpv1 or type == gtpv2 ) | +-[gtp-info] (type == gtpv1 or type == gtpv2 )
| | +-[(Unsigned 32) local-teid] | | +-[(Unsigned 32) local-teid]
| | +-[(Unsigned 32) remote-teid] | | +-[(Unsigned 32) remote-teid]
| | +-[(Boolean) sequence-numbers-on] (type == gtpv1) | | +-[(Boolean) sequence-numbers-on] (type == gtpv1)
Figure 29: Tunnel Templates Figure 32: Tunnel Templates
6.4. Action Templates 6.4. Action Templates
The following figure shows common next-hop (set next-hop) and tunnel The following figure shows common next-hop (set next-hop) and tunnel
templates for Actions. templates for Actions.
Drop action has no values. Drop action has no values.
Rewrite uses a Descriptor to set the values of the packet. Exactly Rewrite uses a Descriptor to set the values of the packet. Exactly
one Descriptor MUST be present. Only the Destination and Source port one Descriptor MUST be present. Only the Destination and Source port
skipping to change at page 54, line 20 skipping to change at page 61, line 20
| +-[Extensible: True] | +-[Extensible: True]
| +-[ip-prefix-template] | +-[ip-prefix-template]
| +-[pmip-traffic-selector] | +-[pmip-traffic-selector]
| +-[rfc5777-classifier] | +-[rfc5777-classifier]
... ...
| |
+-[copy-forward-template] +-[copy-forward-template]
| +-[Extensible: True] | +-[Extensible: True]
| +-[next-hop:] | +-[next-hop:]
Figure 30: Action Templates Figure 33: Action Templates
6.5. Quality of Service Action Templates 6.5. Quality of Service Action Templates
PMIP QoS is specified in [RFC7222]. PMIP QoS is specified in [RFC7222].
| |
+-[qos-template] +-[qos-template]
| +-[Extensible: True] | +-[Extensible: True]
| +-[(dscp) trafficclass] | +-[(dscp) trafficclass]
| +-[pmip-qos] | +-[pmip-qos]
| | +-[(Unsigned 32) per-mn-agg-max-dl] | | +-[(Unsigned 32) per-mn-agg-max-dl]
| | +-[(Unsigned 32) per-mn-agg-max-ul] | | +-[(Unsigned 32) per-mn-agg-max-ul]
| | +-[per-session-agg-max-dl] | | +-[per-session-agg-max-dl]
| | | +-[(Unsigned 32) max-rate:] | | | +-[(Unsigned 32) max-rate:]
| | | +-[(Boolean) service-flag:] | | | +-[(Boolean) service-flag:]
| | | +-[(Boolean) exclude-flag:] | | | +-[(Boolean) exclude-flag:]
| | +-[per-session-agg-max-ul] | | +-[per-session-agg-max-ul]
| | | +-[(Unsigned 32) max-rate:] | | | +-[(Unsigned 32) max-rate:]
| | | +-[(Boolean) service-flag:] | | | +-[(Boolean) service-flag:]
| | | +-[(Boolean) exclude-flag:] | | | +-[(Boolean) exclude-flag:]
| | +-[allocation-retention-priority] | | +-[allocation-retention-priority]
| | | +-[(Unsigned 8) prioirty-level:] | | | +-[(Unsigned 8) priority-level:]
| | | +-[(Enumeration) premption-capability:] | | | +-[(Enumeration) preemption-capability:]
| | | +-[(Enumeration) premption-vulnerability:] | | | +-[(Enumeration) preemption-vulnerability:]
| | +-[(Unsigned 32) agg-max-dl] | | +-[(Unsigned 32) agg-max-dl]
| | +-[(Unsigned 32) agg-max-ul] | | +-[(Unsigned 32) agg-max-ul]
| | +-[(Unsigned 32) gbr-dl] | | +-[(Unsigned 32) gbr-dl]
| | +-[(Unsigned 32) gbr-ul] | | +-[(Unsigned 32) gbr-ul]
Figure 31: QoS Templates Figure 34: QoS Templates
6.6. PMIP Command-Set 6.6. PMIP Command-Set
The following Command Set values are supported for IETF PMIP. The following Command Set values are supported for IETF PMIP.
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 Data-plane 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.
6.7. 3GPP Specific Templates and Command-Set 6.7. 3GPP Specific Templates and Command-Set
3GPP support is optional and detailed in this section. The following 3GPP support is optional and detailed in this section. The following
skipping to change at page 56, line 21 skipping to change at page 63, line 21
| +-[(unsigned 4) ebi:] | +-[(unsigned 4) ebi:]
| +-[(unsigned 4) lbi] | +-[(unsigned 4) lbi]
... ...
+-[qos-template] +-[qos-template]
| +-[Extensible: True] | +-[Extensible: True]
| +-[(unsigned 4) qos-class-identifier] | +-[(unsigned 4) qos-class-identifier]
| +-[(Unsigned 32) ue-agg-max-bitrate] | +-[(Unsigned 32) ue-agg-max-bitrate]
| +-[(Unsigned 32) apn-agg-max-bitrate] | +-[(Unsigned 32) apn-agg-max-bitrate]
... ...
Figure 32: 3GPP Mobility Templates Figure 35: 3GPP Mobility Templates
| |
+-[ packet-filter ] +-[ packet-filter ]
| +-[Extensible: True] | +-[Extensible: True]
| +-[(Unsigned 8) identifier:] | +-[(Unsigned 8) identifier:]
| +-[Contents:] <List> | +-[Contents:] <List>
| | +-[(ip-address) ipv4-ipv6-local] | | +-[(ip-address) ipv4-ipv6-local]
| | +-[(ipv6-prefix) ipv6-prefix-local] | | +-[(ipv6-prefix) ipv6-prefix-local]
| | +-[(ip-address) ipv4-ipv6-remote] | | +-[(ip-address) ipv4-ipv6-remote]
| | +-[(ipv6-prefix) ipv6-prefix-remote] | | +-[(ipv6-prefix) ipv6-prefix-remote]
skipping to change at page 56, line 49 skipping to change at page 63, line 49
| | | +-[(Unsigned 16) remote-port-lo] | | | +-[(Unsigned 16) remote-port-lo]
| | | +-[(Unsigned 16) remote-port-hi] | | | +-[(Unsigned 16) remote-port-hi]
| | +-[(Unsigned 32) sec-parameter-index] | | +-[(Unsigned 32) sec-parameter-index]
| | +-[(dscp) traffic-class] | | +-[(dscp) traffic-class]
| | +-[traffic-class-range] | | +-[traffic-class-range]
| | | +-[(dscp) traffic-class-lo] | | | +-[(dscp) traffic-class-lo]
| | | +-[(dscp) traffic-class-hi] | | | +-[(dscp) traffic-class-hi]
| | +-[(dscp) flow-label] | | +-[(dscp) flow-label]
... ...
Figure 33: 3GPP Packet Filter Template (Descriptor) Figure 36: 3GPP Packet Filter Template (Descriptor)
The following Command Set values are supported for 3GPP. The following Command Set values are supported for 3GPP.
o assign-ip - Assign the IP Address for the mobile session. o assign-ip - Assign the IP Address for the mobile session.
o assign-fteid-ip - Assign the Fully Qualified TEID (F-TEID) LOCAL o assign-fteid-ip - Assign the Fully Qualified TEID (F-TEID) LOCAL
IP address. IP address.
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', the values are part of 'assign-fteid-ip' and 'assign-fteid-teid', the values are part of
the default bearer. the default bearer.
o uplink - Command applies to uplink. o uplink - Command applies to uplink.
o downlink - Command applies to downlink. o downlink - Command applies to downlink.
o assign-dpn - Assign the Dataplane Node. o assign-dpn - Assign the Data-plane Node.
7. Implementation Status 7. Implementation Status
Three FPC Agent implementations have been made to date. The first Three FPC Agent implementations have been made to date. The first
was based upon Version 03 of the draft and followed Model 1. The was based upon Version 03 of the draft and followed Model 1. The
second follows Version 04 of the document. Both implementations were second 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 04 is now
known as fpcagent and version 04's implementation is simply referred primarily enhanced by GS Labs. Version 03 was known as fpcagent and
to as 'fpc'. A third has been devloped on an ONOS Controller for use version 04's implementation is simply referred to as 'fpc'. A third
in MCORD projects. has been developed on an ONOS Controller for use in MCORD projects.
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 errors, corrections 03 Model 1 in January 2016 and research various errors, corrections
and optimizations that the Agent could make when supporting multiple and optimizations that the Agent could make when 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, based on version 03,
processing. The RPC implementation improved throughput by an order undesirable for call processing. The RPC implementation improved
of magnitude but was not useful based upon FPC's Version 03 design throughput by an order of magnitude but was not useful based upon
using two information models. During this time the features of FPC's Version 03 design using two information models. During this
version 04 and its converged model became attractive and the fpcagent time the features of version 04 and its converged model became
project was closed in August 2016. fpcagent will no longer be attractive and the fpcagent project was closed in August 2016.
developed and will remain a proprietary implementation.
fpcagent will no longer be 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 an open source release as Fpc is also an OpenDaylight project but is an open source release as
the Opendaylight FpcAgent plugin (https://wiki.opendaylight.org/view/ the Opendaylight FpcAgent plugin (https://wiki.opendaylight.org/view/
Project_Proposals:FpcAgent). This project is scoped to be a fully Project_Proposals:FpcAgent). This project is 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 others developed by the FPC development team have already draft and others developed by the FPC development team have already
led to an order of magnitude improvement. led to an order of magnitude improvement.
skipping to change at page 58, line 29 skipping to change at page 65, line 32
implementation time. implementation time.
Command Sets, an optional feature in this specification, 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.
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 adapter remotely with multi-DPN effectively act as a FPC protocol adapter remotely with multi-DPN
support or colocated on the DPN in a single-DPN support model. support or co-located on the DPN in a single-DPN support model.
Multi-tenant support allows for Cache searches to be partitioned Multi-tenant support allows for Cache searches to be partitioned
for clustering and performance 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 CONF_BUNDLE to be implemented as a simple nested CONFIGURE and CONF_BUNDLE to be implemented as a simple nested
FOR loops (see below). FOR loops (see below).
Initial v04 performance results without code optimizations or tuning Initial v04 performance results without code optimizations or tuning
allow 2-5K FPC Contexts processed per second on a 2013 Mac laptop. allow reliable provisioning of 1K FPC Mobility-Contexts processed per
This results in 2x the number of transactions on the southbound second on a 12 core server. This results in 2x the number of
interface to a proprietary DPN API on the same machine. transactions on the southbound interface to a proprietary DPN API on
the same machine.
Current v04 performance results without code optimizations or tuning
allow 1-2K FPC Contexts processed per second on a 2013 Mac laptop.
This results in 2x the number of transactions on the southbound
interface to a proprietary DPN API on the same machine.
fpc currently supports the following: fpc currently supports the following:
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
CONFIG and CONF_BUNDLE (all operations) CONFIG and CONF_BUNDLE (all 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
skipping to change at page 60, line 46 skipping to change at page 67, line 46
for each Context for each Context
for each DPN / direction in Context for each DPN / direction in Context
perform actions on DPN according to Command Set perform actions on DPN according to Command Set
end for end for
end for end for
end for end for
commit changes to in memory cache commit changes to in memory cache
log transaction for tracking and notification log transaction for tracking and notification
(CONFIG_RESULT_NOTIFY) (CONFIG_RESULT_NOTIFY)
Figure 34: fpc pseudo code Figure 37: fpc pseudo code
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.
8. Security Considerations 8. 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 a FPC Client and a FPC Agent. Required Security Associations
Associations may be derived from co-located functions, which utilize may be derived from co-located functions, which utilize the FPC
the FPC Client and FPC Agent respectively. Client and FPC Agent respectively.
The YANG modules defined in this memo is designed to be accessed via The YANG modules defined in this memo are designed to be accessed via
the NETCONF [RFC6241] or RESTCONF [RFC8040] protocol. The lowest the NETCONF [RFC6241] or RESTCONF [RFC8040] protocol. The lowest
NETCONF layer is the secure transport layer and the mandatory-to- NETCONF layer is the secure transport layer and the mandatory-to-
implement secure transport is SSH [RFC6242]. implement secure transport is SSH [RFC6242].
The information model defined in the memo is designed to be access by The information model defined in the memo is designed to be access by
protocols specified in extensions to this document or, if using the protocols specified in extensions to this document or, if using the
YANG modules, as described above. YANG modules, as described above.
There are a number of data nodes defined which are There are a number of data nodes defined which are
writable/creatable/deletable. These data nodes may be considered writable/creatable/deletable. These data nodes may be considered
sensitive or vulnerable in some network environments. Write sensitive or vulnerable in some network environments. Write
operations (e.g., a NETCONF edit-config) to these data nodes without operations (e.g., a NETCONF edit-config) to these data nodes without
proper protection can have a negative effect on network operations. proper protection can have a negative effect on network operations.
These are the subtrees and data nodes and their sensitivity/ These are the subtrees and data nodes and their sensitivity/
vulnerability: vulnerability:
Nodes under the Policy tree provide generic policy enforcement and Nodes under the Policy tree provide generic policy enforcement and
traffic classification. They can be used to block or permit traffic classification. They can be used to block or permit
traffic. If this portion of the model was to be compromised it traffic. If this portion of the model was to be compromised it
may be used to block, identify or permit traffic that was not may be used to block, identify or permit traffic that was not
intended by the Tenant or FPC CLient. intended by the Tenant or FPC Client.
Nodes under the Topology tree provide definition of the Tenant's Nodes under the Topology tree provide definition of the Tenant's
forwarding topology. Any compromise of this information will forwarding topology. Any compromise of this information will
provide topology information that could be used for subsequent provide topology information that could be used for subsequent
attack vectors. Removal of topology can limit services. attack vectors. Removal of topology can limit services.
Mobility-Context provides runtime only and manipulated by remote Mobility-Context provides runtime only information and manipulated
procedure calls. The unwanted deletion or removal of such by remote procedure calls. The unwanted deletion or removal of
information would deny users service or provide services to such information would deny users service or provide services to
unauthorized parties. unauthorized parties.
Some of the readable data nodes defined may be considered sensitive Some of the readable data nodes defined may be considered sensitive
or vulnerable in some network environments. It is thus important to or vulnerable in some network environments. It is thus important to
control read access (e.g., via get, get-config, or notification) 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 these data nodes. These are the subtrees and data nodes and their
sensitivity/vulnerability: sensitivity/vulnerability:
IP address assignments in the Mobility-Context along with their IP address assignments in the Mobility-Context along with their
associated tunnel configurations/identifiers (from the FPC base associated tunnel configurations/identifiers (from the FPC base
module) module)
Internaional Mobile Subscriber Identity (IMSI) and bearer Internaitonal Mobile Subscriber Identity (IMSI) and bearer
identifiers in the Context when using the FPC base model identifiers in the Context when using the FPC base model
Some of the RPC operations defined may be considered sensitive or Some of the RPC operations defined may be considered sensitive or
vulnerable in some network environments. It is thus important to vulnerable in some network environments. It is thus important to
control access to these operations. These are the operations and control access to these operations. These are the operations and
their sensitivity/vulnerability: their sensitivity/vulnerability:
Configure sends Mobility-Context information which can include Configure sends Mobility-Context information which can include
information of a sensitive or vulnerable nature in some network information of a sensitive or vulnerable nature in some network
environments as described above. environments as described above.
Monitor related RPC operations do not specicially provide Monitor related RPC operations do not specifically provide
sensitive or vulnerable information but care must be taken by sensitive or vulnerable information but care must be taken by
users to avoid identifier values that expose sensitive or users to avoid identifier values that expose sensitive or
vulnerable information. vulnerable information.
Notications MUST be treated with same level of protection and Notifications MUST be treated with same level of protection and
scrutiny as the operations they correspond to. For example, a scrutiny as the operations they correspond to. For example, a
Configure-Result notification provides the same information that Configure-Result-Notification provides the same information that
is sent as part of the input and output of the Configure RPC is sent as part of the input and output of the Configure RPC
operations. operation.
General usage of FPC MUST consider the following: General usage of FPC MUST consider the following:
FPC Naming Section 4.5 permits arbirtrary string values but a FPC Naming Section 4.5 permits arbitrary string values but a user
users MUST avoid placing sensitive or vulnerable information in MUST avoid placing sensitive or vulnerable information in those
those values. values.
Policies that are very narrow and permit the identification of Policies that are very narrow and permit the identification of
specific traffic, e.g. that of a single user, SHOULD be avoided. specific traffic, e.g. that of a single user, SHOULD be avoided.
9. IANA Considerations 9. IANA Considerations
This document registers six URIs in the "IETF XML Registry" This document registers six URIs in the "IETF XML Registry"
[RFC3688]. Following the format in RFC 3688, the following [RFC3688]. Following the format in RFC 3688, the following
registrations have been made. registrations have been made.
skipping to change at page 64, line 17 skipping to change at page 71, line 17
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.
11. References 11. References
11.1. Normative References 11.1. Normative References
[I-D.ietf-6man-segment-routing-header] [I-D.ietf-6man-segment-routing-header]
Previdi, S., Filsfils, C., Raza, K., Dukes, D., Leddy, J., Previdi, S., Filsfils, C., Leddy, J., Matsushima, S., and
Field, B., daniel.voyer@bell.ca, d., d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header
daniel.bernier@bell.ca, d., Matsushima, S., Leung, I., (SRH)", draft-ietf-6man-segment-routing-header-13 (work in
Linkova, J., Aries, E., Kosugi, T., Vyncke, E., Lebrun, progress), May 2018.
D., Steinberg, D., and R. Raszuk, "IPv6 Segment Routing
Header (SRH)", draft-ietf-6man-segment-routing-header-08
(work in progress), January 2018.
[I-D.ietf-spring-segment-routing-mpls] [I-D.ietf-spring-segment-routing-mpls]
Bashandy, A., Filsfils, C., Previdi, S., Decraene, B., Bashandy, A., Filsfils, C., Previdi, S., Decraene, B.,
Litkowski, S., and R. Shakir, "Segment Routing with MPLS Litkowski, S., and R. Shakir, "Segment Routing with MPLS
data plane", draft-ietf-spring-segment-routing-mpls-12 data plane", draft-ietf-spring-segment-routing-mpls-14
(work in progress), February 2018. (work in progress), June 2018.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC5777] Korhonen, J., Tschofenig, H., Arumaithurai, M., Jones, M., [RFC5777] Korhonen, J., Tschofenig, H., Arumaithurai, M., Jones, M.,
Ed., and A. Lior, "Traffic Classification and Quality of Ed., and A. Lior, "Traffic Classification and Quality of
Service (QoS) Attributes for Diameter", RFC 5777, Service (QoS) Attributes for Diameter", RFC 5777,
DOI 10.17487/RFC5777, February 2010, DOI 10.17487/RFC5777, February 2010,
skipping to change at page 65, line 9 skipping to change at page 72, line 5
[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,
<https://www.rfc-editor.org/info/rfc6088>. <https://www.rfc-editor.org/info/rfc6088>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013, RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>. <https://www.rfc-editor.org/info/rfc6991>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>.
[RFC8072] Bierman, A., Bjorklund, M., and K. Watsen, "YANG Patch
Media Type", RFC 8072, DOI 10.17487/RFC8072, February
2017, <https://www.rfc-editor.org/info/rfc8072>.
[RFC8300] Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed., [RFC8300] Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed.,
"Network Service Header (NSH)", RFC 8300, "Network Service Header (NSH)", RFC 8300,
DOI 10.17487/RFC8300, January 2018, DOI 10.17487/RFC8300, January 2018,
<https://www.rfc-editor.org/info/rfc8300>. <https://www.rfc-editor.org/info/rfc8300>.
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
and R. Wilton, "Network Management Datastore Architecture
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
<https://www.rfc-editor.org/info/rfc8342>.
11.2. Informative References 11.2. Informative References
[I-D.bertz-dime-policygroups] [I-D.bertz-dime-policygroups]
Bertz, L. and M. Bales, "Diameter Policy Groups and Sets", Bertz, L. and M. Bales, "Diameter Policy Groups and Sets",
draft-bertz-dime-policygroups-05 (work in progress), draft-bertz-dime-policygroups-05 (work in progress),
December 2017. December 2017.
[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-03 (work in progress), November 2017. models-04 (work in progress), May 2018.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
[RFC3958] Daigle, L. and A. Newton, "Domain-Based Application
Service Location Using SRV RRs and the Dynamic Delegation
Discovery Service (DDDS)", RFC 3958, DOI 10.17487/RFC3958,
January 2005, <https://www.rfc-editor.org/info/rfc3958>.
[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,
<https://www.rfc-editor.org/info/rfc5213>. <https://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,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
skipping to change at page 66, line 10 skipping to change at page 73, line 24
[RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J. [RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J.
Korhonen, "Requirements for Distributed Mobility Korhonen, "Requirements for Distributed Mobility
Management", RFC 7333, DOI 10.17487/RFC7333, August 2014, Management", RFC 7333, DOI 10.17487/RFC7333, August 2014,
<https://www.rfc-editor.org/info/rfc7333>. <https://www.rfc-editor.org/info/rfc7333>.
[RFC7660] Bertz, L., Manning, S., and B. Hirschman, "Diameter [RFC7660] Bertz, L., Manning, S., and B. Hirschman, "Diameter
Congestion and Filter Attributes", RFC 7660, Congestion and Filter Attributes", RFC 7660,
DOI 10.17487/RFC7660, October 2015, DOI 10.17487/RFC7660, October 2015,
<https://www.rfc-editor.org/info/rfc7660>. <https://www.rfc-editor.org/info/rfc7660>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>.
[RFC8072] Bierman, A., Bjorklund, M., and K. Watsen, "YANG Patch
Media Type", RFC 8072, DOI 10.17487/RFC8072, February
2017, <https://www.rfc-editor.org/info/rfc8072>.
Appendix A. YANG Data Model for the FPC protocol Appendix A. YANG Data Model for the FPC protocol
This section provides a type mapping for FPC structures in YANG. This section provides a type mapping for FPC structures in YANG.
When being mapped to a specific information such as YANG the data When being mapped to a specific information such as YANG the data
type MAY change. type MAY change.
L-Keys for Actions, Descriptors, Rules, Policies, DPNs, Domains and Keys for Actions, Descriptors, Rules, Policies, DPNs, Domains and
Mobility-Contexts are specified as FPC-Identity which follows rules Mobility-Contexts are specified as FPC-Identity which follows rules
according to Section 4.5. according to Section 4.5.
Action and Descriptor Templates are mapped as choices. This was done Action and Descriptor Templates are mapped as choices. This was done
to ensure no duplication of Types and avoid use of identityref for to ensure no duplication of Types and avoid use of identityref for
typing. typing.
Policy Expressions are provided as default values. NOTE that a Policy Expressions are provided as default values. NOTE that a
static value CANNOT be supported in YANG. static value CANNOT be supported in YANG.
Mapping of templates to YANG are performed as follows:
Value is defined as a choice statement for extensibility and
therefore a type value is not necessary to discriminated types
Generic attributes are distinguished by the "Settings" type and
holds ANY value. It is an any data node under configurations.
The CONFIGURE and CONFIGURE-RESULT-NOTIFICATION use the yang-patch-
status which is a container for edits. This was done to maximize
YANG reuse.
In the configure rpc, operation-id is mapped to patch-id and in an
edit the edit-type is mapped to operation.
The Result-Status attribute is mapped to the 'ok' (empty leaf) or
errors structure.
The Policy-Status is mapped to entity-state to reduce YANG size.
Five modules are defined: Five modules are defined:
o ietf-dmm-fpc (fpc) - Defines the base model and messages for FPC o ietf-dmm-fpc (fpc) - Defines the base model and messages for FPC
that are meant to be static in FPC. that are meant to be static in FPC.
o ietf-dmm-fpc-settingsext An FPC module that defines the o ietf-dmm-fpc-settingsext - A FPC module that defines the
information model elements that are likely to be extended in FPC. information model elements that are likely to be extended in FPC.
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-trafficselectors-types (traffic-selectors) - Defines Traffic o ietf-trafficselectors-types (traffic-selectors) - Defines Traffic
Selectors per [RFC6088] Selectors per [RFC6088]
o ietf-diam-trafficclassifier (diamclassifier) - Defines the o ietf-diam-trafficclassifier (diamclassifier) - Defines the
Classifier per [RFC5777] Classifier per [RFC5777]
All modules defined in this specification make use of (import) ietf-
inet-types as defined in [RFC6991].
ietf-dmm-fpc-settingsext and ietf-diam-trafficclassifier make use of
(imports) ietf-yang-types as defined in [RFC6991].
ietf-dmm-fpc imports the restconf (ietf-restconf) [RFC8040] and yang
patch (ietf-yang-patch) [RFC8072] modules.
ietf-pmip-qos and ietf-dmm-fpc-settings import the trafficselector
from the ietf-traffic-selector-types module.
ietf-dmm-fpc-settings also imports the qosattribute (ietf-pmip-qos)
and classifier (ietf-diam-trafficclassifier).
ietf-dmm-fpc-settingsext groups various settings, actions and
descriptors and is used by the fpc module (ietf-dmm-fpc).
The following groupings are intended for reuse (import) by other
modules.
o qosoption (ietf-qos-pmip module)
o qosattribute (ietf-qos-pmip module)
o qosoption (ietf-qos-pmip module)
o Allocation-Retention-Priority-Value (ietf-qos-pmip module)
o trafficselector (ietf-traffic-selector-types)
o classifier (ietf-diam-trafficclassifier)
o packet-filter (ietf-dmm-fpc-settingsext)
o instructions (ietf-dmm-fpc-settingsext)
o fpc-descriptor-value (ietf-dmm-fpc-settingsext)
o fpc-action-value (ietf-dmm-fpc-settingsext)
The YANG modules in this document conform to the Network Management
Datastore Architecture (NMDA) defined in [RFC8342].
DPNs conformant to NMDA MAY only have policies, installed policies,
topology, domains and mobility session information that has been
assigned to it in its intended and operational datastores. What is
housed in the operational datastore MAY be determined on a per DPN
basis and using the Entity-Status as a guideline based upon tradeoffs
described in Section 4.6.
ServiceGroups are not expected to appear in operational datastores of
DPNs as they remain in and are used by FPC Agents and Clients. They
MAY be operationally present in DNS when using the Dynamic Delegation
and Discovery System (DDDS) as defined in [RFC3958] or the
operational datastore of systems that provide equivalent
functionality.
A.1. FPC YANG Model A.1. FPC YANG Model
This module defines the information model and protocol elements This module defines the information model and protocol elements
specified in this document. specified in this document.
This module references [RFC6991], [RFC8040] and the fpc-settingsext This module references [RFC6991], [RFC8040] and the fpc-settingsext
module defined in this document. module defined in this document.
<CODE BEGINS> file "ietf-dmm-fpc@2018-02-28.yang" <CODE BEGINS> file "ietf-dmm-fpc@2018-05-17.yang"
module ietf-dmm-fpc { module ietf-dmm-fpc {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc"; namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc";
prefix fpc; prefix fpc;
import ietf-inet-types { prefix inet; import ietf-inet-types { prefix inet;
revision-date 2013-07-15; } revision-date 2013-07-15; }
import ietf-dmm-fpc-settingsext { prefix fpcbase; import ietf-dmm-fpc-settingsext { prefix fpcbase;
revision-date 2018-02-28; } revision-date 2018-05-17; }
import ietf-diam-trafficclassifier { prefix rfc5777; import ietf-diam-trafficclassifier { prefix rfc5777;
revision-date 2018-02-28; } revision-date 2018-05-17; }
import ietf-restconf { prefix rc; import ietf-restconf { prefix rc;
revision-date 2017-01-26; } revision-date 2017-01-26; }
import ietf-yang-patch { prefix ypatch; import ietf-yang-patch { prefix ypatch;
revision-date 2017-02-22; } revision-date 2017-02-22; }
organization "IETF Distributed Mobility Management (DMM) organization "IETF Distributed Mobility Management (DMM)
Working Group"; Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/netmod/> "WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:netmod@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: Sri Gundavelli WG Chair: Jouni Korhonen
<mailto:sgundave@cisco.com> <mailto:jouni.nospam@gmail.com>
Editor: Satoru Matsushima Editor: Satoru Matsushima
<mailto:satoru.matsushima@g.softbank.co.jp> <mailto:satoru.matsushima@g.softbank.co.jp>
Editor: Lyle Bertz Editor: Lyle Bertz
<mailto:lylebe551144@gmail.com>"; <mailto:lylebe551144@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).
skipping to change at page 68, line 18 skipping to change at page 76, line 51
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described document must include Simplified BSD License text as described
in Section 4.e of the Trust Legal Provisions and are provided in Section 4.e of the Trust Legal Provisions and are provided
without warranty as described in the Simplified BSD License."; without warranty as described in the Simplified BSD License.";
revision 2018-02-28 { revision 2018-05-17 {
description "Version 10 updates."; description "Initial Revision.";
reference "draft-ietf-dmm-fpc-cpdp-10"; reference "draft-ietf-dmm-fpc-cpdp-10";
} }
revision 2017-09-27 {
description "Version 10 updates.";
reference "draft-ietf-dmm-fpc-cpdp-09";
}
revision 2017-07-22 {
description "Version 08 updates.";
reference "draft-ietf-dmm-fpc-cpdp-08";
}
revision 2017-03-08 {
description "Version 06 updates.";
reference "draft-ietf-dmm-fpc-cpdp-06";
}
revision 2016-08-03 {
description "Initial Revision.";
reference "draft-ietf-dmm-fpc-cpdp-05";
}
//General Structures //General Structures
grouping templatedef { grouping templatedef {
leaf extensible { leaf extensible {
type boolean; type boolean;
description "Indicates if the template is description "Indicates if the template is extensible";
extensible";
} }
leaf-list mandatory-static-attributes { leaf-list static-attributes {
type string; type string;
description "Attribute (Name) that cannot change. description "Attribute (Name) whose value cannot
If it has not been defined in the template it change";
MUST NOT be present at all for the template }
to be valid."; leaf-list mandatory-attributes {
type string;
description "Attribute (Name) of optional attributes
that MUST be present in instances of this tempplate.";
} }
leaf entity-state { leaf entity-state {
type enumeration { type enumeration {
enum initial { enum initial {
description "Inital Configuration"; description "Inital Configuration";
} }
enum partially-configured { enum partially-configured {
description "Partial Configuration"; description "Partial Configuration";
} }
enum configured { enum configured {
description "Confgured"; description "Confgured";
} }
enum active { enum active {
description "Active"; description "Active";
} }
} }
default initial; default initial;
description "Entity State"; description "Entity State";
} }
leaf version {
type uint32;
description "Template Version";
}
description "Teamplate Definition"; description "Teamplate Definition";
} }
typedef fpc-identity { typedef fpc-identity {
type union { type union {
type uint32; type uint32;
type string;
type instance-identifier; type instance-identifier;
type string;
} }
description "FPC Identity"; description "FPC Identity";
} }
grouping index { grouping index {
leaf index { leaf index {
type uint16; type uint16;
description "Index"; description "Index";
} }
description "Index Value"; description "Index Value";
} }
skipping to change at page 70, line 26 skipping to change at page 78, line 50
} }
grouping policy-template-key { grouping policy-template-key {
leaf policy-template-key { leaf policy-template-key {
type fpc:fpc-identity; type fpc:fpc-identity;
mandatory true; mandatory true;
description "Rule Identifier"; description "Rule Identifier";
} }
description "Rule Key"; description "Rule Key";
} }
// Settings grouping fpc-setting-value {
grouping policy-configuration { anydata setting;
list policy-configuration { description "FPC Setting Value";
key index; }
leaf index { // Configuration / Settings
type uint16; grouping policy-configuration-choice {
description "Index used for reference"; choice policy-configuration-value {
}
choice policy-setting {
case descriptor-value { case descriptor-value {
uses fpcbase:fpc-descriptor-value; uses fpcbase:fpc-descriptor-value;
description "Descriptor Value"; description "Descriptor Value";
} }
case action-value { case action-value {
uses fpcbase:fpc-action-value; uses fpcbase:fpc-action-value;
description "Action Value"; description "Action Value";
} }
case setting-value {
uses fpc:fpc-setting-value;
description "Setting";
}
description "Policy Attributes"; description "Policy Attributes";
} }
description "Policy Configuration Value Choice";
}
grouping policy-configuration {
list policy-configuration {
key index;
uses fpc:index;
uses fpc:policy-configuration-choice;
description "Policy Configuration"; description "Policy Configuration";
} }
description "Policy Configuration Value"; description "Policy Configuration Value";
} }
grouping ref-configuration {
uses fpc:policy-template-key;
uses fpc:policy-configuration;
uses fpc:templatedef;
description "Policy-Configuration Entry";
}
// FPC Policy // FPC Policy
grouping policy-information-model { grouping policy-information-model {
list action-template { list action-template {
key action-template-key; key action-template-key;
uses fpc:action-template-key; uses fpc:action-template-key;
uses fpcbase:fpc-action-value; uses fpcbase:fpc-action-value;
uses fpc:templatedef; uses fpc:templatedef;
description "Action Template"; description "Action Template";
} }
skipping to change at page 71, line 32 skipping to change at page 80, line 23
type enumeration { type enumeration {
enum or { enum or {
value 0; value 0;
description "OR logic"; description "OR logic";
} }
enum and { enum and {
value 1; value 1;
description "AND logic"; description "AND logic";
} }
} }
default "and"; mandatory true;
description "Type of Match (OR or AND) description "Type of Match (OR or AND) applied
applied to the descriptor-configurations"; to the descriptor-configurations";
} }
list descriptor-configuration { list descriptor-configuration {
key "descriptor-template-key"; key "descriptor-template-key";
uses fpc:descriptor-template-key; uses fpc:descriptor-template-key;
leaf direction { leaf direction {
type rfc5777:direction-type; type rfc5777:direction-type;
description "Direction"; description "Direction";
} }
list attribute-expression { list attribute-expression {
key index; key index;
uses fpc:index; uses fpc:index;
uses fpcbase:fpc-descriptor-value; uses fpcbase:fpc-descriptor-value;
description "Descriptor Attributes"; description "Descriptor Attributes";
} }
uses fpc:fpc-setting-value;
description "A set of Descriptor references"; description "A set of Descriptor references";
} }
list action-configuration { list action-configuration {
key "action-order"; key "action-order";
leaf action-order { leaf action-order {
type uint32; type uint32;
mandatory true; mandatory true;
description "Action Execution Order"; description "Action Execution Order";
} }
uses fpc:action-template-key; uses fpc:action-template-key;
list attribute-expression { list attribute-expression {
key index; key index;
uses fpc:index; uses fpc:index;
uses fpcbase:fpc-action-value; uses fpcbase:fpc-action-value;
description "Action Attributes"; description "Action Attributes";
} }
uses fpc:fpc-setting-value;
description "A set of Action references"; description "A set of Action references";
} }
uses fpc:templatedef; uses fpc:templatedef;
uses fpc:policy-configuration; list rule-configuration {
key index;
uses fpc:index;
uses fpc:policy-configuration-choice;
description "Rule Configuration";
}
description "Rule Template"; description "Rule Template";
} }
list policy-template { list policy-template {
key policy-template-key; key policy-template-key;
uses fpc:policy-template-key; uses fpc:policy-template-key;
list rule-template { list rule-template {
key "precedence"; key "precedence";
unique "rule-template-key"; unique "rule-template-key";
leaf precedence { leaf precedence {
type uint32; type uint32;
skipping to change at page 73, line 33 skipping to change at page 82, line 31
} }
description "Interface Identifier key"; description "Interface Identifier key";
} }
identity interface-protocols { identity interface-protocols {
description "Protocol supported by the interface"; description "Protocol supported by the interface";
} }
identity features { identity features {
description "Protocol features"; description "Protocol features";
} }
// Settings
grouping interface-settings {
list interface-settings {
key policy-template-key;
uses fpc:policy-template-key;
uses fpc:policy-configuration;
description "Interface settings";
}
description "Generic interface settings container";
}
// Mobility Context // Mobility Context
grouping mobility-context { grouping mobility-context {
leaf mobility-context-key { leaf mobility-context-key {
type fpc:fpc-identity; type fpc:fpc-identity;
mandatory true; mandatory true;
description "Mobility Context Key"; description "Mobility Context Key";
} }
leaf-list delegating-ip-prefix { leaf-list delegating-ip-prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "IP Prefix"; description "IP Prefix";
skipping to change at page 74, line 23 skipping to change at page 83, line 10
} }
container mobile-node { container mobile-node {
leaf-list ip-address { leaf-list ip-address {
type inet:ip-address; type inet:ip-address;
description "IP Address"; description "IP Address";
} }
leaf imsi { leaf imsi {
type fpcbase:imsi-type; type fpcbase:imsi-type;
description "IMSI"; description "IMSI";
} }
list mn-settings { list mn-policy-configuration {
key policy-template-key; key policy-template-key;
uses fpc:policy-template-key; uses fpc:ref-configuration;
uses fpc:policy-configuration; description "MN Policy Configuration";
description "MN Policy Cofiguration";
} }
description "Mobile Node"; description "Mobile Node";
} }
container domain { container domain {
leaf domain-key { leaf domain-key {
type fpc:fpc-identity; type fpc:fpc-identity;
description "Domain Key"; description "Domain Key";
} }
list domain-settings { list domain-policy-settings {
key policy-template-key; key policy-template-key;
uses fpc:policy-template-key; uses fpc:ref-configuration;
uses fpc:policy-configuration; description "MN Policy Configuration";
description "MN Policy Cofiguration";
} }
description "Domain"; description "Domain";
} }
list dpn { list dpn {
key dpn-key; key dpn-key;
uses fpc:dpn-key; uses fpc:dpn-key;
list dpn-settings { list dpn-policy-configuration {
key policy-template-key; key policy-template-key;
uses fpc:policy-template-key; uses fpc:ref-configuration;
uses fpc:policy-configuration; description "DPN Policy Configuration";
description "DPN Policy Cofiguration";
} }
leaf role { leaf role {
type identityref { type identityref {
base "fpc:role"; base "fpc:role";
} }
description "Role"; description "Role";
} }
list service-data-flow { list service-data-flow {
key identifier; key identifier;
leaf identifier { leaf identifier {
skipping to change at page 75, line 21 skipping to change at page 84, line 4
} }
list service-data-flow { list service-data-flow {
key identifier; key identifier;
leaf identifier { leaf identifier {
type uint32; type uint32;
description "Generic Identifier"; description "Generic Identifier";
} }
leaf service-group-key { leaf service-group-key {
type fpc:fpc-identity; type fpc:fpc-identity;
description "Service Group Key"; description "Service Group Key";
} }
list interface { list interface {
key interface-key; key interface-key;
uses fpc:interface-key; uses fpc:interface-key;
description "interface assigned"; description "interface assigned";
} }
list flow-settings { list service-data-flow-policy-configuration {
key policy-template-key; key policy-template-key;
uses fpc:policy-template-key; uses fpc:ref-configuration;
uses fpc:policy-configuration; description "Flow Policy Configuration";
description "Flow Policy Cofiguration";
} }
description "Service Dataflow"; description "Service Dataflow";
} }
description "DPN"; description "DPN";
} }
description "Mobility Context"; description "Mobility Context";
} }
// Events, Probes & Notifications // Events, Probes & Notifications
identity event-type { identity event-type {
skipping to change at page 76, line 4 skipping to change at page 84, line 36
} }
typedef event-type-id { typedef event-type-id {
type uint32; type uint32;
description "Event ID Type"; description "Event ID Type";
} }
grouping monitor-key { grouping monitor-key {
leaf monitor-key { leaf monitor-key {
type fpc:fpc-identity; type fpc:fpc-identity;
mandatory true; mandatory true;
description "Monitor Key"; description "Monitor Key";
} }
description "Monitor Id"; description "Monitor Id";
} }
grouping target-value {
leaf target {
type string;
description "target";
}
description "Target Value";
}
grouping monitor-config { grouping monitor-config {
uses fpc:templatedef; uses fpc:templatedef;
uses fpc:monitor-key; uses fpc:monitor-key;
uses fpc:target-value; leaf target {
container binding-information { type string;
description "Placeholder for information helpful description "target";
to binding the monitor ot the correct target";
} }
leaf deterrable { leaf deferrable {
type boolean; type boolean;
description "Indicates reports related to this description "Indicates reports related to this
config can be delayed."; config can be delayed.";
} }
choice configuration { choice configuration {
mandatory true; mandatory true;
leaf period { leaf period {
type uint32; type uint32;
description "Period"; description "Period";
} }
skipping to change at page 77, line 22 skipping to change at page 85, line 45
description "Monitor Configuration"; description "Monitor Configuration";
} }
// Top Level Structures // Top Level Structures
list tenant { list tenant {
key "tenant-key"; key "tenant-key";
leaf tenant-key { leaf tenant-key {
type fpc:fpc-identity; type fpc:fpc-identity;
description "Tenant Key"; description "Tenant Key";
} }
container mobility-information-model { container topology-information-model {
list dpn { list service-group {
key dpn-key; key "service-group-key role-key";
uses fpc:dpn-key;
leaf dpn-name {
type string;
description "DPN name";
}
leaf dpn-resource-mapping-reference {
type string;
description "Reference to underlying
DPN resource(s)";
}
leaf-list domain-key {
type fpc:fpc-identity;
description "Domains";
}
leaf-list service-group-key {
type fpc:fpc-identity;
description "Service Group";
}
list interface {
key "interface-key";
uses fpc:interface-key;
leaf interface-name {
type string;
description "Interface Name";
}
leaf-list roles {
type identityref {
base "fpc:role";
}
description "Roles supported";
}
leaf-list protocol {
type identityref {
base "interface-protocols";
}
description "Supported protocols";
}
uses fpc:interface-settings;
description "DPN interfaces";
}
list dpn-settings {
key policy-template-key;
uses fpc:policy-template-key;
uses fpc:policy-configuration;
description "DPN Policy Configuration";
}
description "Set of DPNs";
}
description "Mobility Information Model";
}
container dpn-checkpoint {
uses fpc:basename-info;
description "DPN Checkpoint information";
}
list service-group {
key service-group-key;
leaf service-group-key { leaf service-group-key {
type fpc:fpc-identity; type fpc:fpc-identity;
mandatory true; mandatory true;
description "Service Group Key"; description "Service Group Key";
} }
leaf service-group-name { leaf service-group-name {
type string; type string;
description "Service Group Name"; description "Service Group Name";
} }
uses fpc:role-key;
leaf role-name {
type string;
mandatory true;
description "Role Name";
}
leaf-list protocol {
type identityref {
base "interface-protocols";
}
min-elements 1;
description "Supported protocols";
}
leaf-list feature {
type identityref {
base "interface-protocols";
}
description "Supported features";
}
list service-group-configuration {
key index;
uses fpc:index;
uses fpc:policy-configuration-choice;
description "Settings";
}
list dpn { list dpn {
key "dpn-key role-key"; key dpn-key;
uses fpc:dpn-key; uses fpc:dpn-key;
uses fpc:role-key; min-elements 1;
list referenced-interface { list referenced-interface {
key interface-key; key interface-key;
uses fpc:interface-key; uses fpc:interface-key;
leaf-list peer-service-group-key { leaf-list peer-service-group-key {
type fpc:fpc-identity; type fpc:fpc-identity;
description "Peer Service Group"; description "Peer Service Group";
} }
description "Referenced Interface"; description "Referenced Interface";
} }
description "DPN"; description "DPN";
} }
list service-settings {
key policy-template-key;
uses fpc:policy-template-key;
uses fpc:policy-configuration;
description "Service Configuration";
}
description "Service Group"; description "Service Group";
} }
container service-group-checkpoint { list dpn {
uses fpc:basename-info; key dpn-key;
description "Service Group Checkpoint uses fpc:dpn-key;
information"; leaf dpn-name {
}
container topology-information-model {
list service-endpoint {
key role-key;
uses fpc:role-key;
leaf role-name {
type string; type string;
description "Role Name"; description "DPN name";
}
leaf dpn-resource-mapping-reference {
type string;
description "Reference to underlying DPN resource(s)";
}
leaf domain-key {
type fpc:fpc-identity;
description "Domains";
} }
leaf-list service-group-key { leaf-list service-group-key {
type fpc:fpc-identity; type fpc:fpc-identity;
description "Service Group"; description "Service Group";
} }
list interface { list interface {
key "dpn-key interface-key"; key "interface-key";
uses fpc:dpn-key;
uses fpc:interface-key; uses fpc:interface-key;
leaf interface-name {
type string;
description "Service Endpoint Interface Name";
}
leaf role {
type identityref {
base "fpc:role";
}
description "Roles supported";
}
leaf-list protocol { leaf-list protocol {
type identityref { type identityref {
base "interface-protocols"; base "interface-protocols";
} }
description "Supported protocols"; description "Supported protocols";
} }
leaf-list feature { list interface-configuration {
type identityref { key index;
base "interface-protocols"; uses fpc:index;
} uses fpc:policy-configuration-choice;
description "Supported features"; description "Interface settings";
} }
uses fpc:interface-settings; description "DPN interfaces";
description "A DPN interface types";
} }
description "Set of DPN types"; list dpn-policy-configuration {
key policy-template-key;
uses fpc:ref-configuration;
description "DPN Policy Configuration";
}
description "Set of DPNs";
} }
list domain { list domain {
key domain-key; key domain-key;
leaf domain-key { leaf domain-key {
type fpc:fpc-identity; type fpc:fpc-identity;
mandatory true; mandatory true;
description "Domain Key"; description "Domain Key";
} }
leaf domain-name { leaf domain-name {
type string; type string;
description "Domain displayname"; description "Domain displayname";
} }
list domain-settings { list domain-policy-configuration {
key policy-template-key; key policy-template-key;
uses fpc:policy-template-key; uses fpc:ref-configuration;
uses fpc:policy-configuration; description "Domain Configuration";
description "Domain Cofiguration";
} }
description "List of Domains"; description "List of Domains";
} }
uses fpc:basename-info; container dpn-checkpoint {
uses fpc:basename-info;
description "DPN Checkpoint information";
}
container service-group-checkpoint {
uses fpc:basename-info;
description "Service Group Checkpoint information";
}
container domain-checkpoint {
uses fpc:basename-info;
description "Domain Checkpoint information";
}
description "FPC Topology grouping"; description "FPC Topology grouping";
} }
container policy-information-model { container policy-information-model {
uses fpc:policy-information-model; uses fpc:policy-information-model;
uses fpc:basename-info; uses fpc:basename-info;
description "Policy"; description "Policy";
} }
list mobility-context { list mobility-context {
key "mobility-context-key"; key "mobility-context-key";
uses fpc:mobility-context; uses fpc:mobility-context;
skipping to change at page 81, line 51 skipping to change at page 90, line 14
enum op { enum op {
value 1; value 1;
description "All references are intra-operation"; description "All references are intra-operation";
} }
enum bundle { enum bundle {
value 2; value 2;
description "All references in exist in bundle"; description "All references in exist in bundle";
} }
enum storage { enum storage {
value 3; value 3;
description "One or more references exist in description "One or more references exist in storage.";
storage.";
} }
enum unknown { enum unknown {
value 4; value 4;
description "The location of the references description "The location of the references are unknown.";
are unknown.";
} }
} }
description "Search scope for references in description "Search scope for references in the operation.";
the operation.";
} }
rpc configure { rpc configure {
description "Configure RPC"; description "Configure RPC";
input { input {
uses client-id; uses client-id;
uses execution-delay; uses execution-delay;
uses ypatch:yang-patch; uses ypatch:yang-patch;
} }
output { output {
uses ypatch:yang-patch-status; uses ypatch:yang-patch-status;
} }
} }
augment "/configure/input/yang-patch/edit" { augment "/configure/input/yang-patch/edit" {
leaf op-ref-scope { leaf reference-scope {
type fpc:ref-scope; type fpc:ref-scope;
description "Reference Scope"; description "Reference Scope";
} }
uses fpcbase:instructions; uses fpcbase:instructions;
description "yang-patch edit augments for description "yang-patch edit augments for configure rpc";
configure rpc";
} }
grouping subsequent-edits { grouping subsequent-edits {
list subsequent-edit { list subsequent-edit {
key edit-id; key edit-id;
ordered-by user; ordered-by user;
description "Edit list"; description "Edit list";
leaf edit-id { leaf edit-id {
type string; type string;
description "Arbitrary string index description "Arbitrary string index for the edit.";
for the edit.";
} }
leaf operation { leaf operation {
type enumeration { type enumeration {
enum create { enum create {
description "Create"; description "Create";
} }
enum delete { enum delete {
description "Delete"; description "Delete";
} }
enum insert { enum insert {
description "Insert"; description "Insert";
} }
enum merge { enum merge {
description "Merge"; description "Merge";
} }
skipping to change at page 83, line 23 skipping to change at page 91, line 29
description "Merge"; description "Merge";
} }
enum move { enum move {
description "Move"; description "Move";
} }
enum replace { enum replace {
description "Replace"; description "Replace";
} }
enum remove { enum remove {
description description
"Delete the target node if it currently "Delete the target node if it currently exists.";
exists.";
} }
} }
mandatory true; mandatory true;
description description
"The datastore operation requested"; "The datastore operation requested";
} }
leaf target { leaf target {
type ypatch:target-resource-offset; type ypatch:target-resource-offset;
mandatory true; mandatory true;
skipping to change at page 83, line 38 skipping to change at page 91, line 43
description description
"The datastore operation requested"; "The datastore operation requested";
} }
leaf target { leaf target {
type ypatch:target-resource-offset; type ypatch:target-resource-offset;
mandatory true; mandatory true;
description description
"Identifies the target data node"; "Identifies the target data node";
} }
leaf point { leaf point {
when "(../operation = 'insert' or ../operation = 'move')" when "(../operation = 'insert' or ../operation = 'move')"
+ "and (../where = 'before' or ../where = 'after')" { + "and (../where = 'before' or ../where = 'after')" {
description description
"This leaf only applies for 'insert' or 'move' "This leaf only applies for 'insert' or 'move'
operations, before or after an existing entry."; operations, before or after an existing entry.";
} }
type ypatch:target-resource-offset; type ypatch:target-resource-offset;
description description
"The absolute URL path for the data node"; "The absolute URL path for the data node";
} }
leaf where { leaf where {
when "../operation = 'insert' or ../operation = 'move'" { when "../operation = 'insert' or ../operation = 'move'" {
description description
"This leaf only applies for 'insert' or 'move' "This leaf only applies for 'insert' or 'move'
operations."; operations.";
skipping to change at page 85, line 13 skipping to change at page 93, line 19
type boolean; type boolean;
description "Notify Follows Indication"; description "Notify Follows Indication";
} }
uses fpc:subsequent-edits; uses fpc:subsequent-edits;
description "Configure output augments"; description "Configure output augments";
} }
grouping op-header { grouping op-header {
uses client-id; uses client-id;
uses execution-delay; uses execution-delay;
leaf op-id { leaf operation-id {
type uint64; type uint64;
mandatory true; mandatory true;
description "Operation Identifier"; description "Operation Identifier";
} }
description "Common Operation header"; description "Common Operation header";
} }
grouping monitor-response { grouping monitor-response {
leaf op-id { leaf operation-id {
type uint64; type uint64;
mandatory true; mandatory true;
description "Operation Identifier"; description "Operation Identifier";
} }
choice edit-status-choice { choice edit-status-choice {
description description
"A choice between different types of status "A choice between different types of status
responses for each 'edit' entry."; responses for each 'edit' entry.";
leaf ok { leaf ok {
type empty; type empty;
skipping to change at page 85, line 48 skipping to change at page 94, line 6
uses rc:errors; uses rc:errors;
description description
"The server detected errors associated with the "The server detected errors associated with the
edit identified by the same 'edit-id' value."; edit identified by the same 'edit-id' value.";
} }
} }
description "Monitor Response"; description "Monitor Response";
} }
// Common RPCs // Common RPCs
rpc reg_monitor { rpc register_monitor {
description "Used to register monitoring of parameters/events"; description "Used to register monitoring of parameters/events";
input { input {
uses fpc:op-header; uses fpc:op-header;
list monitors { list monitor {
key monitor-key; key monitor-key;
uses fpc:monitor-config; uses fpc:monitor-config;
description "Monitor Configuration"; description "Monitor Configuration";
} }
} }
output { output {
uses fpc:monitor-response; uses fpc:monitor-response;
} }
} }
rpc dereg_monitor { rpc deregister_monitor {
description "Used to de-register monitoring of description "Used to de-register monitoring of
parameters/events"; parameters/events";
input { input {
uses fpc:op-header; uses fpc:op-header;
list monitor { list monitor {
key monitor-key; key monitor-key;
uses fpc:monitor-key; uses fpc:monitor-key;
min-elements 1; min-elements 1;
leaf send_data { leaf send_data {
type boolean; type boolean;
skipping to change at page 87, line 16 skipping to change at page 95, line 21
description "Configuration Result Notification"; description "Configuration Result Notification";
} }
augment "/config-result-notification" { augment "/config-result-notification" {
uses fpc:subsequent-edits; uses fpc:subsequent-edits;
description "config-result-notificatio augment"; description "config-result-notificatio augment";
} }
identity notification-cause { identity notification-cause {
description "Notification Cause"; description "Notification Cause";
} }
identity subscribed-event-occured { identity subscribed-event-occurred {
base "notification-cause"; base "notification-cause";
description "Subscribed Event Occurence"; description "Subscribed Event Occurence";
} }
identity low-threshold-crossed { identity low-threshold-crossed {
base "notification-cause"; base "notification-cause";
description "Subscribed Event Occurence"; description "Subscribed Event Occurence";
} }
identity high-threshold-crossed { identity high-threshold-crossed {
base "notification-cause"; base "notification-cause";
description "Subscribed Event Occurence"; description "Subscribed Event Occurence";
skipping to change at page 88, line 46 skipping to change at page 96, line 52
} }
list supported-interface-list { list supported-interface-list {
key role-key; key role-key;
uses fpc:role-key; uses fpc:role-key;
description "Support Intefaces"; description "Support Intefaces";
} }
description "DPN Candidate Information"; description "DPN Candidate Information";
} }
case dpn-unavailable { case dpn-unavailable {
leaf dpn-id { leaf dpn-id {
type fpc:fpc-identity; type fpc:fpc-identity;
description "DPN Identifier for DPN Unavailable"; description "DPN Identifier for DPN Unavailable";
} }
description "DPN Unavailable"; description "DPN Unavailable";
} }
anydata report-value { anydata report-value {
description "Any non integer report"; description "Any non integer report";
} }
description "Report Value"; description "Report Value";
} }
description "Report"; description "Report";
} }
description "Notify Message"; description "Notify Message";
} }
} }
<CODE ENDS> <CODE ENDS>
A.2. YANG Models A.2. FPC YANG Settings and Extensions Model
A.2.1. FPC YANG Settings and Extensions Model
This module defines the base data elements in FPC that are likely to This module defines the base data elements in FPC that are likely to
be extended. be extended.
This module references [RFC6991], ietf-trafficselector-types and This module references [RFC6991], ietf-trafficselector-types and
ietf-pmip-qos modules. ietf-pmip-qos modules.
<CODE BEGINS> file "ietf-dmm-fpc-settingsext@2018-02-28.yang" <CODE BEGINS> file "ietf-dmm-fpc-settingsext@2018-05-17.yang"
module ietf-dmm-fpc-settingsext { module ietf-dmm-fpc-settingsext {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-settingsext"; namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-settingsext";
prefix fpcbase; prefix fpcbase;
import ietf-inet-types { prefix inet; import ietf-inet-types { prefix inet;
revision-date 2013-07-15; } revision-date 2013-07-15; }
import ietf-trafficselector-types { prefix traffic-selectors; import ietf-trafficselector-types { prefix traffic-selectors;
revision-date 2018-02-28; } revision-date 2018-05-17; }
import ietf-yang-types { prefix ytypes; import ietf-yang-types { prefix ytypes;
revision-date 2013-07-15; } revision-date 2013-07-15; }
import ietf-pmip-qos { prefix pmipqos; import ietf-pmip-qos { prefix pmipqos;
revision-date 2018-02-28; } revision-date 2018-05-17; }
import ietf-diam-trafficclassifier { prefix rfc5777; import ietf-diam-trafficclassifier { prefix rfc5777;
revision-date 2018-02-28; } revision-date 2018-05-17; }
organization "IETF Distributed Mobility Management (DMM) organization "IETF Distributed Mobility Management (DMM)
Working Group"; Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/netmod/> "WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:netmod@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: Sri Gundavelli WG Chair: Sri Gundavelli
<mailto:sgundave@cisco.com> <mailto:sgundave@cisco.com>
Editor: Satoru Matsushima Editor: Satoru Matsushima
<mailto:satoru.matsushima@g.softbank.co.jp> <mailto:satoru.matsushima@g.softbank.co.jp>
Editor: Lyle Bertz Editor: Lyle Bertz
skipping to change at page 90, line 34 skipping to change at page 98, line 36
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described document must include Simplified BSD License text as described
in Section 4.e of the Trust Legal Provisions and are provided in Section 4.e of the Trust Legal Provisions and are provided
without warranty as described in the Simplified BSD License."; without warranty as described in the Simplified BSD License.";
revision 2018-02-28 { revision 2018-05-17 {
description "Version updates.";
reference "draft-ietf-dmm-fpc-cpdp-10";
}
revision 2017-09-27 {
description "Version 10 updates.";
reference "draft-ietf-dmm-fpc-cpdp-10";
}
revision 2017-07-22 {
description "Version 08 updates.";
reference "draft-ietf-dmm-fpc-cpdp-08";
}
revision 2017-03-08 {
description "Version 06 updates.";
reference "draft-ietf-dmm-fpc-cpdp-06";
}
revision 2016-08-03 {
description "Initial Revision."; description "Initial Revision.";
reference "draft-ietf-dmm-fpc-cpdp-05"; reference "draft-ietf-dmm-fpc-cpdp-10";
} }
//Tunnel Information //Tunnel Information
identity tunnel-type { identity tunnel-type {
description "Tunnel Type"; description "Tunnel Type";
} }
identity grev1 { identity grev1 {
base "fpcbase:tunnel-type"; base "fpcbase:tunnel-type";
description "GRE v1"; description "GRE v1";
} }
skipping to change at page 101, line 9 skipping to change at page 108, line 43
leaf qci { leaf qci {
type fpcbase:fpc-qos-class-identifier; type fpcbase:fpc-qos-class-identifier;
description "QCI"; description "QCI";
} }
leaf ue-agg-max-bitrate { leaf ue-agg-max-bitrate {
type uint32; type uint32;
description "UE Aggregate Max Bitrate"; description "UE Aggregate Max Bitrate";
} }
leaf apn-ambr { leaf apn-ambr {
type uint32; type uint32;
description "Access Point Name description
Aggregate Max Bit Rate"; "Access Point Name Aggregate Max Bit Rate";
} }
description "QoS Attributes"; description "QoS Attributes";
} }
description "Action Value"; description "Action Value";
} }
description "FPC Action Value"; description "FPC Action Value";
} }
// Instructions // Instructions
grouping instructions { grouping instructions {
container instructions { container command-set {
choice instr-type { choice instr-type {
leaf instr-3gpp-mob { leaf instr-3gpp-mob {
type fpcbase:threegpp-instr; type fpcbase:threegpp-instr;
description "3GPP GTP Mobility Instructions"; description "3GPP GTP Mobility Instructions";
} }
leaf instr-pmip { leaf instr-pmip {
type pmip-commandset; type pmip-commandset;
description "PMIP Instructions"; description "PMIP Instructions";
} }
description "Instruction Value Choice"; description "Instruction Value Choice";
} }
description "Instructions"; description "Instructions";
} }
description "Instructions Value"; description "Instructions Value";
} }
} }
<CODE ENDS> <CODE ENDS>
A.2.2. PMIP QoS Model A.3. PMIP QoS Model
This module defines the base protocol elements specified in this This module defines the base protocol elements specified in this
document. document.
This module references [RFC6991]. This module references [RFC6991].
<CODE BEGINS> file "ietf-pmip-qos@2018-02-28.yang" <CODE BEGINS> file "ietf-pmip-qos@2018-05-17.yang"
module ietf-pmip-qos { module ietf-pmip-qos {
yang-version 1.1; yang-version 1.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-trafficselector-types { prefix traffic-selectors; import ietf-trafficselector-types { prefix traffic-selectors;
revision-date 2018-02-28; } revision-date 2018-05-17; }
organization "IETF Distributed Mobility Management (DMM) organization "IETF Distributed Mobility Management (DMM)
Working Group"; Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/netmod/> "WG Web: <http://tools.ietf.org/wg/netmod/>
WG List: <mailto:netmod@ietf.org> WG List: <mailto:netmod@ietf.org>
WG Chair: Dapeng Liu WG Chair: Dapeng Liu
<mailto:maxpassion@gmail.com> <mailto:maxpassion@gmail.com>
skipping to change at page 102, line 51 skipping to change at page 110, line 36
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described document must include Simplified BSD License text as described
in Section 4.e of the Trust Legal Provisions and are provided in Section 4.e of the Trust Legal Provisions and are provided
without warranty as described in the Simplified BSD License."; without warranty as described in the Simplified BSD License.";
revision 2018-02-28 { revision 2018-05-17 {
description "Updated to drop unnecessary attribute types. description "Initial Revision.";
Update WG co-chair.";
reference "RFC 6088: Traffic Selectors for Flow Bindings"; reference "RFC 6088: Traffic Selectors for Flow Bindings";
} }
revision 2017-10-29 {
description "Base Version";
reference
"RFC 6088: Traffic Selectors for Flow Bindings";
}
// Type Definitions // Type Definitions
// QoS Option Field Type Definitions // QoS Option Field Type Definitions
typedef sr-id { typedef sr-id {
type uint8; type uint8;
description description
"An 8-bit unsigned integer used for identifying the QoS "An 8-bit unsigned integer used for identifying the QoS
Service Request."; Service Request.";
} }
typedef traffic-class { typedef traffic-class {
type inet:dscp; type inet:dscp;
description description
"Traffic Class consists of a 6-bit DSCP field followed by a "Traffic Class consists of a 6-bit DSCP field followed by a
2-bit reserved field."; 2-bit reserved field.";
reference reference
"RFC 3289: Management Information Base for the "RFC 3289: Management Information Base for the
Differentiated Services Architecture Differentiated 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 { enum RESPONSE {
value 0; value 0;
skipping to change at page 105, line 26 skipping to change at page 113, line 4
leaf exclude-flag { leaf exclude-flag {
type boolean; type boolean;
mandatory true; mandatory true;
description description
"This flag is used to request that the uplink/downlink "This flag is used to request that the uplink/downlink
flows for which the network is providing flows for which the network is providing
Guaranteed-Bit-Rate service be excluded from the Guaranteed-Bit-Rate service be excluded from the
target IP flows for which 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.";
} }
description "Per-Session-Agg-Max-Bit-Rate Value"; description "Per-Session-Agg-Max-Bit-Rate Value";
} }
grouping Allocation-Retention-Priority-Value { grouping Allocation-Retention-Priority-Value {
leaf prioirty-level { leaf priority-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 is used to decide "This is a 4-bit unsigned integer value. It is used to decide
whether a mobility session establishment or modification whether a mobility session establishment or modification
request can be accepted; this is typically used for request can be accepted; this is typically used for
admission control of Guaranteed Bit Rate traffic in case of admission control of Guaranteed Bit Rate traffic in case of
resource limitations."; resource limitations.";
} }
leaf premption-capability { leaf preemption-capability {
type enumeration { type enumeration {
enum enabled { enum enabled {
value 0; value 0;
description "enabled"; description "enabled";
} }
enum disabled { enum disabled {
value 1; value 1;
description "disabled"; description "disabled";
} }
enum reserved1 { enum reserved1 {
value 2; value 2;
description "reserved1"; description "reserved1";
} }
enum reserved2 { enum reserved2 {
value 3; value 3;
description "reserved2"; description "reserved2";
} }
} }
mandatory true; mandatory true;
description description
"This is a 2-bit unsigned integer value. It defines whether "This is a 2-bit unsigned integer value. It defines whether a
a service data flow can get resources that were already service data flow can get resources tha were already
assigned to another service data flow with a lower priority assigned to another service data flow with a lower priority
level."; level.";
} }
leaf premption-vulnerability { leaf preemption-vulnerability {
type enumeration { type enumeration {
enum enabled { enum enabled {
value 0; value 0;
description "enabled"; description "enabled";
} }
enum disabled { enum disabled {
value 1; value 1;
description "disabled"; description "disabled";
} }
enum reserved1 { enum reserved1 {
skipping to change at page 108, line 45 skipping to change at page 116, line 23
description "Aggregate-Max-UL-Bit-Rate Value"; description "Aggregate-Max-UL-Bit-Rate Value";
} }
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 Value";
} }
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 Value";
} }
description "PMIP QoS Attributes"; description "PMIP QoS Attributes. Note Vendor option
is not a part of this grouping";
} }
grouping qosoption { grouping qosoption {
leaf srid { leaf srid {
type sr-id; type sr-id;
mandatory true; mandatory true;
description "Service Request Identifier"; description "Service Request Identifier";
} }
leaf trafficclass { leaf trafficclass {
type traffic-class; type traffic-class;
mandatory true; mandatory true;
description "Traffic Class"; description "Traffic Class";
} }
leaf operationcode { leaf operationcode {
type operational-code; type operational-code;
mandatory true; mandatory true;
description "Operation Code"; description "Operation Code";
} }
uses qosattribute; uses qos-pmip:qosattribute;
uses qos-pmip:QoS-Vendor-Specific-Attribute-Value-Base;
container traffic-selector { container traffic-selector {
uses traffic-selectors:traffic-selector; uses traffic-selectors:traffic-selector;
description "traffic selector"; description "traffic selector";
} }
description "PMIP QoS Option"; description "PMIP QoS Option";
} }
} }
<CODE ENDS> <CODE ENDS>
A.2.3. Traffic Selectors YANG Model A.4. Traffic Selectors YANG Model
This module defines traffic selector types commonly used in Proxy This module defines traffic selector types commonly used in Proxy
Mobile IP (PMIP). Mobile IP (PMIP).
This module references [RFC6991]. This module references [RFC6991].
<CODE BEGINS> file "ietf-trafficselector-types@2018-02-28.yang" <CODE BEGINS> file "ietf-trafficselector-types@2018-05-17.yang"
module ietf-trafficselector-types { module ietf-trafficselector-types {
yang-version 1.1; yang-version 1.1;
namespace namespace
"urn:ietf:params:xml:ns:yang:ietf-trafficselector-types"; "urn:ietf:params:xml:ns:yang:ietf-trafficselector-types";
prefix "traffic-selectors"; prefix "traffic-selectors";
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
skipping to change at page 110, line 35 skipping to change at page 118, line 15
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described document must include Simplified BSD License text as described
in Section 4.e of the Trust Legal Provisions and are provided in Section 4.e of the Trust Legal Provisions and are provided
without warranty as described in the Simplified BSD License."; without warranty as described in the Simplified BSD License.";
revision 2018-02-28 { revision 2018-05-17 {
description description
"removed ts-list and updated WG co-chair."; "Initial Revision.";
reference reference
"RFC 6088: Traffic Selectors for Flow Bindings"; "RFC 6088: Traffic Selectors for Flow Bindings";
} }
revision 2017-10-29 {
description "Base Version";
reference
"RFC 6088: Traffic Selectors for Flow Bindings";
}
// Identities // Identities
identity traffic-selector-format { identity traffic-selector-format {
description description
"The base type for Traffic-Selector Formats"; "The base type for Traffic-Selector Formats";
} }
identity ipv4-binary-selector-format { identity ipv4-binary-selector-format {
base traffic-selector-format; base traffic-selector-format;
description description
"IPv4 Binary Traffic Selector Format"; "IPv4 Binary Traffic Selector Format";
} }
identity ipv6-binary-selector-format { identity ipv6-binary-selector-format {
base traffic-selector-format; base traffic-selector-format;
skipping to change at page 117, line 20 skipping to change at page 124, line 41
} }
description "ipv6 binary traffic selector"; description "ipv6 binary traffic selector";
} }
grouping traffic-selector { grouping traffic-selector {
leaf ts-format { leaf ts-format {
type identityref { type identityref {
base traffic-selector-format; base traffic-selector-format;
} }
description "Traffic Selector Format"; description "Traffic Selector Format";
} }
uses traffic-selector-base; uses traffic-selectors:traffic-selector-base;
uses ipv4-binary-traffic-selector; uses traffic-selectors:ipv4-binary-traffic-selector;
uses ipv6-binary-traffic-selector; uses traffic-selectors:ipv6-binary-traffic-selector;
description description
"The traffic selector includes the parameters used to match "The traffic selector includes the parameters used to match
packets for a specific flow binding."; packets for a specific flow binding.";
reference reference
"RFC 6089: Flow Bindings in Mobile IPv6 and Network "RFC 6089: Flow Bindings in Mobile IPv6 and Network
Mobility (NEMO) Basic Support"; Mobility (NEMO) Basic Support";
} }
} }
<CODE ENDS> <CODE ENDS>
A.2.4. RFC 5777 Classifier YANG Model A.5. RFC 5777 Classifier YANG Model
This module defines the RFC 5777 Classifer. This module defines the RFC 5777 Classifer.
This module references [RFC5777]. This module references [RFC5777].
<CODE BEGINS> file "ietf-diam-trafficclassifier@2018-02-28.yang" <CODE BEGINS> file "ietf-diam-trafficclassifier@2018-05-17.yang"
module ietf-diam-trafficclassifier { module ietf-diam-trafficclassifier {
yang-version 1.1; yang-version 1.1;
namespace namespace
"urn:ietf:params:xml:ns:yang:ietf-diam-trafficclassifier"; "urn:ietf:params:xml:ns:yang:ietf-diam-trafficclassifier";
prefix "diamclassifier"; prefix "diamclassifier";
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
skipping to change at page 118, line 44 skipping to change at page 126, line 16
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described document must include Simplified BSD License text as described
in Section 4.e of the Trust Legal Provisions and are provided in Section 4.e of the Trust Legal Provisions and are provided
without warranty as described in the Simplified BSD License."; without warranty as described in the Simplified BSD License.";
revision 2018-02-28 { revision 2018-05-17 {
description description
"Initial"; "Initial";
reference reference
"RFC 5777: Traffic Classification and Quality of Service (QoS) "RFC 5777: Traffic Classification and Quality of Service (QoS)
Attributes for Diameter"; Attributes for Diameter";
} }
typedef eui64-address-type { typedef eui64-address-type {
type string { type string {
length "6"; length "6";
skipping to change at page 125, line 15 skipping to change at page 132, line 36
} }
description "User priority range"; description "User priority range";
} }
description "Ether Option"; description "Ether Option";
} }
description "RFC 5777 Classifier"; description "RFC 5777 Classifier";
} }
} }
<CODE ENDS> <CODE ENDS>
A.3. FPC YANG Data Model Structure Appendix B. FPC YANG Tree Structure
This section only shows the structure for FPC YANG model. NOTE, it This section only shows the structure for FPC YANG model. NOTE, it
does NOT show the settings, Action values or Descriptor Value. does NOT show the settings, Action values or Descriptor Value.
descriptor_value:
+--rw (descriptor-value)
+--:(all-traffic)
| +--rw all-traffic? empty
+--:(no-traffic)
| +--rw no-traffic? empty
+--:(prefix-descriptor)
| +--rw destination-ip? inet:ip-prefix
| +--rw source-ip? inet:ip-prefix
+--:(pmip-selector)
| +--rw ts-format? identityref
| +--rw ipsec-spi-range!
| | +--rw start-spi ipsec-spi
| | +--rw end-spi? ipsec-spi
| +--rw source-port-range!
| | +--rw start-port inet:port-number
| | +--rw end-port? inet:port-number
| +--rw destination-port-range!
| | +--rw start-port inet:port-number
| | +--rw end-port? inet:port-number
| +--rw source-address-range-v4!
| | +--rw start-address inet:ipv4-address
| | +--rw end-address? inet:ipv4-address
| +--rw destination-address-range-v4!
| | +--rw start-address inet:ipv4-address
| | +--rw end-address? inet:ipv4-address
| +--rw ds-range!
| | +--rw start-ds inet:dscp
| | +--rw end-ds? inet:dscp
| +--rw protocol-range!
| | +--rw start-protocol uint8
| | +--rw end-protocol? uint8
| +--rw source-address-range-v6!
| | +--rw start-address inet:ipv6-address
| | +--rw end-address? inet:ipv6-address
| +--rw destination-address-range-v6!
| | +--rw start-address inet:ipv6-address
| | +--rw end-address? inet:ipv6-address
| +--rw flow-label-range!
| | +--rw start-flow-label? inet:ipv6-flow-label
| | +--rw end-flow-label? inet:ipv6-flow-label
| +--rw traffic-class-range!
| | +--rw start-traffic-class? inet:dscp
| | +--rw end-traffic-class? inet:dscp
| +--rw next-header-range!
| +--rw start-next-header? uint8
| +--rw end-next-header? uint8
+--:(rfc5777-classifier-template)
| +--rw rfc5777-classifier-template
| +--rw protocol? uint8
| +--rw direction? diamclassifier:direction-type
| +--rw from-spec* [index]
| | +--rw index uint16
| | +--rw ip-address* inet:ip-address
| | +--rw ip-address-range* [index]
| | | +--rw index uint16
| | | +--rw ip-address-start? inet:ip-address
| | | +--rw ip-address-end? inet:ip-address
| | +--rw ip-address-mask* inet:ip-prefix
| | +--rw mac-address* yang-types:mac-address
| | +--rw mac-address-mask* [mac-address]
| | | +--rw mac-address yang-types:mac-address
| | | +--rw macaddress-mask-pattern yang-types:mac-address
| | +--rw eui64-address*
diamclassifier:eui64-address-type
| | +--rw eui64-address-mask* [eui64-address]
| | | +--rw eui64-address
diamclassifier:eui64-address-type
| | | +--rw eui64-address-mask-pattern
diamclassifier:eui64-address-type
| | +--rw port* inet:port-number
| | +--rw port-range* [index]
| | | +--rw index uint16
| | | +--rw ip-address-start? inet:port-number
| | | +--rw ip-address-end? inet:port-number
| | +--rw negated?
diamclassifier:negated-flag-type
| | +--rw use-assigned-address? boolean
| +--rw to-spec* [index]
| | +--rw index uint16
| | +--rw ip-address* inet:ip-address
| | +--rw ip-address-range* [index]
| | | +--rw index uint16
| | | +--rw ip-address-start? inet:ip-address
| | | +--rw ip-address-end? inet:ip-address
| | +--rw ip-address-mask* inet:ip-prefix
| | +--rw mac-address* yang-types:mac-address
| | +--rw mac-address-mask* [mac-address]
| | | +--rw mac-address yang-types:mac-address
| | | +--rw macaddress-mask-pattern yang-types:mac-address
| | +--rw eui64-address*
diamclassifier:eui64-address-type
| | +--rw eui64-address-mask* [eui64-address]
| | | +--rw eui64-address
diamclassifier:eui64-address-type
| | | +--rw eui64-address-mask-pattern
diamclassifier:eui64-address-type
| | +--rw port* inet:port-number
| | +--rw port-range* [index]
| | | +--rw index uint16
| | | +--rw ip-address-start? inet:port-number
| | | +--rw ip-address-end? inet:port-number
| | +--rw negated?
diamclassifier:negated-flag-type
| | +--rw use-assigned-address? boolean
| +--rw disffserv-code-point* inet:dscp
| +--rw fragmentation-flag? enumeration
| +--rw ip-option* [option-type]
| | +--rw option-type uint8
| | +--rw ip-option-value* string
| | +--rw negated? diamclassifier:negated-flag-type
| +--rw tcp-option* [option-type]
| | +--rw option-type uint8
| | +--rw ip-option-value* string
| | +--rw negated? diamclassifier:negated-flag-type
| +--rw tcp-flag* [tcp-flag-type]
| | +--rw tcp-flag-type uint32
| | +--rw negated? diamclassifier:negated-flag-type
| +--rw icmp-option* [option-type]
| | +--rw option-type uint8
| | +--rw ip-option-value* string
| | +--rw negated? diamclassifier:negated-flag-type
| +--rw eth-option* [index]
| +--rw index uint16
| +--rw eth-proto-type
| | +--rw eth-ether-type* string
| | +--rw eth-sap* string
| +--rw vlan-id-range* [index]
| | +--rw index uint16
| | +--rw s-vlan-id-start* diamclassifier:vlan-id
| | +--rw s-vlan-id-end* diamclassifier:vlan-id
| | +--rw c-vlan-id-start* diamclassifier:vlan-id
| | +--rw c-vlan-id-end* diamclassifier:vlan-id
| +--rw user-priority-range* [index]
| +--rw index uint16
| +--rw low-user-priority* uint32
| +--rw high-user-priority* uint32
+--:(packet-filter)
| +--rw packet-filter
| +--rw direction? fpcbase:packet-filter-direction
| +--rw identifier? uint8
| +--rw evaluation-precedence? uint8
| +--rw contents* [component-type-identifier]
| +--rw component-type-identifier fpcbase:component-type-id
| +--rw (value)?
| +--:(ipv4-local)
| | +--rw ipv4-local? inet:ipv4-address
| +--:(ipv6-prefix-local)
| | +--rw ipv6-prefix-local? inet:ipv6-prefix
| +--:(ipv4-ipv6-remote)
| | +--rw ipv4-ipv6-remote? inet:ip-address
| +--:(ipv6-prefix-remote)
| | +--rw ipv6-prefix-remote? inet:ipv6-prefix
| +--:(next-header)
| | +--rw next-header? uint8
| +--:(local-port)
| | +--rw local-port? inet:port-number
| +--:(local-port-range)
| | +--rw local-port-lo? inet:port-number
| | +--rw local-port-hi? inet:port-number
| +--:(remote-port)
| | +--rw remote-port? inet:port-number
| +--:(remote-port-range)
| | +--rw remote-port-lo? inet:port-number
| | +--rw remote-port-hi? inet:port-number
| +--:(ipsec-index)
| | +--rw ipsec-index? traffic-selectors:ipsec-spi
| +--:(traffic-class)
| | +--rw traffic-class? inet:dscp
| +--:(traffic-class-range)
| | +--rw traffic-class-lo? inet:dscp
| | +--rw traffic-class-hi? inet:dscp
| +--:(flow-label)
| +--rw flow-label* inet:ipv6-flow-label
+--:(tunnel-info)
+--rw tunnel-info
+--rw tunnel-local-address? inet:ip-address
+--rw tunnel-remote-address? inet:ip-address
+--rw mtu-size? uint32
+--rw tunnel? identityref
+--rw payload-type? enumeration
+--rw gre-key? uint32
+--rw gtp-tunnel-info
| +--rw local-tunnel-identifier? uint32
| +--rw remote-tunnel-identifier? uint32
| +--rw sequence-numbers-enabled? boolean
+--rw ebi? fpcbase:ebi-type
+--rw lbi? fpcbase:ebi-type
action_value:
+--:(action-value)
| +--rw (action-value)
| +--:(drop)
| | +--rw drop? empty
| +--:(rewrite)
| | +--rw rewrite
| | +--rw (rewrite-value)?
| | +--:(prefix-descriptor)
| | | +--rw destination-ip? inet:ip-prefix
| | | +--rw source-ip? inet:ip-prefix
| | +--:(pmip-selector)
| | | +--rw ts-format? identityref
| | | +--rw ipsec-spi-range!
| | | | +--rw start-spi ipsec-spi
| | | | +--rw end-spi? ipsec-spi
| | | +--rw source-port-range!
| | | | +--rw start-port inet:port-number
| | | | +--rw end-port? inet:port-number
| | | +--rw destination-port-range!
| | | | +--rw start-port inet:port-number
| | | | +--rw end-port? inet:port-number
| | | +--rw source-address-range-v4!
| | | | +--rw start-address inet:ipv4-address
| | | | +--rw end-address? inet:ipv4-address
| | | +--rw destination-address-range-v4!
| | | | +--rw start-address inet:ipv4-address
| | | | +--rw end-address? inet:ipv4-address
| | | +--rw ds-range!
| | | | +--rw start-ds inet:dscp
| | | | +--rw end-ds? inet:dscp
| | | +--rw protocol-range!
| | | | +--rw start-protocol uint8
| | | | +--rw end-protocol? uint8
| | | +--rw source-address-range-v6!
| | | | +--rw start-address inet:ipv6-address
| | | | +--rw end-address? inet:ipv6-address
| | | +--rw destination-address-range-v6!
| | | | +--rw start-address inet:ipv6-address
| | | | +--rw end-address? inet:ipv6-address
| | | +--rw flow-label-range!
| | | | +--rw start-flow-label? inet:ipv6-flow-label
| | | | +--rw end-flow-label? inet:ipv6-flow-label
| | | +--rw traffic-class-range!
| | | | +--rw start-traffic-class? inet:dscp
| | | | +--rw end-traffic-class? inet:dscp
| | | +--rw next-header-range!
| | | +--rw start-next-header? uint8
| | | +--rw end-next-header? uint8
| | +--:(rfc5777-classifier-template)
| | +--rw rfc5777-classifier-template
| | +--rw protocol? uint8
| | +--rw direction?
diamclassifier:direction-type
| | +--rw from-spec* [index]
| | | +--rw index uint16
| | | +--rw ip-address* inet:ip-address
| | | +--rw ip-address-range* [index]
| | | | +--rw index uint16
| | | | +--rw ip-address-start? inet:ip-address
| | | | +--rw ip-address-end? inet:ip-address
| | | +--rw ip-address-mask* inet:ip-prefix
| | | +--rw mac-address* yang-types:mac-address
| | | +--rw mac-address-mask* [mac-address]
| | | | +--rw mac-address
yang-types:mac-address
| | | | +--rw macaddress-mask-pattern
yang-types:mac-address
| | | +--rw eui64-address*
diamclassifier:eui64-address-type
| | | +--rw eui64-address-mask* [eui64-address]
| | | | +--rw eui64-address
diamclassifier:eui64-address-type
| | | | +--rw eui64-address-mask-pattern
diamclassifier:eui64-address-type
| | | +--rw port* inet:port-number
| | | +--rw port-range* [index]
| | | | +--rw index uint16
| | | | +--rw ip-address-start? inet:port-number
| | | | +--rw ip-address-end? inet:port-number
| | | +--rw negated?
diamclassifier:negated-flag-type
| | | +--rw use-assigned-address? boolean
| | +--rw to-spec* [index]
| | | +--rw index uint16
| | | +--rw ip-address* inet:ip-address
| | | +--rw ip-address-range* [index]
| | | | +--rw index uint16
| | | | +--rw ip-address-start? inet:ip-address
| | | | +--rw ip-address-end? inet:ip-address
| | | +--rw ip-address-mask* inet:ip-prefix
| | | +--rw mac-address*
yang-types:mac-address
| | | +--rw mac-address-mask* [mac-address]
| | | | +--rw mac-address
yang-types:mac-address
| | | | +--rw macaddress-mask-pattern
yang-types:mac-address
| | | +--rw eui64-address*
diamclassifier:eui64-address-type
| | | +--rw eui64-address-mask* [eui64-address]
| | | | +--rw eui64-address
diamclassifier:eui64-address-type
| | | | +--rw eui64-address-mask-pattern
diamclassifier:eui64-address-type
| | | +--rw port* inet:port-number
| | | +--rw port-range* [index]
| | | | +--rw index uint16
| | | | +--rw ip-address-start? inet:port-number
| | | | +--rw ip-address-end? inet:port-number
| | | +--rw negated?
diamclassifier:negated-flag-type
| | | +--rw use-assigned-address? boolean
| | +--rw disffserv-code-point* inet:dscp
| | +--rw fragmentation-flag? enumeration
| | +--rw ip-option* [option-type]
| | | +--rw option-type uint8
| | | +--rw ip-option-value* string
| | | +--rw negated?
diamclassifier:negated-flag-type
| | +--rw tcp-option* [option-type]
| | | +--rw option-type uint8
| | | +--rw ip-option-value* string
| | | +--rw negated?
diamclassifier:negated-flag-type
| | +--rw tcp-flag* [tcp-flag-type]
| | | +--rw tcp-flag-type uint32
| | | +--rw negated?
diamclassifier:negated-flag-type
| | +--rw icmp-option* [option-type]
| | | +--rw option-type uint8
| | | +--rw ip-option-value* string
| | | +--rw negated?
diamclassifier:negated-flag-type
| | +--rw eth-option* [index]
| | +--rw index uint16
| | +--rw eth-proto-type
| | | +--rw eth-ether-type* string
| | | +--rw eth-sap* string
| | +--rw vlan-id-range* [index]
| | | +--rw index uint16
| | | +--rw s-vlan-id-start*
diamclassifier:vlan-id
| | | +--rw s-vlan-id-end*
diamclassifier:vlan-id
| | | +--rw c-vlan-id-start*
diamclassifier:vlan-id
| | | +--rw c-vlan-id-end*
diamclassifier:vlan-id
| | +--rw user-priority-range* [index]
| | +--rw index uint16
| | +--rw low-user-priority* uint32
| | +--rw high-user-priority* uint32
| +--:(copy-forward-nexthop)
| | +--rw copy-forward-nexthop
| | +--rw (next-hop-value)?
| | +--:(ip-address)
| | | +--rw ip-address? inet:ip-address
| | +--:(mac-address)
| | | +--rw mac-address? ytypes:mac-address
| | +--:(service-path)
| | | +--rw service-path? fpcbase:fpc-service-path-id
| | +--:(mpls-path)
| | | +--rw mpls-path? fpcbase:fpc-mpls-label
| | +--:(nsh)
| | | +--rw nsh? string
| | +--:(interface)
| | | +--rw interface? uint16
| | +--:(segment-identifier)
| | | +--rw segment-identifier? fpcbase:segment-id
| | +--:(mpls-label-stack)
| | | +--rw mpls-label-stack* fpcbase:fpc-mpls-label
| | +--:(mpls-sr-stack)
| | | +--rw mpls-sr-stack* fpcbase:fpc-mpls-label
| | +--:(srv6-stack)
| | | +--rw srv6-stack* fpcbase:segment-id
| | +--:(tunnel-info)
| | +--rw tunnel-info
| | +--rw tunnel-local-address? inet:ip-address
| | +--rw tunnel-remote-address? inet:ip-address
| | +--rw mtu-size? uint32
| | +--rw tunnel? identityref
| | +--rw payload-type? enumeration
| | +--rw gre-key? uint32
| | +--rw gtp-tunnel-info
| | | +--rw local-tunnel-identifier? uint32
| | | +--rw remote-tunnel-identifier? uint32
| | | +--rw sequence-numbers-enabled? boolean
| | +--rw ebi? fpcbase:ebi-type
| | +--rw lbi? fpcbase:ebi-type
| +--:(nexthop)
| | +--rw nexthop
| | +--rw (next-hop-value)?
| | +--:(ip-address)
| | | +--rw ip-address? inet:ip-address
| | +--:(mac-address)
| | | +--rw mac-address? ytypes:mac-address
| | +--:(service-path)
| | | +--rw service-path? fpcbase:fpc-service-path-id
| | +--:(mpls-path)
| | | +--rw mpls-path? fpcbase:fpc-mpls-label
| | +--:(nsh)
| | | +--rw nsh? string
| | +--:(interface)
| | | +--rw interface? uint16
| | +--:(segment-identifier)
| | | +--rw segment-identifier? fpcbase:segment-id
| | +--:(mpls-label-stack)
| | | +--rw mpls-label-stack* fpcbase:fpc-mpls-label
| | +--:(mpls-sr-stack)
| | | +--rw mpls-sr-stack* fpcbase:fpc-mpls-label
| | +--:(srv6-stack)
| | | +--rw srv6-stack* fpcbase:segment-id
| | +--:(tunnel-info)
| | +--rw tunnel-info
| | +--rw tunnel-local-address? inet:ip-address
| | +--rw tunnel-remote-address? inet:ip-address
| | +--rw mtu-size? uint32
| | +--rw tunnel? identityref
| | +--rw payload-type? enumeration
| | +--rw gre-key? uint32
| | +--rw gtp-tunnel-info
| | | +--rw local-tunnel-identifier? uint32
| | | +--rw remote-tunnel-identifier? uint32
| | | +--rw sequence-numbers-enabled? boolean
| | +--rw ebi? fpcbase:ebi-type
| | +--rw lbi? fpcbase:ebi-type
| +--:(qos)
| +--rw trafficclass? inet:dscp
| +--rw per-mn-agg-max-dl?
qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value
| +--rw per-mn-agg-max-ul?
qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value
| +--rw per-session-agg-max-dl
| | +--rw max-rate uint32
| | +--rw service-flag boolean
| | +--rw exclude-flag boolean
| +--rw per-session-agg-max-ul
| | +--rw max-rate uint32
| | +--rw service-flag boolean
| | +--rw exclude-flag boolean
| +--rw priority-level uint8
| +--rw preemption-capability enumeration
| +--rw preemption-vulnerability enumeration
| +--rw agg-max-dl?
qos-pmip:Aggregate-Max-DL-Bit-Rate-Value
| +--rw agg-max-ul?
qos-pmip:Aggregate-Max-UL-Bit-Rate-Value
| +--rw gbr-dl?
qos-pmip:Guaranteed-DL-Bit-Rate-Value
| +--rw gbr-ul?
qos-pmip:Guaranteed-UL-Bit-Rate-Value
| +--rw qci?
fpcbase:fpc-qos-class-identifier
| +--rw ue-agg-max-bitrate? uint32
| +--rw apn-ambr? uint32
policy-configuration-value:
| | | +--rw (policy-configuration-value)?
| | | +--:(descriptor-value)
| | | | ...
| | | +--:(action-value)
| | | | ...
| | | +--:(setting-value)
| | | +--rw setting? <anydata>
policy-configuration:
| | | +--rw policy-configuration* [index]
| | | +--rw index uint16
| | | +--rw extensible? boolean
| | | +--rw static-attributes* string
| | | +--rw mandatory-attributes* string
| | | +--rw entity-state? enumeration
| | | +--rw version? uint32
| | | +--rw (policy-configuration-value)?
| | | ...
module: ietf-dmm-fpc module: ietf-dmm-fpc
+--rw tenant* [tenant-key] +--rw tenant* [tenant-key]
+--rw tenant-key fpc:fpc-identity +--rw tenant-key fpc:fpc-identity
+--rw mobility-information-model +--rw topology-information-model
| +--rw dpn* [dpn-key] | +--rw service-group* [service-group-key role-key]
| +--rw dpn-key