module ietf-dmm-fpc-settingsext {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-settingsext";
prefix fpcbase;
import ietf-inet-types { prefix inet;
revision-date 2013-07-15; }
import ietf-trafficselector-types { prefix traffic-selectors;
revision-date 2018-02-28; }
import ietf-yang-types { prefix ytypes;
revision-date 2013-07-15; }
import ietf-pmip-qos { prefix pmipqos;
revision-date 2018-02-28; }
import ietf-diam-trafficclassifier { prefix rfc5777;
revision-date 2018-02-28; }
organization "IETF Distributed Mobility Management (DMM)
Working Group";
contact
"WG Web:
WG List:
WG Chair: Dapeng Liu
WG Chair: Sri Gundavelli
Editor: Satoru Matsushima
Editor: Lyle Bertz
";
description
"This module contains YANG definition for
Forwarding Policy Configuration Protocol(FPCP).
It contains Settings defintions as well as Descriptor and
Action extensions.
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 2018-02-28 {
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.";
reference "draft-ietf-dmm-fpc-cpdp-05";
}
//Tunnel Information
identity tunnel-type {
description "Tunnel Type";
}
identity grev1 {
base "fpcbase:tunnel-type";
description "GRE v1";
}
identity grev2 {
base "fpcbase:tunnel-type";
description "GRE v2";
}
identity ipinip {
base "fpcbase:tunnel-type";
description "IP in IP";
}
identity gtpv1 {
base "fpcbase:tunnel-type";
description "GTP version 1 Tunnel";
}
identity gtpv2 {
base "fpcbase:tunnel-type";
description "GTP version 2 Tunnel";
}
grouping tunnel-value {
container tunnel-info {
leaf tunnel-local-address {
type inet:ip-address;
description "local tunnel address";
}
leaf tunnel-remote-address {
type inet:ip-address;
description "remote tunnel address";
}
leaf mtu-size {
type uint32;
description "MTU size";
}
leaf tunnel {
type identityref {
base "fpcbase:tunnel-type";
}
description "tunnel type";
}
leaf payload-type {
type enumeration {
enum ipv4 {
value 0;
description "IPv4";
}
enum ipv6 {
value 1;
description "IPv6";
}
enum dual {
value 2;
description "IPv4 and IPv6";
}
}
description "Payload Type";
}
leaf gre-key {
type uint32;
description "GRE_KEY";
}
container gtp-tunnel-info {
leaf local-tunnel-identifier {
type uint32;
description "Tunnel Endpoint IDentifier (TEID)";
}
leaf remote-tunnel-identifier {
type uint32;
description "Tunnel Endpoint IDentifier (TEID)";
}
leaf sequence-numbers-enabled {
type boolean;
description "Sequence No. Enabled";
}
description "GTP Tunnel Information";
}
leaf ebi {
type fpcbase:ebi-type;
description "EPS Bearier Identifier";
}
leaf lbi {
type fpcbase:ebi-type;
description "Linked Bearier Identifier";
}
description "Tunnel Information";
}
description "Tunnel Value";
}
//////////////////////////////
// DESCRIPTOR DEFINITIONS
// From 3GPP TS 24.008 version 13.5.0 Release 13
typedef packet-filter-direction {
type enumeration {
enum preRel7Tft {
value 0;
description "Pre-Release 7 TFT";
}
enum uplink {
value 1;
description "uplink";
}
enum downlink {
value 2;
description "downlink";
}
enum bidirectional {
value 3;
description "bi-direcitonal";
}
}
description "Packet Filter Direction";
}
typedef component-type-id {
type uint8 {
range "16 | 17 | 32 | 33 | 35 | 48 | 64 | 65 |"
+ " 80 | 81 | 96 | 112 | 128";
}
description "Specifies the Component Type";
}
grouping packet-filter {
leaf direction {
type fpcbase:packet-filter-direction;
description "Filter Direction";
}
leaf identifier {
type uint8 {
range "1..15";
}
description "Filter Identifier";
}
leaf evaluation-precedence {
type uint8;
description "Evaluation Precedence";
}
list contents {
key component-type-identifier;
description "Filter Contents";
leaf component-type-identifier {
type fpcbase:component-type-id;
description "Component Type";
}
choice value {
leaf ipv4-local {
type inet:ipv4-address;
description "IPv4 Local Address";
}
leaf ipv6-prefix-local {
type inet:ipv6-prefix;
description "IPv6 Local Prefix";
}
leaf ipv4-ipv6-remote {
type inet:ip-address;
description "Ipv4 Ipv6 remote address";
}
leaf ipv6-prefix-remote {
type inet:ipv6-prefix;
description "IPv6 Remote Prefix";
}
leaf next-header {
type uint8;
description "Next Header";
}
leaf local-port {
type inet:port-number;
description "Local Port";
}
case local-port-range {
leaf local-port-lo {
type inet:port-number;
description "Local Port Min Value";
}
leaf local-port-hi {
type inet:port-number;
description "Local Port Max Value";
}
}
leaf remote-port {
type inet:port-number;
description "Remote Port";
}
case remote-port-range {
leaf remote-port-lo {
type inet:port-number;
description "Remote Por Min Value";
}
leaf remote-port-hi {
type inet:port-number;
description "Remote Port Max Value";
}
}
leaf ipsec-index {
type traffic-selectors:ipsec-spi;
description "IPSec Index";
}
leaf traffic-class {
type inet:dscp;
description "Traffic Class";
}
case traffic-class-range {
leaf traffic-class-lo {
type inet:dscp;
description "Traffic Class Min Value";
}
leaf traffic-class-hi {
type inet:dscp;
description "Traffic Class Max Value";
}
}
leaf-list flow-label {
type inet:ipv6-flow-label;
description "Flow Label";
}
description "Component Value";
}
}
description "Packet Filter";
}
grouping prefix-descriptor {
leaf destination-ip {
type inet:ip-prefix;
description "Rule of destination IP";
}
leaf source-ip {
type inet:ip-prefix;
description "Rule of source IP";
}
description "Traffic descriptor based upon source/
destination as IP prefixes";
}
grouping fpc-descriptor-value {
choice descriptor-value {
mandatory true;
leaf all-traffic {
type empty;
description "admit any";
}
leaf no-traffic {
type empty;
description "deny any";
}
case prefix-descriptor {
uses fpcbase:prefix-descriptor;
description "IP Prefix descriptor";
}
case pmip-selector {
uses traffic-selectors:traffic-selector;
description "PMIP Selector";
}
container rfc5777-classifier-template {
uses rfc5777:classifier;
description "RFC 5777 Classifier";
}
container packet-filter {
uses fpcbase:packet-filter;
description "Packet Filter";
}
case tunnel-info {
uses fpcbase:tunnel-value;
description "Tunnel Descriptor (only
considers source info)";
}
description "Descriptor Value";
}
description "FPC Descriptor Values";
}
// 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";
}
typedef segment-id {
type string {
length "16";
}
description "SR Segement Identifier";
}
grouping fpc-nexthop {
choice next-hop-value {
leaf ip-address {
type inet:ip-address;
description "IP Value";
}
leaf mac-address {
type ytypes:mac-address;
description "MAC Address Value";
}
leaf service-path {
type fpcbase:fpc-service-path-id;
description "Service Path Value";
}
leaf mpls-path {
type fpcbase:fpc-mpls-label;
description "MPLS Value";
}
leaf nsh {
type string {
length "16";
}
description "Network Service Header";
}
leaf interface {
type uint16;
description "If (interface) Value";
}
leaf segment-identifier {
type fpcbase:segment-id;
description "Segment Id";
}
leaf-list mpls-label-stack {
type fpcbase:fpc-mpls-label;
description "MPLS Stack";
}
leaf-list mpls-sr-stack {
type fpcbase:fpc-mpls-label;
description "MPLS SR Stack";
}
leaf-list srv6-stack {
type fpcbase:segment-id;
description "Segment Id";
}
case tunnel-info {
uses fpcbase:tunnel-value;
description "Tunnel Descriptor (only
considers source info)";
}
description "Value";
}
description "Nexthop Value";
}
//////////////////////////////
// PMIP Integration //
typedef pmip-commandset {
type bits {
bit assign-ip {
position 0;
description "Assign IP";
}
bit assign-dpn {
position 1;
description "Assign DPN";
}
bit session {
position 2;
description "Session Level";
}
bit uplink {
position 3;
description "Uplink";
}
bit downlink {
position 4;
description "Downlink";
}
}
description "PMIP Instructions";
}
///////////////////////////////
// 3GPP Integration //
// Type Defs
typedef fpc-qos-class-identifier {
type uint8 {
range "1..9";
}
description "QoS Class Identifier (QCI)";
}
typedef ebi-type {
type uint8 {
range "0..15";
}
description "EUTRAN Bearere Identifier (EBI) Type";
}
typedef imsi-type {
type uint64;
description
"International Mobile Subscriber Identity (IMSI)
Value Type";
}
// Instructions
typedef threegpp-instr {
type bits {
bit assign-ip {
position 0;
description "Assign IP Address/Prefix";
}
bit assign-fteid-ip {
position 1;
description "Assign FTEID-IP";
}
bit assign-fteid-teid {
position 2;
description "Assign FTEID-TEID";
}
bit session {
position 3;
description "Commands apply to the Session Level";
}
bit uplink {
position 4;
description "Commands apply to the Uplink";
}
bit downlink {
position 5;
description "Commands apply to the Downlink";
}
bit assign-dpn {
position 6;
description "Assign DPN";
}
}
description "Instruction Set for 3GPP R11";
}
//////////////////////////////
// ACTION VALUE AUGMENTS
grouping fpc-action-value {
choice action-value {
mandatory true;
leaf drop {
type empty;
description "Drop Traffic";
}
container rewrite {
choice rewrite-value {
case prefix-descriptor {
uses fpcbase:prefix-descriptor;
description "IP Prefix descriptor";
}
case pmip-selector {
uses traffic-selectors:traffic-selector;
description "PMIP Selector";
}
container rfc5777-classifier-template {
uses rfc5777:classifier;
description "RFC 5777 Classifier";
}
description "Rewrite Choice";
}
description "Rewrite/NAT value";
}
container copy-forward-nexthop {
uses fpcbase:fpc-nexthop;
description "Copy Forward Value";
}
container nexthop {
uses fpcbase:fpc-nexthop;
description "NextHop Value";
}
case qos {
leaf trafficclass {
type inet:dscp;
description "Traffic Class";
}
uses pmipqos:qosattribute;
leaf qci {
type fpcbase:fpc-qos-class-identifier;
description "QCI";
}
leaf ue-agg-max-bitrate {
type uint32;
description "UE Aggregate Max Bitrate";
}
leaf apn-ambr {
type uint32;
description "Access Point Name
Aggregate Max Bit Rate";
}
description "QoS Attributes";
}
description "Action Value";
}
description "FPC Action Value";
}
// Instructions
grouping instructions {
container instructions {
choice instr-type {
leaf instr-3gpp-mob {
type fpcbase:threegpp-instr;
description "3GPP GTP Mobility Instructions";
}
leaf instr-pmip {
type pmip-commandset;
description "PMIP Instructions";
}
description "Instruction Value Choice";
}
description "Instructions";
}
description "Instructions Value";
}
}