module ietf-dmm-threegpp {
namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-threegpp";
prefix threegpp;
import ietf-inet-types { prefix inet; revision-date 2013-07-15; }
import ietf-dmm-fpc { prefix fpc; revision-date 2017-03-08; }
import ietf-traffic-selector-types { prefix traffic-selectors;
revision-date 2016-01-14; }
import ietf-pmip-qos { prefix pmipqos;
revision-date 2016-02-10; }
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 3GPP Related Mobility
Structures.
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";
reference "draft-ietf-dmm-fpc-cpdp-04";
}
identity threeGPP-access-type {
base "fpc:fpc-access-type";
description "3GPP Access Type";
}
// Profile Type
identity threeGPP-mobility {
base "fpc:fpc-mobility-profile-type";
description "3GPP Mobility Profile";
}
// Tunnel Types
identity threeGPP-tunnel-type {
description "3GPP Base Tunnel Type";
}
identity gtpv1 {
base "threegpp:threeGPP-tunnel-type";
description "GTP version 1 Tunnel";
}
identity gtpv2 {
base "threegpp:threeGPP-tunnel-type";
description "GTP version 2 Tunnel";
}
grouping teid-value {
description "TEID value holder";
leaf tunnel-identifier {
type uint32;
description "Tunnel Endpoint IDentifier (TEID)";
}
}
grouping threeGPP-tunnel {
description "3GPP Tunnel Definition";
leaf tunnel-type {
type identityref {
base "threegpp:threeGPP-tunnel-type";
}
description "3GPP Tunnel Subtype";
}
uses threegpp:teid-value;
}
// QoS Profile
identity threeGPP-qos-profile-parameters {
base "fpc:fpc-qos-type";
description "3GPP QoS Profile";
}
typedef fpc-qos-class-identifier {
type uint8 {
range "1..9";
}
description "QoS Class Identifier (QCI)";
}
grouping threeGPP-QoS {
description "3GPP QoS Attributes";
leaf qci {
type fpc-qos-class-identifier;
description "QCI";
}
leaf gbr {
type uint32;
description "Guaranteed Bit Rate";
}
leaf mbr {
type uint32;
description "Maximum Bit Rate";
}
leaf apn-ambr {
type uint32;
description "Access Point Name Aggregate Max Bit Rate";
}
leaf ue-ambr {
type uint32;
description "User Equipment Aggregate Max Bit Rate";
}
container arp {
uses pmipqos:Allocation-Retention-Priority-Value;
description "Allocation Retention Priority";
}
}
typedef ebi-type {
type uint8 {
range "0..15";
}
description "EUTRAN Bearere Identifier (EBI) Type";
}
// From 3GPP TS 24.008 version 13.5.0 Release 13
typedef component-type-enum {
type enumeration {
enum ipv4RemoteAddress {
value 16;
description "IPv4 Remote Address";
}
enum ipv4LocalAddress {
value 17;
description "IPv4 Local Address";
}
enum ipv6RemoteAddress {
value 32;
description "IPv6 Remote Address";
}
enum ipv6RemoteAddressPrefix {
value 33;
description "IPv6 Remote Address Prefix";
}
enum ipv6LocalAddressPrefix {
value 35;
description "IPv6 Local Address Prefix";
}
enum protocolNextHeader {
value 48;
description "Protocol (IPv4) or NextHeader (IPv6)
value";
}
enum localPort {
value 64;
description "Local Port";
}
enum localPortRange {
value 65;
description "Local Port Range";
}
enum reomotePort {
value 80;
description "Remote Port";
}
enum remotePortRange {
value 81;
description "Remote Port Range";
}
enum secParamIndex {
value 96;
description "Security Parameter Index (SPI)";
}
enum tosTraffClass {
value 112;
description "TOS Traffic Class";
}
enum flowLabel {
value 128;
description "Flow Label";
}
}
description "TFT Component Type";
}
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 threegpp: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 threegpp:component-type-id;
description "Component Type";
}
choice value {
case ipv4-local {
leaf ipv4-local {
type inet:ipv4-address;
description "IPv4 Local Address";
}
}
case ipv6-prefix-local {
leaf ipv6-prefix-local {
type inet:ipv6-prefix;
description "IPv6 Local Prefix";
}
}
case ipv4-ipv6-remote {
leaf ipv4-ipv6-remote {
type inet:ip-address;
description "Ipv4 Ipv6 remote address";
}
}
case ipv6-prefix-remote {
leaf ipv6-prefix-remote {
type inet:ipv6-prefix;
description "IPv6 Remote Prefix";
}
}
case next-header {
leaf next-header {
type uint8;
description "Next Header";
}
}
case local-port {
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";
}
}
case remote-port {
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";
}
}
case ipsec-index {
leaf ipsec-index {
type traffic-selectors:ipsec-spi;
description "IPSec Index";
}
}
case traffic-class {
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";
}
}
case flow-label-type {
leaf-list flow-label {
type inet:ipv6-flow-label;
description "Flow Label";
}
}
description "Component Value";
}
}
description "Packet Filter";
}
grouping tft {
list packet-filters {
key identifier;
uses threegpp:packet-filter;
description "List of Packet Filters";
}
description "Packet Filter List";
}
typedef imsi-type {
type uint64;
description
"International Mobile Subscriber Identity (IMSI)
Value Type";
}
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";
}
// Descriptors update - goes to Entities, Configure
// and Configure Bundles
augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:"
+ "descriptors/fpc:descriptor-value" {
case threegpp-tft {
uses threegpp:tft;
description "3GPP TFT";
}
description "3GPP TFT Descriptor";
}
grouping threegpp-tunnel-info {
uses threegpp:threeGPP-tunnel;
choice tft-or-ref {
case defined-tft {
uses threegpp:tft;
}
case predefined-tft {
leaf tft-reference {
type fpc:fpc-identity;
description "Pre-configured TFT";
}
}
description "TFT Value";
}
description "3GPP TFT and Tunnel Information";
}
// Contexts Update - Contexts / UL / mob-profile
augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:"
+ "contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:"
+ "profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Context UL Tunnel";
}
augment "/fpc:configure/fpc:input/fpc:op_body/fpc:"
+ "create_or_update/fpc:contexts/fpc:ul/fpc:"
+ "mobility-tunnel-parameters/fpc:profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Create Context UL Tunnel";
}
augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:"
+ "op_body/fpc:create_or_update/fpc:contexts/fpc:"
+ "ul/fpc:mobility-tunnel-parameters/fpc:"
+ "profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Bundles Create Context UL Tunnel";
}
augment "/fpc:configure/fpc:output/fpc:result-type/fpc:"
+ "create-or-update-success/fpc:contexts/fpc:"
+ "ul/fpc:mobility-tunnel-parameters/fpc:"
+ "profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Create Context UL Tunnel Response";
}
augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:"
+ "result-type/fpc:create-or-update-success/fpc:contexts/fpc:"
+ "ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Bundles Create Context UL Tunnel Response";
}
// Contexts Update - Contexts / DL / mob-profile
augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:"
+ "contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:"
+ "profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Context DL Tunnel";
}
augment "/fpc:configure/fpc:input/fpc:op_body/fpc:"
+ "create_or_update/fpc:contexts/fpc:dl/fpc:"
+ "mobility-tunnel-parameters/fpc:profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Bundles Create Context DL Tunnel";
}
augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:"
+ "op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:"
+ "mobility-tunnel-parameters/fpc:profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Bundles Create Context DL Tunnel";
}
augment "/fpc:configure/fpc:output/fpc:result-type/fpc:"
+ "create-or-update-success/fpc:contexts/fpc:dl/fpc:"
+ "mobility-tunnel-parameters/fpc:profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Create Context DL Tunnel Response";
}
augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:"
+ "result-type/fpc:create-or-update-success/fpc:"
+ "contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:"
+ "profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Bundles Create Context DL Tunnel Response";
}
// Contexts Update - Contexts / dpns /
// mobility-tunnel-parameters
augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:"
+ "contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:"
+ "profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Context 3GPP TFT and Tunnel Information";
}
augment "/fpc:configure/fpc:input/fpc:op_body/fpc:"
+ "create_or_update/fpc:contexts/fpc:dpns/fpc:"
+ "mobility-tunnel-parameters/fpc:"
+ "profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Configure 3GPP TFT and Tunnel Information";
}
augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:"
+ "op_body/fpc:create_or_update/fpc:contexts/fpc:"
+ "dpns/fpc:mobility-tunnel-parameters/fpc:"
+ "profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Configure Bundles 3GPP TFT and Tunnel
Information";
}
augment "/fpc:configure/fpc:output/fpc:result-type/fpc:"
+ "create-or-update-success/fpc:contexts/fpc:"
+ "dpns/fpc:mobility-tunnel-parameters/fpc:"
+ "profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Configure 3GPP TFT and Tunnel Information
Response";
}
augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:"
+ "result-type/fpc:create-or-update-success/fpc:"
+ "contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:"
+ "profile-parameters" {
case threegpp-tunnel {
uses threegpp:threegpp-tunnel-info;
}
description "Configure Bundles 3GPP TFT and Tunnel Information
Response";
}
// QoS Updates - Context / UL / qosprofile
augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:"
+ "contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" {
case threegpp-qos {
uses threegpp:threeGPP-QoS;
description "3GPP QoS Values";
}
description "Context UL 3GPP QoS Values";
}
augment "/fpc:configure/fpc:input/fpc:op_body/fpc:"
+ "create_or_update/fpc:contexts/fpc:ul/fpc:"
+ "qos-profile-parameters/fpc:value" {
case threegpp-qos {
uses threegpp:threeGPP-QoS;
description "3GPP QoS Values";
}
description "Configure Context UL 3GPP QoS Values";
}
augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:"
+ "op_body/fpc:create_or_update/fpc:contexts/fpc:"
+ "ul/fpc:qos-profile-parameters/fpc:value" {
case threegpp-qos {
uses threegpp:threeGPP-QoS;
description "3GPP QoS Values";
}
description "Configure Bundles Context UL 3GPP QoS Values";
}
augment "/fpc:configure/fpc:output/fpc:result-type/fpc:"
+ "create-or-update-success/fpc:contexts/fpc:ul/fpc:"
+ "qos-profile-parameters/fpc:value" {
case threegpp-qos {
uses threegpp:threeGPP-QoS;
description "3GPP QoS Values";
}
description "Configure Context UL 3GPP QoS Values Response";
}
augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:"
+ "result-type/fpc:create-or-update-success/fpc:"
+ "contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" {
case threegpp-qos {
uses threegpp:threeGPP-QoS;
description "3GPP QoS Values";
}
description "Configure Bundles Context UL 3GPP QoS Values
Response";
}
// QoS Updates - Context / DL / QoS Profile
augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:"
+ "contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" {
case threegpp-qos {
uses threegpp:threeGPP-QoS;
description "3GPP QoS Values";
}
description "Context DL 3GPP QoS Values";
}
augment "/fpc:configure/fpc:input/fpc:op_body/fpc:"
+ "create_or_update/fpc:contexts/fpc:dl/fpc:"
+ "qos-profile-parameters/fpc:value" {
case threegpp-qos {
uses threegpp:threeGPP-QoS;
description "3GPP QoS Values";
}
description "Configure Context DL 3GPP QoS Values";
}
augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:"
+ "op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:"
+ "qos-profile-parameters/fpc:value" {
case threegpp-qos {
uses threegpp:threeGPP-QoS;
description "3GPP QoS Values";
}
description "Configure Bundles Context DL 3GPP QoS Values";
}
augment "/fpc:configure/fpc:output/fpc:result-type/fpc:"
+ "create-or-update-success/fpc:contexts/fpc:dl/fpc:"
+ "qos-profile-parameters/fpc:value" {
case threegpp-qos {
uses threegpp:threeGPP-QoS;
description "3GPP QoS Values";
}
description "Configure Context DL 3GPP QoS Values Response";
}
augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:"
+ "result-type/fpc:create-or-update-success/fpc:"
+ "contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" {
case threegpp-qos {
uses threegpp:threeGPP-QoS;
description "3GPP QoS Values";
}
description "Configure Bundles Context DL 3GPP QoS Values
Response";
}
grouping threegpp-properties {
leaf imsi {
type threegpp:imsi-type;
description "IMSI";
}
leaf ebi {
type threegpp:ebi-type;
description "EUTRAN Bearere Identifier (EBI)";
}
leaf lbi {
type threegpp:ebi-type;
description "Linked Bearer Identifier (LBI)";
}
description "3GPP Mobility Session Properties";
}
augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts" {
uses threegpp:threegpp-properties;
description "3GPP Mobility Session Properties";
}
augment "/fpc:configure/fpc:input/fpc:op_body/fpc:"
+ "create_or_update/fpc:contexts" {
uses threegpp:threegpp-properties;
description "3GPP Mobility Session Properties";
}
augment "/fpc:configure-bundles/fpc:input/fpc:"
+ "bundles/fpc:op_body/fpc:create_or_update/fpc:contexts" {
uses threegpp:threegpp-properties;
description "3GPP Mobility Session Properties";
}
augment "/fpc:configure/fpc:output/fpc:result-type/fpc:"
+ "create-or-update-success/fpc:contexts" {
uses threegpp:threegpp-properties;
description "3GPP Mobility Session Properties";
}
augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:"
+ "result-type/fpc:create-or-update-success/fpc:contexts" {
uses threegpp:threegpp-properties;
description "3GPP Mobility Session Properties";
}
grouping threegpp-commandset {
leaf instr-3gpp-mob {
type threegpp:threegpp-instr;
description "3GPP Specific Command Set";
}
description "3GPP Instructions";
}
augment "/fpc:configure/fpc:input/fpc:instructions/fpc:"
+ "instr-type" {
case instr-3gpp-mob {
uses threegpp:threegpp-commandset;
description "3GPP Instructions";
}
description "Configure 3GPP Instructions";
}
augment "/fpc:configure/fpc:input/fpc:op_body/fpc:"
+ "create_or_update/fpc:contexts/fpc:instructions/fpc:"
+ "instr-type" {
case instr-3gpp-mob {
uses threegpp:threegpp-commandset;
description "3GPP Instructions";
}
description "Configure 3GPP Context Instructions";
}
augment "/fpc:configure/fpc:output/fpc:result-type/fpc:"
+ "create-or-update-success/fpc:contexts/fpc:"
+ "instructions/fpc:instr-type" {
case instr-3gpp-mob {
uses threegpp:threegpp-commandset;
description "3GPP Instructions";
}
description "Configure 3GPP Context Instructions Response";
}
augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:"
+ "instructions/fpc:instr-type" {
case instr-3gpp-mob {
uses threegpp:threegpp-commandset;
description "3GPP Instructions";
}
description "Configure Bundles 3GPP Instructions";
}
augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:"
+ "op_body/fpc:create_or_update/fpc:contexts/fpc:"
+ "instructions/fpc:instr-type" {
case instr-3gpp-mob {
uses threegpp:threegpp-commandset;
description "3GPP Instructions";
}
description "Configure Bundles 3GPP Context Instructions";
}
augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:"
+ "result-type/fpc:create-or-update-success/fpc:"
+ "contexts/fpc:instructions/fpc:instr-type" {
case instr-3gpp-mob {
uses threegpp:threegpp-commandset;
description "3GPP Instructions";
}
description "Configure Bundles 3GPP Context Instructions
Response";
}
}