submodule ietf-dmm-fpc-base {
belongs-to ietf-dmm-fpc {
prefix fpc;
}
import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
import ietf-yang-types { prefix ytypes;
revision-date 2013-07-15; }
organization "IETF Distributed Mobility Management (DMM)
Working Group";
contact
"WG Web:
WG List:
WG Chair: Dapeng Liu
WG Chair: Jouni Korhonen
Editor: Satoru Matsushima
Editor: Lyle Bertz
";
description
"This module contains YANG definition for
Forwarding Policy Configuration Protocol(FPCP).
Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this
document must include Simplified BSD License text as described
in Section 4.e of the Trust Legal Provisions and are provided
without warranty as described in the Simplified BSD License.";
revision 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";
}
feature fpc-basic-agent {
description "This is an agent co-located with a DPN. In this
case only DPN Peer Groups, the DPN Id and Control Protocols
are exposed along with the core structures.";
}
feature fpc-multi-dpn {
description "The agent supports multiple DPNs.";
}
typedef fpc-identity {
type union {
type uint32;
type string;
type instance-identifier;
}
description "FPC Identity";
}
grouping target-value {
leaf target {
type fpc-identity;
description "Target Identity";
}
description "FPC Target Value";
}
grouping targets-value {
list targets {
key "target";
leaf target {
type fpc-identity;
description "Target Id";
}
leaf dpn-id {
type fpc:fpc-dpn-id;
description "DPN Id";
}
description "List of Targets";
}
description "Targets Value";
}
// Descriptor Structure
typedef fpc-descriptor-id-type {
type fpc:fpc-identity;
description "Descriptor-ID";
}
identity fpc-descriptor-type {
description "A traffic descriptor";
}
grouping fpc-descriptor-id {
leaf descriptor-id {
type fpc:fpc-identity;
description "Descriptor Id";
}
description "FPC Descriptor ID value";
}
grouping fpc-descriptor {
uses fpc:fpc-descriptor-id;
leaf descriptor-type {
type identityref {
base "fpc-descriptor-type";
}
mandatory true;
description "Descriptor Type";
}
choice descriptor-value {
case all-traffic {
leaf all-traffic {
type empty;
description "Empty Value";
}
}
description "Descriptor Value";
}
description "FPC Descriptor";
}
// Action Structure
typedef fpc-action-id-type {
type fpc:fpc-identity;
description "Action-ID";
}
identity fpc-action-type {
description "Action Type";
}
grouping fpc-action-id {
leaf action-id {
type fpc:fpc-action-id-type;
description "Action Identifier";
}
description "FPC Action ID";
}
grouping fpc-action {
uses fpc:fpc-action-id;
leaf action-type {
type identityref {
base "fpc-action-type";
}
mandatory true;
description "Action Type";
}
choice action-value {
case drop {
leaf drop {
type empty;
description "Empty Value";
}
}
description "FPC Action Value";
}
description "FPC Action";
}
// Rule Structure
grouping fpc-rule {
list descriptors {
key descriptor-id;
uses fpc:fpc-descriptor-id;
leaf direction {
type fpc:fpc-direction;
description "Direction";
}
description "Descriptors";
}
list actions {
key action-id;
leaf action-order {
type uint32;
description "Action Execution Order";
}
uses fpc:fpc-action-id;
description "Actions";
}
description
"FPC Rule. When no actions are present the action is DROP.
When no Descriptors are empty the default is
'all traffic'.";
}
// Policy Structures
typedef fpc-policy-id {
type fpc:fpc-identity;
description "Policy Identifier";
}
grouping fpc-policy {
leaf policy-id {
type fpc:fpc-policy-id;
description "Policy Id";
}
list rules {
key order;
leaf order {
type uint32;
description "Rule Order";
}
uses fpc:fpc-rule;
description "Rules";
}
description "FPC Policy";
}
// Policy Group
typedef fpc-policy-group-id {
type fpc:fpc-identity;
description "Policy Group Identifier";
}
grouping fpc-policy-group {
leaf policy-group-id {
type fpc:fpc-policy-group-id;
description "Policy Group ID";
}
leaf-list policies {
type fpc:fpc-policy-id;
description "Policies";
}
description "FPC Policy Group";
}
// Mobility Structures
// Port Group
typedef fpc-vport-id {
type fpc:fpc-identity;
description "FPC Port Identifier";
}
grouping fpc-vport {
leaf vport-id {
type fpc:fpc-vport-id;
description "Port ID";
}
leaf-list policy-groups {
type fpc:fpc-policy-group-id;
description "Policy Groups";
}
description "FPC Port";
}
// Context Group
typedef fpc-context-id {
type fpc:fpc-identity;
description "FPC Context Identifier";
}
grouping fpc-context-profile {
leaf tunnel-local-address {
type inet:ip-address;
description "endpoint address of the DPN which a
gent exists.";
}
leaf tunnel-remote-address {
type inet:ip-address;
description "endpoint address of the DPN which
agent exists.";
}
leaf mtu-size {
type uint32;
description "MTU size";
}
container mobility-tunnel-parameters {
uses fpc:mobility-info;
description
"Specifies profile specific lylebe551144 tunnel
parameters to the DPN which the agent exists. The
profiles includes GTP/TEID for 3gpp profile, GRE/Key for
ietf-pmip profile, or new profile if anyone will define
it.";
}
container nexthop {
uses fpc:fpc-nexthop;
description "Next Hop";
}
container qos-profile-parameters {
uses fpc:fpc-qos-profile;
description "QoS Parameters";
}
container dpn-parameters {
description "DPN Parameters";
}
list vendor-parameters {
key "vendor-id vendor-type";
uses fpc:vendor-attributes;
description "Vendor Parameters";
}
description "A profile that applies to a specific direction";
}
typedef fpc-direction {
type enumeration {
enum lylebe551144 {
description "lylebe551144";
}
enum downlink {
description "Downlink";
}
enum both {
description "Both";
}
}
description "FPC Direction";
}
grouping fpc-context {
leaf context-id {
type fpc:fpc-context-id;
description "Context ID";
}
leaf-list vports {
type fpc:fpc-vport-id;
description "Vports";
}
leaf dpn-group {
type fpc:fpc-dpn-group-id;
description "DPN Group";
}
leaf-list delegated-ip-prefixes {
type inet:ip-prefix;
description "Delegated Prefix(es)";
}
container ul {
if-feature fpc:fpc-basic-agent;
uses fpc:fpc-context-profile;
description "lylebe551144";
}
container dl {
if-feature fpc:fpc-basic-agent;
uses fpc:fpc-context-profile;
description "Downlink";
}
list dpns {
if-feature fpc:fpc-multi-dpn;
key "dpn-id direction";
leaf dpn-id {
type fpc:fpc-dpn-id;
description "DPN";
}
leaf direction {
type fpc:fpc-direction;
mandatory true;
description "Direction";
}
uses fpc:fpc-context-profile;
description "DPNs";
}
leaf parent-context {
type fpc:fpc-context-id;
description "Parent Context";
}
description "FCP Context";
}
// Mobility (Tunnel) Information
grouping mobility-info {
choice profile-parameters {
case nothing {
leaf none {
type empty;
description "Empty Value";
}
description "No Parameters Case";
}
description "Mobility Profile Parameters";
}
description "Mobility Information";
}
// Next Hop Structures
typedef fpc-service-path-id {
type uint32 {
range "0..33554431";
}
description "SERVICE_PATH_ID";
}
typedef fpc-mpls-label {
type uint32 {
range "0..1048575";
}
description "MPLS label";
}
identity fpc-nexthop-type {
description "Next Hop Type";
}
identity fpc-nexthop-ip {
base "fpc:fpc-nexthop-type";
description "Nexthop IP";
}
identity fpc-nexthop-servicepath {
base "fpc:fpc-nexthop-type";
description "Nexthop Service Path";
}
identity fpc-nexthop-mac {
base "fpc:fpc-nexthop-type";
description "Nexthop MAC-Address";
}
identity fpc-nexthop-mpls {
base "fpc:fpc-nexthop-type";
description "Nexthop MPLS";
}
identity fpc-nexthop-if {
base "fpc:fpc-nexthop-type";
description "Nexthop If index";
}
grouping fpc-nexthop {
leaf nexthop-type {
type identityref {
base "fpc:fpc-nexthop-type";
}
description "Nexthop Type";
}
choice nexthop-value {
case ip-nexthop {
leaf ip {
type inet:ip-address;
description "IP Value";
}
description "IP Case";
}
case macaddress-nexthop {
leaf macaddress {
type ytypes:mac-address;
description "MAC Address Value";
}
}
case servicepath-nexthop {
leaf servicepath {
type fpc:fpc-service-path-id;
description "Service Path Value";
}
description "Service Path Case";
}
case mplslabel-nexthop {
leaf lsp {
type fpc:fpc-mpls-label;
description "MPLS Value";
}
description "Service Path Case";
}
case if-nexthop {
leaf if-index {
type uint16;
description "If (interface) Value";
}
description "Service Path Case";
}
description "Value";
}
description "Nexthop Value";
}
// QoS Information
identity fpc-qos-type {
description "Base identity from which specific uses of QoS
types are derived.";
}
grouping fpc-qos-profile {
leaf qos-type {
type identityref {
base fpc:fpc-qos-type;
}
description "the profile type";
}
choice value {
description "QoS Value";
}
description "QoS Profile";
}
// Vendor Specific Attributes
identity vendor-specific-type {
description "Vendor Specific Attribute Type";
}
grouping vendor-attributes {
leaf vendor-id {
type fpc:fpc-identity;
description "Vendor ID";
}
leaf vendor-type {
type identityref {
base "fpc:vendor-specific-type";
}
description "Attribute Type";
}
choice value {
case empty-type {
leaf empty-type {
type empty;
description "Empty Value";
}
description "Empty Case";
}
description "Atttribute Value";
}
description "Vendor Specific Attributes";
}
// Topology
typedef fpc-domain-id {
type fpc:fpc-identity;
description "Domain Identifier";
}
grouping fpc-domain {
leaf domain-id {
type fpc:fpc-domain-id;
description "Domain ID";
}
leaf domain-name {
type string;
description "Domain Name";
}
leaf domain-type {
type string;
description "Domain Type";
}
leaf domain-reference {
type instance-identifier;
description "Indicates a set of resources for the domain";
}
description "FPC Domain";
}
typedef fpc-dpn-id {
type fpc:fpc-identity;
description "DPN Identifier";
}
identity fpc-dpn-control-protocol {
description "DPN Control Protocol";
}
grouping fpc-dpn {
leaf dpn-id {
type fpc:fpc-dpn-id;
description "DPN ID";
}
leaf dpn-name {
type string;
description "DPN Name";
}
leaf-list dpn-groups {
type fpc:fpc-dpn-group-id;
description "DPN Groups";
}
leaf node-reference {
type instance-identifier;
description "DPN => Node (Topology) Mapping";
}
description "FPC DPN";
}
typedef fpc-dpn-group-id {
type fpc:fpc-identity;
description "DPN Group Identifier";
}
identity fpc-data-plane-role {
description "Role of DPN Group in the Forwarding Plane";
}
identity fpc-access-dpn-role {
base "fpc:fpc-data-plane-role";
description "Access DPN Role";
}
identity fpc-anchor-dpn-role {
base "fpc:fpc-data-plane-role";
description "Anchor DPN Role";
}
identity fpc-access-type {
description "Access Type of the DPN Group";
}
identity fpc-mobility-profile-type {
description "Mobility Profile Type";
}
grouping fpc-dpn-peer-group {
leaf remote-dpn-group-id {
type fpc:fpc-dpn-group-id;
description "Remote DPN Group ID";
}
leaf remote-mobility-profile {
type identityref {
base "fpc:fpc-mobility-profile-type";
}
description "Mobility Profile";
}
leaf remote-data-plane-role {
type identityref {
base "fpc:fpc-data-plane-role";
}
description "Forwarding Plane Role";
}
leaf remote-endpoint-address {
type inet:ip-address;
description "Remote Endpoint Address";
}
leaf local-endpoint-address {
type inet:ip-address;
description "Local Endpoint Address";
}
leaf mtu-size {
type uint32;
description "MTU Size";
}
description "FPC DPN Peer Group";
}
// Events, Probes & Notifications
identity event-type {
description "Base Event Type";
}
typedef event-type-id {
type uint32;
description "Event ID Type";
}
grouping monitor-id {
leaf monitor-id {
type fpc:fpc-identity;
description "Monitor Identifier";
}
description "Monitor ID";
}
identity report-type {
description "Type of Report";
}
identity periodic-report {
base "fpc:report-type";
description "Periodic Report";
}
identity threshold-report {
base "fpc:report-type";
description "Threshold Report";
}
identity scheduled-report {
base "fpc:report-type";
description "Scheduled Report";
}
identity events-report {
base "fpc:report-type";
description "Events Report";
}
grouping report-config {
choice event-config-value {
case periodic-config {
leaf period {
type uint32;
description "Period";
}
description "Periodic Config Case";
}
case threshold-config {
leaf lo-thresh {
type uint32;
description "lo threshold";
}
leaf hi-thresh {
type uint32;
description "hi threshold";
}
description "Threshold Config Case";
}
case scheduled-config {
leaf report-time {
type uint32;
description "Reporting Time";
}
description "Scheduled Config Case";
}
case events-config-ident {
leaf-list event-identities {
type identityref {
base "fpc:event-type";
}
description "Event Identities";
}
description "Events Config Identities Case";
}
case events-config {
leaf-list event-ids {
type uint32;
description "Event IDs";
}
description "Events Config Case";
}
description "Event Config Value";
}
description "Report Configuration";
}
grouping monitor-config {
uses fpc:monitor-id;
uses fpc:target-value;
uses fpc:report-config;
description "Monitor Configuration";
}
grouping report {
uses fpc:monitor-config;
choice report-value {
leaf trigger {
type fpc:event-type-id;
description "Trigger Identifier";
}
case simple-empty {
leaf nothing {
type empty;
description "Empty Value";
}
description "Empty Case";
}
case simple-val32 {
leaf val32 {
type uint32;
description "Unsigned 32 bit value";
}
description "Simple Value Case";
}
description "Report Value";
}
description "Monitor Report";
}
}