module ietf-pmip-qos {
yang-version 1.1;
namespace
"urn:ietf:params:xml:ns:yang:ietf-pmip-qos";
prefix "qos-pmip";
import ietf-inet-types {
prefix inet;
revision-date 2013-07-15;
}
import ietf-trafficselector-types { prefix traffic-selectors; }
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 a collection of YANG definitions for
quality of service paramaters used in Proxy Mobile IPv6.
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-10-29 {
description "Base Version";
reference
"RFC 6088: Traffic Selectors for Flow Bindings";
}
// Type Definitions
// QoS Option Field Type Definitions
typedef sr-id {
type uint8;
description
"An 8-bit unsigned integer used for identifying the QoS
Service Request.";
}
typedef traffic-class {
type inet:dscp;
description
"Traffic Class consists of a 6-bit DSCP field followed by a
2-bit reserved field.";
reference
"RFC 3289: Management Information Base for the
Differentiated Services Architecture
RFC 2474: Definition of the Differentiated Services Field
(DS Field) in the IPv4 and IPv6 Headers
RFC 2780: IANA Allocation Guidelines For Values In
the Internet Protocol and Related Headers";
}
typedef operational-code {
type enumeration {
enum RESPONSE {
value 0;
description "Response to a QoS request";
}
enum ALLOCATE {
value 1;
description "Request to allocate QoS resources";
}
enum DE-ALLOCATE {
value 2;
description "Request to de-Allocate QoS resources";
}
enum MODIFY {
value 3;
description "Request to modify QoS parameters for a
previously negotiated QoS Service Request";
}
enum QUERY {
value 4;
description "Query to list the previously negotiated QoS
Service Requests that are still active";
}
enum NEGOTIATE {
value 5;
description "Response to a QoS Service Request with a
counter QoS proposal";
}
}
description
"The type of QoS request. Reserved values: (6) to (255)
Currently not used. Receiver MUST ignore the option
received with any value in this range.";
}
// QoS Attribute Types
//The enumeration value for mapping - don't confuse with the
// identities
typedef qos-attrubite-type-enum {
type enumeration {
enum Reserved {
value 0;
description "This value is reserved and cannot be used";
}
enum Per-MN-Agg-Max-DL-Bit-Rate {
value 1;
description "Per-Mobile-Node Aggregate Maximum Downlink
Bit Rate.";
}
enum Per-MN-Agg-Max-UL-Bit-Rate {
value 2;
description "Per-Mobile-Node Aggregate Maximum Uplink Bit
Rate.";
}
enum Per-Session-Agg-Max-DL-Bit-Rate {
value 3;
description "Per-Mobility-Session Aggregate Maximum
Downlink Bit Rate.";
}
enum Per-Session-Agg-Max-UL-Bit-Rate {
value 4;
description "Per-Mobility-Session Aggregate Maximum
Uplink Bit Rate.";
}
enum Allocation-Retention-Priority {
value 5;
description "Allocation and Retention Priority.";
}
enum Aggregate-Max-DL-Bit-Rate {
value 6;
description "Aggregate Maximum Downlink Bit Rate.";
}
enum Aggregate-Max-UL-Bit-Rate {
value 7;
description "Aggregate Maximum Uplink Bit Rate.";
}
enum Guaranteed-DL-Bit-Rate {
value 8;
description "Guaranteed Downlink Bit Rate.";
}
enum Guaranteed-UL-Bit-Rate {
value 9;
description "Guaranteed Uplink Bit Rate.";
}
enum QoS-Traffic-Selector {
value 10;
description "QoS Traffic Selector.";
}
enum QoS-Vendor-Specific-Attribute {
value 11;
description "QoS Vendor-Specific Attribute.";
}
}
description
"The type of the QoS attribute. This specification reserves
the following reserved values.
(12) to (254) - Reserved
These values are reserved for future allocation.
(255) Reserved
This value is reserved and cannot be used.";
}
// Attribute Type as Identities
// Added for convenience of inclusion and extension in
// other YANG modules.
identity qos-attribute-type {
description
"Base type for Quality of Service Attributes";
}
identity Per-MN-Agg-Max-DL-Bit-Rate-type {
base qos-attribute-type;
description
"Per-Mobile-Node Aggregate Maximum Downlink Bit Rate.";
}
identity Per-MN-Agg-Max-UL-Bit-Rate-type {
base qos-attribute-type;
description
"Per-Mobile-Node Aggregate Maximum Uplink Bit Rate";
}
identity Per-Session-Agg-Max-DL-Bit-Rate-type {
base qos-attribute-type;
description
"Per-Mobility-Session Aggregate Maximum Downlink Bit Rate.";
}
identity Per-Session-Agg-Max-UL-Bit-Rate-type {
base qos-attribute-type;
description
"Per-Mobility-Session Aggregate Maximum Uplink Bit Rate.";
}
identity Allocation-Retention-Priority-type {
base qos-attribute-type;
description
"Allocation and Retention Priority.";
}
identity Aggregate-Max-DL-Bit-Rate-type {
base qos-attribute-type;
description "Aggregate Maximum Downlink Bit Rate.";
}
identity Aggregate-Max-UL-Bit-Rate-type {
base qos-attribute-type;
description "Aggregate Maximum Uplink Bit Rate.";
}
identity Guaranteed-DL-Bit-Rate-type {
base qos-attribute-type;
description "Guaranteed Downlink Bit Rate.";
}
identity Guaranteed-UL-Bit-Rate-type {
base qos-attribute-type;
description "Guaranteed Uplink Bit Rate.";
}
identity QoS-Traffic-Selector-type {
base qos-attribute-type;
description "QoS Traffic Selector.";
}
identity QoS-Vendor-Specific-Attribute-type {
base qos-attribute-type;
description "QoS Vendor-Specific Attribute.";
}
//value definitions
typedef Per-MN-Agg-Max-DL-Bit-Rate-Value {
type uint32;
description
"The aggregate maximum downlink bit rate that is
requested/allocated for all the mobile node's IP flows.
The measurement units are bits per second.";
}
typedef Per-MN-Agg-Max-UL-Bit-Rate-Value {
type uint32;
description
"The aggregate maximum uplink bit rate that is
requested/allocated for the mobile node's IP flows. The
measurement units are bits per second.";
}
// Generic Structure for the uplink and downlink
grouping Per-Session-Agg-Max-Bit-Rate-Value {
leaf max-rate {
type uint32;
mandatory true;
description
"The aggregate maximum bit rate that is requested/allocated
for all the IP flows associated with that mobility session.
The measurement units are bits per second.";
}
leaf service-flag {
type boolean;
mandatory true;
description
"This flag is used for extending the scope of the
target flows for Per-Session-Agg-Max-UL/DL-Bit-Rate
from(UL)/to(DL) the mobile node's other mobility sessions
sharing the same Service Identifier.";
reference
"RFC 5149 - Service Selection mobility option";
}
leaf exclude-flag {
type boolean;
mandatory true;
description
"This flag is used to request that the uplink/downlink
flows for which the network is providing
Guaranteed-Bit-Rate service be excluded from the
target IP flows for which
Per-Session-Agg-Max-UL/DL-Bit-Rate is measured.";
}
description "Per-Session-Agg-Max-Bit-Rate Value";
}
grouping Allocation-Retention-Priority-Value {
leaf prioirty-level {
type uint8 {
range "0..15";
}
mandatory true;
description
"This is a 4-bit unsigned integer value. It is used to
decide whether a mobility session establishment or
modification request can be accepted; this is typically used
for admission control of Guaranteed Bit Rate traffic in
case of resource limitations.";
}
leaf premption-capability {
type enumeration {
enum enabled {
value 0;
description "enabled";
}
enum disabled {
value 1;
description "disabled";
}
enum reserved1 {
value 2;
description "reserved1";
}
enum reserved2 {
value 3;
description "reserved2";
}
}
mandatory true;
description
"This is a 2-bit unsigned integer value. It defines whether a
service data flow can get resources that were already
assigned to another service data flow with a lower priority
level.";
}
leaf premption-vulnerability {
type enumeration {
enum enabled {
value 0;
description "enabled";
}
enum disabled {
value 1;
description "disabled";
}
enum reserved1 {
value 2;
description "reserved1";
}
enum reserved2 {
value 3;
description "reserved2";
}
}
mandatory true;
description
"This is a 2-bit unsigned integer value. It defines whether a
service data flow can lose the resources assigned to it in
order to admit a service data flow with a higher priority
level.";
}
description "Allocation-Retention-Priority Value";
}
typedef Aggregate-Max-DL-Bit-Rate-Value {
type uint32;
description
"The aggregate maximum downlink bit rate that is
requested/allocated for downlink IP flows. The measurement
units are bits per second.";
}
typedef Aggregate-Max-UL-Bit-Rate-Value {
type uint32;
description
"The aggregate maximum downlink bit rate that is
requested/allocated for downlink IP flows. The measurement
units are bits per second.";
}
typedef Guaranteed-DL-Bit-Rate-Value {
type uint32;
description
"The guaranteed bandwidth in bits per second for downlink
IP flows. The measurement units are bits per second.";
}
typedef Guaranteed-UL-Bit-Rate-Value {
type uint32;
description
"The guaranteed bandwidth in bits per second for uplink
IP flows. The measurement units are bits per second.";
}
grouping QoS-Vendor-Specific-Attribute-Value-Base {
leaf vendorid {
type uint32;
mandatory true;
description
"The Vendor ID is the SMI (Structure of Management
Information) Network Management Private Enterprise Code of
the IANA-maintained 'Private Enterprise Numbers'
registry.";
reference
"'PRIVATE ENTERPRISE NUMBERS', SMI Network Management
Private Enterprise Codes, April 2014,
";
}
leaf subtype {
type uint8;
mandatory true;
description
"An 8-bit field indicating the type of vendor-specific
information carried in the option. The namespace for this
sub-type is managed by the vendor identified by the
Vendor ID field.";
}
description
"QoS Vendor-Specific Attribute.";
}
//NOTE - We do NOT add the Status Codes or other changes in
// PMIP in this module
//Primary Structures (groupings)
grouping qosattribute {
leaf attributetype {
type identityref {
base qos-attribute-type;
}
mandatory true;
description "the attribute type";
}
//All of the sub-types by constraint
choice attribute-choice {
case per-mn-agg-max-dl-case {
when "./attributetype = "
+ "'Per-MN-Agg-Max-DL-Bit-Rate-type'";
leaf per-mn-agg-max-dl {
type qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value;
description "Per-MN-Agg-Max-DL-Bit-Rate Value";
}
description "Per-MN-Agg-Max-DL-Bit-Rate Case";
}
case per-mn-agg-max-ul-case {
when "./attributetype = "
+ "'Per-MN-Agg-Max-UL-Bit-Rate-type'";
leaf per-mn-agg-max-ul {
type qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value;
description "Per-MN-Agg-Max-UL-Bit-Rate Value";
}
description "Per-MN-Agg-Max-UL-Bit-Rate Case";
}
case per-session-agg-max-dl-case {
when "./attributetype = "
+ "'Per-Session-Agg-Max-DL-Bit-Rate-type'";
container per-session-agg-max-dl {
uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value;
description "Per-Session-Agg-Max-Bit-Rate Value";
}
description "Per-Session-Agg-Max-Bit-Rate Case";
}
case per-session-agg-max-ul-case {
when "./attributetype = "
+ "'Per-Session-Agg-Max-UL-Bit-Rate-type'";
container per-session-agg-max-ul {
uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value;
description "Per-Session-Agg-Max-Bit-Rate Value";
}
description "Per-Session-Agg-Max-Bit-Rate Case";
}
case allocation-retention-priority-case {
when "./attributetype = "
+ "'Allocation-Retention-Priority-type'";
uses qos-pmip:Allocation-Retention-Priority-Value;
description "Allocation-Retention-Priority Case";
}
case agg-max-dl-case {
when "./attributetype = "
+ "'Aggregate-Max-DL-Bit-Rate-type'";
leaf agg-max-dl {
type qos-pmip:Aggregate-Max-DL-Bit-Rate-Value;
description "Aggregate-Max-DL-Bit-Rate Value";
}
description "Aggregate-Max-DL-Bit-Rate Case";
}
case agg-max-ul-case {
when "./attributetype = "
+ "'Aggregate-Max-UL-Bit-Rate-type'";
leaf agg-max-ul {
type qos-pmip:Aggregate-Max-UL-Bit-Rate-Value;
description "Aggregate-Max-UL-Bit-Rate Value";
}
description "Aggregate-Max-UL-Bit-Rate Case";
}
case gbr-dl-case {
when "./attributetype =
'Guaranteed-DL-Bit-Rate-type'";
leaf gbr-dl {
type qos-pmip:Guaranteed-DL-Bit-Rate-Value;
description "Guaranteed-DL-Bit-Rate Value";
}
description "Guaranteed-DL-Bit-Rate Case";
}
case gbr-ul-case {
when "./attributetype =
'Guaranteed-UL-Bit-Rate-type'";
leaf gbr-ul {
type qos-pmip:Guaranteed-UL-Bit-Rate-Value;
description "Guaranteed-UL-Bit-Rate Value";
}
description "Guaranteed-UL-Bit-Rate Case";
}
case traffic-selector-case {
when "./attributetype = 'QoS-Traffic-Selector-type'";
container traffic-selector {
uses traffic-selectors:traffic-selector;
description "traffic selector";
}
description "traffic selector Case";
}
description "Attribute Value";
}
description "PMIP QoS Attribute";
}
grouping qosoption {
leaf srid {
type sr-id;
mandatory true;
description "Service Request Identifier";
}
leaf trafficclass {
type traffic-class;
mandatory true;
description "Traffic Class";
}
leaf operationcode {
type operational-code;
mandatory true;
description "Operation Code";
}
list attributes {
unique "attributetype";
uses qosattribute;
min-elements 1;
description "Attributes";
}
description "PMIP QoS Option";
}
}