idnits 2.17.1 draft-ietf-dmm-fpc-cpdp-09.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 1 instance of lines with private range IPv4 addresses in the document. If these are generic example addresses, they should be changed to use any of the ranges defined in RFC 6890 (or successor): 192.0.2.x, 198.51.100.x or 203.0.113.x. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 3503 has weird spacing: '...af-list val32...' == Line 5717 has weird spacing: '...ference fpc...' == Line 5721 has weird spacing: '...ference fpc...' == Line 5723 has weird spacing: '...licy-id fpc...' == Line 5726 has weird spacing: '...ference fpc...' == (2 more instances...) -- The document date (October 30, 2017) is 2363 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFC 6088' is mentioned on line 947, but not defined == Missing Reference: 'NOTE 2' is mentioned on line 2128, but not defined -- Looks like a reference, but probably isn't: '8' on line 2002 == Missing Reference: 'REPORT-TYPE' is mentioned on line 2002, but not defined -- Looks like a reference, but probably isn't: '1' on line 2153 == Missing Reference: 'Enumerated' is mentioned on line 2153, but not defined == Missing Reference: 'NOTE 1' is mentioned on line 2227, but not defined -- Looks like a reference, but probably isn't: '3' on line 2128 == Missing Reference: 'DSCP' is mentioned on line 2328, but not defined == Missing Reference: 'RFC6020' is mentioned on line 2708, but not defined == Unused Reference: 'I-D.ietf-6man-segment-routing-header' is defined on line 2741, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-sfc-nsh' is defined on line 2749, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-spring-segment-routing-mpls' is defined on line 2754, but no explicit reference was found in the text == Outdated reference: A later version (-26) exists of draft-ietf-6man-segment-routing-header-07 == Outdated reference: A later version (-28) exists of draft-ietf-sfc-nsh-27 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-mpls-10 ** Downref: Normative reference to an Informational RFC: RFC 7333 == Outdated reference: A later version (-06) exists of draft-bertz-dime-policygroups-04 == Outdated reference: A later version (-04) exists of draft-ietf-dmm-deployment-models-02 Summary: 1 error (**), 0 flaws (~~), 23 warnings (==), 4 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 DMM Working Group S. Matsushima 3 Internet-Draft SoftBank 4 Intended status: Standards Track L. Bertz 5 Expires: May 3, 2018 Sprint 6 M. Liebsch 7 NEC 8 S. Gundavelli 9 Cisco 10 D. Moses 11 Intel Corporation 12 C. Perkins 13 Futurewei 14 October 30, 2017 16 Protocol for Forwarding Policy Configuration (FPC) in DMM 17 draft-ietf-dmm-fpc-cpdp-09 19 Abstract 21 This document describes a way, called Forwarding Policy Configuration 22 (FPC) to manage the separation of data-plane and control-plane. FPC 23 defines a flexible mobility management system using FPC agent and FPC 24 client functions. An FPC agent provides an abstract interface to the 25 data-plane. The FPC client configures data-plane nodes by using the 26 functions and abstractions provided by the FPC agent for that data- 27 plane nodes. The data-plane abstractions presented in this document 28 is extensible, in order to support many different types of mobility 29 management systems and data-plane functions. 31 Status of This Memo 33 This Internet-Draft is submitted in full conformance with the 34 provisions of BCP 78 and BCP 79. 36 Internet-Drafts are working documents of the Internet Engineering 37 Task Force (IETF). Note that other groups may also distribute 38 working documents as Internet-Drafts. The list of current Internet- 39 Drafts is at https://datatracker.ietf.org/drafts/current/. 41 Internet-Drafts are draft documents valid for a maximum of six months 42 and may be updated, replaced, or obsoleted by other documents at any 43 time. It is inappropriate to use Internet-Drafts as reference 44 material or to cite them other than as "work in progress." 46 This Internet-Draft will expire on May 3, 2018. 48 Copyright Notice 50 Copyright (c) 2017 IETF Trust and the persons identified as the 51 document authors. All rights reserved. 53 This document is subject to BCP 78 and the IETF Trust's Legal 54 Provisions Relating to IETF Documents 55 (https://trustee.ietf.org/license-info) in effect on the date of 56 publication of this document. Please review these documents 57 carefully, as they describe your rights and restrictions with respect 58 to this document. Code Components extracted from this document must 59 include Simplified BSD License text as described in Section 4.e of 60 the Trust Legal Provisions and are provided without warranty as 61 described in the Simplified BSD License. 63 Table of Contents 65 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 66 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 67 3. FPC Design Objectives and Deployment . . . . . . . . . . . . 5 68 4. FPC Mobility Information Model . . . . . . . . . . . . . . . 8 69 4.1. Model Notation and Conventions . . . . . . . . . . . . . 8 70 4.2. Core Structure - Information Model Components . . . . . . 9 71 4.3. Topology . . . . . . . . . . . . . . . . . . . . . . . . 10 72 4.3.1. DPN . . . . . . . . . . . . . . . . . . . . . . . . . 11 73 4.3.2. DPN-Type . . . . . . . . . . . . . . . . . . . . . . 12 74 4.3.3. DPN-Group . . . . . . . . . . . . . . . . . . . . . . 13 75 4.3.4. Domain . . . . . . . . . . . . . . . . . . . . . . . 15 76 4.4. Policy . . . . . . . . . . . . . . . . . . . . . . . . . 15 77 4.5. Configurable Policy . . . . . . . . . . . . . . . . . . . 18 78 4.6. Mobility-Context . . . . . . . . . . . . . . . . . . . . 19 79 4.7. Monitors . . . . . . . . . . . . . . . . . . . . . . . . 22 80 4.8. Namespace and Format . . . . . . . . . . . . . . . . . . 23 81 4.9. Attribute Application . . . . . . . . . . . . . . . . . . 24 82 5. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 24 83 5.1. Protocol Messages and Semantics . . . . . . . . . . . . . 24 84 5.1.1. CONFIG and CONF_BUNDLE Messages . . . . . . . . . . . 27 85 5.1.2. Monitors . . . . . . . . . . . . . . . . . . . . . . 29 86 5.2. Protocol Operation . . . . . . . . . . . . . . . . . . . 30 87 5.2.1. Simple RPC Operation . . . . . . . . . . . . . . . . 30 88 5.2.2. Policy And Mobility on the Agent . . . . . . . . . . 36 89 5.2.3. Optimization for Current and Subsequent Messages . . 38 90 6. Protocol Message Details . . . . . . . . . . . . . . . . . . 41 91 6.1. Data Structures And Type Assignment . . . . . . . . . . . 41 92 6.1.1. Policy Structures . . . . . . . . . . . . . . . . . . 41 93 6.1.2. Mobility Structures . . . . . . . . . . . . . . . . . 43 94 6.1.3. Message Attributes . . . . . . . . . . . . . . . . . 47 95 7. Derived and Subtyped Attributes . . . . . . . . . . . . . . . 51 96 7.1. 3GPP Specific Extenstions . . . . . . . . . . . . . . . . 56 97 8. Implementation Status . . . . . . . . . . . . . . . . . . . . 58 98 9. Security Considerations . . . . . . . . . . . . . . . . . . . 62 99 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 63 100 11. Work Team Participants . . . . . . . . . . . . . . . . . . . 64 101 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 64 102 12.1. Normative References . . . . . . . . . . . . . . . . . . 65 103 12.2. Informative References . . . . . . . . . . . . . . . . . 65 104 Appendix A. YANG Data Model for the FPC protocol . . . . . . . . 66 105 A.1. FPC YANG Model . . . . . . . . . . . . . . . . . . . . . 67 106 A.2. YANG Models . . . . . . . . . . . . . . . . . . . . . . . 89 107 A.2.1. FPC YANG Settings and Extensions Model . . . . . . . 89 108 A.2.2. PMIP QoS Model . . . . . . . . . . . . . . . . . . . 105 109 A.2.3. Traffic Selectors YANG Model . . . . . . . . . . . . 117 110 A.3. FPC YANG Data Model Structure . . . . . . . . . . . . . . 125 111 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 128 113 1. Introduction 115 This document describes Forwarding Policy Configuration (FPC), a 116 system for managing the separation of data-plane and control-plane. 117 FPC enables flexible mobility management using FPC agent and FPC 118 client functions. An FPC agent exports an abstract interface to the 119 data-plane. To configure data-plane nodes and functions, the FPC 120 client uses the interface to the data-plane offered by the FPC agent. 122 Control planes of mobility management systems, or other applications 123 which require data-plane control, can utilize the FPC client at 124 various granularities of operation. The operations are capable of 125 configuring a single Data-Plane Node (DPN) directly, as well as 126 multiple DPNs as determined by abstracted data-plane models on the 127 FPC agent. 129 A FPC agent provides data-plane abstraction in the following three 130 areas: 132 Topology: DPNs are grouped and abstracted according to well-known 133 concepts of mobility management such as access networks, anchors 134 and domains. A FPC agent provides an interface to the abstract 135 DPN-groups that enables definition of a topology for the 136 forwarding plane. For example, access nodes may be assigned to a 137 DPN-group which peers to a DPN-group of anchor nodes. 139 Policy: A Policy embodies the mechanisms for processing specific 140 traffic flows or packets. This is needed for QoS, for packet 141 processing to rewrite headers, etc. A Policy consists of one or 142 more rules. Each rule is composed of Descriptors and Actions. 143 Descriptors in a rule identify traffic flows, and Actions apply 144 treatments to packets that match the Descriptors in the rule. An 145 arbitrary set of policies can applied to a particular collection 146 of flows throgh the use of a Configurable-Policy. 148 Mobility: A mobility session which is active on a mobile node is 149 abstracted as a Mobility-Context with associated runtime concrete 150 attributes, such as tunnel endpoints, tunnel identifiers, 151 delegated prefix(es), routing information, etc. Mobility-Contexts 152 are attached to DPNs via DPN-References. The References assign 153 pre-defined Policies that were requested to be enforced as part of 154 the mobility signaling request. Policy may also be realized by 155 Embedded-Rules in the DPN-Reference. Such policies are typically 156 highly specialized (e.g. negotiated as a part of signaling), were 157 not pre-provisioned or designed as a template. Hence, they are 158 not reusable across Mobility-Contexts. 160 Monitors provide a mechanism to produce reports when events 161 regarding Configurable Policies, Mobility Contexts, DPNs or the 162 Agent occur. 164 The Agent assembles applicable sets of forwarding policies for the 165 mobility sessions from the data model, and then renders those 166 policies into specific configurations for each DPN to which the 167 sessions attached. The specific protocols and configurations to 168 configure DPN from a FPC Agent are outside the scope of this 169 document. 171 The data-plane abstractions may be extended to support many different 172 mobility management systems and data-plane functions. The 173 architecture and protocol design of FPC is not tied to specific types 174 of access technologies and mobility protocols. 176 2. Terminology 178 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 179 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 180 document are to be interpreted as described in [RFC2119]. 182 DPN: A data-plane node (DPN) is capable of 183 deploying data-plane features. DPNs may be 184 switches or routers regardless of their 185 realiziation, i.e. whether they are hardware 186 or software based. 188 FPC Agent: A functional entity in FPC that manages DPNs 189 and provides abstracted data-plane networks 190 to mobility management systems and/or 191 applications through FPC Clients. 193 FPC Client: A functional entity in FPC that is integrated 194 with mobility management systems and/or 195 applications to control forwarding policy, 196 mobility sessions and DPNs. 198 Tenant: An operational entity that manages mobility 199 management systems or applications which 200 require data-plane functions. 202 Domain: One or more DPNs that form a data-plane 203 network. A mobility management system or an 204 application in a tenant may utilize a single 205 or multiple domains. 207 Configurable Policy: A set of Rules (forwarding policies) 208 installed upon a DPN. 210 Mobility Context: An abstracted endpoint of a mobility session 211 associated with runtime attributes. 213 3. FPC Design Objectives and Deployment 215 To fulfill the requirements described in [RFC7333], FPC enables 216 mobility control-planes and applications to configure DPNs with 217 various roles of the mobility management as described in 218 [I-D.ietf-dmm-deployment-models]. 220 FPC defines building blocks of FPC Agent and FPC Client, as well as 221 data models for the necessary data-plane abstractions. The 222 attributes defining those data models serve as protocol elements for 223 the interface between the FPC Agent and the FPC Client. 225 Mobility control-planes and applications integrate the FPC Client 226 function. The FPC Client connects to FPC Agent functions. The 227 Client and the Agent communicate based on information models for the 228 data-plane abstractions described in Section 4. The data models 229 allow the control-plane and the applications to support forwarding 230 policies on the Agent for their mobility sessions. 232 The FPC Agent carries out the required configuration and management 233 of the DPN(s). The Agent determines DPN configurations according to 234 the forwarding policies requested by the FPC Client. The DPN 235 configurations could be specific to each DPN implementation such that 236 how FPC Agent determines implementation specific configuration for a 237 DPN is outside of the scope of this document. Along with the models, 238 the control-plane and the applications put Policies to the Agent 239 prior to creating their mobility sessions. 241 Once the Topology of DPN(s) and domains are defined for a data plane 242 on an Agent, the data-plane nodes (DPNs) are available for further 243 configuration. The FPC Agent connects those DPNs to manage their 244 configurations. 246 This architecture is illustrated in Figure 1. An FPC Agent may be 247 implemented in a network controller that handles multiple DPNs, or 248 there is a simple case where another FPC Agent may itself be 249 integrated into a DPN. 251 This document does not adopt a specific protocol for the FPC 252 interface protocol and it is out of scope. However it must be 253 capable of supporting FPC protocol messages and transactions 254 described in Section 5. 256 +-------------------------+ 257 | Mobility Control-Plane | 258 | and | 259 | Applications | 260 |+-----------------------+| 261 || FPC Client || 262 |+----------^------------+| 263 +-----------|-------------+ 264 FPC interface protocol | 265 +---------------+-----------------+ 266 | | 267 Network | | 268 Controller | DPN | 269 +-----------|-------------+ +----------|---------+ 270 |+----------v------------+| |+---------v--------+| 271 || [Data-plane model] || ||[Data-plane model]|| 272 || FPC Agent || || FPC Agent || 273 |+-----------------------+| |+------------------+| 274 |+------------+----------+| | | 275 ||SB Protocols|FPC Client|| | DPN Configuration | 276 || Modules | Module || +--------------------+ 277 |+------^-----+----^-----+| 278 +-------|----------|------+ 279 | | 280 Other | | FPC interface 281 Southband | | Protocol 282 Protocols | | 283 | +-----------------+ 284 | | 285 DPN | DPN | 286 +----------|---------+ +----------|---------+ 287 |+---------v--------+| |+---------v--------+| 288 || Configuration || ||[Data-plane model]|| 289 || Protocol module || || FPC Agent || 290 |+------------------+| |+------------------+| 291 | | | | 292 | DPN Configuration | | DPN Configuration | 293 +--------------------+ +--------------------+ 295 Figure 1: Reference Forwarding Policy Configuration (FPC) 296 Architecture 298 The FPC architecture supports multi-tenancy; an FPC enabled data- 299 plane supports tenants of multiple mobile operator networks and/or 300 applications. It means that the FPC Client of each tenant connects 301 to the FPC Agent and it MUST partition namespace and data for their 302 data-planes. DPNs on the data-plane may fulfill multiple data-plane 303 roles which are defined per session, domain and tenant. 305 Note that all FPC models SHOULD be configurable. The FPC interface 306 protocol in Figure 1 is only required to handle runtime data in the 307 Mobility model. The rest of the FPC models, namely Topology and 308 Policy, may be pre-configured, and in that case real-time protocol 309 exchanges would not be required for them. Operators that are tenants 310 in the FPC data-plane could configure Topology and Policy on the 311 Agent through other means, such as Restconf 312 [I-D.ietf-netconf-restconf] or Netconf [RFC6241]. 314 4. FPC Mobility Information Model 316 4.1. Model Notation and Conventions 318 In order to clarify the description of the information model, this 319 draft uses the convention describe in the below. 321 Information model entities, e.g. DPNs, Rules, etc., are listed in a 322 hierarchical notation where all entities with the same hierarchical 323 level are located on the same left-justified position one after the 324 other. When entities are composed of sub-entities, they will appear 325 shifted to the right. 327 | 328 +-[entity2] 329 | +-[entity2.1] 330 | +-[entity2.2] 332 Figure 2: Model Notation - An Example 334 Some entities MAY have one or more sub-types placed on the right hand 335 side of the element definition in pointing brackets. Common types 336 include: 338 List: A collection of entities (some could be of the same kind) 340 Set: A collection of entities without duplications 342 Name: a human-readable string 344 Key: a unique value. There are 3 types of keys: 346 U-Key: a universally unique key across all tenants. U-Key spaces 347 are typically involve the use of registries or language 348 specific mechanisms that guarantee universal uniqueness of 349 values. 351 G-Key: a globally unique key - unique within a tenant 352 L-Key: a unique key within the set of values in local namespace. 353 For example, there exist interfaces with teh same name, e.g. 354 "interface0", in two different DPNs within the same tenant but 355 there can only be one "interface0" within each DPN, i.e. its 356 local Interface-Id L-Key space. 358 The Settings pattern, i.e. attributes whose names contain the word 359 'Settings', is a genera set that holds unique properties. If 360 multiple values of a property are present they are held in a List for 361 the property within the settings container. The container acts as an 362 extensible placeholder for properties (attribute/value pairs). 364 Each entity or its subtype may be optional (O) or mandatory (M). 365 Entities that are not marked as optional are mandatory. 367 Example: The following example shows 3 entities: 368 - Entity1 is a globally unique key and has an 369 optional, associated Name 370 - Entity2 is a list 371 - Entity3 is a set and is optional 372 + 373 | 374 +-[entity1] (M), (O) 375 +-[entity2] 376 +-[entity3] (O) 377 | 378 + 380 Figure 3 382 When expanding entity1 into an information model such as YANG it 383 would result in two values: entity1-GKey and entity1-Name. 385 4.2. Core Structure - Information Model Components 387 The substructures that comprise the information model are: 389 Topology: defines the different DPNs and links between them. 391 Policy-Definitions: describes how to handle flows: how to identify 392 traffic and what actions are performed on data packets 394 Configurable-Policy: policies that are relatively static. These 395 policies are usually pre-provisioned and are modified only when 396 the network configuration is updated or when new policy rules are 397 configured 399 Mobility-Context: policies that are created or modified during the 400 network's operation. In most cases, on a per-flow or per session 401 basis 403 Monitor: a list of events that trigger notification messages from 404 FPC Agents to FPC Clients 406 : 407 | 408 +-[Mobility] 409 | + 410 | | 411 : +-[Topology] 412 | 413 +-[Policy] 414 | 415 +-[Configurable-Policy] 416 | 417 +-[Mobility-Context] 418 | 419 +-[Monitor] 421 Figure 4: Mobility Information Model - Core Structure 423 4.3. Topology 425 The Topology sub-structure specifies virtual DPNs and the relations 426 between them. It is used by the network management entity to select 427 the most appropriate DPN resources for handling specific session 428 flows. 430 A virtual DPN is a logical entity that performs DPN functionality 431 (packet movement and management). It may represent a physical DPN 432 unit, a sub-function of a physical DPN or a collection of physical 433 DPNs. The motivation to refer to virtual DPNs in the information 434 model rather than physical DPNs is to provide flexibility for network 435 architects to define which DPN-selection capabilities are performed 436 by the FPC Agent (distributed) and which by the FPC client 437 (centralized). 439 When a virtual DPN is mapped to a physical DPN, the FPC client has 440 maximum knowledge of the DPN architecture and uses it to perform DPN 441 selection for specific sessions. When a virtual DPN is mapped to a 442 collection of physical DPNs, the FPC client cannot select a specific 443 physical DPN because it is hidden by the abstraction and only the FPC 444 Agent can address the specific associated physical DPNs. 446 The Topology sub-structure is comprised of the following sub- 447 structures: 449 DPN-Set: the set of virtual DPNs in a network configuration 451 DPN-Type-Set: a set of DPN-Type entities 453 DPN-Group-Set: a set of virtual DPNs that supports a specific 454 administrative purpose (in/out bound, roaming, subnetwork with 455 common specific configuration etc.) 457 Domain: a set of Domains tha represent a logical partition of 458 network resources 460 | 461 +-[Topology] 462 | +-[DPN] 463 | +-[DPN-Type] 464 | +-[DPN-Group] 465 | +-[Domain] 467 Figure 5: Topology Substructure 469 4.3.1. DPN 471 The DPN set sub-structure specifies a subset of virtual DPNs in the 472 network . Some of the DPNs may be identical in functionality and only 473 differ by their key. 475 | 476 +-[DPN] 477 | +-[DPN-Id] , (O) 478 | +-[DPN-Resource-Mapping-Reference] (O) 479 | +-[Interface] 480 | +-[Interface-Reference] 481 | | +-[Access-Technology] 482 | | +-[Role] 483 | | +-[Interface-Id] 484 | +-[Interface-Settings] (O) 486 Figure 6: DPN Substructure 488 Each DPN entry contains the following information: 490 DPN-Id (Key): A unique Identifier of the virtual DPN 492 DPN-Id (Name): the human-readable display string 493 DPN-Resource-Mapping-Reference (O): A reference to the underlying 494 implementation, e.g. physical node, virtual element, etc. that 495 supports this DPN. This value MUST be non-empty prior to Dynamic- 496 Policies being installed upon the DPN. 498 Interface-Set: the set of interfaces (through which data packets are 499 received and transmitted) of that Virtual DPN. The virtual DPN 500 abstracts one or multiple physical DPNs each having one or more 501 interfaces. The Interface-set sub-structure is a collection of 502 all interface types available by this virtual DPN. The purpose of 503 this information is not to describe each interface of each DPN, 504 but rather, to indicate the entire set of interface types for the 505 sake of the DPN selection process, when a DPN with specific 506 interface capabilities is required. Each interface entry has a 507 reference to a defined DPN-Type entry in the DPN-Type-Set sub- 508 structure defined below and additional information that is 509 specific to that interface: 511 Interface-Reference - a 3-tuple key that uniquely references an 512 entry in the DPN-Type-Set sub-structure: Access-Technology, 513 Role and Interface-Id. 515 Interface-Settings - An optional set of settings of this 516 interface (that do not affect the DPN selection of active or 517 enabled interfaces). Examples: MTU size, display name, etc. 519 4.3.2. DPN-Type 521 DPN-Type is the collection of all possible types of interfaces 522 defined for DPNs in the network. The interfaces are grouped 523 according to their access technology, e.g. 3GPP, WiMAX, 802.x and 524 Role, e.g. LMA, MAG, PGW, AMF etc. Within a group, interfaces may 525 have additional properties that are more specific, a list of features 526 and optionally settings relevant to DPN selection. This information 527 is used when searching for resources in a network to carry out 528 required operations on data traffic. 530 | 531 +-[DPN-Type] 532 | +-[Access-Technology] , (O) 533 | +-[Role] , (O) 534 | +-[Interface] 535 | +-[Interface-Id] , (O) 536 | +-[Interface-Protocol] 537 | +-[Features] (O) 538 | +-[Interface-Settings] (O) 540 Figure 7: DPN Type 542 Each DPN-Type entry contains the following information: 544 Access-technology: the technology used in the access network that 545 originated the signaling (WiMAX, 3GPP, 802.x etc.) 547 Role: the role (MAG, LMA, PGW, AMF etc.) of the device sharing the 548 interfaces specified below. 550 Interface: A set of interfaces possible for the group above. Each 551 interface carries the following information: 553 Interface-Id: a key that is used together with the 2-tuple 554 Access-Technology and Role, to create a 3-tuple key that is 555 referred to be the interface definition of virtual DPNs 557 Interface-Protocols: rotocols supported by this interface - 558 PMIP, S5-GTP, S5-PMIP etc. 560 Features: an optional set of supported features which further 561 determine the suitability of the interface to the desired 562 operation 564 Interface-Settings: an optional set of settings that MUST be 565 known when determining the suitability of an interface for the 566 specific request. The difference between 'Features' and 567 'Settings' is that 'Features' are static while 'Settings' may 568 be configured. Examples: SequenceNumber=ON/OFF 570 The entries Access-Technology and Role represent a tuple key that 571 uniquely identifies the set of interfaces that may be available for 572 DPNs of the specific type. 574 4.3.3. DPN-Group 576 A DPN-Group is a list of a group of DPNs serving some administrative 577 purpose. Each group contains a list of DPNs (referenced by DPN-Id) 578 and selected interfaces (referenced by the interface's 3-tuple key). 579 The interfaces are listed rather than referred implicitly by each 580 specific DPN to enable to define a subset of a DPN interfaces to be 581 part of the group. 583 | 584 +-[DPN-Group] 585 | +-[DPN-Group-Id] , (O) 586 +-[Referenced-Interface] 587 | +-[Interface-Id] 588 | +-[Role] 589 | +-[Access-Technology] 590 | +-[Supporting-DPN-Id] 591 | +-[DPN-Group-Peer-Reference] (O) 592 +-[DPN-Peer-Group] 593 | +-[Remote-DPN-Group-Id] 594 | +-[Interface-Settings] (O) 595 +-[Domain-Id-Reference] 597 Figure 8: DPN Group 599 Each DPN-Group entry contains the following information: 601 DPN-Group (Key): A unique Identifer of the DPN-Group 603 DPN-Group (Name): the human-readable display string 605 Referenced-Interfaces: A set of interfaces and the DPNs / associated 606 DPN-Peer-Groups that support them. Each entry contains 608 Interface-Id: a key that is used together with the 2-tuple 609 Access-Technology and Role, to create a 3-tuple key that is 610 referred to be the interface definition of virtual DPNs 612 Role: the role (MAG, LMA, PGW, AMF etc.) of the device sharing 613 the interfaces specified below. 615 Access-technology: the technology used in the access network 616 that originated the signaling (WiMAX, 3GPP, 802.x etc.) 618 Role: the role (MAG, LMA, PGW, AMF etc.) of the device sharing 619 the interfaces specified below. 621 Supporting-DPN-Id (Set): A set of DPN-Id-References that support 622 the specific interface for this DPN-Group. 624 Interface-Settings: an optional set of settings that MUST be 625 known when determining the suitability of an interface for the 626 specific request.F 628 DPN-Peer-Group: A set of Remote (from the DPN-Group's point of view) 629 DPN-Groups. When communication occurs between the DPN-Group and 630 DPN-Peer-Group the Interface-Settings MUST be used. Each entry 631 contains the following information: entry contains 633 Remote-DPN-Group-Id: A unique Identifier of the DPN-Peer-Group 635 Interface-Settings: an optional set of settings that MUST be 636 known when determining the suitability of an interface for the 637 specific request. 639 4.3.4. Domain 641 A Domain represents a logica abstraction of a group of heterogeneous 642 Topology resources. Other models, outside of the scope of this 643 specificaiton, provide the details for the Domain. 645 | 646 +-[Domain] 647 | +-[Domain-Id] , (O) 648 +-[Domain-Reference] 650 Figure 9: Domainn 652 Each Domain entry contains the following information: 654 Domain (Key): A unique Identifier of the Domain 656 Domain (Name): the human-readable display string 658 Domain-Reference: A link to the underlying resource / informaiton 659 that provides further details regarding the domain. 661 4.4. Policy 663 The Policy substructure defines and identifies grouped Rules for 664 enforcement on the data plane. Rules comprise traffic descriptors 665 and actions on how to treat traffic in case the traffic descriptor 666 matches a data packet. The Policy substructure is independent of a 667 policy context, whether it's an administratively configurable policy 668 which applies to all or a defined aggregate of data flows, or a 669 mobility context-related policy, which is associated with a mobility 670 session and may apply only to data traffic of an associated mobile 671 node while being registered. 673 In addition to the Policy substructure, the Core Structure per 674 Section 4.2 holds accordingly separate entries for the Configurable- 675 Policy as well as for Mobility-Context, which do not only define 676 their own policies by embedded rules, but comprise references to 677 policy definitions in the Policy substructure, to which additional 678 settings can be applies on a per-Configurable-Policy basis and on a 679 per-Mobility-Context bases respectively. 681 Traffic descriptions and traffic treatment actions are defined 682 separately in Descriptor-Definition and Action-Definition 683 respectively. Binding between traffic descriptors and associated 684 traffic treatment action is defined in a set of rule definition 685 entries (Rule-Definition) which comprise references to entries in the 686 set of traffic descriptors (Descriptor-Reference) and traffic 687 treatment actions (Action-Reference). Accordingly, a single rule or 688 a group of rules are bound to a policy in the set of policy 689 definitions (Policy-Definition) by reference to entries in the set of 690 rule definitions (Rule-Id). 692 | 693 +-[Policy] 694 | +-[Policy-Definition] 695 | | +-[Policy-Id] (M) 696 | | +-[Rule-Reference] Set (M) 697 | | +-[Precedence] (M) 698 | | +-[Rule-Id-Reference] (M) 699 | +-[Rule-Definition] 700 | | +-[Rule-Id] (M) 701 | | +-[Descriptor-Match-Type] (M) 702 | | +-[Descriptor-Reference] 703 | | | +-[Descriptor-Id-Reference] 704 | | | +-[Direction] (O) 705 | | +-[Action-Reference] 706 | | +-[Action-Id-Reference] 707 | | +-[Action-Order] 708 | +-[Descriptor-Definition] 709 | | +-[Descriptor -Id] (M) 710 | | +-[Descriptor-Type] 711 | | +-[Descriptor-Value] 712 | +-[Action-Definition] 713 | +-[Action-Id] (M) 714 | +-[Action-Type] 715 | +-[Action-Value] 716 | 718 Figure 10: Policy Substructure 720 The Policy Substructure contains the following entries: 722 Policy-Definition: A set of policy definitions which bind a single 723 or multiple rules to a policy. 725 Policy-Id: Identifies a policy definition. 727 Rule-Reference: Assigns a set of rule definitions, which are 728 bound to a policy definition, by reference to the associated 729 Rule in the Rule-Definition Substructure. 731 Precedence: Defines the order with which the rules must be 732 applied. 734 Rule-Id-Reference: Identifies a rule. 736 Rule-Definition: A set of rule definitions which bind a single or 737 multiple traffic descriptors (by reference to Descriptor- 738 Definition) to a single or multiple traffic treatment actions (by 739 reference to Action-Definition). 741 Rule-Id: Identifies a rule definition. 743 Descriptor-Match-Type: Conjuction of Descriptor-Values to apply 744 as match to DPN traffic, which can be either OR or AND. The 745 identified conjunction applies to all Descriptor-Definitions in 746 the given Rule-Definition. 748 Descriptor-Reference: Assigns a set of descriptors to the rule 749 by reference to the associated Descriptor-Definition. 751 Descriptor-Id-Reference: Identifies the referred Descriptor- 752 Definition 754 Direction: Indicates if a rule applies to uplink traffic, to 755 downlink traffic, or to both, uplink- and downlink traffic. 756 Applying a rule to both, uplink- and downlink traffic, in case 757 of symmetric rules, allows omitting a separate entry for each 758 direction. When not present, the direction is implied by the 759 Descriptor's values. 761 Action-Reference: Assigns a set of actions to the rule by 762 reference to the associated Action-Definition. 764 Action-Id-Reference: Identifies the referred Action-Definition. 766 Action-Order: Defines the order how actions are executed in case 767 the rule applies per match of the associated traffic 768 descriptor. 770 Descriptor-Definition: A set of descriptor definitions, each being 771 identified by a key (Descriptor-Id) 773 Descriptor-Id: Identifies a descriptor definition. 775 Descriptor-Type: Identifies the type of descriptor, e.g. an IPv6 776 traffic selector per [RFC 6088], for unambiguous 2 777 interpretation of a Descriptor-Value. 779 Descriptor-Value: Defines all required attribute-value pairs per 780 the traffic descriptor type identified in Descriptor-Type. 782 Action-Definition: A set of action definitions. 784 Action-Id: Identifies an action definition. 786 Action-Type: Identifies the type of an action for unambiguous 787 interpretation of an Action-Value entry. 789 Action-Value: Defines all required attribute-value pairs per the 790 action type identified in Action-Type. 792 4.5. Configurable Policy 794 | 795 +-[Configurable-Policy] 796 | +-[DPN-Id-Reference] 797 | +-[Installed-Policy] 798 | | +-[Installed-Policy-Id] 799 | | +-[Policy-Id-Reference] 800 | | +-[Policy-Settings] (O) 801 | +-[Settings] (O) 802 | 804 Figure 11: Configurable Policy 806 The Configurable-Policy Substructure contains the following entries: 808 DPN-Id-Reference: Refers to the DPN to which the policy applies. 810 Installed-Policy: A list of policies that apply to an identified 811 DPN. 813 Installed-Policy-Id: Holds the identifier of the DPN at which 814 the policy has been installed. 816 Policy-Id-Reference: Assigns a policy by reference to the 817 associated Policy-Definition. 819 Policy-Settings: Settings that apply to the previously 820 referenced policy to complement rules or make them concrete, 821 e.g. in case the descriptor representing a packet match has not 822 or unambiguously been defined in the poliicy sub-structure. 824 Settings: Settings that apply to multiple policies at the 825 identified DPN. 827 4.6. Mobility-Context 829 The Mobility-Context Substructure holds entries associated with a 830 mobile node's mobility sessions. At least one instance is created at 831 the mobile node's registration to serve as parent context. 832 Additional instances holding child context with reference to parent 833 context can be created. Child context holds, for example, 834 descriptors of mobile node data traffic which needs to be treated 835 different from traffic that matches descriptor of the parent context, 836 e.g. in terms of QoS. Child context can inherit some attributes/ 837 values from parent context, such as traffic encapsulation and 838 forwarding information, but can hold different or additional 839 attributes/values that apply to traffic that matches the descriptor 840 of the child context. 842 Termination a parent context implies termination of all dependent 843 child context, e.g. at deregistration of a mobile node. 845 | 846 +-[Mobility-Context] 847 | +-[Mobility-Context-Id] 848 | +-[DPN-Group-Id-Reference] (O) 849 | +-[Parent-Mobility-Context-Id-Reference] (O) 850 | +-[DPN-References] 851 | | +-[DPN-Id-Reference] 852 | | +-[Direction] (O) 853 | | +-[DPN-Settings-Complementary] 854 | | +-[Interface-Id-Reference] 855 | | +-[Embedded-Rule] (O) 856 | | +-[Assigned-Policy-Reference] (O) 857 | +-[Requested-Policy-Reference] (O) 858 | +-[Context-Settings-Complementary] (O) 860 Figure 12: Mobility Context 862 The Mobility-Context Substructure holds the following entries: 864 Mobility-Context-Id: Identifies a Mobility-Context 866 DPN-Group-Id-Reference: Assigns a DPN-Group, which groups DPN that 867 are used during the DPN selection procedure, by reference. 869 Parent-Mobility-Context-Id-Reference: Assigns a parent Mobility- 870 Context to aquire settings as required. 872 DPN-References: Holds a list of DPNs with the associated concrete 873 policies that apply to the DPN. An entry MUST have at least one 874 value present in its Assigned-Policy-Refence or Embedded-Rule sets 875 in order to be valid. 877 DPN-Id-Reference: Assigns a DPN, to which the policy applies, by 878 reference. 880 Direction: Indicates if a rule applies to uplink or downlink 881 traffic, or to both, uplink- and downlink traffic. Applying a 882 rule to both, uplink- and downlink traffic, in case of 883 symmetric rules, allows omitting a separate entry for each 884 direction. When not present the value is assumed to apply to 885 both directions. 887 DPN-Settings-Complementary: Complementary seeings that apply to 888 the DPN for the given Mobility-Context. 890 Interface-Id-Reference: Assigns the selected interface of the 891 DPN my reference. 893 Embedded-Rule: Rule that applies to the DPN for this Mobility- 894 Context. This rule is embedded and not refereced in the Policy 895 substructure. 897 Assigned-Policy-Reference: A set of references to the list of 898 Requested-Policy-References per this Mobility-Context. 900 Requested-Policy-Reference: Assigns a list of policies in Policy- 901 Definitions that can apply to any DPN per this Mobility-Context. 902 DPN-Reference entries can select from this list of policy 903 references to apply to the associated DPN. 905 Context-Settings-Complementary: Complementary settings that apply 906 to the referenced policies per this Mobility-Context. 908 The Rules Template format is aligned with the Rule Substructure. It 909 can represent an Embedded-Rule per the Mobility-Context Substructure. 911 | 912 +-[Embedded-Rule] 913 | +-[Rule-Id] (M) 914 | +-[Precedence] 915 | +-[Descriptor-Match-Type] (M) 916 | +-[Descriptor-Definition] 917 | | +-[Descriptor-Id] (M) 918 | | +-[Descriptor-Type] 919 | | +-[Descriptor-Value] 920 | +-[Action-Definition] 921 | +-[Action-Order] (M) 922 | +-[Action-Id] (O) 923 | +-[Action-Type] 924 | +-[Action-Value] 926 Figure 13: Rule Template 928 The Embedded-Rule template holds the following entries: 930 Rule-Id: Identifies a rule definition. It is provided for 931 convenience. 933 Precedence: Defines the order with which the rules must be applied 934 and is used as the key. 936 Descriptor-Match-Type: Conjuction of Descriptor-Values to apply as 937 match to DPN traffic, which can be either OR or AND. The 938 identified conjunction applies to all Descriptor-Definitions in 939 the given Rule-Definition 941 Descriptor-Definition: A set of descriptor definitions, each being 942 identified by a key (Descriptor-Id) 944 Descriptor-Id: Identifies a Descriptor-Definition 946 Descriptor-Type: Identifies the type of descriptor, e.g. an IPv6 947 traffic selector per [RFC 6088], for unambiguous 2 948 interpretation of a Descriptor-Value 950 Descriptor-Value: Defines all required attribute-value pairs per 951 the traffic descriptor type identified in Descriptor-Type. 953 Action-Definition: A set of action definitions. 955 Action-Order: Defines the order how actions are executed in case 956 the rule applies per match of the associated traffic 957 descriptor. 959 Action-Id: Identifies an action definition. 961 Action-Type: Identifies the type of an action for unambiguous 962 interpretation of an Action-Value entry. 964 Action-Value: Defines all required attribute-value pairs per the 965 action type identified in Action-Type. 967 4.7. Monitors 969 Monitors provide a mechanism to produce reports when events occur. A 970 Monitor will have a target that specifies what is to be watched. 972 When a Monitor is specified, the configuration MUST be applicable to 973 the attribute/entity monitored. For example, a Monitor using a 974 Threshold configuration cannot be applied to a Context, because 975 Contexts do not have thresholds. But such a monitor could be applied 976 to a numeric threshold property of a Context. 978 | 979 +-[Monitor] 980 | +-[Monitor-Id] 981 | +-[Target] 982 | +-[Binding-Information] (O) 983 | +-[Deterrable] (O) 984 | +-[Configuration] 986 Figure 14: Monitor Substructure 988 Monitor-Id: Name of the Monitor. The Id format MUST conform to 989 Section 4.8. 991 Target: Description of what is to be monitored. This can be an 992 Event, a Dynamic Policy, an installed DPN Policy, or values of a 993 Dynamic-Policy attribute. When the type is an attribute of 994 Mobility-Context, the target name is a concatenation of the 995 Context-Id and the relative path (separated by '/') to the 996 attribute(s) to be monitored. Target must provide unambiguously 997 identify the monitored attribute and the location (DPN). 999 Binding-Information: Complements (ambigous) Target information to 1000 define the Monitor in an unambigous way. 1002 Deterrable: Indicates that a monitoring report can be delayed in a 1003 defined delay budget for possible bundling with other reports 1005 Configuration: Determined by the Monitor subtype. The recipient of 1006 a notification as monitor report is specified in the 1007 Configuration. Four reporting types are defined: 1009 * Periodic reporting specifies an interval by which a 1010 notification is sent. 1012 * Event reporting specifies a list of event types that, if they 1013 occur and are related to the monitored attribute, will result 1014 in sending a notification. 1016 * Scheduled reporting specifies the time (in seconds since Jan 1, 1017 1970) when a notification for the monitor should be sent. Once 1018 this Monitor's notification is completed the Monitor is 1019 automatically de-registered. 1021 * Threshold reporting specifies one or both of a low and high 1022 threshold. When these values are crossed a corresponding 1023 notification is sent. 1025 4.8. Namespace and Format 1027 The identifiers and names in FPC models which reside in the same 1028 namespace must be unique. That uniqueness must be kept in agent or 1029 data-plane tenant namespace on an Agent. The tenant namespace 1030 uniqueness MUST be applied to all elements of the tenant model, i.e. 1031 Topology, Policy and Mobility models. 1033 When a Policy needs to be applied to Contexts in all tenants on an 1034 Agent, the Agent SHOULD define that policy to be visible from all the 1035 tenants. In this case, the Agent assigns an unique identifier in the 1036 agent namespace and effectively creates a U-Key although only a G-Key 1037 is required. 1039 The format of identifiers can utilize any format with agreement 1040 between data-plane agent and client operators. The formats include 1041 but are not limited to Globally Unique IDentifiers (GUIDs), 1042 Universally Unique IDentifiers (UUIDs), Fully Qualified Domain Names 1043 (FQDNs), Fully Qualified Path Names (FQPNs) and Uniform Resource 1044 Identifiers (URIs). 1046 The FPC model does not limit the types of format that dictate the 1047 choice of FPC protocol. However the choice of identifiers which are 1048 used in Mobility model need to be considered to handle runtime 1049 parameters in real-time. 1051 4.9. Attribute Application 1053 When search for attributes in Settings to apply for Embeded Rules or 1054 Assigned-Policy-References the following search order is applied by 1055 the Agent / DPN for Mobilty-Contexts: 1057 1. DPN-Settings-Complementary of the DPN-Reference entry 1059 2. Context-Settings-Complementary of the Mobility-Context 1061 3. If Parent-Mobility-Context-Id-Reference is not empty the 1062 following are also searched: 1064 1. DPN-Settings-Complementary of the DPN-Reference entry for the 1065 same interface, if present. 1067 2. Context-Settings-Complementary of this parent Mobility- 1068 Context 1070 3. Optionally, if this Mobility-Context has a non-empty Parent- 1071 Mobility-Context-Id-Reference this step MAY be repeated but 1072 it is NOT reccommended as it could slow system performance. 1074 4. Interface-Settings of the DPN interface 1076 Only looking at settings of the first Parent-Mobility-Context-Id- 1077 Reference is recommended for performance reasons. If further depth 1078 of search is supported the Agent MUST make this known to the Client. 1080 For Configurable Policy the following search order is applied: 1082 1. Policy-Settings of the Installed-Policy 1084 2. Settings of the Configurable-Policy 1086 5. Protocol 1088 NOTE - The terms Context and Mobility-Context are used 1089 interchangeable throughout the rest of this document. 1091 5.1. Protocol Messages and Semantics 1093 Five message types are supported: 1095 +---------------+----------------+----------------------------------+ 1096 | Message | Type | Description | 1097 +---------------+----------------+----------------------------------+ 1098 | CONF | HEADER OP_TYPE | Configure processes a single | 1099 | | BODY | operation. | 1100 | | | | 1101 | CONF_BUNDLE | HEADER OP_TYPE | A Conf-bundle takes multiple | 1102 | | REF_SCOPE | operations that are to be | 1103 | | TRANS_STRATEGY | executed as a group with partial | 1104 | | 1*[OP_ID BODY] | failures allowed. They are | 1105 | | | executed according to the OP_ID | 1106 | | | value coupled with the BODY in | 1107 | | | ascending order. If a | 1108 | | | CONF_BUNDLE fails, any entities | 1109 | | | provisioned in the CURRENT | 1110 | | | operation are removed. However, | 1111 | | | any successful operations | 1112 | | | completed prior to the current | 1113 | | | operation are preserved in order | 1114 | | | to reduce system load. | 1115 | | | | 1116 | REG_MONITOR | HEADER *[ | Register a monitor at an Agent. | 1117 | | MONITOR ] | The message includes information | 1118 | | | about the attribute to monitor | 1119 | | | and the reporting method. Note | 1120 | | | that a MONITOR_CONFIG is | 1121 | | | required for this operation. | 1122 | | | | 1123 | DEREG_MONITOR | HEADER 1*[ | Deregister monitors from an | 1124 | | MONITOR_ID ] [ | Agent. Monitor IDs are provided. | 1125 | | SEND_DATA ] | SEND_DATA is an optional boolen | 1126 | | | that indicates if a successful | 1127 | | | DEREG triggers a NOTIFY with | 1128 | | | final data. | 1129 | | | | 1130 | PROBE | HEADER | Probe the status of a registered | 1131 | | MONITOR_ID | monitor. | 1132 +---------------+----------------+----------------------------------+ 1134 Table 1: Client to Agent Messages 1136 Each message contains a header with the Client Identifier, an 1137 execution delay timer and an operation identifier. The delay, in ms, 1138 is processed as the delay for operation execution from the time the 1139 operation is received by the Agent. 1141 The Client Identifier is used by the Agent to associate specific 1142 configuration characteristics, e.g. options used by the Client when 1143 communicating with the Agent, as well as the association of the 1144 Client and tenant in the information model. 1146 CONF_BUNDLE also has the Transaction Strategy (TRANS_STRATEGY) 1147 attribute. This value specifies the behavior of the Agent when an 1148 operation fails while processing a CONF_BUNDLE message. The value of 1149 'default' uses the default strategy defined for the message. The 1150 value 'all_or_nothing' will roll back all successfully executed 1151 operations within the bundle as well as the operation that failed. 1153 An FPC interface protocol used to support this specification may not 1154 need to support CONF_BUNDLE messages or specific TRANS_STRATEGY types 1155 beyond 'default' when the protocol provides similar semantics. 1156 However, this MUST be clearly defined in the specification that 1157 defines the interface protocol. 1159 An Agent will respond with an ERROR, OK, or an OK WITH INDICATION 1160 that remaining data will be sent via a notify from the Agent to the 1161 Client Section 5.1.1.4.2 for CONFIG and CONF_BUNDLE requests. When 1162 returning an 'ok' of any kind, optional data MAY be present. 1164 Two Agent notifications are supported: 1166 +----------------------+----------+---------------------------------+ 1167 | Message | Type | Description | 1168 +----------------------+----------+---------------------------------+ 1169 | CONFIG_RESULT_NOTIFY | See | An asynchronous notification | 1170 | | Table 13 | from Agent to Client based upon | 1171 | | | a previous CONFIG or | 1172 | | | CONF_BUNDLE request. | 1173 | | | | 1174 | NOTIFY | See | An asynchronous notification | 1175 | | Table 14 | from Agent to Client based upon | 1176 | | | a registered MONITOR. | 1177 +----------------------+----------+---------------------------------+ 1179 Table 2: Agent to Client Messages (notifications) 1181 The HEADER is a part of all messages and is comprised of the 1182 following information: 1184 CLT_ID: The Client Identifier 1186 DELAY (OPTIONAL): The time (in ms) to delay the execution of ther 1187 operaiton on the DPN once it is received by the Agent. 1189 OP_ID: Operation Identifier 1190 Results will be supplied per operation input. Each result contains 1191 the RESULT_STATUS and OP_ID that it corresponds to. RESULT_STATUS 1192 values are: 1194 OK - Success 1196 ERR - An Error has occurred 1198 If an error occurs, information MUST be returned in the response. 1199 Error informaiton is comprised of the following: 1201 ERROR_TYPE_ID (Unsigned 32, REQUIRED) - The identifier of a 1202 specific error type The values are TRANSPORT (0), RPC (1), 1203 PROTOCOL(2) or APPLICATION (3). 1205 ERROR_TAG - (String, REQUIRED) - enumerated error tag. 1207 ERROR_APP_TAG - (String, OPTIONAL) - Application specific error 1208 tag. 1210 ERROR_MESSAGE - (String, OPTIONAL) - A message describing the 1211 error. 1213 ERROR_INFO - (Any Data, OPTIONAL) - Any data required for the 1214 response. 1216 5.1.1. CONFIG and CONF_BUNDLE Messages 1218 CONFIG and CONF_BUNDLE include OP_TYPE as part of the header 1219 information: 1221 OP_TYPE: specifies the type of operation. Valid values are 'create' 1222 (0), 'update' (1), 'query' (2) or 'delete' (3). 1224 The BODY is comprised of the following information: 1226 COMMAND_SET: Specifies the Command Set (see Section 5.1.1.2). 1228 REF_SCOPE: If supported, specifies the Reference Scope (see 1229 Section 5.1.1.3) 1231 BODY INTERNALS: A list of entities under Policy, e.g. Policy- 1232 Definitions, Action-Definitions, etc. as well as Installed 1233 Policies and Contexts when the OP_TYPE is 'create' or 'update'. 1234 Otherwise it is a list of Targets for 'query' or 'deletion'. See 1235 Section 6.1.3.2 for details. 1237 CONF_BUNDLES includes an OP_ID with each body for tracking of the 1238 bundle's subtransactions. 1240 5.1.1.1. Agent Operation Processing 1242 The Agent will process entities provided in an operation in the 1243 following order: 1245 1. Action-Definitions 1247 2. Descriptor Defintions 1249 3. Rule Definitions 1251 4. Policy Definitions 1253 5. Installed Policies 1255 6. Mobility Contexts according to COMMAND_SET 1257 5.1.1.2. Command Bitsets 1259 The COMMAND_SET is a technology specific bitset that allows for a 1260 single entity to be sent in an operation with multiple requested sub- 1261 transactions to be completed. It can also provide clarity for a 1262 request. For example, a Mobility-Context could have the Home Network 1263 Prefix absent but it is unclear if the Client would like the address 1264 to be assigned by the Agent or if this is an error. Rather than 1265 creating a specific command for assigning the IP a bit position in a 1266 COMMAND_SET is reserved for Agent based IP assignment. 1268 5.1.1.3. Reference Scope 1270 The Reference Scope is an optional feature that provides the scope of 1271 references used in a configuration command, i.e. CONFIG or 1272 CONF_BUNDLE. These scopes are defined as 1274 o none - All entities have no references to other entities. 1276 o op - All references are contained in the operation body, i.e. only 1277 intra-operation references exist. 1279 o bundle - All references exist in bundle (inter-operation/intra- 1280 bundle). NOTE - If this value is present in a CONFIG message it 1281 is equivalent to 'op'. 1283 o storage - One or more references exist outside of the operation 1284 and bundle. A lookup to cache / storage is required. 1286 o unknown - the location of the references are unknown. This is 1287 treated as a 'storage' type. 1289 An agent that only accepts 'op' or 'bundle' reference scope messages 1290 is referred to as 'stateless' as it has no direct memory of 1291 references outside messages themselves. This permits low memory 1292 footprint Agents. Even when an Agent supports all message types an 1293 'op' or 'bundle' scoped message can be processed quickly by the Agent 1294 as it does not require storage access. 1296 5.1.1.4. Operation Response 1298 5.1.1.4.1. Immediate Response 1300 For CONF and CONF_BUNDLE the Response MAY include the the following: 1302 NOTIFY_FOLLOWS - A boolean indicator that the Operation has been 1303 accepted by the Agent but further processing is required. A 1304 CONFIG_RESULT_NOTIFY will be sent once the processing has 1305 succeeded or failed. 1307 ENTITIES - Optionally, entities created or partially fulfilled as 1308 part of the operation as specified in Table 12 For Clients that 1309 need attributes back quickly for call processing, the AGENT MUST 1310 respond back with an OK_NOTIFY_FOLLOWS and minimally the 1311 attributes assigned by the Agent in the response. These 1312 situations MUST be determined through the use of Command Sets (see 1313 Section 5.1.1.2). 1315 5.1.1.4.2. Asynchronous Notification 1317 A CONFIG_RESULT_NOTIFY occurs after the Agent has completed 1318 processing related to a CONFIG or CONF_BUNDLE request. It is an 1319 asynchronous communication from the Agent to the Client. 1321 The values of the CONFIG_RESULT_NOTIFY are detailed in Table 13. 1323 5.1.2. Monitors 1325 An Agent may reject a registration if it or the DPN has insufficient 1326 resources. 1328 An Agent or DPN may temporarily suspend monitoring if insufficient 1329 resources exist. In such a case the Agent MUST notify the Client. 1331 When a monitor has a reporting configuration of SCHEDULED it is 1332 automatically de-registered after the last NOTIFY occurs. 1334 If a SCHEDULED or PERIODIC configuration is provided during 1335 registration with the time related value (time or period 1336 respectively) of 0 a NOTIFY is sent and the monitor is immediately 1337 de-registered. This method should, when a MONITOR has not been 1338 installed, result in an immediate NOTIFY sufficient for the Client's 1339 needs and lets the Agent realize the Client has no further need for 1340 the monitor to be registered. 1342 PROBE messages are also used by a Client to retrieve information 1343 about a previously installed monitor. The PROBE message SHOULD 1344 identify one or more monitors by means of including the associated 1345 monitor identifier. An Agent receiving a PROBE message sends the 1346 requested information in a single or multiple NOTIFY messages. 1348 If the Monitor configuration associated with a NOTIFY is deterrable 1349 then the NOTIFY MAY be bundled with other messages back to the Agent 1350 even if this results in a delay of the NOTIFY. 1352 5.1.2.1. Asynchronous Notification 1354 A NOTIFY can be sent as part of de-registraiton, a trigger based upon 1355 a Monitor Configuration or a PROBE. A NOTIFY is comprised of unique 1356 Notification Identifier from the Agent, the Monitor ID the 1357 notification applies to, the Trigger for the notification, a 1358 timestamp of when the notification's associated event occurs and data 1359 that is specific to the monitored value's type. 1361 5.2. Protocol Operation 1363 5.2.1. Simple RPC Operation 1365 An FPC Client and Agent MUST identify themselves using the CLI_ID and 1366 AGT_ID respectively to ensure that for all transactions a recipient 1367 of an FPC message can unambiguously identify the sender of the FPC 1368 message. A Client MAY direct the Agent to enforce a rule in a 1369 particular DPN by including a DPN_ID value in a Context. Otherwise 1370 the Agent selects a suitable DPN to enforce a Context and notifies 1371 the Client about the selected DPN using the DPN_ID. 1373 All messages sent from a Client to an Agent MUST be acknowledged by 1374 the Agent. The response must include all entities as well as status 1375 information, which indicates the result of processing the message, 1376 using the RESPONSE_BODY property. In case the processing of the 1377 message results in a failure, the Agent sets the ERROR_TYPE and 1378 ERROR_TAG accordingly and MAY clear the entity, e.g. Context or 1379 Configurable-Policy, which caused the failure, in the response. 1381 If based upon Agent configuration or the processing of the request 1382 possibly taking a significant amount of time the Agent MAY respond 1383 with a NOTIFY_FOLLOWS indicaiton with an optional RESPONSE_BODY 1384 containing the partially completed entities. When a NOTIFY_FOLLOWS 1385 indication is indicated, the Agent will, upon completion or failure 1386 of the operation, respond with an asynchronous CONFIG_RESULT_NOTIFY 1387 to the Client. 1389 A Client MAY add a property to a Context without providing all 1390 required details of the attribute's value. In such case the Agent 1391 SHOULD determine the missing details and provide the completed 1392 property description back to the Client. If the processing will take 1393 too long or based upon Agent configuration, the Agent MAY respond 1394 with an OK that indicates a NOTIFY_FOLLOWS and also includes a 1395 RESPONSE_BODY containing the partially completed entities. 1397 In case the Agent cannot determine the missing value of an 1398 attribute's value per the Client's request, it leaves the attribute's 1399 value cleared in the RESPONSE_BODY and sets the RESULT to Error, 1400 ERROR_TYPE and ERROR_TAG. As example, the Control-Plane needs to 1401 setup a tunnel configuration in the Data-Plane but has to rely on the 1402 Agent to determine the tunnel endpoint which is associated with the 1403 DPN that supports the Context. The Client adds the tunnel property 1404 attribute to the FPC message and clears the value of the attribute 1405 (e.g. IP address of the local tunnel endpoint). The Agent 1406 determines the tunnel endpoint and includes the completed tunnel 1407 property in its response to the Client. 1409 Figure 15 illustrates an exemplary session life-cycle based on Proxy 1410 Mobile IPv6 registration via MAG Control-Plane function 1 (MAG-C1) 1411 and handover to MAG Control-Plane function 2 (MAG-C2). Edge DPN1 1412 represents the Proxy CoA after attachment, whereas Edge DPN2 serves 1413 as Proxy CoA after handover. As exemplary architecture, the FPC 1414 Agent and the network control function are assumed to be co-located 1415 with the Anchor-DPN, e.g. a Router. 1417 +-------Router--------+ 1418 +-----------+ |+-------+ +---------+| 1419 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1420 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1421 +------+ +------+ +-----+-------+ +-------+ +---------+ 1422 [MN attach] | | | | 1423 |-------------PBU----->| | | 1424 | | |---(1)--CONFIG(CREATE)--->| | 1425 | | | [ MOBILTY_CONTEXT_ID, |--tun1 up->| 1426 | | | DPNREFLIST:[[DPN1, BOTH | | 1427 | | | DPN_SETTINGS_COMPL:[ | | 1428 | | | DOWNLINK(QOS/TUN), | | 1429 | | | UPLINK(QOS/TUN)] ]] |--tc qos-->| 1430 | | | CTXT_SETTINGS_COMPL:[ | | 1431 | | | IP_PREFIX(HNP) ] ] | | 1432 | | |<---(2)- OK --------------|-route add>| 1433 | | | | | 1434 |<------------PBA------| | | 1435 | | | | | 1436 | +----+ | | | | 1437 | |Edge| | | | | 1438 | |DPN1| | | | | 1439 | +----+ | | | | 1440 | | | 1441 | |-=======================================================-| 1442 | | | | 1443 | [MN handover] | | | 1444 | |---PBU ---->| | | 1445 | | |--(3)- CONFIG(MODIFY)---->| | 1446 | |<--PBA------| [ MOBILTY_CONTEXT_ID |-tun1 mod->| 1447 | | | DPNREFLIST:[[DPN1, BOTH | | 1448 | | | DPN_SETTINGS_COMPL:[ | | 1449 | | | DOWNLINK(TUN), | | 1450 | | +----+ | UPLINK(TUN)] ]] ] | | 1451 | | |Edge| |<---(4)- OK --------------| | 1452 | | |DPN2| | | | 1453 | | +----+ | | | 1454 | | | | | | 1455 | | |-============================================-| 1456 | | | | | 1458 Figure 15: Exemplary Message Sequence (focus on FPC reference point) 1460 After reception of the Proxy Binding Update (PBU) at the LMA Control- 1461 Plane function (LMA-C), the LMA-C selects a suitable DPN, which 1462 serves as Data-Plane anchor to the mobile node's (MN) traffic. The 1463 LMA-C adds a new logical Context to the DPN to treat the MN's traffic 1464 (1) and includes a Context Identifier (CONTEXT_ID) to the CONFIG 1465 command. The LMA-C identifies the selected Anchor DPN by including 1466 the associated DPN identifier and the Direction the entry applies to, 1467 BOTH. 1469 The LMA-C adds properties during the creation of the new Context. 1470 One property is added to the DPN Settings Complimentary, to specify 1471 the forwarding tunnel type and endpoints (Anchor DPN, Edge DPN1) in 1472 each direction (as required). Another property is added to specify 1473 the QoS differentiation, which the MN's traffic should experience. 1474 At reception of the Context, the FPC Agent utilizes local 1475 configuration commands to create the tunnel (tun1) as well as the 1476 traffic control (tc) to enable QoS differentiation. After 1477 configuration has been completed, the Agent applies a new route to 1478 forward all traffic destined to the MN's HNP specified as a property 1479 in the Context's Complementary Settings and applied the configured 1480 tunnel interface (tun1). 1482 During handover, the LMA-C receives an updating PBU from the handover 1483 target MAG-C2. The PBU refers to a new Data-Plane node (Edge DPN2) 1484 to represent the new tunnel endpoints in the downlink and uplink, as 1485 required. The LMA-C sends a CONFIG message (3) to the Agent to 1486 modify the existing tunnel property of the existing Context and to 1487 update the tunnel endpoint from Edge DPN1 to Edge DPN2. Upon 1488 reception of the CONFIG message, the Agent applies updated tunnel 1489 property to the local configuration and responds to the Client (4). 1491 +-------Router--------+ 1492 +-----------+ |+-------+ +---------+| 1493 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1494 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1495 +------+ +------+ +-----+-------+ +-------+ +---------+ 1496 [MN attach] | | | | 1497 |-------------PBU----->| | | 1498 | | |---(1)--CONFIG(MODIFY)--->| | 1499 |<------------PBA------| [ CONTEXT_ID, |--tun1 ->| 1500 | | | DPNREFLIST:[[DPN1, BOTH | | 1501 | | | DPN_SETTINGS_COMPL:[ | | 1502 | | | DOWNLINK(TUN delete), | down | 1503 | | | UPLINK(TUN delete)] ]] ] | | 1504 | | | | | 1505 | | |<-(2)- OK ----------------| | 1506 | | | | | 1507 | | [ MinDelayBeforeBCEDelete expires ] | | 1508 | | | | | 1509 | | |---(3)--CONFIG(DELETE)--->|-- tun1 -->| 1510 | | | | delete | 1511 | | |<-(4)- OK ----------------| | 1512 | | | |-- route ->| 1513 | | | | remove | 1514 | | | | | 1516 Figure 16: Exemplary Message Sequence (focus on FPC reference point) 1518 When a teardown of the session occurs, MAG-C1 will send a PBU with a 1519 lifetime value of zero. The LMA-C sends a CONFIG message (1) to the 1520 Agent to modify the existing tunnel property of the existing Context 1521 to delete the tunnel information.) Upon reception of the CONFIG 1522 message, the Agent removes the tunnel configuration and responds to 1523 the Client (2). Per [RFC5213], the PBA is sent back immediately 1524 after the PBA is received. 1526 If no valid PBA is received after the expiration of the 1527 MinDelayBeforeBCEDelete timer (see [RFC5213]), the LMA-C will send a 1528 CONFIG (3) message with a deletion request for the Context. Upon 1529 reception of the message, the Agent deletes the tunnel and route on 1530 the DPN and responds to the Client (4). 1532 When a multi-DPN Agent is used the DPN list permits several DPNs to 1533 be provisioned in a single message for the single Conext. 1535 +-----------+ +-------+ +---------+ 1536 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1537 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN1 | 1538 +------+ +------+ +-----+-------+ +-------+ +---------+ 1539 [MN attach] | | | | 1540 |-------------PBU----->| | | 1541 | | |---(1)--CONFIG(CREATE)--->| | 1542 | | | [ MOBILTY_CONTEXT_ID, |--tun1 up->| 1543 | | | DPNREFLIST:[[DPN1, BOTH | | 1544 | | | DPN_SETTINGS_COMPL:[ | | 1545 | | | DOWNLINK(QOS/TUN), | | 1546 | | | UPLINK(QOS/TUN) ] ], |--tc qos-->| 1547 | | | [DPN2, BOTH | | 1548 | | | DPN_SETTINGS_COMPL:[ | | 1549 | | | DOWNLINK(QOS/TUN), | | 1550 | | | UPLINK(QOS/TUN) ] ] ], | | 1551 | | | CTXT_SETTINGS_COMPL [ | | 1552 | | | IP_PREFIX(HNP) ] ] | | 1553 | | |<-(2)- OK_NOTIFY_FOLLOWS -|-route add>| 1554 | | | | | 1555 |<------------PBA------| | | 1556 | | | | | 1557 | +----+ | | | 1558 | |Edge| | | | 1559 | |DPN2| | | | 1560 | +----+ | | | 1561 | |<---------------------- tun1 up -------------| | 1562 | |<---------------------- tc qos --------------| | 1563 | |<---------------------- route add -----------| | 1564 | | | | | 1565 | | |<(3) CONFIG_RESULT_NOTIFY | | 1566 | | | [ Response Data ] | | 1567 | | | | | 1569 Figure 17: Exemplary Message Sequence for Multi-DPN Agent 1571 Figure 17 shows how the first 2 messages in Figure 15 are supported 1572 when a multi-DPN Agent communicates with both Anchor DPN1 and Edge 1573 DPN2. In such a case, the FPC Client sends the downlink and uplink 1574 for both DPNs in the DPN Reference List of the same Context. Message 1575 1 shows the DPN Reference List with all entries. Each entry 1576 identifies the DPN and direction (one of 'uplink', 'downlink' or 1577 'both'). 1579 The Agent responds with an OK and NOTIFY_FOLLOWS indication while it 1580 simultaneoulsy provisions both DPNs. Upon successful completion, the 1581 Agent responds to the Client with a CONFIG_RESULT_NOTIFY indicating 1582 the operation status. 1584 5.2.2. Policy And Mobility on the Agent 1586 A Client may build Policy and Topology using any mechanism on the 1587 Agent. Such entities are not always required to be constructed in 1588 realtime and, therefore, there are no specific messages defined for 1589 them in this specification. 1591 The Client may add, modify or delete many Installed Policies and 1592 Contexts in a single FPC message. This includes linking Contexts to 1593 Actions and Descriptors, i.e. a Rule. As example, a Rule which 1594 performs re-writing of an arriving packet's destination IP address 1595 from IP_A to IP_B matching an associated Descriptor, can be enforced 1596 in the Data-Plane via an Agent to implicitly consider matching 1597 arriving packet's source IP address against IP_B and re- write the 1598 source IP address to IP_A. 1600 Figure 18 illustrates the generic policy configuration model as used 1601 between a FPC Client and a FPC Agent. 1603 Descriptor_1 -+ +- Action_1 1604 | | 1605 Descriptor_2 -+----+- Action_2 1606 +------+ 1607 /Order#/-------------+ 1608 +------+ | 1609 | 1610 Descriptor_3 -+ +- Action_3 +- 1611 | | | ^ 1612 Descriptor_4 -+----+- Action_4 | | 1613 +------+ | | 1614 /Order#/-------------+ | 1615 +------+ | 1616 1618 +---------------------+ +----------------------+ 1619 | Bind 1..M traffic | | Bind 1..N traffic | 1620 | Descriptors to | --> | treatment actions | 1621 | to a Policy and | | to a Policy and | 1622 | Configurable-Policy | | Configurable-Policy | 1623 +---------------------+ +----------------------+ 1625 | | 1626 +-------------- Data-Plane Rule ------------------+ 1628 Figure 18: Structure of Configurable Policies 1630 As depicted in Figure 18, the Configurable-Policy represents the 1631 anchor of Rules through the Policy / Rule hierarchy. A Client and 1632 Agent use the identifier of the associated Policy to directly access 1633 the Rule and perform modifications of traffic Descriptors or Action 1634 references. A Client and Agent use the identifiers to access the 1635 Descriptors or Actions to perform modifications. From the viewpoint 1636 of packet processing, arriving packets are matched against traffic 1637 Descriptors and processed according to the treatment Actions 1638 specified in the list of properties associated with the Configurable- 1639 Policy. 1641 A Client complements a rule's Descriptors with a Rule's Order 1642 (priority) value to allow unambiguous traffic matching on the Data- 1643 Plane. 1645 Figure 19 illustrates the generic context configuration model as used 1646 between a FPC Client and a FPC Agent. 1648 TrafficSelector_1 1649 | 1650 profile-parameters 1651 | 1652 mobility-profile-- dl ------+ 1653 ^ | 1654 | qos-profile 1655 | 1656 ^ per-mn-agg-max-dl_2 1657 | 1658 1660 +-------------------+ +---------------------+ 1661 | Bind 1..M traffic | | Bind 1..N traffic | 1662 | selectors to | --> | treatment / qos | 1663 | a Context | | actions to a | 1664 | | | Context | 1665 +-------------------+ +---------------------+ 1667 | | 1668 +-------------- Data-Plane Rule ------------------+ 1670 Figure 19: Structure of Contexts 1672 As depicted in Figure 19, the Context represents a mobility session 1673 hierarchy. A Client and Agent directly assigns values such as 1674 downlink traffic descriptors, QoS information, etc. A Client and 1675 Agent use the context identifiers to access the descriptors, qos 1676 information, etc. to perform modifications. From the viewpoint of 1677 packet processing, arriving packets are matched against traffic 1678 Descriptors and processed according to the qos or other mobility 1679 profile related Actions specified in the Context's properties. If 1680 present, the final action is to use a Context's tunnel information to 1681 encapsulate and forward the packet. 1683 A second Context also references context1 in the figure. Based upon 1684 the technology a property in a parent context (parent mobility- 1685 context-id reference) MAY be inherited by its descendants. This 1686 permits concise over the wire representation. When a Client deletes 1687 a parent Context all children are also deleted. 1689 5.2.3. Optimization for Current and Subsequent Messages 1691 5.2.3.1. Configuration Bundles 1693 Bundles provide transaction boundaries around work in a single 1694 message. Operations in a bundle MUST be successfully executed in the 1695 order specified. This allows references created in one operation to 1696 be used in a subsequent operation in the bundle. 1698 The example bundle shows in Operation 1 (OP 1) the creation of a 1699 Context 1 which is then referenced in Operation 2 (OP 2) by 1700 CONTEXT_ID 2. If OP 1 fails then OP 2 will not be executed. The 1701 advantage of the CONF_BUNDLE is preservation of dependency orders in 1702 a single message as opposed to sending multiple CONFIG messages and 1703 awaiting results from the Agent. 1705 When a CONF_BUNDLE fails, any entities provisioned in the CURRENT 1706 operation are removed, however, any successful operations completed 1707 prior to the current operation are preserved in order to reduce 1708 system load. 1710 +-------Router--------+ 1711 +-----------+ |+-------+ +---------+| 1712 | FPC | | FPC | | Anchor | 1713 | Client | | Agent | | DPN | 1714 +-----------+ +-------+ +---------+ 1715 | | | 1716 |--CONF_BUNDLE(CREATE)---->| | 1717 | [ OP 1, | | 1718 | [ MOBILTY_CONTEXT_ID 1, |--tun1 up->| 1719 | DPNREFLIST:[[DPN1, BOTH | | 1720 | DPN_SETTINGS_COMPL:[ | | 1721 | DOWNLINK(QOS/TUN), | | 1722 | UPLINK(QOS/TUN)] ]] |--tc qos-->| 1723 | CTXT_SETTINGS_COMPL:[ | | 1724 | IP_PREFIX(HNP) ] ] ],| | 1725 | [ OP 2, | | 1726 | [ MOBILTY_CONTEXT_ID, |--tun1 up->| 1727 | DPNREFLIST:[[DPN1, BOTH | | 1728 | DPN_SETTINGS_COMPL:[ | | 1729 | DOWNLINK(QOS/TUN), | | 1730 | UPLINK(QOS/TUN)] ]] |--tc qos-->| 1731 | PARENT_CONTEXT_ID_REF=1 | | 1732 | ] ] | | 1733 | | | 1735 Figure 20: Exemplary Bundle Message (focus on FPC reference point) 1737 5.2.3.2. Command Bitsets (Optional) 1739 Command Sets permit the ability to provide a single, unified data 1740 structure, e.g. Mobility-Context, and specify which activities are 1741 expected to be performed on the DPN. This has some advantages 1743 o Rather than sending N messages with a single operation performed 1744 on the DPN a single message can be used with a Command Set that 1745 specifies the N DPN operations to be executed. 1747 o Errors become more obvious. For example, if the HNP is NOT 1748 provided but the Client did not specify that the HNP should be 1749 assigned by the Agent this error is easily detected. Without the 1750 Command Set the default behavior of the Agent would be to assign 1751 the HNP and then respond back to the Client where the error would 1752 be detected and subsequent messaging would be required to remedy 1753 the error. Such situations can increase the time to error 1754 detection and overall system load without the Command Set present. 1756 o Unambiguous provisioning specification. The Agent is exactly in 1757 sync with the expectations of the Client as opposed to guessing 1758 what DPN work could be done based upon data present at the Agent. 1759 This greatly increases the speed by which the Agent can complete 1760 work. 1762 o Permits different technologies with different instructions to be 1763 supported in FPC. 1765 As Command Bitsets are technology specific, e.g. PMIP or 3GPP 1766 Mobility, the type of work varies on the DPN and the amount of data 1767 present in a Context or Port will vary. Using the technology 1768 specific instructions allows the Client to serve multiple 1769 technologies and MAY result in a more stateless Client as the 1770 instructions are transferred the Agent which will match the desired, 1771 technology specific instructions with the capabilities and over the 1772 wire protocol of the DPN more efficiently. 1774 5.2.3.3. Reference Scope(Optional) 1776 Although entities MAY refer to any other entity of an appropriate 1777 type, e.g. Contexts can refer to Policies or other Contexts, the 1778 Reference Scope gives the Agent an idea of where those references 1779 reside. They may be in the same operation, an operation in the same 1780 CONF_BUNDLE message or in storage. There may also be no references. 1781 This permits the Agent to understand when it can stop searching for 1782 reference it cannot find. For example, if a CONF_BUNDLE message uses 1783 a Reference Scope of type 'op' then it merely needs to keep an 1784 operation level cache and consume no memory or resources searching 1785 across the many operations in the CONF_BUNDLE message or the data 1786 store. 1788 Agents can also be stateless by only supporting the 'none', 'op' and 1789 'bundle' reference scopes. This does not imply they lack storage but 1790 merely the search space they use when looking up references for an 1791 entity. The figure below shows the caching hierarchy provided by the 1792 Reference Scope 1794 Caches are temporarily created at each level and as the scope 1795 includes more caches the amount of entities that are searched 1796 increases. Figure 21 shows an example containment hierarchy provided 1797 for all caches. 1799 +---------------+ 1800 | Global Cache | 1801 | (storage) | 1802 +------+--------+ 1803 | 1804 +----------------------+ 1805 | | 1806 +------+--------+ +------+--------+ 1807 | Bundle Cache | | Bundle Cache | 1808 | (bundle) | .... | (bundle) | 1809 +------+--------+ +------+--------+ 1810 | 1811 +--------------------+--------------------+ 1812 | | | 1813 +--------+---------+ +--------+---------+ +--------+---------+ 1814 | Operation Cache | | Operation Cache | | Operation Cache | 1815 | (op) | | (op) | | (op) | 1816 +------------------+ +------------------+ +------------------+ 1818 (no cache) 1820 Figure 21: Exemplary Hierarchical Cache 1822 5.2.3.4. Basename Registry Feature (Optional) 1824 The Optional BaseName Registry support feature is provided to permit 1825 Clients and tenants with common scopes, referred to in this 1826 specification as BaseNames, to track the state of provisioned policy 1827 information on an Agent. The registry records the BaseName and 1828 Checkpoint set by a Client. If a new Client attaches to the Agent it 1829 can query the Registry to determine the amount of work that must be 1830 executed to configure the Agent to a BaseName / checkpoint revision. 1831 A State value is also provided in the registry to help Clients 1832 coordinate work on common BaseNames. 1834 6. Protocol Message Details 1836 6.1. Data Structures And Type Assignment 1838 This section provides a type mapping for FPC structures. When being 1839 mapped to a specific information such as YANG the data type MAY 1840 change. 1842 6.1.1. Policy Structures 1843 +------------+------------------+-----------------------------------+ 1844 | Structure | Field | Type | 1845 +------------+------------------+-----------------------------------+ 1846 | ACTION | ACTION_ID | FPC-Identity (Section 4.8) | 1847 | | | | 1848 | ACTION | ACTION_TYPE | [32, unsigned integer] | 1849 | | | | 1850 | ACTION | ACTION_VALUE | Type specific | 1851 | | | | 1852 | DESCRIPTOR | DESCRIPTOR_ID | FPC-Identity (Section 4.8) | 1853 | | | | 1854 | DESCRIPTOR | DESCRIPTOR_TYPE | [32, unsigned integer] | 1855 | | | | 1856 | DESCRIPTOR | DESCRIPTOR_VALUE | Type specific | 1857 | | | | 1858 | POLICY | POLICY_ID | FPC-Identity (Section 4.8) | 1859 | | | | 1860 | POLICY | RULES | *[ PRECEDENCE RULE_ID ] | 1861 | | | PRECENDENCE is [32, unsigned | 1862 | | | integer]. For Rule see Table 4 | 1863 +------------+------------------+-----------------------------------+ 1865 Table 3: Action Fields 1867 Policies contain a list of Rules by their order value. Each Rule 1868 contains Descriptors with optional directionality and Actions with 1869 order values that specifies action execution ordering if the Rule has 1870 multiple actions. 1872 Rules consist of the following fields. 1874 +------------------+-------------------+----------------------------+ 1875 | Field | Type | Sub-Fields | 1876 +------------------+-------------------+----------------------------+ 1877 | RULE_ID | FPC-Identity | | 1878 | | (Section 4.8) | | 1879 | | | | 1880 | MATCH_TYPE | ENUMERATION [2, | | 1881 | | unsigned bits] | | 1882 | | ('AND' or 'OR') | | 1883 | | | | 1884 | RULE_DESCRIPTORS | *[ DESCRIPTOR_ID | DIRECTION [2, unsigned | 1885 | | DIRECTION ] | bits] is an ENUMERATION | 1886 | | | (uplink, downlink or | 1887 | | | both). | 1888 | | | | 1889 | RULE_ACTIONS | *[ ACTION_ID | ACTION-ORDER [8, unsigned | 1890 | | ACTION_ORDER ] | integer] specifies action | 1891 | | | execution order. | 1892 +------------------+-------------------+----------------------------+ 1894 Table 4: Rule Fields 1896 6.1.2. Mobility Structures 1898 +---------------------------------+---------------------------------+ 1899 | Field | Type | 1900 +---------------------------------+---------------------------------+ 1901 | DPN_ID | FPC-Identity (Section 4.8) | 1902 | | | 1903 | 1*[ INSTALLED_POLICY_ID | | 1904 | POLICY_ID_REFERENCE | | 1905 | POLICY_SETTINGS ] | | 1906 | DPN_POLICY_SETTINGS | | 1907 | | | 1908 | INSTALLED_POLICY_ID | FPC-Identity (Section 4.8) | 1909 | | | 1910 | POLICY_ID_REFERENCE | POLICY_ID | 1911 | | | 1912 | POLICY_SETTINGS | A collection of policy specific | 1913 | | setings (properties) | 1914 | | | 1915 | DPN_POLICY_SETTINGS | A collection of setings | 1916 | | (properties) that affect | 1917 | | multiple installed policies. | 1918 +---------------------------------+---------------------------------+ 1920 Table 5: Configurable-Policy Fields 1922 +-------------------------------------+-----------------------------+ 1923 | Field | Type | 1924 +-------------------------------------+-----------------------------+ 1925 | MOBILITY_CONTEXT_ID | FPC-Identity (Section 4.8) | 1926 | | | 1927 | DPN_GROUP_ID_REFERENCE | FPC-Identity (Section 4.8) | 1928 | | | 1929 | PARENT_MOBILITY_CONTEXT_ID_REFERNCE | FPC-Identity (Section 4.8) | 1930 | | | 1931 | DPNS [NOTE 2] | *[ DPN_REFERENCE ] | 1932 | | | 1933 | REQUEST_POLICY_REFERENCES | * [ POLICY_ID ] | 1934 | | | 1935 | CONTEXT_SETTINGS_COMPLEMENTARY | A Collection of Settings | 1936 | | (properties). | 1937 +-------------------------------------+-----------------------------+ 1939 Table 6: Mobility Context Fields 1941 +----------------------------+--------------------------------------+ 1942 | Field | Type | 1943 +----------------------------+--------------------------------------+ 1944 | DPN_ID | FPC-Identity (Section 4.8) | 1945 | | | 1946 | DIRECTION | See Table 4 | 1947 | | | 1948 | INTERFACE_ID_REF | FPC-Identity (Section 4.8) | 1949 | | | 1950 | EMBEDDED_RULES | *[ EMBEDDED_RULE ] | 1951 | | | 1952 | DPN_SETTINGS_COMPLEMENTARY | A Collection of Settings | 1953 | | (properties). | 1954 | | | 1955 | ASSIGNED_POLICY_REFERENCES | * [ POLICY_ID ] | 1956 +----------------------------+--------------------------------------+ 1958 Table 7: DPN_REFERENCE Fields 1960 +---------------------------+---------------------------------------+ 1961 | Field | Type | 1962 +---------------------------+---------------------------------------+ 1963 | RULE_ID | FPC-Identity (Section 4.8) | 1964 | | | 1965 | MATCH_TYPE | See Table 4 | 1966 | | | 1967 | PRECEDENCE | See Table 3 | 1968 | | | 1969 | ACTION_DEFINITION_SET | *[ ACTION_ORDER ACTION_ID ACTION_TYPE | 1970 | | ACTION_VALUE ] | 1971 | | | 1972 | DESCRIPTOR_DEFINITION_SET | *[ DESCRIPTOR_ID DESCRIPTOR_TYPE | 1973 | | DESCRIPTOR_VALUE ] | 1974 +---------------------------+---------------------------------------+ 1976 Table 8: EMBEDDED_RULE Fields 1978 6.1.2.1. Monitors 1979 +---------------------+-------------------------+-------------------+ 1980 | Field | Type | Description | 1981 +---------------------+-------------------------+-------------------+ 1982 | MONITOR | MONITOR_ID DETERRABLE | | 1983 | | TARGET | | 1984 | | BINDING_INFORMATION | | 1985 | | [REPORT_CONFIG] | | 1986 | | | | 1987 | DETERRABLE | boolean | Deterrability | 1988 | | | indicator. | 1989 | | | | 1990 | BINDING_INFORMATION | String | | 1991 | | | | 1992 | MONITOR_ID | FPC-Identity. See | | 1993 | | Section 4.8 | | 1994 | | | | 1995 | EVENT_TYPE_ID | [8, Event Type ID] | Event Type | 1996 | | | (unsigned | 1997 | | | integer). | 1998 | | | | 1999 | TARGET | OCTET STRING (See | | 2000 | | Section 4.7) | | 2001 | | | | 2002 | REPORT_CONFIG | [8, REPORT-TYPE] | | 2003 | | [TYPE_SPECIFIC_INFO] | | 2004 | | | | 2005 | PERIODIC_CONFIG | [32, period] | report interval | 2006 | | | (ms). | 2007 | | | | 2008 | THRESHOLD_CONFIG | [32, low] [32, hi] | thresholds (at | 2009 | | | least one value | 2010 | | | must be present) | 2011 | | | | 2012 | SCHEDULED_CONFIG | [32, time] | | 2013 | | | | 2014 | EVENTS_CONFIG | *[EVENT_TYPE_ID] | | 2015 +---------------------+-------------------------+-------------------+ 2017 Table 9: Monitor Structures and Attributes 2019 TRIGGERS include but are not limited to the following values: 2021 o Events specified in the Event List of an EVENTS CONFIG 2023 o LOW_THRESHOLD_CROSSED 2025 o HIGH_THRESHOLD_CROSSED 2026 o PERIODIC_REPORT 2028 o SCHEDULED_REPORT 2030 o PROBED 2032 o DEREG_FINAL_VALUE 2034 6.1.3. Message Attributes 2036 6.1.3.1. Header 2038 Each operation contains a header with the following fields: 2040 +--------------+----------------+-----------------------------------+ 2041 | Field | Type | Messages | 2042 +--------------+----------------+-----------------------------------+ 2043 | CLIENT_ID | FPC-Identity | All | 2044 | | (Section 4.8) | | 2045 | | | | 2046 | DELAY | [32, unsigned | All | 2047 | | integer] | | 2048 | | | | 2049 | OP_ID | [64, unsigned | All | 2050 | | integer] | | 2051 | | | | 2052 | OP_REF_SCOPE | [4, | Values are none(0), op(1), | 2053 | | ENUMERATION] | bundle(2), storage(3) or | 2054 | | | unknown(4) | 2055 +--------------+----------------+-----------------------------------+ 2057 Table 10: Message Header Fields 2059 6.1.3.2. CONFIG and CONF_BUNDLE Attributes and Notifications 2060 +--------------------+--------------------+-------------------------+ 2061 | Field | Type | Operation Types | 2062 | | | Create(C), Update(U), | 2063 | | | Query(Q) and Delete(D) | 2064 +--------------------+--------------------+-------------------------+ 2065 | OP_TYPE | [8, op type] | CONFIG and CONF_BUNDLE | 2066 | | | | 2067 | COMMAND_SET | FPC Command | C,U | 2068 | | Bitset. See | | 2069 | | Section 5.1.1.2. | | 2070 | | | | 2071 | INSTALLED_POLICIES | *[ | C,U | 2072 | | INSTALLED_POLICY ] | | 2073 | | | | 2074 | MOBILITY-CONTEXTS | *[ MOBILITY- | C,U | 2075 | | CONTEXT [ | | 2076 | | COMMAND_SET [NOTE | | 2077 | | 1] ] ] | | 2078 | | | | 2079 | TARGETS | FPC-Identity | Q,D | 2080 | | (Section 4.8) | | 2081 | | *[DPN_ID] | | 2082 | | | | 2083 | POLICIES | *[ POLICY ] | C,U | 2084 | | | | 2085 | RULES | *[ RULE ] | C,U | 2086 | | | | 2087 | DESCRIPTORS | *[ DESCRIPTOR ] | C,U | 2088 | | | | 2089 | ACTIONS | *[ ACTION ] | C,U | 2090 +--------------------+--------------------+-------------------------+ 2092 Table 11: CONFIG and CONF_BUNDLE OP_BODY Fields 2094 +--------------------+------------------+---------------------------+ 2095 | Field | Type | Operation Types | 2096 | | | Create(C), Update(U), | 2097 | | | Query(Q) and Delete(D) | 2098 +--------------------+------------------+---------------------------+ 2099 | OP_ID | [64, unsigned | All | 2100 | | integer] | | 2101 | | | | 2102 | STATUS | [1, Enumerated] | OK(0) or Error(1) | 2103 | | | | 2104 | NOTIFY_FOLLOWS | boolean | | 2105 | | | | 2106 | POLICIES | *[ POLICY ] | C,U | 2107 | | | | 2108 | RULES | *[ RULE ] | C,U | 2109 | | | | 2110 | DESCRIPTORS | *[ DESCRIPTOR ] | C,U | 2111 | | | | 2112 | ACTIONS | *[ ACTION ] | C,U | 2113 | | | | 2114 | INSTALLED_POLICIES | *[ | C,U [NOTE 1] | 2115 | | INSTALLED_POLICY | | 2116 | | ] | | 2117 | | | | 2118 | CONTEXTS | *[ CONTEXT [ | C,U [NOTE 1] | 2119 | | COMMAND_SET | | 2120 | | [NOTE 1] ] ] | | 2121 | | | | 2122 | TARGETS | *[ FPC-Identity | Q,D [NOTE 1] | 2123 | | (Section 4.8) ] | | 2124 | | | | 2125 | ERROR_TYPE_ID | [32, unsigned | All [NOTE 2] | 2126 | | integer] | | 2127 | | | | 2128 | ERROR_TAG | [1024, octet | All [NOTE 2, 3] | 2129 | | string] | | 2130 +--------------------+------------------+---------------------------+ 2132 Table 12: Immediate Response RESPONSE_BODY Fields 2134 Notes: 2136 NOTE 1 - Present in OK and OK with NOTIFY_FOLLOWS for both CONFIG 2137 and CONF_BUNDLE. MAY also be present in an CONF_BUNDLE Error 2138 response (ERR) if one of the operations completed successfully. 2140 NOTE 2 - Present only for Error (ERR) responses. 2142 NOTE 3 - Other Error Info (Strings) MAY also be present. 2144 +-----------------+----------------------+--------------------------+ 2145 | Field | Type | Description | 2146 +-----------------+----------------------+--------------------------+ 2147 | AGENT_ID | FPC-Identity | | 2148 | | (Section 4.8) | | 2149 | | | | 2150 | OP_ID | [64, unsigned | All | 2151 | | integer] | | 2152 | | | | 2153 | STATUS | [1, Enumerated] | OK(0) or Error(1) | 2154 | | | | 2155 | NOTIFICATION_ID | [32, unsigned | A Notification | 2156 | | integer] | Identifier used to | 2157 | | | determine notification | 2158 | | | order. | 2159 | | | | 2160 | TIMESTAMP | [32, unsigned | The time that the | 2161 | | integer] | notification occurred. | 2162 | | | | 2163 | DATA | *[ [OP_ID (if | | 2164 | | CONF_BUNDLE) ] | | 2165 | | RESPONSE_BODY (Table | | 2166 | | 12) ] | | 2167 +-----------------+----------------------+--------------------------+ 2169 Table 13: CONFIG_RESULT_NOTIFY Asynchronous Notification Fields 2171 6.1.3.3. Monitors 2172 +-----------------+---------------------+---------------------------+ 2173 | Field | Type | Description | 2174 +-----------------+---------------------+---------------------------+ 2175 | NOTIFICATION_ID | [32, unsiged | | 2176 | | integer] | | 2177 | | | | 2178 | TIMESTAMP | [32, unsigned | | 2179 | | integer] | | 2180 | | | | 2181 | CAUSE | [32, unsigned | | 2182 | | integer] | | 2183 | | | | 2184 | NOTIFY | MONITOR | NOTIFICATION_DATA is the | 2185 | | [NOTIFICATION_DATA] | value of the monitored | 2186 | | | target if this is not ean | 2187 | | | error. | 2188 +-----------------+---------------------+---------------------------+ 2190 Table 14: Monitor Notifications 2192 7. Derived and Subtyped Attributes 2194 This section notes settings and derived attributes. 2196 +---------------------------+---------------------+-----------------+ 2197 | Field | Type | Detail | 2198 +---------------------------+---------------------+-----------------+ 2199 | TUN_LOCAL_ADDRESS | IP Address | [NOTE 1] | 2200 | | | | 2201 | TUN_REMOTE_ADDRESS | IP Address | [NOTE 1] | 2202 | | | | 2203 | TUN_MTU | [32, unsigned | | 2204 | | integer] | | 2205 | | | | 2206 | TUN_PAYLOAD_TYPE | [2, bits] | Enumeration: pa | 2207 | | | yload_ipv4(0), | 2208 | | | payload_ipv6(1) | 2209 | | | or payload_dual | 2210 | | | (2). | 2211 | | | | 2212 | TUN_TYPE | [8, unsigned | Enumeration: | 2213 | | integer] | IP-in-IP(0), | 2214 | | | UDP(1), GRE(2) | 2215 | | | and GTP(3). | 2216 | | | | 2217 | TUN_IF | [16, unsigned | Input interface | 2218 | | integer] | index. | 2219 | | | | 2220 | MOBILITY_SPECIFIC_TUN_PAR | [ IETF_PMIP_MOB_PRO | [NOTE 1] | 2221 | AMS | FILE | | | 2222 | | 3GPP_MOB_PROFILE ] | | 2223 | | | | 2224 | NEXTHOP | Varies | [NOTE 1] See | 2225 | | | Table 18. | 2226 | | | | 2227 | QOS_PROFILE_PARAMS | [ 3GPP_QOS | | [NOTE 1] | 2228 | | PMIP_QOS ] | | 2229 +---------------------------+---------------------+-----------------+ 2231 NOTE 1 - These parameters are extensible. The Types may be extended 2232 for Field value by future specifications or in the case of Vendor 2233 Specific Attributes by enterprises. 2235 Table 15: Context Tunnel And QoS Settings 2237 +-----------+------------------+--------------------+---------------+ 2238 | Field | Type Value | Type | Description | 2239 | (Type | | | | 2240 | Value) | | | | 2241 +-----------+------------------+--------------------+---------------+ 2242 | TO_PREFIX | [IP Address] [ | Aggregated or per- | FROM_PREFIX | 2243 | (0) | Prefix Len ] | host destination | (1) | 2244 | | | IP address/prefix | | 2245 | | | descriptor. | | 2246 | | | | | 2247 | [IP | Aggregated or | TRAFFIC_SELECTOR | Format per | 2248 | Address] | per-host source | (2) | specification | 2249 | [ Prefix | IP | | [RFC6088]. | 2250 | Len ] | address/prefix | | | 2251 | | descriptor. | | | 2252 | | | | | 2253 | Traffic | 2254 | Selector. | 2255 +-----------+------------------+--------------------+---------------+ 2257 Table 16: Descriptor Subtypes 2259 +--------------+-------------------------+--------------------------+ 2260 | Field (Type | Type | Description | 2261 | Value) | | | 2262 +--------------+-------------------------+--------------------------+ 2263 | DROP (0) | Empty | Drop the associated | 2264 | | | packets. | 2265 | | | | 2266 | REWRITE (1) | [in_src_ip] | Rewrite IP Address (NAT) | 2267 | | [out_src_ip] | or IP Address / Port | 2268 | | [in_dst_ip] | (NAPT). | 2269 | | [out_dst_ip] | | 2270 | | [in_src_port] | | 2271 | | [out_src_port] | | 2272 | | [in_dst_port] | | 2273 | | [out_dst_port] | | 2274 | | | | 2275 | COPY_FORWARD | FPC-Identity. See | Copy all packets and | 2276 | (2) | Section 4.8. | forward them to the | 2277 | | | provided identity. The | 2278 | | | value of the identity | 2279 | | | MUST be a port or | 2280 | | | context. | 2281 +--------------+-------------------------+--------------------------+ 2283 Table 17: Action Subtypes 2285 +--------------------------------+----------------+-----------------+ 2286 | Field (Type Value) | Type | Description | 2287 +--------------------------------+----------------+-----------------+ 2288 | IP_ADDR (0) | IP Address | An IP Address. | 2289 | | | | 2290 | MAC_ADDR (1) | MAC Address | A MAC Address. | 2291 | | | | 2292 | SERVICE_PATH_ID (2) | [24, unsigned | Service Path | 2293 | | integer] | Identifier | 2294 | | | (SPI) | 2295 | | | | 2296 | MPLS_LABEL (3) | [20, unsigned | MPLS Label | 2297 | | integer] | | 2298 | | | | 2299 | NSH (4) | [SERVICE_PATH_ | See [I-D.ietf-s | 2300 | | ID] [8, | fc-nsh] | 2301 | | unsigned | | 2302 | | integer] | | 2303 | | | | 2304 | INTERFACE_INDEX (5) | [16, unsigned | Interface Index | 2305 | | integer] | (an unsigned | 2306 | | | integer). | 2307 | | | | 2308 | SEGMENT_ID (6) | [128, unsigned | Segement | 2309 | | integer] | Identifier. | 2310 | | | | 2311 | MPLS_LABEL_STACK (7) | 7 | 1*[20 bit | 2312 | | | labels] | 2313 | | | | 2314 | MPLS SR Stack. See [I-D.ietf-s | SRV6_STACK (8) | 32+ Bytes | 2315 | pring-segment-routing-mpls]. | | | 2316 | | | | 2317 | See [I-D.ietf-6man-segment-rou | 2318 | ting-header]. | 2319 +--------------------------------+----------------+-----------------+ 2321 Table 18: Next Hop Subtypes 2323 +----------+-------+------------------+-----------------------------+ 2324 | Field | Type | Type | Description | 2325 | | Value | | | 2326 +----------+-------+------------------+-----------------------------+ 2327 | QOS | 0 | [qos index type] | Refers to a single index | 2328 | | | [index] [DSCP] | and DSCP to write to the | 2329 | | | | packet. | 2330 | | | | | 2331 | GBR | 1 | [32, unsigned | Guaranteed bit rate. | 2332 | | | integer] | | 2333 | | | | | 2334 | MBR | 2 | [32, unsigned | Maximum bit rate. | 2335 | | | integer] | | 2336 | | | | | 2337 | PMIP_QOS | 3 | Varies by Type | A non-traffic selector PMIP | 2338 | | | | QoS Attribute per [RFC7222] | 2339 +----------+-------+------------------+-----------------------------+ 2341 Table 19: QoS Subtypes 2343 +----------+---------+----------------+-----------------------------+ 2344 | Field | Type | Type | Description | 2345 | | Value | | | 2346 +----------+---------+----------------+-----------------------------+ 2347 | IPIP_TUN | 0 | | IP in IP Configuration | 2348 | | | | | 2349 | UDP_TUN | 1 | [src_port] | UDP Tunnel - source and/or | 2350 | | | [dst_port] | destination port | 2351 | | | | | 2352 | GRE_TUN | 2 | [32, GRE Key] | GRE Tunnel. | 2353 +----------+---------+----------------+-----------------------------+ 2355 Table 20: Tunnel Subtypes 2357 The following COMMAND_SET values are supported for IETF_PMIP. 2359 o assign-ip - Assign the IP Address for the mobile session. 2361 o assign-dpn - Assign the Dataplane Node. 2363 o session - Assign values for the Session Level. 2365 o uplink - Command applies to uplink. 2367 o downlink - Command applies to downlink. 2369 7.1. 3GPP Specific Extenstions 2371 3GPP support is optional and detailed in this section. The following 2372 acronyms are used: 2374 APN-AMBR: Access Point Name Aggregate Maximum Bit Rate 2376 ARP: Allocation of Retention Priority 2378 EBI: EPS Bearer Identity 2380 GBR: Guaranteed Bit Rate 2382 GTP: GPRS (General Packet Radio Service) Tunneling Protocol 2384 IMSI: International Mobile Subscriber Identity 2386 MBR: Maximum Bit Rate 2388 QCI: QoS Class Identifier 2390 TEID: Tunnel Endpoint Identifier. 2392 TFT: Traffic Flow Template (TFT) 2394 UE-AMBR: User Equipment Aggregate Maximum Bit Rate 2396 NOTE: GTP Sequence Number (SEQ_NUMBER) is used in failover and 2397 handover. 2399 +-------------+-------+-------------+-------------------------------+ 2400 | Field | Type | Namespace / | Type | 2401 | | Value | Entity | | 2402 | | | Extended | | 2403 +-------------+-------+-------------+-------------------------------+ 2404 | GTPV1 | 3 | Tunnel | LOCAL_TEID REMOTE_TEID | 2405 | | | Subtypes | SEQ_NUMBER | 2406 | | | namespace. | | 2407 | | | | | 2408 | GTPV2 | 4 | Tunnel | LOCAL_TEID REMOTE_TEID | 2409 | | | Subtypes | SEQ_NUMBER | 2410 | | | namespace. | | 2411 | | | | | 2412 | LOCAL_TEID | N/A | N/A | [32, unisgned integer] | 2413 | | | | | 2414 | REMOTE_TEID | N/A | N/A | [32, unisgned integer] | 2415 | | | | | 2416 | SEQ_NUMBER | N/A | N/A | [32, unisgned integer] | 2417 | | | | | 2418 | TFT | 3 | Descriptors | Format per TS 24.008 Section | 2419 | | | Subtypes | 10.5.6.12. | 2420 | | | namespace. | | 2421 | | | | | 2422 | IMSI | N/A | Context | [64, unsigned integer] | 2423 | | | (new | | 2424 | | | attribute) | | 2425 | | | | | 2426 | EBI | N/A | Context | [4, unsigned integer] | 2427 | | | (new | | 2428 | | | attribute) | | 2429 | | | | | 2430 | 3GPP_QOS | 4 | QoS | [8, qci] [32, gbr] [32, mbr] | 2431 | | | Subtypes | [32, apn_ambr] [32, ue_ambr] | 2432 | | | namespace. | ARP | 2433 | | | | | 2434 | ARP | N/A | N/A | See Allocation-Retention- | 2435 | | | | Priority from [RFC7222] | 2436 +-------------+-------+-------------+-------------------------------+ 2438 Table 21: 3GPP Attributes and Structures 2440 The following COMMAND_SET values are supported for 3GPP. 2442 o assign-ip - Assign the IP Address for the mobile session. 2444 o assign-dpn - Assign the Dataplane Node. 2446 o assign-fteid-ip - Assign the Fully Qualified TEID (F-TEID) LOCAL 2447 IP address. 2449 o assign-fteid-teid - Assign the Fully Qualified TEID (F-TEID) LOCAL 2450 TEID. 2452 o session - Assign values for the Session Level. When this involves 2453 'assign-fteid-ip' and 'assign-fteid-teid' this implies the values 2454 are part of the default bearer. 2456 o uplink - Command applies to uplink. 2458 o downlink - Command applies to downlink. 2460 8. Implementation Status 2462 Three FPC Agent implementations have been made to date. The first 2463 was based upon Version 03 of the draft and followed Model 1. The 2464 second follows Version 04 of the document. Both implementations were 2465 OpenDaylight plug-ins developed in Java by Sprint. Version 03 was 2466 known as fpcagent and version 04's implementation is simply referred 2467 to as 'fpc'. A third has been devloped on an ONOS Controller for use 2468 in MCORD projects. 2470 fpcagent's intent was to provide a proof of concept for FPC Version 2471 03 Model 1 in January 2016 and research various errors, corrections 2472 and optimizations that the Agent could make when supporting multiple 2473 DPNs. 2475 As the code developed to support OpenFlow and a proprietary DPN from 2476 a 3rd party, several of the advantages of a multi-DPN Agent became 2477 obvious including the use of machine learning to reduce the number of 2478 Flows and Policy entities placed on the DPN. This work has driven 2479 new efforts in the DIME WG, namely Diameter Policy Groups 2480 [I-D.bertz-dime-policygroups]. 2482 A throughput performance of tens per second using various NetConf 2483 based solutions in OpenDaylight made fpcagent undesirable for call 2484 processing. The RPC implementation improved throughput by an order 2485 of magnitude but was not useful based upon FPC's Version 03 design 2486 using two information models. During this time the features of 2487 version 04 and its converged model became attractive and the fpcagent 2488 project was closed in August 2016. fpcagent will no longer be 2489 developed and will remain a proprietary implementation. 2491 The learnings of fpcagent has influenced the second project, fpc. 2492 Fpc is also an OpenDaylight project but is an open source release as 2493 the Opendaylight FpcAgent plugin (https://wiki.opendaylight.org/view/ 2494 Project_Proposals:FpcAgent). This project is scoped to be a fully 2495 compliant FPC Agent that supports multiple DPNs including those that 2496 communicate via OpenFlow. The following features present in this 2497 draft and others developed by the FPC development team have already 2498 lead to an order of magnitude improvement. 2500 Migration of non-realtime provisioning of entities such as 2501 topology and policy allowed the implementation to focus only on 2502 the rpc. 2504 Using only 5 messages and 2 notifications has also reduced 2505 implementation time. 2507 Command Sets, an optional feature in this specification, have 2508 eliminated 80% of the time spent determining what needs to be 2509 done with a Context during a Create or Update operation. 2511 Op Reference is an optional feature modeled after video delivery. 2512 It has reduced unnecessary cache lookups. It also has the 2513 additional benefit of allowing an Agent to become cacheless and 2514 effectively act as a FPC protocol adapter remotely with multi-DPN 2515 support or colocated on the DPN in a single-DPN support model. 2517 Multi-tenant support allows for Cache searches to be partitioned 2518 for clustering and performance improvements. This has not been 2519 capitalized upon by the current implementation but is part of the 2520 development roadmap. 2522 Use of Contexts to pre-provision policy has also eliminated any 2523 processing of Ports for DPNs which permitted the code for 2524 CONFIGURE and CONF_BUNDLE to be implemented as a simple nested 2525 FOR loops (see below). 2527 Initial v04 performance results without code optimizations or tuning 2528 allow 2-5K FPC Contexts processed per second on a 2013 Mac laptop. 2529 This results in 2x the number of transactions on the southbound 2530 interface to a proprietary DPN API on the same machine. 2532 Current v04 performance results without code optimizations or tuning 2533 allow 1-2K FPC Contexts processed per second on a 2013 Mac laptop. 2534 This results in 2x the number of transactions on the southbound 2535 interface to a proprietary DPN API on the same machine. 2537 fpc currently supports the following: 2539 1 proprietary DPN API 2540 Policy and Topology as defined in this 2541 specification using OpenDaylight North Bound 2542 Interfaces such as NetConf and RestConf 2544 CONFIG and CONF_BUNDLE (all operations) 2546 DPN assignment, Tunnel allocations and IPv4 2547 address assignment by the Agent or Client. 2549 Immediate Response is always an 2550 OK_NOTIFY_FOLLOWS. 2552 assignment system (receives rpc call): 2553 perform basic operation integrity check 2554 if CONFIG then 2555 goto assignments 2556 if assignments was ok then 2557 send request to activation system 2558 respond back to client with assignment data 2559 else 2560 send back error 2561 end if 2562 else if CONF_BUNDLE then 2563 for each operation in bundles 2564 goto assignments 2565 if assignments was ok then 2566 hold onto data 2567 else 2568 return error with the assignments that occurred in 2569 prior operations (best effort) 2570 end if 2571 end for 2572 send bundles to activation systems 2573 end if 2575 assignments: 2576 assign DPN, IPv4 Address and/or tunnel info as required 2577 if an error occurs undo all assignments in this operation 2578 return result 2580 activation system: 2581 build cache according to op-ref and operation type 2582 for each operation 2583 for each Context 2584 for each DPN / direction in Context 2585 perform actions on DPN according to Command Set 2586 end for 2587 end for 2588 end for 2589 commit changes to in memory cache 2590 log transaction for tracking and notification 2591 (CONFIG_RESULT_NOTIFY) 2593 Figure 22: fpc pseudo code 2595 For further information please contact Lyle Bertz who is also a co- 2596 author of this document. 2598 NOTE: Tenant support requires binding a Client ID to a Tenant ID (it 2599 is a one to many relation) but that is outside of the scope of this 2600 specification. Otherwise, the specification is complete in terms of 2601 providing sufficient information to implement an Agent. 2603 9. Security Considerations 2605 Detailed protocol implementations for DMM Forwarding Policy 2606 Configuration must ensure integrity of the information exchanged 2607 between an FPC Client and an FPC Agent. Required Security 2608 Associations may be derived from co-located functions, which utilize 2609 the FPC Client and FPC Agent respectively. 2611 The YANG modules defined in this memo is designed to be accessed via 2612 the NETCONF [RFC6241] or RESTCONF [RFC8040] protocol. The lowest 2613 NETCONF layer is the secure transport layer and the mandatory-to- 2614 implement secure transport is SSH [RFC6242]. 2616 The information model defined in the memo is designed to be access by 2617 protocols specified in extensions to this document or, if using the 2618 YANG modules, as described above. 2620 There are a number of data nodes defined which are 2621 writable/creatable/deletable. These data nodes may be considered 2622 sensitive or vulnerable in some network environments. Write 2623 operations (e.g., a NETCONF edit-config) to these data nodes without 2624 proper protection can have a negative effect on network operations. 2625 These are the subtrees and data nodes and their sensitivity/ 2626 vulnerability: 2628 Nodes under the Policy tree provide generic policy enforcement and 2629 traffic classification. They can be used to block or permit 2630 traffic. If this portion of the model was to be compromised it 2631 may be used to block, identify or permit traffic that was not 2632 intended by the Tenant or FPC CLient. 2634 Nodes under the Topology tree provide defintion of the Tenant's 2635 forwarding topology. Any compromise of this information will 2636 provide topology information that could be used for subsequent 2637 attack vectors. Removal of topology can limit services. 2639 Nodes under the Mobility Tree are runtime only and manipulated by 2640 remote procedure calls. The unwanted deletion or removal of such 2641 information would deny users service or provide services to 2642 unauthorized parties. 2644 Some of the readable data nodes defined may be considered sensitive 2645 or vulnerable in some network environments. It is thus important to 2646 control read access (e.g., via get, get-config, or notification) to 2647 these data nodes. These are the subtrees and data nodes and their 2648 sensitivity/vulnerability: 2650 IP address assignments in the Context along with their associated 2651 tunnel configurations/identifiers (from the FPC base module) 2653 Internaional Mobile Subscriber Identity (IMSI) and bearer 2654 identifiers in the Context when using the optional 3GPP module 2656 Some of the RPC operations defined may be considered sensitive or 2657 vulnerable in some network environments. It is thus important to 2658 control access to these operations. These are the operations and 2659 their sensitivity/vulnerability: 2661 CONFIG and CONF_BUNDLE send Context information which can include 2662 information of a sensitive or vulnerable nature in some network 2663 environments as described above. 2665 Monitor related RPC operations do not specicially provide 2666 sensitive or vulnerable informaiton but care must be taken by 2667 users to avoid identifier values that expose sensitive or 2668 vulnerable information. 2670 Notications MUST be treated with same level of protection and 2671 scrutiny as the operations they correspond to. For example, a 2672 CONFIG_RESULT_NOTIFY notification provides the same information 2673 that is sent as part of the input and output of the CONFIG and 2674 CONF_BUNDLE RPC operations. 2676 General usage of FPC MUST consider the following: 2678 FPC Naming Section 4.8 permits arbirtrary string values but a 2679 users MUST avoid placing sensitive or vulnerable information in 2680 those values. 2682 Policies that are very narrow and permit the identification of 2683 specific traffic, e.g. that of a single user, SHOULD be avoided. 2685 10. IANA Considerations 2687 This document registers six URIs in the "IETF XML Registry" 2688 [RFC3688]. Following the format in RFC 3688, the following 2689 registrations have been made. 2691 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc 2692 Registrant Contact: The DMM WG of the IETF. 2693 XML: N/A, the requested URI is an XML namespace. 2695 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos 2696 Registrant Contact: The DMM WG of the IETF. 2697 XML: N/A, the requested URI is an XML namespace. 2699 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-traffic-selector-types 2700 Registrant Contact: The DMM WG of the IETF. 2701 XML: N/A, the requested URI is an XML namespace. 2703 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-settingsext 2704 Registrant Contact: The DMM WG of the IETF. 2705 XML: N/A, the requested URI is an XML namespace. 2707 This document registers the following YANG modules in the "YANG 2708 Module Names" registry [RFC6020]. 2710 name: ietf-dmm-fpc 2711 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc 2712 prefix: fpc 2713 reference: TBD1 2715 name: ietf-dmm-pmip-qos 2716 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos 2717 prefix: qos-pmip 2718 reference: TBD2 2720 name: ietf-dmm-traffic-selector-types 2721 namespace: urn:ietf:params:xml:ns:yang: 2722 ietf-dmm-traffic-selector-types 2723 prefix: traffic-selectors 2724 reference: TBD3 2726 name: ietf-dmm-fpc-settingsext 2727 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-settingsext 2728 prefix: fpcbase 2729 reference: TBD4 2731 11. Work Team Participants 2733 Participants in the FPSM work team discussion include Satoru 2734 Matsushima, Danny Moses, Sri Gundavelli, Marco Liebsch, Pierrick 2735 Seite, Alper Yegin, Carlos Bernardos, Charles Perkins and Fred 2736 Templin. 2738 12. References 2739 12.1. Normative References 2741 [I-D.ietf-6man-segment-routing-header] 2742 Previdi, S., Filsfils, C., Raza, K., Leddy, J., Field, B., 2743 daniel.voyer@bell.ca, d., daniel.bernier@bell.ca, d., 2744 Matsushima, S., Leung, I., Linkova, J., Aries, E., Kosugi, 2745 T., Vyncke, E., Lebrun, D., Steinberg, D., and R. Raszuk, 2746 "IPv6 Segment Routing Header (SRH)", draft-ietf-6man- 2747 segment-routing-header-07 (work in progress), July 2017. 2749 [I-D.ietf-sfc-nsh] 2750 Quinn, P., Elzur, U., and C. Pignataro, "Network Service 2751 Header (NSH)", draft-ietf-sfc-nsh-27 (work in progress), 2752 October 2017. 2754 [I-D.ietf-spring-segment-routing-mpls] 2755 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 2756 Litkowski, S., and R. Shakir, "Segment Routing with MPLS 2757 data plane", draft-ietf-spring-segment-routing-mpls-10 2758 (work in progress), June 2017. 2760 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2761 Requirement Levels", BCP 14, RFC 2119, 2762 DOI 10.17487/RFC2119, March 1997, 2763 . 2765 [RFC6088] Tsirtsis, G., Giarreta, G., Soliman, H., and N. Montavont, 2766 "Traffic Selectors for Flow Bindings", RFC 6088, 2767 DOI 10.17487/RFC6088, January 2011, 2768 . 2770 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2771 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2772 . 2774 [RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J. 2775 Korhonen, "Requirements for Distributed Mobility 2776 Management", RFC 7333, DOI 10.17487/RFC7333, August 2014, 2777 . 2779 12.2. Informative References 2781 [I-D.bertz-dime-policygroups] 2782 Bertz, L. and M. Bales, "Diameter Policy Groups and Sets", 2783 draft-bertz-dime-policygroups-04 (work in progress), June 2784 2017. 2786 [I-D.ietf-dmm-deployment-models] 2787 Gundavelli, S. and S. Jeon, "DMM Deployment Models and 2788 Architectural Considerations", draft-ietf-dmm-deployment- 2789 models-02 (work in progress), August 2017. 2791 [I-D.ietf-netconf-restconf] 2792 Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2793 Protocol", draft-ietf-netconf-restconf-18 (work in 2794 progress), October 2016. 2796 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2797 DOI 10.17487/RFC3688, January 2004, 2798 . 2800 [RFC5213] Gundavelli, S., Ed., Leung, K., Devarapalli, V., 2801 Chowdhury, K., and B. Patil, "Proxy Mobile IPv6", 2802 RFC 5213, DOI 10.17487/RFC5213, August 2008, 2803 . 2805 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2806 and A. Bierman, Ed., "Network Configuration Protocol 2807 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2808 . 2810 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2811 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2812 . 2814 [RFC7222] Liebsch, M., Seite, P., Yokota, H., Korhonen, J., and S. 2815 Gundavelli, "Quality-of-Service Option for Proxy Mobile 2816 IPv6", RFC 7222, DOI 10.17487/RFC7222, May 2014, 2817 . 2819 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2820 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2821 . 2823 Appendix A. YANG Data Model for the FPC protocol 2825 These modules define YANG definitions. When mapping from the FPC 2826 model was performed U-Key values, ACTION_TYPES and DESCRIPTOR_TYPES 2827 as well as many enumerations were mapped to identity types. 2828 ACTION_TYPES and DESCRIPTOR_TYPES are also optional as the type can 2829 be inferred from the value. Four modules are defined: 2831 o ietf-dmm-fpc (fpc) - Defines the base model and messages for FPC 2832 that are meant to be static in FPC. 2834 o ietf-dmm-fpc-settingsext An FPC module that defines the 2835 information model elements that are likely to be extended in FPC. 2837 o ietf-pmip-qos (pmip-qos) - Defines proxy mobile IPv6 QoS 2838 parameters per RFC 7222 2840 o ietf-trafficselectors-types (traffic-selectors) - Defines Traffic 2841 Selectors per RFC 6088 2843 A.1. FPC YANG Model 2845 This module defines the information model and protocol elements 2846 specified in this document. 2848 This module references [RFC6991], [RFC8040] and the fpc-settingsext 2849 module defined in this document. 2851 file "ietf-dmm-fpc@2017-09-27.yang" 2852 module ietf-dmm-fpc { 2853 yang-version 1.1; 2854 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc"; 2855 prefix fpc; 2857 import ietf-inet-types { prefix inet; 2858 revision-date 2013-07-15; } 2859 import ietf-restconf { prefix restconf; 2860 revision-date 2017-01-26; } 2861 import ietf-dmm-fpc-settingsext { prefix fpcbase; 2862 revision-date 2017-09-27; 2863 } 2865 organization "IETF Distributed Mobility Management (DMM) 2866 Working Group"; 2868 contact 2869 "WG Web: 2870 WG List: 2872 WG Chair: Dapeng Liu 2873 2875 WG Chair: Jouni Korhonen 2876 2878 Editor: Satoru Matsushima 2879 2881 Editor: Lyle Bertz 2882 "; 2884 description 2885 "This module contains YANG definition for 2886 Forwarding Policy Configuration Protocol (FPCP). 2888 Copyright (c) 2016 IETF Trust and the persons identified as the 2889 document authors. All rights reserved. 2891 This document is subject to BCP 78 and the IETF Trust's Legal 2892 Provisions Relating to IETF Documents 2893 (http://trustee.ietf.org/license-info) in effect on the date of 2894 publication of this document. Please review these documents 2895 carefully, as they describe your rights and restrictions with 2896 respect to this document. Code Components extracted from this 2897 document must include Simplified BSD License text as described 2898 in Section 4.e of the Trust Legal Provisions and are provided 2899 without warranty as described in the Simplified BSD License."; 2901 revision 2017-09-27 { 2902 description "Version 10 updates."; 2903 reference "draft-ietf-dmm-fpc-cpdp-10"; 2904 } 2905 revision 2017-07-22 { 2906 description "Version 08 updates."; 2907 reference "draft-ietf-dmm-fpc-cpdp-08"; 2908 } 2909 revision 2017-03-08 { 2910 description "Version 06 updates."; 2911 reference "draft-ietf-dmm-fpc-cpdp-06"; 2912 } 2913 revision 2016-08-03 { 2914 description "Initial Revision."; 2915 reference "draft-ietf-dmm-fpc-cpdp-05"; 2916 } 2917 feature fpc-basename-registry { 2918 description "Ability to track Base Names already provisioned 2919 on the Agent"; 2920 } 2921 feature fpc-bundles { 2922 description "Ability for Client to send multiple bundles of 2923 actions to an Agent"; 2924 } 2925 feature fpc-auto-binding { 2926 description "Allows a FPC Agent to advertise Topology Objects 2927 that could be DPNs"; 2928 } 2929 feature operation-ref-scope { 2930 description "Provides the scope of refeneces in an operation. 2931 Used to optmize the Agent processing."; 2932 } 2934 //General Structures 2935 typedef fpc-identity { 2936 type union { 2937 type uint32; 2938 type string; 2939 type instance-identifier; 2940 } 2941 description "FPC Identity"; 2942 } 2943 grouping target-value { 2944 leaf target { 2945 type fpc-identity; 2946 mandatory true; 2947 description "Target Identity"; 2948 } 2949 description "FPC Target Value"; 2950 } 2951 // Topology 2952 typedef fpc-interface-id { 2953 type fpc:fpc-identity; 2954 description "DPN interface Identifier"; 2955 } 2956 identity interface-protocols { 2957 description "Protocol supported by the interface"; 2958 } 2959 identity features { 2960 description "Protocol features"; 2961 } 2962 // Settings 2963 grouping settings { 2964 container settings-set { 2965 uses fpcbase:fpc-settings; 2966 description "Settings"; 2967 } 2968 description "Settings container"; 2969 } 2970 //Topology - Groupings 2971 grouping interface-settings { 2972 container interface-settings-set { 2973 description "Interface settings"; 2974 } 2975 description "Generic interface settings container"; 2976 } 2977 grouping access-technology-key { 2978 leaf access-technology { 2979 type identityref { 2980 base "fpcbase:access-technology"; 2981 } 2982 mandatory true; 2983 description "Access Technology"; 2984 } 2985 description "Access Technology key"; 2986 } 2987 grouping role-key { 2988 leaf role { 2989 type identityref { 2990 base "fpcbase:role"; 2991 } 2992 mandatory true; 2993 description "Access Technology Role"; 2994 } 2995 description "Access Technology Role key"; 2996 } 2997 grouping interface-id-key { 2998 leaf interface-id { 2999 type fpc:fpc-interface-id; 3000 mandatory true; 3001 description "interface identifier"; 3002 } 3003 description "Interface Identifier key"; 3004 } 3005 grouping dpn-identifier-key { 3006 leaf dpn-id { 3007 type fpc:fpc-identity; 3008 mandatory true; 3009 description "DPN Identifier Type"; 3010 } 3011 description "DPN Identifier key"; 3012 } 3013 grouping dpn-interface-reference { 3014 uses fpc:access-technology-key; 3015 uses fpc:role-key; 3016 uses fpc:interface-id-key; 3017 description "A reference to a DPN interface"; 3018 } 3019 // Topology Grouping 3020 grouping fpc-topology { 3021 list dpn-set { 3022 key dpn-id; 3023 uses fpc:dpn-identifier-key; 3024 leaf dpn-name { 3025 type string; 3026 description "DPN name"; 3027 } 3028 leaf dpn-resource-mapping-reference { 3029 type string; 3030 description "Reference to underlying DPN resource(s)"; 3031 } 3032 list interface-set { 3033 key "access-technology role interface-id"; 3034 uses fpc:dpn-interface-reference; 3035 uses fpc:interface-settings; 3036 description "DPN interfaces"; 3037 } 3038 description "Set of DPNs"; 3039 } 3040 list dpn-type-set { 3041 key "access-technology role"; 3042 uses fpc:access-technology-key; 3043 leaf access-technology-name { 3044 type string; 3045 description "Access Technology Name"; 3046 } 3047 uses fpc:role-key; 3048 leaf role-name { 3049 type string; 3050 description "Access Technology Role Name"; 3051 } 3052 list interface-set { 3053 key interface-id; 3054 uses fpc:interface-id-key; 3055 leaf interface-name { 3056 type string; 3057 description "DPN-Type Interface Name"; 3058 } 3059 leaf-list interface-protocol-set { 3060 type identityref { 3061 base "interface-protocols"; 3062 } 3063 description "Supported protocols"; 3064 } 3065 leaf-list feature-set { 3066 type identityref { 3067 base "interface-protocols"; 3068 } 3069 description "Supported features"; 3070 } 3071 uses fpc:interface-settings; 3072 description "A DPN interface types"; 3073 } 3074 description "Set of DPN types"; 3075 } 3076 list dpn-group-set { 3077 key "dpn-group-id"; 3078 leaf dpn-group-id { 3079 type fpc:fpc-identity; 3080 mandatory true; 3081 description "DPN Group Identifier"; 3082 } 3083 list referenced-dpns-set { 3084 key "access-technology role interface-id"; 3085 uses fpc:dpn-interface-reference; 3086 leaf-list supporting-dpn-id-set { 3087 type fpc:fpc-identity; 3088 description "DPNs that suppport this group"; 3089 } 3090 leaf-list dpn-group-peer-id-set { 3091 type fpc:fpc-identity; 3092 description "DPN Peer Groups reference"; 3093 } 3094 description "A list of DPNs supporting a group 3095 by DPN Type"; 3096 } 3097 list dpn-group-peer-set { 3098 key remote-dpn-group-id; 3099 leaf remote-dpn-group-id { 3100 type fpc:fpc-identity; 3101 mandatory true; 3102 description "Remote DPN Group identifier"; 3103 } 3104 uses fpc:interface-settings; 3105 description "Locally applied settings used for 3106 the referenced DPN-Group (peer group)."; 3107 } 3108 leaf domain-id { 3109 type fpc:fpc-identity; 3110 description "Domain Identiifer"; 3111 } 3112 description "List of DPN groups"; 3113 } 3114 list domain-set { 3115 key domain-id; 3116 leaf domain-id { 3117 type fpc:fpc-identity; 3118 mandatory true; 3119 description "Domain Identifier"; 3120 } 3121 leaf domain-name { 3122 type string; 3123 description "Domain displayname"; 3124 } 3125 leaf domain-reference { 3126 type string; 3127 description "Reference to domain resources"; 3128 } 3129 description "List of Domains"; 3130 } 3131 description "FPC Topology grouping"; 3132 } 3133 // Policy Structures 3134 // Descriptor Structure 3135 identity fpc-descriptor-type { 3136 description "A traffic descriptor"; 3137 } 3138 grouping descriptor-definition { 3139 leaf descriptor-id { 3140 type fpc:fpc-identity; 3141 mandatory true; 3142 description "Descriptor Id"; 3143 } 3144 leaf descriptor-type { 3145 type identityref { 3146 base "fpc-descriptor-type"; 3147 } 3148 description "Descriptor Type Value"; 3149 } 3150 uses fpcbase:fpc-descriptor-value; 3151 description "FPC Descriptor Definition"; 3152 } 3153 // Action Structure 3154 identity fpc-action-type { 3155 description "Action Type"; 3156 } 3157 grouping action-definition { 3158 leaf action-id { 3159 type fpc:fpc-identity; 3160 description "Action Identifier"; 3161 } 3162 leaf action-type { 3163 type identityref { 3164 base "fpc-action-type"; 3165 } 3166 description "Action Type"; 3167 } 3168 uses fpcbase:fpc-action-value; 3169 description "FPC Action Definition"; 3171 } 3172 // Rule Structure 3173 typedef fpc-direction-type { 3174 type enumeration { 3175 enum uplink { 3176 description "uplink"; 3177 } 3178 enum downlink { 3179 description "Downlink"; 3180 } 3181 enum both { 3182 description "Both"; 3183 } 3184 } 3185 description "FPC Direction"; 3186 } 3187 grouping fpc-rule-id { 3188 leaf rule-id { 3189 type fpc:fpc-identity; 3190 mandatory true; 3191 description "Rule Identifier"; 3192 } 3193 description "FPC Rule-Id key"; 3194 } 3195 grouping match-type { 3196 leaf descriptor-match-type { 3197 type enumeration { 3198 enum or { 3199 value 0; 3200 description "OR logic"; 3201 } 3202 enum and { 3203 value 1; 3204 description "AND logic"; 3205 } 3206 } 3207 mandatory true; 3208 description "Type of Match (OR or AND) applied to the 3209 descriptor-reference-set."; 3210 } 3211 description "Map Type Grouping"; 3212 } 3213 grouping fpc-action-order { 3214 leaf action-order { 3215 type uint32; 3216 mandatory true; 3217 description "Action Execution Order"; 3218 } 3219 description "Action Order Leaf"; 3220 } 3221 grouping rule-definition { 3222 uses fpc:fpc-rule-id; 3223 uses fpc:match-type; 3224 list descriptor-reference-set { 3225 key "descriptor-id-reference"; 3226 leaf descriptor-id-reference { 3227 type fpc:fpc-identity; 3228 mandatory true; 3229 description "Descriptor Id Reference"; 3230 } 3231 leaf direction { 3232 type fpc:fpc-direction-type; 3233 description "Direction"; 3234 } 3235 description "A set of Descriptor references"; 3236 } 3237 list action-reference-set { 3238 key "action-order"; 3239 uses fpc:fpc-action-order; 3240 leaf action-id-reference { 3241 type fpc:fpc-identity; 3242 mandatory true; 3243 description "Action Identifier Reference"; 3244 } 3245 description "A set of Action references"; 3246 } 3247 description 3248 "Rule.Definition"; 3249 } 3250 // Policy Structures 3251 grouping fpc-precedence { 3252 leaf precedence { 3253 type uint32; 3254 mandatory true; 3255 description "Rule Precedence"; 3256 } 3257 description "FPC Rule Precedence"; 3258 } 3259 grouping policy { 3260 leaf policy-id { 3261 type fpc:fpc-identity; 3262 description "Policy Identifier"; 3263 } 3264 list rule-set { 3265 key "precedence"; 3266 unique "rule-id-reference"; 3267 uses fpc:fpc-precedence; 3268 leaf rule-id-reference { 3269 type fpc:fpc-identity; 3270 mandatory true; 3271 description "Rule Identifier"; 3272 } 3273 description "Rule Entry"; 3274 } 3275 description "FPC Policy"; 3276 } 3277 // FPC Policy 3278 grouping fpc-policy { 3279 list action-definition-set { 3280 key action-id; 3281 uses fpc:action-definition; 3282 description "List of Actions"; 3283 } 3284 list descriptor-definition-set { 3285 key descriptor-id; 3286 uses fpc:descriptor-definition; 3287 description "List of Descriptors"; 3288 } 3289 list rule-definition-set { 3290 key rule-id; 3291 uses fpc:rule-definition; 3292 description "List of Rules"; 3293 } 3294 list policy-definition-set { 3295 key policy-id; 3296 uses fpc:policy; 3297 description "List of Policies"; 3298 } 3299 description "FPC Policy Structures"; 3300 } 3301 // Mobility Structures 3302 grouping configurable-policy-set { 3303 list installed-policy-list { 3304 key dpn-id-reference; 3305 leaf dpn-id-reference { 3306 type fpc:fpc-identity; 3307 description "Installed Policy identifier"; 3308 } 3309 list installed-policy-set { 3310 key installed-policy-id; 3311 leaf installed-policy-id { 3312 type fpc:fpc-identity; 3313 description "Installed Policy Identifier"; 3314 } 3315 leaf policy-id-reference { 3316 type fpc:fpc-identity; 3317 description "Installed Policy Identifier"; 3318 } 3319 container policy-settings { 3320 uses fpcbase:fpc-settings; 3321 description "Policy Settings"; 3322 } 3323 description "Policy installed upon a DPN"; 3324 } 3325 description "Configurable Policy"; 3326 uses fpc:settings; 3327 } 3328 description "List of installed DPN policies and settings"; 3329 } 3330 // Dynamic Policy 3331 grouping mobility-context { 3332 leaf mobility-context-id { 3333 type fpc:fpc-identity; 3334 mandatory true; 3335 description "Mobility Context Identifier"; 3336 } 3337 leaf dpn-group-id-reference { 3338 type fpc:fpc-identity; 3339 description "Group ID used when DPN selecitons were 3340 made"; 3341 } 3342 leaf parent-mobility-context-id-reference { 3343 type fpc:fpc-identity; 3344 description "Parent Mobility Context"; 3345 } 3346 list dpn-reference-list { 3347 key "dpn-id-reference direction"; 3348 leaf dpn-id-reference { 3349 type fpc:fpc-identity; 3350 mandatory true; 3351 description "DPN Id reference"; 3352 } 3353 leaf direction { 3354 type fpc:fpc-direction-type; 3355 mandatory true; 3356 description "Direction of DPN assignment"; 3357 } 3358 container dpn-settings-complementary { 3359 uses fpcbase:fpc-settings; 3360 description "Complentary Settings"; 3361 } 3362 leaf interface-id-reference { 3363 type fpc:fpc-interface-id; 3364 mandatory true; 3365 description "referenced interface"; 3366 } 3367 list embedded-rule-set { 3368 key "precedence"; 3369 unique "rule-id"; 3370 uses fpc:fpc-rule-id; 3371 uses fpc:match-type; 3372 uses fpc:fpc-precedence; 3373 list action-definition-set { 3374 key "action-order"; 3375 uses fpc:fpc-action-order; 3376 uses fpc:action-definition; 3377 description "List of Actions"; 3378 } 3379 list descriptor-definition-set { 3380 key descriptor-id; 3381 uses fpc:descriptor-definition; 3382 description "List of Descriptors"; 3383 } 3384 description "List of FPC Embedded Rule Definitions"; 3385 } 3386 leaf-list assigned-policy-reference-set { 3387 type fpc:fpc-identity; 3388 description "List of Policies request to be enforced for 3389 this Mobility Context"; 3390 } 3391 description "DPN List"; 3392 } 3394 leaf-list requested-policy-reference-set { 3395 type fpc:fpc-identity; 3396 description "List of Policies request to be enforced for 3397 this Mobility Context"; 3398 } 3399 container context-settings-complementary { 3400 uses fpcbase:fpc-settings; 3401 description "Context Settings"; 3402 } 3403 description "Mobility Context"; 3404 } 3405 // Events, Probes & Notifications 3406 identity event-type { 3407 description "Base Event Type"; 3408 } 3409 typedef event-type-id { 3410 type uint32; 3411 description "Event ID Type"; 3412 } 3413 grouping monitor-id { 3414 leaf monitor-id { 3415 type fpc:fpc-identity; 3416 mandatory true; 3417 description "Monitor Identifier"; 3418 } 3419 description "Monitor Id"; 3420 } 3421 grouping monitor-config { 3422 uses fpc:monitor-id; 3423 leaf deterrable { 3424 type boolean; 3425 description "Indicates reports related to this 3426 config can be delayed."; 3427 } 3428 container binding-information { 3429 description "Placeholder for information helpful 3430 to binding the monitor ot the correct target"; 3431 } 3432 uses fpc:target-value; 3433 choice configuration { 3434 mandatory true; 3435 case periodic-config { 3436 leaf period { 3437 type uint32; 3438 description "Period"; 3439 } 3440 description "Periodic Config Case"; 3441 } 3442 case threshold-config { 3443 leaf lo-thresh { 3444 type uint32; 3445 description "lo threshold"; 3446 } 3447 leaf hi-thresh { 3448 type uint32; 3449 description "hi threshold"; 3450 } 3451 description "Threshold Config Case"; 3452 } 3453 case scheduled-config { 3454 leaf report-time { 3455 type uint32; 3456 description "Reporting Time"; 3457 } 3458 description "Scheduled Config Case"; 3460 } 3461 case events-config-ident { 3462 leaf-list event-identities { 3463 type identityref { 3464 base "fpc:event-type"; 3465 } 3466 description "Event Identities"; 3467 } 3468 description "Events Config Identities Case"; 3469 } 3470 case events-config { 3471 leaf-list event-ids { 3472 type uint32; 3473 description "Event IDs"; 3474 } 3475 description "Events Config Case"; 3476 } 3477 description "Event Config Value"; 3478 } 3479 description "Monitor Configuration"; 3480 } 3481 grouping report { 3482 uses fpc:monitor-config; 3483 choice report-value { 3484 leaf trigger { 3485 type fpc:event-type-id; 3486 description "Trigger Identifier"; 3487 } 3488 case simple-empty { 3489 leaf nothing { 3490 type empty; 3491 description "Empty Value"; 3492 } 3493 description "Empty Case"; 3494 } 3495 case simple-val32 { 3496 leaf val32 { 3497 type uint32; 3498 description "Unsigned 32 bit value"; 3499 } 3500 description "Simple Value Case"; 3501 } 3502 case list-simple-val32 { 3503 leaf-list val32-list { 3504 type uint32; 3505 description "Unsigned 32 bit value"; 3506 } 3507 description "Simple Value Case"; 3509 } 3510 description "Report Value"; 3511 } 3512 description "Monitor Report"; 3513 } 3514 typedef agent-identifier { 3515 type fpc:fpc-identity; 3516 description "Agent Identifier"; 3517 } 3518 typedef client-identifier { 3519 type fpc:fpc-identity; 3520 description "Client Identifier"; 3521 } 3522 grouping basename-info { 3523 leaf basename { 3524 type fpc:fpc-identity; 3525 description "Rules Basename"; 3526 } 3527 leaf base-state { 3528 type string; 3529 description "Current State"; 3530 } 3531 leaf base-checkpoint { 3532 type string; 3533 description "Checkpoint"; 3534 } 3535 description "Basename Information"; 3536 } 3537 // Top Level Structures 3538 container tenants { 3539 list tenant { 3540 key "tenant-id"; 3541 leaf tenant-id { 3542 type fpc:fpc-identity; 3543 description "Tenant ID"; 3544 } 3545 container mobility { 3546 container topology { 3547 uses fpc:fpc-topology; 3548 uses fpc:basename-info { 3549 if-feature fpc:fpc-basename-registry; 3550 } 3551 description "Topology"; 3552 } 3553 container policy { 3554 uses fpc:fpc-policy; 3555 uses fpc:basename-info { 3556 if-feature fpc:fpc-basename-registry; 3558 } 3559 description "Policy"; 3560 } 3561 uses fpc:configurable-policy-set; 3562 list mobility-context-set { 3563 key "mobility-context-id"; 3564 config false; 3565 uses fpc:mobility-context; 3566 description "Mobility Context Set"; 3567 } 3568 list monitor-set { 3569 key monitor-id; 3570 uses fpc:monitor-config; 3571 description "Monitor Configurations"; 3572 } 3573 description "Mobility Elements"; 3574 } 3575 description "Tenant"; 3576 } 3577 description "Tenant List"; 3578 } 3579 // RPC 3580 // RPC Specific Structures 3581 typedef op-identifier { 3582 type uint64; 3583 description "Operation Identifier"; 3584 } 3585 typedef ref-scope { 3586 type enumeration { 3587 enum none { 3588 value 0; 3589 description "no references"; 3590 } 3591 enum op { 3592 value 1; 3593 description "All references are intra-operation"; 3594 } 3595 enum bundle { 3596 value 2; 3597 description "All references in exist in bundle"; 3598 } 3599 enum storage { 3600 value 3; 3601 description "One or more references exist in storage."; 3602 } 3603 enum unknown { 3604 value 4; 3605 description "The location of the references are unknown."; 3607 } 3608 } 3609 description "Search scope for references in the operation."; 3610 } 3611 grouping context-operation { 3612 uses fpc:mobility-context; 3613 uses fpcbase:instructions; 3614 description "Context Operation"; 3615 } 3616 grouping payload { 3617 uses fpc:configurable-policy-set; 3618 list mobility-context-set { 3619 key "mobility-context-id"; 3620 uses fpc:mobility-context; 3621 description "Mobility Context Set"; 3622 } 3623 uses fpc:fpc-policy; 3624 description "Payload"; 3625 } 3626 grouping op-header { 3627 leaf client-id { 3628 type fpc:client-identifier; 3629 mandatory true; 3630 description "Client ID"; 3631 } 3632 leaf delay { 3633 type uint32; 3634 description "Operation Delay (ms)"; 3635 } 3636 leaf op-id { 3637 type op-identifier; 3638 mandatory true; 3639 description "Operation Identifier"; 3640 } 3641 description "Common Operation header"; 3642 } 3643 grouping fpc-op-type { 3644 leaf op-type { 3645 type enumeration { 3646 enum create { 3647 value 0; 3648 description "create"; 3649 } 3650 enum update { 3651 value 1; 3652 description "update"; 3653 } 3654 enum query { 3655 value 2; 3656 description "query"; 3657 } 3658 enum delete { 3659 value 3; 3660 description "delete"; 3661 } 3662 } 3663 mandatory true; 3664 description "Type"; 3665 } 3666 description "FPC Operation Type"; 3667 } 3668 grouping fpc-op-ref-scope { 3669 leaf op-ref-scope { 3670 if-feature operation-ref-scope; 3671 type fpc:ref-scope; 3672 description "Reference Scope"; 3673 } 3674 description "FPC OP-REF Scope"; 3675 } 3676 grouping op-input { 3677 uses fpc:fpc-op-ref-scope; 3678 uses fpcbase:instructions; 3679 choice op_body { 3680 case create_or_update { 3681 uses fpc:payload; 3682 description "Create/Update input"; 3683 } 3684 case delete_or_query { 3685 uses fpc:target-value; 3686 description "Delete/Query input"; 3687 } 3688 description "Opeartion Input value"; 3689 } 3690 description "Operation Input"; 3691 } 3692 typedef result-status { 3693 type enumeration { 3694 enum ok { 3695 value 0; 3696 description "OK"; 3697 } 3698 enum err { 3699 value 1; 3700 description "Error"; 3701 } 3702 } 3703 description "Result Status"; 3704 } 3705 grouping status-value { 3706 leaf op-id { 3707 type op-identifier; 3708 mandatory true; 3709 description "Operation Identifier"; 3710 } 3711 leaf status { 3712 type result-status; 3713 mandatory true; 3714 description "Status"; 3715 } 3716 description "Status value for all messages"; 3717 } 3718 grouping result { 3719 uses fpc:status-value; 3720 uses fpc:result-body; 3721 description "General Result grouping"; 3722 } 3723 grouping result-body { 3724 leaf notify-follows { 3725 type boolean; 3726 description "Indicates that a notification will 3727 follow regarding this result"; 3728 } 3729 choice result-type { 3730 case err { 3731 uses restconf:errors; 3732 description "Error Information"; 3733 } 3734 case create-or-update-success { 3735 uses fpc:payload; 3736 description "Create/Update Success"; 3737 } 3738 case delete_or_query-success { 3739 uses fpc:target-value; 3740 description "Delete/Query Success"; 3741 } 3742 case empty-case { 3743 description "Empty Case"; 3744 } 3745 description "Result Value"; 3746 } 3747 description "Common Result member body"; 3748 } 3749 // Common RPCs 3750 rpc configure { 3751 description "CONF message"; 3752 input { 3753 uses fpc:op-header; 3754 uses fpc:fpc-op-type; 3755 uses fpc:op-input; 3756 } 3757 output { 3758 uses fpc:result; 3759 } 3760 } 3761 rpc configure-bundles { 3762 if-feature fpc:fpc-bundles; 3763 description "CONF_BUNDLES message"; 3764 input { 3765 uses fpc:op-header; 3766 uses fpc:fpc-op-type; 3767 uses fpc:fpc-op-ref-scope; 3768 list bundles { 3769 key op-id; 3770 leaf op-id { 3771 type op-identifier; 3772 mandatory true; 3773 description "Operation Identifier"; 3774 } 3775 uses fpc:op-input; 3776 description "List of operations"; 3777 } 3778 } 3779 output { 3780 uses fpc:status-value; 3781 list bundles { 3782 key op-id; 3783 uses fpc:result; 3784 description "Operation Identifier"; 3785 } 3786 } 3787 } 3788 rpc reg_monitor { 3789 description "Used to register monitoring of parameters/events"; 3790 input { 3791 uses fpc:op-header; 3792 uses fpc:monitor-config; 3793 } 3794 output { 3795 uses fpc:status-value; 3796 uses restconf:errors; 3797 } 3798 } 3799 rpc dereg_monitor { 3800 description "Used to de-register monitoring of 3801 parameters/events"; 3802 input { 3803 uses fpc:op-header; 3804 leaf-list monitor-set { 3805 type fpc:fpc-identity; 3806 min-elements 1; 3807 description "Monitor Identifier"; 3808 } 3809 leaf send_data { 3810 type boolean; 3811 description "Indicates if NOTIFY with final data 3812 is desired upon deregistration"; 3813 } 3814 } 3815 output { 3816 uses fpc:status-value; 3817 uses restconf:errors; 3818 } 3819 } 3820 rpc probe { 3821 description "Probe the status of a registered monitor"; 3822 input { 3823 uses fpc:op-header; 3824 uses fpc:monitor-id; 3825 } 3826 output { 3827 uses fpc:status-value; 3828 uses restconf:errors; 3829 } 3830 } 3831 // Notification Messages & Structures 3832 grouping notification-header { 3833 leaf notification-id { 3834 type uint32; 3835 description "Notification Identifier"; 3836 } 3837 leaf timestamp { 3838 type uint32; 3839 description "timestamp"; 3840 } 3841 description "Notification Header"; 3842 } 3843 notification config-result-notification { 3844 uses fpc:notification-header; 3845 uses fpc:status-value; 3846 choice value { 3847 case config-result { 3848 uses result-body; 3849 description "CONF Result"; 3850 } 3851 case config-bundle-result { 3852 list bundles { 3853 key op-id; 3854 uses fpc:result; 3855 description "Operation Identifier"; 3856 } 3857 description "CONF_BUNDLES Result"; 3858 } 3859 description "Config Result value"; 3860 } 3861 description "CONF/CONF_BUNDLES Async Result"; 3862 } 3863 identity notification-cause { 3864 description "Notification Cause"; 3865 } 3866 identity dpn-availabilty-change { 3867 base "notification-cause"; 3868 description "DPN Candidate/Exisitng DPN Availablity Change"; 3869 } 3870 identity monitoring-suspension { 3871 base "notification-cause"; 3872 description "Indicates monitoring suspension"; 3873 } 3874 identity monitoring-resumption { 3875 base "notification-cause"; 3876 description "Indicates that monitoring has resumed"; 3877 } 3878 identity monitor-notification { 3879 base "notification-cause"; 3880 description "Indicates 1+ monitor reports"; 3881 } 3882 notification notify { 3883 uses fpc:notification-header; 3884 leaf cause { 3885 type identityref { 3886 base "notification-cause"; 3887 } 3888 description "Notification Cause"; 3889 } 3890 choice value { 3891 case dpn-candidate-available { 3892 if-feature fpc:fpc-auto-binding; 3893 leaf node-id { 3894 type inet:uri; 3895 description "Topology URI"; 3896 } 3897 list supported-interface-list { 3898 key "access-technology role"; 3899 uses fpc:access-technology-key; 3900 uses fpc:role-key; 3901 description "Support Intefaces"; 3902 } 3903 description "DPN Candidate Information"; 3904 } 3905 case dpn-unavailable { 3906 leaf dpn-id { 3907 type fpc:fpc-identity; 3908 description "DPN Identifier"; 3909 } 3910 description "DPN Unavailable"; 3911 } 3912 case monitor-notification { 3913 list reports { 3914 uses fpc:report; 3915 description "Reports"; 3916 } 3917 description "Monitor Notification"; 3918 } 3919 description "Notify Value"; 3920 } 3921 description "Notify Message"; 3922 } 3923 } 3924 3926 A.2. YANG Models 3928 A.2.1. FPC YANG Settings and Extensions Model 3930 This module defines the base data elements in FPC that are likely to 3931 be extended. 3933 This module references [RFC6991], ietf-trafficselector-types and 3934 ietf-pmip-qos modules. 3936 file "ietf-dmm-fpc-settingsext@2017-09-27.yang" 3937 module ietf-dmm-fpc-settingsext { 3938 yang-version 1.1; 3939 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-settingsext"; 3940 prefix fpcbase; 3942 import ietf-inet-types { prefix inet; 3943 revision-date 2013-07-15; } 3944 import ietf-trafficselector-types { prefix traffic-selectors; 3945 revision-date 2017-10-29; } 3946 import ietf-yang-types { prefix ytypes; 3947 revision-date 2013-07-15; } 3948 import ietf-pmip-qos { prefix pmipqos; 3949 revision-date 2016-02-10; } 3951 organization "IETF Distributed Mobility Management (DMM) 3952 Working Group"; 3954 contact 3955 "WG Web: 3956 WG List: 3958 WG Chair: Dapeng Liu 3959 3961 WG Chair: Jouni Korhonen 3962 3964 Editor: Satoru Matsushima 3965 3967 Editor: Lyle Bertz 3968 "; 3970 description 3971 "This module contains YANG definition for 3972 Forwarding Policy Configuration Protocol(FPCP). 3974 It contains Settings defintions as well as Descriptor and 3975 Action extensions. 3977 Copyright (c) 2016 IETF Trust and the persons identified as the 3978 document authors. All rights reserved. 3980 This document is subject to BCP 78 and the IETF Trust's Legal 3981 Provisions Relating to IETF Documents 3982 (http://trustee.ietf.org/license-info) in effect on the date of 3983 publication of this document. Please review these documents 3984 carefully, as they describe your rights and restrictions with 3985 respect to this document. Code Components extracted from this 3986 document must include Simplified BSD License text as described 3987 in Section 4.e of the Trust Legal Provisions and are provided 3988 without warranty as described in the Simplified BSD License."; 3990 revision 2017-09-27 { 3991 description "Version 10 updates."; 3992 reference "draft-ietf-dmm-fpc-cpdp-10"; 3993 } 3994 revision 2017-07-22 { 3995 description "Version 08 updates."; 3996 reference "draft-ietf-dmm-fpc-cpdp-08"; 3997 } 3998 revision 2017-03-08 { 3999 description "Version 06 updates."; 4000 reference "draft-ietf-dmm-fpc-cpdp-06"; 4001 } 4002 revision 2016-08-03 { 4003 description "Initial Revision."; 4004 reference "draft-ietf-dmm-fpc-cpdp-05"; 4005 } 4007 // Next Hop Structures - SETTING 4008 typedef fpc-service-path-id { 4009 type uint32 { 4010 range "0..33554431"; 4011 } 4012 description "SERVICE_PATH_ID"; 4013 } 4014 typedef fpc-mpls-label { 4015 type uint32 { 4016 range "0..1048575"; 4017 } 4018 description "MPLS label"; 4019 } 4020 identity fpc-nexthop-type { 4021 description "NAT Service"; 4022 } 4024 grouping fpc-nexthop { 4025 leaf nexthop-type { 4026 type identityref { 4027 base "fpcbase:fpc-nexthop-type"; 4028 } 4029 mandatory true; 4030 description "Nexthop Type"; 4031 } 4032 choice nexthop-value { 4033 mandatory true; 4034 case ip-nexthop { 4035 leaf ip { 4036 type inet:ip-address; 4037 description "IP Value"; 4038 } 4039 description "IP Case"; 4040 } 4041 case macaddress-nexthop { 4042 leaf macaddress { 4043 type ytypes:mac-address; 4044 description "MAC Address Value"; 4045 } 4046 } 4047 case servicepath-nexthop { 4048 leaf servicepath { 4049 type fpcbase:fpc-service-path-id; 4050 description "Service Path Value"; 4051 } 4052 description "Service Path Case"; 4053 } 4054 case mplslabel-nexthop { 4055 leaf lsp { 4056 type fpcbase:fpc-mpls-label; 4057 description "MPLS Value"; 4058 } 4059 description "Service Path Case"; 4060 } 4061 case if-nexthop { 4062 leaf if-index { 4063 type uint16; 4064 description "If (interface) Value"; 4065 } 4066 description "Service Path Case"; 4067 } 4068 description "Value"; 4069 } 4070 description "Nexthop Value"; 4071 } 4073 // Address Translation - ACTION 4074 grouping simple-nat { 4075 leaf outbound-nat-address { 4076 type inet:ip-address; 4077 description "Outbound NAT Address"; 4078 } 4079 description "Simple NAT value"; 4080 } 4081 grouping simple-napt { 4082 leaf source-port { 4083 type inet:port-number; 4084 description "Source Port"; 4085 } 4086 leaf outbound-napt-address { 4087 type inet:ip-address; 4088 description "Outbound NAPT Address"; 4089 } 4090 leaf destination-port { 4091 type inet:port-number; 4092 description "Destination Port"; 4093 } 4094 description "Simple NAPT Configuration"; 4095 } 4097 // COPY FORWARD - ACTION 4098 grouping copy-forward { 4099 container destination { 4100 choice value { 4101 case nexthop-case { 4102 container nexthop { 4103 uses fpcbase:fpc-nexthop; 4104 description "Next Hop"; 4105 } 4106 description "Port Forward Case"; 4107 } 4108 description "Copy Forward Value"; 4109 } 4110 description "destination"; 4111 } 4112 description "Copy Then Forward to Port/Context Action"; 4113 } 4115 ////////////////////////////// 4116 // PMIP Integration // 4117 identity pmip-tunnel-type { 4118 description "PMIP Tunnel Type"; 4119 } 4120 identity grev1 { 4121 base "pmip-tunnel-type"; 4122 description "GRE v1"; 4123 } 4124 identity grev2 { 4125 base "pmip-tunnel-type"; 4126 description "GRE v2"; 4127 } 4128 identity ipinip { 4129 base "pmip-tunnel-type"; 4130 description "IP in IP"; 4131 } 4132 grouping pmip-tunnel-info { 4133 leaf pmip-tunnel-type { 4134 type identityref { 4135 base "pmip-tunnel-type"; 4136 } 4137 description "PMIP Mobility"; 4138 } 4139 choice pmip-tunnel-value { 4140 case gre { 4141 leaf gre-key { 4142 type uint32; 4143 description "GRE_KEY"; 4144 } 4145 description "GRE Value"; 4146 } 4147 description "PMIP Mobility value"; 4148 } 4149 uses traffic-selectors:traffic-selector; 4150 description "PMIP Tunnel Information"; 4151 } 4152 typedef pmip-commandset { 4153 type bits { 4154 bit assign-ip { 4155 position 0; 4156 description "Assign IP"; 4157 } 4158 bit assign-dpn { 4159 position 1; 4160 description "Assign DPN"; 4161 } 4162 bit session { 4163 position 2; 4164 description "Session Level"; 4165 } 4166 bit uplink { 4167 position 3; 4168 description "Uplink"; 4169 } 4170 bit downlink { 4171 position 4; 4172 description "Downlink"; 4173 } 4174 } 4175 description "PMIP Instructions"; 4176 } 4177 /////////////////////////////// 4178 // 3GPP Integration // 4179 // Tunnel Types 4180 identity threeGPP-tunnel-type { 4181 description "3GPP Base Tunnel Type"; 4182 } 4183 identity gtpv1 { 4184 base "fpcbase:threeGPP-tunnel-type"; 4185 description "GTP version 1 Tunnel"; 4186 } 4187 identity gtpv2 { 4188 base "fpcbase:threeGPP-tunnel-type"; 4189 description "GTP version 2 Tunnel"; 4190 } 4191 // QoS Profile 4192 typedef fpc-qos-class-identifier { 4193 type uint8 { 4194 range "1..9"; 4195 } 4196 description "QoS Class Identifier (QCI)"; 4197 } 4198 grouping threeGPP-QoS { 4199 description "3GPP QoS Attributes"; 4200 leaf qci { 4201 type fpc-qos-class-identifier; 4202 description "QCI"; 4203 } 4204 leaf gbr { 4205 type uint32; 4206 description "Guaranteed Bit Rate"; 4207 } 4208 leaf mbr { 4209 type uint32; 4210 description "Maximum Bit Rate"; 4211 } 4212 leaf apn-ambr { 4213 type uint32; 4214 description "Access Point Name Aggregate Max Bit Rate"; 4215 } 4216 leaf ue-ambr { 4217 type uint32; 4218 description "User Equipment Aggregate Max Bit Rate"; 4219 } 4220 container arp { 4221 uses pmipqos:Allocation-Retention-Priority-Value; 4222 description "Allocation Retention Priority"; 4223 } 4224 } 4225 typedef ebi-type { 4226 type uint8 { 4227 range "0..15"; 4228 } 4229 description "EUTRAN Bearere Identifier (EBI) Type"; 4230 } 4232 // From 3GPP TS 24.008 version 13.5.0 Release 13 4233 typedef component-type-enum { 4234 type enumeration { 4235 enum ipv4RemoteAddress { 4236 value 16; 4237 description "IPv4 Remote Address"; 4238 } 4239 enum ipv4LocalAddress { 4240 value 17; 4241 description "IPv4 Local Address"; 4242 } 4243 enum ipv6RemoteAddress { 4244 value 32; 4245 description "IPv6 Remote Address"; 4246 } 4247 enum ipv6RemoteAddressPrefix { 4248 value 33; 4249 description "IPv6 Remote Address Prefix"; 4250 } 4251 enum ipv6LocalAddressPrefix { 4252 value 35; 4253 description "IPv6 Local Address Prefix"; 4254 } 4255 enum protocolNextHeader { 4256 value 48; 4257 description "Protocol (IPv4) or NextHeader (IPv6) 4258 value"; 4259 } 4260 enum localPort { 4261 value 64; 4262 description "Local Port"; 4263 } 4264 enum localPortRange { 4265 value 65; 4266 description "Local Port Range"; 4267 } 4268 enum reomotePort { 4269 value 80; 4270 description "Remote Port"; 4271 } 4272 enum remotePortRange { 4273 value 81; 4274 description "Remote Port Range"; 4275 } 4276 enum secParamIndex { 4277 value 96; 4278 description "Security Parameter Index (SPI)"; 4279 } 4280 enum tosTraffClass { 4281 value 112; 4282 description "TOS Traffic Class"; 4283 } 4284 enum flowLabel { 4285 value 128; 4286 description "Flow Label"; 4287 } 4288 } 4289 description "TFT Component Type"; 4290 } 4291 typedef packet-filter-direction { 4292 type enumeration { 4293 enum preRel7Tft { 4294 value 0; 4295 description "Pre-Release 7 TFT"; 4296 } 4297 enum uplink { 4298 value 1; 4299 description "uplink"; 4300 } 4301 enum downlink { 4302 value 2; 4303 description "downlink"; 4304 } 4305 enum bidirectional { 4306 value 3; 4307 description "bi-direcitonal"; 4308 } 4309 } 4310 description "Packet Filter Direction"; 4311 } 4312 typedef component-type-id { 4313 type uint8 { 4314 range "16 | 17 | 32 | 33 | 35 | 48 | 64 | 65 |" 4315 + " 80 | 81 | 96 | 112 | 128"; 4316 } 4317 description "Specifies the Component Type"; 4318 } 4319 grouping packet-filter { 4320 leaf direction { 4321 type fpcbase:packet-filter-direction; 4322 description "Filter Direction"; 4323 } 4324 leaf identifier { 4325 type uint8 { 4326 range "1..15"; 4327 } 4328 description "Filter Identifier"; 4329 } 4330 leaf evaluation-precedence { 4331 type uint8; 4332 description "Evaluation Precedence"; 4333 } 4334 list contents { 4335 key component-type-identifier; 4336 description "Filter Contents"; 4337 leaf component-type-identifier { 4338 type fpcbase:component-type-id; 4339 description "Component Type"; 4340 } 4341 choice value { 4342 case ipv4-local { 4343 leaf ipv4-local { 4344 type inet:ipv4-address; 4345 description "IPv4 Local Address"; 4346 } 4347 } 4348 case ipv6-prefix-local { 4349 leaf ipv6-prefix-local { 4350 type inet:ipv6-prefix; 4351 description "IPv6 Local Prefix"; 4352 } 4353 } 4354 case ipv4-ipv6-remote { 4355 leaf ipv4-ipv6-remote { 4356 type inet:ip-address; 4357 description "Ipv4 Ipv6 remote address"; 4358 } 4359 } 4360 case ipv6-prefix-remote { 4361 leaf ipv6-prefix-remote { 4362 type inet:ipv6-prefix; 4363 description "IPv6 Remote Prefix"; 4364 } 4365 } 4366 case next-header { 4367 leaf next-header { 4368 type uint8; 4369 description "Next Header"; 4370 } 4371 } 4372 case local-port { 4373 leaf local-port { 4374 type inet:port-number; 4375 description "Local Port"; 4377 } 4378 } 4379 case local-port-range { 4380 leaf local-port-lo { 4381 type inet:port-number; 4382 description "Local Port Min Value"; 4383 } 4384 leaf local-port-hi { 4385 type inet:port-number; 4386 description "Local Port Max Value"; 4387 } 4388 } 4389 case remote-port { 4390 leaf remote-port { 4391 type inet:port-number; 4392 description "Remote Port"; 4393 } 4394 } 4395 case remote-port-range { 4396 leaf remote-port-lo { 4397 type inet:port-number; 4398 description "Remote Por Min Value"; 4399 } 4400 leaf remote-port-hi { 4401 type inet:port-number; 4402 description "Remote Port Max Value"; 4403 } 4404 } 4405 case ipsec-index { 4406 leaf ipsec-index { 4407 type traffic-selectors:ipsec-spi; 4408 description "IPSec Index"; 4409 } 4410 } 4411 case traffic-class { 4412 leaf traffic-class { 4413 type inet:dscp; 4414 description "Traffic Class"; 4415 } 4416 } 4417 case traffic-class-range { 4418 leaf traffic-class-lo { 4419 type inet:dscp; 4420 description "Traffic Class Min Value"; 4421 } 4422 leaf traffic-class-hi { 4423 type inet:dscp; 4424 description "Traffic Class Max Value"; 4426 } 4427 } 4428 case flow-label-type { 4429 leaf-list flow-label { 4430 type inet:ipv6-flow-label; 4431 description "Flow Label"; 4432 } 4433 } 4434 description "Component Value"; 4435 } 4436 } 4437 description "Packet Filter"; 4438 } 4439 grouping tft { 4440 list packet-filters { 4441 key identifier; 4442 uses fpcbase:packet-filter; 4443 description "List of Packet Filters"; 4444 } 4445 description "Packet Filter List"; 4446 } 4447 typedef imsi-type { 4448 type uint64; 4449 description 4450 "International Mobile Subscriber Identity (IMSI) 4451 Value Type"; 4452 } 4453 typedef threegpp-instr { 4454 type bits { 4455 bit assign-ip { 4456 position 0; 4457 description "Assign IP Address/Prefix"; 4458 } 4459 bit assign-fteid-ip { 4460 position 1; 4461 description "Assign FTEID-IP"; 4462 } 4463 bit assign-fteid-teid { 4464 position 2; 4465 description "Assign FTEID-TEID"; 4466 } 4467 bit session { 4468 position 3; 4469 description "Commands apply to the Session Level"; 4470 } 4471 bit uplink { 4472 position 4; 4473 description "Commands apply to the Uplink"; 4475 } 4476 bit downlink { 4477 position 5; 4478 description "Commands apply to the Downlink"; 4479 } 4480 bit assign-dpn { 4481 position 6; 4482 description "Assign DPN"; 4483 } 4484 } 4485 description "Instruction Set for 3GPP R11"; 4486 } 4488 grouping threegpp-tunnel-info { 4489 leaf tunnel-type { 4490 type identityref { 4491 base "fpcbase:threeGPP-tunnel-type"; 4492 } 4493 description "3GPP Tunnel Subtype"; 4494 } 4495 leaf tunnel-identifier { 4496 type uint32; 4497 description "Tunnel Endpoint IDentifier (TEID)"; 4498 } 4499 choice tft-or-ref { 4500 case defined-tft { 4501 uses fpcbase:tft; 4502 } 4503 description "TFT Value"; 4504 } 4505 description "3GPP TFT and Tunnel Information"; 4506 } 4508 grouping threegpp-properties { 4509 leaf imsi { 4510 type fpcbase:imsi-type; 4511 description "IMSI"; 4512 } 4513 leaf ebi { 4514 type fpcbase:ebi-type; 4515 description "EUTRAN Bearere Identifier (EBI)"; 4516 } 4517 leaf lbi { 4518 type fpcbase:ebi-type; 4519 description "Linked Bearer Identifier (LBI)"; 4520 } 4521 description "3GPP Mobility Session Properties"; 4522 } 4524 ////////////////////////////// 4525 // ACTION VALUE AUGMENTS 4526 grouping fpc-action-value { 4527 choice action-value { 4528 mandatory true; 4529 case drop { 4530 leaf drop { 4531 type empty; 4532 description "Drop Traffic"; 4533 } 4534 } 4535 case simple-nat { 4536 uses fpcbase:simple-nat; 4537 description "Simple NAT value"; 4538 } 4539 case simple-napt { 4540 uses fpcbase:simple-napt; 4541 description "Simple NAPT Value"; 4542 } 4543 case copy-forward { 4544 uses fpcbase:copy-forward; 4545 description "Copy Forward Value"; 4546 } 4547 case pmip-selector { 4548 uses traffic-selectors:traffic-selector; 4549 description "PMIP Selector"; 4550 } 4551 description "Action Value"; 4552 } 4553 description "FPC Action Value"; 4554 } 4556 ////////////////////////////// 4557 // DESCRIPTOR DEFINITIONS 4558 grouping fpc-descriptor-value { 4559 choice descriptor-value { 4560 mandatory true; 4561 case all-traffic { 4562 leaf all-traffic { 4563 type empty; 4564 description "admit any"; 4565 } 4566 } 4567 case no-traffic { 4568 leaf no-traffic { 4569 type empty; 4570 description "deny any"; 4571 } 4573 } 4574 case prefix-descriptor { 4575 leaf destination-ip { 4576 type inet:ip-prefix; 4577 description "Rule of destination IP"; 4578 } 4579 leaf source-ip { 4580 type inet:ip-prefix; 4581 description "Rule of source IP"; 4582 } 4583 description "Traffic descriptor based upon source/ 4584 destination as IP prefixes"; 4585 } 4586 case pmip-selector { 4587 uses traffic-selectors:traffic-selector; 4588 description "PMIP Selector"; 4589 } 4590 case threegpp-tft { 4591 uses fpcbase:tft; 4592 description "3GPP TFT"; 4593 } 4594 description "Descriptor Value"; 4595 } 4596 description "FPC Descriptor Values"; 4597 } 4599 //SETTINGS DEFINITIONS 4600 grouping fpc-settings { 4601 leaf-list delegated-ip-prefixes { 4602 type inet:ip-prefix; 4603 description "Delegated Prefix(es)"; 4604 } 4605 leaf tunnel-local-address { 4606 type inet:ip-address; 4607 description "local tunnel address"; 4608 } 4609 leaf tunnel-remote-address { 4610 type inet:ip-address; 4611 description "remote tunnel address"; 4612 } 4613 leaf mtu-size { 4614 type uint32; 4615 description "MTU size"; 4616 } 4617 container mobility-tunnel-parameters { 4618 choice profile-parameters { 4619 case nothing { 4620 leaf none { 4621 type empty; 4622 description "Empty Value"; 4623 } 4624 description "No Parameters Case"; 4625 } 4626 case pmip { 4627 uses pmip-tunnel-info; 4628 } 4629 case threegpp { 4630 uses threegpp-tunnel-info; 4631 uses threegpp-properties; 4632 } 4633 description "Mobility Profile Parameters"; 4634 } 4635 description 4636 "Profile specific tunnel parameters"; 4637 } 4638 container nexthop { 4639 uses fpcbase:fpc-nexthop; 4640 description "Next Hop"; 4641 } 4642 container qos-profile-parameters { 4643 choice value { 4644 description "QoS Value"; 4645 } 4646 description "QoS Parameters"; 4647 } 4648 description "A collection of settings"; 4649 } 4650 identity access-technology { 4651 description "The technology used in the access network"; 4652 } 4653 identity role { 4654 description "The access-technology function of the DPN"; 4655 } 4656 identity ietf-pmip-access-type { 4657 base "fpcbase:access-technology"; 4658 description "PMIP Access"; 4659 } 4660 identity threeGPP-access-type { 4661 base "fpcbase:access-technology"; 4662 description "3GPP Access Type"; 4663 } 4664 // Instructions 4665 grouping instructions { 4666 container instructions { 4667 choice instr-type { 4668 case threegpp-instr { 4669 leaf instr-3gpp-mob { 4670 type fpcbase:threegpp-instr; 4671 description "3GPP GTP Mobility Instructions"; 4672 } 4673 } 4674 case pmip-instr { 4675 leaf instr-pmip { 4676 type pmip-commandset; 4677 description "PMIP Instructions"; 4678 } 4679 } 4680 description "Instruction Value Choice"; 4681 } 4682 description "Instructions"; 4683 } 4684 description "Instructions Value"; 4685 } 4686 } 4687 4689 A.2.2. PMIP QoS Model 4691 This module defines the base protocol elements specified in this 4692 document. 4694 This module references [RFC6991]. 4696 file "ietf-pmip-qos@2017-10-29.yang" 4697 module ietf-pmip-qos { 4698 yang-version 1.1; 4700 namespace 4701 "urn:ietf:params:xml:ns:yang:ietf-pmip-qos"; 4703 prefix "qos-pmip"; 4705 import ietf-inet-types { 4706 prefix inet; 4707 revision-date 2013-07-15; 4708 } 4709 import ietf-trafficselector-types { prefix traffic-selectors; } 4711 organization "IETF Distributed Mobility Management (DMM) 4712 Working Group"; 4714 contact 4715 "WG Web: 4716 WG List: 4717 WG Chair: Dapeng Liu 4718 4720 WG Chair: Jouni Korhonen 4721 4723 Editor: Satoru Matsushima 4724 4726 Editor: Lyle Bertz 4727 "; 4729 description 4730 "This module contains a collection of YANG definitions for 4731 quality of service paramaters used in Proxy Mobile IPv6. 4733 Copyright (c) 2016 IETF Trust and the persons identified as the 4734 document authors. All rights reserved. 4736 This document is subject to BCP 78 and the IETF Trust's Legal 4737 Provisions Relating to IETF Documents 4738 (http://trustee.ietf.org/license-info) in effect on the date of 4739 publication of this document. Please review these documents 4740 carefully, as they describe your rights and restrictions with 4741 respect to this document. Code Components extracted from this 4742 document must include Simplified BSD License text as described 4743 in Section 4.e of the Trust Legal Provisions and are provided 4744 without warranty as described in the Simplified BSD License."; 4746 revision 2017-10-29 { 4747 description "Base Version"; 4748 reference 4749 "RFC 6088: Traffic Selectors for Flow Bindings"; 4750 } 4752 // Type Definitions 4754 // QoS Option Field Type Definitions 4755 typedef sr-id { 4756 type uint8; 4757 description 4758 "An 8-bit unsigned integer used for identifying the QoS 4759 Service Request."; 4760 } 4762 typedef traffic-class { 4763 type inet:dscp; 4764 description 4765 "Traffic Class consists of a 6-bit DSCP field followed by a 4766 2-bit reserved field."; 4767 reference 4768 "RFC 3289: Management Information Base for the 4769 Differentiated Services Architecture 4770 RFC 2474: Definition of the Differentiated Services Field 4771 (DS Field) in the IPv4 and IPv6 Headers 4772 RFC 2780: IANA Allocation Guidelines For Values In 4773 the Internet Protocol and Related Headers"; 4774 } 4776 typedef operational-code { 4777 type enumeration { 4778 enum RESPONSE { 4779 value 0; 4780 description "Response to a QoS request"; 4781 } 4782 enum ALLOCATE { 4783 value 1; 4784 description "Request to allocate QoS resources"; 4785 } 4786 enum DE-ALLOCATE { 4787 value 2; 4788 description "Request to de-Allocate QoS resources"; 4789 } 4790 enum MODIFY { 4791 value 3; 4792 description "Request to modify QoS parameters for a 4793 previously negotiated QoS Service Request"; 4794 } 4795 enum QUERY { 4796 value 4; 4797 description "Query to list the previously negotiated QoS 4798 Service Requests that are still active"; 4799 } 4800 enum NEGOTIATE { 4801 value 5; 4802 description "Response to a QoS Service Request with a 4803 counter QoS proposal"; 4804 } 4805 } 4806 description 4807 "The type of QoS request. Reserved values: (6) to (255) 4808 Currently not used. Receiver MUST ignore the option 4809 received with any value in this range."; 4810 } 4812 // QoS Attribute Types 4813 //The enumeration value for mapping - don't confuse with the 4814 // identities 4815 typedef qos-attrubite-type-enum { 4816 type enumeration { 4817 enum Reserved { 4818 value 0; 4819 description "This value is reserved and cannot be used"; 4820 } 4821 enum Per-MN-Agg-Max-DL-Bit-Rate { 4822 value 1; 4823 description "Per-Mobile-Node Aggregate Maximum Downlink 4824 Bit Rate."; 4825 } 4826 enum Per-MN-Agg-Max-UL-Bit-Rate { 4827 value 2; 4828 description "Per-Mobile-Node Aggregate Maximum Uplink Bit 4829 Rate."; 4830 } 4831 enum Per-Session-Agg-Max-DL-Bit-Rate { 4832 value 3; 4833 description "Per-Mobility-Session Aggregate Maximum 4834 Downlink Bit Rate."; 4835 } 4836 enum Per-Session-Agg-Max-UL-Bit-Rate { 4837 value 4; 4838 description "Per-Mobility-Session Aggregate Maximum 4839 Uplink Bit Rate."; 4840 } 4841 enum Allocation-Retention-Priority { 4842 value 5; 4843 description "Allocation and Retention Priority."; 4844 } 4845 enum Aggregate-Max-DL-Bit-Rate { 4846 value 6; 4847 description "Aggregate Maximum Downlink Bit Rate."; 4848 } 4849 enum Aggregate-Max-UL-Bit-Rate { 4850 value 7; 4851 description "Aggregate Maximum Uplink Bit Rate."; 4852 } 4853 enum Guaranteed-DL-Bit-Rate { 4854 value 8; 4855 description "Guaranteed Downlink Bit Rate."; 4856 } 4857 enum Guaranteed-UL-Bit-Rate { 4858 value 9; 4859 description "Guaranteed Uplink Bit Rate."; 4860 } 4861 enum QoS-Traffic-Selector { 4862 value 10; 4863 description "QoS Traffic Selector."; 4864 } 4865 enum QoS-Vendor-Specific-Attribute { 4866 value 11; 4867 description "QoS Vendor-Specific Attribute."; 4868 } 4869 } 4870 description 4871 "The type of the QoS attribute. This specification reserves 4872 the following reserved values. 4873 (12) to (254) - Reserved 4874 These values are reserved for future allocation. 4876 (255) Reserved 4877 This value is reserved and cannot be used."; 4878 } 4880 // Attribute Type as Identities 4881 // Added for convenience of inclusion and extension in 4882 // other YANG modules. 4883 identity qos-attribute-type { 4884 description 4885 "Base type for Quality of Service Attributes"; 4886 } 4888 identity Per-MN-Agg-Max-DL-Bit-Rate-type { 4889 base qos-attribute-type; 4890 description 4891 "Per-Mobile-Node Aggregate Maximum Downlink Bit Rate."; 4892 } 4894 identity Per-MN-Agg-Max-UL-Bit-Rate-type { 4895 base qos-attribute-type; 4896 description 4897 "Per-Mobile-Node Aggregate Maximum Uplink Bit Rate"; 4898 } 4900 identity Per-Session-Agg-Max-DL-Bit-Rate-type { 4901 base qos-attribute-type; 4902 description 4903 "Per-Mobility-Session Aggregate Maximum Downlink Bit Rate."; 4904 } 4906 identity Per-Session-Agg-Max-UL-Bit-Rate-type { 4907 base qos-attribute-type; 4908 description 4909 "Per-Mobility-Session Aggregate Maximum Uplink Bit Rate."; 4910 } 4912 identity Allocation-Retention-Priority-type { 4913 base qos-attribute-type; 4914 description 4915 "Allocation and Retention Priority."; 4916 } 4918 identity Aggregate-Max-DL-Bit-Rate-type { 4919 base qos-attribute-type; 4920 description "Aggregate Maximum Downlink Bit Rate."; 4921 } 4923 identity Aggregate-Max-UL-Bit-Rate-type { 4924 base qos-attribute-type; 4925 description "Aggregate Maximum Uplink Bit Rate."; 4926 } 4928 identity Guaranteed-DL-Bit-Rate-type { 4929 base qos-attribute-type; 4930 description "Guaranteed Downlink Bit Rate."; 4931 } 4933 identity Guaranteed-UL-Bit-Rate-type { 4934 base qos-attribute-type; 4935 description "Guaranteed Uplink Bit Rate."; 4936 } 4938 identity QoS-Traffic-Selector-type { 4939 base qos-attribute-type; 4940 description "QoS Traffic Selector."; 4941 } 4943 identity QoS-Vendor-Specific-Attribute-type { 4944 base qos-attribute-type; 4945 description "QoS Vendor-Specific Attribute."; 4946 } 4948 //value definitions 4949 typedef Per-MN-Agg-Max-DL-Bit-Rate-Value { 4950 type uint32; 4951 description 4952 "The aggregate maximum downlink bit rate that is 4953 requested/allocated for all the mobile node's IP flows. 4954 The measurement units are bits per second."; 4955 } 4956 typedef Per-MN-Agg-Max-UL-Bit-Rate-Value { 4957 type uint32; 4958 description 4959 "The aggregate maximum uplink bit rate that is 4960 requested/allocated for the mobile node's IP flows. The 4961 measurement units are bits per second."; 4962 } 4964 // Generic Structure for the uplink and downlink 4965 grouping Per-Session-Agg-Max-Bit-Rate-Value { 4966 leaf max-rate { 4967 type uint32; 4968 mandatory true; 4969 description 4970 "The aggregate maximum bit rate that is requested/allocated 4971 for all the IP flows associated with that mobility session. 4972 The measurement units are bits per second."; 4973 } 4974 leaf service-flag { 4975 type boolean; 4976 mandatory true; 4977 description 4978 "This flag is used for extending the scope of the 4979 target flows for Per-Session-Agg-Max-UL/DL-Bit-Rate 4980 from(UL)/to(DL) the mobile node's other mobility sessions 4981 sharing the same Service Identifier."; 4982 reference 4983 "RFC 5149 - Service Selection mobility option"; 4984 } 4985 leaf exclude-flag { 4986 type boolean; 4987 mandatory true; 4988 description 4989 "This flag is used to request that the uplink/downlink 4990 flows for which the network is providing 4991 Guaranteed-Bit-Rate service be excluded from the 4992 target IP flows for which 4993 Per-Session-Agg-Max-UL/DL-Bit-Rate is measured."; 4994 } 4995 description "Per-Session-Agg-Max-Bit-Rate Value"; 4996 } 4998 grouping Allocation-Retention-Priority-Value { 4999 leaf prioirty-level { 5000 type uint8 { 5001 range "0..15"; 5002 } 5003 mandatory true; 5004 description 5005 "This is a 4-bit unsigned integer value. It is used to 5006 decide whether a mobility session establishment or 5007 modification request can be accepted; this is typically used 5008 for admission control of Guaranteed Bit Rate traffic in 5009 case of resource limitations."; 5010 } 5011 leaf premption-capability { 5012 type enumeration { 5013 enum enabled { 5014 value 0; 5015 description "enabled"; 5016 } 5017 enum disabled { 5018 value 1; 5019 description "disabled"; 5020 } 5021 enum reserved1 { 5022 value 2; 5023 description "reserved1"; 5024 } 5025 enum reserved2 { 5026 value 3; 5027 description "reserved2"; 5028 } 5029 } 5030 mandatory true; 5031 description 5032 "This is a 2-bit unsigned integer value. It defines whether a 5033 service data flow can get resources that were already 5034 assigned to another service data flow with a lower priority 5035 level."; 5036 } 5037 leaf premption-vulnerability { 5038 type enumeration { 5039 enum enabled { 5040 value 0; 5041 description "enabled"; 5042 } 5043 enum disabled { 5044 value 1; 5045 description "disabled"; 5046 } 5047 enum reserved1 { 5048 value 2; 5049 description "reserved1"; 5050 } 5051 enum reserved2 { 5052 value 3; 5053 description "reserved2"; 5054 } 5055 } 5056 mandatory true; 5057 description 5058 "This is a 2-bit unsigned integer value. It defines whether a 5059 service data flow can lose the resources assigned to it in 5060 order to admit a service data flow with a higher priority 5061 level."; 5062 } 5063 description "Allocation-Retention-Priority Value"; 5064 } 5066 typedef Aggregate-Max-DL-Bit-Rate-Value { 5067 type uint32; 5068 description 5069 "The aggregate maximum downlink bit rate that is 5070 requested/allocated for downlink IP flows. The measurement 5071 units are bits per second."; 5072 } 5074 typedef Aggregate-Max-UL-Bit-Rate-Value { 5075 type uint32; 5076 description 5077 "The aggregate maximum downlink bit rate that is 5078 requested/allocated for downlink IP flows. The measurement 5079 units are bits per second."; 5080 } 5082 typedef Guaranteed-DL-Bit-Rate-Value { 5083 type uint32; 5084 description 5085 "The guaranteed bandwidth in bits per second for downlink 5086 IP flows. The measurement units are bits per second."; 5087 } 5089 typedef Guaranteed-UL-Bit-Rate-Value { 5090 type uint32; 5091 description 5092 "The guaranteed bandwidth in bits per second for uplink 5093 IP flows. The measurement units are bits per second."; 5094 } 5096 grouping QoS-Vendor-Specific-Attribute-Value-Base { 5097 leaf vendorid { 5098 type uint32; 5099 mandatory true; 5100 description 5101 "The Vendor ID is the SMI (Structure of Management 5102 Information) Network Management Private Enterprise Code of 5103 the IANA-maintained 'Private Enterprise Numbers' 5104 registry."; 5105 reference 5106 "'PRIVATE ENTERPRISE NUMBERS', SMI Network Management 5107 Private Enterprise Codes, April 2014, 5108 "; 5109 } 5110 leaf subtype { 5111 type uint8; 5112 mandatory true; 5113 description 5114 "An 8-bit field indicating the type of vendor-specific 5115 information carried in the option. The namespace for this 5116 sub-type is managed by the vendor identified by the 5117 Vendor ID field."; 5118 } 5119 description 5120 "QoS Vendor-Specific Attribute."; 5121 } 5123 //NOTE - We do NOT add the Status Codes or other changes in 5124 // PMIP in this module 5126 //Primary Structures (groupings) 5127 grouping qosattribute { 5128 leaf attributetype { 5129 type identityref { 5130 base qos-attribute-type; 5131 } 5132 mandatory true; 5133 description "the attribute type"; 5134 } 5136 //All of the sub-types by constraint 5137 choice attribute-choice { 5138 case per-mn-agg-max-dl-case { 5139 when "./attributetype = " 5140 + "'Per-MN-Agg-Max-DL-Bit-Rate-type'"; 5141 leaf per-mn-agg-max-dl { 5142 type qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value; 5143 description "Per-MN-Agg-Max-DL-Bit-Rate Value"; 5144 } 5145 description "Per-MN-Agg-Max-DL-Bit-Rate Case"; 5146 } 5147 case per-mn-agg-max-ul-case { 5148 when "./attributetype = " 5149 + "'Per-MN-Agg-Max-UL-Bit-Rate-type'"; 5150 leaf per-mn-agg-max-ul { 5151 type qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value; 5152 description "Per-MN-Agg-Max-UL-Bit-Rate Value"; 5153 } 5154 description "Per-MN-Agg-Max-UL-Bit-Rate Case"; 5155 } 5156 case per-session-agg-max-dl-case { 5157 when "./attributetype = " 5158 + "'Per-Session-Agg-Max-DL-Bit-Rate-type'"; 5159 container per-session-agg-max-dl { 5160 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 5161 description "Per-Session-Agg-Max-Bit-Rate Value"; 5162 } 5163 description "Per-Session-Agg-Max-Bit-Rate Case"; 5164 } 5165 case per-session-agg-max-ul-case { 5166 when "./attributetype = " 5167 + "'Per-Session-Agg-Max-UL-Bit-Rate-type'"; 5168 container per-session-agg-max-ul { 5169 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 5170 description "Per-Session-Agg-Max-Bit-Rate Value"; 5171 } 5172 description "Per-Session-Agg-Max-Bit-Rate Case"; 5173 } 5174 case allocation-retention-priority-case { 5175 when "./attributetype = " 5176 + "'Allocation-Retention-Priority-type'"; 5177 uses qos-pmip:Allocation-Retention-Priority-Value; 5178 description "Allocation-Retention-Priority Case"; 5179 } 5180 case agg-max-dl-case { 5181 when "./attributetype = " 5182 + "'Aggregate-Max-DL-Bit-Rate-type'"; 5183 leaf agg-max-dl { 5184 type qos-pmip:Aggregate-Max-DL-Bit-Rate-Value; 5185 description "Aggregate-Max-DL-Bit-Rate Value"; 5186 } 5187 description "Aggregate-Max-DL-Bit-Rate Case"; 5188 } 5189 case agg-max-ul-case { 5190 when "./attributetype = " 5191 + "'Aggregate-Max-UL-Bit-Rate-type'"; 5192 leaf agg-max-ul { 5193 type qos-pmip:Aggregate-Max-UL-Bit-Rate-Value; 5194 description "Aggregate-Max-UL-Bit-Rate Value"; 5195 } 5196 description "Aggregate-Max-UL-Bit-Rate Case"; 5197 } 5198 case gbr-dl-case { 5199 when "./attributetype = 5200 'Guaranteed-DL-Bit-Rate-type'"; 5201 leaf gbr-dl { 5202 type qos-pmip:Guaranteed-DL-Bit-Rate-Value; 5203 description "Guaranteed-DL-Bit-Rate Value"; 5204 } 5205 description "Guaranteed-DL-Bit-Rate Case"; 5206 } 5207 case gbr-ul-case { 5208 when "./attributetype = 5209 'Guaranteed-UL-Bit-Rate-type'"; 5210 leaf gbr-ul { 5211 type qos-pmip:Guaranteed-UL-Bit-Rate-Value; 5212 description "Guaranteed-UL-Bit-Rate Value"; 5213 } 5214 description "Guaranteed-UL-Bit-Rate Case"; 5215 } 5216 case traffic-selector-case { 5217 when "./attributetype = 'QoS-Traffic-Selector-type'"; 5218 container traffic-selector { 5219 uses traffic-selectors:traffic-selector; 5220 description "traffic selector"; 5221 } 5222 description "traffic selector Case"; 5223 } 5224 description "Attribute Value"; 5225 } 5226 description "PMIP QoS Attribute"; 5227 } 5229 grouping qosoption { 5230 leaf srid { 5231 type sr-id; 5232 mandatory true; 5233 description "Service Request Identifier"; 5234 } 5235 leaf trafficclass { 5236 type traffic-class; 5237 mandatory true; 5238 description "Traffic Class"; 5239 } 5240 leaf operationcode { 5241 type operational-code; 5242 mandatory true; 5243 description "Operation Code"; 5245 } 5246 list attributes { 5247 unique "attributetype"; 5248 uses qosattribute; 5249 min-elements 1; 5250 description "Attributes"; 5251 } 5252 description "PMIP QoS Option"; 5253 } 5254 } 5255 5257 A.2.3. Traffic Selectors YANG Model 5259 This module defines traffic selector types commonly used in Proxy 5260 Mobile IP (PMIP). 5262 This module references [RFC6991]. 5264 file "ietf-trafficselector-types@2017-10-29.yang" 5265 module ietf-trafficselector-types { 5266 yang-version 1.1; 5268 namespace 5269 "urn:ietf:params:xml:ns:yang:ietf-trafficselector-types"; 5271 prefix "traffic-selectors"; 5273 import ietf-inet-types { 5274 prefix inet; 5275 revision-date 2013-07-15; 5276 } 5278 organization "IETF Distributed Mobility Management (DMM) 5279 Working Group"; 5281 contact 5282 "WG Web: 5283 WG List: 5285 WG Chair: Dapeng Liu 5286 5288 WG Chair: Jouni Korhonen 5289 5291 Editor: Satoru Matsushima 5292 5293 Editor: Lyle Bertz 5294 "; 5296 description 5297 "This module contains a collection of YANG definitions for 5298 traffic selectors for flow bindings. 5300 Copyright (c) 2016 IETF Trust and the persons identified as the 5301 document authors. All rights reserved. 5303 This document is subject to BCP 78 and the IETF Trust's Legal 5304 Provisions Relating to IETF Documents 5305 (http://trustee.ietf.org/license-info) in effect on the date of 5306 publication of this document. Please review these documents 5307 carefully, as they describe your rights and restrictions with 5308 respect to this document. Code Components extracted from this 5309 document must include Simplified BSD License text as described 5310 in Section 4.e of the Trust Legal Provisions and are provided 5311 without warranty as described in the Simplified BSD License."; 5313 revision 2017-10-29 { 5314 description "Base Version"; 5315 reference 5316 "RFC 6088: Traffic Selectors for Flow Bindings"; 5317 } 5319 // Identities 5320 identity traffic-selector-format { 5321 description 5322 "The base type for Traffic-Selector Formats"; 5323 } 5325 identity ipv4-binary-selector-format { 5326 base traffic-selector-format; 5327 description 5328 "IPv4 Binary Traffic Selector Format"; 5329 } 5331 identity ipv6-binary-selector-format { 5332 base traffic-selector-format; 5333 description 5334 "IPv6 Binary Traffic Selector Format"; 5335 } 5337 // Type definitions and groupings 5338 typedef ipsec-spi { 5339 type uint32; 5340 description 5341 "The first 32-bit IPsec Security Parameter Index (SPI) 5342 value on data. This field is defined in [RFC4303]."; 5343 reference 5344 "RFC 4303: IP Encapsulating Security 5345 Payload (ESP)"; 5346 } 5348 grouping traffic-selector-base { 5349 description "A grouping of the commen leaves between the 5350 v4 and v6 Traffic Selectors"; 5351 container ipsec-spi-range { 5352 presence "Enables setting ipsec spi range"; 5353 description 5354 "Inclusive range representing IPSec Security Parameter 5355 Indices to be used. When only start-spi is present, it 5356 represents a single spi."; 5357 leaf start-spi { 5358 type ipsec-spi; 5359 mandatory true; 5360 description 5361 "The first 32-bit IPsec SPI value on data."; 5362 } 5363 leaf end-spi { 5364 type ipsec-spi; 5365 must ". >= ../start-spi" { 5366 error-message 5367 "The end-spi must be greater than or equal 5368 to start-spi"; 5369 } 5370 description 5371 "If more than one contiguous SPI value needs to be matched, 5372 then this field indicates the end value of a range."; 5373 } 5374 } 5375 container source-port-range { 5376 presence "Enables setting source port range"; 5377 description 5378 "Inclusive range representing source ports to be used. 5379 When only start-port is present, it represents a single 5380 port. These value(s) are from the range of port numbers 5381 defined by IANA (http://www.iana.org)."; 5382 leaf start-port { 5383 type inet:port-number; 5384 mandatory true; 5385 description 5386 "The first 16-bit source port number to be matched"; 5387 } 5388 leaf end-port { 5389 type inet:port-number; 5390 must ". >= ../start-port" { 5391 error-message 5392 "The end-port must be greater than or equal to start-port"; 5393 } 5394 description 5395 "The last 16-bit source port number to be matched"; 5396 } 5397 } 5398 container destination-port-range { 5399 presence "Enables setting destination port range"; 5400 description 5401 "Inclusive range representing destination ports to be used. 5402 When only start-port is present, it represents a single 5403 port."; 5404 leaf start-port { 5405 type inet:port-number; 5406 mandatory true; 5407 description 5408 "The first 16-bit destination port number to be matched"; 5409 } 5410 leaf end-port { 5411 type inet:port-number; 5412 must ". >= ../start-port" { 5413 error-message 5414 "The end-port must be greater than or equal to 5415 start-port"; 5416 } 5417 description 5418 "The last 16-bit destination port number to be matched"; 5419 } 5420 } 5421 } 5423 grouping ipv4-binary-traffic-selector { 5424 container source-address-range-v4 { 5425 presence "Enables setting source IPv4 address range"; 5426 description 5427 "Inclusive range representing IPv4 addresses to be used. When 5428 only start-address is present, it represents a single 5429 address."; 5430 leaf start-address { 5431 type inet:ipv4-address; 5432 mandatory true; 5433 description 5434 "The first source address to be matched"; 5435 } 5436 leaf end-address { 5437 type inet:ipv4-address; 5438 description 5439 "The last source address to be matched"; 5440 } 5441 } 5442 container destination-address-range-v4 { 5443 presence "Enables setting destination IPv4 address range"; 5444 description 5445 "Inclusive range representing IPv4 addresses to be used. 5446 When only start-address is present, it represents a 5447 single address."; 5448 leaf start-address { 5449 type inet:ipv4-address; 5450 mandatory true; 5451 description 5452 "The first destination address to be matched"; 5453 } 5454 leaf end-address { 5455 type inet:ipv4-address; 5456 description 5457 "The last destination address to be matched"; 5458 } 5459 } 5460 container ds-range { 5461 presence "Enables setting dscp range"; 5462 description 5463 "Inclusive range representing DiffServ Codepoints to be used. 5464 When only start-ds is present, it represents a single 5465 Codepoint."; 5466 leaf start-ds { 5467 type inet:dscp; 5468 mandatory true; 5469 description 5470 "The first differential service value to be matched"; 5471 } 5472 leaf end-ds { 5473 type inet:dscp; 5474 must ". >= ../start-ds" { 5475 error-message 5476 "The end-ds must be greater than or equal to start-ds"; 5477 } 5478 description 5479 "The last differential service value to be matched"; 5480 } 5481 } 5482 container protocol-range { 5483 presence "Enables setting protocol range"; 5484 description 5485 "Inclusive range representing IP protocol(s) to be used. When 5486 only start-protocol is present, it represents a single 5487 protocol."; 5488 leaf start-protocol { 5489 type uint8; 5490 mandatory true; 5491 description 5492 "The first 8-bit protocol value to be matched."; 5493 } 5494 leaf end-protocol { 5495 type uint8; 5496 must ". >= ../start-protocol" { 5497 error-message 5498 "The end-protocol must be greater than or equal to 5499 start-protocol"; 5500 } 5501 description 5502 "The last 8-bit protocol value to be matched."; 5503 } 5504 } 5505 description "ipv4 binary traffic selector"; 5506 } 5507 grouping ipv6-binary-traffic-selector { 5508 container source-address-range-v6 { 5509 presence "Enables setting source IPv6 address range"; 5510 description 5511 "Inclusive range representing IPv6 addresses to be used. 5512 When only start-address is present, it represents a 5513 single address."; 5514 leaf start-address { 5515 type inet:ipv6-address; 5516 mandatory true; 5517 description 5518 "The first source address, from the 5519 range of 128-bit IPv6 addresses to be matched"; 5520 } 5521 leaf end-address { 5522 type inet:ipv6-address; 5523 description 5524 "The last source address, from the 5525 range of 128-bit IPv6 addresses to be matched"; 5526 } 5527 } 5528 container destination-address-range-v6 { 5529 presence "Enables setting destination IPv6 address range"; 5530 description 5531 "Inclusive range representing IPv6 addresses to be used. 5533 When only start-address is present, it represents a 5534 single address."; 5535 leaf start-address { 5536 type inet:ipv6-address; 5537 mandatory true; 5538 description 5539 "The first destination address, from the 5540 range of 128-bit IPv6 addresses to be matched"; 5541 } 5542 leaf end-address { 5543 type inet:ipv6-address; 5544 description 5545 "The last destination address, from the 5546 range of 128-bit IPv6 addresses to be matched"; 5547 } 5548 } 5549 container flow-label-range { 5550 presence "Enables setting Flow Label range"; 5551 description 5552 "Inclusive range representing IPv4 addresses to be used. When 5553 only start-flow-label is present, it represents a single 5554 flow label."; 5555 leaf start-flow-label { 5556 type inet:ipv6-flow-label; 5557 description 5558 "The first flow label value to be matched"; 5559 } 5560 leaf end-flow-label { 5561 type inet:ipv6-flow-label; 5562 must ". >= ../start-flow-label" { 5563 error-message 5564 "The end-flow-lable must be greater than or equal to 5565 start-flow-label"; 5566 } 5567 description 5568 "The first flow label value to be matched"; 5569 } 5570 } 5571 container traffic-class-range { 5572 presence "Enables setting the traffic class range"; 5573 description 5574 "Inclusive range representing IPv4 addresses to be used. When 5575 only start-traffic-class is present, it represents a single 5576 traffic class."; 5577 leaf start-traffic-class { 5578 type inet:dscp; 5579 description 5580 "The first traffic class value to be matched"; 5582 reference 5583 "RFC 3260: New Terminology and Clarifications for Diffserv 5584 RFC 3168: The Addition of Explicit Congestion Notification 5585 (ECN) to IP"; 5586 } 5587 leaf end-traffic-class { 5588 type inet:dscp; 5589 must ". >= ../start-traffic-class" { 5590 error-message 5591 "The end-traffic-class must be greater than or equal to 5592 start-traffic-class"; 5593 } 5594 description 5595 "The last traffic class value to be matched"; 5596 } 5597 } 5598 container next-header-range { 5599 presence "Enables setting Next Header range"; 5600 description 5601 "Inclusive range representing Next Headers to be used. When 5602 only start-next-header is present, it represents a 5603 single Next Header."; 5604 leaf start-next-header { 5605 type uint8; 5606 description 5607 "The first 8-bit next header value to be matched."; 5608 } 5609 leaf end-next-header { 5610 type uint8; 5611 must ". >= ../start-next-header" { 5612 error-message 5613 "The end-next-header must be greater than or equal to 5614 start-next-header"; 5615 } 5616 description 5617 "The last 8-bit next header value to be matched."; 5618 } 5619 } 5620 description "ipv6 binary traffic selector"; 5621 } 5622 grouping traffic-selector { 5623 leaf ts-format { 5624 type identityref { 5625 base traffic-selector-format; 5626 } 5627 description "Traffic Selector Format"; 5628 } 5629 uses traffic-selector-base; 5630 uses ipv4-binary-traffic-selector; 5631 uses ipv6-binary-traffic-selector; 5632 description 5633 "The traffic selector includes the parameters used to match 5634 packets for a specific flow binding."; 5635 reference 5636 "RFC 6089: Flow Bindings in Mobile IPv6 and Network 5637 Mobility (NEMO) Basic Support"; 5638 } 5640 grouping ts-list { 5641 list selectors { 5642 key index; 5643 leaf index { 5644 type uint64; 5645 description "index"; 5646 } 5647 uses traffic-selector; 5648 description "traffic selectors"; 5649 } 5650 description "traffic selector list"; 5651 } 5652 } 5654 5656 A.3. FPC YANG Data Model Structure 5658 This section only shows the structure for FPC YANG model. NOTE, it 5659 does NOT show the settings, Action values or Descriptor Value. 5661 module: ietf-dmm-fpc 5662 +--rw mobility 5663 +--rw topology 5664 | +--rw dpn-set* [dpn-id] 5665 | | +--rw dpn-id fpc:fpc-identity 5666 | | +--rw dpn-name? string 5667 | | +--rw dpn-resource-mapping-reference? string 5668 | | +--rw interface-set* [access-technology role interface-id] 5669 | | +--rw access-technology identityref 5670 | | +--rw role identityref 5671 | | +--rw interface-id fpc:fpc-interface-id 5672 | | +--rw interface-settings-set 5673 | +--rw dpn-type-set* [access-technology role] 5674 | | +--rw access-technology identityref 5675 | | +--rw access-technology-name? string 5676 | | +--rw role identityref 5677 | | +--rw role-name? string 5678 | | +--rw interface-set* [interface-id] 5679 | | +--rw interface-id fpc:fpc-interface-id 5680 | | +--rw interface-name? string 5681 | | +--rw interface-protocol-set* identityref 5682 | | +--rw feature-set* identityref 5683 | | +--rw interface-settings-set 5684 | +--rw dpn-group-set* [dpn-group-id] 5685 | | +--rw dpn-group-id fpc:fpc-identity 5686 | | +--rw referenced-dpns-set* 5687 [access-technology role interface-id] 5688 | | | +--rw access-technology identityref 5689 | | | +--rw role identityref 5690 | | | +--rw interface-id fpc:fpc-interface-id 5691 | | | +--rw supporting-dpn-id-set* fpc:fpc-identity 5692 | | | +--rw dpn-group-peer-id-set* fpc:fpc-identity 5693 | | +--rw dpn-group-peer-set* [remote-dpn-group-id] 5694 | | | +--rw remote-dpn-group-id fpc:fpc-identity 5695 | | | +--rw interface-settings-set 5696 | | +--rw domain-id? fpc:fpc-identity 5697 | +--rw domain-set* [domain-id] 5698 | | +--rw domain-id fpc:fpc-identity 5699 | | +--rw domain-name? string 5700 | | +--rw domain-reference? string 5701 | +--rw basename? fpc:fpc-identity 5702 | +--rw base-state? string 5703 | +--rw base-checkpoint? string 5704 +--rw policy 5705 | +--rw action-definition-set* [action-id] 5706 | | +--rw action-id fpc:fpc-identity 5707 | | +--rw action-type? identityref 5708 | | +--rw (action-value)? 5709 | +--rw descriptor-definition-set* [descriptor-id] 5710 | | +--rw descriptor-id fpc:fpc-identity 5711 | | +--rw descriptor-type? identityref 5712 | | +--rw (descriptor-value)? 5713 | +--rw rule-definition-set* [rule-id] 5714 | | +--rw rule-id fpc:fpc-identity 5715 | | +--rw descriptor-match-type enumeration 5716 | | +--rw descriptor-reference-set* [descriptor-id-reference] 5717 | | | +--rw descriptor-id-reference fpc:fpc-identity 5718 | | | +--rw direction? fpc:fpc-direction-type 5719 | | +--rw action-reference-set* [action-order] 5720 | | +--rw action-order uint32 5721 | | +--rw action-id-reference fpc:fpc-identity 5722 | +--rw policy-definition-set* [policy-id] 5723 | | +--rw policy-id fpc:fpc-identity 5724 | | +--rw rule-set* [precedence] 5725 | | +--rw precedence uint32 5726 | | +--rw rule-id-reference fpc:fpc-identity 5727 | +--rw basename? fpc:fpc-identity 5728 | +--rw base-state? string 5729 | +--rw base-checkpoint? string 5730 +--rw installed-policy-list* [dpn-id-reference] 5731 | +--rw dpn-id-reference fpc:fpc-identity 5732 | +--rw installed-policy-set* [installed-policy-id] 5733 | | +--rw installed-policy-id fpc:fpc-identity 5734 | | +--rw policy-id-reference? fpc:fpc-identity 5735 | | +--rw policy-settings 5736 | +--rw settings-set 5737 +--ro mobility-context-set* [mobility-context-id] 5738 | +--ro mobility-context-id fpc:fpc-identity 5739 | +--ro dpn-group-id-reference? fpc:fpc-identity 5740 | +--ro parent-mobility-context-id-reference? fpc:fpc-identity 5741 | +--ro dpn-reference-list* [dpn-id-reference direction] 5742 | | +--ro dpn-id-reference fpc:fpc-identity 5743 | | +--ro direction 5744 fpc:fpc-direction-type 5745 | | +--ro dpn-settings-complementary 5746 | | +--ro interface-id-reference fpc:fpc-interface-id 5747 | | +--ro embedded-rule-set* [precedence] 5748 | | | +--ro rule-id fpc:fpc-identity 5749 | | | +--ro descriptor-match-type enumeration 5750 | | | +--ro precedence uint32 5751 | | | +--ro action-definition-set* [action-order] 5752 | | | | +--ro action-order uint32 5753 | | | | +--ro action-id? fpc:fpc-identity 5754 | | | | +--ro action-type? identityref 5755 | | | | +--ro (action-value)? 5756 | | | +--ro descriptor-definition-set* [descriptor-id] 5757 | | | +--ro descriptor-id fpc:fpc-identity 5758 | | | +--ro descriptor-type? identityref 5759 | | | +--ro (descriptor-value)? 5760 | | +--ro assigned-policy-reference-set* fpc:fpc-identity 5761 | +--ro requested-policy-reference-set* fpc:fpc-identity 5762 | +--ro context-settings-complementary 5763 +--rw monitor-set* [monitor-id] 5764 +--rw monitor-id fpc:fpc-identity 5765 +--rw deterrable? boolean 5766 +--rw binding-information 5767 +--rw target fpc-identity 5768 +--rw (configuration) 5769 +--:(periodic-config) 5770 | +--rw period? uint32 5771 +--:(threshold-config) 5772 | +--rw lo-thresh? uint32 5773 | +--rw hi-thresh? uint32 5774 +--:(scheduled-config) 5775 | +--rw report-time? uint32 5776 +--:(events-config-ident) 5777 | +--rw event-identities* identityref 5778 +--:(events-config) 5779 +--rw event-ids* uint32 5781 Figure 23: YANG FPC Agent Tree 5783 Authors' Addresses 5785 Satoru Matsushima 5786 SoftBank 5787 1-9-1,Higashi-Shimbashi,Minato-Ku 5788 Tokyo 105-7322 5789 Japan 5791 Email: satoru.matsushima@g.softbank.co.jp 5793 Lyle Bertz 5794 6220 Sprint Parkway 5795 Overland Park KS, 66251 5796 USA 5798 Email: lylebe551144@gmail.com 5800 Marco Liebsch 5801 NEC Laboratories Europe 5802 NEC Europe Ltd. 5803 Kurfuersten-Anlage 36 5804 D-69115 Heidelberg 5805 Germany 5807 Phone: +49 6221 4342146 5808 Email: liebsch@neclab.eu 5810 Sri Gundavelli 5811 Cisco 5812 170 West Tasman Drive 5813 San Jose, CA 95134 5814 USA 5816 Email: sgundave@cisco.com 5817 Danny Moses 5819 Email: danny.moses@intel.com 5821 Charles E. Perkins 5822 Futurewei Inc. 5823 2330 Central Expressway 5824 Santa Clara, CA 95050 5825 USA 5827 Phone: +1-408-330-4586 5828 Email: charliep@computer.org