idnits 2.17.1 draft-ietf-dmm-fpc-cpdp-10.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 non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 5818 has weird spacing: '...w index uin...' == Line 5825 has weird spacing: '...w index uin...' == Line 5844 has weird spacing: '...w index uin...' == Line 5868 has weird spacing: '...w index uin...' == Line 5889 has weird spacing: '...ate-key fpc...' == (18 more instances...) -- The document date (March 5, 2018) is 2236 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) == Outdated reference: A later version (-26) exists of draft-ietf-6man-segment-routing-header-08 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-mpls-12 == Outdated reference: A later version (-06) exists of draft-bertz-dime-policygroups-05 == Outdated reference: A later version (-04) exists of draft-ietf-dmm-deployment-models-03 Summary: 0 errors (**), 0 flaws (~~), 12 warnings (==), 1 comment (--). 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: September 6, 2018 Sprint 6 M. Liebsch 7 NEC 8 S. Gundavelli 9 Cisco 10 D. Moses 11 Intel Corporation 12 C. Perkins 13 Futurewei 14 March 5, 2018 16 Protocol for Forwarding Policy Configuration (FPC) in DMM 17 draft-ietf-dmm-fpc-cpdp-10 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 the data- 27 plane nodes. The data-plane abstractions presented in this document 28 are 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 September 6, 2018. 48 Copyright Notice 50 Copyright (c) 2018 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 . . . . . . . . . . . . 6 68 4. FPC Mobility Information Model . . . . . . . . . . . . . . . 9 69 4.1. Model Notation and Conventions . . . . . . . . . . . . . 9 70 4.2. Templates and Attributes . . . . . . . . . . . . . . . . 12 71 4.3. Attribute-Expressions . . . . . . . . . . . . . . . . . . 13 72 4.4. Attribute Value Types . . . . . . . . . . . . . . . . . . 14 73 4.5. Namespace and Format . . . . . . . . . . . . . . . . . . 14 74 4.6. Configuring Attribute Values . . . . . . . . . . . . . . 14 75 4.7. Entity Configuration Blocks . . . . . . . . . . . . . . . 15 76 4.8. Infomation Model Checkpoint . . . . . . . . . . . . . . . 16 77 4.9. Information Model Components . . . . . . . . . . . . . . 17 78 4.9.1. Service-Group . . . . . . . . . . . . . . . . . . . . 17 79 4.9.2. Service Endpoints . . . . . . . . . . . . . . . . . . 17 80 4.9.3. Topology Information Model . . . . . . . . . . . . . 19 81 4.9.4. Domain Information Model . . . . . . . . . . . . . . 19 82 4.9.5. DPN Information Model . . . . . . . . . . . . . . . . 19 83 4.9.6. Policy Information Model . . . . . . . . . . . . . . 21 84 4.9.7. Mobility-Context Information Model . . . . . . . . . 24 85 4.9.8. Monitor Information Model . . . . . . . . . . . . . . 26 86 5. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 27 87 5.1. Protocol Messages and Semantics . . . . . . . . . . . . . 27 88 5.1.1. Configure Message . . . . . . . . . . . . . . . . . . 30 89 5.1.2. Monitor Messages . . . . . . . . . . . . . . . . . . 36 90 5.2. Protocol Operation . . . . . . . . . . . . . . . . . . . 38 91 5.2.1. Simple RPC Operation . . . . . . . . . . . . . . . . 38 92 5.2.2. Policy And Mobility on the Agent . . . . . . . . . . 46 93 6. Templates And Command Sets . . . . . . . . . . . . . . . . . 48 94 6.1. Monitor Configuration Templates . . . . . . . . . . . . . 49 95 6.2. Descriptor Templates . . . . . . . . . . . . . . . . . . 49 96 6.3. Tunnel Templates . . . . . . . . . . . . . . . . . . . . 52 97 6.4. Action Templates . . . . . . . . . . . . . . . . . . . . 53 98 6.5. Quality of Service Action Templates . . . . . . . . . . . 54 99 6.6. PMIP Command-Set . . . . . . . . . . . . . . . . . . . . 55 100 6.7. 3GPP Specific Templates and Command-Set . . . . . . . . . 55 101 7. Implementation Status . . . . . . . . . . . . . . . . . . . . 57 102 8. Security Considerations . . . . . . . . . . . . . . . . . . . 61 103 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 62 104 10. Work Team Participants . . . . . . . . . . . . . . . . . . . 64 105 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 64 106 11.1. Normative References . . . . . . . . . . . . . . . . . . 64 107 11.2. Informative References . . . . . . . . . . . . . . . . . 65 108 Appendix A. YANG Data Model for the FPC protocol . . . . . . . . 66 109 A.1. FPC YANG Model . . . . . . . . . . . . . . . . . . . . . 67 110 A.2. YANG Models . . . . . . . . . . . . . . . . . . . . . . . 89 111 A.2.1. FPC YANG Settings and Extensions Model . . . . . . . 89 112 A.2.2. PMIP QoS Model . . . . . . . . . . . . . . . . . . . 101 113 A.2.3. Traffic Selectors YANG Model . . . . . . . . . . . . 109 114 A.2.4. RFC 5777 Classifier YANG Model . . . . . . . . . . . 117 115 A.3. FPC YANG Data Model Structure . . . . . . . . . . . . . . 125 116 Appendix B. Changes since Version 09 . . . . . . . . . . . . . . 133 117 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 134 119 1. Introduction 121 This document describes Forwarding Policy Configuration (FPC), a 122 system for managing the separation of control-plane and data-plane. 123 FPC enables flexible mobility management using FPC client and FPC 124 agent functions. An FPC agent exports an abstract interface 125 representing the data-plane. To configure data-plane nodes and 126 functions, the FPC client uses the interface to the data-plane 127 offered by the FPC agent. 129 Control planes of mobility management systems, or related 130 applications which require data-plane control, can utilize the FPC 131 client at various levels of abstraction. FPC operations are capable 132 of directly configuring a single Data-Plane Node (DPN), as well as 133 multiple DPNs, as determined by the data-plane models exported by the 134 FPC agent. 136 A FPC agent represents the data-plane operation according to several 137 basic information models. An FPC agent also provides access to 138 Monitors, which produce reports when triggered by events regarding 139 Mobility Contexts, DPNs or the Agent. 141 To manage mobility sessions, the FPC client assembles applicable sets 142 of forwarding policies from the data model, and configures them on 143 the appropriate FPC Agent. The Agent then renders those policies 144 into specific configurations for each DPN at which mobile nodes are 145 attached. The specific protocols and configurations to configure a 146 DPN from a FPC Agent are outside the scope of this document. 148 A DPN is a logical entity that performs data-plane operations (packet 149 movement and management). It may represent a physical DPN unit, a 150 sub-function of a physical DPN or a collection of physical DPNs 151 (i.e., a "virtual DPN"). A DPN may be virtual -- it may export the 152 FPC DPN Agent interface, but be implemented as software that controls 153 other data-plane hardware or modules that may or may not be FPC- 154 compliant. In this document, DPNs are specified without regard for 155 whether the implementation is virtual or physical. DPNs are 156 connected to provide mobility management systems such as access 157 networks, anchors and domains. The FPC agent interface enables 158 establishment of a topology for the forwarding plane. 160 When a DPN is mapped to physical data-plane equipment, the FPC client 161 can have complete knowledge of the DPN architecture, and use that 162 information to perform DPN selection for specific sessions. On the 163 other hand, when a virtual DPN is mapped to a collection of physical 164 DPNs, the FPC client cannot select a specific physical DPN because it 165 is hidden by the abstraction; only the FPC Agent can address the 166 specific associated physical DPNs. Network architects have the 167 flexibility to determine which DPN-selection capabilities are 168 performed by the FPC Agent (distributed) and which by the FPC client 169 (centralized). In this way, overlay networks can be configured 170 without disclosing detailed knowledge of the underlying hardware to 171 the FPC client and applications. 173 The abstractions in this document are designed to support many 174 different mobility management systems and data-plane functions. The 175 architecture and protocol design of FPC is not tied to specific types 176 of access technologies and mobility protocols. 178 2. Terminology 180 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 181 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 182 document are to be interpreted as described in [RFC2119]. 184 Domain: One or more DPNs that form a logical 185 partition of network resources (e.g., a data- 186 plane network under common network 187 administration). An FPC client (e.g., a 188 mobility management system) may utilize a 189 single or multiple domains. 191 DPN: A data-plane node (DPN) is capable of 192 performing data-plane features. For example, 193 DPNs may be switches or routers, regardless 194 of whether they are realized as hardware or 195 purely in software. 197 DPN-Set: the set of DPNs in a network configuration 199 Service-Endpoint-Set: a set of Service-Endpoint entities 201 FPC Agent: An FPC Agent manages DPNs, thereby providing 202 abstracted data-plane networks to FPC 203 Clients. 205 FPC Client: An FPC Client is integrated with a mobility 206 management system or related application, 207 enabling control over forwarding policy, 208 mobility sessions and DPNs via an FPC Agent. 210 Service-Group-Set: a set of DPN interfaces that support a 211 specific data-plane purpose (inbound/ 212 outbound, roaming, subnetwork with common 213 specific configuration, etc.) 215 Mobility Context: A Mobility Context contains the data-plane 216 information necessary to efficiently send and 217 receive traffic from a mobile node. This 218 includes policies that are created or 219 modified during the network's operation - in 220 most cases, on a per-flow or per session 221 basis. A Mobility-Context represents the 222 mobility sessions (or flows) which are active 223 on a mobile node. This includes associated 224 runtime attributes, such as tunnel endpoints, 225 tunnel identifiers, delegated prefix(es), 226 routing information, etc. Mobility-Contexts 227 are associated to specific DPNs. Some pre- 228 defined Policies may apply during mobility 229 signaling requests. The Mobility Context 230 supplies information about the policy 231 settings specific to a mobile node and its 232 flows; this information is often quite 233 dynamic. 235 Mobility Session: Traffic to/from a mobile node that is 236 expected to survive reconnection events. 238 Monitor: A reporting mechanism for a list of events 239 that trigger notification messages from an 240 FPC Agent to an FPC Client. 242 Policy: A Policy determines the mechanisms for 243 managing specific traffic flows or packets. 244 Policies specify QoS, rewriting rules for 245 packet processing, etc. A Policy consists of 246 one or more rules. Each rule is composed of 247 a Descriptor and Actions. The Descriptor in 248 a rule identifies packets (e.g., traffic 249 flows), and the Actions apply treatments to 250 packets that match the Descriptor in the 251 rule. Policies can apply to Domains, DPNs, 252 Mobile Nodes, Service Groups, or particular 253 Flows on a Mobile Node. 255 Property: An attribute-value pair for an instance of an 256 FPC entity 258 Template: A recipe for instantiating FPC entities. 259 Template definitions are accessible (by name 260 or by a key) in an indexed set. A template 261 is used to create specific instances (e.g., 262 specific policies) by assigning appropriate 263 values into the template definition. 265 Tenant: An operational entity that manages mobility 266 management systems or applications which 267 require data-plane functions. 269 Topology: The DPNs and the links between them. For 270 example, access nodes may be assigned to a 271 Service Group which peers to a Service Group 272 of anchor nodes. 274 3. FPC Design Objectives and Deployment 276 Using FPC, mobility control-planes and applications can configure 277 DPNs to perform various mobility management roles as described in 278 [I-D.ietf-dmm-deployment-models]. This fulfills the requirements 279 described in [RFC7333]. 281 This document defines FPC Agent and FPC Client, as well as the 282 information models that they use. The attributes defining those 283 models serve as the protocol elements for the interface between the 284 FPC Agent and the FPC Client. 286 Mobility control-plane applications integrate features offered by the 287 FPC Client. The FPC Client connects to FPC Agent functions. The 288 Client and the Agent communicate based on information models 289 described in Section 4. The models allow the control-plane to 290 configure forwarding policies on the Agent for data-plane 291 communications with mobile nodes. 293 Once the Topology of DPN(s) and domains are defined on an Agent for a 294 data plane, the DPNs in the topology are available for further 295 configuration. The FPC Agent connects those DPNs to manage their 296 configurations. 298 An FPC Agent configures and manages its DPN(s) according to 299 forwarding policies requested by the FPC Client. Configuration 300 commands used by the FPC agent to configure its DPN node(s) may be 301 specific to the DPN implementation; consequently the method by which 302 the FPC Agent carries out the specific configuration for its DPN(s) 303 is out of scope for this document. Along with the data models, the 304 FPC Client (on behalf of control-plane and applications) requests 305 that the Agent configures Policies prior to the time when the DPNs 306 start forwarding data for their mobility sessions. 308 This architecture is illustrated in Figure 1. An FPC Agent may be 309 implemented in a network controller that handles multiple DPNs, or 310 (more simply) an FPC Agent may itself be integrated into a DPN. 312 This document does not specify a protocol for the FPC interface; it 313 is out of scope. However, an implementation must support the FPC 314 transactions described in Section 5. 316 +-------------------------+ 317 | Mobility Control-Plane | 318 | and | 319 | Applications | 320 |+-----------------------+| 321 || FPC Client || 322 |+----------^------------+| 323 +-----------|-------------+ 324 FPC interface protocol | 325 +---------------+-----------------+ 326 | | 327 Network | | 328 Controller | DPN | 329 +-----------|-------------+ +----------|---------+ 330 |+----------v------------+| |+---------v--------+| 331 || [Data-plane model] || ||[Data-plane model]|| 332 || FPC Agent || || FPC Agent || 333 |+-----------------------+| |+------------------+| 334 |+------------+----------+| | | 335 ||SB Protocol |FPC Client|| | DPN Configuration | 336 || Modules | Module || +--------------------+ 337 |+------^-----+----^-----+| 338 +-------|----------|------+ 339 | | 340 Other | | FPC interface 341 southband | | protocol 342 protocols | | 343 | +-----------------+ 344 | | 345 DPN | DPN | 346 +----------|---------+ +----------|---------+ 347 |+---------v--------+| |+---------v--------+| 348 || Configuration || ||[Data-plane model]|| 349 || Protocol module || || FPC Agent || 350 |+------------------+| |+------------------+| 351 | | | | 352 | DPN Configuration | | DPN Configuration | 353 +--------------------+ +--------------------+ 355 Figure 1: Reference Forwarding Policy Configuration (FPC) 356 Architecture 358 The FPC architecture supports multi-tenancy; an FPC enabled data- 359 plane supports tenants of multiple mobile operator networks and/or 360 applications. It means that the FPC Client of each tenant connects 361 to the FPC Agent and it MUST partition namespace and data for their 362 data-planes. DPNs on the data-plane may fulfill multiple data-plane 363 roles which are defined per session, domain and tenant. 365 FPC information models often configuration to fit the specific needs 366 for DPN management of a mobile node's traffic. The FPC interfaces in 367 Figure 1 are the only interfaces required to handle runtime data in a 368 Mobility Context. The Topology and some Policy FPC models may be 369 pre-configured; in that case real-time protocol exchanges are not 370 required for them. 372 4. FPC Mobility Information Model 374 The FPC information model includes the following components: 376 DPN Information Model, 377 Topology Information Model, 378 Policy Information Model, 379 Mobility-Context, and 380 Monitor, as illustrated in Figure 2. 382 : 383 | 384 +-[FPC Mobility Information Model] 385 | | 386 | +-[DPN Information Model] 387 | | 388 | +-[Topology Information Model] 389 | | 390 | +-[Policy Information Model] 391 | | 392 | +-[Mobility-Context] 393 | | 394 | +-[Monitor] 395 | 397 Figure 2: FPC Information Model structure 399 4.1. Model Notation and Conventions 401 The following conventions are used to describe the FPC information 402 models. 404 Information model entities (e.g. DPNs, Rules, etc.) are defined in a 405 hierarchical notation where all entities at the same hierarchical 406 level are located on the same left-justified vertical position 407 sequentially. When entities are composed of sub-entities, the sub- 408 entities appear shifted to the right, as shown in Figure 3. 410 | 411 +-[entity2] 412 | +-[entity2.1] 413 | +-[entity2.2] 415 Figure 3: Model Notation - An Example 417 Some entities have one or more qualifiers placed on the right hand 418 side of the element definition in angle-brackets. Common types 419 include: 421 List: a collection of entities (some could be duplicated) 423 Set: a nonempty collection of entities without duplications 425 Name: a human-readable string 427 Key: a unique value. We distinguish 3 types of keys: 429 U-Key: a key unique across all tenants. U-Key spaces typically 430 involve the use of registries or language specific mechanisms 431 that guarantee universal uniqueness of values. 433 G-Key: a key unique within a tenant 435 L-Key: a key unique within a local namespace. For example, there 436 may exist interfaces with the same name, e.g. "if0", in two 437 different DPNs but there can only be one "if0" within each DPN 438 (i.e. its local Interface-Key L-Key space). 440 Each entity or attribute may be optional (O) or mandatory (M). 441 Entities that are not marked as optional are mandatory. 443 The following example shows 3 entities: 444 -- Entity1 is a globally unique key, and optionally can have 445 an associated Name 446 -- Entity2 is a list 447 -- Entity3 is a set and is optional 448 + 449 | 450 +-[entity1] (M), (O) 451 +-[entity2] 452 +-[entity3] (O) 453 | 454 + 456 Figure 4 458 When expanding entity1 into a modeling language such as YANG it would 459 result in two values: entity1-GKey and entity1-Name. 461 To encourage re-use, FPC defines indexed sets of various entity 462 templates. Other model elements that need access to an indexed model 463 entity contain an attribute which is always denoted as "entity-Key". 464 When a Key attribute is encountered, the referencing model element 465 may supply attribute values for use when the referenced entity model 466 is instantiated. For example: Figure 5 shows 2 entities: 468 EntityA definition references an entityB model element. 470 EntityB model elements are indexed by entityB-Key. 472 Each EntityB model element has an entityB-Key which allows it to be 473 uniquely identified, and a list of Attributes (or, alternatively, a 474 Type) which specifies its form. This allows a referencing entity to 475 create an instance by supplying entityB-Values to be inserted, in a 476 Settings container. 478 . 479 . 480 | 481 +-[entityA] 482 | +-[entityB-Key] 483 | +-[entityB-Values] 484 . 485 . 486 | 487 +-[entityB] (M) 488 | +-[entityB-Type] 489 . 490 . 492 Figure 5: Indexed sets of entities 494 Indexed sets are specified for each of the following kinds of 495 entities: 497 Domain (See Section 4.9.4) 498 DPN (See Section 4.9.5) 499 Policy (See Section 4.9.6) 500 Descriptor (See Figure 13) 501 Action (See Figure 13) 502 Service Group (See Section 4.9.1, and 503 Mobility-Context (See Section 4.9.7) 505 As an example, for a Domain entity, there is a corresponding 506 attribute denoted as "Domain-Key" whose value can be used to 507 determine a reference to the Domain. 509 4.2. Templates and Attributes 511 In order to simplify development and maintenance of the needed 512 policies and other objects used by FPC, the Information Models which 513 are presented often have attributes that are not initialized with 514 their final values. When an FPC entity is instantiated according to 515 a template definition, specific values need to be configured for each 516 such attribute. For instance, suppose an entity Template has an 517 Attribute named "IPv4-Address", and also suppose that an FPC Client 518 instantiates the entity and requests that it be installed on a DPN. 519 An IPv4 address will be needed for the value of that Attribute before 520 the entity can be used. 522 +-[Template] (M) 523 | +-[Attributes] (M) 524 | +-[Extensible ~ FALSE] 525 | +-[Entity-State ~ Initial] 526 | +-[Version] 528 Figure 6: Template entities 530 Attributes: A set of Attribute names MAY be included when defining a 531 Template for instantiating FPC entities. Any instantiation from a 532 Template MUST have at least one Attribute in order to be a useful 533 entity. 535 Extensible: Determines whether or not entities instantiated from the 536 Template can be extended with new non-mandatory Attributes not 537 originally defined for the Template. Default value is FALSE. If 538 a Template does not explicitly specify this attribute, the default 539 value is considered to be in effect. 541 Entity-State: Either Initial, PartiallyConfigured, Configured, or 542 Active. Default value is Initial. See Section 4.6 for more 543 information about how the Entity-Status changes during the 544 configuration steps of the Entity. 546 Version: Provides a version tag for the template. 548 The Attributes in an Entity Template may be either mandatory or non- 549 mandatory. Attribute values may also be associated with the 550 attributes in the Entity Template. If supplied, the value may be 551 either assigned with a default value that can be reconfigured later, 552 or the value can be assigned with a static value that cannot be 553 reconfigured later (see Section 4.3). 555 It is possible for a Template to provide values for all of its 556 Attributes, so that no additional values are needed before the entity 557 can made Active. Any instantiation from a Template MUST have at 558 least one Attribute in order to be a useful entity. 560 4.3. Attribute-Expressions 562 The syntax of the Attribute definition is formatted to make it clear, 563 for every Attribute in the Entity Template, which of the six 564 possibilities is specified, as follows: 566 '[Att-Name: ]' Mandatory Attribute is defined, but template does not 567 provide any configured value. 569 '[Att-Name: Att-Value]' Mandatory Attribute is defined, and has a 570 statically configured value. 572 '[Att-Name: ~ Att-Value]' Mandatory Attribute is defined, and has a 573 default value. 575 '[Att-Name]' Non-mandatory Attribute may be included but template 576 does not provide any configured value. 578 '[Att-Name = Att-Value]' Non-mandatory Attribute may be included and 579 has a statically configured value. 581 '[Att-Name ~ Att-Value]' Non-mandatory Attribute may be included and 582 has a default value. 584 So, for example, a default value for a non-mandatory IPv4-Address 585 attribute would be denoted by [IPv4-Address ~ 127.0.0.1]. 587 After an FPC Client identifies which additional Attributes have been 588 configured to be included in an instantiated entity, those configured 589 Attributes MUST NOT be deleted by the FPC Agent. Similarly, any 590 statically configured value for an entity Attribute MUST NOT be 591 changed by the FPC Agent. 593 Whenever there is danger of confusion, the fully qualified Attribute 594 name MUST be used when supplying needed Attribute Values for a 595 structured Attribute. 597 4.4. Attribute Value Types 599 For situations in which the type of an attribute value is required, 600 the following syntax is recommended. To declare than an attribute 601 has data type "foo", typecast the attribute name by using the 602 parenthesized data type (foo). So, for instance, [(float) Max- 603 Latency-in-ms:] would indicate that the mandatory Attribute "Max- 604 Latency-in-ms" requires to be configured with a floating point value 605 before the instantiated entity could be used. Similarly, [(float) 606 Max-Latency-in-ms: 9.5] would statically configure a floating point 607 value of 9.5 to the mandatory Attribute "Max-Latency-in-ms". 609 4.5. Namespace and Format 611 The identifiers and names in FPC models which reside in the same 612 namespace must be unique. That uniqueness must be maintained by all 613 Clients, Agents and DPNs that support the tenant. The tenant 614 namespace uniqueness MUST be applied to all elements of the tenant 615 model, i.e. Topology, Policy and Mobility models. 617 When a Policy needs to be applied to Contexts in all tenants on an 618 Agent, the Agent SHOULD define that policy to be visible from all the 619 tenants. In this case, the Agent assigns an unique identifier in the 620 agent namespace and effectively creates a U-Key although only a G-Key 621 is required. 623 The notation for identifiers can utilize any format with agreement 624 between data-plane agent and client operators. The formats include 625 but are not limited to Globally Unique IDentifiers (GUIDs), 626 Universally Unique IDentifiers (UUIDs), Fully Qualified Domain Names 627 (FQDNs), Fully Qualified Path Names (FQPNs) and Uniform Resource 628 Identifiers (URIs). The FPC model does not limit the format, which 629 could dictate the choice of FPC protocol. Nevertheless, the 630 identifiers which are used in a Mobility model should be considered 631 to efficiently handle runtime parameters. 633 There are identifiers reserved for Protocol Operation. See 634 Section 5.1.1.5 for details. 636 4.6. Configuring Attribute Values 638 Attributes of Information Model components such as policy templates 639 are configured with values as part of FPC configuration operations. 640 There may be several such configuration operations before the 641 template instantiation is fully configured. 643 When the FPC Client instantiates a Policy from a Template, the 644 Policy-Status is "Initial". When the FPC Client sends the policy to 645 an FPC Agent for installation on a DPN, the Client often will 646 configure appropriate attribute values for the installation, and 647 accordingly changes the Policy-Status to "PartiallyConfigured" or 648 "Configured". The FPC Agent will also configure Domain-specific 649 policies and DPN-specific policies (if any) on the DPN. When 650 configured to provide particular services for mobile nodes, the FPC 651 Agent will apply whatever service-specific policies are needed on the 652 DPN. When a mobile node attaches to the network data-plane within 653 the topology under the jurisdiction of an FPC Agent, the Agent may 654 apply policies and settings as appropriate for that mobile node. 655 Finally, when the mobile node launches new flows, or quenches 656 existing flows, the DPN Agent, on behalf of the FPC Client, applies 657 or deactivates whatever policies and attribute values are appropriate 658 for managing the flows of the mobile node. When a "Configured" 659 policy is de-activated, Policy-Status is changed to be "Active". 660 When an "Active" policy is activated, Policy-Status is changed to be 661 "Configured". 663 Attribute values in DPN-resident Policies may be configured by the 664 FPC Agent as follows: 666 Domain-Settings: Values for Policy attributes that are required for 667 every DPN in the domain. 669 DPN-Settings: Values for Policy attributes that are required for 670 every policy configured on this DPN. 672 Service-Settings: Values for Policy attributes that are required to 673 carry out the intended Service of the Service Group. 675 MN-Settings: Values for Policy attributes that are required for all 676 traffic to/from a particular mobile node. 678 Flow-Settings: Values for Policy attributes that are required for 679 traffic belonging to a particular set of flows on the mobile node. 681 Any of these configuration steps may also supply updated values for 682 existing default attribute values that may have been previously 683 configured on the DPN-resident policy. 685 4.7. Entity Configuration Blocks 687 As described in Section 4.6, a Policy Template may be configured in 688 several stages by configuring default or missing values for 689 Attributes that do not already have statically configured values. A 690 Policy-Configuration is the combination of a Policy-Key (to identify 691 the Policy Template defining the Attributes) and the currently 692 configured Attribute Values to be applied to the Policy Template. 694 More generally, an Entity-Configuration can be defined for any 695 configurable Indexed Set to be the combination of the Entity-Key 696 along with a set of Attribute-Expressions that supply configuration 697 information for the entity's Attributes. Figure 7 shows a schematic 698 representation for such Entity Configuration Blocks. 700 [Entity Configuration Block] 701 | +-[Entity-Key] (M) 702 | +-[Attribute-Expression] (M) 704 Figure 7: Entity Configuration Block 706 This document makes use of the following kinds of Entity 707 Configuration Blocks: 709 Domain-Policy-Configuration 711 DPN-Policy-Configuration 713 Descriptor-Configuration 715 Action-Configuration 717 MN-Policy-Configuration 719 Flow-Policy-Configuration 721 4.8. Infomation Model Checkpoint 723 The Information Model Checkpoint permits Clients and tenants with 724 common scopes, referred to in this specification as Checkpoint 725 BaseNames, to track the state of provisioned information on an Agent. 726 The Agent records the Checkpoint BaseName and Checkpoint value set by 727 a Client. If a new Client attaches to the Agent it can query to 728 determine the amount of work that must be executed to configure the 729 Agent to a specific BaseName / checkpoint revision. 731 Checkpoints are defined for the following information model 732 components: 734 Service-Group 736 DPN Information Model 738 Topology Information Model 740 Policy Information Model 742 4.9. Information Model Components 744 4.9.1. Service-Group 746 A Service-Group is collection of DPN interfaces serving some data- 747 plane purpose. Each Group contains a list of DPNs (referenced by 748 DPN-Key) and selected interfaces (referenced by Interface-Key). The 749 Interfaces are listed explicitly (rather than referred implicitly by 750 its specific DPN) so that every Interface of a DPN is not required to 751 be part of the Group. 753 | 754 +-[Service-Group] , (O) 755 | +-[Extensible: FALSE] 756 | +-[DPN-Key] 757 | +-[Role] 758 | +-[Referenced-Interface] 759 | | +-[Interface-Key] 760 | | +-[Peer-Service-Group-Key] (O) 762 Figure 8: Service Group 764 Each Service-Group contains the following information: 766 Service-Group (Key): A unique ID of the Service-Group 768 Service-Group (Name): a human-readable display string 770 Role: the role (MAG, LMA, PGW, AMF etc.) of the device hosting the 771 interfaces of the DPN Group. 773 Referenced-Interface: The Interfaces and peer Service-Groups 774 associated with them. Each entry contains 776 Interface-Key: a key that is used together with the Role, to 777 create a key that is referred to be the interface definition of 778 DPNs 780 Peer-Service-Group-Key: Enables location of the peer Service 781 Group for this Interface. 783 4.9.2. Service Endpoints 785 Service Endpoint is the collection of all services provided by DPN 786 interfaces in the network. The interfaces are grouped according to 787 their Role (e.g. LMA, MAG, PGW, AMF, etc.) Within a group, DPN 788 interfaces may have additional properties that are more specific, as 789 determined by a list of features and (optionally) settings relevant 790 to DPN selection. This information is used when searching for 791 resources in a network to carry out required operations on data-plane 792 traffic. 794 | 795 +-[Service-Endpoint] 796 | +-[Extensible: FALSE] 797 | +-[Role] , (O) 798 | +-[Service-Group-Key] 799 | +-[Interface] 800 | | +-[Interface-Key] , (O) 801 | | +-[DPN-Key] 802 | | +-[Protocol] 803 | | +-[Features] (O) 804 | | +-[Settings] (O) 806 Figure 9: DPN Type 808 Each Service-Endpoint entry contains the following information: 810 Service-Group-Key: Keys enabling reference to the Service-Groups 811 that are to be supported by this Service-Endpoint. 813 Interface: A set of interfaces possible for the group defined by 814 the Role. Each interface carries the following information: 816 Interface-Key: a key that is used to locate the interface 817 definition. 819 Role: the roles (MAG, LMA, PGW, AMF, etc.) of the interface. 821 DPN-Key: The DPN key of the associated interface. 823 Protocol: set of protocols supported by this interface (e.g., 824 PMIP, S5-GTP, S5-PMIP etc.). 826 Features (optional): a set of static features which further 827 determine the suitability of the interface to the desired 828 operation for which selection is underway. 830 Settings (optional): configurable settings that further 831 determine the suitability of an interface for the specific 832 request. For example: SequenceNumber=ON/OFF. 834 The Role uniquely identifies the kind of interfaces that may be 835 available for DPNs of the specific type. 837 4.9.3. Topology Information Model 839 The Topology structure specifies DPNs and the communication paths 840 between them. A network management system can use the Topology to 841 select the most appropriate DPN resources for handling specific 842 session flows. 844 The Topology structure is illustrated in Figure 10 (for definitions 845 see Section 2): 847 | 848 +-[Topology Information Model] 849 | +-[Extensible: FALSE] 850 | +-[DPN] 851 | +-[Domain] 853 Figure 10: Topology Structure 855 4.9.4. Domain Information Model 857 A Domain represents a group of heterogeneous Topology resources 858 typically sharing a common administrative authority. Other models, 859 outside of the scope of this specification, provide the details for 860 the Domain. 862 | 863 +-[Domain] , (O) 864 | +-[Domain-Policy-Configuration] (O) 865 | 867 Figure 11: Domain Information Model 869 Each Domain entry contains the following information: 871 Domain (Key): Identifies and enables reference to the Domain 873 Domain (Name): A human-readable display string naming the Domain 875 4.9.5. DPN Information Model 877 A DPN-Set contains some or all of the DPNs in the tenant's network. 878 Some of the DPNs in the Set may be identical in functionality and 879 only differ by their Key. 881 | 882 +-[DPN] , (O) 883 | +-[Extensible: FALSE] 884 | +-[Interface] 885 | | +-[Role] 886 | | +-[Protocol] 887 | | +-[Settings] (O) 888 | +-[Domain-Key] 889 | +-[Service-Group-Key] (O) 890 | +-[DPN-Policy-Configuration] (M) 891 | +-[DPN-Resource-Mapping-Reference] (O) 893 Figure 12: DPN Information Model 895 Each DPN entry contains the following information: 897 DPN-Key: A unique Identifier of the DPN 899 DPN-Name: A human-readable display string 901 Domain-Key: A Key providing access to the Domain information about 902 the Domain in which the DPN resides. 904 Interface-Set: The Interface-Set references all interfaces (through 905 which data packets are received and transmitted) available on the 906 DPN. Each Interface makes use of attribute values that are 907 specific to that interface, for example, the MTU size. These do 908 not affect the DPN selection of active or enabled interfaces. 909 Interfaces contain the following informaiton: 911 Role: the role (MAG, LMA, PGW, AMF, etc.) of the DPN. 913 Settings (optional): configurable settings that further 914 determine the suitability of an interface for the specific 915 request. For example: SequenceNumber=ON/OFF. 917 Service-Group-Set: The Service-Group-Set references all of the 918 Service-Groups which have been configured using Interfaces hosted 919 on this DPN. The purpose of a Service-Group is not to describe 920 each interface of each DPN, but rather to indicate interface types 921 for use during the DPN selection process, when a DPN with specific 922 interface capabilities is required. 924 DPN-Policy-Configuration: A list of Policies that have been 925 configured on this DPN. Some may have values for all attributes, 926 and some may require further configuration. Each Policy- 927 Configuration has a key to enable reference to its Policy- 928 Template. Each Policy-Configuration also has been configured to 929 supply missing and non-default values to the desired Attributes 930 defined within the Policy-Template. 932 DPN-Resident-Policy.Policy-Configuration: A Policy Key providing 933 access to Template from which the DPN-Resident-Policy was 934 instantiated, as well as an Attribute-Expression for this 935 instantiation from the Policy-Template, which supplies default 936 values and statically configured values for the Attributes, 937 according to the syntax specified in Section 4.2. 939 DPN-Resource-Mapping-Reference (O): A reference to the underlying 940 implementation, e.g. physical node, software module, etc. that 941 supports this DPN. This value MUST be non-empty prior to Dynamic- 942 Policies being installed upon the DPN. Further specification of 943 this attribute is out of scope for this document. 945 4.9.6. Policy Information Model 947 The Policy Information Model defines and identifies Rules for 948 enforcement at DPNs. A Policy is basically a set of Rules that are 949 to be applied to each incoming or outgoing packet at a DPN interface. 950 Rules comprise Descriptors and a set of Actions. The Descriptors, 951 when evaluated, determine whether or not a set of Actions will be 952 performed on the packet. The Policy structure is independent of a 953 policy context, whether it's an administratively configurable policy 954 which applies to all data flows, or a defined aggregate of flows, or 955 to a mobility context-related policy, which is associated with a 956 mobility session and may apply only to data traffic of an associated 957 mobile node when that node is being registered. 959 In addition to the Policy structure, the Information Model (per 960 Section 4.9.7) defines Mobility-Context. Each Mobility-Context may 961 be configured with appropriate Attribute values, for example 962 depending on the identity of a mobile node. 964 Traffic descriptions are defined in Descriptors, and treatments are 965 defined separately in Actions. A Rule-Set binds Descriptors and 966 associated Actions by reference, using Descriptor-Key and Action-Key. 967 A Rule-Set is bound to a policy in the Policy-Set (using Policy-Key), 968 and the Policy references the Rule definitions (using Rule-Key). 970 | 971 +-[Policy Information Model] 972 | +-[Extensible:] 973 | +-[Policy-Template] (M) 974 | | +-[Policy-Status] 975 | | +-[Rule-Template-Key] (M) 976 | | | +-[Precedence] (M) 977 | +-[Rule-Template] (M) 978 | | +-[Descriptor-Match-Type] (M) 979 | | +-[Descriptor-Configuration] (M) 980 | | | +-[Direction] (O) 981 | | +-[Action-Configuration] (M) 982 | | | +-[Action-Order] (M) 983 | +-[Descriptor-Template] (M) 984 | | +-[Descriptor-Type] (O) 985 | | +-[Attribute-Expression] (M) 986 | +-[Action-Template] (M) 987 | +-[Action-Type] (O) 988 | | +-[Attribute-Expression] (M) 990 Figure 13: Policy Information Model 992 The Policy structure defines Policy-Set, Rule-Set, Descriptor-Set, 993 and Action-Set, as follows: 995 Policy-Template: A set of Policy structures, indexed by 996 Policy-Key, each of which is determined by a list of Rules 997 referenced by their Rule-Key. Each Policy structure contains the 998 following: 1000 Policy-Key: Identifies and enables reference to this Policy 1001 definition. 1003 Policy-Status: Either Initial, PartiallyConfigured, Configured, 1004 or Active. Default value is Initial. 1006 Rule-Template-Key: Enables reference to a Rule template 1007 definition. 1009 Rule-Precedence: For each Rule identified by a Rule-Template-Key 1010 in the Policy, specifies the order in which that Rule must be 1011 applied. The lower the numerical value of Precedence, the 1012 higher the rule precedence Rules with equal precedence MAY be 1013 executed in parallel if supported by the Resource Management 1014 Function. If this value is absent, the rules SHOULD be applied 1015 in the order in which they appear in the Policy. 1017 Rule-Template-Set: A set of Rule template definitions indexed by 1018 Rule-Key. Each Rule is defined by a list of Descriptors (located 1019 by Descriptor-Key) and a list of Actions (located by Action-Key) 1020 as follows: 1022 Rule-Template-Key: Identifies and enables reference to this Rule 1023 definition. 1025 Descriptor-Match-Type Indicates whether the evaluation of the 1026 Rule proceeds by using conditional-AND, or conditional-OR, on 1027 the list of Descriptors. 1029 Descriptor-Configuration: References a Descriptor template 1030 definition, along with an expression which names the Attributes 1031 for this instantiation from the Descriptor-Template and also 1032 specifies whether each Attribute of the Descriptor has a 1033 default value or a statically configured value, according to 1034 the syntax specified in Section 4.2. 1036 Direction: Indicates if a rule applies to uplink traffic, to 1037 downlink traffic, or to both uplink and downlink traffic. 1038 Applying a rule to both uplink and downlink traffic, in case of 1039 symmetric rules, eliminates the requirement for a separate 1040 entry for each direction. When not present, the direction is 1041 implied by the Descriptor's values. 1043 Action-Configuration: References an Action template definition, 1044 along with an expression which names the Attributes for this 1045 instantiation from the Action-Template and also specifies 1046 whether each Attribute of the Action has a default value or a 1047 statically configured value, according to the syntax specified 1048 in Section 4.2. 1050 Action-Order: Defines the order in which actions are executed 1051 when the associated traffic descriptor selects the packet. 1053 Descriptor-Template-Set: A set of traffic Descriptors, each of 1054 which can be evaluated on the incoming or outgoing packet, 1055 returning a TRUE or FALSE value, defined as follows: 1057 Descriptor-Template-Key: Identifies and enables reference to 1058 this descriptor template definition. 1060 Attribute-Expression: An expression which defines an Attribute in 1061 the Descriptor-Template and also specifies whether the Template 1062 also defines a default value or a statically configured value 1063 for the Attribute of the Descriptor has, according to the 1064 syntax specified in Section 4.2. 1066 Descriptor-Type: Identifies the type of descriptor, e.g. an IPv6 1067 traffic selector per [RFC6088]. 1069 Action-Template-Set: A set of actions defined as follows: 1071 Action-Template-Key: Identifies and enables reference to this 1072 action template definition. 1074 Attribute-Expression: An expression which defines an Attribute in 1075 the Action-Template and also specifies whether the Template 1076 also defines a default value or a statically configured value 1077 for the Attribute of the Action has, according to the syntax 1078 specified in Section 4.2. 1080 Action-Type: Identifies the type of an action for unambiguous 1081 interpretation of an Action-Value entry. 1083 4.9.7. Mobility-Context Information Model 1085 The Mobility-Context structure holds entries associated with a mobile 1086 node and its mobility sessions (flows). It is created on a DPN 1087 during the mobile node's registration to manage the mobile node's 1088 flows. Flow information is added or deleted from the Mobility- 1089 Context as needed to support new flows or to deallocate resources for 1090 flows that are deactivated. Descriptors are used to characterize the 1091 nature and resource requirement for each flow. 1093 Termination of a Mobility-Context implies termination of all flows 1094 represented in the Mobility-Context, e.g. after deregistration of a 1095 mobile node. If any Child-Contexts are defined, they are also 1096 terminated. 1098 +-[Mobility-Context] 1099 | +-[Extensible ~ FALSE] 1100 | +-[Delegating-IP-Prefix:] 1101 | +-[Parent-Context] 1102 | +-[Child-Context] 1103 | +-[Mobile-Node] 1104 | | +-[IP-Address] 1105 | | +-[MN-Policy-Configuration] 1106 | +-[Domain-Key] 1107 | | +-[Domain-Policy-Configuration] 1108 | +-[DPN-Key] 1109 | | +-[Role] 1110 | | +-[DPN-Policy-Configuration] 1111 | | +-[ServiceDataFlow] 1112 | | | +-[Service-Group-Key] 1113 | | | +-[Interface-Key] 1114 | | | +-[Flow-Policy-Configuration] 1115 | | | | +-[Direction] 1117 Figure 14: Mobility-Context Information Model 1119 The Mobility-Context Substructure holds the following entries: 1121 Mobility-Context-Key: Identifies a Mobility-Context 1123 Extensible: Determines whether or not entities instantiated from 1124 this Template can be extended with new non-mandatory Attributes 1125 not defined here. Default value is FALSE. 1127 Parent-Context: If present, a Mobility Context from which the 1128 Attributes and Attribute Values of this Mobility Context are 1129 inherited. 1131 Child-Context: A set of Mobility Contexts which inherit the 1132 Attributes and Attribute Values of this Mobility Context. 1134 Mobile-Node: Attributes specific to the Mobile Node. 1136 Domain-Key: Enables access to a Domain instance. 1138 Domain-Policy-Configuration: For each Domain-Policy in the set, a 1139 key and relevant information for the Policy Attributes. 1141 DPN-Key: Enables access to a DPN instance. 1143 Role: Role this DPN fulfills in the Mobility-Context. 1145 DPN-Policy-Configuration: For each DPN-Policy in the set, a key and 1146 relevant information for the Policy Attributes. 1148 ServiceDataFlow: Characterizes a traffic flow that has been 1149 configured (and provided resources) on the DPN to support data- 1150 plane traffic to and from the mobile device. 1152 Service-Group-Key: Enables access to a Service-Group instance. 1154 Interface-Key: Assigns the selected interface of the DPN. 1156 Flow-Policy-Configuration: For each Flow-Policy in the set, a 1157 key and relevant information for the Policy Attributes. 1159 Direction: Indicates if a rule applies to uplink or downlink 1160 traffic, or to both, uplink- and downlink traffic. Applying 1161 a rule to both, uplink- and downlink traffic, in case of 1162 symmetric rules, allows omitting a separate entry for each 1163 direction. When not present the value is assumed to apply 1164 to both directions. 1166 4.9.8. Monitor Information Model 1168 Monitors provide a mechanism to produce reports when events occur. A 1169 Monitor will have a target that specifies what is to be watched. 1171 The attribute/entity to be monitored places certain constraints on 1172 the configuration that can be specified. For example, a Monitor 1173 using a Threshold configuration cannot be applied to a Mobility- 1174 Context, because it does not have a threshold. Such a monitor 1175 configuration could be applied to a numeric threshold property of a 1176 Context. 1178 | 1179 +-[Monitor] 1180 | +-[Extensible:] 1181 | +-[Monitor-Key:] 1182 | +-[Target:] 1183 | +-[Deferrable] 1184 | +-[Configuration] 1186 Figure 15: Monitor Substructure 1188 Monitor-Key: Name of the Monitor. The format MUST conform to 1189 Section 4.5. 1191 Target: Description of what is to be monitored. This can be a 1192 Service Data Flow, a Policy installed upon a DPN, values of a 1193 Mobility-Context, etc. The target name is the absolute 1194 information model path (separated by '/') to the attribute / 1195 entity to be monitored. 1197 Deferrable: Indicates that a monitoring report can be delayed up to 1198 a defined maximum delay for possible bundling with other reports. 1200 Configuration: Determined by the Monitor subtype. The monitor 1201 report is specified by the Configuration. Four report types are 1202 defined: 1204 * "Periodic" reporting specifies an interval by which a 1205 notification is sent. 1207 * "Event-List" reporting specifies a list of event types that, if 1208 they occur and are related to the monitored attribute, will 1209 result in sending a notification. 1211 * "Scheduled" reporting specifies the time (in seconds since Jan 1212 1, 1970) when a notification for the monitor should be sent. 1213 Once this Monitor's notification is completed the Monitor is 1214 automatically de-registered. 1216 * "Threshold" reporting specifies one or both of a low and high 1217 threshold. When these values are crossed a corresponding 1218 notification is sent. 1220 5. Protocol 1222 5.1. Protocol Messages and Semantics 1224 Four Client to Agent messages are supported. 1226 +---------------------+---------------------------------------------+ 1227 | Message | Description | 1228 +---------------------+---------------------------------------------+ 1229 | Configure | A Configure message includes multiple edits | 1230 | | to one or more information model entities. | 1231 | | Edits are executed according to their Edit- | 1232 | | Id in ascending order. The global status | 1233 | | of the operation and the status of | 1234 | | individual edits are returned. Partial | 1235 | | failures, i.e. individual edit failures, | 1236 | | are allowed. | 1237 | Register-Monitors | Register monitors at an Agent. The message | 1238 | | includes the Monitor information as | 1239 | | specified in Section 4.9.8. | 1240 | Deregister-Monitors | Deregister monitors from an Agent. An | 1241 | | optional boolean, Send-Data, indicates if a | 1242 | | successful deregistration triggers a Notify | 1243 | | with final data from the Agent for the | 1244 | | corresponding Monitor. | 1245 | Probe | Probe the status of registered monitors. | 1246 | | This triggers a Notify with current data | 1247 | | from the Agent for the corresponding | 1248 | | Monitors. | 1249 +---------------------+---------------------------------------------+ 1251 Table 1: Client to Agent Messages 1253 Each message contains a header with the following information: 1255 Client Identifier: An Identifier used by the Agent to associate 1256 specific configuration characteristics, e.g. options used by the 1257 Client when communicating with the Agent, the association of the 1258 Client and tenant in the information model as well as tracking 1259 operations and notifications. 1261 Delay: An optional time (in ms) to delay the execution of the 1262 operation on the DPN once it is received by the Agent. 1264 Operation Identifier: A unique identifier created by the Client to 1265 correlate responses and notifications 1267 An Agent will respond with an ERROR, indicating one or more Errors 1268 have occured, or an OK. 1270 For Configure messages, an OK status for an edit MAY include 1271 subsquent edits in the response that were required to properly 1272 execute the edit. It MAY also indicate that the final status and any 1273 final edits required to fulfill the request will be sent via a 1274 Configure result notification from the Agent to the Client, see 1275 Section 5.1.1.4.2. 1277 If errors occur, they MUST be returned as a list in responses and 1278 each Error contains the following information: 1280 Error-type: The specific error type. Values are TRANSPORT (0), RPC 1281 (1), PROTOCOL(2) or APPLICATION (3). 1283 Error-Tag: An error tag. 1285 Error-App-Tag: Application specific error tag. 1287 Error-Message: A message describing the error. 1289 Error-Info: Any data required for the response. 1291 | 1292 +-[Errors] 1293 | +-[(Enumeration) Error-Type ] 1294 | +-[(String) Error-Tag ] 1295 | +-[(String) Error-App-Tag ] (O) 1296 | +-[(String) Error-Message ] (O) 1297 | +-[Error-Info] (O) 1299 Figure 16: Error Information Model 1301 Two Agent to Client notifications are supported. 1303 +-------------------------------+-----------------------------------+ 1304 | Message | Description | 1305 +-------------------------------+-----------------------------------+ 1306 | Configure-Result-Notification | An asynchronous notification from | 1307 | | Agent to Client based upon a | 1308 | | previous Configure request. | 1309 | Notify | An asynchronous notification from | 1310 | | Agent to Client based upon a | 1311 | | registered Monitor's | 1312 | | configuration, a Monitor | 1313 | | deregistration or Probe. | 1314 +-------------------------------+-----------------------------------+ 1316 Table 2: Agent to Client Messages (notifications) 1318 5.1.1. Configure Message 1320 The Configure message follows edit formats proposed by [RFC8072] with 1321 more fields in each edit, an extra operation (clone) and a different 1322 response format. 1324 5.1.1.1. Edit Operation Types 1326 +-----------+-------------------------------------------------------+ 1327 | Operation | Description | 1328 +-----------+-------------------------------------------------------+ 1329 | create | Creates a new data resource or Entity. If the | 1330 | | resource exists an error is returned. | 1331 | delete | Deletes a resource. If it does not exist an error is | 1332 | | returned. | 1333 | insert | Inserts data in a list or user ordered list. | 1334 | merge | Merges the edit value with the target data resource; | 1335 | | the resource is created if it does not exist. | 1336 | move | Moves the target data resource. | 1337 | replace | Replace the target data resource with the edit value. | 1338 | remove | Removes a data resource if it already exists. | 1339 | clone | Clones a data resource and places the copy at the new | 1340 | | location. If the resource does not exist an error is | 1341 | | returned. | 1342 +-----------+-------------------------------------------------------+ 1344 Table 3: Configure Edit Operations 1346 5.1.1.2. Edit Operation 1348 Each Configure includes one or more edits. These edits include the 1349 following information: 1351 Edit-Id: uniquely specifies the identifier of the edit within the 1352 operation. 1354 Edit-Type: specifies the type of operation (see Section 5.1.1.1). 1356 Command-Set: The Command-Set is a technology-specific bitset that 1357 allows for a single entity to be sent in an edit with multiple 1358 requested, technology specific sub-transactions to be completed. 1359 It can also provide clarity for a request. For example, a 1360 Mobility-Context could have the Home Network Prefix absent but it 1361 is unclear if the Client would like the address to be assigned by 1362 the Agent or if this is an error. Rather than creating a 1363 specific command for assigning the IP a bit position in a 1364 Command-Set can be used to indicate Agent based IP assignment 1365 requests. 1367 Reference-Scope: If supported, specifies the Reference Scope (see 1368 Section 5.1.1.3) 1370 Target: Specifies the Target node (Data node path or FPC Identity) 1371 for the edit operation. This MAY be a resource, e.g. Mobility- 1372 Context, Descriptor-Template, etc., or a data node within a 1373 resource as specified by its path. 1375 Point: The absolute URL path for the data node that is being used as 1376 the insertion point, clone point or move point for the target of 1377 this 'edit' entry. 1379 Where: Identifies where a data resource will be inserted, cloned to 1380 or moved. Only allowed these for lists and lists of data nodes 1381 that are 'ordered-by user'. The values are 'before', 'after', 1382 'first', 'last' (default value). 1384 Value The value used for this edit operation. 1386 | 1387 +-[Configure] 1388 | +-[Client-Id:] 1389 | +-[(Unsigned 32) Execution-Delay] 1390 | +-[Operation-Id:] 1391 | +-[Edits:] 1392 | | +-[Edit-Id:] 1393 | | +-[(Enumeration) Edit-Type:] 1394 | | +-[(BitSet) Command-Set] 1395 | | +-[(Enumeration) Reference-Scope] 1396 | | +-[Target:] 1397 | | +-[Point] 1398 | | +-[(Enumeration) Where] 1399 | | +-[Value] 1401 Figure 17: Configure Request 1403 Edits sent to the Agent provided in an operation SHOULD be sent in 1404 the following order to avoid errors: 1406 1. Action Templates 1408 2. Descriptor Templates 1410 3. Rule Templates 1412 4. Policy Templates 1414 5. DPN Templates 1415 6. Mobility Contexts 1417 5.1.1.3. Reference Scope 1419 The Reference Scope is an optional feature that provides the scope of 1420 references used in a configuration command. These scopes are defined 1421 as: 1423 o none - All entities have no references to other entities. 1425 o edit - All references are contained in the edit body, i.e. only 1426 intra-operation references exist. 1428 o operation - All references exist in the operation (inter-edit/ 1429 intra-operation). 1431 o storage - One or more references exist outside of the operation. 1432 A lookup to cache / storage is required. 1434 o unknown - the location of the references are unknown. This is 1435 treated as a 'storage' type. 1437 An Agent that only accepts 'edit' or 'operation' reference scope 1438 messages is referred to as 'stateless' as it has no direct memory of 1439 references outside messages themselves. This permits low memory 1440 footprint Agents/DPNs. Even when an Agent supports all message types 1441 an 'edit' or 'operation' scoped message can be processed quickly by 1442 the Agent/DPN as it does not require storage access. 1444 Figure 18 shows an example containment hierarchy provided for all 1445 caches. 1447 +---------------+ 1448 | Global Cache | 1449 | (storage) | 1450 +------+--------+ 1451 | 1452 +----------------+ 1453 | | 1454 +------+-----------+ +------+-----------+ 1455 | Operation Cache | | Operation Cache | 1456 | (operation) | .... | (operation) | 1457 +------+-----------+ +--------+---------+ 1458 | | 1459 +---+-----------+ | 1460 | | | 1461 +------+------+ +------+------+ +------+------+ 1462 | Edit Cache | | Edit Cache | | Edit Cache | 1463 | (edit) | | (edit) | | (edit) | 1464 +-------------+ +-------------+ +-------------+ 1466 (no cache) 1468 Figure 18: Exemple Hierarchical Cache 1470 5.1.1.4. Operation Response 1472 5.1.1.4.1. Immediate Response 1474 The Response MUST include the following: 1476 Operation Identifier of the corresponding request. 1478 Global Status for the operation (see Table 1). 1480 A list of Edit results (described below). 1482 An edit response, Edit-Status, is comprised of the following: 1484 Edit-Id: Edit Indentifier. 1486 Edit-Status: OK. 1488 When the Edit-Status is OK the following values MAY be present 1490 Notify-Follows - A boolean indicator that the edit has been 1491 accepted by the Agent but further processing is required. A 1492 Configure-Result-Notification will be sent once the processing 1493 has succeeded or failed. 1495 Subsequent-Edits: This is a list of Edits that were required to 1496 fulfill the request. It follows the edit request semantics 1497 (see Section 5.1.1.2). 1499 Errors: When the Edit-Status is ERROR the following values are 1500 present. See Table 1 for details. 1502 The response will minimally contain an Edit-Status implying 'OK' or a 1503 list of errors. 1505 | 1506 +-[Operation-Id:] 1507 +-[Result-Status:] 1508 +-[Errors] 1509 | +-[(Enumeration) Error-Type:] 1510 | +-[(String) Error-Tag:] 1511 | +-[(String) Error-App-Tag] 1512 | +-[(String) Error-Message] 1513 | +-[Error-Info] 1514 +-[Edit-Status] 1515 | +-[Edit-Id:] 1516 | +-[Edit-Status: ~ OK] 1517 | +-[Notify-Follows] 1518 | +-[Subsequent-Edits] 1519 | | +-[Edit-Id:] 1520 | | +-[(Enumeration) Edit-Type:] 1521 | | +-[Target:] 1522 | | +-[Point] 1523 | | +-[(Enumeration) Where] 1524 | | +-[Value] 1525 | +-[Errors] 1526 | | +-[(Enumeration) Error-Type:] 1527 | | +-[(String) Error-Tag:] 1528 | | +-[(String) Error-App-Tag] 1529 | | +-[(String) Error-Message] 1530 | | +-[Error-Info] 1531 | 1533 Figure 19: Configure Operation Response 1535 5.1.1.4.2. Asynchronous Notification 1537 A Configure-Result-Notification occurs after the Agent has completed 1538 processing related to a Configure request. It is an asynchronous 1539 communication from the Agent to the Client. 1541 It is identical to the immediate response with the exception that the 1542 Notify-Follows, if present, MUST be false. As this value is 1543 unnecessary it SHOULD be ommitted. 1545 5.1.1.5. Reserved Identities 1547 Several identities are reserved in the Policy Information Model and 1548 Mobility-Context to faciliate specfic uses cases. 1550 Agents and tenants express their support for descriptors and actions 1551 using the following Key patterns 1553 supported- indicates a support for the 1554 descriptor template as defined in its original specification. For 1555 example "base-rfc5777classifier" is a Descriptor Template that 1556 conforms to the rfc5777-classifier (Figure 28) as defined in this 1557 document. 1559 supported- indicates a support for the 1560 action template as defined in its original specification. 1562 "base-rule" is comprised of all base descriptors using an 'or' 1563 Descriptor-Match-Type and all Actions in no specific order. 1565 "base-template" is comprised of the base rule. 1567 "base-template" can be used to determine supported Action and 1568 Descriptor Templates. It can also be used to support an open 1569 template where any specific Descriptors and Actions can be applied, 1570 however, depending upon the Order of Actions it is likely to produce 1571 undesirable results. 1573 One use case is supported via reservation of specific DPN-Keys: 1575 Requested policies are those that the Client would like to be 1576 assigned to a DPN. The naming convention is similar to those used 1577 for DPN Assignment via an Agent. 1579 "Requested" is a Key that represents requested policies which 1580 have not been assigned to a specific DPN. No Role is assigned 1581 to the DPN. 1583 "Requested-" represents requested policies that have not 1584 been assigned to a DPN and can only be assigned to DPNs that 1585 fulfill the specified Role. 1587 It is possible to have policies in the "Requested" DPN that do not 1588 appear in other entries which reflects the inability to 1589 successfully assign the policy. 1591 5.1.2. Monitor Messages 1593 An Agent may reject a registration if it or the DPN has insufficient 1594 resources. 1596 An Agent or DPN MAY temporarily suspend monitoring if insufficient 1597 resources exist. In such a case the Agent MUST notify the Client. 1599 When a monitor has a reporting configuration of SCHEDULED it is 1600 automatically de-registered after the last Notify occurs. 1602 If a SCHEDULED or PERIODIC configuration is provided during 1603 registration with the time related value (time or period 1604 respectively) of 0 a Notify is sent and the monitor is immediately 1605 de-registered. This method should, when a Monitor has not been 1606 installed, result in an immediate Notify sufficient for the Client's 1607 needs and lets the Agent realize the Client has no further need for 1608 the monitor to be registered. 1610 Probe messages are used by a Client to retrieve information about a 1611 previously installed monitor. The Probe message SHOULD identify one 1612 or more monitors by means of including the associated monitor 1613 identifier. An Agent receiving a Probe message sends the requested 1614 information in a single or multiple Notify messages. 1616 If the Monitor configuration associated with a Notify can be 1617 deferred, then the Notify MAY be bundled with other messages back to 1618 the Agent even if this results in a delay of the Notify. 1620 The Monitor messages use the following data: 1622 Monitor-Key: Monitor Key. 1624 Monitor: A Monitor configuration (see Section 4.9.8). 1626 Send-Data: An indicator that specifies that the final value MUST be 1627 sent as a notification from the Agent. 1629 | 1630 +-[Register-Monitors] 1631 | +-[Client-Id:] 1632 | +-[(Unsigned 32) Execution-Delay] 1633 | +-[Operation-Id:] 1634 | +-[Monitors] 1635 | | +-[Extensible:] 1636 | | +-[Monitor-Key:] 1637 | | +-[Target:] 1638 | | +-[Binding-Information] 1639 | | +-[Deferrable] 1640 | | +-[Configuration:] 1642 | 1643 +-[Deregister-Monitors] 1644 | +-[Client-Id:] 1645 | +-[(Unsigned 32) Execution-Delay] 1646 | +-[Operation-Id:] 1647 | +-[Monitors:] 1648 | | +-[Monitor-Key:] 1649 | | +-[(Boolean) Send-Data ~ False] 1651 | 1652 +-[Deregister-Monitors] 1653 | +-[Client-Id:] 1654 | +-[(Unsigned 32) Execution-Delay] 1655 | +-[Operation-Id:] 1656 | +-[Monitor-Key:] 1658 Figure 20: Monitor Messages 1660 5.1.2.1. Asynchronous Notification 1662 A Monitor Report can be sent as part of de-registration, a trigger 1663 based upon a Monitor Configuration or a Probe. A Report is comprised 1664 of the Monitor Key the report applies to, the Trigger for the report, 1665 a timestamp of when the report's' associated event occurs and data 1666 that is specific to the monitored value's type. 1668 Triggers include but are not limited to 1670 o Subscribed Event occurred 1672 o Low Threshold Crossed 1674 o High Threshold Crossed 1675 o Periodic Report 1677 o Scheduled Report 1679 o Probe 1681 o Deregistration Final Value 1683 o Monitoring Suspended 1685 o Monitoring Resumed 1687 o DPN Availabile 1689 o DPN Unavailable 1691 Multiple Reports are sent in a Notify message. Each Notify is 1692 comprised of unique Notification Identifier from the Agent and 1693 timestamp indicating when the notification was created. 1695 | 1696 +-[ Notify ] 1697 | +-[(Unsigned 32) Notification-Identifier:] 1698 | +-[Timestamp:] 1699 | +-[Report:] 1700 | | +-[Trigger:] 1701 | | +-[Monitor-Key:] 1702 | | +-[Value] 1704 Figure 21: Monitor Messages 1706 5.2. Protocol Operation 1708 Please note that JSON is used to represent the information in Figures 1709 in this section but any over the wire representation that accurately 1710 reflects the information model MAY be used. 1712 5.2.1. Simple RPC Operation 1714 An FPC Client and Agent MUST identify themselves using the Client 1715 Identifier and Agent Identifier respectively to ensure that for all 1716 transactions a recipient of an FPC message can unambiguously identify 1717 the sender of the FPC message. 1719 A Client MAY direct the Agent to enforce a rule in a particular DPN 1720 by including a DPN Key value in a Mobility Context. Otherwise the 1721 Agent selects a suitable DPN to enforce one or more portions of a 1722 Mobility Context and notifies the Client about the selected DPN(s) 1723 using the DPN Identifier(s). 1725 All messages sent from a Client to an Agent MUST be acknowledged by 1726 the Agent. The response must include all edit status as well as 1727 subsequent edits, which indicates the result of processing the 1728 message, as part of the Configure response. In case the processing 1729 of the message results in a failure, the Agent sets the global status 1730 Error-Type and Error-Tag accordingly and MAY clear the entity, e.g. 1731 Context or Configurable-Policy, which caused the failure, in the 1732 response. 1734 If based upon Agent configuration or the processing of the request 1735 possibly taking a significant amount of time the Agent MAY respond 1736 with a Notify-Follows indication with optional Subsequent-Edit(s) 1737 containing the partially completed entity modifications. When a 1738 Notify-Follows indication is indicated, the Agent will, upon 1739 completion or failure of the operation, respond with an asynchronous 1740 Configuration-Result-Notification to the Client. 1742 A Client MAY add a property to a Mobilty-Context without providing 1743 all required details of the attribute's value. In such case the 1744 Agent SHOULD determine the missing details and provide the completed 1745 property description, via Subsequent-Edit(s) back to the Client. If 1746 the processing will take too long or based upon Agent configuration, 1747 the Agent MAY respond with an OK for the Edit that indicates a 1748 Notify-Follows and also includes Subsequent-Edit(s) containing the 1749 partially completed entity edits. 1751 In case the Agent cannot determine the missing value of an 1752 attribute's value per the Client's request, it leaves the attribute's 1753 value cleared ]and sets the Edit Result to Error and provides an 1754 Error-Type and Error-Tag. As example, the Control-Plane needs to 1755 setup a tunnel configuration in the Data-Plane but has to rely on the 1756 Agent to determine the tunnel endpoint which is associated with the 1757 DPN that supports the Mobility-Context. The Client adds the tunnel 1758 property attribute to the FPC message and clears the value of the 1759 attribute (e.g. IP address of the local tunnel endpoint). The Agent 1760 determines the tunnel endpoint and includes the completed tunnel 1761 property in its response to the Client in a Subsequent-Edit entry. 1763 Figure 22 illustrates an exemplary session life-cycle based on Proxy 1764 Mobile IPv6 registration via MAG Control-Plane function 1 (MAG-C1) 1765 and handover to MAG Control-Plane function 2 (MAG-C2). Edge DPN1 1766 represents the Proxy CoA after attachment, whereas Edge DPN2 serves 1767 as Proxy CoA after handover. As exemplary architecture, the FPC 1768 Agent and the network control function are assumed to be co-located 1769 with the Anchor-DPN, e.g. a Router. 1771 The Target of the second request uses the Mobility-Context by name. 1772 Alternatively, the Target could have included the DPN-Key and Policy- 1773 Key to further reduce the amount of information exchnanged. Setting 1774 the Target's value to the most specific node SHOULD be followed 1775 whenever practicle. 1777 +-------Router--------+ 1778 +-----------+ |+-------+ +---------+| 1779 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1780 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1781 +------+ +------+ +-----+-------+ +-------+ +---------+ 1782 [MN attach] | | | | 1783 |-------------PBU----->| | | 1784 | | |---(1)--Configure-------->| | 1785 | | "configure" : { | | 1786 | | "client-id" : 0, | | 1787 | | "operation-id" : 0, | | 1788 | | "edit" : [ | | 1789 | | "edit-id" : 0, | | 1790 | | "edit-type" : "create", | | 1791 | | "target" : "/mobility-context", | 1792 | | "value" : { | 1793 | | "mobility-context-key" : "ctxt1", | 1794 | | "delegating-ip-prefix" : [ ], | 1795 | | "dpn" : "[ { | 1796 | | "dpn-key" : "DPN1", | 1797 | | "service-data-flow" : [ 1798 | | "identifier" : 0, 1799 | | "flow-settings" : [ 1800 | | ... 1801 | | {"policy-key" : "dl-tunnel-with-qos", 1802 | | "qos-template" : , 1803 | | ... 1804 | | "tunnel" :
}, 1805 | | {"policy-key" : "ul-tunnel", 1806 | | ... 1807 | | "tunnel" :
    } ] 1808 | | ] } ] } ] } | | 1809 | | | |--tun1 up->| 1810 | | | | | 1811 | | | |--tc qos-->| 1812 | | | | | 1813 | | |<---(2)- Response --------|-route add>| 1814 | | | { | | 1815 | | | "agent-id" : "agent1"," | | 1816 | | | "operation-id" : 0, | | 1817 | | | "result-status" : "ok", | | 1818 | | | "edit-status" : [ | | 1819 | | | "edit-id" : 0, | | 1820 | | | "edit-status" : "ok" | | 1821 | | | ] } | | 1822 | | | | | 1823 |<------------PBA------| | | 1824 | | | | | 1825 | +----+ | | | | 1826 | |Edge| | | | | 1827 | |DPN1| | | | | 1828 | +----+ | | | | 1829 | | | 1830 | |-=======================================================-| 1831 | | | | 1832 | [MN handover] | | | 1833 | |---PBU ---->| | | 1834 | | |--(3)- CONFIG(MODIFY)---->| | 1835 | | "configure" : { |-tun1 mod->| 1836 | | "client-id" : 0, | | 1837 | | "operation-id" : 1, | | 1838 | | "edit" : [ | | 1839 | | "edit-id" : 0, | | 1840 | | "edit-type" : "merge", | | 1841 | | "target" : "/mobility-context/ctxt1", | 1842 | | "value" : { | | 1843 | | "dpn-set" : "[ { | 1844 | | "dpn-key" : "DPN1", | 1845 | | "service-data-flow" : [ 1846 | | "identifier" : 0, 1847 | | "flow-settings" : [ 1848 | | ... 1849 | | {"policy-key" : "dl-tunnel-with-qos", 1850 | | "tunnel" : } ] 1851 | | } ] } ] } | | 1852 | |<--PBA------| | | 1853 | | | |-tun1 mod->| 1854 | | |<---(4)- OK --------------| | 1855 | | | { | | 1856 | | | "agent-id" : "agent1"," | | 1857 | | | "operation-id" : 1, | | 1858 | | | "result-status" : "ok", | | 1859 | | | "edit-status" : [ | | 1860 | | | "edit-id" : 0, | | 1861 | | | "edit-status" : "ok" | | 1862 | | | ] } | | 1863 | | +----+ | | | 1864 | | |Edge| | | | 1865 | | |DPN2| | | | 1866 | | +----+ | | | 1867 | | | | | | 1868 | | |-============================================-| 1869 | | | | | 1871 Figure 22: Example Message Sequence (focus on FPC reference point) 1873 After reception of the Proxy Binding Update (PBU) at the LMA Control- 1874 Plane function (LMA-C), the LMA-C selects a suitable DPN, which 1875 serves as Data-Plane anchor to the mobile node's (MN) traffic. The 1876 LMA-C adds a new logical Context to the DPN to treat the MN's traffic 1877 (1) and includes a Context Identifier (ctxt1) in the Configure 1878 command. The LMA-C identifies the selected Anchor DPN by including 1879 the associated DPN identifier. 1881 The LMA-C adds policy template properties during the creation of the 1882 new Mobility-Context. One policy, "dl-tunnel-with-qos", is an 1883 example template that permits tunnel forwarding of traffic destined 1884 to the MN's HNP, i.e. downlink traffic, with optional QoS parameters. 1885 Another policy, "ul-tunnel", provides a simple uplink anchor 1886 termination template where the uplink tunnel information is provided. 1888 The downlink tunnel information specifies the destination endpoint 1889 (Edge DPN1). 1891 At reception of the Mobility-Context, the FPC Agent utilizes local 1892 configuration commands to create the tunnel (tun1) as well as the 1893 traffic control (tc) to enable QoS differentiation. After 1894 configuration has been completed, the Agent applies a new route to 1895 forward all traffic destined to the MN's HNP specified as a property 1896 in the Mobility-Context and applied the configured tunnel interface 1897 (tun1). 1899 During handover, the LMA-C receives an updating PBU from the handover 1900 target MAG-C2. The PBU refers to a new Data-Plane node (Edge DPN2) 1901 to represent the new tunnel endpoint in the downlink as required. 1902 The LMA-C sends a Configure message (3) to the Agent to modify the 1903 existing tunnel property of the existing Mobility-Context and to 1904 update the downlink tunnel endpoint from Edge DPN1 to Edge DPN2. 1905 Upon reception of the Configure message, the Agent applies updated 1906 tunnel property to the local configuration and responds to the Client 1907 (4). 1909 +-------Router--------+ 1910 +-----------+ |+-------+ +---------+| 1911 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1912 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1913 +------+ +------+ +-----+-------+ +-------+ +---------+ 1915 [MN attach] | | | | 1916 |-------------PBU----->| | | 1917 | | |---(1)--Configure-------->| | 1918 | | "configure" : { | | 1919 | | "client-identifier" : 0, | | 1920 | | "operation-id" : 3, | | 1921 | | "edits" : [ | | 1922 | | "edit-id" : 0, | | 1923 | | "edit-type" : "merge", | | 1924 | | "target" : "/mobility-context/ctxt1 | 1925 | | /dpn/DPN1/service-data-flow/0 | 1926 | | /flow-settings/dl-tunnel-with-qos | 1927 | | /0" | 1928 | | "value" : { | | 1929 | | "tunnel" : null | | 1930 | | } ] } | | 1931 |<------------PBA------| |--tun1 ->| 1932 | | | | down | 1933 | | | | | 1934 | | |<---(2)- Response --------| | 1935 | | | { | | 1936 | | | "agent-id" : "agent1"," | | 1937 | | | "operation-id" : 3, | | 1938 | | | "result-status" : "ok", | | 1939 | | | "edit-status" : [ | | 1940 | | | "edit-id" : 0, | | 1941 | | | "edit-status" : "ok" | | 1942 | | | ] } | | 1943 | | | | | 1944 | | [ MinDelayBeforeBCEDelete expires ] | | 1945 | | | | | 1946 | | |---(3)--Configure-------->|-- tun1 -->| 1947 | | "configure" : { | delete | 1948 | | "client-identifier" : 0, | | 1949 | | "operation-id" : 4, | | 1950 | | "edits" : [ | | 1951 | | "edit-id" : 0, | | 1952 | | "edit-type" : "delete", | | 1953 | | "target" : "/mobility-context/ctxt1" | 1954 | | ] } | | 1955 | | | | | 1956 | | |<---(4)- Response --------| | 1957 | | | { | | 1958 | | | "agent-id" : "agent1"," | | 1959 | | | "operation-id" : 4, | | 1960 | | | "result-status" : "ok", | | 1961 | | | "edit-status" : [ | | 1962 | | | "edit-id" : 0, | | 1963 | | | "edit-status" : "ok" | | 1964 | | | ] } | | 1965 | | | |-- route ->| 1966 | | | | remove | 1967 | | | | | 1969 Figure 23: Exemplary Message Sequence (focus on FPC reference point) 1971 When a teardown of the session occurs, MAG-C1 will send a PBU with a 1972 lifetime value of zero. The LMA-C sends a Configure message (1) to 1973 the Agent to modify the existing tunnel property of the existing 1974 Mobility-Context to delete the tunnel information. Upon reception of 1975 the Configure message, the Agent removes the tunnel configuration and 1976 responds to the Client (2). Per [RFC5213], the PBA is sent back 1977 immediately after the PBA is received. 1979 If no valid PBA is received after the expiration of the 1980 MinDelayBeforeBCEDelete timer (see [RFC5213]), the LMA-C will send a 1981 Configure (3) message with a deletion request for the Context. Upon 1982 reception of the message, the Agent deletes the tunnel and route on 1983 the DPN and responds to the Client (4). 1985 When a multi-DPN Agent is used the DPN list permits several DPNs to 1986 be provisioned in a single message for the single Mobility-Conext. 1988 +-----------+ +-------+ +---------+ 1989 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1990 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN1 | 1991 +------+ +------+ +-----+-------+ +-------+ +---------+ 1992 [MN attach] | | | | 1993 |-------------PBU----->| | | 1994 | | |---(1)--Configure-------->| | 1995 | | "configure" : { |--tun1 up->| 1996 | | "client-identifier" : 0, | | 1997 | | "operation-id" : 0, | | 1998 | | "edit" : [ |--tc qos-->| 1999 | | "edit-id" : 0, | | 2000 | | "edit-type" : "create", | | 2001 | | "target" : "mobility-context", | 2002 | | "value" : { | 2003 | | "mobility-context-key" : "ctxt1", | 2004 | | "delegating-ip-prefix" : [ ], | 2005 | | "dpn" : "[ { | 2006 | | "dpn-key" : "DPN1", | 2007 | | "service-data-flow" : [ 2008 | | "identifier" : 0, 2009 | | "flow-settings" : [ 2010 | | ... 2012 | | {"policy-key" : "dl-tunnel-with-qos", 2013 | | "qos-template" : , 2014 | | ... 2015 | | "tunnel" :
    }, 2016 | | {"policy-key" : "ul-tunnel", 2017 | | ... 2018 | | "tunnel" :
      } ] 2019 | | "dpn-key" : "DPN2", | 2020 | | "service-data-flow" : [ 2021 | | "identifier" : 0, 2022 | | "flow-settings" : [ 2023 | | ... 2024 | | {"policy-key" : "dl-tunnel-with-qos", 2025 | | "qos-template" : , 2026 | | ... 2027 | | "tunnel" :
      }, 2028 | | {"policy-key" : "ul-tunnel", 2029 | | ... 2030 | | "tunnel" :
        } ] 2031 | | } ] } ] } | | 2032 | | | | | 2033 | | |<---(2)- Response --------| | 2034 | | | { |-route add>| 2035 | | | "agent-id" : "agent1"," | | 2036 | | | "operation-id" : 3, | | 2037 | | | "result-status" : "ok", | | 2038 | | | "notify-follows" : "true", | 2039 | | | "edit-status" : [ | | 2040 | | | "edit-id" : 0, | | 2041 | | | "edit-status" : "ok" | | 2042 | | | ] } | | 2043 | | | | | 2044 |<------------PBA------| | | 2045 | | | | | 2046 | +----+ | | | 2047 | |Edge| | | | 2048 | |DPN2| | | | 2049 | +----+ | | | 2050 | |<---------------------- tun1 up -------------| | 2051 | |<---------------------- tc qos --------------| | 2052 | |<---------------------- route add -----------| | 2053 | | | | | 2054 | | |<(3) Configure-Result- | | 2055 | | | Notification | | 2056 | | | { |-route add>| 2057 | | | "agent-id" : "agent1"," | | 2058 | | | "operation-id" : 3, | | 2059 | | | "result-status" : "ok", | | 2060 | | | "notify-follows" : "true", | 2061 | | | "edit-status" : [ | | 2062 | | | "edit-id" : 0, | | 2063 | | | "edit-status" : "ok" | | 2064 | | | ] } | | 2065 | | | | | 2066 | | | | | 2068 Figure 24: Exemplary Message Sequence for Multi-DPN Agent 2070 Figure 24 shows how the first 2 messages in Figure 22 are supported 2071 when a multi-DPN Agent communicates with both Anchor DPN1 and Edge 2072 DPN2. In such a case, the FPC Client sends the downlink and uplink 2073 for both DPNs in the DPN Reference List of the same Mobility-Context. 2074 Message 1 shows the DPN Set with all entries. Each entry identifies 2075 the DPN. 2077 The Agent responds with an OK and Notify-Follows indication while it 2078 simultaneoulsy provisions both DPNs. Upon successful completion, the 2079 Agent responds to the Client with a Configuration-Result-Notification 2080 indicating the operation status. 2082 5.2.2. Policy And Mobility on the Agent 2084 A Client may build Policy and Topology using Configure messages. 2086 The Client may add, modify or delete many DPN Policies as DPN Policy 2087 Expressions and Mobility-Contexts in a single FPC message. This 2088 includes linking Mobility-Contexts to DPN Policies as well as 2089 creating the Policy, Rules Actions and Descriptors. As example, a 2090 Rule which performs re-writing of an arriving packet's destination IP 2091 address from IP_A to IP_B matching an associated Descriptor, can be 2092 enforced in the Data-Plane via an Agent to implicitly consider 2093 matching arriving packet's source IP address against IP_B and re- 2094 write the source IP address to IP_A. 2096 Figure 25 illustrates the generic policy configuration model as used 2097 between a FPC Client and a FPC Agent. 2099 Descriptor_1 -+ +- Action_1 2100 | | 2101 Descriptor_2 -+----+- Action_2 2102 +-----------+ 2103 /Precendent#/--------+ 2104 +----------+ | 2105 | 2106 Descriptor_3 -+ +- Action_3 +- 2107 | | | ^ 2108 Descriptor_4 -+----+- Action_4 | | 2109 +-----------+ | | 2110 /Precendent#/--------+ | 2111 +----------+ | 2112 2114 +---------------------+ +----------------------+ 2115 | Bind 1..M traffic | | Bind 1..N traffic | 2116 | Descriptors to | --> | treatment actions | 2117 | to a Policy and | | to a Policy and | 2118 | Configurable-Policy | | Configurable-Policy | 2119 +---------------------+ +----------------------+ 2121 | | 2122 +-------------- Data-Plane Rule ------------------+ 2124 Figure 25: Structure of Configurable Policies 2126 As depicted in Figure 25, the DPN Settings represents the anchor of 2127 Rules through the Policy / Rule hierarchy. A Client and Agent use 2128 the identifier of the associated Policy to directly access the Rule 2129 and perform modifications of traffic Descriptors or Action 2130 references. Arriving packets are matched against traffic according 2131 to Rule precedence and Descriptors. If a Rule is applicable the 2132 packet is treated according to the ordered Action values. 2134 A Client associates a Precedence value for the Rule's Descriptors, to 2135 allow unambiguous traffic matching on the Data-Plane. 2137 Figure 26 illustrates the generic context configuration model as used 2138 between a Client and a Agent. 2140 2141 ^ 2142 | 2143 <--- 2144 ^ 2145 | 2146 | 2147 ^ | 2148 | | 2149 <--- 2151 +-------------------+ +---------------------+ 2152 | Bind 1..M traffic | | Bind 1..N traffic | 2153 | selectors to | --> | treatment / qos | 2154 | a Context | | actions to a | 2155 | | | Context | 2156 +-------------------+ +---------------------+ 2158 | | 2159 +-------------- Data-Plane Rule ------------------+ 2161 Figure 26: Mobility Context Heirarchy 2163 The figure Figure 26 represents a mobility session hierarchy. A 2164 Client and Agent directly assigns values such as downlink traffic 2165 descriptors, QoS information, etc. A Client and Agent use the 2166 context identifiers to access the descriptors, qos information, etc. 2167 to perform modifications. From the viewpoint of packet processing, 2168 arriving packets are matched against traffic Descriptors and 2169 processed according to the qos or other mobility profile related 2170 Actions specified in the Mobilty-Context's and Service-Data-Flow's' 2171 properties. If present, a Policy could contain tunnel information to 2172 encapsulate and forward the packet. 2174 A second Mobility-Context also references Mobility-Context-ID1 in the 2175 figure. Based upon the technology a property in a parent context 2176 (parent mobility-context-id reference) MAY be inherited by its 2177 descendants. This permits concise over the wire representation. 2178 When a Client deletes a parent Context all children are also deleted. 2180 6. Templates And Command Sets 2182 Configurations templates are shown below. 2184 6.1. Monitor Configuration Templates 2186 A periodic configuration specifies a time interval (ms) for 2187 reporting. 2189 A scheduled configuration specifies a time for reporting. 2191 A threshold configuration MUST have at least one hi or low threshold 2192 and MAY have both. 2194 A Target-Events-Configuration is a list of Events that, when 2195 generated by the Target, results in a Monitor notification. 2197 | 2198 +-[Monitor] 2199 ... 2200 | +-[Configuration] 2201 | | +-[Periodic-Configuration] 2202 | | | +-[(Unsigned32) Period:] 2203 ... 2204 | +-[Configuration] 2205 | | +-[Schedule-Configuration] 2206 | | | +-[(Unsigned32) Schedule:] 2207 ... 2208 | +-[Configuration] 2209 | | +-[Threshold-Configuration] 2210 | | | +-[(Unsigned32) Low] 2211 | | | +-[(Unsigned32) Hi] 2212 ... 2213 | +-[Configuration] 2214 | | +-[Target-Events-Configuration] 2215 | | | +-[(Unsigned32) Event-Key:] 2217 Figure 27: Monitor Configuration Templates 2219 6.2. Descriptor Templates 2221 A IP-Prefix-Template MUST have at least the To or From IP Prefix / 2222 Length populated. The IP Prefix specifies and Address and Length. 2224 The PMIP Traffic Selector template is mapped according to [RFC6088] 2226 The RFC 5777 Classifier is a structured version of common filter 2227 rules and follows the format specified in [RFC5777]. The Flow-Label, 2228 Flow-Label range and ECN-IP-Codepoint specified in [RFC7660] are 2229 added to the Descriptor as well. 2231 | 2232 +-[ip-prefix-template] 2233 | +-[(IP Prefix / Length) To-IP-Prefix] 2234 | +-[(IP Prefix / Length) From-IP-Prefix] 2235 ... 2236 +-[pmip-traffic-selector] 2237 | +-[(Enumerated - IPv4 or IPv6) ts-format] 2238 | +-[ipsec-spi-range] 2239 | | +-[ (ipsec-spi) start-spi: ] 2240 | | +-[ (ipsec-spi) end-spi ] 2241 | +-[source-port-range] 2242 | | +-[ (port-number) start-port: ] 2243 | | +-[ (port-number) end-port ] 2244 | +-[destination-port-range] 2245 | | +-[ (port-number) start-port: ] 2246 | | +-[ (port-number) end-port ] 2247 | +-[source-address-range-v4] 2248 | | +-[ (ipv4-address) start-address: ] 2249 | | +-[ (ipv4-address) end-address ] 2250 | +-[destination-address-range-v4] 2251 | | +-[ (ipv4-address) start-address: ] 2252 | | +-[ (ipv4-address) end-address ] 2253 | +-[ds-range] 2254 | | +-[ (dscp) start-ds: ] 2255 | | +-[ (dscp) end-ds ] 2256 | +-[protocol-range] 2257 | | +-[ (uint8) start-protocol: ] 2258 | | +-[ (uint8) end-protocol ] 2259 | +-[source-address-range-v6] 2260 | | +-[(ipv6-address) start-address: ] 2261 | | +-[(ipv6-address) end-address ] 2262 | +-[destination-address-range-v6] 2263 | | +-[(ipv6-address) start-address: ] 2264 | | +-[(ipv6-address) end-address ] 2265 | +-[flow-label-range] 2266 | | +-[(ipv6-flow-label) start-flow-label ] 2267 | | +-[(ipv6-flow-label) end-flow-label ] 2268 | +-[traffic-class-range] 2269 | | +-[ (dscp) start-traffic-class ] 2270 | | +-[ (dscp) end-traffic-class ] 2271 | +-[next-header-range] 2272 | | +-[ (uint8) start-next-header ] 2273 | | +-[ (uint8) end-next-header ] 2274 ... 2275 +-[rfc5777-classifier] 2276 | +-[Extensible: True] 2277 | +-[(uint8) protocol] 2278 | +-[(Enumerated - In/Out/Both) Direction] 2279 | +-[From-Spec] 2280 | | +-[(ip-address) IP-Address] 2281 | | +-[IP-Address-Range] 2282 | | | +-[(ip-address) IP-Address-Start] 2283 | | | +-[(ip-address) IP-Address-End] 2284 | | +-[IP-Address-Mask] 2285 | | | +-[(ip-address) IP-Address:] 2286 | | | +-[(Unsigned 32) IP-Bit-Mask-Width:] 2287 | | +-[(mac-address) MAC-Address] 2288 | | +-[MAC-Address-Mask] 2289 | | | +-[(mac-address) MAC-Address:] 2290 | | | +-[(mac-address) MAC-Address-Mask-Pattern:] 2291 | | +-[(eui64-address) EUI64-Address] 2292 | | +-[EUI64-Address-Mask] 2293 | | | +-[(eui64-address) EUI64-Address:] 2294 | | | +-[(eui64-address) EUI64-Address-Mask-Pattern:] 2295 | | +-[(Integer 32) Port] 2296 | | +-[Port-Range] 2297 | | | +-[(Integer 32) Port-Start] 2298 | | | +-[(Integer 32) Port-End] 2299 | | +-[(Boolean) Negated] 2300 | | +-[(Boolean) Use-Assigned-Address] 2301 | +-[To-Spec] (O) 2302 | | +-[(ip-address) IP-Address] 2303 | | +-[IP-Address-Range] 2304 | | | +-[(ip-address) IP-Address-Start] 2305 | | | +-[(ip-address) IP-Address-End] 2306 | | +-[IP-Address-Mask] 2307 | | | +-[(ip-address) IP-Address:] 2308 | | | +-[(Unsigned 32) IP-Bit-Mask-Width:] 2309 | | +-[(mac-address) MAC-Address] 2310 | | +-[MAC-Address-Mask] 2311 | | | +-[(mac-address) MAC-Address:] 2312 | | | +-[(mac-address) MAC-Address-Mask-Pattern:] 2313 | | +-[(eui64-address) EUI64-Address] 2314 | | +-[EUI64-Address-Mask] 2315 | | | +-[(eui64-address) EUI64-Address:] 2316 | | | +-[(eui64-address) EUI64-Address-Mask-Pattern:] 2317 | | +-[(Integer 32) Port] 2318 | | +-[Port-Range] 2319 | | | +-[(Integer 32) Port-Start] 2320 | | | +-[(Integer 32) Port-End] 2321 | | +-[(Boolean) Negated] 2322 | | +-[(Boolean) Use-Assigned-Address] 2323 | +-[(dscp) Diffserv-Code-Point] 2324 | +-[(Boolean) Fragmentation-Flag ~ False] 2325 | +-[IP-Option] 2326 | +-[TCP-Option] 2327 | +-[TCP-Flags] 2328 | +-[ICMP-Type] 2329 | +-[ETH-Option] 2330 | +-[ecn-ip-codepoint] 2331 | +-[(flowlabel) flow-label] 2332 | +-[flow-label-range] 2333 | | +-[(flowlabel) flow-label-start] 2334 | | +-[(flowlabel) flow-label-end] 2336 Figure 28: Descriptor Templates 2338 6.3. Tunnel Templates 2340 The Network Service Header is specified in [RFC8300]. 2342 The MPLS SR Stack is specified in 2343 [I-D.ietf-spring-segment-routing-mpls]. 2345 The IPv6 SR Stack is specified in 2346 [I-D.ietf-6man-segment-routing-header]. 2348 A tunnel MUST have the local-address or remote-address (or both) 2349 populated. 2351 For GRE, the gre-key MUST be present. 2353 For GTP (GPRS Tunneling Protocol), the following attributes MAY be 2354 present 2356 local tunnel endpoint identifier (teid) - MUST be present if 2357 local-address is nonempty 2359 remote tunnel endpoint identifier (teid) - MUST be present if 2360 remote-address is nonempty 2362 sequence-numbers-on - Indicates that sequence numbers will be used 2364 Tunnels can be used as Next Hop and Descriptor values. 2366 | 2367 +-[next-hop-template] 2368 | +-[Extensible: True] 2369 | +-[(ip-address) address] 2370 | +-[(mac-address) mac-address] 2371 | +-[(service-path-id) service-path] 2372 | +-[(mpls-label) mpls-path] 2373 | +-[(network service header) nsh] 2374 | +-[(Unsigned Integer) interface] 2375 | +-[(Unsigned 128) segment-identifier] 2376 | +-[(MPLS Stack) mpls-label-stack] 2377 | +-[(MPLS SR Stack) mpls-sr-stack] 2378 | +-[(IPv6 SR Stack) srv6-stack] 2379 | +-[tunnel-template] 2380 ... 2381 | 2382 +-[tunnel-template] 2383 | +-[Extensible: True] 2384 | +-[(address) local-address] 2385 | +-[(address) remote-address] 2386 | +-[mtu] 2387 | +-[(Enumeration - ipv4(0), ipv6(1), dual(2) payload_type:] 2388 | +-[(Enumeration - ip-in-ip(0), 2389 udp(1), gre(2), gtpv1(3), gtpv2(4)) type:] 2390 | +-[interface] 2391 | +-[next-hop] 2392 | +-[gre-key:] (type == gre) 2393 | +-[gtp-info] (type == gtpv1 or type == gtpv2 ) 2394 | | +-[(Unsigned 32) local-teid] 2395 | | +-[(Unsigned 32) remote-teid] 2396 | | +-[(Boolean) sequence-numbers-on] (type == gtpv1) 2398 Figure 29: Tunnel Templates 2400 6.4. Action Templates 2402 The following figure shows common next-hop (set next-hop) and tunnel 2403 templates for Actions. 2405 Drop action has no values. 2407 Rewrite uses a Descriptor to set the values of the packet. Exactly 2408 one Descriptor MUST be present. Only the Destination and Source port 2409 fields, if present, are used from the Descriptor. 2411 Copy-Forward creates a copy of the packet and then forwards it in 2412 accordance to the nexthop value. 2414 | 2415 +-[drop-template] 2416 ... 2417 | 2418 +-[rewrite-template] 2419 | +-[Extensible: True] 2420 | +-[ip-prefix-template] 2421 | +-[pmip-traffic-selector] 2422 | +-[rfc5777-classifier] 2423 ... 2424 | 2425 +-[copy-forward-template] 2426 | +-[Extensible: True] 2427 | +-[next-hop:] 2429 Figure 30: Action Templates 2431 6.5. Quality of Service Action Templates 2433 PMIP QoS is specified in [RFC7222]. 2435 | 2436 +-[qos-template] 2437 | +-[Extensible: True] 2438 | +-[(dscp) trafficclass] 2439 | +-[pmip-qos] 2440 | | +-[(Unsigned 32) per-mn-agg-max-dl] 2441 | | +-[(Unsigned 32) per-mn-agg-max-ul] 2442 | | +-[per-session-agg-max-dl] 2443 | | | +-[(Unsigned 32) max-rate:] 2444 | | | +-[(Boolean) service-flag:] 2445 | | | +-[(Boolean) exclude-flag:] 2446 | | +-[per-session-agg-max-ul] 2447 | | | +-[(Unsigned 32) max-rate:] 2448 | | | +-[(Boolean) service-flag:] 2449 | | | +-[(Boolean) exclude-flag:] 2450 | | +-[allocation-retention-priority] 2451 | | | +-[(Unsigned 8) prioirty-level:] 2452 | | | +-[(Enumeration) premption-capability:] 2453 | | | +-[(Enumeration) premption-vulnerability:] 2454 | | +-[(Unsigned 32) agg-max-dl] 2455 | | +-[(Unsigned 32) agg-max-ul] 2456 | | +-[(Unsigned 32) gbr-dl] 2457 | | +-[(Unsigned 32) gbr-ul] 2459 Figure 31: QoS Templates 2461 6.6. PMIP Command-Set 2463 The following Command Set values are supported for IETF PMIP. 2465 o assign-ip - Assign the IP Address for the mobile session. 2467 o assign-dpn - Assign the Dataplane Node. 2469 o session - Assign values for the Session Level. 2471 o uplink - Command applies to uplink. 2473 o downlink - Command applies to downlink. 2475 6.7. 3GPP Specific Templates and Command-Set 2477 3GPP support is optional and detailed in this section. The following 2478 acronyms are used: 2480 APN-AMBR: Access Point Name Aggregate Maximum Bit Rate 2482 UE-AMBR: User Equipment Aggregate Maximum Bit Rate 2484 QCI: QoS Class Identifier 2486 EBI: EPS Bearer Identity 2488 LBI: Linked Bearer Identity 2490 IMSI: International Mobile Subscriber Identity 2492 TFT: Traffic Flow Template (TFT) 2494 Generally, 3GPP QoS values should use the qos-template. Note: User 2495 Equipment Aggregate Maximum Bit Rate (UE-AMBR) maps to the per-mn- 2496 agg-max-dl and per-mn-agg-max-ul. 2498 | 2499 +-[ MN-Policy-Template ] 2500 | +-[(Unsigned 64) imsi:] 2501 ... 2502 +-[tunnel-template] 2503 | +-[Extensible: True] 2504 | +-[(unsigned 4) ebi:] 2505 | +-[(unsigned 4) lbi] 2506 ... 2507 +-[qos-template] 2508 | +-[Extensible: True] 2509 | +-[(unsigned 4) qos-class-identifier] 2510 | +-[(Unsigned 32) ue-agg-max-bitrate] 2511 | +-[(Unsigned 32) apn-agg-max-bitrate] 2512 ... 2514 Figure 32: 3GPP Mobility Templates 2516 | 2517 +-[ packet-filter ] 2518 | +-[Extensible: True] 2519 | +-[(Unsigned 8) identifier:] 2520 | +-[Contents:] 2521 | | +-[(ip-address) ipv4-ipv6-local] 2522 | | +-[(ipv6-prefix) ipv6-prefix-local] 2523 | | +-[(ip-address) ipv4-ipv6-remote] 2524 | | +-[(ipv6-prefix) ipv6-prefix-remote] 2525 | | +-[(Unsigned 8) protocol-next-header] 2526 | | +-[(Unsigned 16) local-port] 2527 | | +-[local-port-range] 2528 | | | +-[(Unsigned 16) local-port-lo] 2529 | | | +-[(Unsigned 16) local-port-hi] 2530 | | +-[(Unsigned 16) remote-port] 2531 | | +-[remote-port-range] 2532 | | | +-[(Unsigned 16) remote-port-lo] 2533 | | | +-[(Unsigned 16) remote-port-hi] 2534 | | +-[(Unsigned 32) sec-parameter-index] 2535 | | +-[(dscp) traffic-class] 2536 | | +-[traffic-class-range] 2537 | | | +-[(dscp) traffic-class-lo] 2538 | | | +-[(dscp) traffic-class-hi] 2539 | | +-[(dscp) flow-label] 2540 ... 2542 Figure 33: 3GPP Packet Filter Template (Descriptor) 2544 The following Command Set values are supported for 3GPP. 2546 o assign-ip - Assign the IP Address for the mobile session. 2548 o assign-fteid-ip - Assign the Fully Qualified TEID (F-TEID) LOCAL 2549 IP address. 2551 o assign-fteid-teid - Assign the Fully Qualified TEID (F-TEID) LOCAL 2552 TEID. 2554 o session - Assign values for the Session Level. When this involves 2555 'assign-fteid-ip' and 'assign-fteid-teid', the values are part of 2556 the default bearer. 2558 o uplink - Command applies to uplink. 2560 o downlink - Command applies to downlink. 2562 o assign-dpn - Assign the Dataplane Node. 2564 7. Implementation Status 2566 Three FPC Agent implementations have been made to date. The first 2567 was based upon Version 03 of the draft and followed Model 1. The 2568 second follows Version 04 of the document. Both implementations were 2569 OpenDaylight plug-ins developed in Java by Sprint. Version 03 was 2570 known as fpcagent and version 04's implementation is simply referred 2571 to as 'fpc'. A third has been devloped on an ONOS Controller for use 2572 in MCORD projects. 2574 fpcagent's intent was to provide a proof of concept for FPC Version 2575 03 Model 1 in January 2016 and research various errors, corrections 2576 and optimizations that the Agent could make when supporting multiple 2577 DPNs. 2579 As the code developed to support OpenFlow and a proprietary DPN from 2580 a 3rd party, several of the advantages of a multi-DPN Agent became 2581 obvious including the use of machine learning to reduce the number of 2582 Flows and Policy entities placed on the DPN. This work has driven 2583 new efforts in the DIME WG, namely Diameter Policy Groups 2584 [I-D.bertz-dime-policygroups]. 2586 A throughput performance of tens per second using various NetConf 2587 based solutions in OpenDaylight made fpcagent undesirable for call 2588 processing. The RPC implementation improved throughput by an order 2589 of magnitude but was not useful based upon FPC's Version 03 design 2590 using two information models. During this time the features of 2591 version 04 and its converged model became attractive and the fpcagent 2592 project was closed in August 2016. fpcagent will no longer be 2593 developed and will remain a proprietary implementation. 2595 The learnings of fpcagent has influenced the second project, fpc. 2596 Fpc is also an OpenDaylight project but is an open source release as 2597 the Opendaylight FpcAgent plugin (https://wiki.opendaylight.org/view/ 2598 Project_Proposals:FpcAgent). This project is scoped to be a fully 2599 compliant FPC Agent that supports multiple DPNs including those that 2600 communicate via OpenFlow. The following features present in this 2601 draft and others developed by the FPC development team have already 2602 led to an order of magnitude improvement. 2604 Migration of non-realtime provisioning of entities such as 2605 topology and policy allowed the implementation to focus only on 2606 the rpc. 2608 Using only 5 messages and 2 notifications has also reduced 2609 implementation time. 2611 Command Sets, an optional feature in this specification, have 2612 eliminated 80% of the time spent determining what needs to be 2613 done with a Context during a Create or Update operation. 2615 Op Reference is an optional feature modeled after video delivery. 2616 It has reduced unnecessary cache lookups. It also has the 2617 additional benefit of allowing an Agent to become cacheless and 2618 effectively act as a FPC protocol adapter remotely with multi-DPN 2619 support or colocated on the DPN in a single-DPN support model. 2621 Multi-tenant support allows for Cache searches to be partitioned 2622 for clustering and performance improvements. This has not been 2623 capitalized upon by the current implementation but is part of the 2624 development roadmap. 2626 Use of Contexts to pre-provision policy has also eliminated any 2627 processing of Ports for DPNs which permitted the code for 2628 CONFIGURE and CONF_BUNDLE to be implemented as a simple nested 2629 FOR loops (see below). 2631 Initial v04 performance results without code optimizations or tuning 2632 allow 2-5K FPC Contexts processed per second on a 2013 Mac laptop. 2633 This results in 2x the number of transactions on the southbound 2634 interface to a proprietary DPN API on the same machine. 2636 Current v04 performance results without code optimizations or tuning 2637 allow 1-2K FPC Contexts processed per second on a 2013 Mac laptop. 2638 This results in 2x the number of transactions on the southbound 2639 interface to a proprietary DPN API on the same machine. 2641 fpc currently supports the following: 2643 1 proprietary DPN API 2645 Policy and Topology as defined in this 2646 specification using OpenDaylight North Bound 2647 Interfaces such as NetConf and RestConf 2649 CONFIG and CONF_BUNDLE (all operations) 2651 DPN assignment, Tunnel allocations and IPv4 2652 address assignment by the Agent or Client. 2654 Immediate Response is always an 2655 OK_NOTIFY_FOLLOWS. 2657 assignment system (receives rpc call): 2658 perform basic operation integrity check 2659 if CONFIG then 2660 goto assignments 2661 if assignments was ok then 2662 send request to activation system 2663 respond back to client with assignment data 2664 else 2665 send back error 2666 end if 2667 else if CONF_BUNDLE then 2668 for each operation in bundles 2669 goto assignments 2670 if assignments was ok then 2671 hold onto data 2672 else 2673 return error with the assignments that occurred in 2674 prior operations (best effort) 2675 end if 2676 end for 2677 send bundles to activation systems 2678 end if 2680 assignments: 2681 assign DPN, IPv4 Address and/or tunnel info as required 2682 if an error occurs undo all assignments in this operation 2683 return result 2685 activation system: 2686 build cache according to op-ref and operation type 2687 for each operation 2688 for each Context 2689 for each DPN / direction in Context 2690 perform actions on DPN according to Command Set 2691 end for 2692 end for 2693 end for 2694 commit changes to in memory cache 2695 log transaction for tracking and notification 2696 (CONFIG_RESULT_NOTIFY) 2698 Figure 34: fpc pseudo code 2700 For further information please contact Lyle Bertz who is also a co- 2701 author of this document. 2703 NOTE: Tenant support requires binding a Client ID to a Tenant ID (it 2704 is a one to many relation) but that is outside of the scope of this 2705 specification. Otherwise, the specification is complete in terms of 2706 providing sufficient information to implement an Agent. 2708 8. Security Considerations 2710 Detailed protocol implementations for DMM Forwarding Policy 2711 Configuration must ensure integrity of the information exchanged 2712 between an FPC Client and an FPC Agent. Required Security 2713 Associations may be derived from co-located functions, which utilize 2714 the FPC Client and FPC Agent respectively. 2716 The YANG modules defined in this memo is designed to be accessed via 2717 the NETCONF [RFC6241] or RESTCONF [RFC8040] protocol. The lowest 2718 NETCONF layer is the secure transport layer and the mandatory-to- 2719 implement secure transport is SSH [RFC6242]. 2721 The information model defined in the memo is designed to be access by 2722 protocols specified in extensions to this document or, if using the 2723 YANG modules, as described above. 2725 There are a number of data nodes defined which are 2726 writable/creatable/deletable. These data nodes may be considered 2727 sensitive or vulnerable in some network environments. Write 2728 operations (e.g., a NETCONF edit-config) to these data nodes without 2729 proper protection can have a negative effect on network operations. 2730 These are the subtrees and data nodes and their sensitivity/ 2731 vulnerability: 2733 Nodes under the Policy tree provide generic policy enforcement and 2734 traffic classification. They can be used to block or permit 2735 traffic. If this portion of the model was to be compromised it 2736 may be used to block, identify or permit traffic that was not 2737 intended by the Tenant or FPC CLient. 2739 Nodes under the Topology tree provide definition of the Tenant's 2740 forwarding topology. Any compromise of this information will 2741 provide topology information that could be used for subsequent 2742 attack vectors. Removal of topology can limit services. 2744 Mobility-Context provides runtime only and manipulated by remote 2745 procedure calls. The unwanted deletion or removal of such 2746 information would deny users service or provide services to 2747 unauthorized parties. 2749 Some of the readable data nodes defined may be considered sensitive 2750 or vulnerable in some network environments. It is thus important to 2751 control read access (e.g., via get, get-config, or notification) to 2752 these data nodes. These are the subtrees and data nodes and their 2753 sensitivity/vulnerability: 2755 IP address assignments in the Mobility-Context along with their 2756 associated tunnel configurations/identifiers (from the FPC base 2757 module) 2759 Internaional Mobile Subscriber Identity (IMSI) and bearer 2760 identifiers in the Context when using the FPC base model 2762 Some of the RPC operations defined may be considered sensitive or 2763 vulnerable in some network environments. It is thus important to 2764 control access to these operations. These are the operations and 2765 their sensitivity/vulnerability: 2767 Configure sends Mobility-Context information which can include 2768 information of a sensitive or vulnerable nature in some network 2769 environments as described above. 2771 Monitor related RPC operations do not specicially provide 2772 sensitive or vulnerable information but care must be taken by 2773 users to avoid identifier values that expose sensitive or 2774 vulnerable information. 2776 Notications MUST be treated with same level of protection and 2777 scrutiny as the operations they correspond to. For example, a 2778 Configure-Result notification provides the same information that 2779 is sent as part of the input and output of the Configure RPC 2780 operations. 2782 General usage of FPC MUST consider the following: 2784 FPC Naming Section 4.5 permits arbirtrary string values but a 2785 users MUST avoid placing sensitive or vulnerable information in 2786 those values. 2788 Policies that are very narrow and permit the identification of 2789 specific traffic, e.g. that of a single user, SHOULD be avoided. 2791 9. IANA Considerations 2793 This document registers six URIs in the "IETF XML Registry" 2794 [RFC3688]. Following the format in RFC 3688, the following 2795 registrations have been made. 2797 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc 2798 Registrant Contact: The DMM WG of the IETF. 2799 XML: N/A, the requested URI is an XML namespace. 2801 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos 2802 Registrant Contact: The DMM WG of the IETF. 2803 XML: N/A, the requested URI is an XML namespace. 2805 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-traffic-selector-types 2806 Registrant Contact: The DMM WG of the IETF. 2807 XML: N/A, the requested URI is an XML namespace. 2809 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-settingsext 2810 Registrant Contact: The DMM WG of the IETF. 2811 XML: N/A, the requested URI is an XML namespace. 2813 URI: urn:ietf:params:xml:ns:yang:ietf-diam-trafficclassifier 2814 Registrant Contact: The DMM WG of the IETF. 2815 XML: N/A, the requested URI is an XML namespace. 2817 This document registers the following YANG modules in the "YANG 2818 Module Names" registry [RFC6020]. 2820 name: ietf-dmm-fpc 2821 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc 2822 prefix: fpc 2823 reference: TBD1 2825 name: ietf-dmm-pmip-qos 2826 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos 2827 prefix: qos-pmip 2828 reference: TBD2 2830 name: ietf-dmm-traffic-selector-types 2831 namespace: urn:ietf:params:xml:ns:yang: 2832 ietf-dmm-traffic-selector-types 2833 prefix: traffic-selectors 2834 reference: TBD3 2836 name: ietf-dmm-fpc-settingsext 2837 namespace: urn:ietf:params:xml:ns:yang: 2838 ietf-dmm-fpc-settingsext 2839 prefix: fpcbase 2840 reference: TBD4 2842 name: ietf-diam-trafficclassifier 2843 namespace: urn:ietf:params:xml:ns:yang: 2844 ietf-diam-trafficclassifier 2845 prefix: diamclassifier 2846 reference: TBD5 2848 10. Work Team Participants 2850 Participants in the FPSM work team discussion include Satoru 2851 Matsushima, Danny Moses, Sri Gundavelli, Marco Liebsch, Pierrick 2852 Seite, Alper Yegin, Carlos Bernardos, Charles Perkins and Fred 2853 Templin. 2855 11. References 2857 11.1. Normative References 2859 [I-D.ietf-6man-segment-routing-header] 2860 Previdi, S., Filsfils, C., Raza, K., Dukes, D., Leddy, J., 2861 Field, B., daniel.voyer@bell.ca, d., 2862 daniel.bernier@bell.ca, d., Matsushima, S., Leung, I., 2863 Linkova, J., Aries, E., Kosugi, T., Vyncke, E., Lebrun, 2864 D., Steinberg, D., and R. Raszuk, "IPv6 Segment Routing 2865 Header (SRH)", draft-ietf-6man-segment-routing-header-08 2866 (work in progress), January 2018. 2868 [I-D.ietf-spring-segment-routing-mpls] 2869 Bashandy, A., Filsfils, C., Previdi, S., Decraene, B., 2870 Litkowski, S., and R. Shakir, "Segment Routing with MPLS 2871 data plane", draft-ietf-spring-segment-routing-mpls-12 2872 (work in progress), February 2018. 2874 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2875 Requirement Levels", BCP 14, RFC 2119, 2876 DOI 10.17487/RFC2119, March 1997, 2877 . 2879 [RFC5777] Korhonen, J., Tschofenig, H., Arumaithurai, M., Jones, M., 2880 Ed., and A. Lior, "Traffic Classification and Quality of 2881 Service (QoS) Attributes for Diameter", RFC 5777, 2882 DOI 10.17487/RFC5777, February 2010, 2883 . 2885 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 2886 the Network Configuration Protocol (NETCONF)", RFC 6020, 2887 DOI 10.17487/RFC6020, October 2010, 2888 . 2890 [RFC6088] Tsirtsis, G., Giarreta, G., Soliman, H., and N. Montavont, 2891 "Traffic Selectors for Flow Bindings", RFC 6088, 2892 DOI 10.17487/RFC6088, January 2011, 2893 . 2895 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2896 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2897 . 2899 [RFC8300] Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed., 2900 "Network Service Header (NSH)", RFC 8300, 2901 DOI 10.17487/RFC8300, January 2018, 2902 . 2904 11.2. Informative References 2906 [I-D.bertz-dime-policygroups] 2907 Bertz, L. and M. Bales, "Diameter Policy Groups and Sets", 2908 draft-bertz-dime-policygroups-05 (work in progress), 2909 December 2017. 2911 [I-D.ietf-dmm-deployment-models] 2912 Gundavelli, S. and S. Jeon, "DMM Deployment Models and 2913 Architectural Considerations", draft-ietf-dmm-deployment- 2914 models-03 (work in progress), November 2017. 2916 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2917 DOI 10.17487/RFC3688, January 2004, 2918 . 2920 [RFC5213] Gundavelli, S., Ed., Leung, K., Devarapalli, V., 2921 Chowdhury, K., and B. Patil, "Proxy Mobile IPv6", 2922 RFC 5213, DOI 10.17487/RFC5213, August 2008, 2923 . 2925 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2926 and A. Bierman, Ed., "Network Configuration Protocol 2927 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2928 . 2930 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2931 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2932 . 2934 [RFC7222] Liebsch, M., Seite, P., Yokota, H., Korhonen, J., and S. 2935 Gundavelli, "Quality-of-Service Option for Proxy Mobile 2936 IPv6", RFC 7222, DOI 10.17487/RFC7222, May 2014, 2937 . 2939 [RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J. 2940 Korhonen, "Requirements for Distributed Mobility 2941 Management", RFC 7333, DOI 10.17487/RFC7333, August 2014, 2942 . 2944 [RFC7660] Bertz, L., Manning, S., and B. Hirschman, "Diameter 2945 Congestion and Filter Attributes", RFC 7660, 2946 DOI 10.17487/RFC7660, October 2015, 2947 . 2949 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2950 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2951 . 2953 [RFC8072] Bierman, A., Bjorklund, M., and K. Watsen, "YANG Patch 2954 Media Type", RFC 8072, DOI 10.17487/RFC8072, February 2955 2017, . 2957 Appendix A. YANG Data Model for the FPC protocol 2959 This section provides a type mapping for FPC structures in YANG. 2960 When being mapped to a specific information such as YANG the data 2961 type MAY change. 2963 L-Keys for Actions, Descriptors, Rules, Policies, DPNs, Domains and 2964 Mobility-Contexts are specified as FPC-Identity which follows rules 2965 according to Section 4.5. 2967 Action and Descriptor Templates are mapped as choices. This was done 2968 to ensure no duplication of Types and avoid use of identityref for 2969 typing. 2971 Policy Expressions are provided as default values. NOTE that a 2972 static value CANNOT be supported in YANG. 2974 Five modules are defined: 2976 o ietf-dmm-fpc (fpc) - Defines the base model and messages for FPC 2977 that are meant to be static in FPC. 2979 o ietf-dmm-fpc-settingsext An FPC module that defines the 2980 information model elements that are likely to be extended in FPC. 2982 o ietf-pmip-qos (pmip-qos) - Defines proxy mobile IPv6 QoS 2983 parameters per RFC 7222 2985 o ietf-trafficselectors-types (traffic-selectors) - Defines Traffic 2986 Selectors per [RFC6088] 2988 o ietf-diam-trafficclassifier (diamclassifier) - Defines the 2989 Classifier per [RFC5777] 2991 A.1. FPC YANG Model 2993 This module defines the information model and protocol elements 2994 specified in this document. 2996 This module references [RFC6991], [RFC8040] and the fpc-settingsext 2997 module defined in this document. 2999 file "ietf-dmm-fpc@2018-02-28.yang" 3000 module ietf-dmm-fpc { 3001 yang-version 1.1; 3002 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc"; 3003 prefix fpc; 3005 import ietf-inet-types { prefix inet; 3006 revision-date 2013-07-15; } 3007 import ietf-dmm-fpc-settingsext { prefix fpcbase; 3008 revision-date 2018-02-28; } 3009 import ietf-diam-trafficclassifier { prefix rfc5777; 3010 revision-date 2018-02-28; } 3011 import ietf-restconf { prefix rc; 3012 revision-date 2017-01-26; } 3013 import ietf-yang-patch { prefix ypatch; 3014 revision-date 2017-02-22; } 3016 organization "IETF Distributed Mobility Management (DMM) 3017 Working Group"; 3019 contact 3020 "WG Web: 3021 WG List: 3023 WG Chair: Dapeng Liu 3024 3026 WG Chair: Sri Gundavelli 3027 3029 Editor: Satoru Matsushima 3030 3032 Editor: Lyle Bertz 3033 "; 3035 description 3036 "This module contains YANG definition for 3037 Forwarding Policy Configuration Protocol (FPCP). 3039 Copyright (c) 2016 IETF Trust and the persons identified as the 3040 document authors. All rights reserved. 3042 This document is subject to BCP 78 and the IETF Trust's Legal 3043 Provisions Relating to IETF Documents 3044 (http://trustee.ietf.org/license-info) in effect on the date of 3045 publication of this document. Please review these documents 3046 carefully, as they describe your rights and restrictions with 3047 respect to this document. Code Components extracted from this 3048 document must include Simplified BSD License text as described 3049 in Section 4.e of the Trust Legal Provisions and are provided 3050 without warranty as described in the Simplified BSD License."; 3052 revision 2018-02-28 { 3053 description "Version 10 updates."; 3054 reference "draft-ietf-dmm-fpc-cpdp-10"; 3055 } 3056 revision 2017-09-27 { 3057 description "Version 10 updates."; 3058 reference "draft-ietf-dmm-fpc-cpdp-09"; 3059 } 3060 revision 2017-07-22 { 3061 description "Version 08 updates."; 3062 reference "draft-ietf-dmm-fpc-cpdp-08"; 3063 } 3064 revision 2017-03-08 { 3065 description "Version 06 updates."; 3066 reference "draft-ietf-dmm-fpc-cpdp-06"; 3067 } 3068 revision 2016-08-03 { 3069 description "Initial Revision."; 3070 reference "draft-ietf-dmm-fpc-cpdp-05"; 3071 } 3073 //General Structures 3074 grouping templatedef { 3075 leaf extensible { 3076 type boolean; 3077 description "Indicates if the template is 3078 extensible"; 3079 } 3080 leaf-list mandatory-static-attributes { 3081 type string; 3082 description "Attribute (Name) that cannot change. 3083 If it has not been defined in the template it 3084 MUST NOT be present at all for the template 3085 to be valid."; 3086 } 3087 leaf entity-state { 3088 type enumeration { 3089 enum initial { 3090 description "Inital Configuration"; 3091 } 3092 enum partially-configured { 3093 description "Partial Configuration"; 3094 } 3095 enum configured { 3096 description "Confgured"; 3097 } 3098 enum active { 3099 description "Active"; 3100 } 3101 } 3102 default initial; 3103 description "Entity State"; 3104 } 3105 description "Teamplate Definition"; 3106 } 3107 typedef fpc-identity { 3108 type union { 3109 type uint32; 3110 type string; 3111 type instance-identifier; 3112 } 3113 description "FPC Identity"; 3114 } 3115 grouping index { 3116 leaf index { 3117 type uint16; 3118 description "Index"; 3119 } 3120 description "Index Value"; 3121 } 3123 // Policy Structures 3124 grouping descriptor-template-key { 3125 leaf descriptor-template-key { 3126 type fpc:fpc-identity; 3127 mandatory true; 3128 description "Descriptor Key"; 3129 } 3130 description "Descriptor-Template Key"; 3131 } 3132 grouping action-template-key { 3133 leaf action-template-key { 3134 type fpc:fpc-identity; 3135 mandatory true; 3136 description "Action Key"; 3137 } 3138 description "Action-Template Key"; 3139 } 3140 grouping rule-template-key { 3141 leaf rule-template-key { 3142 type fpc:fpc-identity; 3143 mandatory true; 3144 description "Rule Identifier"; 3145 } 3146 description "Rule Key"; 3147 } 3148 grouping policy-template-key { 3149 leaf policy-template-key { 3150 type fpc:fpc-identity; 3151 mandatory true; 3152 description "Rule Identifier"; 3153 } 3154 description "Rule Key"; 3155 } 3157 // Settings 3158 grouping policy-configuration { 3159 list policy-configuration { 3160 key index; 3161 leaf index { 3162 type uint16; 3163 description "Index used for reference"; 3164 } 3165 choice policy-setting { 3166 case descriptor-value { 3167 uses fpcbase:fpc-descriptor-value; 3168 description "Descriptor Value"; 3169 } 3170 case action-value { 3171 uses fpcbase:fpc-action-value; 3172 description "Action Value"; 3173 } 3174 description "Policy Attributes"; 3175 } 3176 description "Policy Configuration"; 3177 } 3178 description "Policy Configuration Value"; 3179 } 3181 // FPC Policy 3182 grouping policy-information-model { 3183 list action-template { 3184 key action-template-key; 3185 uses fpc:action-template-key; 3186 uses fpcbase:fpc-action-value; 3187 uses fpc:templatedef; 3188 description "Action Template"; 3189 } 3190 list descriptor-template { 3191 key descriptor-template-key; 3192 uses fpc:descriptor-template-key; 3193 uses fpcbase:fpc-descriptor-value; 3194 uses fpc:templatedef; 3195 description "Descriptor Template"; 3196 } 3197 list rule-template { 3198 key rule-template-key; 3199 uses fpc:rule-template-key; 3200 leaf descriptor-match-type { 3201 type enumeration { 3202 enum or { 3203 value 0; 3204 description "OR logic"; 3205 } 3206 enum and { 3207 value 1; 3208 description "AND logic"; 3209 } 3210 } 3211 default "and"; 3212 description "Type of Match (OR or AND) 3213 applied to the descriptor-configurations"; 3214 } 3215 list descriptor-configuration { 3216 key "descriptor-template-key"; 3217 uses fpc:descriptor-template-key; 3218 leaf direction { 3219 type rfc5777:direction-type; 3220 description "Direction"; 3221 } 3222 list attribute-expression { 3223 key index; 3224 uses fpc:index; 3225 uses fpcbase:fpc-descriptor-value; 3226 description "Descriptor Attributes"; 3227 } 3228 description "A set of Descriptor references"; 3229 } 3230 list action-configuration { 3231 key "action-order"; 3232 leaf action-order { 3233 type uint32; 3234 mandatory true; 3235 description "Action Execution Order"; 3236 } 3237 uses fpc:action-template-key; 3238 list attribute-expression { 3239 key index; 3240 uses fpc:index; 3241 uses fpcbase:fpc-action-value; 3242 description "Action Attributes"; 3243 } 3244 description "A set of Action references"; 3245 } 3246 uses fpc:templatedef; 3247 uses fpc:policy-configuration; 3248 description "Rule Template"; 3249 } 3250 list policy-template { 3251 key policy-template-key; 3252 uses fpc:policy-template-key; 3253 list rule-template { 3254 key "precedence"; 3255 unique "rule-template-key"; 3256 leaf precedence { 3257 type uint32; 3258 mandatory true; 3259 description "Rule Precedence"; 3260 } 3261 uses fpc:rule-template-key; 3262 description "Rule Entry"; 3263 } 3264 uses fpc:templatedef; 3265 uses fpc:policy-configuration; 3266 description "Policy Template"; 3267 } 3268 description "FPC Policy Structures"; 3269 } 3271 // Topology Information Model 3272 identity role { 3273 description "Role"; 3274 } 3275 grouping dpn-key { 3276 leaf dpn-key { 3277 type fpc:fpc-identity; 3278 description "DPN Key"; 3280 } 3281 description "DPN Key"; 3282 } 3283 grouping role-key { 3284 leaf role-key { 3285 type identityref { 3286 base "fpc:role"; 3287 } 3288 mandatory true; 3289 description "Access Technology Role"; 3290 } 3291 description "Access Technology Role key"; 3292 } 3293 grouping interface-key { 3294 leaf interface-key{ 3295 type fpc:fpc-identity; 3296 mandatory true; 3297 description "interface identifier"; 3298 } 3299 description "Interface Identifier key"; 3300 } 3301 identity interface-protocols { 3302 description "Protocol supported by the interface"; 3303 } 3304 identity features { 3305 description "Protocol features"; 3306 } 3308 // Settings 3309 grouping interface-settings { 3310 list interface-settings { 3311 key policy-template-key; 3312 uses fpc:policy-template-key; 3313 uses fpc:policy-configuration; 3314 description "Interface settings"; 3315 } 3316 description "Generic interface settings container"; 3317 } 3319 // Mobility Context 3320 grouping mobility-context { 3321 leaf mobility-context-key { 3322 type fpc:fpc-identity; 3323 mandatory true; 3324 description "Mobility Context Key"; 3325 } 3326 leaf-list delegating-ip-prefix { 3327 type inet:ip-prefix; 3328 description "IP Prefix"; 3329 } 3330 leaf parent-context { 3331 type fpc:fpc-identity; 3332 description "Parent Mobility Context"; 3333 } 3334 leaf-list child-context { 3335 type fpc:fpc-identity; 3336 description "Child Mobility Context"; 3337 } 3338 container mobile-node { 3339 leaf-list ip-address { 3340 type inet:ip-address; 3341 description "IP Address"; 3342 } 3343 leaf imsi { 3344 type fpcbase:imsi-type; 3345 description "IMSI"; 3346 } 3347 list mn-settings { 3348 key policy-template-key; 3349 uses fpc:policy-template-key; 3350 uses fpc:policy-configuration; 3351 description "MN Policy Cofiguration"; 3352 } 3353 description "Mobile Node"; 3354 } 3355 container domain { 3356 leaf domain-key { 3357 type fpc:fpc-identity; 3358 description "Domain Key"; 3359 } 3360 list domain-settings { 3361 key policy-template-key; 3362 uses fpc:policy-template-key; 3363 uses fpc:policy-configuration; 3364 description "MN Policy Cofiguration"; 3365 } 3366 description "Domain"; 3367 } 3368 list dpn { 3369 key dpn-key; 3370 uses fpc:dpn-key; 3371 list dpn-settings { 3372 key policy-template-key; 3373 uses fpc:policy-template-key; 3374 uses fpc:policy-configuration; 3375 description "DPN Policy Cofiguration"; 3377 } 3378 leaf role { 3379 type identityref { 3380 base "fpc:role"; 3381 } 3382 description "Role"; 3383 } 3384 list service-data-flow { 3385 key identifier; 3386 leaf identifier { 3387 type uint32; 3388 description "Generic Identifier"; 3389 } 3390 leaf service-group-key { 3391 type fpc:fpc-identity; 3392 description "Service Group Key"; 3393 } 3394 list interface { 3395 key interface-key; 3396 uses fpc:interface-key; 3397 description "interface assigned"; 3398 } 3399 list flow-settings { 3400 key policy-template-key; 3401 uses fpc:policy-template-key; 3402 uses fpc:policy-configuration; 3403 description "Flow Policy Cofiguration"; 3404 } 3405 description "Service Dataflow"; 3406 } 3407 description "DPN"; 3408 } 3409 description "Mobility Context"; 3410 } 3412 // Events, Probes & Notifications 3413 identity event-type { 3414 description "Base Event Type"; 3415 } 3416 typedef event-type-id { 3417 type uint32; 3418 description "Event ID Type"; 3419 } 3420 grouping monitor-key { 3421 leaf monitor-key { 3422 type fpc:fpc-identity; 3423 mandatory true; 3424 description "Monitor Key"; 3426 } 3427 description "Monitor Id"; 3428 } 3429 grouping target-value { 3430 leaf target { 3431 type string; 3432 description "target"; 3433 } 3434 description "Target Value"; 3435 } 3436 grouping monitor-config { 3437 uses fpc:templatedef; 3438 uses fpc:monitor-key; 3439 uses fpc:target-value; 3440 container binding-information { 3441 description "Placeholder for information helpful 3442 to binding the monitor ot the correct target"; 3443 } 3444 leaf deterrable { 3445 type boolean; 3446 description "Indicates reports related to this 3447 config can be delayed."; 3448 } 3449 choice configuration { 3450 mandatory true; 3451 leaf period { 3452 type uint32; 3453 description "Period"; 3454 } 3455 case threshold-config { 3456 leaf low { 3457 type uint32; 3458 description "low threshold"; 3459 } 3460 leaf hi { 3461 type uint32; 3462 description "high threshold"; 3463 } 3464 description "Threshold Config Case"; 3465 } 3466 leaf schedule { 3467 type uint32; 3468 description "Reporting Time"; 3469 } 3470 leaf-list event-identities { 3471 type identityref { 3472 base "fpc:event-type"; 3473 } 3474 description "Event Identities"; 3475 } 3476 leaf-list event-ids { 3477 type uint32; 3478 description "Event IDs"; 3479 } 3480 description "Event Config Value"; 3481 } 3482 description "Monitor Configuration"; 3483 } 3485 // Top Level Structures 3486 list tenant { 3487 key "tenant-key"; 3488 leaf tenant-key { 3489 type fpc:fpc-identity; 3490 description "Tenant Key"; 3491 } 3492 container mobility-information-model { 3493 list dpn { 3494 key dpn-key; 3495 uses fpc:dpn-key; 3496 leaf dpn-name { 3497 type string; 3498 description "DPN name"; 3499 } 3500 leaf dpn-resource-mapping-reference { 3501 type string; 3502 description "Reference to underlying 3503 DPN resource(s)"; 3504 } 3505 leaf-list domain-key { 3506 type fpc:fpc-identity; 3507 description "Domains"; 3508 } 3509 leaf-list service-group-key { 3510 type fpc:fpc-identity; 3511 description "Service Group"; 3512 } 3513 list interface { 3514 key "interface-key"; 3515 uses fpc:interface-key; 3516 leaf interface-name { 3517 type string; 3518 description "Interface Name"; 3519 } 3520 leaf-list roles { 3521 type identityref { 3522 base "fpc:role"; 3523 } 3524 description "Roles supported"; 3525 } 3526 leaf-list protocol { 3527 type identityref { 3528 base "interface-protocols"; 3529 } 3530 description "Supported protocols"; 3531 } 3532 uses fpc:interface-settings; 3533 description "DPN interfaces"; 3534 } 3535 list dpn-settings { 3536 key policy-template-key; 3537 uses fpc:policy-template-key; 3538 uses fpc:policy-configuration; 3539 description "DPN Policy Configuration"; 3540 } 3541 description "Set of DPNs"; 3542 } 3543 description "Mobility Information Model"; 3544 } 3545 container dpn-checkpoint { 3546 uses fpc:basename-info; 3547 description "DPN Checkpoint information"; 3548 } 3549 list service-group { 3550 key service-group-key; 3551 leaf service-group-key { 3552 type fpc:fpc-identity; 3553 mandatory true; 3554 description "Service Group Key"; 3555 } 3556 leaf service-group-name { 3557 type string; 3558 description "Service Group Name"; 3559 } 3560 list dpn { 3561 key "dpn-key role-key"; 3562 uses fpc:dpn-key; 3563 uses fpc:role-key; 3564 list referenced-interface { 3565 key interface-key; 3566 uses fpc:interface-key; 3567 leaf-list peer-service-group-key { 3568 type fpc:fpc-identity; 3569 description "Peer Service Group"; 3571 } 3572 description "Referenced Interface"; 3573 } 3574 description "DPN"; 3575 } 3576 list service-settings { 3577 key policy-template-key; 3578 uses fpc:policy-template-key; 3579 uses fpc:policy-configuration; 3580 description "Service Configuration"; 3581 } 3582 description "Service Group"; 3583 } 3584 container service-group-checkpoint { 3585 uses fpc:basename-info; 3586 description "Service Group Checkpoint 3587 information"; 3588 } 3589 container topology-information-model { 3590 list service-endpoint { 3591 key role-key; 3592 uses fpc:role-key; 3593 leaf role-name { 3594 type string; 3595 description "Role Name"; 3596 } 3597 leaf-list service-group-key { 3598 type fpc:fpc-identity; 3599 description "Service Group"; 3600 } 3601 list interface { 3602 key "dpn-key interface-key"; 3603 uses fpc:dpn-key; 3604 uses fpc:interface-key; 3605 leaf-list protocol { 3606 type identityref { 3607 base "interface-protocols"; 3608 } 3609 description "Supported protocols"; 3610 } 3611 leaf-list feature { 3612 type identityref { 3613 base "interface-protocols"; 3614 } 3615 description "Supported features"; 3616 } 3617 uses fpc:interface-settings; 3618 description "A DPN interface types"; 3620 } 3621 description "Set of DPN types"; 3622 } 3623 list domain { 3624 key domain-key; 3625 leaf domain-key { 3626 type fpc:fpc-identity; 3627 mandatory true; 3628 description "Domain Key"; 3629 } 3630 leaf domain-name { 3631 type string; 3632 description "Domain displayname"; 3633 } 3634 list domain-settings { 3635 key policy-template-key; 3636 uses fpc:policy-template-key; 3637 uses fpc:policy-configuration; 3638 description "Domain Cofiguration"; 3639 } 3640 description "List of Domains"; 3641 } 3642 uses fpc:basename-info; 3643 description "FPC Topology grouping"; 3644 } 3645 container policy-information-model { 3646 uses fpc:policy-information-model; 3647 uses fpc:basename-info; 3648 description "Policy"; 3649 } 3650 list mobility-context { 3651 key "mobility-context-key"; 3652 uses fpc:mobility-context; 3653 description "Mobility Context"; 3654 } 3655 list monitor { 3656 key monitor-key; 3657 uses fpc:monitor-config; 3658 description "Monitor"; 3659 } 3660 description "Tenant"; 3661 } 3663 typedef agent-identifier { 3664 type fpc:fpc-identity; 3665 description "Agent Identifier"; 3666 } 3667 typedef client-identifier { 3668 type fpc:fpc-identity; 3669 description "Client Identifier"; 3670 } 3671 grouping basename-info { 3672 leaf basename { 3673 type fpc:fpc-identity; 3674 description "Rules Basename"; 3675 } 3676 leaf base-checkpoint { 3677 type string; 3678 description "Checkpoint"; 3679 } 3680 description "Basename Information"; 3681 } 3683 // RPCs 3684 grouping client-id { 3685 leaf client-id { 3686 type fpc:client-identifier; 3687 mandatory true; 3688 description "Client Id"; 3689 } 3690 description "Client Identifier"; 3691 } 3692 grouping execution-delay { 3693 leaf execution-delay { 3694 type uint32; 3695 description "Execution Delay (ms)"; 3696 } 3697 description "Execution Delay"; 3698 } 3699 typedef ref-scope { 3700 type enumeration { 3701 enum none { 3702 value 0; 3703 description "no references"; 3704 } 3705 enum op { 3706 value 1; 3707 description "All references are intra-operation"; 3708 } 3709 enum bundle { 3710 value 2; 3711 description "All references in exist in bundle"; 3712 } 3713 enum storage { 3714 value 3; 3715 description "One or more references exist in 3716 storage."; 3717 } 3718 enum unknown { 3719 value 4; 3720 description "The location of the references 3721 are unknown."; 3722 } 3723 } 3724 description "Search scope for references in 3725 the operation."; 3726 } 3727 rpc configure { 3728 description "Configure RPC"; 3729 input { 3730 uses client-id; 3731 uses execution-delay; 3732 uses ypatch:yang-patch; 3733 } 3734 output { 3735 uses ypatch:yang-patch-status; 3736 } 3737 } 3738 augment "/configure/input/yang-patch/edit" { 3739 leaf op-ref-scope { 3740 type fpc:ref-scope; 3741 description "Reference Scope"; 3742 } 3743 uses fpcbase:instructions; 3744 description "yang-patch edit augments for 3745 configure rpc"; 3746 } 3747 grouping subsequent-edits { 3748 list subsequent-edit { 3749 key edit-id; 3750 ordered-by user; 3752 description "Edit list"; 3754 leaf edit-id { 3755 type string; 3756 description "Arbitrary string index 3757 for the edit."; 3758 } 3760 leaf operation { 3761 type enumeration { 3762 enum create { 3763 description "Create"; 3765 } 3766 enum delete { 3767 description "Delete"; 3768 } 3769 enum insert { 3770 description "Insert"; 3771 } 3772 enum merge { 3773 description "Merge"; 3774 } 3775 enum move { 3776 description "Move"; 3777 } 3778 enum replace { 3779 description "Replace"; 3780 } 3781 enum remove { 3782 description 3783 "Delete the target node if it currently 3784 exists."; 3785 } 3786 } 3787 mandatory true; 3788 description 3789 "The datastore operation requested"; 3790 } 3792 leaf target { 3793 type ypatch:target-resource-offset; 3794 mandatory true; 3795 description 3796 "Identifies the target data node"; 3797 } 3798 leaf point { 3799 when "(../operation = 'insert' or ../operation = 'move')" 3800 + "and (../where = 'before' or ../where = 'after')" { 3801 description 3802 "This leaf only applies for 'insert' or 'move' 3803 operations, before or after an existing entry."; 3804 } 3805 type ypatch:target-resource-offset; 3806 description 3807 "The absolute URL path for the data node"; 3808 } 3810 leaf where { 3811 when "../operation = 'insert' or ../operation = 'move'" { 3812 description 3813 "This leaf only applies for 'insert' or 'move' 3814 operations."; 3815 } 3816 type enumeration { 3817 enum before { 3818 description 3819 "Insert or move a data node before."; 3820 } 3821 enum after { 3822 description 3823 "Insert or move a data node after."; 3824 } 3825 enum first { 3826 description 3827 "Insert or move a data node so it becomes ordered 3828 as the first entry."; 3829 } 3830 enum last { 3831 description 3832 "Insert or move a data node so it becomes ordered 3833 as the last entry."; 3834 } 3835 } 3836 default last; 3837 description 3838 "Identifies where a data resource will be inserted 3839 or moved."; 3840 } 3842 anydata value { 3843 when "../operation = 'create' " 3844 + "or ../operation = 'merge' " 3845 + "or ../operation = 'replace' " 3846 + "or ../operation = 'insert'" { 3847 description 3848 "The anydata 'value' is only used for 'create', 3849 'merge', 'replace', and 'insert' operations."; 3850 } 3851 description 3852 "Value used for this edit operation."; 3853 } 3854 } 3855 description "Subsequent Edits"; 3856 } 3857 augment "/configure/output/yang-patch-status/edit-status/edit/" 3858 + "edit-status-choice/ok" { 3859 leaf notify-follows { 3860 type boolean; 3861 description "Notify Follows Indication"; 3862 } 3863 uses fpc:subsequent-edits; 3864 description "Configure output augments"; 3865 } 3867 grouping op-header { 3868 uses client-id; 3869 uses execution-delay; 3870 leaf op-id { 3871 type uint64; 3872 mandatory true; 3873 description "Operation Identifier"; 3874 } 3875 description "Common Operation header"; 3876 } 3877 grouping monitor-response { 3878 leaf op-id { 3879 type uint64; 3880 mandatory true; 3881 description "Operation Identifier"; 3882 } 3883 choice edit-status-choice { 3884 description 3885 "A choice between different types of status 3886 responses for each 'edit' entry."; 3887 leaf ok { 3888 type empty; 3889 description 3890 "This 'edit' entry was invoked without any 3891 errors detected by the server associated 3892 with this edit."; 3893 } 3894 case errors { 3895 uses rc:errors; 3896 description 3897 "The server detected errors associated with the 3898 edit identified by the same 'edit-id' value."; 3899 } 3900 } 3901 description "Monitor Response"; 3902 } 3904 // Common RPCs 3905 rpc reg_monitor { 3906 description "Used to register monitoring of parameters/events"; 3907 input { 3908 uses fpc:op-header; 3909 list monitors { 3910 key monitor-key; 3911 uses fpc:monitor-config; 3912 description "Monitor Configuration"; 3913 } 3914 } 3915 output { 3916 uses fpc:monitor-response; 3917 } 3918 } 3919 rpc dereg_monitor { 3920 description "Used to de-register monitoring of 3921 parameters/events"; 3922 input { 3923 uses fpc:op-header; 3924 list monitor { 3925 key monitor-key; 3926 uses fpc:monitor-key; 3927 min-elements 1; 3928 leaf send_data { 3929 type boolean; 3930 description "Indicates if NOTIFY with final data 3931 is desired upon deregistration"; 3932 } 3933 description "Monitor Identifier"; 3934 } 3935 } 3936 output { 3937 uses fpc:monitor-response; 3938 } 3939 } 3940 rpc probe { 3941 description "Probe the status of a registered monitor"; 3942 input { 3943 uses fpc:op-header; 3944 list monitor { 3945 key monitor-key; 3946 uses fpc:monitor-key; 3947 min-elements 1; 3948 description "Monitor"; 3949 } 3950 } 3951 output { 3952 uses fpc:monitor-response; 3953 } 3954 } 3956 // Notification Messages & Structures 3957 notification config-result-notification { 3958 uses ypatch:yang-patch-status; 3959 description "Configuration Result Notification"; 3960 } 3961 augment "/config-result-notification" { 3962 uses fpc:subsequent-edits; 3963 description "config-result-notificatio augment"; 3964 } 3966 identity notification-cause { 3967 description "Notification Cause"; 3968 } 3969 identity subscribed-event-occured { 3970 base "notification-cause"; 3971 description "Subscribed Event Occurence"; 3972 } 3973 identity low-threshold-crossed { 3974 base "notification-cause"; 3975 description "Subscribed Event Occurence"; 3976 } 3977 identity high-threshold-crossed { 3978 base "notification-cause"; 3979 description "Subscribed Event Occurence"; 3980 } 3981 identity periodic-report { 3982 base "notification-cause"; 3983 description "Periodic Report"; 3984 } 3985 identity scheduled-report { 3986 base "notification-cause"; 3987 description "Scheduled Report"; 3988 } 3989 identity probe { 3990 base "notification-cause"; 3991 description "Probe"; 3992 } 3993 identity deregistration-final-value { 3994 base "notification-cause"; 3995 description "Probe"; 3996 } 3997 identity monitoring-suspension { 3998 base "notification-cause"; 3999 description "Indicates monitoring suspension"; 4000 } 4001 identity monitoring-resumption { 4002 base "notification-cause"; 4003 description "Indicates that monitoring has resumed"; 4004 } 4005 identity dpn-available { 4006 base "notification-cause"; 4007 description "DPN Candidate Available"; 4008 } 4009 identity dpn-unavailable { 4010 base "notification-cause"; 4011 description "DPN Unavailable"; 4012 } 4013 notification notify { 4014 leaf notification-id { 4015 type uint32; 4016 description "Notification Identifier"; 4017 } 4018 leaf timestamp { 4019 type uint32; 4020 description "timestamp"; 4021 } 4022 list report { 4023 key monitor-key; 4024 uses fpc:monitor-key; 4025 min-elements 1; 4026 leaf trigger { 4027 type identityref { 4028 base "notification-cause"; 4029 } 4030 description "Notification Cause"; 4031 } 4032 choice value { 4033 case dpn-candidate-available { 4034 leaf node-id { 4035 type inet:uri; 4036 description "Topology URI"; 4037 } 4038 list supported-interface-list { 4039 key role-key; 4040 uses fpc:role-key; 4041 description "Support Intefaces"; 4042 } 4043 description "DPN Candidate Information"; 4044 } 4045 case dpn-unavailable { 4046 leaf dpn-id { 4047 type fpc:fpc-identity; 4048 description "DPN Identifier for DPN Unavailable"; 4049 } 4050 description "DPN Unavailable"; 4051 } 4052 anydata report-value { 4053 description "Any non integer report"; 4054 } 4055 description "Report Value"; 4056 } 4057 description "Report"; 4058 } 4059 description "Notify Message"; 4060 } 4061 } 4062 4064 A.2. YANG Models 4066 A.2.1. FPC YANG Settings and Extensions Model 4068 This module defines the base data elements in FPC that are likely to 4069 be extended. 4071 This module references [RFC6991], ietf-trafficselector-types and 4072 ietf-pmip-qos modules. 4074 file "ietf-dmm-fpc-settingsext@2018-02-28.yang" 4075 module ietf-dmm-fpc-settingsext { 4076 yang-version 1.1; 4077 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-settingsext"; 4078 prefix fpcbase; 4080 import ietf-inet-types { prefix inet; 4081 revision-date 2013-07-15; } 4082 import ietf-trafficselector-types { prefix traffic-selectors; 4083 revision-date 2018-02-28; } 4084 import ietf-yang-types { prefix ytypes; 4085 revision-date 2013-07-15; } 4086 import ietf-pmip-qos { prefix pmipqos; 4087 revision-date 2018-02-28; } 4088 import ietf-diam-trafficclassifier { prefix rfc5777; 4089 revision-date 2018-02-28; } 4091 organization "IETF Distributed Mobility Management (DMM) 4092 Working Group"; 4094 contact 4095 "WG Web: 4096 WG List: 4098 WG Chair: Dapeng Liu 4099 4101 WG Chair: Sri Gundavelli 4102 4104 Editor: Satoru Matsushima 4105 4107 Editor: Lyle Bertz 4108 "; 4110 description 4111 "This module contains YANG definition for 4112 Forwarding Policy Configuration Protocol(FPCP). 4114 It contains Settings defintions as well as Descriptor and 4115 Action extensions. 4117 Copyright (c) 2016 IETF Trust and the persons identified as the 4118 document authors. All rights reserved. 4120 This document is subject to BCP 78 and the IETF Trust's Legal 4121 Provisions Relating to IETF Documents 4122 (http://trustee.ietf.org/license-info) in effect on the date of 4123 publication of this document. Please review these documents 4124 carefully, as they describe your rights and restrictions with 4125 respect to this document. Code Components extracted from this 4126 document must include Simplified BSD License text as described 4127 in Section 4.e of the Trust Legal Provisions and are provided 4128 without warranty as described in the Simplified BSD License."; 4130 revision 2018-02-28 { 4131 description "Version updates."; 4132 reference "draft-ietf-dmm-fpc-cpdp-10"; 4133 } 4134 revision 2017-09-27 { 4135 description "Version 10 updates."; 4136 reference "draft-ietf-dmm-fpc-cpdp-10"; 4137 } 4138 revision 2017-07-22 { 4139 description "Version 08 updates."; 4140 reference "draft-ietf-dmm-fpc-cpdp-08"; 4141 } 4142 revision 2017-03-08 { 4143 description "Version 06 updates."; 4144 reference "draft-ietf-dmm-fpc-cpdp-06"; 4145 } 4146 revision 2016-08-03 { 4147 description "Initial Revision."; 4148 reference "draft-ietf-dmm-fpc-cpdp-05"; 4150 } 4152 //Tunnel Information 4153 identity tunnel-type { 4154 description "Tunnel Type"; 4155 } 4156 identity grev1 { 4157 base "fpcbase:tunnel-type"; 4158 description "GRE v1"; 4159 } 4160 identity grev2 { 4161 base "fpcbase:tunnel-type"; 4162 description "GRE v2"; 4163 } 4164 identity ipinip { 4165 base "fpcbase:tunnel-type"; 4166 description "IP in IP"; 4167 } 4168 identity gtpv1 { 4169 base "fpcbase:tunnel-type"; 4170 description "GTP version 1 Tunnel"; 4171 } 4172 identity gtpv2 { 4173 base "fpcbase:tunnel-type"; 4174 description "GTP version 2 Tunnel"; 4175 } 4177 grouping tunnel-value { 4178 container tunnel-info { 4179 leaf tunnel-local-address { 4180 type inet:ip-address; 4181 description "local tunnel address"; 4182 } 4183 leaf tunnel-remote-address { 4184 type inet:ip-address; 4185 description "remote tunnel address"; 4186 } 4187 leaf mtu-size { 4188 type uint32; 4189 description "MTU size"; 4190 } 4191 leaf tunnel { 4192 type identityref { 4193 base "fpcbase:tunnel-type"; 4194 } 4195 description "tunnel type"; 4196 } 4197 leaf payload-type { 4198 type enumeration { 4199 enum ipv4 { 4200 value 0; 4201 description "IPv4"; 4202 } 4203 enum ipv6 { 4204 value 1; 4205 description "IPv6"; 4206 } 4207 enum dual { 4208 value 2; 4209 description "IPv4 and IPv6"; 4210 } 4211 } 4212 description "Payload Type"; 4213 } 4214 leaf gre-key { 4215 type uint32; 4216 description "GRE_KEY"; 4217 } 4218 container gtp-tunnel-info { 4219 leaf local-tunnel-identifier { 4220 type uint32; 4221 description "Tunnel Endpoint IDentifier (TEID)"; 4222 } 4223 leaf remote-tunnel-identifier { 4224 type uint32; 4225 description "Tunnel Endpoint IDentifier (TEID)"; 4226 } 4227 leaf sequence-numbers-enabled { 4228 type boolean; 4229 description "Sequence No. Enabled"; 4230 } 4231 description "GTP Tunnel Information"; 4232 } 4233 leaf ebi { 4234 type fpcbase:ebi-type; 4235 description "EPS Bearier Identifier"; 4236 } 4237 leaf lbi { 4238 type fpcbase:ebi-type; 4239 description "Linked Bearier Identifier"; 4240 } 4241 description "Tunnel Information"; 4242 } 4243 description "Tunnel Value"; 4244 } 4246 ////////////////////////////// 4247 // DESCRIPTOR DEFINITIONS 4249 // From 3GPP TS 24.008 version 13.5.0 Release 13 4250 typedef packet-filter-direction { 4251 type enumeration { 4252 enum preRel7Tft { 4253 value 0; 4254 description "Pre-Release 7 TFT"; 4255 } 4256 enum uplink { 4257 value 1; 4258 description "uplink"; 4259 } 4260 enum downlink { 4261 value 2; 4262 description "downlink"; 4263 } 4264 enum bidirectional { 4265 value 3; 4266 description "bi-direcitonal"; 4267 } 4268 } 4269 description "Packet Filter Direction"; 4270 } 4271 typedef component-type-id { 4272 type uint8 { 4273 range "16 | 17 | 32 | 33 | 35 | 48 | 64 | 65 |" 4274 + " 80 | 81 | 96 | 112 | 128"; 4275 } 4276 description "Specifies the Component Type"; 4277 } 4278 grouping packet-filter { 4279 leaf direction { 4280 type fpcbase:packet-filter-direction; 4281 description "Filter Direction"; 4282 } 4283 leaf identifier { 4284 type uint8 { 4285 range "1..15"; 4286 } 4287 description "Filter Identifier"; 4288 } 4289 leaf evaluation-precedence { 4290 type uint8; 4291 description "Evaluation Precedence"; 4292 } 4293 list contents { 4294 key component-type-identifier; 4295 description "Filter Contents"; 4296 leaf component-type-identifier { 4297 type fpcbase:component-type-id; 4298 description "Component Type"; 4299 } 4300 choice value { 4301 leaf ipv4-local { 4302 type inet:ipv4-address; 4303 description "IPv4 Local Address"; 4304 } 4305 leaf ipv6-prefix-local { 4306 type inet:ipv6-prefix; 4307 description "IPv6 Local Prefix"; 4308 } 4309 leaf ipv4-ipv6-remote { 4310 type inet:ip-address; 4311 description "Ipv4 Ipv6 remote address"; 4312 } 4313 leaf ipv6-prefix-remote { 4314 type inet:ipv6-prefix; 4315 description "IPv6 Remote Prefix"; 4316 } 4317 leaf next-header { 4318 type uint8; 4319 description "Next Header"; 4320 } 4321 leaf local-port { 4322 type inet:port-number; 4323 description "Local Port"; 4324 } 4325 case local-port-range { 4326 leaf local-port-lo { 4327 type inet:port-number; 4328 description "Local Port Min Value"; 4329 } 4330 leaf local-port-hi { 4331 type inet:port-number; 4332 description "Local Port Max Value"; 4333 } 4334 } 4335 leaf remote-port { 4336 type inet:port-number; 4337 description "Remote Port"; 4338 } 4339 case remote-port-range { 4340 leaf remote-port-lo { 4341 type inet:port-number; 4342 description "Remote Por Min Value"; 4343 } 4344 leaf remote-port-hi { 4345 type inet:port-number; 4346 description "Remote Port Max Value"; 4347 } 4348 } 4349 leaf ipsec-index { 4350 type traffic-selectors:ipsec-spi; 4351 description "IPSec Index"; 4352 } 4353 leaf traffic-class { 4354 type inet:dscp; 4355 description "Traffic Class"; 4356 } 4357 case traffic-class-range { 4358 leaf traffic-class-lo { 4359 type inet:dscp; 4360 description "Traffic Class Min Value"; 4361 } 4362 leaf traffic-class-hi { 4363 type inet:dscp; 4364 description "Traffic Class Max Value"; 4365 } 4366 } 4367 leaf-list flow-label { 4368 type inet:ipv6-flow-label; 4369 description "Flow Label"; 4370 } 4371 description "Component Value"; 4372 } 4373 } 4374 description "Packet Filter"; 4375 } 4377 grouping prefix-descriptor { 4378 leaf destination-ip { 4379 type inet:ip-prefix; 4380 description "Rule of destination IP"; 4381 } 4382 leaf source-ip { 4383 type inet:ip-prefix; 4384 description "Rule of source IP"; 4385 } 4386 description "Traffic descriptor based upon source/ 4387 destination as IP prefixes"; 4388 } 4390 grouping fpc-descriptor-value { 4391 choice descriptor-value { 4392 mandatory true; 4393 leaf all-traffic { 4394 type empty; 4395 description "admit any"; 4396 } 4397 leaf no-traffic { 4398 type empty; 4399 description "deny any"; 4400 } 4401 case prefix-descriptor { 4402 uses fpcbase:prefix-descriptor; 4403 description "IP Prefix descriptor"; 4404 } 4405 case pmip-selector { 4406 uses traffic-selectors:traffic-selector; 4407 description "PMIP Selector"; 4408 } 4409 container rfc5777-classifier-template { 4410 uses rfc5777:classifier; 4411 description "RFC 5777 Classifier"; 4412 } 4413 container packet-filter { 4414 uses fpcbase:packet-filter; 4415 description "Packet Filter"; 4416 } 4417 case tunnel-info { 4418 uses fpcbase:tunnel-value; 4419 description "Tunnel Descriptor (only 4420 considers source info)"; 4421 } 4422 description "Descriptor Value"; 4423 } 4424 description "FPC Descriptor Values"; 4425 } 4427 // Next Hop Structures 4428 typedef fpc-service-path-id { 4429 type uint32 { 4430 range "0..33554431"; 4431 } 4432 description "SERVICE_PATH_ID"; 4433 } 4434 typedef fpc-mpls-label { 4435 type uint32 { 4436 range "0..1048575"; 4437 } 4438 description "MPLS label"; 4439 } 4440 typedef segment-id { 4441 type string { 4442 length "16"; 4443 } 4444 description "SR Segement Identifier"; 4445 } 4446 grouping fpc-nexthop { 4447 choice next-hop-value { 4448 leaf ip-address { 4449 type inet:ip-address; 4450 description "IP Value"; 4451 } 4452 leaf mac-address { 4453 type ytypes:mac-address; 4454 description "MAC Address Value"; 4455 } 4456 leaf service-path { 4457 type fpcbase:fpc-service-path-id; 4458 description "Service Path Value"; 4459 } 4460 leaf mpls-path { 4461 type fpcbase:fpc-mpls-label; 4462 description "MPLS Value"; 4463 } 4464 leaf nsh { 4465 type string { 4466 length "16"; 4467 } 4468 description "Network Service Header"; 4469 } 4470 leaf interface { 4471 type uint16; 4472 description "If (interface) Value"; 4473 } 4474 leaf segment-identifier { 4475 type fpcbase:segment-id; 4476 description "Segment Id"; 4477 } 4478 leaf-list mpls-label-stack { 4479 type fpcbase:fpc-mpls-label; 4480 description "MPLS Stack"; 4481 } 4482 leaf-list mpls-sr-stack { 4483 type fpcbase:fpc-mpls-label; 4484 description "MPLS SR Stack"; 4485 } 4486 leaf-list srv6-stack { 4487 type fpcbase:segment-id; 4488 description "Segment Id"; 4489 } 4490 case tunnel-info { 4491 uses fpcbase:tunnel-value; 4492 description "Tunnel Descriptor (only 4493 considers source info)"; 4494 } 4495 description "Value"; 4496 } 4497 description "Nexthop Value"; 4498 } 4500 ////////////////////////////// 4501 // PMIP Integration // 4502 typedef pmip-commandset { 4503 type bits { 4504 bit assign-ip { 4505 position 0; 4506 description "Assign IP"; 4507 } 4508 bit assign-dpn { 4509 position 1; 4510 description "Assign DPN"; 4511 } 4512 bit session { 4513 position 2; 4514 description "Session Level"; 4515 } 4516 bit uplink { 4517 position 3; 4518 description "Uplink"; 4519 } 4520 bit downlink { 4521 position 4; 4522 description "Downlink"; 4523 } 4524 } 4525 description "PMIP Instructions"; 4526 } 4527 /////////////////////////////// 4528 // 3GPP Integration // 4530 // Type Defs 4531 typedef fpc-qos-class-identifier { 4532 type uint8 { 4533 range "1..9"; 4535 } 4536 description "QoS Class Identifier (QCI)"; 4537 } 4538 typedef ebi-type { 4539 type uint8 { 4540 range "0..15"; 4541 } 4542 description "EUTRAN Bearere Identifier (EBI) Type"; 4543 } 4544 typedef imsi-type { 4545 type uint64; 4546 description 4547 "International Mobile Subscriber Identity (IMSI) 4548 Value Type"; 4549 } 4550 // Instructions 4551 typedef threegpp-instr { 4552 type bits { 4553 bit assign-ip { 4554 position 0; 4555 description "Assign IP Address/Prefix"; 4556 } 4557 bit assign-fteid-ip { 4558 position 1; 4559 description "Assign FTEID-IP"; 4560 } 4561 bit assign-fteid-teid { 4562 position 2; 4563 description "Assign FTEID-TEID"; 4564 } 4565 bit session { 4566 position 3; 4567 description "Commands apply to the Session Level"; 4568 } 4569 bit uplink { 4570 position 4; 4571 description "Commands apply to the Uplink"; 4572 } 4573 bit downlink { 4574 position 5; 4575 description "Commands apply to the Downlink"; 4576 } 4577 bit assign-dpn { 4578 position 6; 4579 description "Assign DPN"; 4580 } 4581 } 4582 description "Instruction Set for 3GPP R11"; 4584 } 4586 ////////////////////////////// 4587 // ACTION VALUE AUGMENTS 4588 grouping fpc-action-value { 4589 choice action-value { 4590 mandatory true; 4591 leaf drop { 4592 type empty; 4593 description "Drop Traffic"; 4594 } 4595 container rewrite { 4596 choice rewrite-value { 4597 case prefix-descriptor { 4598 uses fpcbase:prefix-descriptor; 4599 description "IP Prefix descriptor"; 4600 } 4601 case pmip-selector { 4602 uses traffic-selectors:traffic-selector; 4603 description "PMIP Selector"; 4604 } 4605 container rfc5777-classifier-template { 4606 uses rfc5777:classifier; 4607 description "RFC 5777 Classifier"; 4608 } 4609 description "Rewrite Choice"; 4610 } 4611 description "Rewrite/NAT value"; 4612 } 4613 container copy-forward-nexthop { 4614 uses fpcbase:fpc-nexthop; 4615 description "Copy Forward Value"; 4616 } 4617 container nexthop { 4618 uses fpcbase:fpc-nexthop; 4619 description "NextHop Value"; 4620 } 4621 case qos { 4622 leaf trafficclass { 4623 type inet:dscp; 4624 description "Traffic Class"; 4625 } 4626 uses pmipqos:qosattribute; 4627 leaf qci { 4628 type fpcbase:fpc-qos-class-identifier; 4629 description "QCI"; 4630 } 4631 leaf ue-agg-max-bitrate { 4632 type uint32; 4633 description "UE Aggregate Max Bitrate"; 4634 } 4635 leaf apn-ambr { 4636 type uint32; 4637 description "Access Point Name 4638 Aggregate Max Bit Rate"; 4639 } 4640 description "QoS Attributes"; 4641 } 4642 description "Action Value"; 4643 } 4644 description "FPC Action Value"; 4645 } 4647 // Instructions 4648 grouping instructions { 4649 container instructions { 4650 choice instr-type { 4651 leaf instr-3gpp-mob { 4652 type fpcbase:threegpp-instr; 4653 description "3GPP GTP Mobility Instructions"; 4654 } 4655 leaf instr-pmip { 4656 type pmip-commandset; 4657 description "PMIP Instructions"; 4658 } 4659 description "Instruction Value Choice"; 4660 } 4661 description "Instructions"; 4662 } 4663 description "Instructions Value"; 4664 } 4665 } 4666 4668 A.2.2. PMIP QoS Model 4670 This module defines the base protocol elements specified in this 4671 document. 4673 This module references [RFC6991]. 4675 file "ietf-pmip-qos@2018-02-28.yang" 4676 module ietf-pmip-qos { 4677 yang-version 1.1; 4679 namespace 4680 "urn:ietf:params:xml:ns:yang:ietf-pmip-qos"; 4682 prefix "qos-pmip"; 4684 import ietf-inet-types { 4685 prefix inet; 4686 revision-date 2013-07-15; 4687 } 4688 import ietf-trafficselector-types { prefix traffic-selectors; 4689 revision-date 2018-02-28; } 4691 organization "IETF Distributed Mobility Management (DMM) 4692 Working Group"; 4694 contact 4695 "WG Web: 4696 WG List: 4698 WG Chair: Dapeng Liu 4699 4701 WG Chair: Sri Gundavelli 4702 4704 Editor: Satoru Matsushima 4705 4707 Editor: Lyle Bertz 4708 "; 4710 description 4711 "This module contains a collection of YANG definitions for 4712 quality of service paramaters used in Proxy Mobile IPv6. 4714 Copyright (c) 2016 IETF Trust and the persons identified as the 4715 document authors. All rights reserved. 4717 This document is subject to BCP 78 and the IETF Trust's Legal 4718 Provisions Relating to IETF Documents 4719 (http://trustee.ietf.org/license-info) in effect on the date of 4720 publication of this document. Please review these documents 4721 carefully, as they describe your rights and restrictions with 4722 respect to this document. Code Components extracted from this 4723 document must include Simplified BSD License text as described 4724 in Section 4.e of the Trust Legal Provisions and are provided 4725 without warranty as described in the Simplified BSD License."; 4727 revision 2018-02-28 { 4728 description "Updated to drop unnecessary attribute types. 4729 Update WG co-chair."; 4730 reference "RFC 6088: Traffic Selectors for Flow Bindings"; 4731 } 4732 revision 2017-10-29 { 4733 description "Base Version"; 4734 reference 4735 "RFC 6088: Traffic Selectors for Flow Bindings"; 4736 } 4738 // Type Definitions 4740 // QoS Option Field Type Definitions 4741 typedef sr-id { 4742 type uint8; 4743 description 4744 "An 8-bit unsigned integer used for identifying the QoS 4745 Service Request."; 4746 } 4748 typedef traffic-class { 4749 type inet:dscp; 4750 description 4751 "Traffic Class consists of a 6-bit DSCP field followed by a 4752 2-bit reserved field."; 4753 reference 4754 "RFC 3289: Management Information Base for the 4755 Differentiated Services Architecture 4756 RFC 2474: Definition of the Differentiated Services Field 4757 (DS Field) in the IPv4 and IPv6 Headers 4758 RFC 2780: IANA Allocation Guidelines For Values In 4759 the Internet Protocol and Related Headers"; 4760 } 4762 typedef operational-code { 4763 type enumeration { 4764 enum RESPONSE { 4765 value 0; 4766 description "Response to a QoS request"; 4767 } 4768 enum ALLOCATE { 4769 value 1; 4770 description "Request to allocate QoS resources"; 4771 } 4772 enum DE-ALLOCATE { 4773 value 2; 4774 description "Request to de-Allocate QoS resources"; 4775 } 4776 enum MODIFY { 4777 value 3; 4778 description "Request to modify QoS parameters for a 4779 previously negotiated QoS Service Request"; 4780 } 4781 enum QUERY { 4782 value 4; 4783 description "Query to list the previously negotiated QoS 4784 Service Requests that are still active"; 4785 } 4786 enum NEGOTIATE { 4787 value 5; 4788 description "Response to a QoS Service Request with a 4789 counter QoS proposal"; 4790 } 4791 } 4792 description 4793 "The type of QoS request. Reserved values: (6) to (255) 4794 Currently not used. Receiver MUST ignore the option 4795 received with any value in this range."; 4796 } 4798 //Value definitions 4799 typedef Per-MN-Agg-Max-DL-Bit-Rate-Value { 4800 type uint32; 4801 description 4802 "The aggregate maximum downlink bit rate that is 4803 requested/allocated for all the mobile node's IP flows. 4804 The measurement units are bits per second."; 4805 } 4807 typedef Per-MN-Agg-Max-UL-Bit-Rate-Value { 4808 type uint32; 4809 description 4810 "The aggregate maximum uplink bit rate that is 4811 requested/allocated for the mobile node's IP flows. The 4812 measurement units are bits per second."; 4813 } 4815 // Generic Structure for the uplink and downlink 4816 grouping Per-Session-Agg-Max-Bit-Rate-Value { 4817 leaf max-rate { 4818 type uint32; 4819 mandatory true; 4820 description 4821 "The aggregate maximum bit rate that is requested/allocated 4822 for all the IP flows associated with that mobility session. 4823 The measurement units are bits per second."; 4824 } 4825 leaf service-flag { 4826 type boolean; 4827 mandatory true; 4828 description 4829 "This flag is used for extending the scope of the 4830 target flows for Per-Session-Agg-Max-UL/DL-Bit-Rate 4831 from(UL)/to(DL) the mobile node's other mobility sessions 4832 sharing the same Service Identifier."; 4833 reference 4834 "RFC 5149 - Service Selection mobility option"; 4835 } 4836 leaf exclude-flag { 4837 type boolean; 4838 mandatory true; 4839 description 4840 "This flag is used to request that the uplink/downlink 4841 flows for which the network is providing 4842 Guaranteed-Bit-Rate service be excluded from the 4843 target IP flows for which 4844 Per-Session-Agg-Max-UL/DL-Bit-Rate is measured."; 4845 } 4846 description "Per-Session-Agg-Max-Bit-Rate Value"; 4847 } 4849 grouping Allocation-Retention-Priority-Value { 4850 leaf prioirty-level { 4851 type uint8 { 4852 range "0..15"; 4853 } 4854 mandatory true; 4855 description 4856 "This is a 4-bit unsigned integer value. It is used to decide 4857 whether a mobility session establishment or modification 4858 request can be accepted; this is typically used for 4859 admission control of Guaranteed Bit Rate traffic in case of 4860 resource limitations."; 4861 } 4862 leaf premption-capability { 4863 type enumeration { 4864 enum enabled { 4865 value 0; 4866 description "enabled"; 4867 } 4868 enum disabled { 4869 value 1; 4870 description "disabled"; 4871 } 4872 enum reserved1 { 4873 value 2; 4874 description "reserved1"; 4875 } 4876 enum reserved2 { 4877 value 3; 4878 description "reserved2"; 4879 } 4880 } 4881 mandatory true; 4882 description 4883 "This is a 2-bit unsigned integer value. It defines whether 4884 a service data flow can get resources that were already 4885 assigned to another service data flow with a lower priority 4886 level."; 4887 } 4888 leaf premption-vulnerability { 4889 type enumeration { 4890 enum enabled { 4891 value 0; 4892 description "enabled"; 4893 } 4894 enum disabled { 4895 value 1; 4896 description "disabled"; 4897 } 4898 enum reserved1 { 4899 value 2; 4900 description "reserved1"; 4901 } 4902 enum reserved2 { 4903 value 3; 4904 description "reserved2"; 4905 } 4906 } 4907 mandatory true; 4908 description 4909 "This is a 2-bit unsigned integer value. It defines whether a 4910 service data flow can lose the resources assigned to it in 4911 order to admit a service data flow with a higher priority 4912 level."; 4913 } 4914 description "Allocation-Retention-Priority Value"; 4915 } 4917 typedef Aggregate-Max-DL-Bit-Rate-Value { 4918 type uint32; 4919 description 4920 "The aggregate maximum downlink bit rate that is 4921 requested/allocated for downlink IP flows. The measurement 4922 units are bits per second."; 4923 } 4925 typedef Aggregate-Max-UL-Bit-Rate-Value { 4926 type uint32; 4927 description 4928 "The aggregate maximum downlink bit rate that is 4929 requested/allocated for downlink IP flows. The measurement 4930 units are bits per second."; 4931 } 4933 typedef Guaranteed-DL-Bit-Rate-Value { 4934 type uint32; 4935 description 4936 "The guaranteed bandwidth in bits per second for downlink 4937 IP flows. The measurement units are bits per second."; 4938 } 4940 typedef Guaranteed-UL-Bit-Rate-Value { 4941 type uint32; 4942 description 4943 "The guaranteed bandwidth in bits per second for uplink 4944 IP flows. The measurement units are bits per second."; 4945 } 4947 grouping QoS-Vendor-Specific-Attribute-Value-Base { 4948 leaf vendorid { 4949 type uint32; 4950 mandatory true; 4951 description 4952 "The Vendor ID is the SMI (Structure of Management 4953 Information) Network Management Private Enterprise Code of 4954 the IANA-maintained 'Private Enterprise Numbers' 4955 registry."; 4956 reference 4957 "'PRIVATE ENTERPRISE NUMBERS', SMI Network Management 4958 Private Enterprise Codes, April 2014, 4959 "; 4960 } 4961 leaf subtype { 4962 type uint8; 4963 mandatory true; 4964 description 4965 "An 8-bit field indicating the type of vendor-specific 4966 information carried in the option. The namespace for this 4967 sub-type is managed by the vendor identified by the 4968 Vendor ID field."; 4969 } 4970 description 4971 "QoS Vendor-Specific Attribute."; 4972 } 4974 //Primary Structures (groupings) 4975 grouping qosattribute { 4976 leaf per-mn-agg-max-dl { 4977 type qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value; 4978 description "Per-MN-Agg-Max-DL-Bit-Rate Value"; 4979 } 4980 leaf per-mn-agg-max-ul { 4981 type qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value; 4982 description "Per-MN-Agg-Max-UL-Bit-Rate Value"; 4983 } 4984 container per-session-agg-max-dl { 4985 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 4986 description "Per-Session-Agg-Max-Bit-Rate Value"; 4987 } 4988 container per-session-agg-max-ul { 4989 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 4990 description "Per-Session-Agg-Max-Bit-Rate Value"; 4991 } 4992 uses qos-pmip:Allocation-Retention-Priority-Value; 4993 leaf agg-max-dl { 4994 type qos-pmip:Aggregate-Max-DL-Bit-Rate-Value; 4995 description "Aggregate-Max-DL-Bit-Rate Value"; 4996 } 4997 leaf agg-max-ul { 4998 type qos-pmip:Aggregate-Max-UL-Bit-Rate-Value; 4999 description "Aggregate-Max-UL-Bit-Rate Value"; 5000 } 5001 leaf gbr-dl { 5002 type qos-pmip:Guaranteed-DL-Bit-Rate-Value; 5003 description "Guaranteed-DL-Bit-Rate Value"; 5004 } 5005 leaf gbr-ul { 5006 type qos-pmip:Guaranteed-UL-Bit-Rate-Value; 5007 description "Guaranteed-UL-Bit-Rate Value"; 5008 } 5009 description "PMIP QoS Attributes"; 5010 } 5012 grouping qosoption { 5013 leaf srid { 5014 type sr-id; 5015 mandatory true; 5016 description "Service Request Identifier"; 5017 } 5018 leaf trafficclass { 5019 type traffic-class; 5020 mandatory true; 5021 description "Traffic Class"; 5022 } 5023 leaf operationcode { 5024 type operational-code; 5025 mandatory true; 5026 description "Operation Code"; 5027 } 5028 uses qosattribute; 5029 container traffic-selector { 5030 uses traffic-selectors:traffic-selector; 5031 description "traffic selector"; 5032 } 5033 description "PMIP QoS Option"; 5034 } 5035 } 5036 5038 A.2.3. Traffic Selectors YANG Model 5040 This module defines traffic selector types commonly used in Proxy 5041 Mobile IP (PMIP). 5043 This module references [RFC6991]. 5045 file "ietf-trafficselector-types@2018-02-28.yang" 5046 module ietf-trafficselector-types { 5047 yang-version 1.1; 5049 namespace 5050 "urn:ietf:params:xml:ns:yang:ietf-trafficselector-types"; 5052 prefix "traffic-selectors"; 5054 import ietf-inet-types { 5055 prefix inet; 5056 revision-date 2013-07-15; 5057 } 5059 organization "IETF Distributed Mobility Management (DMM) 5060 Working Group"; 5062 contact 5063 "WG Web: 5064 WG List: 5066 WG Chair: Dapeng Liu 5067 5069 WG Chair: Sri Gundavelli 5070 5072 Editor: Satoru Matsushima 5073 5075 Editor: Lyle Bertz 5076 "; 5078 description 5079 "This module contains a collection of YANG definitions for 5080 traffic selectors for flow bindings. 5082 Copyright (c) 2016 IETF Trust and the persons identified as the 5083 document authors. All rights reserved. 5085 This document is subject to BCP 78 and the IETF Trust's Legal 5086 Provisions Relating to IETF Documents 5087 (http://trustee.ietf.org/license-info) in effect on the date of 5088 publication of this document. Please review these documents 5089 carefully, as they describe your rights and restrictions with 5090 respect to this document. Code Components extracted from this 5091 document must include Simplified BSD License text as described 5092 in Section 4.e of the Trust Legal Provisions and are provided 5093 without warranty as described in the Simplified BSD License."; 5095 revision 2018-02-28 { 5096 description 5097 "removed ts-list and updated WG co-chair."; 5098 reference 5099 "RFC 6088: Traffic Selectors for Flow Bindings"; 5100 } 5102 revision 2017-10-29 { 5103 description "Base Version"; 5104 reference 5105 "RFC 6088: Traffic Selectors for Flow Bindings"; 5106 } 5108 // Identities 5109 identity traffic-selector-format { 5110 description 5111 "The base type for Traffic-Selector Formats"; 5113 } 5115 identity ipv4-binary-selector-format { 5116 base traffic-selector-format; 5117 description 5118 "IPv4 Binary Traffic Selector Format"; 5119 } 5121 identity ipv6-binary-selector-format { 5122 base traffic-selector-format; 5123 description 5124 "IPv6 Binary Traffic Selector Format"; 5125 } 5127 // Type definitions and groupings 5128 typedef ipsec-spi { 5129 type uint32; 5130 description 5131 "The first 32-bit IPsec Security Parameter Index (SPI) 5132 value on data. This field is defined in [RFC4303]."; 5133 reference 5134 "RFC 4303: IP Encapsulating Security 5135 Payload (ESP)"; 5136 } 5138 grouping traffic-selector-base { 5139 description "A grouping of the commen leaves between the 5140 v4 and v6 Traffic Selectors"; 5141 container ipsec-spi-range { 5142 presence "Enables setting ipsec spi range"; 5143 description 5144 "Inclusive range representing IPSec Security Parameter 5145 Indices to be used. When only start-spi is present, it 5146 represents a single spi."; 5147 leaf start-spi { 5148 type ipsec-spi; 5149 mandatory true; 5150 description 5151 "The first 32-bit IPsec SPI value on data."; 5152 } 5153 leaf end-spi { 5154 type ipsec-spi; 5155 must ". >= ../start-spi" { 5156 error-message 5157 "The end-spi must be greater than or equal 5158 to start-spi"; 5159 } 5160 description 5161 "If more than one contiguous SPI value needs to be matched, 5162 then this field indicates the end value of a range."; 5163 } 5164 } 5165 container source-port-range { 5166 presence "Enables setting source port range"; 5167 description 5168 "Inclusive range representing source ports to be used. 5169 When only start-port is present, it represents a single 5170 port. These value(s) are from the range of port numbers 5171 defined by IANA (http://www.iana.org)."; 5172 leaf start-port { 5173 type inet:port-number; 5174 mandatory true; 5175 description 5176 "The first 16-bit source port number to be matched"; 5177 } 5178 leaf end-port { 5179 type inet:port-number; 5180 must ". >= ../start-port" { 5181 error-message 5182 "The end-port must be greater than or equal to start-port"; 5183 } 5184 description 5185 "The last 16-bit source port number to be matched"; 5186 } 5187 } 5188 container destination-port-range { 5189 presence "Enables setting destination port range"; 5190 description 5191 "Inclusive range representing destination ports to be used. 5192 When only start-port is present, it represents a single 5193 port."; 5194 leaf start-port { 5195 type inet:port-number; 5196 mandatory true; 5197 description 5198 "The first 16-bit destination port number to be matched"; 5199 } 5200 leaf end-port { 5201 type inet:port-number; 5202 must ". >= ../start-port" { 5203 error-message 5204 "The end-port must be greater than or equal to 5205 start-port"; 5206 } 5207 description 5208 "The last 16-bit destination port number to be matched"; 5209 } 5210 } 5211 } 5213 grouping ipv4-binary-traffic-selector { 5214 container source-address-range-v4 { 5215 presence "Enables setting source IPv4 address range"; 5216 description 5217 "Inclusive range representing IPv4 addresses to be used. When 5218 only start-address is present, it represents a single 5219 address."; 5220 leaf start-address { 5221 type inet:ipv4-address; 5222 mandatory true; 5223 description 5224 "The first source address to be matched"; 5225 } 5226 leaf end-address { 5227 type inet:ipv4-address; 5228 description 5229 "The last source address to be matched"; 5230 } 5231 } 5232 container destination-address-range-v4 { 5233 presence "Enables setting destination IPv4 address range"; 5234 description 5235 "Inclusive range representing IPv4 addresses to be used. 5236 When only start-address is present, it represents a 5237 single address."; 5238 leaf start-address { 5239 type inet:ipv4-address; 5240 mandatory true; 5241 description 5242 "The first destination address to be matched"; 5243 } 5244 leaf end-address { 5245 type inet:ipv4-address; 5246 description 5247 "The last destination address to be matched"; 5248 } 5249 } 5250 container ds-range { 5251 presence "Enables setting dscp range"; 5252 description 5253 "Inclusive range representing DiffServ Codepoints to be used. 5254 When only start-ds is present, it represents a single 5255 Codepoint."; 5256 leaf start-ds { 5257 type inet:dscp; 5258 mandatory true; 5259 description 5260 "The first differential service value to be matched"; 5261 } 5262 leaf end-ds { 5263 type inet:dscp; 5264 must ". >= ../start-ds" { 5265 error-message 5266 "The end-ds must be greater than or equal to start-ds"; 5267 } 5268 description 5269 "The last differential service value to be matched"; 5270 } 5271 } 5272 container protocol-range { 5273 presence "Enables setting protocol range"; 5274 description 5275 "Inclusive range representing IP protocol(s) to be used. When 5276 only start-protocol is present, it represents a single 5277 protocol."; 5278 leaf start-protocol { 5279 type uint8; 5280 mandatory true; 5281 description 5282 "The first 8-bit protocol value to be matched."; 5283 } 5284 leaf end-protocol { 5285 type uint8; 5286 must ". >= ../start-protocol" { 5287 error-message 5288 "The end-protocol must be greater than or equal to 5289 start-protocol"; 5290 } 5291 description 5292 "The last 8-bit protocol value to be matched."; 5293 } 5294 } 5295 description "ipv4 binary traffic selector"; 5296 } 5297 grouping ipv6-binary-traffic-selector { 5298 container source-address-range-v6 { 5299 presence "Enables setting source IPv6 address range"; 5300 description 5301 "Inclusive range representing IPv6 addresses to be used. 5302 When only start-address is present, it represents a 5303 single address."; 5304 leaf start-address { 5305 type inet:ipv6-address; 5306 mandatory true; 5307 description 5308 "The first source address, from the 5309 range of 128-bit IPv6 addresses to be matched"; 5310 } 5311 leaf end-address { 5312 type inet:ipv6-address; 5313 description 5314 "The last source address, from the 5315 range of 128-bit IPv6 addresses to be matched"; 5316 } 5317 } 5318 container destination-address-range-v6 { 5319 presence "Enables setting destination IPv6 address range"; 5320 description 5321 "Inclusive range representing IPv6 addresses to be used. 5322 When only start-address is present, it represents a 5323 single address."; 5324 leaf start-address { 5325 type inet:ipv6-address; 5326 mandatory true; 5327 description 5328 "The first destination address, from the 5329 range of 128-bit IPv6 addresses to be matched"; 5330 } 5331 leaf end-address { 5332 type inet:ipv6-address; 5333 description 5334 "The last destination address, from the 5335 range of 128-bit IPv6 addresses to be matched"; 5336 } 5337 } 5338 container flow-label-range { 5339 presence "Enables setting Flow Label range"; 5340 description 5341 "Inclusive range representing IPv4 addresses to be used. When 5342 only start-flow-label is present, it represents a single 5343 flow label."; 5344 leaf start-flow-label { 5345 type inet:ipv6-flow-label; 5346 description 5347 "The first flow label value to be matched"; 5348 } 5349 leaf end-flow-label { 5350 type inet:ipv6-flow-label; 5351 must ". >= ../start-flow-label" { 5352 error-message 5353 "The end-flow-lable must be greater than or equal to 5354 start-flow-label"; 5355 } 5356 description 5357 "The first flow label value to be matched"; 5358 } 5359 } 5360 container traffic-class-range { 5361 presence "Enables setting the traffic class range"; 5362 description 5363 "Inclusive range representing IPv4 addresses to be used. When 5364 only start-traffic-class is present, it represents a single 5365 traffic class."; 5366 leaf start-traffic-class { 5367 type inet:dscp; 5368 description 5369 "The first traffic class value to be matched"; 5370 reference 5371 "RFC 3260: New Terminology and Clarifications for Diffserv 5372 RFC 3168: The Addition of Explicit Congestion Notification 5373 (ECN) to IP"; 5374 } 5375 leaf end-traffic-class { 5376 type inet:dscp; 5377 must ". >= ../start-traffic-class" { 5378 error-message 5379 "The end-traffic-class must be greater than or equal to 5380 start-traffic-class"; 5381 } 5382 description 5383 "The last traffic class value to be matched"; 5384 } 5385 } 5386 container next-header-range { 5387 presence "Enables setting Next Header range"; 5388 description 5389 "Inclusive range representing Next Headers to be used. When 5390 only start-next-header is present, it represents a 5391 single Next Header."; 5392 leaf start-next-header { 5393 type uint8; 5394 description 5395 "The first 8-bit next header value to be matched."; 5396 } 5397 leaf end-next-header { 5398 type uint8; 5399 must ". >= ../start-next-header" { 5400 error-message 5401 "The end-next-header must be greater than or equal to 5402 start-next-header"; 5403 } 5404 description 5405 "The last 8-bit next header value to be matched."; 5406 } 5407 } 5408 description "ipv6 binary traffic selector"; 5409 } 5411 grouping traffic-selector { 5412 leaf ts-format { 5413 type identityref { 5414 base traffic-selector-format; 5415 } 5416 description "Traffic Selector Format"; 5417 } 5418 uses traffic-selector-base; 5419 uses ipv4-binary-traffic-selector; 5420 uses ipv6-binary-traffic-selector; 5421 description 5422 "The traffic selector includes the parameters used to match 5423 packets for a specific flow binding."; 5424 reference 5425 "RFC 6089: Flow Bindings in Mobile IPv6 and Network 5426 Mobility (NEMO) Basic Support"; 5427 } 5428 } 5429 5431 A.2.4. RFC 5777 Classifier YANG Model 5433 This module defines the RFC 5777 Classifer. 5435 This module references [RFC5777]. 5437 file "ietf-diam-trafficclassifier@2018-02-28.yang" 5438 module ietf-diam-trafficclassifier { 5439 yang-version 1.1; 5441 namespace 5442 "urn:ietf:params:xml:ns:yang:ietf-diam-trafficclassifier"; 5444 prefix "diamclassifier"; 5446 import ietf-inet-types { 5447 prefix inet; 5448 revision-date 2013-07-15; 5450 } 5451 import ietf-yang-types { prefix yang-types; } 5453 organization "IETF Distributed Mobility Management (DMM) 5454 Working Group"; 5456 contact 5457 "WG Web: 5458 WG List: 5460 WG Chair: Dapeng Liu 5461 5463 WG Chair: Sri Gundavelli 5464 5466 Editor: Satoru Matsushima 5467 5469 Editor: Lyle Bertz 5470 "; 5472 description 5473 "This module contains a collection of YANG definitions for 5474 traffic classification and QoS Attributes for Diameter. 5476 Copyright (c) 2018 IETF Trust and the persons identified as the 5477 document authors. All rights reserved. 5479 This document is subject to BCP 78 and the IETF Trust's Legal 5480 Provisions Relating to IETF Documents 5481 (http://trustee.ietf.org/license-info) in effect on the date of 5482 publication of this document. Please review these documents 5483 carefully, as they describe your rights and restrictions with 5484 respect to this document. Code Components extracted from this 5485 document must include Simplified BSD License text as described 5486 in Section 4.e of the Trust Legal Provisions and are provided 5487 without warranty as described in the Simplified BSD License."; 5489 revision 2018-02-28 { 5490 description 5491 "Initial"; 5492 reference 5493 "RFC 5777: Traffic Classification and Quality of Service (QoS) 5494 Attributes for Diameter"; 5495 } 5497 typedef eui64-address-type { 5498 type string { 5499 length "6"; 5500 } 5501 description 5502 "specifies a single layer 2 address in EUI-64 format. 5503 The value is an 8-octet encoding of the address as 5504 it would appear in the frame header."; 5505 } 5506 typedef direction-type { 5507 type enumeration { 5508 enum IN { 5509 value 0; 5510 description 5511 "Applies to flows from the managed terminal."; 5512 } 5513 enum OUT { 5514 value 1; 5515 description 5516 "Applies to flows to the managed terminal."; 5517 } 5518 enum BOTH { 5519 value 2; 5520 description 5521 "Applies to flows both to and from the managed 5522 terminal."; 5523 } 5524 } 5525 description 5526 "Specifies in which direction to apply the classifier."; 5527 } 5528 typedef negated-flag-type { 5529 type enumeration { 5530 enum False { value 0; 5531 description "false"; } 5532 enum True { value 1; 5533 description "True"; } 5534 } 5535 description 5536 "When set to True, the meaning of the match is 5537 inverted and the classifier will match addresses 5538 other than those specified by the From-Spec or 5539 To-Spec AVP. 5541 Note that the negation does not impact the port 5542 comparisons."; 5543 } 5544 grouping index { 5545 leaf index { 5546 type uint16; 5547 mandatory true; 5548 description "Identifier used for referencing"; 5549 } 5550 description "Index Value"; 5551 } 5552 grouping to-from-spec-value { 5553 leaf-list ip-address { 5554 type inet:ip-address; 5555 description "IP address"; 5556 } 5557 list ip-address-range { 5558 key index; 5559 uses diamclassifier:index; 5560 leaf ip-address-start { 5561 type inet:ip-address; 5562 description "IP Address Start"; 5563 } 5564 leaf ip-address-end { 5565 type inet:ip-address; 5566 description "IP Address End"; 5567 } 5568 description "IP Address Range"; 5569 } 5570 leaf-list ip-address-mask { 5571 type inet:ip-prefix; 5572 description "IP Address Mask"; 5573 } 5574 leaf-list mac-address { 5575 type yang-types:mac-address; 5576 description "MAC address"; 5577 } 5578 list mac-address-mask { 5579 key mac-address; 5580 leaf mac-address { 5581 type yang-types:mac-address; 5582 mandatory true; 5583 description "MAC address"; 5584 } 5585 leaf macaddress-mask-pattern { 5586 type yang-types:mac-address; 5587 mandatory true; 5588 description 5589 "The value specifies the bit positions of a 5590 MAC address that are taken for matching."; 5591 } 5592 description "MAC Address Mask"; 5593 } 5594 leaf-list eui64-address { 5595 type diamclassifier:eui64-address-type; 5596 description "EUI64 Address"; 5597 } 5598 list eui64-address-mask { 5599 key eui64-address; 5600 leaf eui64-address { 5601 type diamclassifier:eui64-address-type; 5602 mandatory true; 5603 description "eui64 address"; 5604 } 5605 leaf eui64-address-mask-pattern { 5606 type diamclassifier:eui64-address-type; 5607 mandatory true; 5608 description 5609 "The value is 8 octets specifying the bit 5610 positions of a EUI64 address that are taken 5611 for matching."; 5612 } 5613 description "EUI64 Address Mask"; 5614 } 5615 leaf-list port { 5616 type inet:port-number; 5617 description "Port Number"; 5618 } 5619 list port-range { 5620 key index; 5621 uses diamclassifier:index; 5622 leaf ip-address-start { 5623 type inet:port-number; 5624 description "Port Start"; 5625 } 5626 leaf ip-address-end { 5627 type inet:port-number; 5628 description "Port End"; 5629 } 5630 description "Port Range"; 5631 } 5632 leaf negated { 5633 type diamclassifier:negated-flag-type; 5634 description "Negated"; 5635 } 5636 leaf use-assigned-address { 5637 type boolean; 5638 description "Use Assigned Address"; 5639 } 5640 description 5641 "Basic traffic description value"; 5643 } 5645 grouping option-type-group { 5646 leaf option-type { 5647 type uint8; 5648 mandatory true; 5649 description "Option Type"; 5650 } 5651 leaf-list ip-option-value { 5652 type string; 5653 description "Option Value"; 5654 } 5655 leaf negated { 5656 type diamclassifier:negated-flag-type; 5657 description "Negated"; 5658 } 5659 description "Common X Option Pattern"; 5660 } 5661 typedef vlan-id { 5662 type uint32 { 5663 range "0..4095"; 5664 } 5665 description "VLAN ID"; 5666 } 5668 grouping classifier { 5669 leaf protocol { 5670 type uint8; 5671 description "Protocol"; 5672 } 5673 leaf direction { 5674 type diamclassifier:direction-type; 5675 description "Direction"; 5676 } 5677 list from-spec { 5678 key index; 5679 uses diamclassifier:index; 5680 uses diamclassifier:to-from-spec-value; 5681 description "from specification"; 5682 } 5683 list to-spec { 5684 key index; 5685 uses diamclassifier:index; 5686 uses diamclassifier:to-from-spec-value; 5687 description "to specification"; 5688 } 5689 leaf-list disffserv-code-point { 5690 type inet:dscp; 5691 description "DSCP"; 5692 } 5693 leaf fragmentation-flag { 5694 type enumeration { 5695 enum DF { 5696 value 0; 5697 description "Don't Fragment"; 5698 } 5699 enum MF { 5700 value 1; 5701 description "More Fragments"; 5702 } 5703 } 5704 description "Fragmenttation Flag"; 5705 } 5706 list ip-option { 5707 key option-type; 5708 uses diamclassifier:option-type-group; 5709 description "IP Option Value"; 5710 } 5711 list tcp-option { 5712 key option-type; 5713 uses diamclassifier:option-type-group; 5714 description "TCP Option Value"; 5715 } 5716 list tcp-flag { 5717 key tcp-flag-type; 5718 leaf tcp-flag-type { 5719 type uint32; 5720 mandatory true; 5721 description "TCP Flag Type"; 5722 } 5723 leaf negated { 5724 type diamclassifier:negated-flag-type; 5725 description "Negated"; 5726 } 5727 description "TCP Flags"; 5728 } 5729 list icmp-option { 5730 key option-type; 5731 uses diamclassifier:option-type-group; 5732 description "ICMP Option Value"; 5733 } 5734 list eth-option { 5735 key index; 5736 uses diamclassifier:index; 5737 container eth-proto-type { 5738 leaf-list eth-ether-type { 5739 type string { 5740 length "2"; 5741 } 5742 description "value of ethertype field"; 5743 } 5744 leaf-list eth-sap { 5745 type string { 5746 length "2"; 5747 } 5748 description "802.2 SAP"; 5749 } 5750 description "Ether Proto Type"; 5751 } 5752 list vlan-id-range { 5753 key index; 5754 uses diamclassifier:index; 5755 leaf-list s-vlan-id-start { 5756 type diamclassifier:vlan-id; 5757 description "S-VID VLAN ID Start"; 5758 } 5759 leaf-list s-vlan-id-end { 5760 type diamclassifier:vlan-id; 5761 description "S-VID VLAN ID End"; 5762 } 5763 leaf-list c-vlan-id-start { 5764 type diamclassifier:vlan-id; 5765 description "C-VID VLAN ID Start"; 5766 } 5767 leaf-list c-vlan-id-end { 5768 type diamclassifier:vlan-id; 5769 description "C-VID VLAN ID End"; 5770 } 5771 description "VLAN ID Range"; 5772 } 5773 list user-priority-range { 5774 key index; 5775 uses diamclassifier:index; 5776 leaf-list low-user-priority { 5777 type uint32 { 5778 range "0..7"; 5779 } 5780 description "Low User Priority"; 5781 } 5782 leaf-list high-user-priority { 5783 type uint32 { 5784 range "0..7"; 5785 } 5786 description "High User Priority"; 5788 } 5789 description "User priority range"; 5790 } 5791 description "Ether Option"; 5792 } 5793 description "RFC 5777 Classifier"; 5794 } 5795 } 5796 5798 A.3. FPC YANG Data Model Structure 5800 This section only shows the structure for FPC YANG model. NOTE, it 5801 does NOT show the settings, Action values or Descriptor Value. 5803 module: ietf-dmm-fpc 5804 +--rw tenant* [tenant-key] 5805 +--rw tenant-key fpc:fpc-identity 5806 +--rw mobility-information-model 5807 | +--rw dpn* [dpn-key] 5808 | +--rw dpn-key fpc:fpc-identity 5809 | +--rw dpn-name? string 5810 | +--rw dpn-resource-mapping-reference? string 5811 | +--rw domain-key* fpc:fpc-identity 5812 | +--rw service-group-key* fpc:fpc-identity 5813 | +--rw interface* [interface-key] 5814 | | +--rw interface-key fpc:fpc-identity 5815 | | +--rw interface-name? string 5816 | | +--rw roles* identityref 5817 | | +--rw interface-settings 5818 | | +--rw index uint16 5819 | | +--rw (policy-setting)? 5820 | | +--:(descriptor-value) 5821 | | +--:(action-value) 5822 | +--rw dpn-settings* [policy-template-key] 5823 | +--rw policy-template-key fpc:fpc-identity 5824 | +--rw policy-configuration* [index] 5825 | +--rw index uint16 5826 | +--rw (policy-setting)? 5827 | +--:(descriptor-value) 5828 | +--:(action-value) 5829 +--rw dpn-checkpoint 5830 | +--rw basename? fpc:fpc-identity 5831 | +--rw base-checkpoint? string 5832 +--rw service-group* [service-group-key] 5833 | +--rw service-group-key fpc:fpc-identity 5834 | +--rw service-group-name? string 5835 | +--rw dpn* [dpn-key role-key] 5836 | | +--rw dpn-key fpc:fpc-identity 5837 | | +--rw role-key identityref 5838 | | +--rw referenced-interface* [interface-key] 5839 | | +--rw interface-key fpc:fpc-identity 5840 | | +--rw peer-service-group-key* fpc:fpc-identity 5841 | +--rw service-settings* [policy-template-key] 5842 | +--rw policy-template-key fpc:fpc-identity 5843 | +--rw policy-configuration* [index] 5844 | +--rw index uint16 5845 | +--rw (policy-setting)? 5846 | +--:(descriptor-value) 5847 | +--:(action-value) 5848 +--rw service-group-checkpoint 5849 | +--rw basename? fpc:fpc-identity 5850 | +--rw base-checkpoint? string 5851 +--rw topology-information-model 5852 | +--rw service-endpoint* [role-key] 5853 | | +--rw role-key identityref 5854 | | +--rw role-name? string 5855 | | +--rw service-group-key* fpc:fpc-identity 5856 | | +--rw interface* [dpn-key interface-key] 5857 | | +--rw dpn-key fpc:fpc-identity 5858 | | +--rw interface-key fpc:fpc-identity 5859 | | +--rw protocol* identityref 5860 | | +--rw feature* identityref 5861 | | +--rw interface-settings-set 5862 | +--rw domain* [domain-key] 5863 | | +--rw domain-key fpc:fpc-identity 5864 | | +--rw domain-name? string 5865 | | +--rw domain-settings* [policy-template-key] 5866 | | +--rw policy-template-key fpc:fpc-identity 5867 | | +--rw policy-configuration* [index] 5868 | | +--rw index uint16 5869 | | +--rw (policy-setting)? 5870 | | +--:(descriptor-value) 5871 | | +--:(action-value) 5872 | +--rw basename? fpc:fpc-identity 5873 | +--rw base-checkpoint? string 5874 +--rw policy-information-model 5875 | +--rw action-template* [action-template-key] 5876 | | +--rw action-template-key fpc:fpc-identity 5877 | | +--rw extensible? boolean 5878 | | +--rw mandatory-static-attributes* string 5879 | | +--rw entity-state? enumeration 5880 | +--rw descriptor-template* [descriptor-template-key] 5881 | | +--rw descriptor-template-key fpc:fpc-identity 5882 | | +--rw extensible? boolean 5883 | | +--rw mandatory-static-attributes* string 5884 | | +--rw entity-state? enumeration 5885 | +--rw rule-template* [rule-template-key] 5886 | | +--rw rule-template-key fpc:fpc-identity 5887 | | +--rw descriptor-match-type? enumeration 5888 | | +--rw descriptor-configuration* [descriptor-template-key] 5889 | | | +--rw descriptor-template-key fpc:fpc-identity 5890 | | | +--rw direction? rfc5777:direction-type 5891 | | | +--rw attribute-expression* [index] 5892 | | | +--rw index uint16 5893 | | +--rw action-configuration* [action-order] 5894 | | | +--rw action-order uint32 5895 | | | +--rw action-template-key fpc:fpc-identity 5896 | | | +--rw attribute-expression* [index] 5897 | | | +--rw index uint16 5898 | | +--rw extensible? boolean 5899 | | +--rw mandatory-static-attributes* string 5900 | | +--rw entity-state? enumeration 5901 | | +--rw policy-configuration* [index] 5902 | | +--rw index uint16 5903 | | +--rw (policy-setting)? 5904 | | +--:(descriptor-value) 5905 | | +--:(action-value) 5906 | +--rw policy-template* [policy-template-key] 5907 | | +--rw policy-template-key fpc:fpc-identity 5908 | | +--rw rule-template* [precedence] 5909 | | | +--rw precedence uint32 5910 | | | +--rw rule-template-key fpc:fpc-identity 5911 | | +--rw extensible? boolean 5912 | | +--rw mandatory-static-attributes* string 5913 | | +--rw entity-state? enumeration 5914 | | +--rw policy-configuration* [index] 5915 | | +--rw index uint16 5916 | | +--rw (policy-setting)? 5917 | | +--:(descriptor-value) 5918 | | +--:(action-value) 5919 | +--rw basename? fpc:fpc-identity 5920 | +--rw base-checkpoint? string 5921 +--rw mobility-context* [mobility-context-key] 5922 | +--rw mobility-context-key fpc:fpc-identity 5923 | +--rw delegating-ip-prefix* inet:ip-prefix 5924 | +--rw parent-context? fpc:fpc-identity 5925 | +--rw child-context* fpc:fpc-identity 5926 | +--rw mobile-node 5927 | | +--rw ip-address* inet:ip-address 5928 | | +--rw imsi? fpcbase:imsi-type 5929 | | +--rw mn-settings* [policy-template-key] 5930 | | +--rw policy-template-key fpc:fpc-identity 5931 | | +--rw policy-configuration* [index] 5932 | | +--rw index uint16 5933 | | +--rw (policy-setting)? 5934 | | +--:(descriptor-value) 5935 | | +--:(action-value) 5936 | +--rw domain 5937 | | +--rw domain-key? fpc:fpc-identity 5938 | | +--rw domain-settings* [policy-template-key] 5939 | | +--rw policy-template-key fpc:fpc-identity 5940 | | +--rw policy-configuration* [index] 5941 | | +--rw index uint16 5942 | | +--rw (policy-setting)? 5943 | | +--:(descriptor-value) 5944 | | +--:(action-value) 5945 | +--rw dpn* [dpn-key] 5946 | +--rw dpn-key fpc:fpc-identity 5947 | +--rw dpn-settings* [policy-template-key] 5948 | | +--rw policy-template-key fpc:fpc-identity 5949 | | +--rw policy-configuration* [index] 5950 | | +--rw index uint16 5951 | | +--rw (policy-setting)? 5952 | | +--:(descriptor-value) 5953 | | +--:(action-value) 5954 | +--rw role? identityref 5955 | +--rw service-data-flow* [identifier] 5956 | +--rw identifier uint32 5957 | +--rw service-group-key? fpc:fpc-identity 5958 | +--rw interface* [interface-key] 5959 | | +--rw interface-key fpc:fpc-identity 5960 | +--rw flow-settings* [policy-template-key] 5961 | +--rw policy-template-key fpc:fpc-identity 5962 | +--rw policy-configuration* [index] 5963 | +--rw index uint16 5964 | +--rw (policy-setting)? 5965 | +--:(descriptor-value) 5966 | +--:(action-value) 5967 +--rw monitor* [monitor-key] 5968 +--rw extensible? boolean 5969 +--rw mandatory-static-attributes* string 5970 +--rw entity-state? enumeration 5971 +--rw monitor-key fpc:fpc-identity 5972 +--rw target? string 5973 +--rw binding-information 5974 +--rw deterrable? boolean 5975 +--rw (configuration) 5976 +--:(period) 5977 | +--rw period? uint32 5978 +--:(threshold-config) 5979 | +--rw low? uint32 5980 | +--rw hi? uint32 5981 +--:(schedule) 5982 | +--rw schedule? uint32 5983 +--:(event-identities) 5984 | +--rw event-identities* identityref 5985 +--:(event-ids) 5986 +--rw event-ids* uint32 5988 rpcs: 5989 +---x configure 5990 | +---w input 5991 | | +---w client-id fpc:client-identifier 5992 | | +---w execution-delay? uint32 5993 | | +---w yang-patch 5994 | | +---w patch-id string 5995 | | +---w comment? string 5996 | | +---w edit* [edit-id] 5997 | | +---w edit-id string 5998 | | +---w operation enumeration 5999 | | +---w target target-resource-offset 6000 | | +---w point? target-resource-offset 6001 | | +---w where? enumeration 6002 | | +---w value? 6003 | | +---w op-ref-scope? fpc:ref-scope 6004 | | +---w instructions 6005 | | +---w (instr-type)? 6006 | | +--:(instr-3gpp-mob) 6007 | | | +---w instr-3gpp-mob? 6008 fpcbase:threegpp-instr 6009 | | +--:(instr-pmip) 6010 | | +---w instr-pmip? pmip-commandset 6011 | +--ro output 6012 | +--ro yang-patch-status 6013 | +--ro patch-id string 6014 | +--ro (global-status)? 6015 | | +--:(global-errors) 6016 | | | +--ro errors 6017 | | | +--ro error* 6018 | | | +--ro error-type enumeration 6019 | | | +--ro error-tag string 6020 | | | +--ro error-app-tag? string 6021 | | | +--ro error-path? instance-identifier 6022 | | | +--ro error-message? string 6023 | | | +--ro error-info? 6024 | | +--:(ok) 6025 | | +--ro ok? empty 6026 | +--ro edit-status 6027 | +--ro edit* [edit-id] 6028 | +--ro edit-id string 6029 | +--ro (edit-status-choice)? 6030 | +--:(ok) 6031 | | +--ro ok? empty 6032 | | +--ro notify-follows? boolean 6033 | | +--ro subsequent-edit* [edit-id] 6034 | | +--ro edit-id string 6035 | | +--ro operation enumeration 6036 | | +--ro target 6037 ypatch:target-resource-offset 6038 | | +--ro point? 6039 ypatch:target-resource-offset 6040 | | +--ro where? enumeration 6041 | | +--ro value? 6042 | +--:(errors) 6043 | +--ro errors 6044 | +--ro error* 6045 | +--ro error-type enumeration 6046 | +--ro error-tag string 6047 | +--ro error-app-tag? string 6048 | +--ro error-path? 6049 instance-identifier 6050 | +--ro error-message? string 6051 | +--ro error-info? 6052 +---x reg_monitor 6053 | +---w input 6054 | | +---w client-id fpc:client-identifier 6055 | | +---w execution-delay? uint32 6056 | | +---w op-id uint64 6057 | | +---w monitors* [monitor-key] 6058 | | +---w extensible? boolean 6059 | | +---w mandatory-static-attributes* string 6060 | | +---w entity-state? enumeration 6061 | | +---w monitor-key fpc:fpc-identity 6062 | | +---w target? string 6063 | | +---w binding-information 6064 | | +---w deterrable? boolean 6065 | | +---w (configuration) 6066 | | +--:(period) 6067 | | | +---w period? uint32 6068 | | +--:(threshold-config) 6069 | | | +---w low? uint32 6070 | | | +---w hi? uint32 6071 | | +--:(schedule) 6072 | | | +---w schedule? uint32 6073 | | +--:(event-identities) 6074 | | | +---w event-identities* identityref 6075 | | +--:(event-ids) 6076 | | +---w event-ids* uint32 6077 | +--ro output 6078 | +--ro op-id uint64 6079 | +--ro (edit-status-choice)? 6080 | +--:(ok) 6081 | | +--ro ok? empty 6082 | +--:(errors) 6083 | +--ro errors 6084 | +--ro error* 6085 | +--ro error-type enumeration 6086 | +--ro error-tag string 6087 | +--ro error-app-tag? string 6088 | +--ro error-path? instance-identifier 6089 | +--ro error-message? string 6090 | +--ro error-info? 6091 +---x dereg_monitor 6092 | +---w input 6093 | | +---w client-id fpc:client-identifier 6094 | | +---w execution-delay? uint32 6095 | | +---w op-id uint64 6096 | | +---w monitor* [monitor-key] 6097 | | +---w monitor-key fpc:fpc-identity 6098 | | +---w send_data? boolean 6099 | +--ro output 6100 | +--ro op-id uint64 6101 | +--ro (edit-status-choice)? 6102 | +--:(ok) 6103 | | +--ro ok? empty 6104 | +--:(errors) 6105 | +--ro errors 6106 | +--ro error* 6107 | +--ro error-type enumeration 6108 | +--ro error-tag string 6109 | +--ro error-app-tag? string 6110 | +--ro error-path? instance-identifier 6111 | +--ro error-message? string 6112 | +--ro error-info? 6113 +---x probe 6114 +---w input 6115 | +---w client-id fpc:client-identifier 6116 | +---w execution-delay? uint32 6117 | +---w op-id uint64 6118 | +---w monitor* [monitor-key] 6119 | +---w monitor-key fpc:fpc-identity 6120 +--ro output 6121 +--ro op-id uint64 6122 +--ro (edit-status-choice)? 6123 +--:(ok) 6124 | +--ro ok? empty 6125 +--:(errors) 6126 +--ro errors 6127 +--ro error* 6128 +--ro error-type enumeration 6129 +--ro error-tag string 6130 +--ro error-app-tag? string 6131 +--ro error-path? instance-identifier 6132 +--ro error-message? string 6133 +--ro error-info? 6135 notifications: 6136 +---n config-result-notification 6137 | +--ro yang-patch-status 6138 | | +--ro patch-id string 6139 | | +--ro (global-status)? 6140 | | | +--:(global-errors) 6141 | | | | +--ro errors 6142 | | | | +--ro error* 6143 | | | | +--ro error-type enumeration 6144 | | | | +--ro error-tag string 6145 | | | | +--ro error-app-tag? string 6146 | | | | +--ro error-path? instance-identifier 6147 | | | | +--ro error-message? string 6148 | | | | +--ro error-info? 6149 | | | +--:(ok) 6150 | | | +--ro ok? empty 6151 | | +--ro edit-status 6152 | | +--ro edit* [edit-id] 6153 | | +--ro edit-id string 6154 | | +--ro (edit-status-choice)? 6155 | | +--:(ok) 6156 | | | +--ro ok? empty 6157 | | +--:(errors) 6158 | | +--ro errors 6159 | | +--ro error* 6160 | | +--ro error-type enumeration 6161 | | +--ro error-tag string 6162 | | +--ro error-app-tag? string 6163 | | +--ro error-path? 6164 instance-identifier 6165 | | +--ro error-message? string 6166 | | +--ro error-info? 6167 | +--ro subsequent-edit* [edit-id] 6168 | +--ro edit-id string 6169 | +--ro operation enumeration 6170 | +--ro target ypatch:target-resource-offset 6171 | +--ro point? ypatch:target-resource-offset 6172 | +--ro where? enumeration 6173 | +--ro value? 6174 +---n notify 6175 +--ro notification-id? uint32 6176 +--ro timestamp? uint32 6177 +--ro report* [monitor-key] 6178 +--ro monitor-key fpc:fpc-identity 6179 +--ro trigger? identityref 6180 +--ro (value)? 6181 +--:(dpn-candidate-available) 6182 | +--ro node-id? inet:uri 6183 | +--ro supported-interface-list* [role-key] 6184 | +--ro role-key identityref 6185 +--:(dpn-unavailable) 6186 | +--ro dpn-id? fpc:fpc-identity 6187 +--:(report-value) 6188 +--ro report-value? 6190 Figure 35: YANG FPC Agent Tree 6192 Appendix B. Changes since Version 09 6194 The following changes have been made since version 09 6196 Migration to a Template based framework. This affects all 6197 elements. The framework has a template definition language. 6199 Basename is split into two aspects. The first is version which 6200 applies to Templates. The second is checkpointing which applies 6201 to specific sections only. 6203 Rule was inside Policy and now is Rule-Template and stands as a 6204 peer structure to Policy. 6206 Types, e.g. Descriptor Types, Action Types, etc., are now 6207 templates that have no values filled in. 6209 The embedded rule has been replaced by a template that has no 6210 predefined variables. All rules, pre-configured or embedded, are 6211 realized as Policy instantiations. 6213 The Unassigned DPN is used to track requests vs. those that are 6214 installed, i.e. Agent assignment of Policy is supported. 6216 The Topology system supports selection information by ServiceGroup 6217 or ServiceEndpoint. 6219 DPN Peer Groups and DPN Groups are now PeerServiceGroup and 6220 ServiceGroup. 6222 Bulk Configuration and Configuration now follow a style similar to 6223 YANG Patch. Agents MAY response back with edits it made to 6224 complete the Client edit request. 6226 RFC 5777 Classifiers have been added. 6228 All operations have a common error format. 6230 Authors' Addresses 6232 Satoru Matsushima 6233 SoftBank 6234 1-9-1,Higashi-Shimbashi,Minato-Ku 6235 Tokyo 105-7322 6236 Japan 6238 Email: satoru.matsushima@g.softbank.co.jp 6240 Lyle Bertz 6241 6220 Sprint Parkway 6242 Overland Park KS, 66251 6243 USA 6245 Email: lylebe551144@gmail.com 6247 Marco Liebsch 6248 NEC Laboratories Europe 6249 NEC Europe Ltd. 6250 Kurfuersten-Anlage 36 6251 D-69115 Heidelberg 6252 Germany 6254 Phone: +49 6221 4342146 6255 Email: liebsch@neclab.eu 6257 Sri Gundavelli 6258 Cisco 6259 170 West Tasman Drive 6260 San Jose, CA 95134 6261 USA 6263 Email: sgundave@cisco.com 6264 Danny Moses 6266 Email: danny.moses@intel.com 6268 Charles E. Perkins 6269 Futurewei Inc. 6270 2330 Central Expressway 6271 Santa Clara, CA 95050 6272 USA 6274 Phone: +1-408-330-4586 6275 Email: charliep@computer.org