idnits 2.17.1 draft-ietf-dmm-fpc-cpdp-11.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 6200 has weird spacing: '...art-spi ips...' == Line 6203 has weird spacing: '...rt-port ine...' == Line 6206 has weird spacing: '...rt-port ine...' == Line 6209 has weird spacing: '...address ine...' == Line 6212 has weird spacing: '...address ine...' == (34 more instances...) -- The document date (June 18, 2018) is 2136 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-13 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-mpls-14 == Outdated reference: A later version (-06) exists of draft-bertz-dime-policygroups-05 Summary: 0 errors (**), 0 flaws (~~), 11 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: December 20, 2018 Sprint 6 M. Liebsch 7 NEC 8 S. Gundavelli 9 Cisco 10 D. Moses 11 Intel Corporation 12 C. Perkins 13 Futurewei 14 June 18, 2018 16 Protocol for Forwarding Policy Configuration (FPC) in DMM 17 draft-ietf-dmm-fpc-cpdp-11 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. A 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 December 20, 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 . . . . . . . . . . . . 7 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 . . . . . . . . . . . . . . 15 75 4.7. Entity Configuration Blocks . . . . . . . . . . . . . . . 16 76 4.8. Information Model Checkpoint . . . . . . . . . . . . . . 17 77 4.9. Information Model Components . . . . . . . . . . . . . . 18 78 4.9.1. Topology Information Model . . . . . . . . . . . . . 18 79 4.9.2. Service-Group . . . . . . . . . . . . . . . . . . . . 18 80 4.9.3. Domain Information Model . . . . . . . . . . . . . . 20 81 4.9.4. DPN Information Model . . . . . . . . . . . . . . . . 20 82 4.9.5. Policy Information Model . . . . . . . . . . . . . . 21 83 4.9.6. Mobility-Context Information Model . . . . . . . . . 24 84 4.9.7. Monitor Information Model . . . . . . . . . . . . . . 26 85 5. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 27 86 5.1. Protocol Messages and Semantics . . . . . . . . . . . . . 27 87 5.1.1. Configure Message . . . . . . . . . . . . . . . . . . 30 88 5.1.2. Monitor Messages . . . . . . . . . . . . . . . . . . 36 89 5.2. Protocol Operation . . . . . . . . . . . . . . . . . . . 38 90 5.2.1. DPN Selection . . . . . . . . . . . . . . . . . . . . 38 91 5.2.2. Policy Creation and Installation . . . . . . . . . . 41 92 5.2.3. Simple RPC Operation . . . . . . . . . . . . . . . . 43 93 5.2.4. Policy and Mobility on the Agent . . . . . . . . . . 51 94 5.2.5. Monitor Example . . . . . . . . . . . . . . . . . . . 53 95 6. Templates and Command Sets . . . . . . . . . . . . . . . . . 55 96 6.1. Monitor Configuration Templates . . . . . . . . . . . . . 55 97 6.2. Descriptor Templates . . . . . . . . . . . . . . . . . . 56 98 6.3. Tunnel Templates . . . . . . . . . . . . . . . . . . . . 59 99 6.4. Action Templates . . . . . . . . . . . . . . . . . . . . 60 100 6.5. Quality of Service Action Templates . . . . . . . . . . . 61 101 6.6. PMIP Command-Set . . . . . . . . . . . . . . . . . . . . 62 102 6.7. 3GPP Specific Templates and Command-Set . . . . . . . . . 62 103 7. Implementation Status . . . . . . . . . . . . . . . . . . . . 64 104 8. Security Considerations . . . . . . . . . . . . . . . . . . . 68 105 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 69 106 10. Work Team Participants . . . . . . . . . . . . . . . . . . . 71 107 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 71 108 11.1. Normative References . . . . . . . . . . . . . . . . . . 71 109 11.2. Informative References . . . . . . . . . . . . . . . . . 72 110 Appendix A. YANG Data Model for the FPC protocol . . . . . . . . 73 111 A.1. FPC YANG Model . . . . . . . . . . . . . . . . . . . . . 75 112 A.2. FPC YANG Settings and Extensions Model . . . . . . . . . 97 113 A.3. PMIP QoS Model . . . . . . . . . . . . . . . . . . . . . 109 114 A.4. Traffic Selectors YANG Model . . . . . . . . . . . . . . 117 115 A.5. RFC 5777 Classifier YANG Model . . . . . . . . . . . . . 125 116 Appendix B. FPC YANG Tree Structure . . . . . . . . . . . . . . 132 117 Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 150 118 C.1. Changes since Version 09 . . . . . . . . . . . . . . . . 150 119 C.2. Changes since Version 10 . . . . . . . . . . . . . . . . 151 120 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 151 122 1. Introduction 124 This document describes Forwarding Policy Configuration (FPC), a 125 system for managing the separation of control-plane and data-plane. 126 FPC enables flexible mobility management using FPC client and FPC 127 agent functions. A FPC agent exports an abstract interface 128 representing the data-plane. To configure data-plane nodes and 129 functions, the FPC client uses the interface to the data-plane 130 offered by the FPC agent. 132 Control planes of mobility management systems, or related 133 applications which require data-plane control, can utilize the FPC 134 client at various levels of abstraction. FPC operations are capable 135 of directly configuring a single Data-Plane Node (DPN), as well as 136 multiple DPNs, as determined by the data-plane models exported by the 137 FPC agent. 139 A FPC agent represents the data-plane operation according to several 140 basic information models. A FPC agent also provides access to 141 Monitors, which produce reports when triggered by events or FPC 142 Client requests regarding Mobility Contexts, DPNs or the Agent. 144 To manage mobility sessions, the FPC client assembles applicable sets 145 of forwarding policies from the data model, and configures them on 146 the appropriate FPC Agent. The Agent then renders those policies 147 into specific configurations for each DPN at which mobile nodes are 148 attached. The specific protocols and configurations to configure a 149 DPN from a FPC Agent are outside the scope of this document. 151 A DPN is a logical entity that performs data-plane operations (packet 152 movement and management). It may represent a physical DPN unit, a 153 sub-function of a physical DPN or a collection of physical DPNs 154 (i.e., a "virtual DPN"). A DPN may be virtual -- it may export the 155 FPC DPN Agent interface, but be implemented as software that controls 156 other data-plane hardware or modules that may or may not be FPC- 157 compliant. In this document, DPNs are specified without regard for 158 whether the implementation is virtual or physical. DPNs are 159 connected to provide mobility management systems such as access 160 networks, anchors and domains. The FPC agent interface enables 161 establishment of a topology for the forwarding plane. 163 When a DPN is mapped to physical data-plane equipment, the FPC client 164 can have complete knowledge of the DPN architecture, and use that 165 information to perform DPN selection for specific sessions. On the 166 other hand, when a virtual DPN is mapped to a collection of physical 167 DPNs, the FPC client cannot select a specific physical DPN because it 168 is hidden by the abstraction; only the FPC Agent can address the 169 specific associated physical DPNs. Network architects have the 170 flexibility to determine which DPN-selection capabilities are 171 performed by the FPC Agent (distributed) and which by the FPC client 172 (centralized). In this way, overlay networks can be configured 173 without disclosing detailed knowledge of the underlying hardware to 174 the FPC client and applications. 176 The abstractions in this document are designed to support many 177 different mobility management systems and data-plane functions. The 178 architecture and protocol design of FPC is not tied to specific types 179 of access technologies and mobility protocols. 181 2. Terminology 183 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 184 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 185 document are to be interpreted as described in [RFC2119]. 187 Attribute Expression: The definition of a template Property. This 188 includes setting the type, current value, 189 default value and if the attribute is static, 190 i.e. can no longer be changed. 192 Domain: One or more DPNs that form a logical 193 partition of network resources (e.g., a data- 194 plane network under common network 195 administration). A FPC client (e.g., a 196 mobility management system) may utilize a 197 single or multiple domains. 199 DPN: A data-plane node (DPN) is capable of 200 performing data-plane features. For example, 201 DPNs may be switches or routers, regardless 202 of whether they are realized as hardware or 203 purely in software. 205 FPC Client: A 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 a FPC Agent. 210 Mobility Context: A Mobility Context contains the data-plane 211 information necessary to efficiently send and 212 receive traffic from a mobile node. This 213 includes policies that are created or 214 modified during the network's operation - in 215 most cases, on a per-flow or per session 216 basis. A Mobility-Context represents the 217 mobility sessions (or flows) which are active 218 on a mobile node. This includes associated 219 runtime attributes, such as tunnel endpoints, 220 tunnel identifiers, delegated prefix(es), 221 routing information, etc. Mobility-Contexts 222 are associated to specific DPNs. Some pre- 223 defined Policies may apply during mobility 224 signaling requests. The Mobility Context 225 supplies information about the policy 226 settings specific to a mobile node and its 227 flows; this information is often quite 228 dynamic. 230 Mobility Session: Traffic to/from a mobile node that is 231 expected to survive reconnection events. 233 Monitor: A reporting mechanism for a list of events 234 that trigger notification messages from a FPC 235 Agent to a FPC Client. 237 Policy: A Policy determines the mechanisms for 238 managing specific traffic flows or packets. 239 Policies specify QoS, rewriting rules for 240 packet processing, etc. A Policy consists of 241 one or more rules. Each rule is composed of 242 a Descriptor and Actions. The Descriptor in 243 a rule identifies packets (e.g., traffic 244 flows), and the Actions apply treatments to 245 packets that match the Descriptor in the 246 rule. Policies can apply to Domains, DPNs, 247 Mobile Nodes, Service-Groups, or particular 248 Flows on a Mobile Node. 250 Property: An attribute-value pair for an instance of a 251 FPC entity. 253 Service-Group: A set of DPN interfaces that support a 254 specific data-plane purpose, e.g. inbound/ 255 outbound, roaming, subnetwork with common 256 specific configuration, etc. 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 via 264 Attribute Expression. 266 Template Configuration The process by which a Template is referenced 267 (by name or by key) and Attribute Expressions 268 are created that change the value, default 269 value or static nature of the Attribute, if 270 permitted. If the Template is Extensible, 271 new attributes MAY be added. 273 Tenant: An operational entity that manages mobility 274 management systems or applications which 275 require data-plane functions. A Tenant 276 defines a global namespace for all entities 277 owned by the Tenant enabling its entities to 278 be used by multiple FPC Clients across 279 multiple FPC Agents. 281 Topology: The DPNs and the links between them. For 282 example, access nodes may be assigned to a 283 Service-Group which peers to a Service-Group 284 of anchor nodes. 286 3. FPC Design Objectives and Deployment 288 Using FPC, mobility control-planes and applications can configure 289 DPNs to perform various mobility management roles as described in 290 [I-D.ietf-dmm-deployment-models]. This fulfills the requirements 291 described in [RFC7333]. 293 This document defines FPC Agent and FPC Client, as well as the 294 information models that they use. The attributes defining those 295 models serve as the protocol elements for the interface between the 296 FPC Agent and the FPC Client. 298 Mobility control-plane applications integrate features offered by the 299 FPC Client. The FPC Client connects to FPC Agent functions. The 300 Client and the Agent communicate based on information models 301 described in Section 4. The models allow the control-plane to 302 configure forwarding policies on the Agent for data-plane 303 communications with mobile nodes. 305 Once the Topology of DPN(s) and domains are defined on an Agent for a 306 data plane, the DPNs in the topology are available for further 307 configuration. The FPC Agent connects those DPNs to manage their 308 configurations. 310 A FPC Agent configures and manages its DPN(s) according to forwarding 311 policies requested and Attributes provided by the FPC Client. 312 Configuration commands used by the FPC agent to configure its DPN 313 node(s) may be specific to the DPN implementation; consequently the 314 method by which the FPC Agent carries out the specific configuration 315 for its DPN(s) is out of scope for this document. Along with the 316 data models, the FPC Client (on behalf of control-plane and 317 applications) requests that the Agent configures Policies prior to 318 the time when the DPNs start forwarding data for their mobility 319 sessions. 321 This architecture is illustrated in Figure 1. A FPC Agent may be 322 implemented in a network controller that handles multiple DPNs, or 323 (more simply) an FPC Agent may itself be integrated into a DPN. 325 This document does not specify a protocol for the FPC interface; it 326 is out of scope. However, an implementation must support the FPC 327 transactions described in Section 5. 329 +-------------------------+ 330 | Mobility Control-Plane | 331 | and | 332 | Applications | 333 |+-----------------------+| 334 || FPC Client || 335 |+----------^------------+| 336 +-----------|-------------+ 337 FPC interface protocol | 338 +---------------+-----------------+ 339 | | 340 Network | | 341 Controller | DPN | 342 +-----------|-------------+ +----------|---------+ 343 |+----------v------------+| |+---------v--------+| 344 || [Data-plane model] || ||[Data-plane model]|| 345 || FPC Agent || || FPC Agent || 346 |+-----------------------+| |+------------------+| 347 |+------------+----------+| | | 348 ||SB Protocol |FPC Client|| | DPN Configuration | 349 || Modules | Module || +--------------------+ 350 |+------^-----+----^-----+| 351 +-------|----------|------+ 352 | | 353 Other | | FPC interface 354 southbound | | protocol 355 protocols | | 356 | +-----------------+ 357 | | 358 DPN | DPN | 359 +----------|---------+ +----------|---------+ 360 |+---------v--------+| |+---------v--------+| 361 || Configuration || ||[Data-plane model]|| 362 || Protocol module || || FPC Agent || 363 |+------------------+| |+------------------+| 364 | | | | 365 | DPN Configuration | | DPN Configuration | 366 +--------------------+ +--------------------+ 368 Figure 1: Reference Forwarding Policy Configuration (FPC) 369 Architecture 371 The FPC architecture supports multi-tenancy; a FPC enabled data-plane 372 supports tenants of multiple mobile operator networks and/or 373 applications. It means that the FPC Client of each tenant connects 374 to the FPC Agent and it MUST partition namespace and data for their 375 data-planes. DPNs on the data-plane may fulfill multiple data-plane 376 roles which are defined per session, domain and tenant. 378 Multi-tenancy permits the paritioning of data-plane entities as well 379 as a common namespace requirement upon FPC Agents and Clients when 380 they use the same Tenant for a common data-plane entity. 382 FPC information models often configuration to fit the specific needs 383 for DPN management of a mobile node's traffic. The FPC interfaces in 384 Figure 1 are the only interfaces required to handle runtime data in a 385 Mobility Context. The Topology and some Policy FPC models MAY be 386 pre-configured; in that case real-time protocol exchanges are not 387 required for them. 389 The information model provides an extensibility mechanism through 390 Templates that permits specialization for the needs of a particular 391 vendor's equipment or future extension of the model presented in this 392 specification. 394 4. FPC Mobility Information Model 396 The FPC information model includes the following components: 398 DPN Information Model, 399 Topology Information Model, 400 Policy Information Model, 401 Mobility-Context, and 402 Monitor, as illustrated in Figure 2. 404 : 405 | 406 +-[FPC Mobility Information Model] 407 | | 408 | +-[Topology Information Model] 409 | | 410 | +-[Policy Information Model] 411 | | 412 | +-[Mobility-Context] 413 | | 414 | +-[Monitor] 415 | 417 Figure 2: FPC Information Model structure 419 4.1. Model Notation and Conventions 421 The following conventions are used to describe the FPC information 422 models. 424 Information model entities (e.g. DPNs, Rules, etc.) are defined in a 425 hierarchical notation where all entities at the same hierarchical 426 level are located on the same left-justified vertical position 427 sequentially. When entities are composed of sub-entities, the sub- 428 entities appear shifted to the right, as shown in Figure 3. 430 | 431 +-[entity2] 432 | +-[entity2.1] 433 | +-[entity2.2] 435 Figure 3: Model Notation - An Example 437 Some entities have one or more qualifiers placed on the right hand 438 side of the element definition in angle-brackets. Common types 439 include: 441 List: A collection of entities (some could be duplicated) 443 Set: A nonempty collection of entities without duplications 445 Name: A human-readable string 447 Key: A unique value. We distinguish 3 types of keys: 449 U-Key: A key unique across all Tenants. U-Key spaces typically 450 involve the use of registries or language specific mechanisms 451 that guarantee universal uniqueness of values. 453 G-Key: A key unique within a Tenant 455 L-Key: A key unique within a local namespace. For example, there 456 may exist interfaces with the same name, e.g. "if0", in two 457 different DPNs but there can only be one "if0" within each DPN 458 (i.e. its local Interface-Key L-Key space). 460 Each entity or attribute may be optional (O) or mandatory (M). 461 Entities that are not marked as optional are mandatory. 463 The following example shows 3 entities: 464 -- Entity1 is a globally unique key, and optionally can have 465 an associated Name 466 -- Entity2 is a list 467 -- Entity3 is a set and is optional 468 + 469 | 470 +-[entity1] (M), (O) 471 +-[entity2] 472 +-[entity3] (O) 473 | 474 + 476 Figure 4 478 When expanding entity1 into a modeling language such as YANG it would 479 result in two values: entity1-Key and entity1-Name. 481 To encourage re-use, FPC defines indexed sets of various entity 482 Templates. Other model elements that need access to an indexed model 483 entity contain an attribute which is always denoted as "entity-Key". 484 When a Key attribute is encountered, the referencing model element 485 may supply attribute values for use when the referenced entity model 486 is instantiated. For example: Figure 5 shows 2 entities: 488 EntityA definition references an entityB model element. 490 EntityB model elements are indexed by entityB-Key. 492 Each EntityB model element has an entityB-Key which allows it to be 493 uniquely identified, and a list of Attributes (or, alternatively, a 494 Type) which specifies its form. This allows a referencing entity to 495 create an instance by supplying entityB-Values to be inserted, in a 496 Settings container. 498 . 499 . 500 | 501 +-[entityA] 502 | +-[entityB-Key] 503 | +-[entityB-Values] 504 . 505 . 506 | 507 +-[entityB] (M) 508 | +-[entityB-Type] 509 . 510 . 512 Figure 5: Indexed sets of entities 514 Indexed sets are specified for each of the following kinds of 515 entities: 517 Domain (See Section 4.9.3) 518 DPN (See Section 4.9.4) 519 Policy (See Section 4.9.5) 520 Rule (See Section 4.9.5) 521 Descriptor (See Figure 12) 522 Action (See Figure 12) 523 Service-Group (See Section 4.9.2, and 524 Mobility-Context (See Section 4.9.6) 526 As an example, for a Domain entity, there is a corresponding 527 attribute denoted as "Domain-Key" whose value can be used to 528 determine a reference to the Domain. 530 4.2. Templates and Attributes 532 In order to simplify development and maintenance of the needed 533 policies and other objects used by FPC, the Information Models which 534 are presented often have attributes that are not initialized with 535 their final values. When an FPC entity is instantiated according to 536 a template definition, specific values need to be configured for each 537 such attribute. For instance, suppose an entity Template has an 538 Attribute named "IPv4-Address", and also suppose that a FPC Client 539 instantiates the entity and requests that it be installed on a DPN. 540 An IPv4 address will be needed for the value of that Attribute before 541 the entity can be used. 543 +-[Template] (M) 544 | +-[Attributes] (M) 545 | +-[Extensible ~ FALSE] 546 | +-[Entity-State ~ Initial] 547 | +-[Version] 549 Figure 6: Template entities 551 Attributes: A set of Attribute names MAY be included when defining a 552 Template for instantiating FPC entities. 554 Extensible: Determines whether or not entities instantiated from the 555 Template can be extended with new non-mandatory Attributes not 556 originally defined for the Template. Default value is FALSE. If 557 a Template does not explicitly specify this attribute, the default 558 value is considered to be in effect. 560 Entity-State: Either Initial, PartiallyConfigured, Configured, or 561 Active. Default value is Initial. See Section 4.6 for more 562 information about how the Entity-Status changes during the 563 configuration steps of the Entity. 565 Version: Provides a version tag for the Template. 567 The Attributes in an Entity Template may be either mandatory or non- 568 mandatory. Attribute values may also be associated with the 569 attributes in the Entity Template. If supplied, the value may be 570 either assigned with a default value that can be reconfigured later, 571 or the value can be assigned with a static value that cannot be 572 reconfigured later (see Section 4.3). 574 It is possible for a Template to provide values for all of its 575 Attributes, so that no additional values are needed before the entity 576 can made Active. Any instantiation from a Template MUST have at 577 least one Attribute in order to be a useful entity unless the 578 Template has none. 580 4.3. Attribute-Expressions 582 The syntax of the Attribute definition is formatted to make it clear. 583 For every Attribute in the Entity Template, six possibilities are 584 specified as follows: 586 '[Att-Name: ]' Mandatory Attribute is defined, but template does not 587 provide any configured value. 589 '[Att-Name: Att-Value]' Mandatory Attribute is defined, and has a 590 statically configured value. 592 '[Att-Name: ~ Att-Value]' Mandatory Attribute is defined, and has a 593 default value. 595 '[Att-Name]' Non-mandatory Attribute may be included but template 596 does not provide any configured value. 598 '[Att-Name = Att-Value]' Non-mandatory Attribute may be included and 599 has a statically configured value. 601 '[Att-Name ~ Att-Value]' Non-mandatory Attribute may be included and 602 has a default value. 604 So, for example, a default value for a non-mandatory IPv4-Address 605 attribute would be denoted by [IPv4-Address ~ 127.0.0.1]. 607 After a FPC Client identifies which additional Attributes have been 608 configured to be included in an instantiated entity, those configured 609 Attributes MUST NOT be deleted by the FPC Agent. Similarly, any 610 statically configured value for an entity Attribute MUST NOT be 611 changed by the FPC Agent. 613 Whenever there is danger of confusion, the fully qualified Attribute 614 name MUST be used when supplying needed Attribute Values for a 615 structured Attribute. 617 4.4. Attribute Value Types 619 For situations in which the type of an attribute value is required, 620 the following syntax is recommended. To declare than an attribute 621 has data type "foo", typecast the attribute name by using the 622 parenthesized data type (foo). So, for instance, [(float) Max- 623 Latency-in-ms:] would indicate that the mandatory Attribute "Max- 624 Latency-in-ms" requires to be configured with a floating point value 625 before the instantiated entity could be used. Similarly, [(float) 626 Max-Latency-in-ms: 9.5] would statically configure a floating point 627 value of 9.5 to the mandatory Attribute "Max-Latency-in-ms". 629 4.5. Namespace and Format 631 The identifiers and names in FPC models which reside in the same 632 Tenant must be unique. That uniqueness must be maintained by all 633 Clients, Agents and DPNs that support the Tenant. The Tenant 634 namespace uniqueness MUST be applied to all elements of the tenant 635 model, i.e. Topology, Policy and Mobility models. 637 When a Policy needs to be applied to Mobility-Contexts in all Tenants 638 on an Agent, the Agent SHOULD define that policy to be visible by all 639 Tenants. In this case, the Agent assigns a unique identifier in the 640 Agent namespace and copies the values to each Tenant. This 641 effectively creates a U-Key although only a G-Key is required within 642 the Tenant. 644 The notation for identifiers can utilize any format with agreement 645 between data-plane agent and client operators. The formats include 646 but are not limited to Globally Unique IDentifiers (GUIDs), 647 Universally Unique IDentifiers (UUIDs), Fully Qualified Domain Names 648 (FQDNs), Fully Qualified Path Names (FQPNs) and Uniform Resource 649 Identifiers (URIs). The FPC model does not limit the format, which 650 could dictate the choice of FPC protocol. Nevertheless, the 651 identifiers which are used in a Mobility model should be considered 652 to efficiently handle runtime parameters. 654 There are identifiers reserved for Protocol Operation. See 655 Section 5.1.1.5 for details. 657 4.6. Configuring Attribute Values 659 Attributes of Information Model components such as policy templates 660 are configured with values as part of FPC configuration operations. 661 There may be several such configuration operations before the 662 template instantiation is fully configured. 664 Entity-Status indicates when an Entity is usable within a DPN. This 665 permits DPN design tradeoffs amongst local storage (or other 666 resources), over the wire request size and the speed of request 667 processing. For example, DPN designers with constrained systems MAY 668 only house entities whose status is Active which may result in 669 sending over all policy information with a Mobility-Context request. 670 Storing information elements with an entity status of 671 "PartiallyConfigured" on the DPN requires more resources but can 672 result in smaller over the wire FPC communication and request 673 processing efficiency. 675 When the FPC Client instantiates a Policy from a Template, the 676 Policy-Status is "Initial". When the FPC Client sends the policy to 677 a FPC Agent for installation on a DPN, the Client often will 678 configure appropriate attribute values for the installation, and 679 accordingly changes the Policy-Status to "PartiallyConfigured" or 680 "Configured". The FPC Agent will also configure Domain-specific 681 policies and DPN-specific policies on the DPN. When configured to 682 provide particular services for mobile nodes, the FPC Agent will 683 apply whatever service-specific policies are needed on the DPN. When 684 a mobile node attaches to the network data-plane within the topology 685 under the jurisdiction of a FPC Agent, the Agent may apply policies 686 and settings as appropriate for that mobile node. Finally, when the 687 mobile node launches new flows, or quenches existing flows, the FPC 688 Agent, on behalf of the FPC Client, applies or deactivates whatever 689 policies and attribute values are appropriate for managing the flows 690 of the mobile node. When a "Configured" policy is de-activated, 691 Policy-Status is changed to be "Active". When an "Active" policy is 692 activated, Policy-Status is changed to be "Configured". 694 Attribute values in DPN resident Policies may be configured by the 695 FPC Agent as follows: 697 Domain-Policy-Configuration: Values for Policy attributes that are 698 required for every DPN in the domain. 700 DPN-Policy-Configuration: Values for Policy attributes that are 701 required for every policy configured on this DPN. 703 Service-Group-Policy-Configuration: Values for Policy attributes 704 that are required to carry out the intended Service of the Service 705 Group. 707 MN-Policy-Configuration: Values for Policy attributes that are 708 required for all traffic to/from a particular mobile node. 710 Service-Data-Flow-Policy-Configuration: Values for Policy attributes 711 that are required for traffic belonging to a particular set of 712 flows on the mobile node. 714 Any configuration changes MAY also supply updated values for existing 715 default attribute values that may have been previously configured on 716 the DPN resident policy. 718 Entity blocks describe the format of the policy configurations. 720 4.7. Entity Configuration Blocks 722 As described in Section 4.6, a Policy Template may be configured in 723 several stages by configuring default or missing values for 724 Attributes that do not already have statically configured values. A 725 Policy-Configuration is the combination of a Policy-Key (to identify 726 the Policy Template defining the Attributes) and the currently 727 configured Attribute Values to be applied to the Policy Template. 728 Policy-Configurations MAY add attributes to a Template if Extensible 729 is True. They MAY also refine existing attributes by: 731 assign new values if the Attribute is not static 733 make attributes static if they were not 735 make an attribute mandatory 737 A Policy-Configuration MUST NOT define or refine an attribute twice. 738 More generally, an Entity-Configuration can be defined for any 739 configurable Indexed Set to be the combination of the Entity-Key 740 along with a set of Attribute-Expressions that supply configuration 741 information for the entity's Attributes. Figure 7 shows a schematic 742 representation for such Entity Configuration Blocks. 744 [Entity Configuration Block] 745 | +-[Entity-Key] (M) 746 | +-[Attribute-Expression] (M) 748 Figure 7: Entity Configuration Block 750 This document makes use of the following kinds of Entity 751 Configuration Blocks: 753 Descriptor-Configuration 755 Action-Configuration 757 Rule-Configuration 759 Interface-Configuration 761 Service-Group-Configuration 763 Domain-Policy-Configuration 765 DPN-Policy-Configuration 767 Policy-Configuration 769 MN-Policy-Configuration 771 Service-Data-Flow-Policy-Configuration 773 4.8. Information Model Checkpoint 775 The Information Model Checkpoint permits Clients and Tenants with 776 common scopes, referred to in this specification as Checkpoint 777 BaseNames, to track the state of provisioned information on an Agent. 778 The Agent records the Checkpoint BaseName and Checkpoint value set by 779 a Client. When a Client attaches to the Agent it can query to 780 determine the amount of work that must be executed to configure the 781 Agent to a specific BaseName / checkpoint revision. 783 Checkpoints are defined for the following information model 784 components: 786 Service-Group 788 DPN Information Model 790 Domain Information Model 792 Policy Information Model 794 4.9. Information Model Components 796 4.9.1. Topology Information Model 798 The Topology structure specifies DPNs and the communication paths 799 between them. A network management system can use the Topology to 800 select the most appropriate DPN resources for handling specific 801 session flows. 803 The Topology structure is illustrated in Figure 8 (for definitions 804 see Section 2): 806 | 807 +-[Topology Information Model] 808 | +-[Extensible: FALSE] 809 | +-[Service-Group] 810 | +-[DPN] 811 | +-[Domain] 813 Figure 8: Topology Structure 815 4.9.2. Service-Group 817 Service-Group-Set is collection of DPN interfaces serving some data- 818 plane purpose including but not limited to DPN Interface selection to 819 fulfill a Mobility-Context. Each Group contains a list of DPNs 820 (referenced by DPN-Key) and selected interfaces (referenced by 821 Interface-Key). The Interfaces are listed explicitly (rather than 822 referred implicitly by its specific DPN) so that every Interface of a 823 DPN is not required to be part of a Group. The information provided 824 is sufficient to ensure that the Protocol, Settings (stored in the 825 Service-Group-Configuration) and Features relevant to successful 826 interface selection is present in the model. 828 | 829 +-[Service-Group] , (O) 830 | +-[Extensible: FALSE] 831 | +-[Role] 832 | +-[Protocol] 833 | +-[Feature] (O) 834 | +-[Service-Group-Configuration] (O) 835 | +-[DPN-Key] 836 | | +-[Referenced-Interface] 837 | | | +-[Interface-Key] 838 | | | +-[Peer-Service-Group-Key] (O) 840 Figure 9: Service Group 842 Each Service-Group element contains the following information: 844 Service-Group-Key: A unique ID of the Service-Group. 846 Service-Group-Name: A human-readable display string. 848 Role: The role (MAG, LMA, etc.) of the device hosting the interfaces 849 of the DPN Group. 851 Protocol-Set: The set of protocols supported by this interface 852 (e.g., PMIP, S5-GTP, S5-PMIP etc.). The protocol MAY be only its 853 name, e.g. 'gtp', but many protocols implement specific message 854 sets, e.g. s5-pmip, s8-pmip. When the Service-Group supports 855 specific protocol message sub-subsets the Protocol value MUST 856 include this information. 858 Feature-Set: An optional set of static features which further 859 determine the suitability of the interface to the desired 860 operation. 862 Service-Group-Configuration-Set: An optional set of configurations 863 that further determine the suitability of an interface for the 864 specific request. For example: SequenceNumber=ON/OFF. 866 DPN-Key-Set: A key used to identify the DPN. 868 Referenced-Interface-Set: The DPN Interfaces and peer Service-Groups 869 associated with them. Each entry contains 871 Interface-Key: A key that is used together with the DPN-Key, to 872 create a key that is refers to a specific DPN interface 873 definition. 875 Peer-Service-Group-Key: Enables location of the peer Service- 876 Group for this Interface. 878 4.9.3. Domain Information Model 880 A Domain-Set represents a group of heterogeneous Topology resources 881 typically sharing a common administrative authority. Other models, 882 outside of the scope of this specification, provide the details for 883 the Domain. 885 | 886 +-[Domain] , (O) 887 | +-[Domain-Policy-Configuration] (O) 888 | 890 Figure 10: Domain Information Model 892 Each Domain entry contains the following information: 894 Domain-Key: Identifies and enables reference to the Domain. 896 Domain-Name: A human-readable display string naming the Domain. 898 4.9.4. DPN Information Model 900 A DPN-Set contains some or all of the DPNs in the Tenant's network. 901 Some of the DPNs in the Set may be identical in functionality and 902 only differ by their Key. 904 | 905 +-[DPN] , (O) 906 | +-[Extensible: FALSE] 907 | +-[Interface] 908 | | +-[Role] 909 | | +-[Protocol] 910 | | +-[Interface-Configuration] (O) 911 | +-[Domain-Key] 912 | +-[Service-Group-Key] (O) 913 | +-[DPN-Policy-Configuration] (M) 914 | +-[DPN-Resource-Mapping-Reference] (O) 916 Figure 11: DPN Information Model 918 Each DPN entry contains the following information: 920 DPN-Key: A unique Identifier of the DPN. 922 DPN-Name: A human-readable display string. 924 Domain-Key: A Key providing access to the Domain information about 925 the Domain in which the DPN resides. 927 Interface-Set: The Interface-Set references all interfaces (through 928 which data packets are received and transmitted) available on the 929 DPN. Each Interface makes use of attribute values that are 930 specific to that interface, for example, the MTU size. These do 931 not affect the DPN selection of active or enabled interfaces. 932 Interfaces contain the following information: 934 Role: The role (MAG, LMA, PGW, AMF, etc.) of the DPN. 936 Protocol (Set): The set of protocols supported by this interface 937 (e.g., PMIP, S5-GTP, S5-PMIP etc.). The protocol MAY implement 938 specific message sets, e.g. s5-pmip, s8-pmip. When a protocol 939 implements such message sub-subsets the Protocol value MUST 940 include this information. 942 Interface-Configuration-Set: Configurable settings that further 943 determine the suitability of an interface for the specific 944 request. For example: SequenceNumber=ON/OFF. 946 Service-Group-Set: The Service-Group-Set references all of the 947 Service-Groups which have been configured using Interfaces hosted 948 on this DPN. The purpose of a Service-Group is not to describe 949 each interface of each DPN, but rather to indicate interface types 950 for use during the DPN selection process, when a DPN with specific 951 interface capabilities is required. 953 DPN-Policy-Configuration: A list of Policies that have been 954 configured on this DPN. Some may have values for all attributes, 955 and some may require further configuration. Each Policy- 956 Configuration has a key to enable reference to its Policy- 957 Template. Each Policy-Configuration also has been configured to 958 supply missing and non-default values to the desired Attributes 959 defined within the Policy-Template. 961 DPN-Resource-Mapping-Reference (O): A reference to the underlying 962 implementation, e.g. physical node, software module, etc. that 963 supports this DPN. Further specification of this attribute is out 964 of scope for this document. 966 4.9.5. Policy Information Model 968 The Policy Information Model defines and identifies Rules for 969 enforcement at DPNs. A Policy is basically a set of Rules that are 970 to be applied to each incoming or outgoing packet at a DPN interface. 971 Rules comprise Descriptors and a set of Actions. The Descriptors, 972 when evaluated, determine whether or not a set of Actions will be 973 performed on the packet. The Policy structure is independent of a 974 policy context. 976 In addition to the Policy structure, the Information Model (per 977 Section 4.9.6) defines Mobility-Context. Each Mobility-Context may 978 be configured with appropriate Attribute values, for example 979 depending on the identity of a mobile node. 981 Traffic descriptions are defined in Descriptors, and treatments are 982 defined separately in Actions. A Rule-Set binds Descriptors and 983 associated Actions by reference, using Descriptor-Key and Action-Key. 984 A Rule-Set is bound to a policy in the Policy-Set (using Policy-Key), 985 and the Policy references the Rule definitions (using Rule-Key). 987 | 988 +-[Policy Information Model] 989 | +-[Extensible:] 990 | +-[Policy-Template] (M) 991 | | +-[Policy-Configuration] (O) 992 | | +-[Rule-Template-Key] (M) 993 | | | +-[Precedence] (M) 994 | +-[Rule-Template] (M) 995 | | +-[Descriptor-Match-Type] (M) 996 | | +-[Descriptor-Configuration] (M) 997 | | | +-[Direction] (O) 998 | | +-[Action-Configuration] (M) 999 | | | +-[Action-Order] (M) 1000 | | +-[Rule-Configuration] (O) 1001 | +-[Descriptor-Template] (M) 1002 | | +-[Descriptor-Type] (O) 1003 | | +-[Attribute-Expression] (M) 1004 | +-[Action-Template] (M) 1005 | +-[Action-Type] (O) 1006 | | +-[Attribute-Expression] (M) 1008 Figure 12: Policy Information Model 1010 The Policy structure defines Policy-Set, Rule-Set, Descriptor-Set, 1011 and Action-Set, as follows: 1013 Policy-Template: A set of Policy structures, indexed by 1014 Policy-Key, each of which is determined by a list of Rules 1015 referenced by their Rule-Key. Each Policy structure contains the 1016 following: 1018 Policy-Key: Identifies and enables reference to this Policy 1019 definition. 1021 Rule-Template-Key: Enables reference to a Rule template 1022 definition. 1024 Rule-Precedence: For each Rule identified by a Rule-Template-Key 1025 in the Policy, specifies the order in which that Rule must be 1026 applied. The lower the numerical value of Precedence, the 1027 higher the rule precedence. Rules with equal precedence MAY be 1028 executed in parallel if supported by the DPN. If this value is 1029 absent, the rules SHOULD be applied in the order in which they 1030 appear in the Policy. 1032 Rule-Template-Set: A set of Rule Template definitions indexed by 1033 Rule-Key. Each Rule is defined by a list of Descriptors (located 1034 by Descriptor-Key) and a list of Actions (located by Action-Key) 1035 as follows: 1037 Rule-Template-Key: Identifies and enables reference to this Rule 1038 definition. 1040 Descriptor-Match-Type Indicates whether the evaluation of the 1041 Rule proceeds by using conditional-AND, or conditional-OR, on 1042 the list of Descriptors. 1044 Descriptor-Configuration: References a Descriptor template 1045 definition, along with an expression which names the Attributes 1046 for this instantiation from the Descriptor-Template and also 1047 specifies whether each Attribute of the Descriptor has a 1048 default value or a statically configured value, according to 1049 the syntax specified in Section 4.2. 1051 Direction: Indicates if a rule applies to uplink traffic, to 1052 downlink traffic, or to both uplink and downlink traffic. 1053 Applying a rule to both uplink and downlink traffic, in case of 1054 symmetric rules, eliminates the requirement for a separate 1055 entry for each direction. When not present, the direction is 1056 implied by the Descriptor's values. 1058 Action-Configuration: References an Action Template definition, 1059 along with an expression which names the Attributes for this 1060 instantiation from the Action-Template and also specifies 1061 whether each Attribute of the Action has a default value or a 1062 statically configured value, according to the syntax specified 1063 in Section 4.2. 1065 Action-Order: Defines the order in which actions are executed 1066 when the associated traffic descriptor selects the packet. 1068 Descriptor-Template-Set: A set of traffic Descriptor Templates, 1069 each of which can be evaluated on the incoming or outgoing packet, 1070 returning a TRUE or FALSE value, defined as follows: 1072 Descriptor-Template-Key: Identifies and enables reference to 1073 this descriptor template definition. 1075 Attribute-Expression: An expression which defines an Attribute in 1076 the Descriptor-Template and also specifies whether the Template 1077 also defines a default value or a statically configured value 1078 for the Attribute of the Descriptor has, according to the 1079 syntax specified in Section 4.2. 1081 Descriptor-Type: Identifies the type of descriptor, e.g. an IPv6 1082 traffic selector per [RFC6088]. 1084 Action-Template-Set: A set of Action Templates defined as follows: 1086 Action-Template-Key: Identifies and enables reference to this 1087 action template definition. 1089 Attribute-Expression: An expression which defines an Attribute in 1090 the Action-Template and also specifies whether the Template 1091 also defines a default value or a statically configured value 1092 for the Attribute of the Action has, according to the syntax 1093 specified in Section 4.2. 1095 Action-Type: Identifies the type of an action for unambiguous 1096 interpretation of an Action-Value entry. 1098 4.9.6. Mobility-Context Information Model 1100 The Mobility-Context structure holds entries associated with a mobile 1101 node and its mobility sessions (flows). It is created on a DPN 1102 during the mobile node's registration to manage the mobile node's 1103 flows. Flow information is added or deleted from the Mobility- 1104 Context as needed to support new flows or to deallocate resources for 1105 flows that are deactivated. Descriptors are used to characterize the 1106 nature and resource requirement for each flow. 1108 Termination of a Mobility-Context implies termination of all flows 1109 represented in the Mobility-Context, e.g. after deregistration of a 1110 mobile node. If any Child-Contexts are defined, they are also 1111 terminated. 1113 +-[Mobility-Context] 1114 | +-[Extensible:~ FALSE] 1115 | +-[Delegating-IP-Prefix:] (O) 1116 | +-[Parent-Context] (O) 1117 | +-[Child-Context] (O) 1118 | +-[Service-Group-Key] (O) 1119 | +-[Mobile-Node] 1120 | | +-[IP-Address] (O)) 1121 | | +-[MN-Policy-Configuration] 1122 | +-[Domain-Key] 1123 | | +-[Domain-Policy-Configuration] 1124 | +-[DPN-Key] 1125 | | +-[Role] 1126 | | +-[DPN-Policy-Configuration] 1127 | | +-[ServiceDataFlow] (O) 1128 | | | +-[Service-Group-Key] (O) 1129 | | | +-[Interface-Key] 1130 | | | +-[ServiceDataFlow-Policy- 1131 Configuration] (O) 1132 | | | | +-[Direction] 1134 Figure 13: Mobility-Context Information Model 1136 The Mobility-Context Substructure holds the following entries: 1138 Mobility-Context-Key: Identifies a Mobility-Context 1140 Delegating-IP-Prefix-Set: Delegated IP Prefixes assigned to the 1141 Mobility-Context 1143 Parent-Context: If present, a Mobility Context from which the 1144 Attributes and Attribute Values of this Mobility Context are 1145 inherited. 1147 Child-Context-Set: A set of Mobility Contexts which inherit the 1148 Attributes and Attribute Values of this Mobility Context. 1150 Service-Group-Key: Service-Group(s) used during DPN assignment and 1151 re-assignment. 1153 Mobile-Node: Attributes specific to the Mobile Node. It contains 1154 the following 1156 IP-Address-Set IP addresses assigned to the Mobile Node. 1158 MN-Policy-Configuration-Set For each MN-Policy in the set, a key 1159 and relevant information for the Policy Attributes. 1161 Domain-Key: Enables access to a Domain instance. 1163 Domain-Policy-Configuration-Set: For each Domain-Policy in the set, 1164 a key and relevant information for the Policy Attributes. 1166 DPN-Key-Set: Enables access to a DPN instance assigned to a 1167 specific role, i.e. this is a Set that uses DPN-Key and Role as a 1168 compound key to access specific set instances. 1170 Role: Role this DPN fulfills in the Mobility-Context. 1172 DPN-Policy-Configuration-Set: For each DPN-Policy in the set, a key 1173 and relevant information for the Policy Attributes. 1175 ServiceDataFlow-Key-Set: Characterizes a traffic flow that has been 1176 configured (and provided resources) on the DPN to support data- 1177 plane traffic to and from the mobile device. 1179 Service-Group-Key: Enables access to a Service-Group instance. 1181 Interface-Key-Set: Assigns the selected interface of the DPN. 1183 ServiceDataFlow-Policy-Configuration-Set: For each Policy in the 1184 set, a key and relevant information for the Policy Attributes. 1186 Direction: Indicates if the reference Policy applies to 1187 uplink or downlink traffic, or to both, uplink- and downlink 1188 traffic. Applying a rule to both, uplink- and downlink 1189 traffic, in case of symmetric rules, allows omitting a 1190 separate entry for each direction. When not present the 1191 value is assumed to apply to both directions. 1193 4.9.7. Monitor Information Model 1195 Monitors provide a mechanism to produce reports when events occur. A 1196 Monitor will have a target that specifies what is to be watched. 1198 The attribute/entity to be monitored places certain constraints on 1199 the configuration that can be specified. For example, a Monitor 1200 using a Threshold configuration cannot be applied to a Mobility- 1201 Context, because it does not have a threshold. Such a monitor 1202 configuration could be applied to a numeric threshold property of a 1203 Context. 1205 | 1206 +-[Monitor] 1207 | +-[Extensible:] 1208 | +-[Target:] 1209 | +-[Deferrable] 1210 | +-[Configuration] 1212 Figure 14: Monitor Substructure 1214 Monitor-Key: Identifies the Monitor. 1216 Target: Description of what is to be monitored. This can be a 1217 Service Data Flow, a Policy installed upon a DPN, values of a 1218 Mobility-Context, etc. The target name is the absolute 1219 information model path (separated by '/') to the attribute / 1220 entity to be monitored. 1222 Deferrable: Indicates that a monitoring report can be delayed up to 1223 a defined maximum delay, set in the Agent, for possible bundling 1224 with other reports. 1226 Configuration: Determined by the Monitor subtype. The monitor 1227 report is specified by the Configuration. Four report types are 1228 defined: 1230 * "Periodic" reporting specifies an interval by which a 1231 notification is sent. 1233 * "Event-List" reporting specifies a list of event types that, if 1234 they occur and are related to the monitored attribute, will 1235 result in sending a notification. 1237 * "Scheduled" reporting specifies the time (in seconds since Jan 1238 1, 1970) when a notification for the monitor should be sent. 1239 Once this Monitor's notification is completed the Monitor is 1240 automatically de-registered. 1242 * "Threshold" reporting specifies one or both of a low and high 1243 threshold. When these values are crossed a corresponding 1244 notification is sent. 1246 5. Protocol 1248 5.1. Protocol Messages and Semantics 1250 Four Client to Agent messages are supported. 1252 +---------------------+---------------------------------------------+ 1253 | Message | Description | 1254 +---------------------+---------------------------------------------+ 1255 | Configure | A Configure message includes multiple edits | 1256 | | to one or more information model entities. | 1257 | | Edits are executed according to their Edit- | 1258 | | Id in ascending order. The global status | 1259 | | of the operation and the status of | 1260 | | individual edits are returned. Partial | 1261 | | failures, i.e. individual edit failures, | 1262 | | are allowed. | 1263 | Register-Monitors | Register monitors at an Agent. The message | 1264 | | includes the Monitor information as | 1265 | | specified in Section 4.9.7. | 1266 | Deregister-Monitors | Deregister monitors from an Agent. An | 1267 | | optional boolean, Send-Data, indicates if a | 1268 | | successful deregistration triggers a Notify | 1269 | | with final data from the Agent for the | 1270 | | corresponding Monitor. | 1271 | Probe | Probe the status of registered monitors. | 1272 | | This triggers a Notify with current data | 1273 | | from the Agent for the corresponding | 1274 | | Monitors. | 1275 +---------------------+---------------------------------------------+ 1277 Table 1: Client to Agent Messages 1279 Each message contains a header with the following information: 1281 Client Identifier: An Identifier used by the Agent to associate 1282 specific configuration characteristics, e.g. options used by the 1283 Client when communicating with the Agent, the association of the 1284 Client and tenant in the information model as well as tracking 1285 operations and notifications. 1287 Delay: An optional time (in ms) to delay the execution of the 1288 operation on the DPN once it is received by the Agent. 1290 Operation Identifier: A unique identifier created by the Client to 1291 correlate responses and notifications 1293 An Agent will respond with an ERROR, indicating one or more Errors 1294 have occurred, or an OK. 1296 For Configure messages, an OK status for an edit MAY include 1297 subsequent edits in the response that were required to properly 1298 execute the edit. It MAY also indicate that the final status and any 1299 final edits required to fulfill the request will be sent via a 1300 Configure Result Notification from the Agent to the Client, see 1301 Section 5.1.1.4.2. 1303 If errors occur, they MUST be returned as a list in responses and 1304 each Error contains the following information: 1306 Error-type: The specific error type. Values are TRANSPORT (0), RPC 1307 (1), PROTOCOL(2) or APPLICATION (3). 1309 Error-Tag: An error tag. 1311 Error-App-Tag: Application specific error tag. 1313 Error-Message: A message describing the error. 1315 Error-Info: Any data required for the response. 1317 | 1318 +-[Errors] 1319 | +-[(Enumeration) Error-Type ] 1320 | +-[(String) Error-Tag ] 1321 | +-[(String) Error-App-Tag ] (O) 1322 | +-[(String) Error-Message ] (O) 1323 | +-[Error-Info] (O) 1325 Figure 15: Error Information Model 1327 Two Agent to Client notifications are supported. 1329 +-------------------------------+-----------------------------------+ 1330 | Message | Description | 1331 +-------------------------------+-----------------------------------+ 1332 | Configure-Result-Notification | An asynchronous notification from | 1333 | | Agent to Client based upon a | 1334 | | previous Configure request. | 1335 | Notify | An asynchronous notification from | 1336 | | Agent to Client based upon a | 1337 | | registered Monitor's | 1338 | | configuration, a Monitor | 1339 | | deregistration or Probe. | 1340 +-------------------------------+-----------------------------------+ 1342 Table 2: Agent to Client Messages (notifications) 1344 5.1.1. Configure Message 1346 The Configure message follows edit formats proposed by [RFC8072] with 1347 more fields in each edit, an extra operation (clone) and a different 1348 response format. 1350 5.1.1.1. Edit Operation Types 1352 +-----------+-------------------------------------------------------+ 1353 | Operation | Description | 1354 +-----------+-------------------------------------------------------+ 1355 | create | Creates a new data resource or Entity. If the | 1356 | | resource exists an error is returned. | 1357 | delete | Deletes a resource. If it does not exist an error is | 1358 | | returned. | 1359 | insert | Inserts data in a list or user ordered list. | 1360 | merge | Merges the edit value with the target data resource; | 1361 | | the resource is created if it does not exist. | 1362 | move | Moves the target data resource. | 1363 | replace | Replace the target data resource with the edit value. | 1364 | remove | Removes a data resource if it already exists. | 1365 | clone | Clones a data resource and places the copy at the new | 1366 | | location. If the resource does not exist an error is | 1367 | | returned. | 1368 +-----------+-------------------------------------------------------+ 1370 Table 3: Configure Edit Operations 1372 5.1.1.2. Edit Operation 1374 Each Configure includes one or more edits. These edits include the 1375 following information: 1377 Edit-Id: Uniquely specifies the identifier of the edit within the 1378 operation. 1380 Edit-Type: Specifies the type of operation (see Section 5.1.1.1). 1382 Command-Set: The Command-Set is a technology-specific bitset that 1383 allows for a single entity to be sent in an edit with multiple 1384 requested, technology specific sub-transactions to be completed. 1385 It can also provide clarity for a request. For example, a 1386 Mobility-Context could have the Home Network Prefix absent but it 1387 is unclear if the Client would like the address to be assigned by 1388 the Agent or if this is an error. Rather than creating a 1389 specific command for assigning the IP, a bit position in a 1390 Command-Set can be used to indicate Agent based IP assignment 1391 requests. 1393 Reference-Scope: If supported, specifies the Reference Scope (see 1394 Section 5.1.1.3) 1396 Target: Specifies the Target node (Data node path or FPC Identity) 1397 for the edit operation. This MAY be a resource, e.g. Mobility- 1398 Context, Descriptor-Template, etc., or a data node within a 1399 resource as specified by its path. 1401 Point: The absolute URL path for the data node that is being used as 1402 the insertion point, clone point or move point for the target of 1403 this 'edit' entry. 1405 Where: Identifies where a data resource will be inserted, cloned to 1406 or moved. Only allowed these for lists and lists of data nodes 1407 that are 'ordered-by user'. The values are 'before', 'after', 1408 'first', 'last' (default value). 1410 Value The value used for this edit operation. In this message it 1411 MUST NOT be a MONITOR entity. 1413 | 1414 +-[Configure] 1415 | +-[Client-Id:] 1416 | +-[(Unsigned 32) Execution-Delay] 1417 | +-[Operation-Id:] 1418 | +-[Edit:] 1419 | | +-[Edit-Id:] 1420 | | +-[(Enumeration) Edit-Type:] 1421 | | +-[(BitSet) Command-Set] 1422 | | +-[(Enumeration) Reference-Scope] 1423 | | +-[Target:] 1424 | | +-[Point] 1425 | | +-[(Enumeration) Where] 1426 | | +-[Value] 1428 Figure 16: Configure Request 1430 Edits sent to the Agent provided in an operation SHOULD be sent in 1431 the following order to avoid errors: 1433 1. Action Templates 1435 2. Descriptor Templates 1437 3. Rule Templates 1439 4. Policy Templates 1440 5. DPN Templates 1442 6. Mobility Contexts 1444 5.1.1.3. Reference Scope 1446 The Reference Scope is an optional feature that provides the scope of 1447 references used in a configuration command. These scopes are defined 1448 as: 1450 o none - All edits have no references to other entities or within 1451 edits. 1453 o edit - All references are contained within each edit body (intra- 1454 edit/intra-operation) 1456 o operation - All references exist in the operation (inter-edit/ 1457 intra-operation). 1459 o storage - One or more references exist outside of the operation. 1460 A lookup to cache / storage is required. 1462 o unknown - the location of the references are unknown. This is 1463 treated as a 'storage' type. 1465 An Agent that only accepts 'edit' or 'operation' reference scope 1466 messages is referred to as 'stateless' as it has no direct memory of 1467 references outside messages themselves. This permits low memory 1468 footprint Agents/DPNs. Even when an Agent supports all message types 1469 an 'edit' or 'operation' scoped message can be processed quickly by 1470 the Agent/DPN as it does not require storage access. 1472 Figure 17 shows an example containment hierarchy provided for all 1473 caches. 1475 +---------------+ 1476 | Global Cache | 1477 | (storage) | 1478 +------+--------+ 1479 | 1480 +----------------+ 1481 | | 1482 +------+-----------+ +------+-----------+ 1483 | Operation Cache | | Operation Cache | 1484 | (operation) | .... | (operation) | 1485 +------+-----------+ +--------+---------+ 1486 | | 1487 +---+-----------+ | 1488 | | | 1489 +------+------+ +------+------+ +------+------+ 1490 | Edit Cache | | Edit Cache | | Edit Cache | 1491 | (edit) | | (edit) | | (edit) | 1492 +-------------+ +-------------+ +-------------+ 1494 (no cache) 1496 Figure 17: Example Hierarchical Cache 1498 5.1.1.4. Operation Response 1500 5.1.1.4.1. Immediate Response 1502 The Response MUST include the following: 1504 Operation Identifier of the corresponding request. 1506 Global Status for the operation (see Table 1). 1508 A list of Edit results (described below). 1510 An edit response, Edit-Status, is comprised of the following: 1512 Edit-Id: Edit Identifier. 1514 Edit-Status: OK. 1516 When the Edit-Status is OK the following values MAY be present 1518 Notify-Follows - A boolean indicator that the edit has been 1519 accepted by the Agent but further processing is required. A 1520 Configure-Result-Notification will be sent once the processing 1521 has succeeded or failed. 1523 Subsequent-Edits-List: This is a list of Edits that were 1524 required to fulfill the request. It follows the edit request 1525 semantics (see Section 5.1.1.2). 1527 Errors-List: When the Edit-Status is ERROR the following values 1528 are present. See Table 1 for details. 1530 The response will minimally contain an Edit-Status implying 'OK' or a 1531 list of errors. 1533 | 1534 +-[Operation-Id:] 1535 +-[Result-Status:] 1536 +-[Errors] 1537 | +-[(Enumeration) Error-Type:] 1538 | +-[(String) Error-Tag:] 1539 | +-[(String) Error-App-Tag] 1540 | +-[(String) Error-Message] 1541 | +-[Error-Info] 1542 +-[Edit-Status] 1543 | +-[Edit-Id:] 1544 | +-[Edit-Status: ~ OK] 1545 | +-[Notify-Follows] 1546 | +-[Subsequent-Edits] 1547 | | +-[Edit-Id:] 1548 | | +-[(Enumeration) Edit-Type:] 1549 | | +-[Target:] 1550 | | +-[Point] 1551 | | +-[(Enumeration) Where] 1552 | | +-[Value] 1553 | +-[Errors] 1554 | | +-[(Enumeration) Error-Type:] 1555 | | +-[(String) Error-Tag:] 1556 | | +-[(String) Error-App-Tag] 1557 | | +-[(String) Error-Message] 1558 | | +-[Error-Info] 1559 | 1561 Figure 18: Configure Operation Response 1563 5.1.1.4.2. Asynchronous Notification 1565 A Configure-Result-Notification occurs after the Agent has completed 1566 processing related to a Configure request. It is an asynchronous 1567 communication from the Agent to the Client. 1569 It is identical to the immediate response with the exception that the 1570 Notify-Follows, if present, MUST be false. As this value is 1571 unnecessary it SHOULD be omitted. 1573 5.1.1.5. Reserved Identities 1575 Several identities are reserved in the Policy Information Model and 1576 Mobility-Context to facilitate specific uses cases. 1578 Agents and tenants express their support for descriptors and actions 1579 using the following Key patterns 1581 supported- indicates a support for the 1582 descriptor template as defined in its original specification. For 1583 example "supported-rfc5777classifier" is a Descriptor Template 1584 that conforms to the rfc5777-classifier (Figure 31) as defined in 1585 this document. 1587 supported- indicates a support for the 1588 action template as defined in its original specification. 1590 "base-rule" is comprised of all base descriptors using an 'or' 1591 Descriptor-Match-Type and all Actions in no specific order. 1593 "base-template" is comprised of the base rule. 1595 "base-template" can be used to determine supported Action and 1596 Descriptor Templates. It can also be used to support an open 1597 template where any specific Descriptors and Actions can be applied, 1598 however, depending upon the Order of Actions it is likely to produce 1599 undesirable results. 1601 One use case is supported via reservation of specific DPN-Keys: 1603 Requested policies are those that the Client would like to be 1604 assigned to a DPN within a Mobility-Context. The naming 1605 convention is similar to those used for DPN Assignment via an 1606 Agent. 1608 "Requested" is a Key that represents requested policies which 1609 have not been assigned to a specific DPN. No Role is assigned 1610 to the DPN. 1612 "Requested-" represents requested policies that have not 1613 been assigned to a DPN and can only be assigned to DPNs that 1614 fulfill the specified Role. 1616 It is possible to have policies in the "Requested" DPN that do not 1617 appear in other entries which reflects the inability to 1618 successfully assign the policy. 1620 5.1.2. Monitor Messages 1622 An Agent may reject a registration if it or the DPN has insufficient 1623 resources. 1625 An Agent or DPN MAY temporarily suspend monitoring if insufficient 1626 resources exist. In such a case the Agent MUST notify the Client. 1628 When a monitor has a reporting configuration of SCHEDULED it is 1629 automatically de-registered after the last Notify occurs. 1631 If a SCHEDULED or PERIODIC configuration is provided during 1632 registration with the time related value (time or period 1633 respectively) of 0 a Notify is sent and the monitor is immediately 1634 de-registered. This method should, when a Monitor has not been 1635 installed, result in an immediate Notify sufficient for the Client's 1636 needs and lets the Agent realize the Client has no further need for 1637 the monitor to be registered. 1639 Probe messages are used by a Client to retrieve information about a 1640 previously installed monitor. The Probe message SHOULD identify one 1641 or more monitors by means of including the associated monitor 1642 identifier. An Agent receiving a Probe message sends the requested 1643 information in a single or multiple Notify messages. 1645 If the Monitor configuration associated with a Notify can be 1646 deferred, then the Notify MAY be bundled with other messages back to 1647 the Agent even if this results in a delay of the Notify. 1649 The Monitor messages use the following data: 1651 Monitor-Key: Monitor Key. 1653 Monitor: A Monitor configuration (see Section 4.9.7). 1655 Send-Data: An indicator that specifies that the final value MUST be 1656 sent as a notification from the Agent. 1658 | 1659 +-[Register-Monitor] 1660 | +-[Client-Id:] 1661 | +-[(Unsigned 32) Execution-Delay] 1662 | +-[Operation-Id:] 1663 | +-[Monitor:] 1664 | | +-[Extensible:] 1665 | | +-[Monitor-Key:] 1666 | | +-[Target:] 1667 | | +-[Deferrable] 1668 | | +-[Configuration:] 1670 | 1671 +-[Deregister-Monitor] 1672 | +-[Client-Id:] 1673 | +-[(Unsigned 32) Execution-Delay] 1674 | +-[Operation-Id:] 1675 | +-[Monitor:] 1676 | | +-[Monitor-Key:] 1677 | | +-[(Boolean) Send-Data ~ False] 1679 | 1680 +-[Probe] 1681 | +-[Client-Id:] 1682 | +-[(Unsigned 32) Execution-Delay] 1683 | +-[Operation-Id:] 1684 | +-[Monitor-Key:] 1686 Figure 19: Monitor Messages 1688 5.1.2.1. Asynchronous Notification 1690 A Monitor Report can be sent as part of de-registration, a trigger 1691 based upon a Monitor Configuration or a Probe. A Report is comprised 1692 of the Monitor Key the report applies to, the Trigger for the report, 1693 a timestamp of when the report's associated event occurs and data, 1694 Report-Value, that is specific to the monitored value's type. 1696 Triggers include but are not limited to 1698 o Subscribed Event occurred 1700 o Low Threshold Crossed 1702 o High Threshold Crossed 1704 o Periodic Report 1705 o Scheduled Report 1707 o Probe 1709 o Deregistration Final Value 1711 o Monitoring Suspended 1713 o Monitoring Resumed 1715 o DPN Available 1717 o DPN Unavailable 1719 Multiple Reports are sent in a Notify message. Each Notify is 1720 comprised of unique Notification Identifier from the Agent and 1721 timestamp indicating when the notification was created. 1723 | 1724 +-[ Notify ] 1725 | +-[(Unsigned 32) Notification-Identifier:] 1726 | +-[Timestamp:] 1727 | +-[Report:] 1728 | | +-[Trigger:] 1729 | | +-[Monitor-Key:] 1730 | | +-[Report-Value] 1732 Figure 20: Monitor Messages 1734 5.2. Protocol Operation 1736 Please note that JSON is used to represent the information in Figures 1737 in this section but any over the wire representation that accurately 1738 reflects the information model MAY be used. 1740 5.2.1. DPN Selection 1742 In order to assign a DPN to a Mobility Context, the Client or Agent 1743 requires topology information. The Service-Group provides 1744 information, e.g. function, role, protocol, features and 1745 configuration, to determine suitable DPN interfaces. 1747 Consider a Client attempting to select DPN interfaces that are served 1748 by a single Agent. In this example interfaces are present with 1749 different protocols, settings and features as shown in the following 1750 figure. 1752 "topology-information-model" : { 1753 "dpn" : [ { 1754 "dpn-key" : "dpn1", 1755 "interface" : [ { 1756 "interface-key" : "ifc1", 1757 "role" : "lma", 1758 "protocol" : [ "pmip" ], 1759 "interface-configuration" : [ { 1760 "index" : 0, 1761 "setting" : [ "optionA" : "OFF" ] 1762 } ] 1763 },{ 1764 "interface-key" : "ifc2", 1765 "role" : "lma", 1766 "protocol" : [ "pmip" ], 1767 "interface-configuration" : [ { 1768 "index" : 0, 1769 "setting" : [ "optionC" : "OFF" ] 1770 } ] 1771 },{ 1772 "interface-key" : "ifc2-b", 1773 "role" : "mag", 1774 "protocol" : [ "pmip" ] 1775 } ] }, 1776 { 1777 "dpn-key" : "dpn2", 1778 "interface" : [ { 1779 "interface-key" : "ifc1", 1780 "role" : "mag", 1781 "protocol" : [ "pmip" ], 1782 "interface-configuration" : [ { 1783 "index" : 0, 1784 "settings" : [ "optionA" : "OFF", "optionB" : "ON" ] 1785 } ] 1786 } ] } 1787 ], 1788 ... 1789 }, 1790 "service-group" : [ 1791 { "service-group-key" : "group1", 1792 "service-group-name" : "Anchors-OptionA-OFF", 1793 "role-key" : "lma", 1794 "protocol" : [ "pmip" ], 1795 "service-group-configuration" : [ { 1796 "index" : 0, 1797 "setting" : [ "optionA" : "OFF" ] 1798 } ], 1799 "dpn" : [ 1800 { "dpn-key" : "dpn1", 1801 "referenced-interface" : [ { "interface-key" : "ifc1" } ] } 1802 ] 1803 },{ "service-group-key" : "group2", 1804 "service-group-name" : "Anchors", 1805 "role-role" : "lma", 1806 "protocol" : [ "pmip" ], 1807 "dpn" : [ 1808 { "dpn-key" : "dpn1", 1809 "referenced-interface" : [ { "interface-key" : "ifc2" } ] } 1810 ] 1811 },{ "service-group-key" : "group3", 1812 "service-group-name" : "MAGs", 1813 "role-role" : "mag", 1814 "protocol" : [ "pmip" ], 1815 "dpn" : [ 1816 { "dpn-key" : "dpn2", 1817 "referenced-interface" : [ { "interface-key" : "ifc1" } ] }, 1818 { "dpn-key" : "dpn1", 1819 "referenced-interface" : [ { "interface-key" : "ifc2-b" } ] } 1820 ] 1821 } 1822 ] 1824 NOTE - A Setting is, in this example, a list of string attributes in 1825 a Configuration. 1827 Figure 21: Monitor Messages 1829 Two DPNs are present. The first, dpn1, has 3 interfaces. Two 1830 support the LMA role and both have settings. The third supports the 1831 MAG function. The second DPN, dpn2, provides a single interface with 1832 the MAG function. 1834 Three ServiceGroups are presented. The first provides the PMIP 1835 protocol and LMA role. It also has a setting, OptionA, that is OFF 1836 and only contains ifc1 from dpn1. 1838 The second group is comprised of interfaces that support the PMIP 1839 protocol and LMA function. It only contains ifc2 from dpn1. An 1840 interface that has setting(s) or feature(s) that must appear in a 1841 ServiceGroup SHOULD NOT appear in ServiceGroups that do not have 1842 those setting(s) or feature(s) present. Thus, ifc1 of dpn1 should 1843 not be present in this second Service-Group. 1845 A third group is comprised of interfaces that support the MAG 1846 function of the LMA protocol. It contains the MAG interfaces form 1847 both dpn1 and dpn2. 1849 Given the task to find a LMA that supports the PMIP protocol the 1850 Client can determine that dpn1 is its only option and, depending on 1851 its requirement of OptionA, can appropriately determine which 1852 interface to select. 1854 5.2.2. Policy Creation and Installation 1856 A Policy must be installed upon an Agent in order to install policies 1857 on the selected dpn(s). This requires construction of the Action(s), 1858 Descriptor(s) and Rule(s) used by the Policy. 1860 The CONFIGURE message permits editing all information elements except 1861 monitors. The following figure shows use of a CONFIGURE message to 1862 install policy information on the Agent. 1864 +-------Router--------+ 1865 +-----------+ |+-------+ +---------+| 1866 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1867 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1868 +------+ +------+ +-----+-------+ +-------+ +---------+ 1869 | | |---(1)--Configure-------->| | 1870 | | "configure" : { | | 1871 | | "client-id" : 0, | | 1872 | | "operation-id" : 0, | | 1873 | | "edit" : [ { | | 1874 | | "edit-id" : 0, | | 1875 | | "edit-type" : "create", | | 1876 | | "target" : "/policy-information-model/ 1877 /descriptor-template", | 1878 | | "value" : { | 1879 | | "descriptor-template-key" : "desc1", | 1880 | | "descriptor-type" : "all-traffic" } | 1881 | | }, { | 1882 | | "edit-id" : 1, | | 1883 | | "edit-type" : "create", | | 1884 | | "target" : "/policy-information-model/ 1885 /action-template", | 1886 | | "value" : { | 1887 | | "action-template-key" : "action1", | 1888 | | "action-type" : "drop" } | 1889 | | }, { | 1890 | | "edit-id" : 2, | | 1891 | | "edit-type" : "create", | | 1892 | | "target" : "/policy-information-model/ 1893 /rule-template", | 1894 | | "value" : { | 1895 | | "rule-template-key" : "deny-all", | 1896 | | "descriptor-match-type" : "and", | 1897 | | "descriptor-configuration" : [{ | 1898 | | "descriptor-template-key" : "all" }],| 1899 | | "action-configuration" : [{ | 1900 | | "action-template-key" : "deny", | 1901 | | "action-order" : 0 }] | 1902 | | }, { | 1903 | | "edit-id" : 3, | | 1904 | | "edit-type" : "create", | | 1905 | | "target" : "/policy-information-model/ 1906 /policy-template", | 1907 | | "value" : { | 1908 | | "policy-template-key" : "policy1", | 1909 | | "entity-state" : "configured", | 1910 | | "rule-template" : [ { | 1911 | | "rule-template-key" : "deny-all", | 1912 | | "precedence" : 0 } ] | 1913 | | } } ] } | 1914 | | |<---(2)- Response --------| | 1915 | | | { | | 1916 | | | "agent-id" : "agent1"," | | 1917 | | | "operation-id" : 0, | | 1918 | | | "result-status" : "ok" | | 1919 | | | } | | 1920 | | | | | 1922 Figure 22: Example Policy Installation (focus on FPC reference point) 1924 In this example a Descriptor "all-traffic" Template and an Action, 1925 "drop", Template are both empty Templates. The "deny-all" Rule 1926 Template is comprised of the action and descriptor. The Rule is 1927 included in "policy1". The policy's status is "Configured" as it is 1928 a complete policy ready for immediate use. The policy could be set 1929 as "Active" if the Client intends to use it upon immediate 1930 installation in a DPN. 1932 Installation of the policy on dpn1 is shown in the following Figure. 1933 The Policy-Status is set to "Active" to make it immediately usable. 1934 Leaving the status as Configured would permit its installation on the 1935 DPN without an ability to use it in a Mobility Context. Such a use 1936 case is often referred to as policy pre-configuration. 1938 +-------Router--------+ 1939 +-----------+ |+-------+ +---------+| 1940 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1941 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1942 +------+ +------+ +-----+-------+ +-------+ +---------+ 1943 | | |---(1)--Configure-------->| | 1944 | | "configure" : { | | 1945 | | "client-id" : 0, | | 1946 | | "operation-id" : 1, | | 1947 | | "edit" : [ { | | 1948 | | "edit-id" : 0, | | 1949 | | "edit-type" : "create", | | 1950 | | "target" : "/topology-information-model/ 1951 /dpn/dpn1/dpn-policy-configuration", | 1952 | | "value" : { | 1953 | | "policy-template-key" : "policy1", | 1954 | | "policy-status" : "active" } } ] } | 1955 | | |<---(2)- Response --------|-policy--->| 1956 | | | { | install | 1957 | | | "agent-id" : "agent1"," | | 1958 | | | "operation-id" : 1, | | 1959 | | | "result-status" : "ok" | | 1960 | | | } | | 1961 | | | | | 1963 Figure 23: Example Policy Installation (focus on FPC reference point) 1965 This message uses an edit type of "create" to add the policy template 1966 directly to the installed DPN policy set. 1968 5.2.3. Simple RPC Operation 1970 A Client and Agent MUST identify themselves using the Client 1971 Identifier and Agent Identifier respectively to ensure that, for all 1972 transactions, a recipient of a FPC message can unambiguously identify 1973 the sender of the FPC message. 1975 A Client MAY direct the Agent to enforce a rule in a particular DPN 1976 by including a DPN Key value in a Mobility Context. Otherwise the 1977 Agent selects a suitable DPN to enforce one or more portions of a 1978 Mobility Context and notifies the Client about the selected DPN(s) 1979 using DPN Identifier(s). 1981 All messages sent from a Client to an Agent MUST be acknowledged by 1982 the Agent. The response must include all edit status as well as 1983 subsequent edits, which indicates the result of processing the 1984 message, as part of the Configure response. In case the processing 1985 of the message results in a failure, the Agent sets the global 1986 status, Error-Type and Error-Tag accordingly and MAY clear the 1987 entity, e.g. Mobility-Context, which caused the failure, in the 1988 response. 1990 If based upon Agent configuration or the processing of the request 1991 possibly taking a significant amount of time the Agent MAY respond 1992 with a Notify-Follows indication with optional Subsequent-Edit(s) 1993 containing the partially completed entity modifications. When a 1994 Notify-Follows indication is sent in a response, the Agent will, upon 1995 completion or failure of the operation, respond with an asynchronous 1996 Configuration-Result-Notification to the Client. 1998 A Client MAY add a property to a Mobility-Context without providing 1999 all required details of the attribute's value. In such case the 2000 Agent SHOULD determine the missing details and provide the completed 2001 property description, via Subsequent-Edit(s), back to the Client. If 2002 the processing will take too long or based upon Agent configuration, 2003 the Agent MAY respond with an OK for the Edit that indicates a 2004 Notify-Follows and also includes Subsequent-Edit(s) containing the 2005 partially completed entity edits. 2007 In case the Agent cannot determine the missing value of an 2008 attribute's value per the Client's request, it leaves the attribute's 2009 value cleared, sets the Edit Result to Error and provides an Error- 2010 Type and Error-Tag. As example, the Control-Plane needs to setup a 2011 tunnel configuration in the Data-Plane but has to rely on the Agent 2012 to determine the tunnel endpoint which is associated with the DPN 2013 that supports the Mobility-Context. The Client adds the tunnel 2014 property attribute to the FPC message and clears the value of the 2015 attribute (e.g. IP address of the local tunnel endpoint). The Agent 2016 determines the tunnel endpoint and includes the completed tunnel 2017 property in its response to the Client in a Subsequent-Edit entry. 2019 Figure 24 illustrates an exemplary session life-cycle based on Proxy 2020 Mobile IPv6 registration via MAG Control-Plane function 1 (MAG-C1) 2021 and handover to MAG Control-Plane function 2 (MAG-C2). Edge DPN1 2022 represents the Proxy CoA after attachment, whereas Edge DPN2 serves 2023 as Proxy CoA after handover. As exemplary architecture, the FPC 2024 Agent and the network control function are assumed to be co-located 2025 with the Anchor-DPN, e.g. a Router. 2027 The Target of the second request uses the Mobility-Context by name. 2028 Alternatively, the Target could have included the DPN-Key and Policy- 2029 Key to further reduce the amount of information exchanged. Setting 2030 the Target's value to the most specific node SHOULD be followed 2031 whenever practical. 2033 +-------Router--------+ 2035 +-----------+ |+-------+ +---------+| 2036 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 2037 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN1 | 2038 +------+ +------+ +-----+-------+ +-------+ +---------+ 2039 [MN attach] | | | | 2040 |-------------PBU----->| | | 2041 | | |---(1)--Configure-------->| | 2042 | | "configure" : { | | 2043 | | "client-id" : 0, | | 2044 | | "operation-id" : 3, | | 2045 | | "edit" : [ | | 2046 | | "edit-id" : 0, | | 2047 | | "edit-type" : "create", | | 2048 | | "target" : "/mobility-context", | 2049 | | "value" : { | 2050 | | "mobility-context-key" : "ctxt1", | 2051 | | "delegating-ip-prefix" : [ ], | 2052 | | "dpn" : [ { | 2053 | | "dpn-key" : "DPN1", | 2054 | | "role" : "lma", | 2055 | | "service-data-flow" : [ { 2056 | | "identifier" : 0, 2057 | | "interface" : [ "interface-key" : "ifc1" ], 2058 | | "service-data-flow-policy-configuration" :[ 2059 | | {"policy-template-key" : 2060 "dl-tunnel-with-qos", 2061 | | "policy-status" : "active", 2062 | | "policy-configuration" : [ 2063 | | {"index" : 0, 2064 | | "qos-template" : }, 2065 | | {"index" : 1, 2066 | | "tunnel" :
}, 2067 | | {"policy-template-key" : "ul-tunnel", 2068 | | "policy-status" : "active", 2069 | | "policy-configuration" : [ 2070 | | {"index" : 1, 2071 | | "tunnel" :
    }] }] 2072 | | } ] } ] } ] } ] } | | 2073 | | | |--tun1 up->| 2074 | | | | | 2075 | | | |--tc qos-->| 2076 | | | | | 2077 | | |<---(2)- Response --------|-route add>| 2078 | | | { | | 2079 | | | "agent-id" : "agent1"," | | 2080 | | | "operation-id" : 3, | | 2081 | | | "result-status" : "ok", | | 2082 | | | } | | 2083 | | | | | 2084 |<------------PBA------| | | 2085 | | | | | 2086 | +----+ | | | | 2087 | |Edge| | | | | 2088 | |DPN1| | | | | 2089 | +----+ | | | | 2090 | | | 2091 | |-=======================================================-| 2092 | | | | 2093 | [MN handover] | | | 2094 | |---PBU ---->| | | 2095 | | |--(3)- CONFIG(MODIFY)---->| | 2096 | | "configure" : { |-tun1 mod->| 2097 | | "client-id" : 0, | | 2098 | | "operation-id" : 4, | | 2099 | | "edit" : [ | | 2100 | | "edit-id" : 0, | | 2101 | | "edit-type" : "merge", | | 2102 | | "target" : "/mobility-context/ctxt1", | 2103 | | "value" : { | 2104 | | "mobility-context-key" : "ctxt1", | 2105 | | "dpn" : "[ { | 2106 | | "dpn-key" : "DPN1", | 2107 | | "service-data-flow" : [ { 2108 | | "identifier" : 0, 2109 | | "service-data-flow-policy-configuration":[ 2110 | | {"policy-template-key" : 2111 "dl-tunnel-with-qos", 2112 | | "policy-configuration" : [ 2113 | | {"index" : 1, 2114 | | "tunnel" : }]}] 2115 | | } ] } ] } ] } | | 2116 | |<--PBA------| | | 2117 | | | |-tun1 mod->| 2118 | | |<---(4)- OK --------------| | 2119 | | | { | | 2120 | | | "agent-id" : "agent1"," | | 2121 | | | "operation-id" : 4, | | 2122 | | | "result-status" : "ok", | | 2123 | | | } | | 2124 | | +----+ | | | 2125 | | |Edge| | | | 2126 | | |DPN2| | | | 2127 | | +----+ | | | 2128 | | | | | | 2129 | | |-============================================-| 2130 | | | | | 2132 Figure 24: Single Agent with Handover (focus on FPC reference point) 2134 After reception of the Proxy Binding Update (PBU) at the LMA Control- 2135 Plane function (LMA-C), the LMA-C selects a suitable DPN, which 2136 serves as Data-Plane anchor to the mobile node's (MN) traffic. The 2137 LMA-C adds a new logical Mobility-Context to the DPN to treat the 2138 MN's traffic (1) and includes a Mobility-Context-Key (ctxt1) in the 2139 Configure command. The LMA-C identifies the selected Anchor DPN by 2140 including the associated DPN identifier. 2142 The LMA-C adds policy template properties during the creation of the 2143 new Mobility-Context. One policy, "dl-tunnel-with-qos", is an 2144 example template that permits tunnel forwarding of traffic destined 2145 to the MN's HNP, i.e. downlink traffic, with optional QoS parameters. 2146 Another policy, "ul-tunnel", provides a simple uplink anchor 2147 termination template where uplink tunnel information is provided. 2149 The downlink tunnel information specifies the destination endpoint 2150 (Edge DPN1). 2152 Upon reception of the Mobility-Context, the FPC Agent utilizes local 2153 configuration commands to create the tunnel (tun1) as well as the 2154 traffic control (tc) to enable QoS differentiation. After 2155 configuration has been completed, the Agent applies a new route to 2156 forward all traffic destined to the MN's HNP specified as a property 2157 in the Mobility-Context and applied the configured tunnel interface 2158 (tun1). 2160 During handover, the LMA-C receives an updating PBU from the handover 2161 target MAG-C2. The PBU refers to a new Data-Plane node (Edge DPN2) 2162 to represent the new tunnel endpoint in the downlink as required. 2163 The LMA-C sends a Configure message (3) to the Agent to modify the 2164 existing tunnel property of the existing Mobility-Context and to 2165 update the downlink tunnel endpoint from Edge DPN1 to Edge DPN2. 2166 Upon reception of the Configure message, the Agent applies updated 2167 tunnel property to the local configuration and responds to the Client 2168 (4). 2170 +-------Router--------+ 2171 +-----------+ |+-------+ +---------+| 2172 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 2173 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 2174 +------+ +------+ +-----+-------+ +-------+ +---------+ 2175 [MN detach] | | | | 2176 |-------------PBU----->| | | 2177 | | |---(1)--Configure-------->| | 2178 | | "configure" : { | | 2179 | | "client-identifier" : 0, | | 2180 | | "operation-id" : 5, | | 2181 | | "edits" : [ | | 2182 | | "edit-id" : 0, | | 2183 | | "edit-type" : "merge", | | 2184 | | "target" : "/mobility-context/ctxt1 | 2185 | | /dpn/DPN1/service-data-flow/0 | 2186 | | /service-data-flow-policy- 2187 configuration/dl-tunnel-with-qos/1" 2188 | | "value" : { | | 2189 | | "tunnel" : null | | 2190 | | } ] } | | 2191 |<------------PBA------| |--tun1 ->| 2192 | | | | down | 2193 | | | | | 2194 | | |<---(2)- Response --------| | 2195 | | | { | | 2196 | | | "agent-id" : "agent1"," | | 2197 | | | "operation-id" : 5, | | 2198 | | | "result-status" : "ok", | | 2199 | | | } | | 2200 | | | | | 2201 | | [ MinDelayBeforeBCEDelete expires ] | | 2202 | | | | | 2203 | | |---(3)--Configure-------->|-- tun1 -->| 2204 | | "configure" : { | delete | 2205 | | "client-identifier" : 0, | | 2206 | | "operation-id" : 6, | | 2207 | | "edits" : [ | | 2208 | | "edit-id" : 0, | | 2209 | | "edit-type" : "delete", | | 2210 | | "target" : "/mobility-context/ctxt1" | 2211 | | ] } | | 2212 | | | | | 2213 | | |<---(4)- Response --------| | 2214 | | | { | | 2215 | | | "agent-id" : "agent1"," | | 2216 | | | "operation-id" : 6, | | 2217 | | | "result-status" : "ok", | | 2218 | | | } | | 2219 | | | |-- route ->| 2220 | | | | remove | 2221 | | | | | 2223 Figure 25: Single Agent with Deletion (focus on FPC reference point) 2225 When a teardown of the session occurs, MAG-C1 will send a PBU with a 2226 lifetime value of zero. The LMA-C sends a Configure message (1) to 2227 the Agent to modify the existing tunnel property of the existing 2228 Mobility-Context to delete the tunnel information. Upon reception of 2229 the Configure message, the Agent removes the tunnel configuration and 2230 responds to the Client (2). Per [RFC5213], the PBA is sent back 2231 immediately after the PBA is received. 2233 If no valid PBA is received after the expiration of the 2234 MinDelayBeforeBCEDelete timer (see [RFC5213]), the LMA-C will send a 2235 Configure (3) message with a deletion request for the Context. Upon 2236 reception of the message, the Agent deletes the tunnel and route on 2237 the DPN and responds to the Client (4). 2239 When a multi-DPN Agent is used the DPN list permits several DPNs to 2240 be provisioned in a single message for the single Mobility-Context. 2242 +-----------+ +-------+ +---------+ 2243 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 2244 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN1 | 2245 +------+ +------+ +-----+-------+ +-------+ +---------+ 2246 [MN attach] | | | | 2247 |-------------PBU----->| | | 2248 | | |---(1)--Configure-------->| | 2249 | | "configure" : { |--tun1 up->| 2250 | | "client-id" : 0, | | 2251 | | "operation-id" : 0, | | 2252 | | "edit" : [ |--tc qos-->| 2253 | | "edit-id" : 0, | | 2254 | | "edit-type" : "create", | | 2255 | | "target" : "/mobility-context", | 2256 | | "value" : { | 2257 | | "mobility-context-key" : "ctxt1", | 2258 | | "delegating-ip-prefix" : [ ], | 2259 | | "dpn" : [ { | 2260 | | "role" : "lma", | 2261 | | "dpn-key" : "DPN1", | 2262 | | "service-data-flow" : [ { 2263 | | "identifier" : 0, 2264 | | "interface" : [ "interface-key" : "ifc1" ], 2265 | | "service-data-flow-policy-configuration" :[ 2266 | | {"policy-template-key" : 2267 "dl-tunnel-with-qos", 2268 | | "policy-status" : "active", 2269 | | "policy-configuration" : [ 2270 | | {"index" : 0, 2271 | | "qos-template" : }, 2272 | | {"index" : 1, 2273 | | "tunnel" :
    }, 2274 | | {"policy-template-key" : "ul-tunnel", 2275 | | "policy-status" : "active", 2276 | | "policy-configuration" : [ 2277 | | {"index" : 1, 2278 | | "tunnel" :
      }] }] 2279 | | } ] } ] }, { 2280 | | "dpn-key" : "DPN2", | 2281 | | "role" : "mag", | 2282 | | "service-data-flow" : [ { 2283 | | "identifier" : 0, 2284 | | "interface" : [ "interface-key" : "ifc2" ], 2285 | | "service-data-flow-policy-configuration" :[ 2286 | | {"policy-template-key" : 2287 "dl-tunnel-with-qos", 2288 | | "policy-status" : "active", 2289 | | "policy-configuration" : [ 2290 | | {"index" : 0, 2291 | | "qos-template" : }, 2292 | | {"index" : 1, 2293 | | "tunnel" :
      }, 2294 | | {"policy-template-key" : "ul-tunnel", 2295 | | "policy-status" : "active", 2296 | | "policy-configuration" : [ 2297 | | {"index" : 1, 2298 | | "tunnel" :
        }] }] 2299 | | } ] } ] } | | 2300 | | ] } ] } | | 2301 | | | | | 2302 | | |<---(2)- Response --------| | 2303 | | | { |-route add>| 2304 | | | "agent-id" : "agent1"," | | 2305 | | | "operation-id" : 0, | | 2306 | | | "result-status" : "ok", | | 2307 | | | "notify-follows" : "true", | 2308 | | | } | | 2309 | | | | | 2310 |<------------PBA------| | | 2311 | | | | | 2312 | +----+ | | | 2313 | |Edge| | | | 2314 | |DPN2| | | | 2315 | +----+ | | | 2316 | |<---------------------- tun1 up -------------| | 2317 | |<---------------------- tc qos --------------| | 2318 | |<---------------------- route add -----------| | 2319 | | | | | 2320 | | |<(3) Configure-Result- | | 2321 | | | Notification | | 2322 | | | { |-route add>| 2323 | | | "agent-id" : "agent1"," | | 2324 | | | "operation-id" : 3, | | 2325 | | | "result-status" : "ok", | | 2326 | | | "notify-follows" : "true", | 2327 | | | "edit-status" : [ | | 2328 | | | "edit-id" : 0, | | 2329 | | | "edit-status" : "ok" | | 2330 | | | ] } | | 2331 | | | | | 2332 | | | | | 2334 Figure 26: Exemplary Message Sequence for Multi-DPN Agent 2336 Figure 26 shows how the first 2 messages in Figure 24 are supported 2337 when a multi-DPN Agent communicates with both Anchor DPN1 and Edge 2338 DPN2. In such a case, the FPC Client sends the downlink and uplink 2339 for both DPNs in the DPN Reference List of the same Mobility-Context. 2340 Message 1 shows the DPN Set with all entries. Each entry identifies 2341 the DPN. 2343 The Agent responds with an OK and Notify-Follows indication while it 2344 simultaneously provisions both DPNs. Upon successful completion, the 2345 Agent responds to the Client with a Configuration-Result-Notification 2346 indicating the operation status. 2348 5.2.4. Policy and Mobility on the Agent 2350 A Client may build Policy and Topology using Configure messages. 2352 The Client may add, modify or delete many DPN Policies as DPN Policy 2353 Configurations and Mobility-Contexts in a single FPC message. This 2354 includes linking Mobility-Contexts to DPN Policies as well as 2355 creating the Policy, Rules Actions and Descriptors. As example, a 2356 Rule which performs re-writing of an arriving packet's destination IP 2357 address from IP_A to IP_B matching an associated Descriptor, can be 2358 enforced in the Data-Plane via an Agent to implicitly consider 2359 matching arriving packet's source IP address against IP_B and re- 2360 write the source IP address to IP_A. 2362 Figure 27 illustrates the generic policy configuration model as used 2363 between a FPC Client and a FPC Agent. 2365 Descriptor_1 -+ +- Action_1 2366 | | 2367 Descriptor_2 -+----+- Action_2 2368 +-----------+ 2369 /Precendent#/--------+ 2370 +----------+ | 2371 | 2372 Descriptor_3 -+ +- Action_3 +- 2373 | | | ^ 2374 Descriptor_4 -+----+- Action_4 | | 2375 +-----------+ | | 2376 /Precendent#/--------+ | 2377 +----------+ | 2378 2380 +---------------------+ +----------------------+ 2381 | Bind 1..M traffic | | Bind 1..N traffic | 2382 | Descriptors to | --> | treatment actions | 2383 | to a Policy | | to a Policy | 2384 +---------------------+ +----------------------+ 2386 | | 2387 +-------------- Data-Plane Rule ------------------+ 2389 Figure 27: Structure of Configurable Policies 2391 As depicted in Figure 27, the DPN Settings represents the anchor of 2392 Rules through the Policy / Rule hierarchy. A Client and Agent use 2393 the identifier of the associated Policy to directly access the Rule 2394 and perform modifications of traffic Descriptors or Action 2395 references. Arriving packets are matched against traffic according 2396 to Rule precedence and Descriptors. If a Rule is applicable the 2397 packet is treated according to the ordered Action values. 2399 A Client associates a Precedence value for the Rule's Descriptors, to 2400 allow unambiguous traffic matching on the Data-Plane. 2402 Figure 28 illustrates the generic context configuration model as used 2403 between a Client and an Agent. 2405 2406 ^ 2407 | 2408 <--- 2409 ^ 2410 | 2411 | 2412 ^ | 2413 | | 2414 <--- 2416 +-------------------+ +---------------------+ 2417 | Bind 1..M traffic | | Bind 1..N traffic | 2418 | selectors to | --> | treatment / qos | 2419 | a Context | | actions to a | 2420 | | | Context | 2421 +-------------------+ +---------------------+ 2423 | | 2424 +-------------- Data-Plane Rule ------------------+ 2426 Figure 28: Mobility Context Hierarchy 2428 Figure 28 represents a mobility session hierarchy. A Client and 2429 Agent directly assigns values such as downlink traffic descriptors, 2430 QoS information, etc. A Client and Agent use the context identifiers 2431 to access the descriptors, qos information, etc. to perform 2432 modifications. From the viewpoint of packet processing, arriving 2433 packets are matched against traffic Descriptors and processed 2434 according to the qos or other mobility profile related Actions 2435 specified in the Mobility-Context's and Service-Data-Flow's' 2436 properties. If present, a Policy could contain tunnel information to 2437 encapsulate and forward the packet. 2439 A second Mobility-Context also references Mobility-Context-ID1 in the 2440 figure. Based upon the technology a property in a parent context 2441 (parent mobility-context-id reference) MAY be inherited by its 2442 descendants. This permits concise over the wire representation. 2443 When a Client deletes a parent Context all children are also deleted. 2445 5.2.5. Monitor Example 2447 The following example shows the installation of a DPN level monitor 2448 (1) to observe ifc1 status, a property that is either "up" or "down", 2449 and another monitor to watch for interface events. The interface 2450 experiences an outage which is reported to the Client via a Notify 2451 (3) message. At a later time a Probe (4) and corresponding Notify 2452 (5) is sent. Finally, the monitors are de-registered (6). 2454 Note, specific event identifiers and types are out of scope. 2456 +-------Router--------+ 2457 +-----------+ |+-------+ +---------+| 2458 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 2459 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 2460 +------+ +------+ +-----+-------+ +-------+ +---------+ 2461 | | |---(1)--Configure-------->| | 2462 | | "register-monitor" : { | | 2463 | | "client-id" : 0, | | 2464 | | "operation-id" : 0, | | 2465 | | "monitor" : [ { | | 2466 | | "monitor-key" : "ifc1-status", | 2467 | | "target" : "/dpn/dpn1/interface/ifc1/status" 2468 | | "deferrable" : false | 2469 | | }, { | 2470 | | "monitor-key" : "ifc1-events", | 2471 | | "target" : "/dpn/dpn1/interface/ifc1" | 2472 | | "deferrable" : false, | 2473 | | "configuration" : { | 2474 | | "target-event-configuration" : [ 0, 2475 | | 1, 3, .. ] } } ] } | 2476 | | |<---(2)- Response --------| | 2477 | | | { | | 2478 | | | "agent-id" : "agent1"," | | 2479 | | | "operation-id" : 0, | | 2480 | | | "result-status" : "ok", | | 2481 | | | } | | 2482 | | | | | 2483 [ ifc1 goes down which is reported as event type 3 ] 2484 | | |<---(3)-- NOTIFY ---------| | 2485 | | "notify" : { | | 2486 | | "notification-id" : 0, | | 2487 | | "timestamp" : ..., | | 2488 | | "report" : [ { | | 2489 | | "monitor-key" : "ifc1-events", | 2490 | | "trigger" : "subscribed-event-occurred", 2491 | | "report-value" : { 3 } } ] } | 2492 | | | | | 2493 | | |---(4)-- Probe -------->| | 2494 | | "probe" : { | | 2495 | | "client-id" : 0, | | 2496 | | "operation-id" : 1, | | 2497 | | "monitor" : [ | | 2498 | | "monitor-key" : "ifc1-status" ] } | 2499 | | |<---(5)- Response --------| | 2500 | | | { | | 2501 | | | "agent-id" : "agent1"," | | 2502 | | | "operation-id" : 1, | | 2503 | | | "result-status" : "ok", | | 2504 | | | } | | 2505 | | | | | 2506 | | |<---(6)-- NOTIFY ---------| | 2507 | | "notify" : { | | 2508 | | "notification-id" : 1, | | 2509 | | "timestamp" : ..., | | 2510 | | "report" : [ { | | 2511 | | "monitor-key" : "ifc1-status", | 2512 | | "trigger" : "probe", 2513 | | "report-valuerporte" : { "up" } } ] } | 2514 | | | | | 2515 | | |---(7)- Deregister ------>| | 2516 | | "deregister-monitor" : { | | 2517 | | "client-id" : 0, | | 2518 | | "operation-id" : 2, | | 2519 | | "monitor" : [ | | 2520 | | { "monitor-key" : "ifc1-events" }, | 2521 | | { "monitor-key" : "ifc1-status", | 2522 | | "send-data" : true } ] } | 2523 | | |<---(8)- Response --------| | 2524 | | | { | | 2525 | | | "agent-id" : "agent1"," | | 2526 | | | "operation-id" : 2, | | 2527 | | | "result-status" : "ok", | | 2528 | | | } | | 2529 | | | | | 2530 | | |<---(9)-- NOTIFY ---------| | 2531 | | "notify" : { | | 2532 | | "notification-id" : 2, | | 2533 | | "timestamp" : ..., | | 2534 | | "report" : [ { | | 2535 | | "monitor-key" : "ifc1-status", | 2536 | | "trigger" : "deregistration-final-value", 2537 | | "report-value" : { "up" } } ] } | 2539 Figure 29: Monitor Example (focus on FPC reference point) 2541 6. Templates and Command Sets 2543 Configuration templates are shown below. 2545 6.1. Monitor Configuration Templates 2547 A periodic configuration specifies a time interval (ms) for 2548 reporting. 2550 A scheduled configuration specifies a time for reporting. 2552 A threshold configuration MUST have at least one hi or low threshold 2553 and MAY have both. 2555 A Target-Events-Configuration is a list of Events that, when 2556 generated by the Target, results in a Monitor notification. 2558 | 2559 +-[Monitor] 2560 ... 2561 | +-[Configuration] 2562 | | +-[Periodic-Configuration] 2563 | | | +-[(Unsigned32) Period:] 2564 ... 2565 | +-[Configuration] 2566 | | +-[Schedule-Configuration] 2567 | | | +-[(Unsigned32) Schedule:] 2568 ... 2569 | +-[Configuration] 2570 | | +-[Threshold-Configuration] 2571 | | | +-[(Unsigned32) Low] 2572 | | | +-[(Unsigned32) Hi] 2573 ... 2574 | +-[Configuration] 2575 | | +-[Target-Events-Configuration] 2576 | | | +-[(Unsigned32) Event-Key:] 2578 Figure 30: Monitor Configuration Templates 2580 6.2. Descriptor Templates 2582 A IP-Prefix-Template MUST have at least the To or From IP Prefix / 2583 Length populated. The IP Prefix specifies and Address and Length. 2585 The PMIP Traffic Selector template is mapped according to [RFC6088] 2587 The RFC 5777 Classifier is a structured version of common filter 2588 rules and follows the format specified in [RFC5777]. The Flow-Label, 2589 Flow-Label range and ECN-IP-Codepoint specified in [RFC7660] are 2590 added to the Descriptor as well. 2592 | 2593 +-[ip-prefix-template] 2594 | +-[(IP Prefix / Length) To-IP-Prefix] 2595 | +-[(IP Prefix / Length) From-IP-Prefix] 2596 ... 2597 +-[pmip-traffic-selector] 2598 | +-[(Enumerated - IPv4 or IPv6) ts-format] 2599 | +-[ipsec-spi-range] 2600 | | +-[ (ipsec-spi) start-spi: ] 2601 | | +-[ (ipsec-spi) end-spi ] 2602 | +-[source-port-range] 2603 | | +-[ (port-number) start-port: ] 2604 | | +-[ (port-number) end-port ] 2605 | +-[destination-port-range] 2606 | | +-[ (port-number) start-port: ] 2607 | | +-[ (port-number) end-port ] 2608 | +-[source-address-range-v4] 2609 | | +-[ (ipv4-address) start-address: ] 2610 | | +-[ (ipv4-address) end-address ] 2611 | +-[destination-address-range-v4] 2612 | | +-[ (ipv4-address) start-address: ] 2613 | | +-[ (ipv4-address) end-address ] 2614 | +-[ds-range] 2615 | | +-[ (dscp) start-ds: ] 2616 | | +-[ (dscp) end-ds ] 2617 | +-[protocol-range] 2618 | | +-[ (uint8) start-protocol: ] 2619 | | +-[ (uint8) end-protocol ] 2620 | +-[source-address-range-v6] 2621 | | +-[(ipv6-address) start-address: ] 2622 | | +-[(ipv6-address) end-address ] 2623 | +-[destination-address-range-v6] 2624 | | +-[(ipv6-address) start-address: ] 2625 | | +-[(ipv6-address) end-address ] 2626 | +-[flow-label-range] 2627 | | +-[(ipv6-flow-label) start-flow-label ] 2628 | | +-[(ipv6-flow-label) end-flow-label ] 2629 | +-[traffic-class-range] 2630 | | +-[ (dscp) start-traffic-class ] 2631 | | +-[ (dscp) end-traffic-class ] 2632 | +-[next-header-range] 2633 | | +-[ (uint8) start-next-header ] 2634 | | +-[ (uint8) end-next-header ] 2635 ... 2636 +-[rfc5777-classifier] 2637 | +-[Extensible: True] 2638 | +-[(uint8) protocol] 2639 | +-[(Enumerated - In/Out/Both) Direction] 2640 | +-[From-Spec] 2641 | | +-[(ip-address) IP-Address] 2642 | | +-[IP-Address-Range] 2643 | | | +-[(ip-address) IP-Address-Start] 2644 | | | +-[(ip-address) IP-Address-End] 2645 | | +-[IP-Address-Mask] 2646 | | | +-[(ip-address) IP-Address:] 2647 | | | +-[(Unsigned 32) IP-Bit-Mask-Width:] 2648 | | +-[(mac-address) MAC-Address] 2649 | | +-[MAC-Address-Mask] 2650 | | | +-[(mac-address) MAC-Address:] 2651 | | | +-[(mac-address) MAC-Address-Mask-Pattern:] 2652 | | +-[(eui64-address) EUI64-Address] 2653 | | +-[EUI64-Address-Mask] 2654 | | | +-[(eui64-address) EUI64-Address:] 2655 | | | +-[(eui64-address) EUI64-Address-Mask-Pattern:] 2656 | | +-[(Integer 32) Port] 2657 | | +-[Port-Range] 2658 | | | +-[(Integer 32) Port-Start] 2659 | | | +-[(Integer 32) Port-End] 2660 | | +-[(Boolean) Negated] 2661 | | +-[(Boolean) Use-Assigned-Address] 2662 | +-[To-Spec] (O) 2663 | | +-[(ip-address) IP-Address] 2664 | | +-[IP-Address-Range] 2665 | | | +-[(ip-address) IP-Address-Start] 2666 | | | +-[(ip-address) IP-Address-End] 2667 | | +-[IP-Address-Mask] 2668 | | | +-[(ip-address) IP-Address:] 2669 | | | +-[(Unsigned 32) IP-Bit-Mask-Width:] 2670 | | +-[(mac-address) MAC-Address] 2671 | | +-[MAC-Address-Mask] 2672 | | | +-[(mac-address) MAC-Address:] 2673 | | | +-[(mac-address) MAC-Address-Mask-Pattern:] 2674 | | +-[(eui64-address) EUI64-Address] 2675 | | +-[EUI64-Address-Mask] 2676 | | | +-[(eui64-address) EUI64-Address:] 2677 | | | +-[(eui64-address) EUI64-Address-Mask-Pattern:] 2678 | | +-[(Integer 32) Port] 2679 | | +-[Port-Range] 2680 | | | +-[(Integer 32) Port-Start] 2681 | | | +-[(Integer 32) Port-End] 2682 | | +-[(Boolean) Negated] 2683 | | +-[(Boolean) Use-Assigned-Address] 2684 | +-[(dscp) Diffserv-Code-Point] 2685 | +-[(Boolean) Fragmentation-Flag ~ False] 2686 | +-[IP-Option] 2687 | +-[TCP-Option] 2688 | +-[TCP-Flags] 2689 | +-[ICMP-Type] 2690 | +-[ETH-Option] 2691 | +-[ecn-ip-codepoint] 2692 | +-[(flowlabel) flow-label] 2693 | +-[flow-label-range] 2694 | | +-[(flowlabel) flow-label-start] 2695 | | +-[(flowlabel) flow-label-end] 2697 Figure 31: Descriptor Templates 2699 6.3. Tunnel Templates 2701 The Network Service Header is specified in [RFC8300]. 2703 The MPLS SR Stack is specified in 2704 [I-D.ietf-spring-segment-routing-mpls]. 2706 The IPv6 SR Stack is specified in 2707 [I-D.ietf-6man-segment-routing-header]. 2709 A tunnel MUST have the local-address or remote-address (or both) 2710 populated. 2712 For GRE, the gre-key MUST be present. 2714 For GTP (GPRS Tunneling Protocol), the following attributes MAY be 2715 present 2717 local tunnel endpoint identifier (teid) - MUST be present if 2718 local-address is nonempty 2720 remote tunnel endpoint identifier (teid) - MUST be present if 2721 remote-address is nonempty 2723 sequence-numbers-on - Indicates that sequence numbers will be used 2725 Tunnels can be used as Next Hop and Descriptor values. 2727 | 2728 +-[next-hop-template] 2729 | +-[Extensible: True] 2730 | +-[(ip-address) address] 2731 | +-[(mac-address) mac-address] 2732 | +-[(service-path-id) service-path] 2733 | +-[(mpls-label) mpls-path] 2734 | +-[(network service header) nsh] 2735 | +-[(Unsigned Integer) interface] 2736 | +-[(Unsigned 128) segment-identifier] 2737 | +-[(MPLS Stack) mpls-label-stack] 2738 | +-[(MPLS SR Stack) mpls-sr-stack] 2739 | +-[(IPv6 SR Stack) srv6-stack] 2740 | +-[tunnel-template] 2741 ... 2742 | 2743 +-[tunnel-template] 2744 | +-[Extensible: True] 2745 | +-[(address) local-address] 2746 | +-[(address) remote-address] 2747 | +-[mtu] 2748 | +-[(Enumeration - ipv4(0), ipv6(1), dual(2) payload_type:] 2749 | +-[(Enumeration - ip-in-ip(0), 2750 udp(1), gre(2), gtpv1(3), gtpv2(4)) type:] 2751 | +-[interface] 2752 | +-[next-hop] 2753 | +-[gre-key:] (type == gre) 2754 | +-[gtp-info] (type == gtpv1 or type == gtpv2 ) 2755 | | +-[(Unsigned 32) local-teid] 2756 | | +-[(Unsigned 32) remote-teid] 2757 | | +-[(Boolean) sequence-numbers-on] (type == gtpv1) 2759 Figure 32: Tunnel Templates 2761 6.4. Action Templates 2763 The following figure shows common next-hop (set next-hop) and tunnel 2764 templates for Actions. 2766 Drop action has no values. 2768 Rewrite uses a Descriptor to set the values of the packet. Exactly 2769 one Descriptor MUST be present. Only the Destination and Source port 2770 fields, if present, are used from the Descriptor. 2772 Copy-Forward creates a copy of the packet and then forwards it in 2773 accordance to the nexthop value. 2775 | 2776 +-[drop-template] 2777 ... 2778 | 2779 +-[rewrite-template] 2780 | +-[Extensible: True] 2781 | +-[ip-prefix-template] 2782 | +-[pmip-traffic-selector] 2783 | +-[rfc5777-classifier] 2784 ... 2785 | 2786 +-[copy-forward-template] 2787 | +-[Extensible: True] 2788 | +-[next-hop:] 2790 Figure 33: Action Templates 2792 6.5. Quality of Service Action Templates 2794 PMIP QoS is specified in [RFC7222]. 2796 | 2797 +-[qos-template] 2798 | +-[Extensible: True] 2799 | +-[(dscp) trafficclass] 2800 | +-[pmip-qos] 2801 | | +-[(Unsigned 32) per-mn-agg-max-dl] 2802 | | +-[(Unsigned 32) per-mn-agg-max-ul] 2803 | | +-[per-session-agg-max-dl] 2804 | | | +-[(Unsigned 32) max-rate:] 2805 | | | +-[(Boolean) service-flag:] 2806 | | | +-[(Boolean) exclude-flag:] 2807 | | +-[per-session-agg-max-ul] 2808 | | | +-[(Unsigned 32) max-rate:] 2809 | | | +-[(Boolean) service-flag:] 2810 | | | +-[(Boolean) exclude-flag:] 2811 | | +-[allocation-retention-priority] 2812 | | | +-[(Unsigned 8) priority-level:] 2813 | | | +-[(Enumeration) preemption-capability:] 2814 | | | +-[(Enumeration) preemption-vulnerability:] 2815 | | +-[(Unsigned 32) agg-max-dl] 2816 | | +-[(Unsigned 32) agg-max-ul] 2817 | | +-[(Unsigned 32) gbr-dl] 2818 | | +-[(Unsigned 32) gbr-ul] 2820 Figure 34: QoS Templates 2822 6.6. PMIP Command-Set 2824 The following Command Set values are supported for IETF PMIP. 2826 o assign-ip - Assign the IP Address for the mobile session. 2828 o assign-dpn - Assign the Data-plane Node. 2830 o session - Assign values for the Session Level. 2832 o uplink - Command applies to uplink. 2834 o downlink - Command applies to downlink. 2836 6.7. 3GPP Specific Templates and Command-Set 2838 3GPP support is optional and detailed in this section. The following 2839 acronyms are used: 2841 APN-AMBR: Access Point Name Aggregate Maximum Bit Rate 2843 UE-AMBR: User Equipment Aggregate Maximum Bit Rate 2845 QCI: QoS Class Identifier 2847 EBI: EPS Bearer Identity 2849 LBI: Linked Bearer Identity 2851 IMSI: International Mobile Subscriber Identity 2853 TFT: Traffic Flow Template (TFT) 2855 Generally, 3GPP QoS values should use the qos-template. Note: User 2856 Equipment Aggregate Maximum Bit Rate (UE-AMBR) maps to the per-mn- 2857 agg-max-dl and per-mn-agg-max-ul. 2859 | 2860 +-[ MN-Policy-Template ] 2861 | +-[(Unsigned 64) imsi:] 2862 ... 2863 +-[tunnel-template] 2864 | +-[Extensible: True] 2865 | +-[(unsigned 4) ebi:] 2866 | +-[(unsigned 4) lbi] 2867 ... 2868 +-[qos-template] 2869 | +-[Extensible: True] 2870 | +-[(unsigned 4) qos-class-identifier] 2871 | +-[(Unsigned 32) ue-agg-max-bitrate] 2872 | +-[(Unsigned 32) apn-agg-max-bitrate] 2873 ... 2875 Figure 35: 3GPP Mobility Templates 2877 | 2878 +-[ packet-filter ] 2879 | +-[Extensible: True] 2880 | +-[(Unsigned 8) identifier:] 2881 | +-[Contents:] 2882 | | +-[(ip-address) ipv4-ipv6-local] 2883 | | +-[(ipv6-prefix) ipv6-prefix-local] 2884 | | +-[(ip-address) ipv4-ipv6-remote] 2885 | | +-[(ipv6-prefix) ipv6-prefix-remote] 2886 | | +-[(Unsigned 8) protocol-next-header] 2887 | | +-[(Unsigned 16) local-port] 2888 | | +-[local-port-range] 2889 | | | +-[(Unsigned 16) local-port-lo] 2890 | | | +-[(Unsigned 16) local-port-hi] 2891 | | +-[(Unsigned 16) remote-port] 2892 | | +-[remote-port-range] 2893 | | | +-[(Unsigned 16) remote-port-lo] 2894 | | | +-[(Unsigned 16) remote-port-hi] 2895 | | +-[(Unsigned 32) sec-parameter-index] 2896 | | +-[(dscp) traffic-class] 2897 | | +-[traffic-class-range] 2898 | | | +-[(dscp) traffic-class-lo] 2899 | | | +-[(dscp) traffic-class-hi] 2900 | | +-[(dscp) flow-label] 2901 ... 2903 Figure 36: 3GPP Packet Filter Template (Descriptor) 2905 The following Command Set values are supported for 3GPP. 2907 o assign-ip - Assign the IP Address for the mobile session. 2909 o assign-fteid-ip - Assign the Fully Qualified TEID (F-TEID) LOCAL 2910 IP address. 2912 o assign-fteid-teid - Assign the Fully Qualified TEID (F-TEID) LOCAL 2913 TEID. 2915 o session - Assign values for the Session Level. When this involves 2916 'assign-fteid-ip' and 'assign-fteid-teid', the values are part of 2917 the default bearer. 2919 o uplink - Command applies to uplink. 2921 o downlink - Command applies to downlink. 2923 o assign-dpn - Assign the Data-plane Node. 2925 7. Implementation Status 2927 Three FPC Agent implementations have been made to date. The first 2928 was based upon Version 03 of the draft and followed Model 1. The 2929 second follows Version 04 of the document. Both implementations were 2930 OpenDaylight plug-ins developed in Java by Sprint. Version 04 is now 2931 primarily enhanced by GS Labs. Version 03 was known as fpcagent and 2932 version 04's implementation is simply referred to as 'fpc'. A third 2933 has been developed on an ONOS Controller for use in MCORD projects. 2935 fpcagent's intent was to provide a proof of concept for FPC Version 2936 03 Model 1 in January 2016 and research various errors, corrections 2937 and optimizations that the Agent could make when supporting multiple 2938 DPNs. 2940 As the code developed to support OpenFlow and a proprietary DPN from 2941 a 3rd party, several of the advantages of a multi-DPN Agent became 2942 obvious including the use of machine learning to reduce the number of 2943 Flows and Policy entities placed on the DPN. This work has driven 2944 new efforts in the DIME WG, namely Diameter Policy Groups 2945 [I-D.bertz-dime-policygroups]. 2947 A throughput performance of tens per second using various NetConf 2948 based solutions in OpenDaylight made fpcagent, based on version 03, 2949 undesirable for call processing. The RPC implementation improved 2950 throughput by an order of magnitude but was not useful based upon 2951 FPC's Version 03 design using two information models. During this 2952 time the features of version 04 and its converged model became 2953 attractive and the fpcagent project was closed in August 2016. 2955 fpcagent will no longer be developed and will remain a proprietary 2956 implementation. 2958 The learnings of fpcagent has influenced the second project, fpc. 2959 Fpc is also an OpenDaylight project but is an open source release as 2960 the Opendaylight FpcAgent plugin (https://wiki.opendaylight.org/view/ 2961 Project_Proposals:FpcAgent). This project is scoped to be a fully 2962 compliant FPC Agent that supports multiple DPNs including those that 2963 communicate via OpenFlow. The following features present in this 2964 draft and others developed by the FPC development team have already 2965 led to an order of magnitude improvement. 2967 Migration of non-realtime provisioning of entities such as 2968 topology and policy allowed the implementation to focus only on 2969 the rpc. 2971 Using only 5 messages and 2 notifications has also reduced 2972 implementation time. 2974 Command Sets, an optional feature in this specification, have 2975 eliminated 80% of the time spent determining what needs to be 2976 done with a Context during a Create or Update operation. 2978 Op Reference is an optional feature modeled after video delivery. 2979 It has reduced unnecessary cache lookups. It also has the 2980 additional benefit of allowing an Agent to become cacheless and 2981 effectively act as a FPC protocol adapter remotely with multi-DPN 2982 support or co-located on the DPN in a single-DPN support model. 2984 Multi-tenant support allows for Cache searches to be partitioned 2985 for clustering and performance improvements. This has not been 2986 capitalized upon by the current implementation but is part of the 2987 development roadmap. 2989 Use of Contexts to pre-provision policy has also eliminated any 2990 processing of Ports for DPNs which permitted the code for 2991 CONFIGURE and CONF_BUNDLE to be implemented as a simple nested 2992 FOR loops (see below). 2994 Initial v04 performance results without code optimizations or tuning 2995 allow reliable provisioning of 1K FPC Mobility-Contexts processed per 2996 second on a 12 core server. This results in 2x the number of 2997 transactions on the southbound interface to a proprietary DPN API on 2998 the same machine. 3000 fpc currently supports the following: 3002 1 proprietary DPN API 3003 Policy and Topology as defined in this 3004 specification using OpenDaylight North Bound 3005 Interfaces such as NetConf and RestConf 3007 CONFIG and CONF_BUNDLE (all operations) 3009 DPN assignment, Tunnel allocations and IPv4 3010 address assignment by the Agent or Client. 3012 Immediate Response is always an 3013 OK_NOTIFY_FOLLOWS. 3015 assignment system (receives rpc call): 3016 perform basic operation integrity check 3017 if CONFIG then 3018 goto assignments 3019 if assignments was ok then 3020 send request to activation system 3021 respond back to client with assignment data 3022 else 3023 send back error 3024 end if 3025 else if CONF_BUNDLE then 3026 for each operation in bundles 3027 goto assignments 3028 if assignments was ok then 3029 hold onto data 3030 else 3031 return error with the assignments that occurred in 3032 prior operations (best effort) 3033 end if 3034 end for 3035 send bundles to activation systems 3036 end if 3038 assignments: 3039 assign DPN, IPv4 Address and/or tunnel info as required 3040 if an error occurs undo all assignments in this operation 3041 return result 3043 activation system: 3044 build cache according to op-ref and operation type 3045 for each operation 3046 for each Context 3047 for each DPN / direction in Context 3048 perform actions on DPN according to Command Set 3049 end for 3050 end for 3051 end for 3052 commit changes to in memory cache 3053 log transaction for tracking and notification 3054 (CONFIG_RESULT_NOTIFY) 3056 Figure 37: fpc pseudo code 3058 For further information please contact Lyle Bertz who is also a co- 3059 author of this document. 3061 NOTE: Tenant support requires binding a Client ID to a Tenant ID (it 3062 is a one to many relation) but that is outside of the scope of this 3063 specification. Otherwise, the specification is complete in terms of 3064 providing sufficient information to implement an Agent. 3066 8. Security Considerations 3068 Detailed protocol implementations for DMM Forwarding Policy 3069 Configuration must ensure integrity of the information exchanged 3070 between a FPC Client and a FPC Agent. Required Security Associations 3071 may be derived from co-located functions, which utilize the FPC 3072 Client and FPC Agent respectively. 3074 The YANG modules defined in this memo are designed to be accessed via 3075 the NETCONF [RFC6241] or RESTCONF [RFC8040] protocol. The lowest 3076 NETCONF layer is the secure transport layer and the mandatory-to- 3077 implement secure transport is SSH [RFC6242]. 3079 The information model defined in the memo is designed to be access by 3080 protocols specified in extensions to this document or, if using the 3081 YANG modules, as described above. 3083 There are a number of data nodes defined which are 3084 writable/creatable/deletable. These data nodes may be considered 3085 sensitive or vulnerable in some network environments. Write 3086 operations (e.g., a NETCONF edit-config) to these data nodes without 3087 proper protection can have a negative effect on network operations. 3088 These are the subtrees and data nodes and their sensitivity/ 3089 vulnerability: 3091 Nodes under the Policy tree provide generic policy enforcement and 3092 traffic classification. They can be used to block or permit 3093 traffic. If this portion of the model was to be compromised it 3094 may be used to block, identify or permit traffic that was not 3095 intended by the Tenant or FPC Client. 3097 Nodes under the Topology tree provide definition of the Tenant's 3098 forwarding topology. Any compromise of this information will 3099 provide topology information that could be used for subsequent 3100 attack vectors. Removal of topology can limit services. 3102 Mobility-Context provides runtime only information and manipulated 3103 by remote procedure calls. The unwanted deletion or removal of 3104 such information would deny users service or provide services to 3105 unauthorized parties. 3107 Some of the readable data nodes defined may be considered sensitive 3108 or vulnerable in some network environments. It is thus important to 3109 control read access (e.g., via get, get-config, or notification) to 3110 these data nodes. These are the subtrees and data nodes and their 3111 sensitivity/vulnerability: 3113 IP address assignments in the Mobility-Context along with their 3114 associated tunnel configurations/identifiers (from the FPC base 3115 module) 3117 Internaitonal Mobile Subscriber Identity (IMSI) and bearer 3118 identifiers in the Context when using the FPC base model 3120 Some of the RPC operations defined may be considered sensitive or 3121 vulnerable in some network environments. It is thus important to 3122 control access to these operations. These are the operations and 3123 their sensitivity/vulnerability: 3125 Configure sends Mobility-Context information which can include 3126 information of a sensitive or vulnerable nature in some network 3127 environments as described above. 3129 Monitor related RPC operations do not specifically provide 3130 sensitive or vulnerable information but care must be taken by 3131 users to avoid identifier values that expose sensitive or 3132 vulnerable information. 3134 Notifications MUST be treated with same level of protection and 3135 scrutiny as the operations they correspond to. For example, a 3136 Configure-Result-Notification provides the same information that 3137 is sent as part of the input and output of the Configure RPC 3138 operation. 3140 General usage of FPC MUST consider the following: 3142 FPC Naming Section 4.5 permits arbitrary string values but a user 3143 MUST avoid placing sensitive or vulnerable information in those 3144 values. 3146 Policies that are very narrow and permit the identification of 3147 specific traffic, e.g. that of a single user, SHOULD be avoided. 3149 9. IANA Considerations 3151 This document registers six URIs in the "IETF XML Registry" 3152 [RFC3688]. Following the format in RFC 3688, the following 3153 registrations have been made. 3155 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc 3156 Registrant Contact: The DMM WG of the IETF. 3157 XML: N/A, the requested URI is an XML namespace. 3159 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos 3160 Registrant Contact: The DMM WG of the IETF. 3161 XML: N/A, the requested URI is an XML namespace. 3163 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-traffic-selector-types 3164 Registrant Contact: The DMM WG of the IETF. 3165 XML: N/A, the requested URI is an XML namespace. 3167 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-settingsext 3168 Registrant Contact: The DMM WG of the IETF. 3169 XML: N/A, the requested URI is an XML namespace. 3171 URI: urn:ietf:params:xml:ns:yang:ietf-diam-trafficclassifier 3172 Registrant Contact: The DMM WG of the IETF. 3173 XML: N/A, the requested URI is an XML namespace. 3175 This document registers the following YANG modules in the "YANG 3176 Module Names" registry [RFC6020]. 3178 name: ietf-dmm-fpc 3179 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc 3180 prefix: fpc 3181 reference: TBD1 3183 name: ietf-dmm-pmip-qos 3184 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos 3185 prefix: qos-pmip 3186 reference: TBD2 3188 name: ietf-dmm-traffic-selector-types 3189 namespace: urn:ietf:params:xml:ns:yang: 3190 ietf-dmm-traffic-selector-types 3191 prefix: traffic-selectors 3192 reference: TBD3 3194 name: ietf-dmm-fpc-settingsext 3195 namespace: urn:ietf:params:xml:ns:yang: 3196 ietf-dmm-fpc-settingsext 3197 prefix: fpcbase 3198 reference: TBD4 3200 name: ietf-diam-trafficclassifier 3201 namespace: urn:ietf:params:xml:ns:yang: 3202 ietf-diam-trafficclassifier 3203 prefix: diamclassifier 3204 reference: TBD5 3206 10. Work Team Participants 3208 Participants in the FPSM work team discussion include Satoru 3209 Matsushima, Danny Moses, Sri Gundavelli, Marco Liebsch, Pierrick 3210 Seite, Alper Yegin, Carlos Bernardos, Charles Perkins and Fred 3211 Templin. 3213 11. References 3215 11.1. Normative References 3217 [I-D.ietf-6man-segment-routing-header] 3218 Previdi, S., Filsfils, C., Leddy, J., Matsushima, S., and 3219 d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header 3220 (SRH)", draft-ietf-6man-segment-routing-header-13 (work in 3221 progress), May 2018. 3223 [I-D.ietf-spring-segment-routing-mpls] 3224 Bashandy, A., Filsfils, C., Previdi, S., Decraene, B., 3225 Litkowski, S., and R. Shakir, "Segment Routing with MPLS 3226 data plane", draft-ietf-spring-segment-routing-mpls-14 3227 (work in progress), June 2018. 3229 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3230 Requirement Levels", BCP 14, RFC 2119, 3231 DOI 10.17487/RFC2119, March 1997, 3232 . 3234 [RFC5777] Korhonen, J., Tschofenig, H., Arumaithurai, M., Jones, M., 3235 Ed., and A. Lior, "Traffic Classification and Quality of 3236 Service (QoS) Attributes for Diameter", RFC 5777, 3237 DOI 10.17487/RFC5777, February 2010, 3238 . 3240 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3241 the Network Configuration Protocol (NETCONF)", RFC 6020, 3242 DOI 10.17487/RFC6020, October 2010, 3243 . 3245 [RFC6088] Tsirtsis, G., Giarreta, G., Soliman, H., and N. Montavont, 3246 "Traffic Selectors for Flow Bindings", RFC 6088, 3247 DOI 10.17487/RFC6088, January 2011, 3248 . 3250 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 3251 RFC 6991, DOI 10.17487/RFC6991, July 2013, 3252 . 3254 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 3255 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 3256 . 3258 [RFC8072] Bierman, A., Bjorklund, M., and K. Watsen, "YANG Patch 3259 Media Type", RFC 8072, DOI 10.17487/RFC8072, February 3260 2017, . 3262 [RFC8300] Quinn, P., Ed., Elzur, U., Ed., and C. Pignataro, Ed., 3263 "Network Service Header (NSH)", RFC 8300, 3264 DOI 10.17487/RFC8300, January 2018, 3265 . 3267 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 3268 and R. Wilton, "Network Management Datastore Architecture 3269 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 3270 . 3272 11.2. Informative References 3274 [I-D.bertz-dime-policygroups] 3275 Bertz, L. and M. Bales, "Diameter Policy Groups and Sets", 3276 draft-bertz-dime-policygroups-05 (work in progress), 3277 December 2017. 3279 [I-D.ietf-dmm-deployment-models] 3280 Gundavelli, S. and S. Jeon, "DMM Deployment Models and 3281 Architectural Considerations", draft-ietf-dmm-deployment- 3282 models-04 (work in progress), May 2018. 3284 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3285 DOI 10.17487/RFC3688, January 2004, 3286 . 3288 [RFC3958] Daigle, L. and A. Newton, "Domain-Based Application 3289 Service Location Using SRV RRs and the Dynamic Delegation 3290 Discovery Service (DDDS)", RFC 3958, DOI 10.17487/RFC3958, 3291 January 2005, . 3293 [RFC5213] Gundavelli, S., Ed., Leung, K., Devarapalli, V., 3294 Chowdhury, K., and B. Patil, "Proxy Mobile IPv6", 3295 RFC 5213, DOI 10.17487/RFC5213, August 2008, 3296 . 3298 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3299 and A. Bierman, Ed., "Network Configuration Protocol 3300 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 3301 . 3303 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 3304 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 3305 . 3307 [RFC7222] Liebsch, M., Seite, P., Yokota, H., Korhonen, J., and S. 3308 Gundavelli, "Quality-of-Service Option for Proxy Mobile 3309 IPv6", RFC 7222, DOI 10.17487/RFC7222, May 2014, 3310 . 3312 [RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J. 3313 Korhonen, "Requirements for Distributed Mobility 3314 Management", RFC 7333, DOI 10.17487/RFC7333, August 2014, 3315 . 3317 [RFC7660] Bertz, L., Manning, S., and B. Hirschman, "Diameter 3318 Congestion and Filter Attributes", RFC 7660, 3319 DOI 10.17487/RFC7660, October 2015, 3320 . 3322 Appendix A. YANG Data Model for the FPC protocol 3324 This section provides a type mapping for FPC structures in YANG. 3325 When being mapped to a specific information such as YANG the data 3326 type MAY change. 3328 Keys for Actions, Descriptors, Rules, Policies, DPNs, Domains and 3329 Mobility-Contexts are specified as FPC-Identity which follows rules 3330 according to Section 4.5. 3332 Action and Descriptor Templates are mapped as choices. This was done 3333 to ensure no duplication of Types and avoid use of identityref for 3334 typing. 3336 Policy Expressions are provided as default values. NOTE that a 3337 static value CANNOT be supported in YANG. 3339 Mapping of templates to YANG are performed as follows: 3341 Value is defined as a choice statement for extensibility and 3342 therefore a type value is not necessary to discriminated types 3344 Generic attributes are distinguished by the "Settings" type and 3345 holds ANY value. It is an any data node under configurations. 3347 The CONFIGURE and CONFIGURE-RESULT-NOTIFICATION use the yang-patch- 3348 status which is a container for edits. This was done to maximize 3349 YANG reuse. 3351 In the configure rpc, operation-id is mapped to patch-id and in an 3352 edit the edit-type is mapped to operation. 3354 The Result-Status attribute is mapped to the 'ok' (empty leaf) or 3355 errors structure. 3357 The Policy-Status is mapped to entity-state to reduce YANG size. 3359 Five modules are defined: 3361 o ietf-dmm-fpc (fpc) - Defines the base model and messages for FPC 3362 that are meant to be static in FPC. 3364 o ietf-dmm-fpc-settingsext - A FPC module that defines the 3365 information model elements that are likely to be extended in FPC. 3367 o ietf-pmip-qos (pmip-qos) - Defines proxy mobile IPv6 QoS 3368 parameters per RFC 7222 3370 o ietf-trafficselectors-types (traffic-selectors) - Defines Traffic 3371 Selectors per [RFC6088] 3373 o ietf-diam-trafficclassifier (diamclassifier) - Defines the 3374 Classifier per [RFC5777] 3376 All modules defined in this specification make use of (import) ietf- 3377 inet-types as defined in [RFC6991]. 3379 ietf-dmm-fpc-settingsext and ietf-diam-trafficclassifier make use of 3380 (imports) ietf-yang-types as defined in [RFC6991]. 3382 ietf-dmm-fpc imports the restconf (ietf-restconf) [RFC8040] and yang 3383 patch (ietf-yang-patch) [RFC8072] modules. 3385 ietf-pmip-qos and ietf-dmm-fpc-settings import the trafficselector 3386 from the ietf-traffic-selector-types module. 3388 ietf-dmm-fpc-settings also imports the qosattribute (ietf-pmip-qos) 3389 and classifier (ietf-diam-trafficclassifier). 3391 ietf-dmm-fpc-settingsext groups various settings, actions and 3392 descriptors and is used by the fpc module (ietf-dmm-fpc). 3394 The following groupings are intended for reuse (import) by other 3395 modules. 3397 o qosoption (ietf-qos-pmip module) 3398 o qosattribute (ietf-qos-pmip module) 3400 o qosoption (ietf-qos-pmip module) 3402 o Allocation-Retention-Priority-Value (ietf-qos-pmip module) 3404 o trafficselector (ietf-traffic-selector-types) 3406 o classifier (ietf-diam-trafficclassifier) 3408 o packet-filter (ietf-dmm-fpc-settingsext) 3410 o instructions (ietf-dmm-fpc-settingsext) 3412 o fpc-descriptor-value (ietf-dmm-fpc-settingsext) 3414 o fpc-action-value (ietf-dmm-fpc-settingsext) 3416 The YANG modules in this document conform to the Network Management 3417 Datastore Architecture (NMDA) defined in [RFC8342]. 3419 DPNs conformant to NMDA MAY only have policies, installed policies, 3420 topology, domains and mobility session information that has been 3421 assigned to it in its intended and operational datastores. What is 3422 housed in the operational datastore MAY be determined on a per DPN 3423 basis and using the Entity-Status as a guideline based upon tradeoffs 3424 described in Section 4.6. 3426 ServiceGroups are not expected to appear in operational datastores of 3427 DPNs as they remain in and are used by FPC Agents and Clients. They 3428 MAY be operationally present in DNS when using the Dynamic Delegation 3429 and Discovery System (DDDS) as defined in [RFC3958] or the 3430 operational datastore of systems that provide equivalent 3431 functionality. 3433 A.1. FPC YANG Model 3435 This module defines the information model and protocol elements 3436 specified in this document. 3438 This module references [RFC6991], [RFC8040] and the fpc-settingsext 3439 module defined in this document. 3441 file "ietf-dmm-fpc@2018-05-17.yang" 3442 module ietf-dmm-fpc { 3443 yang-version 1.1; 3444 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc"; 3445 prefix fpc; 3446 import ietf-inet-types { prefix inet; 3447 revision-date 2013-07-15; } 3448 import ietf-dmm-fpc-settingsext { prefix fpcbase; 3449 revision-date 2018-05-17; } 3450 import ietf-diam-trafficclassifier { prefix rfc5777; 3451 revision-date 2018-05-17; } 3452 import ietf-restconf { prefix rc; 3453 revision-date 2017-01-26; } 3454 import ietf-yang-patch { prefix ypatch; 3455 revision-date 2017-02-22; } 3457 organization "IETF Distributed Mobility Management (DMM) 3458 Working Group"; 3460 contact 3461 "WG Web: 3462 WG List: 3464 WG Chair: Dapeng Liu 3465 3467 WG Chair: Jouni Korhonen 3468 3470 Editor: Satoru Matsushima 3471 3473 Editor: Lyle Bertz 3474 "; 3476 description 3477 "This module contains YANG definition for 3478 Forwarding Policy Configuration Protocol (FPCP). 3480 Copyright (c) 2016 IETF Trust and the persons identified as the 3481 document authors. All rights reserved. 3483 This document is subject to BCP 78 and the IETF Trust's Legal 3484 Provisions Relating to IETF Documents 3485 (http://trustee.ietf.org/license-info) in effect on the date of 3486 publication of this document. Please review these documents 3487 carefully, as they describe your rights and restrictions with 3488 respect to this document. Code Components extracted from this 3489 document must include Simplified BSD License text as described 3490 in Section 4.e of the Trust Legal Provisions and are provided 3491 without warranty as described in the Simplified BSD License."; 3493 revision 2018-05-17 { 3494 description "Initial Revision."; 3495 reference "draft-ietf-dmm-fpc-cpdp-10"; 3496 } 3498 //General Structures 3499 grouping templatedef { 3500 leaf extensible { 3501 type boolean; 3502 description "Indicates if the template is extensible"; 3503 } 3504 leaf-list static-attributes { 3505 type string; 3506 description "Attribute (Name) whose value cannot 3507 change"; 3508 } 3509 leaf-list mandatory-attributes { 3510 type string; 3511 description "Attribute (Name) of optional attributes 3512 that MUST be present in instances of this tempplate."; 3513 } 3514 leaf entity-state { 3515 type enumeration { 3516 enum initial { 3517 description "Inital Configuration"; 3518 } 3519 enum partially-configured { 3520 description "Partial Configuration"; 3521 } 3522 enum configured { 3523 description "Confgured"; 3524 } 3525 enum active { 3526 description "Active"; 3527 } 3528 } 3529 default initial; 3530 description "Entity State"; 3531 } 3532 leaf version { 3533 type uint32; 3534 description "Template Version"; 3535 } 3536 description "Teamplate Definition"; 3537 } 3538 typedef fpc-identity { 3539 type union { 3540 type uint32; 3541 type instance-identifier; 3542 type string; 3543 } 3544 description "FPC Identity"; 3545 } 3546 grouping index { 3547 leaf index { 3548 type uint16; 3549 description "Index"; 3550 } 3551 description "Index Value"; 3552 } 3554 // Policy Structures 3555 grouping descriptor-template-key { 3556 leaf descriptor-template-key { 3557 type fpc:fpc-identity; 3558 mandatory true; 3559 description "Descriptor Key"; 3560 } 3561 description "Descriptor-Template Key"; 3562 } 3563 grouping action-template-key { 3564 leaf action-template-key { 3565 type fpc:fpc-identity; 3566 mandatory true; 3567 description "Action Key"; 3568 } 3569 description "Action-Template Key"; 3570 } 3571 grouping rule-template-key { 3572 leaf rule-template-key { 3573 type fpc:fpc-identity; 3574 mandatory true; 3575 description "Rule Identifier"; 3576 } 3577 description "Rule Key"; 3578 } 3579 grouping policy-template-key { 3580 leaf policy-template-key { 3581 type fpc:fpc-identity; 3582 mandatory true; 3583 description "Rule Identifier"; 3584 } 3585 description "Rule Key"; 3586 } 3588 grouping fpc-setting-value { 3589 anydata setting; 3590 description "FPC Setting Value"; 3591 } 3592 // Configuration / Settings 3593 grouping policy-configuration-choice { 3594 choice policy-configuration-value { 3595 case descriptor-value { 3596 uses fpcbase:fpc-descriptor-value; 3597 description "Descriptor Value"; 3598 } 3599 case action-value { 3600 uses fpcbase:fpc-action-value; 3601 description "Action Value"; 3602 } 3603 case setting-value { 3604 uses fpc:fpc-setting-value; 3605 description "Setting"; 3606 } 3607 description "Policy Attributes"; 3608 } 3609 description "Policy Configuration Value Choice"; 3610 } 3611 grouping policy-configuration { 3612 list policy-configuration { 3613 key index; 3614 uses fpc:index; 3615 uses fpc:policy-configuration-choice; 3616 description "Policy Configuration"; 3617 } 3618 description "Policy Configuration Value"; 3619 } 3620 grouping ref-configuration { 3621 uses fpc:policy-template-key; 3622 uses fpc:policy-configuration; 3623 uses fpc:templatedef; 3624 description "Policy-Configuration Entry"; 3625 } 3627 // FPC Policy 3628 grouping policy-information-model { 3629 list action-template { 3630 key action-template-key; 3631 uses fpc:action-template-key; 3632 uses fpcbase:fpc-action-value; 3633 uses fpc:templatedef; 3634 description "Action Template"; 3635 } 3636 list descriptor-template { 3637 key descriptor-template-key; 3638 uses fpc:descriptor-template-key; 3639 uses fpcbase:fpc-descriptor-value; 3640 uses fpc:templatedef; 3641 description "Descriptor Template"; 3642 } 3643 list rule-template { 3644 key rule-template-key; 3645 uses fpc:rule-template-key; 3646 leaf descriptor-match-type { 3647 type enumeration { 3648 enum or { 3649 value 0; 3650 description "OR logic"; 3651 } 3652 enum and { 3653 value 1; 3654 description "AND logic"; 3655 } 3656 } 3657 mandatory true; 3658 description "Type of Match (OR or AND) applied 3659 to the descriptor-configurations"; 3660 } 3661 list descriptor-configuration { 3662 key "descriptor-template-key"; 3663 uses fpc:descriptor-template-key; 3664 leaf direction { 3665 type rfc5777:direction-type; 3666 description "Direction"; 3667 } 3668 list attribute-expression { 3669 key index; 3670 uses fpc:index; 3671 uses fpcbase:fpc-descriptor-value; 3672 description "Descriptor Attributes"; 3673 } 3674 uses fpc:fpc-setting-value; 3675 description "A set of Descriptor references"; 3676 } 3677 list action-configuration { 3678 key "action-order"; 3679 leaf action-order { 3680 type uint32; 3681 mandatory true; 3682 description "Action Execution Order"; 3683 } 3684 uses fpc:action-template-key; 3685 list attribute-expression { 3686 key index; 3687 uses fpc:index; 3688 uses fpcbase:fpc-action-value; 3689 description "Action Attributes"; 3690 } 3691 uses fpc:fpc-setting-value; 3692 description "A set of Action references"; 3693 } 3694 uses fpc:templatedef; 3695 list rule-configuration { 3696 key index; 3697 uses fpc:index; 3698 uses fpc:policy-configuration-choice; 3699 description "Rule Configuration"; 3700 } 3701 description "Rule Template"; 3702 } 3703 list policy-template { 3704 key policy-template-key; 3705 uses fpc:policy-template-key; 3706 list rule-template { 3707 key "precedence"; 3708 unique "rule-template-key"; 3709 leaf precedence { 3710 type uint32; 3711 mandatory true; 3712 description "Rule Precedence"; 3713 } 3714 uses fpc:rule-template-key; 3715 description "Rule Entry"; 3716 } 3717 uses fpc:templatedef; 3718 uses fpc:policy-configuration; 3719 description "Policy Template"; 3720 } 3721 description "FPC Policy Structures"; 3722 } 3724 // Topology Information Model 3725 identity role { 3726 description "Role"; 3727 } 3728 grouping dpn-key { 3729 leaf dpn-key { 3730 type fpc:fpc-identity; 3731 description "DPN Key"; 3732 } 3733 description "DPN Key"; 3735 } 3736 grouping role-key { 3737 leaf role-key { 3738 type identityref { 3739 base "fpc:role"; 3740 } 3741 mandatory true; 3742 description "Access Technology Role"; 3743 } 3744 description "Access Technology Role key"; 3745 } 3746 grouping interface-key { 3747 leaf interface-key{ 3748 type fpc:fpc-identity; 3749 mandatory true; 3750 description "interface identifier"; 3751 } 3752 description "Interface Identifier key"; 3753 } 3754 identity interface-protocols { 3755 description "Protocol supported by the interface"; 3756 } 3757 identity features { 3758 description "Protocol features"; 3759 } 3761 // Mobility Context 3762 grouping mobility-context { 3763 leaf mobility-context-key { 3764 type fpc:fpc-identity; 3765 mandatory true; 3766 description "Mobility Context Key"; 3767 } 3768 leaf-list delegating-ip-prefix { 3769 type inet:ip-prefix; 3770 description "IP Prefix"; 3771 } 3772 leaf parent-context { 3773 type fpc:fpc-identity; 3774 description "Parent Mobility Context"; 3775 } 3776 leaf-list child-context { 3777 type fpc:fpc-identity; 3778 description "Child Mobility Context"; 3779 } 3780 container mobile-node { 3781 leaf-list ip-address { 3782 type inet:ip-address; 3783 description "IP Address"; 3784 } 3785 leaf imsi { 3786 type fpcbase:imsi-type; 3787 description "IMSI"; 3788 } 3789 list mn-policy-configuration { 3790 key policy-template-key; 3791 uses fpc:ref-configuration; 3792 description "MN Policy Configuration"; 3793 } 3794 description "Mobile Node"; 3795 } 3796 container domain { 3797 leaf domain-key { 3798 type fpc:fpc-identity; 3799 description "Domain Key"; 3800 } 3801 list domain-policy-settings { 3802 key policy-template-key; 3803 uses fpc:ref-configuration; 3804 description "MN Policy Configuration"; 3805 } 3806 description "Domain"; 3807 } 3808 list dpn { 3809 key dpn-key; 3810 uses fpc:dpn-key; 3811 list dpn-policy-configuration { 3812 key policy-template-key; 3813 uses fpc:ref-configuration; 3814 description "DPN Policy Configuration"; 3815 } 3816 leaf role { 3817 type identityref { 3818 base "fpc:role"; 3819 } 3820 description "Role"; 3821 } 3822 list service-data-flow { 3823 key identifier; 3824 leaf identifier { 3825 type uint32; 3826 description "Generic Identifier"; 3827 } 3828 leaf service-group-key { 3829 type fpc:fpc-identity; 3830 description "Service Group Key"; 3832 } 3833 list interface { 3834 key interface-key; 3835 uses fpc:interface-key; 3836 description "interface assigned"; 3837 } 3838 list service-data-flow-policy-configuration { 3839 key policy-template-key; 3840 uses fpc:ref-configuration; 3841 description "Flow Policy Configuration"; 3842 } 3843 description "Service Dataflow"; 3844 } 3845 description "DPN"; 3846 } 3847 description "Mobility Context"; 3848 } 3850 // Events, Probes & Notifications 3851 identity event-type { 3852 description "Base Event Type"; 3853 } 3854 typedef event-type-id { 3855 type uint32; 3856 description "Event ID Type"; 3857 } 3858 grouping monitor-key { 3859 leaf monitor-key { 3860 type fpc:fpc-identity; 3861 mandatory true; 3862 description "Monitor Key"; 3863 } 3864 description "Monitor Id"; 3865 } 3866 grouping monitor-config { 3867 uses fpc:templatedef; 3868 uses fpc:monitor-key; 3869 leaf target { 3870 type string; 3871 description "target"; 3872 } 3873 leaf deferrable { 3874 type boolean; 3875 description "Indicates reports related to this 3876 config can be delayed."; 3877 } 3878 choice configuration { 3879 mandatory true; 3880 leaf period { 3881 type uint32; 3882 description "Period"; 3883 } 3884 case threshold-config { 3885 leaf low { 3886 type uint32; 3887 description "low threshold"; 3888 } 3889 leaf hi { 3890 type uint32; 3891 description "high threshold"; 3892 } 3893 description "Threshold Config Case"; 3894 } 3895 leaf schedule { 3896 type uint32; 3897 description "Reporting Time"; 3898 } 3899 leaf-list event-identities { 3900 type identityref { 3901 base "fpc:event-type"; 3902 } 3903 description "Event Identities"; 3904 } 3905 leaf-list event-ids { 3906 type uint32; 3907 description "Event IDs"; 3908 } 3909 description "Event Config Value"; 3910 } 3911 description "Monitor Configuration"; 3912 } 3914 // Top Level Structures 3915 list tenant { 3916 key "tenant-key"; 3917 leaf tenant-key { 3918 type fpc:fpc-identity; 3919 description "Tenant Key"; 3920 } 3921 container topology-information-model { 3922 list service-group { 3923 key "service-group-key role-key"; 3924 leaf service-group-key { 3925 type fpc:fpc-identity; 3926 mandatory true; 3927 description "Service Group Key"; 3929 } 3930 leaf service-group-name { 3931 type string; 3932 description "Service Group Name"; 3933 } 3934 uses fpc:role-key; 3935 leaf role-name { 3936 type string; 3937 mandatory true; 3938 description "Role Name"; 3939 } 3940 leaf-list protocol { 3941 type identityref { 3942 base "interface-protocols"; 3943 } 3944 min-elements 1; 3945 description "Supported protocols"; 3946 } 3947 leaf-list feature { 3948 type identityref { 3949 base "interface-protocols"; 3950 } 3951 description "Supported features"; 3952 } 3953 list service-group-configuration { 3954 key index; 3955 uses fpc:index; 3956 uses fpc:policy-configuration-choice; 3957 description "Settings"; 3958 } 3959 list dpn { 3960 key dpn-key; 3961 uses fpc:dpn-key; 3962 min-elements 1; 3963 list referenced-interface { 3964 key interface-key; 3965 uses fpc:interface-key; 3966 leaf-list peer-service-group-key { 3967 type fpc:fpc-identity; 3968 description "Peer Service Group"; 3969 } 3970 description "Referenced Interface"; 3971 } 3972 description "DPN"; 3973 } 3974 description "Service Group"; 3975 } 3976 list dpn { 3977 key dpn-key; 3978 uses fpc:dpn-key; 3979 leaf dpn-name { 3980 type string; 3981 description "DPN name"; 3982 } 3983 leaf dpn-resource-mapping-reference { 3984 type string; 3985 description "Reference to underlying DPN resource(s)"; 3986 } 3987 leaf domain-key { 3988 type fpc:fpc-identity; 3989 description "Domains"; 3990 } 3991 leaf-list service-group-key { 3992 type fpc:fpc-identity; 3993 description "Service Group"; 3994 } 3995 list interface { 3996 key "interface-key"; 3997 uses fpc:interface-key; 3998 leaf interface-name { 3999 type string; 4000 description "Service Endpoint Interface Name"; 4001 } 4002 leaf role { 4003 type identityref { 4004 base "fpc:role"; 4005 } 4006 description "Roles supported"; 4007 } 4008 leaf-list protocol { 4009 type identityref { 4010 base "interface-protocols"; 4011 } 4012 description "Supported protocols"; 4013 } 4014 list interface-configuration { 4015 key index; 4016 uses fpc:index; 4017 uses fpc:policy-configuration-choice; 4018 description "Interface settings"; 4019 } 4020 description "DPN interfaces"; 4021 } 4022 list dpn-policy-configuration { 4023 key policy-template-key; 4024 uses fpc:ref-configuration; 4025 description "DPN Policy Configuration"; 4026 } 4027 description "Set of DPNs"; 4028 } 4029 list domain { 4030 key domain-key; 4031 leaf domain-key { 4032 type fpc:fpc-identity; 4033 mandatory true; 4034 description "Domain Key"; 4035 } 4036 leaf domain-name { 4037 type string; 4038 description "Domain displayname"; 4039 } 4040 list domain-policy-configuration { 4041 key policy-template-key; 4042 uses fpc:ref-configuration; 4043 description "Domain Configuration"; 4044 } 4045 description "List of Domains"; 4046 } 4047 container dpn-checkpoint { 4048 uses fpc:basename-info; 4049 description "DPN Checkpoint information"; 4050 } 4051 container service-group-checkpoint { 4052 uses fpc:basename-info; 4053 description "Service Group Checkpoint information"; 4054 } 4055 container domain-checkpoint { 4056 uses fpc:basename-info; 4057 description "Domain Checkpoint information"; 4058 } 4059 description "FPC Topology grouping"; 4060 } 4061 container policy-information-model { 4062 uses fpc:policy-information-model; 4063 uses fpc:basename-info; 4064 description "Policy"; 4065 } 4066 list mobility-context { 4067 key "mobility-context-key"; 4068 uses fpc:mobility-context; 4069 description "Mobility Context"; 4070 } 4071 list monitor { 4072 key monitor-key; 4073 uses fpc:monitor-config; 4074 description "Monitor"; 4075 } 4076 description "Tenant"; 4077 } 4079 typedef agent-identifier { 4080 type fpc:fpc-identity; 4081 description "Agent Identifier"; 4082 } 4083 typedef client-identifier { 4084 type fpc:fpc-identity; 4085 description "Client Identifier"; 4086 } 4087 grouping basename-info { 4088 leaf basename { 4089 type fpc:fpc-identity; 4090 description "Rules Basename"; 4091 } 4092 leaf base-checkpoint { 4093 type string; 4094 description "Checkpoint"; 4095 } 4096 description "Basename Information"; 4097 } 4099 // RPCs 4100 grouping client-id { 4101 leaf client-id { 4102 type fpc:client-identifier; 4103 mandatory true; 4104 description "Client Id"; 4105 } 4106 description "Client Identifier"; 4107 } 4108 grouping execution-delay { 4109 leaf execution-delay { 4110 type uint32; 4111 description "Execution Delay (ms)"; 4112 } 4113 description "Execution Delay"; 4114 } 4115 typedef ref-scope { 4116 type enumeration { 4117 enum none { 4118 value 0; 4119 description "no references"; 4120 } 4121 enum op { 4122 value 1; 4123 description "All references are intra-operation"; 4124 } 4125 enum bundle { 4126 value 2; 4127 description "All references in exist in bundle"; 4128 } 4129 enum storage { 4130 value 3; 4131 description "One or more references exist in storage."; 4132 } 4133 enum unknown { 4134 value 4; 4135 description "The location of the references are unknown."; 4136 } 4137 } 4138 description "Search scope for references in the operation."; 4139 } 4140 rpc configure { 4141 description "Configure RPC"; 4142 input { 4143 uses client-id; 4144 uses execution-delay; 4145 uses ypatch:yang-patch; 4146 } 4147 output { 4148 uses ypatch:yang-patch-status; 4149 } 4150 } 4151 augment "/configure/input/yang-patch/edit" { 4152 leaf reference-scope { 4153 type fpc:ref-scope; 4154 description "Reference Scope"; 4155 } 4156 uses fpcbase:instructions; 4157 description "yang-patch edit augments for configure rpc"; 4158 } 4159 grouping subsequent-edits { 4160 list subsequent-edit { 4161 key edit-id; 4162 ordered-by user; 4164 description "Edit list"; 4166 leaf edit-id { 4167 type string; 4168 description "Arbitrary string index for the edit."; 4170 } 4172 leaf operation { 4173 type enumeration { 4174 enum create { 4175 description "Create"; 4176 } 4177 enum delete { 4178 description "Delete"; 4179 } 4180 enum insert { 4181 description "Insert"; 4182 } 4183 enum merge { 4184 description "Merge"; 4185 } 4186 enum move { 4187 description "Move"; 4188 } 4189 enum replace { 4190 description "Replace"; 4191 } 4192 enum remove { 4193 description 4194 "Delete the target node if it currently exists."; 4195 } 4196 } 4197 mandatory true; 4198 description 4199 "The datastore operation requested"; 4200 } 4202 leaf target { 4203 type ypatch:target-resource-offset; 4204 mandatory true; 4205 description 4206 "Identifies the target data node"; 4207 } 4209 leaf point { 4210 when "(../operation = 'insert' or ../operation = 'move')" 4211 + "and (../where = 'before' or ../where = 'after')" { 4212 description 4213 "This leaf only applies for 'insert' or 'move' 4214 operations, before or after an existing entry."; 4215 } 4216 type ypatch:target-resource-offset; 4217 description 4218 "The absolute URL path for the data node"; 4219 } 4221 leaf where { 4222 when "../operation = 'insert' or ../operation = 'move'" { 4223 description 4224 "This leaf only applies for 'insert' or 'move' 4225 operations."; 4226 } 4227 type enumeration { 4228 enum before { 4229 description 4230 "Insert or move a data node before."; 4231 } 4232 enum after { 4233 description 4234 "Insert or move a data node after."; 4235 } 4236 enum first { 4237 description 4238 "Insert or move a data node so it becomes ordered 4239 as the first entry."; 4240 } 4241 enum last { 4242 description 4243 "Insert or move a data node so it becomes ordered 4244 as the last entry."; 4245 } 4246 } 4247 default last; 4248 description 4249 "Identifies where a data resource will be inserted 4250 or moved."; 4251 } 4253 anydata value { 4254 when "../operation = 'create' " 4255 + "or ../operation = 'merge' " 4256 + "or ../operation = 'replace' " 4257 + "or ../operation = 'insert'" { 4258 description 4259 "The anydata 'value' is only used for 'create', 4260 'merge', 'replace', and 'insert' operations."; 4261 } 4262 description 4263 "Value used for this edit operation."; 4264 } 4265 } 4266 description "Subsequent Edits"; 4267 } 4268 augment "/configure/output/yang-patch-status/edit-status/edit/" 4269 + "edit-status-choice/ok" { 4270 leaf notify-follows { 4271 type boolean; 4272 description "Notify Follows Indication"; 4273 } 4274 uses fpc:subsequent-edits; 4275 description "Configure output augments"; 4276 } 4278 grouping op-header { 4279 uses client-id; 4280 uses execution-delay; 4281 leaf operation-id { 4282 type uint64; 4283 mandatory true; 4284 description "Operation Identifier"; 4285 } 4286 description "Common Operation header"; 4287 } 4288 grouping monitor-response { 4289 leaf operation-id { 4290 type uint64; 4291 mandatory true; 4292 description "Operation Identifier"; 4293 } 4294 choice edit-status-choice { 4295 description 4296 "A choice between different types of status 4297 responses for each 'edit' entry."; 4298 leaf ok { 4299 type empty; 4300 description 4301 "This 'edit' entry was invoked without any 4302 errors detected by the server associated 4303 with this edit."; 4304 } 4305 case errors { 4306 uses rc:errors; 4307 description 4308 "The server detected errors associated with the 4309 edit identified by the same 'edit-id' value."; 4310 } 4311 } 4312 description "Monitor Response"; 4313 } 4315 // Common RPCs 4316 rpc register_monitor { 4317 description "Used to register monitoring of parameters/events"; 4318 input { 4319 uses fpc:op-header; 4320 list monitor { 4321 key monitor-key; 4322 uses fpc:monitor-config; 4323 description "Monitor Configuration"; 4324 } 4325 } 4326 output { 4327 uses fpc:monitor-response; 4328 } 4329 } 4330 rpc deregister_monitor { 4331 description "Used to de-register monitoring of 4332 parameters/events"; 4333 input { 4334 uses fpc:op-header; 4335 list monitor { 4336 key monitor-key; 4337 uses fpc:monitor-key; 4338 min-elements 1; 4339 leaf send_data { 4340 type boolean; 4341 description "Indicates if NOTIFY with final data 4342 is desired upon deregistration"; 4343 } 4344 description "Monitor Identifier"; 4345 } 4346 } 4347 output { 4348 uses fpc:monitor-response; 4349 } 4350 } 4351 rpc probe { 4352 description "Probe the status of a registered monitor"; 4353 input { 4354 uses fpc:op-header; 4355 list monitor { 4356 key monitor-key; 4357 uses fpc:monitor-key; 4358 min-elements 1; 4359 description "Monitor"; 4360 } 4361 } 4362 output { 4363 uses fpc:monitor-response; 4364 } 4365 } 4367 // Notification Messages & Structures 4368 notification config-result-notification { 4369 uses ypatch:yang-patch-status; 4370 description "Configuration Result Notification"; 4371 } 4372 augment "/config-result-notification" { 4373 uses fpc:subsequent-edits; 4374 description "config-result-notificatio augment"; 4375 } 4377 identity notification-cause { 4378 description "Notification Cause"; 4379 } 4380 identity subscribed-event-occurred { 4381 base "notification-cause"; 4382 description "Subscribed Event Occurence"; 4383 } 4384 identity low-threshold-crossed { 4385 base "notification-cause"; 4386 description "Subscribed Event Occurence"; 4387 } 4388 identity high-threshold-crossed { 4389 base "notification-cause"; 4390 description "Subscribed Event Occurence"; 4391 } 4392 identity periodic-report { 4393 base "notification-cause"; 4394 description "Periodic Report"; 4395 } 4396 identity scheduled-report { 4397 base "notification-cause"; 4398 description "Scheduled Report"; 4399 } 4400 identity probe { 4401 base "notification-cause"; 4402 description "Probe"; 4403 } 4404 identity deregistration-final-value { 4405 base "notification-cause"; 4406 description "Probe"; 4407 } 4408 identity monitoring-suspension { 4409 base "notification-cause"; 4410 description "Indicates monitoring suspension"; 4412 } 4413 identity monitoring-resumption { 4414 base "notification-cause"; 4415 description "Indicates that monitoring has resumed"; 4416 } 4417 identity dpn-available { 4418 base "notification-cause"; 4419 description "DPN Candidate Available"; 4420 } 4421 identity dpn-unavailable { 4422 base "notification-cause"; 4423 description "DPN Unavailable"; 4424 } 4425 notification notify { 4426 leaf notification-id { 4427 type uint32; 4428 description "Notification Identifier"; 4429 } 4430 leaf timestamp { 4431 type uint32; 4432 description "timestamp"; 4433 } 4434 list report { 4435 key monitor-key; 4436 uses fpc:monitor-key; 4437 min-elements 1; 4438 leaf trigger { 4439 type identityref { 4440 base "notification-cause"; 4441 } 4442 description "Notification Cause"; 4443 } 4444 choice value { 4445 case dpn-candidate-available { 4446 leaf node-id { 4447 type inet:uri; 4448 description "Topology URI"; 4449 } 4450 list supported-interface-list { 4451 key role-key; 4452 uses fpc:role-key; 4453 description "Support Intefaces"; 4454 } 4455 description "DPN Candidate Information"; 4456 } 4457 case dpn-unavailable { 4458 leaf dpn-id { 4459 type fpc:fpc-identity; 4460 description "DPN Identifier for DPN Unavailable"; 4461 } 4462 description "DPN Unavailable"; 4463 } 4464 anydata report-value { 4465 description "Any non integer report"; 4466 } 4467 description "Report Value"; 4468 } 4469 description "Report"; 4470 } 4471 description "Notify Message"; 4472 } 4473 } 4474 4476 A.2. FPC YANG Settings and Extensions Model 4478 This module defines the base data elements in FPC that are likely to 4479 be extended. 4481 This module references [RFC6991], ietf-trafficselector-types and 4482 ietf-pmip-qos modules. 4484 file "ietf-dmm-fpc-settingsext@2018-05-17.yang" 4485 module ietf-dmm-fpc-settingsext { 4486 yang-version 1.1; 4487 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-settingsext"; 4488 prefix fpcbase; 4490 import ietf-inet-types { prefix inet; 4491 revision-date 2013-07-15; } 4492 import ietf-trafficselector-types { prefix traffic-selectors; 4493 revision-date 2018-05-17; } 4494 import ietf-yang-types { prefix ytypes; 4495 revision-date 2013-07-15; } 4496 import ietf-pmip-qos { prefix pmipqos; 4497 revision-date 2018-05-17; } 4498 import ietf-diam-trafficclassifier { prefix rfc5777; 4499 revision-date 2018-05-17; } 4501 organization "IETF Distributed Mobility Management (DMM) 4502 Working Group"; 4504 contact 4505 "WG Web: 4506 WG List: 4507 WG Chair: Dapeng Liu 4508 4510 WG Chair: Sri Gundavelli 4511 4513 Editor: Satoru Matsushima 4514 4516 Editor: Lyle Bertz 4517 "; 4519 description 4520 "This module contains YANG definition for 4521 Forwarding Policy Configuration Protocol(FPCP). 4523 It contains Settings defintions as well as Descriptor and 4524 Action extensions. 4526 Copyright (c) 2016 IETF Trust and the persons identified as the 4527 document authors. All rights reserved. 4529 This document is subject to BCP 78 and the IETF Trust's Legal 4530 Provisions Relating to IETF Documents 4531 (http://trustee.ietf.org/license-info) in effect on the date of 4532 publication of this document. Please review these documents 4533 carefully, as they describe your rights and restrictions with 4534 respect to this document. Code Components extracted from this 4535 document must include Simplified BSD License text as described 4536 in Section 4.e of the Trust Legal Provisions and are provided 4537 without warranty as described in the Simplified BSD License."; 4539 revision 2018-05-17 { 4540 description "Initial Revision."; 4541 reference "draft-ietf-dmm-fpc-cpdp-10"; 4542 } 4544 //Tunnel Information 4545 identity tunnel-type { 4546 description "Tunnel Type"; 4547 } 4548 identity grev1 { 4549 base "fpcbase:tunnel-type"; 4550 description "GRE v1"; 4551 } 4552 identity grev2 { 4553 base "fpcbase:tunnel-type"; 4554 description "GRE v2"; 4556 } 4557 identity ipinip { 4558 base "fpcbase:tunnel-type"; 4559 description "IP in IP"; 4560 } 4561 identity gtpv1 { 4562 base "fpcbase:tunnel-type"; 4563 description "GTP version 1 Tunnel"; 4564 } 4565 identity gtpv2 { 4566 base "fpcbase:tunnel-type"; 4567 description "GTP version 2 Tunnel"; 4568 } 4570 grouping tunnel-value { 4571 container tunnel-info { 4572 leaf tunnel-local-address { 4573 type inet:ip-address; 4574 description "local tunnel address"; 4575 } 4576 leaf tunnel-remote-address { 4577 type inet:ip-address; 4578 description "remote tunnel address"; 4579 } 4580 leaf mtu-size { 4581 type uint32; 4582 description "MTU size"; 4583 } 4584 leaf tunnel { 4585 type identityref { 4586 base "fpcbase:tunnel-type"; 4587 } 4588 description "tunnel type"; 4589 } 4590 leaf payload-type { 4591 type enumeration { 4592 enum ipv4 { 4593 value 0; 4594 description "IPv4"; 4595 } 4596 enum ipv6 { 4597 value 1; 4598 description "IPv6"; 4599 } 4600 enum dual { 4601 value 2; 4602 description "IPv4 and IPv6"; 4603 } 4605 } 4606 description "Payload Type"; 4607 } 4608 leaf gre-key { 4609 type uint32; 4610 description "GRE_KEY"; 4611 } 4612 container gtp-tunnel-info { 4613 leaf local-tunnel-identifier { 4614 type uint32; 4615 description "Tunnel Endpoint IDentifier (TEID)"; 4616 } 4617 leaf remote-tunnel-identifier { 4618 type uint32; 4619 description "Tunnel Endpoint IDentifier (TEID)"; 4620 } 4621 leaf sequence-numbers-enabled { 4622 type boolean; 4623 description "Sequence No. Enabled"; 4624 } 4625 description "GTP Tunnel Information"; 4626 } 4627 leaf ebi { 4628 type fpcbase:ebi-type; 4629 description "EPS Bearier Identifier"; 4630 } 4631 leaf lbi { 4632 type fpcbase:ebi-type; 4633 description "Linked Bearier Identifier"; 4634 } 4635 description "Tunnel Information"; 4636 } 4637 description "Tunnel Value"; 4638 } 4640 ////////////////////////////// 4641 // DESCRIPTOR DEFINITIONS 4643 // From 3GPP TS 24.008 version 13.5.0 Release 13 4644 typedef packet-filter-direction { 4645 type enumeration { 4646 enum preRel7Tft { 4647 value 0; 4648 description "Pre-Release 7 TFT"; 4649 } 4650 enum uplink { 4651 value 1; 4652 description "uplink"; 4654 } 4655 enum downlink { 4656 value 2; 4657 description "downlink"; 4658 } 4659 enum bidirectional { 4660 value 3; 4661 description "bi-direcitonal"; 4662 } 4663 } 4664 description "Packet Filter Direction"; 4665 } 4666 typedef component-type-id { 4667 type uint8 { 4668 range "16 | 17 | 32 | 33 | 35 | 48 | 64 | 65 |" 4669 + " 80 | 81 | 96 | 112 | 128"; 4670 } 4671 description "Specifies the Component Type"; 4672 } 4673 grouping packet-filter { 4674 leaf direction { 4675 type fpcbase:packet-filter-direction; 4676 description "Filter Direction"; 4677 } 4678 leaf identifier { 4679 type uint8 { 4680 range "1..15"; 4681 } 4682 description "Filter Identifier"; 4683 } 4684 leaf evaluation-precedence { 4685 type uint8; 4686 description "Evaluation Precedence"; 4687 } 4688 list contents { 4689 key component-type-identifier; 4690 description "Filter Contents"; 4691 leaf component-type-identifier { 4692 type fpcbase:component-type-id; 4693 description "Component Type"; 4694 } 4695 choice value { 4696 leaf ipv4-local { 4697 type inet:ipv4-address; 4698 description "IPv4 Local Address"; 4699 } 4700 leaf ipv6-prefix-local { 4701 type inet:ipv6-prefix; 4702 description "IPv6 Local Prefix"; 4703 } 4704 leaf ipv4-ipv6-remote { 4705 type inet:ip-address; 4706 description "Ipv4 Ipv6 remote address"; 4707 } 4708 leaf ipv6-prefix-remote { 4709 type inet:ipv6-prefix; 4710 description "IPv6 Remote Prefix"; 4711 } 4712 leaf next-header { 4713 type uint8; 4714 description "Next Header"; 4715 } 4716 leaf local-port { 4717 type inet:port-number; 4718 description "Local Port"; 4719 } 4720 case local-port-range { 4721 leaf local-port-lo { 4722 type inet:port-number; 4723 description "Local Port Min Value"; 4724 } 4725 leaf local-port-hi { 4726 type inet:port-number; 4727 description "Local Port Max Value"; 4728 } 4729 } 4730 leaf remote-port { 4731 type inet:port-number; 4732 description "Remote Port"; 4733 } 4734 case remote-port-range { 4735 leaf remote-port-lo { 4736 type inet:port-number; 4737 description "Remote Por Min Value"; 4738 } 4739 leaf remote-port-hi { 4740 type inet:port-number; 4741 description "Remote Port Max Value"; 4742 } 4743 } 4744 leaf ipsec-index { 4745 type traffic-selectors:ipsec-spi; 4746 description "IPSec Index"; 4747 } 4748 leaf traffic-class { 4749 type inet:dscp; 4750 description "Traffic Class"; 4751 } 4752 case traffic-class-range { 4753 leaf traffic-class-lo { 4754 type inet:dscp; 4755 description "Traffic Class Min Value"; 4756 } 4757 leaf traffic-class-hi { 4758 type inet:dscp; 4759 description "Traffic Class Max Value"; 4760 } 4761 } 4762 leaf-list flow-label { 4763 type inet:ipv6-flow-label; 4764 description "Flow Label"; 4765 } 4766 description "Component Value"; 4767 } 4768 } 4769 description "Packet Filter"; 4770 } 4772 grouping prefix-descriptor { 4773 leaf destination-ip { 4774 type inet:ip-prefix; 4775 description "Rule of destination IP"; 4776 } 4777 leaf source-ip { 4778 type inet:ip-prefix; 4779 description "Rule of source IP"; 4780 } 4781 description "Traffic descriptor based upon source/ 4782 destination as IP prefixes"; 4783 } 4785 grouping fpc-descriptor-value { 4786 choice descriptor-value { 4787 mandatory true; 4788 leaf all-traffic { 4789 type empty; 4790 description "admit any"; 4791 } 4792 leaf no-traffic { 4793 type empty; 4794 description "deny any"; 4795 } 4796 case prefix-descriptor { 4797 uses fpcbase:prefix-descriptor; 4798 description "IP Prefix descriptor"; 4799 } 4800 case pmip-selector { 4801 uses traffic-selectors:traffic-selector; 4802 description "PMIP Selector"; 4803 } 4804 container rfc5777-classifier-template { 4805 uses rfc5777:classifier; 4806 description "RFC 5777 Classifier"; 4807 } 4808 container packet-filter { 4809 uses fpcbase:packet-filter; 4810 description "Packet Filter"; 4811 } 4812 case tunnel-info { 4813 uses fpcbase:tunnel-value; 4814 description "Tunnel Descriptor (only 4815 considers source info)"; 4816 } 4817 description "Descriptor Value"; 4818 } 4819 description "FPC Descriptor Values"; 4820 } 4822 // Next Hop Structures 4823 typedef fpc-service-path-id { 4824 type uint32 { 4825 range "0..33554431"; 4826 } 4827 description "SERVICE_PATH_ID"; 4828 } 4829 typedef fpc-mpls-label { 4830 type uint32 { 4831 range "0..1048575"; 4832 } 4833 description "MPLS label"; 4834 } 4835 typedef segment-id { 4836 type string { 4837 length "16"; 4838 } 4839 description "SR Segement Identifier"; 4840 } 4841 grouping fpc-nexthop { 4842 choice next-hop-value { 4843 leaf ip-address { 4844 type inet:ip-address; 4845 description "IP Value"; 4847 } 4848 leaf mac-address { 4849 type ytypes:mac-address; 4850 description "MAC Address Value"; 4851 } 4852 leaf service-path { 4853 type fpcbase:fpc-service-path-id; 4854 description "Service Path Value"; 4855 } 4856 leaf mpls-path { 4857 type fpcbase:fpc-mpls-label; 4858 description "MPLS Value"; 4859 } 4860 leaf nsh { 4861 type string { 4862 length "16"; 4863 } 4864 description "Network Service Header"; 4865 } 4866 leaf interface { 4867 type uint16; 4868 description "If (interface) Value"; 4869 } 4870 leaf segment-identifier { 4871 type fpcbase:segment-id; 4872 description "Segment Id"; 4873 } 4874 leaf-list mpls-label-stack { 4875 type fpcbase:fpc-mpls-label; 4876 description "MPLS Stack"; 4877 } 4878 leaf-list mpls-sr-stack { 4879 type fpcbase:fpc-mpls-label; 4880 description "MPLS SR Stack"; 4881 } 4882 leaf-list srv6-stack { 4883 type fpcbase:segment-id; 4884 description "Segment Id"; 4885 } 4886 case tunnel-info { 4887 uses fpcbase:tunnel-value; 4888 description "Tunnel Descriptor (only 4889 considers source info)"; 4890 } 4891 description "Value"; 4892 } 4893 description "Nexthop Value"; 4894 } 4895 ////////////////////////////// 4896 // PMIP Integration // 4897 typedef pmip-commandset { 4898 type bits { 4899 bit assign-ip { 4900 position 0; 4901 description "Assign IP"; 4902 } 4903 bit assign-dpn { 4904 position 1; 4905 description "Assign DPN"; 4906 } 4907 bit session { 4908 position 2; 4909 description "Session Level"; 4910 } 4911 bit uplink { 4912 position 3; 4913 description "Uplink"; 4914 } 4915 bit downlink { 4916 position 4; 4917 description "Downlink"; 4918 } 4919 } 4920 description "PMIP Instructions"; 4921 } 4922 /////////////////////////////// 4923 // 3GPP Integration // 4925 // Type Defs 4926 typedef fpc-qos-class-identifier { 4927 type uint8 { 4928 range "1..9"; 4929 } 4930 description "QoS Class Identifier (QCI)"; 4931 } 4932 typedef ebi-type { 4933 type uint8 { 4934 range "0..15"; 4935 } 4936 description "EUTRAN Bearere Identifier (EBI) Type"; 4937 } 4938 typedef imsi-type { 4939 type uint64; 4940 description 4941 "International Mobile Subscriber Identity (IMSI) 4942 Value Type"; 4944 } 4945 // Instructions 4946 typedef threegpp-instr { 4947 type bits { 4948 bit assign-ip { 4949 position 0; 4950 description "Assign IP Address/Prefix"; 4951 } 4952 bit assign-fteid-ip { 4953 position 1; 4954 description "Assign FTEID-IP"; 4955 } 4956 bit assign-fteid-teid { 4957 position 2; 4958 description "Assign FTEID-TEID"; 4959 } 4960 bit session { 4961 position 3; 4962 description "Commands apply to the Session Level"; 4963 } 4964 bit uplink { 4965 position 4; 4966 description "Commands apply to the Uplink"; 4967 } 4968 bit downlink { 4969 position 5; 4970 description "Commands apply to the Downlink"; 4971 } 4972 bit assign-dpn { 4973 position 6; 4974 description "Assign DPN"; 4975 } 4976 } 4977 description "Instruction Set for 3GPP R11"; 4978 } 4980 ////////////////////////////// 4981 // ACTION VALUE AUGMENTS 4982 grouping fpc-action-value { 4983 choice action-value { 4984 mandatory true; 4985 leaf drop { 4986 type empty; 4987 description "Drop Traffic"; 4988 } 4989 container rewrite { 4990 choice rewrite-value { 4991 case prefix-descriptor { 4992 uses fpcbase:prefix-descriptor; 4993 description "IP Prefix descriptor"; 4994 } 4995 case pmip-selector { 4996 uses traffic-selectors:traffic-selector; 4997 description "PMIP Selector"; 4998 } 4999 container rfc5777-classifier-template { 5000 uses rfc5777:classifier; 5001 description "RFC 5777 Classifier"; 5002 } 5003 description "Rewrite Choice"; 5004 } 5005 description "Rewrite/NAT value"; 5006 } 5007 container copy-forward-nexthop { 5008 uses fpcbase:fpc-nexthop; 5009 description "Copy Forward Value"; 5010 } 5011 container nexthop { 5012 uses fpcbase:fpc-nexthop; 5013 description "NextHop Value"; 5014 } 5015 case qos { 5016 leaf trafficclass { 5017 type inet:dscp; 5018 description "Traffic Class"; 5019 } 5020 uses pmipqos:qosattribute; 5021 leaf qci { 5022 type fpcbase:fpc-qos-class-identifier; 5023 description "QCI"; 5024 } 5025 leaf ue-agg-max-bitrate { 5026 type uint32; 5027 description "UE Aggregate Max Bitrate"; 5028 } 5029 leaf apn-ambr { 5030 type uint32; 5031 description 5032 "Access Point Name Aggregate Max Bit Rate"; 5033 } 5034 description "QoS Attributes"; 5035 } 5036 description "Action Value"; 5037 } 5038 description "FPC Action Value"; 5039 } 5041 // Instructions 5042 grouping instructions { 5043 container command-set { 5044 choice instr-type { 5045 leaf instr-3gpp-mob { 5046 type fpcbase:threegpp-instr; 5047 description "3GPP GTP Mobility Instructions"; 5048 } 5049 leaf instr-pmip { 5050 type pmip-commandset; 5051 description "PMIP Instructions"; 5052 } 5053 description "Instruction Value Choice"; 5054 } 5055 description "Instructions"; 5056 } 5057 description "Instructions Value"; 5058 } 5059 } 5060 5062 A.3. PMIP QoS Model 5064 This module defines the base protocol elements specified in this 5065 document. 5067 This module references [RFC6991]. 5069 file "ietf-pmip-qos@2018-05-17.yang" 5070 module ietf-pmip-qos { 5071 yang-version 1.1; 5073 namespace 5074 "urn:ietf:params:xml:ns:yang:ietf-pmip-qos"; 5076 prefix "qos-pmip"; 5078 import ietf-inet-types { 5079 prefix inet; 5080 revision-date 2013-07-15; 5081 } 5082 import ietf-trafficselector-types { prefix traffic-selectors; 5083 revision-date 2018-05-17; } 5085 organization "IETF Distributed Mobility Management (DMM) 5086 Working Group"; 5088 contact 5089 "WG Web: 5090 WG List: 5092 WG Chair: Dapeng Liu 5093 5095 WG Chair: Sri Gundavelli 5096 5098 Editor: Satoru Matsushima 5099 5101 Editor: Lyle Bertz 5102 "; 5104 description 5105 "This module contains a collection of YANG definitions for 5106 quality of service paramaters used in Proxy Mobile IPv6. 5108 Copyright (c) 2016 IETF Trust and the persons identified as the 5109 document authors. All rights reserved. 5111 This document is subject to BCP 78 and the IETF Trust's Legal 5112 Provisions Relating to IETF Documents 5113 (http://trustee.ietf.org/license-info) in effect on the date of 5114 publication of this document. Please review these documents 5115 carefully, as they describe your rights and restrictions with 5116 respect to this document. Code Components extracted from this 5117 document must include Simplified BSD License text as described 5118 in Section 4.e of the Trust Legal Provisions and are provided 5119 without warranty as described in the Simplified BSD License."; 5121 revision 2018-05-17 { 5122 description "Initial Revision."; 5123 reference "RFC 6088: Traffic Selectors for Flow Bindings"; 5124 } 5126 // Type Definitions 5128 // QoS Option Field Type Definitions 5129 typedef sr-id { 5130 type uint8; 5131 description 5132 "An 8-bit unsigned integer used for identifying the QoS 5133 Service Request."; 5134 } 5136 typedef traffic-class { 5137 type inet:dscp; 5138 description 5139 "Traffic Class consists of a 6-bit DSCP field followed by a 5140 2-bit reserved field."; 5141 reference 5142 "RFC 3289: Management Information Base for the 5143 Differentiated Services Architecture 5144 RFC 2474: Definition of the Differentiated Services Field 5145 (DS Field) in the IPv4 and IPv6 Headers 5146 RFC 2780: IANA Allocation Guidelines For Values In 5147 the Internet Protocol and Related Headers"; 5148 } 5150 typedef operational-code { 5151 type enumeration { 5152 enum RESPONSE { 5153 value 0; 5154 description "Response to a QoS request"; 5155 } 5156 enum ALLOCATE { 5157 value 1; 5158 description "Request to allocate QoS resources"; 5159 } 5160 enum DE-ALLOCATE { 5161 value 2; 5162 description "Request to de-Allocate QoS resources"; 5163 } 5164 enum MODIFY { 5165 value 3; 5166 description "Request to modify QoS parameters for a 5167 previously negotiated QoS Service Request"; 5168 } 5169 enum QUERY { 5170 value 4; 5171 description "Query to list the previously negotiated QoS 5172 Service Requests that are still active"; 5173 } 5174 enum NEGOTIATE { 5175 value 5; 5176 description "Response to a QoS Service Request with a 5177 counter QoS proposal"; 5178 } 5179 } 5180 description 5181 "The type of QoS request. Reserved values: (6) to (255) 5182 Currently not used. Receiver MUST ignore the option 5183 received with any value in this range."; 5184 } 5186 //Value definitions 5187 typedef Per-MN-Agg-Max-DL-Bit-Rate-Value { 5188 type uint32; 5189 description 5190 "The aggregate maximum downlink bit rate that is 5191 requested/allocated for all the mobile node's IP flows. 5192 The measurement units are bits per second."; 5193 } 5195 typedef Per-MN-Agg-Max-UL-Bit-Rate-Value { 5196 type uint32; 5197 description 5198 "The aggregate maximum uplink bit rate that is 5199 requested/allocated for the mobile node's IP flows. The 5200 measurement units are bits per second."; 5201 } 5203 // Generic Structure for the uplink and downlink 5204 grouping Per-Session-Agg-Max-Bit-Rate-Value { 5205 leaf max-rate { 5206 type uint32; 5207 mandatory true; 5208 description 5209 "The aggregate maximum bit rate that is requested/allocated 5210 for all the IP flows associated with that mobility session. 5211 The measurement units are bits per second."; 5212 } 5213 leaf service-flag { 5214 type boolean; 5215 mandatory true; 5216 description 5217 "This flag is used for extending the scope of the 5218 target flows for Per-Session-Agg-Max-UL/DL-Bit-Rate 5219 from(UL)/to(DL) the mobile node's other mobility sessions 5220 sharing the same Service Identifier."; 5221 reference 5222 "RFC 5149 - Service Selection mobility option"; 5223 } 5224 leaf exclude-flag { 5225 type boolean; 5226 mandatory true; 5227 description 5228 "This flag is used to request that the uplink/downlink 5229 flows for which the network is providing 5230 Guaranteed-Bit-Rate service be excluded from the 5231 target IP flows for which 5232 Per-Session-Agg-Max-UL/DL-Bit-Rate is measured."; 5233 } 5235 description "Per-Session-Agg-Max-Bit-Rate Value"; 5236 } 5238 grouping Allocation-Retention-Priority-Value { 5239 leaf priority-level { 5240 type uint8 { 5241 range "0..15"; 5242 } 5243 mandatory true; 5244 description 5245 "This is a 4-bit unsigned integer value. It is used to decide 5246 whether a mobility session establishment or modification 5247 request can be accepted; this is typically used for 5248 admission control of Guaranteed Bit Rate traffic in case of 5249 resource limitations."; 5250 } 5251 leaf preemption-capability { 5252 type enumeration { 5253 enum enabled { 5254 value 0; 5255 description "enabled"; 5256 } 5257 enum disabled { 5258 value 1; 5259 description "disabled"; 5260 } 5261 enum reserved1 { 5262 value 2; 5263 description "reserved1"; 5264 } 5265 enum reserved2 { 5266 value 3; 5267 description "reserved2"; 5268 } 5269 } 5270 mandatory true; 5271 description 5272 "This is a 2-bit unsigned integer value. It defines whether a 5273 service data flow can get resources tha were already 5274 assigned to another service data flow with a lower priority 5275 level."; 5276 } 5277 leaf preemption-vulnerability { 5278 type enumeration { 5279 enum enabled { 5280 value 0; 5281 description "enabled"; 5282 } 5283 enum disabled { 5284 value 1; 5285 description "disabled"; 5286 } 5287 enum reserved1 { 5288 value 2; 5289 description "reserved1"; 5290 } 5291 enum reserved2 { 5292 value 3; 5293 description "reserved2"; 5294 } 5295 } 5296 mandatory true; 5297 description 5298 "This is a 2-bit unsigned integer value. It defines whether a 5299 service data flow can lose the resources assigned to it in 5300 order to admit a service data flow with a higher priority 5301 level."; 5302 } 5303 description "Allocation-Retention-Priority Value"; 5304 } 5306 typedef Aggregate-Max-DL-Bit-Rate-Value { 5307 type uint32; 5308 description 5309 "The aggregate maximum downlink bit rate that is 5310 requested/allocated for downlink IP flows. The measurement 5311 units are bits per second."; 5312 } 5314 typedef Aggregate-Max-UL-Bit-Rate-Value { 5315 type uint32; 5316 description 5317 "The aggregate maximum downlink bit rate that is 5318 requested/allocated for downlink IP flows. The measurement 5319 units are bits per second."; 5320 } 5322 typedef Guaranteed-DL-Bit-Rate-Value { 5323 type uint32; 5324 description 5325 "The guaranteed bandwidth in bits per second for downlink 5326 IP flows. The measurement units are bits per second."; 5327 } 5329 typedef Guaranteed-UL-Bit-Rate-Value { 5330 type uint32; 5331 description 5332 "The guaranteed bandwidth in bits per second for uplink 5333 IP flows. The measurement units are bits per second."; 5334 } 5336 grouping QoS-Vendor-Specific-Attribute-Value-Base { 5337 leaf vendorid { 5338 type uint32; 5339 mandatory true; 5340 description 5341 "The Vendor ID is the SMI (Structure of Management 5342 Information) Network Management Private Enterprise Code of 5343 the IANA-maintained 'Private Enterprise Numbers' 5344 registry."; 5345 reference 5346 "'PRIVATE ENTERPRISE NUMBERS', SMI Network Management 5347 Private Enterprise Codes, April 2014, 5348 "; 5349 } 5350 leaf subtype { 5351 type uint8; 5352 mandatory true; 5353 description 5354 "An 8-bit field indicating the type of vendor-specific 5355 information carried in the option. The namespace for this 5356 sub-type is managed by the vendor identified by the 5357 Vendor ID field."; 5358 } 5359 description 5360 "QoS Vendor-Specific Attribute."; 5361 } 5363 //Primary Structures (groupings) 5364 grouping qosattribute { 5365 leaf per-mn-agg-max-dl { 5366 type qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value; 5367 description "Per-MN-Agg-Max-DL-Bit-Rate Value"; 5368 } 5369 leaf per-mn-agg-max-ul { 5370 type qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value; 5371 description "Per-MN-Agg-Max-UL-Bit-Rate Value"; 5372 } 5373 container per-session-agg-max-dl { 5374 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 5375 description "Per-Session-Agg-Max-Bit-Rate Value"; 5376 } 5377 container per-session-agg-max-ul { 5378 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 5379 description "Per-Session-Agg-Max-Bit-Rate Value"; 5380 } 5381 uses qos-pmip:Allocation-Retention-Priority-Value; 5382 leaf agg-max-dl { 5383 type qos-pmip:Aggregate-Max-DL-Bit-Rate-Value; 5384 description "Aggregate-Max-DL-Bit-Rate Value"; 5385 } 5386 leaf agg-max-ul { 5387 type qos-pmip:Aggregate-Max-UL-Bit-Rate-Value; 5388 description "Aggregate-Max-UL-Bit-Rate Value"; 5389 } 5390 leaf gbr-dl { 5391 type qos-pmip:Guaranteed-DL-Bit-Rate-Value; 5392 description "Guaranteed-DL-Bit-Rate Value"; 5393 } 5394 leaf gbr-ul { 5395 type qos-pmip:Guaranteed-UL-Bit-Rate-Value; 5396 description "Guaranteed-UL-Bit-Rate Value"; 5397 } 5398 description "PMIP QoS Attributes. Note Vendor option 5399 is not a part of this grouping"; 5400 } 5402 grouping qosoption { 5403 leaf srid { 5404 type sr-id; 5405 mandatory true; 5406 description "Service Request Identifier"; 5407 } 5408 leaf trafficclass { 5409 type traffic-class; 5410 mandatory true; 5411 description "Traffic Class"; 5412 } 5413 leaf operationcode { 5414 type operational-code; 5415 mandatory true; 5416 description "Operation Code"; 5417 } 5418 uses qos-pmip:qosattribute; 5419 uses qos-pmip:QoS-Vendor-Specific-Attribute-Value-Base; 5420 container traffic-selector { 5421 uses traffic-selectors:traffic-selector; 5422 description "traffic selector"; 5423 } 5424 description "PMIP QoS Option"; 5425 } 5426 } 5427 5429 A.4. Traffic Selectors YANG Model 5431 This module defines traffic selector types commonly used in Proxy 5432 Mobile IP (PMIP). 5434 This module references [RFC6991]. 5436 file "ietf-trafficselector-types@2018-05-17.yang" 5437 module ietf-trafficselector-types { 5438 yang-version 1.1; 5440 namespace 5441 "urn:ietf:params:xml:ns:yang:ietf-trafficselector-types"; 5443 prefix "traffic-selectors"; 5445 import ietf-inet-types { 5446 prefix inet; 5447 revision-date 2013-07-15; 5448 } 5450 organization "IETF Distributed Mobility Management (DMM) 5451 Working Group"; 5453 contact 5454 "WG Web: 5455 WG List: 5457 WG Chair: Dapeng Liu 5458 5460 WG Chair: Sri Gundavelli 5461 5463 Editor: Satoru Matsushima 5464 5466 Editor: Lyle Bertz 5467 "; 5469 description 5470 "This module contains a collection of YANG definitions for 5471 traffic selectors for flow bindings. 5473 Copyright (c) 2016 IETF Trust and the persons identified as the 5474 document authors. All rights reserved. 5476 This document is subject to BCP 78 and the IETF Trust's Legal 5477 Provisions Relating to IETF Documents 5478 (http://trustee.ietf.org/license-info) in effect on the date of 5479 publication of this document. Please review these documents 5480 carefully, as they describe your rights and restrictions with 5481 respect to this document. Code Components extracted from this 5482 document must include Simplified BSD License text as described 5483 in Section 4.e of the Trust Legal Provisions and are provided 5484 without warranty as described in the Simplified BSD License."; 5486 revision 2018-05-17 { 5487 description 5488 "Initial Revision."; 5489 reference 5490 "RFC 6088: Traffic Selectors for Flow Bindings"; 5491 } 5493 // Identities 5494 identity traffic-selector-format { 5495 description 5496 "The base type for Traffic-Selector Formats"; 5497 } 5499 identity ipv4-binary-selector-format { 5500 base traffic-selector-format; 5501 description 5502 "IPv4 Binary Traffic Selector Format"; 5503 } 5505 identity ipv6-binary-selector-format { 5506 base traffic-selector-format; 5507 description 5508 "IPv6 Binary Traffic Selector Format"; 5509 } 5511 // Type definitions and groupings 5512 typedef ipsec-spi { 5513 type uint32; 5514 description 5515 "The first 32-bit IPsec Security Parameter Index (SPI) 5516 value on data. This field is defined in [RFC4303]."; 5517 reference 5518 "RFC 4303: IP Encapsulating Security 5519 Payload (ESP)"; 5520 } 5522 grouping traffic-selector-base { 5523 description "A grouping of the commen leaves between the 5524 v4 and v6 Traffic Selectors"; 5525 container ipsec-spi-range { 5526 presence "Enables setting ipsec spi range"; 5527 description 5528 "Inclusive range representing IPSec Security Parameter 5529 Indices to be used. When only start-spi is present, it 5530 represents a single spi."; 5531 leaf start-spi { 5532 type ipsec-spi; 5533 mandatory true; 5534 description 5535 "The first 32-bit IPsec SPI value on data."; 5536 } 5537 leaf end-spi { 5538 type ipsec-spi; 5539 must ". >= ../start-spi" { 5540 error-message 5541 "The end-spi must be greater than or equal 5542 to start-spi"; 5543 } 5544 description 5545 "If more than one contiguous SPI value needs to be matched, 5546 then this field indicates the end value of a range."; 5547 } 5548 } 5549 container source-port-range { 5550 presence "Enables setting source port range"; 5551 description 5552 "Inclusive range representing source ports to be used. 5553 When only start-port is present, it represents a single 5554 port. These value(s) are from the range of port numbers 5555 defined by IANA (http://www.iana.org)."; 5556 leaf start-port { 5557 type inet:port-number; 5558 mandatory true; 5559 description 5560 "The first 16-bit source port number to be matched"; 5561 } 5562 leaf end-port { 5563 type inet:port-number; 5564 must ". >= ../start-port" { 5565 error-message 5566 "The end-port must be greater than or equal to start-port"; 5567 } 5568 description 5569 "The last 16-bit source port number to be matched"; 5570 } 5571 } 5572 container destination-port-range { 5573 presence "Enables setting destination port range"; 5574 description 5575 "Inclusive range representing destination ports to be used. 5576 When only start-port is present, it represents a single 5577 port."; 5578 leaf start-port { 5579 type inet:port-number; 5580 mandatory true; 5581 description 5582 "The first 16-bit destination port number to be matched"; 5583 } 5584 leaf end-port { 5585 type inet:port-number; 5586 must ". >= ../start-port" { 5587 error-message 5588 "The end-port must be greater than or equal to 5589 start-port"; 5590 } 5591 description 5592 "The last 16-bit destination port number to be matched"; 5593 } 5594 } 5595 } 5597 grouping ipv4-binary-traffic-selector { 5598 container source-address-range-v4 { 5599 presence "Enables setting source IPv4 address range"; 5600 description 5601 "Inclusive range representing IPv4 addresses to be used. When 5602 only start-address is present, it represents a single 5603 address."; 5604 leaf start-address { 5605 type inet:ipv4-address; 5606 mandatory true; 5607 description 5608 "The first source address to be matched"; 5609 } 5610 leaf end-address { 5611 type inet:ipv4-address; 5612 description 5613 "The last source address to be matched"; 5614 } 5615 } 5616 container destination-address-range-v4 { 5617 presence "Enables setting destination IPv4 address range"; 5618 description 5619 "Inclusive range representing IPv4 addresses to be used. 5621 When only start-address is present, it represents a 5622 single address."; 5623 leaf start-address { 5624 type inet:ipv4-address; 5625 mandatory true; 5626 description 5627 "The first destination address to be matched"; 5628 } 5629 leaf end-address { 5630 type inet:ipv4-address; 5631 description 5632 "The last destination address to be matched"; 5633 } 5634 } 5635 container ds-range { 5636 presence "Enables setting dscp range"; 5637 description 5638 "Inclusive range representing DiffServ Codepoints to be used. 5639 When only start-ds is present, it represents a single 5640 Codepoint."; 5641 leaf start-ds { 5642 type inet:dscp; 5643 mandatory true; 5644 description 5645 "The first differential service value to be matched"; 5646 } 5647 leaf end-ds { 5648 type inet:dscp; 5649 must ". >= ../start-ds" { 5650 error-message 5651 "The end-ds must be greater than or equal to start-ds"; 5652 } 5653 description 5654 "The last differential service value to be matched"; 5655 } 5656 } 5657 container protocol-range { 5658 presence "Enables setting protocol range"; 5659 description 5660 "Inclusive range representing IP protocol(s) to be used. When 5661 only start-protocol is present, it represents a single 5662 protocol."; 5663 leaf start-protocol { 5664 type uint8; 5665 mandatory true; 5666 description 5667 "The first 8-bit protocol value to be matched."; 5668 } 5669 leaf end-protocol { 5670 type uint8; 5671 must ". >= ../start-protocol" { 5672 error-message 5673 "The end-protocol must be greater than or equal to 5674 start-protocol"; 5675 } 5676 description 5677 "The last 8-bit protocol value to be matched."; 5678 } 5679 } 5680 description "ipv4 binary traffic selector"; 5681 } 5682 grouping ipv6-binary-traffic-selector { 5683 container source-address-range-v6 { 5684 presence "Enables setting source IPv6 address range"; 5685 description 5686 "Inclusive range representing IPv6 addresses to be used. 5687 When only start-address is present, it represents a 5688 single address."; 5689 leaf start-address { 5690 type inet:ipv6-address; 5691 mandatory true; 5692 description 5693 "The first source address, from the 5694 range of 128-bit IPv6 addresses to be matched"; 5695 } 5696 leaf end-address { 5697 type inet:ipv6-address; 5698 description 5699 "The last source address, from the 5700 range of 128-bit IPv6 addresses to be matched"; 5701 } 5702 } 5703 container destination-address-range-v6 { 5704 presence "Enables setting destination IPv6 address range"; 5705 description 5706 "Inclusive range representing IPv6 addresses to be used. 5707 When only start-address is present, it represents a 5708 single address."; 5709 leaf start-address { 5710 type inet:ipv6-address; 5711 mandatory true; 5712 description 5713 "The first destination address, from the 5714 range of 128-bit IPv6 addresses to be matched"; 5715 } 5716 leaf end-address { 5717 type inet:ipv6-address; 5718 description 5719 "The last destination address, from the 5720 range of 128-bit IPv6 addresses to be matched"; 5721 } 5722 } 5723 container flow-label-range { 5724 presence "Enables setting Flow Label range"; 5725 description 5726 "Inclusive range representing IPv4 addresses to be used. When 5727 only start-flow-label is present, it represents a single 5728 flow label."; 5729 leaf start-flow-label { 5730 type inet:ipv6-flow-label; 5731 description 5732 "The first flow label value to be matched"; 5733 } 5734 leaf end-flow-label { 5735 type inet:ipv6-flow-label; 5736 must ". >= ../start-flow-label" { 5737 error-message 5738 "The end-flow-lable must be greater than or equal to 5739 start-flow-label"; 5740 } 5741 description 5742 "The first flow label value to be matched"; 5743 } 5744 } 5745 container traffic-class-range { 5746 presence "Enables setting the traffic class range"; 5747 description 5748 "Inclusive range representing IPv4 addresses to be used. When 5749 only start-traffic-class is present, it represents a single 5750 traffic class."; 5751 leaf start-traffic-class { 5752 type inet:dscp; 5753 description 5754 "The first traffic class value to be matched"; 5755 reference 5756 "RFC 3260: New Terminology and Clarifications for Diffserv 5757 RFC 3168: The Addition of Explicit Congestion Notification 5758 (ECN) to IP"; 5759 } 5760 leaf end-traffic-class { 5761 type inet:dscp; 5762 must ". >= ../start-traffic-class" { 5763 error-message 5764 "The end-traffic-class must be greater than or equal to 5765 start-traffic-class"; 5766 } 5767 description 5768 "The last traffic class value to be matched"; 5769 } 5770 } 5771 container next-header-range { 5772 presence "Enables setting Next Header range"; 5773 description 5774 "Inclusive range representing Next Headers to be used. When 5775 only start-next-header is present, it represents a 5776 single Next Header."; 5777 leaf start-next-header { 5778 type uint8; 5779 description 5780 "The first 8-bit next header value to be matched."; 5781 } 5782 leaf end-next-header { 5783 type uint8; 5784 must ". >= ../start-next-header" { 5785 error-message 5786 "The end-next-header must be greater than or equal to 5787 start-next-header"; 5788 } 5789 description 5790 "The last 8-bit next header value to be matched."; 5791 } 5792 } 5793 description "ipv6 binary traffic selector"; 5794 } 5796 grouping traffic-selector { 5797 leaf ts-format { 5798 type identityref { 5799 base traffic-selector-format; 5800 } 5801 description "Traffic Selector Format"; 5802 } 5803 uses traffic-selectors:traffic-selector-base; 5804 uses traffic-selectors:ipv4-binary-traffic-selector; 5805 uses traffic-selectors:ipv6-binary-traffic-selector; 5806 description 5807 "The traffic selector includes the parameters used to match 5808 packets for a specific flow binding."; 5809 reference 5810 "RFC 6089: Flow Bindings in Mobile IPv6 and Network 5811 Mobility (NEMO) Basic Support"; 5812 } 5814 } 5815 5817 A.5. RFC 5777 Classifier YANG Model 5819 This module defines the RFC 5777 Classifer. 5821 This module references [RFC5777]. 5823 file "ietf-diam-trafficclassifier@2018-05-17.yang" 5824 module ietf-diam-trafficclassifier { 5825 yang-version 1.1; 5827 namespace 5828 "urn:ietf:params:xml:ns:yang:ietf-diam-trafficclassifier"; 5830 prefix "diamclassifier"; 5832 import ietf-inet-types { 5833 prefix inet; 5834 revision-date 2013-07-15; 5835 } 5836 import ietf-yang-types { prefix yang-types; } 5838 organization "IETF Distributed Mobility Management (DMM) 5839 Working Group"; 5841 contact 5842 "WG Web: 5843 WG List: 5845 WG Chair: Dapeng Liu 5846 5848 WG Chair: Sri Gundavelli 5849 5851 Editor: Satoru Matsushima 5852 5854 Editor: Lyle Bertz 5855 "; 5857 description 5858 "This module contains a collection of YANG definitions for 5859 traffic classification and QoS Attributes for Diameter. 5861 Copyright (c) 2018 IETF Trust and the persons identified as the 5862 document authors. All rights reserved. 5864 This document is subject to BCP 78 and the IETF Trust's Legal 5865 Provisions Relating to IETF Documents 5866 (http://trustee.ietf.org/license-info) in effect on the date of 5867 publication of this document. Please review these documents 5868 carefully, as they describe your rights and restrictions with 5869 respect to this document. Code Components extracted from this 5870 document must include Simplified BSD License text as described 5871 in Section 4.e of the Trust Legal Provisions and are provided 5872 without warranty as described in the Simplified BSD License."; 5874 revision 2018-05-17 { 5875 description 5876 "Initial"; 5877 reference 5878 "RFC 5777: Traffic Classification and Quality of Service (QoS) 5879 Attributes for Diameter"; 5880 } 5882 typedef eui64-address-type { 5883 type string { 5884 length "6"; 5885 } 5886 description 5887 "specifies a single layer 2 address in EUI-64 format. 5888 The value is an 8-octet encoding of the address as 5889 it would appear in the frame header."; 5890 } 5891 typedef direction-type { 5892 type enumeration { 5893 enum IN { 5894 value 0; 5895 description 5896 "Applies to flows from the managed terminal."; 5897 } 5898 enum OUT { 5899 value 1; 5900 description 5901 "Applies to flows to the managed terminal."; 5902 } 5903 enum BOTH { 5904 value 2; 5905 description 5906 "Applies to flows both to and from the managed 5907 terminal."; 5908 } 5909 } 5910 description 5911 "Specifies in which direction to apply the classifier."; 5912 } 5913 typedef negated-flag-type { 5914 type enumeration { 5915 enum False { value 0; 5916 description "false"; } 5917 enum True { value 1; 5918 description "True"; } 5919 } 5920 description 5921 "When set to True, the meaning of the match is 5922 inverted and the classifier will match addresses 5923 other than those specified by the From-Spec or 5924 To-Spec AVP. 5926 Note that the negation does not impact the port 5927 comparisons."; 5928 } 5929 grouping index { 5930 leaf index { 5931 type uint16; 5932 mandatory true; 5933 description "Identifier used for referencing"; 5934 } 5935 description "Index Value"; 5936 } 5937 grouping to-from-spec-value { 5938 leaf-list ip-address { 5939 type inet:ip-address; 5940 description "IP address"; 5941 } 5942 list ip-address-range { 5943 key index; 5944 uses diamclassifier:index; 5945 leaf ip-address-start { 5946 type inet:ip-address; 5947 description "IP Address Start"; 5948 } 5949 leaf ip-address-end { 5950 type inet:ip-address; 5951 description "IP Address End"; 5952 } 5953 description "IP Address Range"; 5954 } 5955 leaf-list ip-address-mask { 5956 type inet:ip-prefix; 5957 description "IP Address Mask"; 5959 } 5960 leaf-list mac-address { 5961 type yang-types:mac-address; 5962 description "MAC address"; 5963 } 5964 list mac-address-mask { 5965 key mac-address; 5966 leaf mac-address { 5967 type yang-types:mac-address; 5968 mandatory true; 5969 description "MAC address"; 5970 } 5971 leaf macaddress-mask-pattern { 5972 type yang-types:mac-address; 5973 mandatory true; 5974 description 5975 "The value specifies the bit positions of a 5976 MAC address that are taken for matching."; 5977 } 5978 description "MAC Address Mask"; 5979 } 5980 leaf-list eui64-address { 5981 type diamclassifier:eui64-address-type; 5982 description "EUI64 Address"; 5983 } 5984 list eui64-address-mask { 5985 key eui64-address; 5986 leaf eui64-address { 5987 type diamclassifier:eui64-address-type; 5988 mandatory true; 5989 description "eui64 address"; 5990 } 5991 leaf eui64-address-mask-pattern { 5992 type diamclassifier:eui64-address-type; 5993 mandatory true; 5994 description 5995 "The value is 8 octets specifying the bit 5996 positions of a EUI64 address that are taken 5997 for matching."; 5998 } 5999 description "EUI64 Address Mask"; 6000 } 6001 leaf-list port { 6002 type inet:port-number; 6003 description "Port Number"; 6004 } 6005 list port-range { 6006 key index; 6007 uses diamclassifier:index; 6008 leaf ip-address-start { 6009 type inet:port-number; 6010 description "Port Start"; 6011 } 6012 leaf ip-address-end { 6013 type inet:port-number; 6014 description "Port End"; 6015 } 6016 description "Port Range"; 6017 } 6018 leaf negated { 6019 type diamclassifier:negated-flag-type; 6020 description "Negated"; 6021 } 6022 leaf use-assigned-address { 6023 type boolean; 6024 description "Use Assigned Address"; 6025 } 6026 description 6027 "Basic traffic description value"; 6028 } 6030 grouping option-type-group { 6031 leaf option-type { 6032 type uint8; 6033 mandatory true; 6034 description "Option Type"; 6035 } 6036 leaf-list ip-option-value { 6037 type string; 6038 description "Option Value"; 6039 } 6040 leaf negated { 6041 type diamclassifier:negated-flag-type; 6042 description "Negated"; 6043 } 6044 description "Common X Option Pattern"; 6045 } 6046 typedef vlan-id { 6047 type uint32 { 6048 range "0..4095"; 6049 } 6050 description "VLAN ID"; 6051 } 6053 grouping classifier { 6054 leaf protocol { 6055 type uint8; 6056 description "Protocol"; 6057 } 6058 leaf direction { 6059 type diamclassifier:direction-type; 6060 description "Direction"; 6061 } 6062 list from-spec { 6063 key index; 6064 uses diamclassifier:index; 6065 uses diamclassifier:to-from-spec-value; 6066 description "from specification"; 6067 } 6068 list to-spec { 6069 key index; 6070 uses diamclassifier:index; 6071 uses diamclassifier:to-from-spec-value; 6072 description "to specification"; 6073 } 6074 leaf-list disffserv-code-point { 6075 type inet:dscp; 6076 description "DSCP"; 6077 } 6078 leaf fragmentation-flag { 6079 type enumeration { 6080 enum DF { 6081 value 0; 6082 description "Don't Fragment"; 6083 } 6084 enum MF { 6085 value 1; 6086 description "More Fragments"; 6087 } 6088 } 6089 description "Fragmenttation Flag"; 6090 } 6091 list ip-option { 6092 key option-type; 6093 uses diamclassifier:option-type-group; 6094 description "IP Option Value"; 6095 } 6096 list tcp-option { 6097 key option-type; 6098 uses diamclassifier:option-type-group; 6099 description "TCP Option Value"; 6100 } 6101 list tcp-flag { 6102 key tcp-flag-type; 6103 leaf tcp-flag-type { 6104 type uint32; 6105 mandatory true; 6106 description "TCP Flag Type"; 6107 } 6108 leaf negated { 6109 type diamclassifier:negated-flag-type; 6110 description "Negated"; 6111 } 6112 description "TCP Flags"; 6113 } 6114 list icmp-option { 6115 key option-type; 6116 uses diamclassifier:option-type-group; 6117 description "ICMP Option Value"; 6118 } 6119 list eth-option { 6120 key index; 6121 uses diamclassifier:index; 6122 container eth-proto-type { 6123 leaf-list eth-ether-type { 6124 type string { 6125 length "2"; 6126 } 6127 description "value of ethertype field"; 6128 } 6129 leaf-list eth-sap { 6130 type string { 6131 length "2"; 6132 } 6133 description "802.2 SAP"; 6134 } 6135 description "Ether Proto Type"; 6136 } 6137 list vlan-id-range { 6138 key index; 6139 uses diamclassifier:index; 6140 leaf-list s-vlan-id-start { 6141 type diamclassifier:vlan-id; 6142 description "S-VID VLAN ID Start"; 6143 } 6144 leaf-list s-vlan-id-end { 6145 type diamclassifier:vlan-id; 6146 description "S-VID VLAN ID End"; 6147 } 6148 leaf-list c-vlan-id-start { 6149 type diamclassifier:vlan-id; 6150 description "C-VID VLAN ID Start"; 6152 } 6153 leaf-list c-vlan-id-end { 6154 type diamclassifier:vlan-id; 6155 description "C-VID VLAN ID End"; 6156 } 6157 description "VLAN ID Range"; 6158 } 6159 list user-priority-range { 6160 key index; 6161 uses diamclassifier:index; 6162 leaf-list low-user-priority { 6163 type uint32 { 6164 range "0..7"; 6165 } 6166 description "Low User Priority"; 6167 } 6168 leaf-list high-user-priority { 6169 type uint32 { 6170 range "0..7"; 6171 } 6172 description "High User Priority"; 6173 } 6174 description "User priority range"; 6175 } 6176 description "Ether Option"; 6177 } 6178 description "RFC 5777 Classifier"; 6179 } 6180 } 6181 6183 Appendix B. FPC YANG Tree Structure 6185 This section only shows the structure for FPC YANG model. NOTE, it 6186 does NOT show the settings, Action values or Descriptor Value. 6188 descriptor_value: 6189 +--rw (descriptor-value) 6190 +--:(all-traffic) 6191 | +--rw all-traffic? empty 6192 +--:(no-traffic) 6193 | +--rw no-traffic? empty 6194 +--:(prefix-descriptor) 6195 | +--rw destination-ip? inet:ip-prefix 6196 | +--rw source-ip? inet:ip-prefix 6197 +--:(pmip-selector) 6198 | +--rw ts-format? identityref 6199 | +--rw ipsec-spi-range! 6200 | | +--rw start-spi ipsec-spi 6201 | | +--rw end-spi? ipsec-spi 6202 | +--rw source-port-range! 6203 | | +--rw start-port inet:port-number 6204 | | +--rw end-port? inet:port-number 6205 | +--rw destination-port-range! 6206 | | +--rw start-port inet:port-number 6207 | | +--rw end-port? inet:port-number 6208 | +--rw source-address-range-v4! 6209 | | +--rw start-address inet:ipv4-address 6210 | | +--rw end-address? inet:ipv4-address 6211 | +--rw destination-address-range-v4! 6212 | | +--rw start-address inet:ipv4-address 6213 | | +--rw end-address? inet:ipv4-address 6214 | +--rw ds-range! 6215 | | +--rw start-ds inet:dscp 6216 | | +--rw end-ds? inet:dscp 6217 | +--rw protocol-range! 6218 | | +--rw start-protocol uint8 6219 | | +--rw end-protocol? uint8 6220 | +--rw source-address-range-v6! 6221 | | +--rw start-address inet:ipv6-address 6222 | | +--rw end-address? inet:ipv6-address 6223 | +--rw destination-address-range-v6! 6224 | | +--rw start-address inet:ipv6-address 6225 | | +--rw end-address? inet:ipv6-address 6226 | +--rw flow-label-range! 6227 | | +--rw start-flow-label? inet:ipv6-flow-label 6228 | | +--rw end-flow-label? inet:ipv6-flow-label 6229 | +--rw traffic-class-range! 6230 | | +--rw start-traffic-class? inet:dscp 6231 | | +--rw end-traffic-class? inet:dscp 6232 | +--rw next-header-range! 6233 | +--rw start-next-header? uint8 6234 | +--rw end-next-header? uint8 6235 +--:(rfc5777-classifier-template) 6236 | +--rw rfc5777-classifier-template 6237 | +--rw protocol? uint8 6238 | +--rw direction? diamclassifier:direction-type 6239 | +--rw from-spec* [index] 6240 | | +--rw index uint16 6241 | | +--rw ip-address* inet:ip-address 6242 | | +--rw ip-address-range* [index] 6243 | | | +--rw index uint16 6244 | | | +--rw ip-address-start? inet:ip-address 6245 | | | +--rw ip-address-end? inet:ip-address 6246 | | +--rw ip-address-mask* inet:ip-prefix 6247 | | +--rw mac-address* yang-types:mac-address 6248 | | +--rw mac-address-mask* [mac-address] 6249 | | | +--rw mac-address yang-types:mac-address 6250 | | | +--rw macaddress-mask-pattern yang-types:mac-address 6251 | | +--rw eui64-address* 6252 diamclassifier:eui64-address-type 6253 | | +--rw eui64-address-mask* [eui64-address] 6254 | | | +--rw eui64-address 6255 diamclassifier:eui64-address-type 6256 | | | +--rw eui64-address-mask-pattern 6257 diamclassifier:eui64-address-type 6258 | | +--rw port* inet:port-number 6259 | | +--rw port-range* [index] 6260 | | | +--rw index uint16 6261 | | | +--rw ip-address-start? inet:port-number 6262 | | | +--rw ip-address-end? inet:port-number 6263 | | +--rw negated? 6264 diamclassifier:negated-flag-type 6265 | | +--rw use-assigned-address? boolean 6266 | +--rw to-spec* [index] 6267 | | +--rw index uint16 6268 | | +--rw ip-address* inet:ip-address 6269 | | +--rw ip-address-range* [index] 6270 | | | +--rw index uint16 6271 | | | +--rw ip-address-start? inet:ip-address 6272 | | | +--rw ip-address-end? inet:ip-address 6273 | | +--rw ip-address-mask* inet:ip-prefix 6274 | | +--rw mac-address* yang-types:mac-address 6275 | | +--rw mac-address-mask* [mac-address] 6276 | | | +--rw mac-address yang-types:mac-address 6277 | | | +--rw macaddress-mask-pattern yang-types:mac-address 6278 | | +--rw eui64-address* 6279 diamclassifier:eui64-address-type 6280 | | +--rw eui64-address-mask* [eui64-address] 6281 | | | +--rw eui64-address 6282 diamclassifier:eui64-address-type 6283 | | | +--rw eui64-address-mask-pattern 6284 diamclassifier:eui64-address-type 6285 | | +--rw port* inet:port-number 6286 | | +--rw port-range* [index] 6287 | | | +--rw index uint16 6288 | | | +--rw ip-address-start? inet:port-number 6289 | | | +--rw ip-address-end? inet:port-number 6290 | | +--rw negated? 6291 diamclassifier:negated-flag-type 6292 | | +--rw use-assigned-address? boolean 6293 | +--rw disffserv-code-point* inet:dscp 6294 | +--rw fragmentation-flag? enumeration 6295 | +--rw ip-option* [option-type] 6296 | | +--rw option-type uint8 6297 | | +--rw ip-option-value* string 6298 | | +--rw negated? diamclassifier:negated-flag-type 6299 | +--rw tcp-option* [option-type] 6300 | | +--rw option-type uint8 6301 | | +--rw ip-option-value* string 6302 | | +--rw negated? diamclassifier:negated-flag-type 6303 | +--rw tcp-flag* [tcp-flag-type] 6304 | | +--rw tcp-flag-type uint32 6305 | | +--rw negated? diamclassifier:negated-flag-type 6306 | +--rw icmp-option* [option-type] 6307 | | +--rw option-type uint8 6308 | | +--rw ip-option-value* string 6309 | | +--rw negated? diamclassifier:negated-flag-type 6310 | +--rw eth-option* [index] 6311 | +--rw index uint16 6312 | +--rw eth-proto-type 6313 | | +--rw eth-ether-type* string 6314 | | +--rw eth-sap* string 6315 | +--rw vlan-id-range* [index] 6316 | | +--rw index uint16 6317 | | +--rw s-vlan-id-start* diamclassifier:vlan-id 6318 | | +--rw s-vlan-id-end* diamclassifier:vlan-id 6319 | | +--rw c-vlan-id-start* diamclassifier:vlan-id 6320 | | +--rw c-vlan-id-end* diamclassifier:vlan-id 6321 | +--rw user-priority-range* [index] 6322 | +--rw index uint16 6323 | +--rw low-user-priority* uint32 6324 | +--rw high-user-priority* uint32 6325 +--:(packet-filter) 6326 | +--rw packet-filter 6327 | +--rw direction? fpcbase:packet-filter-direction 6328 | +--rw identifier? uint8 6329 | +--rw evaluation-precedence? uint8 6330 | +--rw contents* [component-type-identifier] 6331 | +--rw component-type-identifier fpcbase:component-type-id 6332 | +--rw (value)? 6333 | +--:(ipv4-local) 6334 | | +--rw ipv4-local? inet:ipv4-address 6335 | +--:(ipv6-prefix-local) 6336 | | +--rw ipv6-prefix-local? inet:ipv6-prefix 6337 | +--:(ipv4-ipv6-remote) 6338 | | +--rw ipv4-ipv6-remote? inet:ip-address 6339 | +--:(ipv6-prefix-remote) 6340 | | +--rw ipv6-prefix-remote? inet:ipv6-prefix 6341 | +--:(next-header) 6342 | | +--rw next-header? uint8 6343 | +--:(local-port) 6344 | | +--rw local-port? inet:port-number 6345 | +--:(local-port-range) 6346 | | +--rw local-port-lo? inet:port-number 6347 | | +--rw local-port-hi? inet:port-number 6348 | +--:(remote-port) 6349 | | +--rw remote-port? inet:port-number 6350 | +--:(remote-port-range) 6351 | | +--rw remote-port-lo? inet:port-number 6352 | | +--rw remote-port-hi? inet:port-number 6353 | +--:(ipsec-index) 6354 | | +--rw ipsec-index? traffic-selectors:ipsec-spi 6355 | +--:(traffic-class) 6356 | | +--rw traffic-class? inet:dscp 6357 | +--:(traffic-class-range) 6358 | | +--rw traffic-class-lo? inet:dscp 6359 | | +--rw traffic-class-hi? inet:dscp 6360 | +--:(flow-label) 6361 | +--rw flow-label* inet:ipv6-flow-label 6362 +--:(tunnel-info) 6363 +--rw tunnel-info 6364 +--rw tunnel-local-address? inet:ip-address 6365 +--rw tunnel-remote-address? inet:ip-address 6366 +--rw mtu-size? uint32 6367 +--rw tunnel? identityref 6368 +--rw payload-type? enumeration 6369 +--rw gre-key? uint32 6370 +--rw gtp-tunnel-info 6371 | +--rw local-tunnel-identifier? uint32 6372 | +--rw remote-tunnel-identifier? uint32 6373 | +--rw sequence-numbers-enabled? boolean 6374 +--rw ebi? fpcbase:ebi-type 6375 +--rw lbi? fpcbase:ebi-type 6377 action_value: 6378 +--:(action-value) 6379 | +--rw (action-value) 6380 | +--:(drop) 6381 | | +--rw drop? empty 6382 | +--:(rewrite) 6383 | | +--rw rewrite 6384 | | +--rw (rewrite-value)? 6385 | | +--:(prefix-descriptor) 6386 | | | +--rw destination-ip? inet:ip-prefix 6387 | | | +--rw source-ip? inet:ip-prefix 6388 | | +--:(pmip-selector) 6389 | | | +--rw ts-format? identityref 6390 | | | +--rw ipsec-spi-range! 6391 | | | | +--rw start-spi ipsec-spi 6392 | | | | +--rw end-spi? ipsec-spi 6393 | | | +--rw source-port-range! 6394 | | | | +--rw start-port inet:port-number 6395 | | | | +--rw end-port? inet:port-number 6396 | | | +--rw destination-port-range! 6397 | | | | +--rw start-port inet:port-number 6398 | | | | +--rw end-port? inet:port-number 6399 | | | +--rw source-address-range-v4! 6400 | | | | +--rw start-address inet:ipv4-address 6401 | | | | +--rw end-address? inet:ipv4-address 6402 | | | +--rw destination-address-range-v4! 6403 | | | | +--rw start-address inet:ipv4-address 6404 | | | | +--rw end-address? inet:ipv4-address 6405 | | | +--rw ds-range! 6406 | | | | +--rw start-ds inet:dscp 6407 | | | | +--rw end-ds? inet:dscp 6408 | | | +--rw protocol-range! 6409 | | | | +--rw start-protocol uint8 6410 | | | | +--rw end-protocol? uint8 6411 | | | +--rw source-address-range-v6! 6412 | | | | +--rw start-address inet:ipv6-address 6413 | | | | +--rw end-address? inet:ipv6-address 6414 | | | +--rw destination-address-range-v6! 6415 | | | | +--rw start-address inet:ipv6-address 6416 | | | | +--rw end-address? inet:ipv6-address 6417 | | | +--rw flow-label-range! 6418 | | | | +--rw start-flow-label? inet:ipv6-flow-label 6419 | | | | +--rw end-flow-label? inet:ipv6-flow-label 6420 | | | +--rw traffic-class-range! 6421 | | | | +--rw start-traffic-class? inet:dscp 6422 | | | | +--rw end-traffic-class? inet:dscp 6423 | | | +--rw next-header-range! 6424 | | | +--rw start-next-header? uint8 6425 | | | +--rw end-next-header? uint8 6426 | | +--:(rfc5777-classifier-template) 6427 | | +--rw rfc5777-classifier-template 6428 | | +--rw protocol? uint8 6429 | | +--rw direction? 6430 diamclassifier:direction-type 6431 | | +--rw from-spec* [index] 6432 | | | +--rw index uint16 6433 | | | +--rw ip-address* inet:ip-address 6434 | | | +--rw ip-address-range* [index] 6435 | | | | +--rw index uint16 6436 | | | | +--rw ip-address-start? inet:ip-address 6437 | | | | +--rw ip-address-end? inet:ip-address 6438 | | | +--rw ip-address-mask* inet:ip-prefix 6439 | | | +--rw mac-address* yang-types:mac-address 6440 | | | +--rw mac-address-mask* [mac-address] 6441 | | | | +--rw mac-address 6442 yang-types:mac-address 6443 | | | | +--rw macaddress-mask-pattern 6444 yang-types:mac-address 6445 | | | +--rw eui64-address* 6446 diamclassifier:eui64-address-type 6447 | | | +--rw eui64-address-mask* [eui64-address] 6448 | | | | +--rw eui64-address 6449 diamclassifier:eui64-address-type 6450 | | | | +--rw eui64-address-mask-pattern 6451 diamclassifier:eui64-address-type 6452 | | | +--rw port* inet:port-number 6453 | | | +--rw port-range* [index] 6454 | | | | +--rw index uint16 6455 | | | | +--rw ip-address-start? inet:port-number 6456 | | | | +--rw ip-address-end? inet:port-number 6457 | | | +--rw negated? 6458 diamclassifier:negated-flag-type 6459 | | | +--rw use-assigned-address? boolean 6460 | | +--rw to-spec* [index] 6461 | | | +--rw index uint16 6462 | | | +--rw ip-address* inet:ip-address 6463 | | | +--rw ip-address-range* [index] 6464 | | | | +--rw index uint16 6465 | | | | +--rw ip-address-start? inet:ip-address 6466 | | | | +--rw ip-address-end? inet:ip-address 6467 | | | +--rw ip-address-mask* inet:ip-prefix 6468 | | | +--rw mac-address* 6469 yang-types:mac-address 6470 | | | +--rw mac-address-mask* [mac-address] 6471 | | | | +--rw mac-address 6472 yang-types:mac-address 6473 | | | | +--rw macaddress-mask-pattern 6474 yang-types:mac-address 6475 | | | +--rw eui64-address* 6476 diamclassifier:eui64-address-type 6477 | | | +--rw eui64-address-mask* [eui64-address] 6478 | | | | +--rw eui64-address 6479 diamclassifier:eui64-address-type 6480 | | | | +--rw eui64-address-mask-pattern 6481 diamclassifier:eui64-address-type 6482 | | | +--rw port* inet:port-number 6483 | | | +--rw port-range* [index] 6484 | | | | +--rw index uint16 6485 | | | | +--rw ip-address-start? inet:port-number 6486 | | | | +--rw ip-address-end? inet:port-number 6487 | | | +--rw negated? 6488 diamclassifier:negated-flag-type 6489 | | | +--rw use-assigned-address? boolean 6490 | | +--rw disffserv-code-point* inet:dscp 6491 | | +--rw fragmentation-flag? enumeration 6492 | | +--rw ip-option* [option-type] 6493 | | | +--rw option-type uint8 6494 | | | +--rw ip-option-value* string 6495 | | | +--rw negated? 6496 diamclassifier:negated-flag-type 6497 | | +--rw tcp-option* [option-type] 6498 | | | +--rw option-type uint8 6499 | | | +--rw ip-option-value* string 6500 | | | +--rw negated? 6501 diamclassifier:negated-flag-type 6502 | | +--rw tcp-flag* [tcp-flag-type] 6503 | | | +--rw tcp-flag-type uint32 6504 | | | +--rw negated? 6505 diamclassifier:negated-flag-type 6506 | | +--rw icmp-option* [option-type] 6507 | | | +--rw option-type uint8 6508 | | | +--rw ip-option-value* string 6509 | | | +--rw negated? 6510 diamclassifier:negated-flag-type 6511 | | +--rw eth-option* [index] 6512 | | +--rw index uint16 6513 | | +--rw eth-proto-type 6514 | | | +--rw eth-ether-type* string 6515 | | | +--rw eth-sap* string 6516 | | +--rw vlan-id-range* [index] 6517 | | | +--rw index uint16 6518 | | | +--rw s-vlan-id-start* 6519 diamclassifier:vlan-id 6520 | | | +--rw s-vlan-id-end* 6521 diamclassifier:vlan-id 6522 | | | +--rw c-vlan-id-start* 6523 diamclassifier:vlan-id 6524 | | | +--rw c-vlan-id-end* 6525 diamclassifier:vlan-id 6526 | | +--rw user-priority-range* [index] 6527 | | +--rw index uint16 6528 | | +--rw low-user-priority* uint32 6529 | | +--rw high-user-priority* uint32 6530 | +--:(copy-forward-nexthop) 6531 | | +--rw copy-forward-nexthop 6532 | | +--rw (next-hop-value)? 6533 | | +--:(ip-address) 6534 | | | +--rw ip-address? inet:ip-address 6535 | | +--:(mac-address) 6536 | | | +--rw mac-address? ytypes:mac-address 6537 | | +--:(service-path) 6538 | | | +--rw service-path? fpcbase:fpc-service-path-id 6539 | | +--:(mpls-path) 6540 | | | +--rw mpls-path? fpcbase:fpc-mpls-label 6541 | | +--:(nsh) 6542 | | | +--rw nsh? string 6543 | | +--:(interface) 6544 | | | +--rw interface? uint16 6545 | | +--:(segment-identifier) 6546 | | | +--rw segment-identifier? fpcbase:segment-id 6547 | | +--:(mpls-label-stack) 6548 | | | +--rw mpls-label-stack* fpcbase:fpc-mpls-label 6549 | | +--:(mpls-sr-stack) 6550 | | | +--rw mpls-sr-stack* fpcbase:fpc-mpls-label 6551 | | +--:(srv6-stack) 6552 | | | +--rw srv6-stack* fpcbase:segment-id 6553 | | +--:(tunnel-info) 6554 | | +--rw tunnel-info 6555 | | +--rw tunnel-local-address? inet:ip-address 6556 | | +--rw tunnel-remote-address? inet:ip-address 6557 | | +--rw mtu-size? uint32 6558 | | +--rw tunnel? identityref 6559 | | +--rw payload-type? enumeration 6560 | | +--rw gre-key? uint32 6561 | | +--rw gtp-tunnel-info 6562 | | | +--rw local-tunnel-identifier? uint32 6563 | | | +--rw remote-tunnel-identifier? uint32 6564 | | | +--rw sequence-numbers-enabled? boolean 6565 | | +--rw ebi? fpcbase:ebi-type 6566 | | +--rw lbi? fpcbase:ebi-type 6567 | +--:(nexthop) 6568 | | +--rw nexthop 6569 | | +--rw (next-hop-value)? 6570 | | +--:(ip-address) 6571 | | | +--rw ip-address? inet:ip-address 6572 | | +--:(mac-address) 6573 | | | +--rw mac-address? ytypes:mac-address 6574 | | +--:(service-path) 6575 | | | +--rw service-path? fpcbase:fpc-service-path-id 6576 | | +--:(mpls-path) 6577 | | | +--rw mpls-path? fpcbase:fpc-mpls-label 6578 | | +--:(nsh) 6579 | | | +--rw nsh? string 6580 | | +--:(interface) 6581 | | | +--rw interface? uint16 6582 | | +--:(segment-identifier) 6583 | | | +--rw segment-identifier? fpcbase:segment-id 6584 | | +--:(mpls-label-stack) 6585 | | | +--rw mpls-label-stack* fpcbase:fpc-mpls-label 6586 | | +--:(mpls-sr-stack) 6587 | | | +--rw mpls-sr-stack* fpcbase:fpc-mpls-label 6588 | | +--:(srv6-stack) 6589 | | | +--rw srv6-stack* fpcbase:segment-id 6590 | | +--:(tunnel-info) 6591 | | +--rw tunnel-info 6592 | | +--rw tunnel-local-address? inet:ip-address 6593 | | +--rw tunnel-remote-address? inet:ip-address 6594 | | +--rw mtu-size? uint32 6595 | | +--rw tunnel? identityref 6596 | | +--rw payload-type? enumeration 6597 | | +--rw gre-key? uint32 6598 | | +--rw gtp-tunnel-info 6599 | | | +--rw local-tunnel-identifier? uint32 6600 | | | +--rw remote-tunnel-identifier? uint32 6601 | | | +--rw sequence-numbers-enabled? boolean 6602 | | +--rw ebi? fpcbase:ebi-type 6603 | | +--rw lbi? fpcbase:ebi-type 6604 | +--:(qos) 6605 | +--rw trafficclass? inet:dscp 6606 | +--rw per-mn-agg-max-dl? 6607 qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value 6608 | +--rw per-mn-agg-max-ul? 6609 qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value 6610 | +--rw per-session-agg-max-dl 6611 | | +--rw max-rate uint32 6612 | | +--rw service-flag boolean 6613 | | +--rw exclude-flag boolean 6614 | +--rw per-session-agg-max-ul 6615 | | +--rw max-rate uint32 6616 | | +--rw service-flag boolean 6617 | | +--rw exclude-flag boolean 6618 | +--rw priority-level uint8 6619 | +--rw preemption-capability enumeration 6620 | +--rw preemption-vulnerability enumeration 6621 | +--rw agg-max-dl? 6622 qos-pmip:Aggregate-Max-DL-Bit-Rate-Value 6623 | +--rw agg-max-ul? 6624 qos-pmip:Aggregate-Max-UL-Bit-Rate-Value 6625 | +--rw gbr-dl? 6626 qos-pmip:Guaranteed-DL-Bit-Rate-Value 6627 | +--rw gbr-ul? 6628 qos-pmip:Guaranteed-UL-Bit-Rate-Value 6629 | +--rw qci? 6630 fpcbase:fpc-qos-class-identifier 6631 | +--rw ue-agg-max-bitrate? uint32 6632 | +--rw apn-ambr? uint32 6634 policy-configuration-value: 6635 | | | +--rw (policy-configuration-value)? 6636 | | | +--:(descriptor-value) 6637 | | | | ... 6638 | | | +--:(action-value) 6639 | | | | ... 6640 | | | +--:(setting-value) 6641 | | | +--rw setting? 6643 policy-configuration: 6644 | | | +--rw policy-configuration* [index] 6645 | | | +--rw index uint16 6646 | | | +--rw extensible? boolean 6647 | | | +--rw static-attributes* string 6648 | | | +--rw mandatory-attributes* string 6649 | | | +--rw entity-state? enumeration 6650 | | | +--rw version? uint32 6651 | | | +--rw (policy-configuration-value)? 6652 | | | ... 6654 module: ietf-dmm-fpc 6655 +--rw tenant* [tenant-key] 6656 +--rw tenant-key fpc:fpc-identity 6657 +--rw topology-information-model 6658 | +--rw service-group* [service-group-key role-key] 6659 | | +--rw service-group-key fpc:fpc-identity 6660 | | +--rw service-group-name? string 6661 | | +--rw role-key identityref 6662 | | +--rw role-name? string 6663 | | +--rw protocol* identityref 6664 | | +--rw feature* identityref 6665 | | +--rw service-group-configuration* [index] 6666 | | | +--rw index uint16 6667 | | | +--rw (policy-configuration-value)? 6668 | | | | ... 6669 | | +--rw dpn* [dpn-key] 6670 | | +--rw dpn-key fpc:fpc-identity 6671 | | +--rw referenced-interface* [interface-key] 6672 | | +--rw interface-key fpc:fpc-identity 6673 | | +--rw peer-service-group-key* fpc:fpc-identity 6674 | +--rw dpn* [dpn-key] 6675 | | +--rw dpn-key fpc:fpc-identity 6676 | | +--rw dpn-name? string 6677 | | +--rw dpn-resource-mapping-reference? string 6678 | | +--rw domain-key fpc:fpc-identity 6679 | | +--rw service-group-key* fpc:fpc-identity 6680 | | +--rw interface* [interface-key] 6681 | | | +--rw interface-key fpc:fpc-identity 6682 | | | +--rw interface-name? string 6683 | | | +--rw role? identityref 6684 | | | +--rw protocol* identityref 6685 | | | +--rw interface-configuration* [index] 6686 | | | +--rw (policy-configuration-value)? 6687 | | | | ... 6688 | | +--rw dpn-policy-configuration* [policy-template-key] 6689 | | +--rw policy-template-key fpc:fpc-identity 6690 | | +--rw policy-configuration* [index] 6691 | | +--rw index uint16 6692 | | +--rw (policy-configuration-value)? 6693 | | | ... 6694 | +--rw domain* [domain-key] 6695 | | +--rw domain-key fpc:fpc-identity 6696 | | +--rw domain-name? string 6697 | | +--rw domain-policy-configuration* [policy-template-key] 6698 | | +--rw policy-template-key fpc:fpc-identity 6699 | | +--rw policy-configuration* [index] 6700 | | | ... 6701 | +--rw dpn-checkpoint 6702 | | +--rw basename? fpc:fpc-identity 6703 | | +--rw base-checkpoint? string 6704 | +--rw service-group-checkpoint 6705 | | +--rw basename? fpc:fpc-identity 6706 | | +--rw base-checkpoint? string 6707 | +--rw dpn-checkpoint 6708 | | +--rw basename? fpc:fpc-identity 6709 | | +--rw base-checkpoint? string 6710 +--rw policy-information-model 6711 | +--rw action-template* [action-template-key] 6712 | | +--rw action-template-key fpc:fpc-identity 6713 | | +--rw (action-value) 6714 | | | ... 6715 | | +--rw extensible? boolean 6716 | | +--rw static-attributes* string 6717 | | +--rw mandatory-attributes* string 6718 | | +--rw entity-state? enumeration 6719 | | +--rw version? uint32 6720 | +--rw descriptor-template* [descriptor-template-key] 6721 | | +--rw descriptor-template-key fpc:fpc-identity 6722 | | +--rw (descriptor-value) 6723 | | | ... 6724 | | +--rw extensible? boolean 6725 | | +--rw static-attributes* string 6726 | | +--rw mandatory-attributes* string 6727 | | +--rw entity-state? enumeration 6728 | | +--rw version? uint32 6729 | +--rw rule-template* [rule-template-key] 6730 | | +--rw rule-template-key fpc:fpc-identity 6731 | | +--rw descriptor-match-type enumeration 6732 | | +--rw descriptor-configuration* [descriptor-template-key] 6733 | | | +--rw descriptor-template-key fpc:fpc-identity 6734 | | | +--rw direction? rfc5777:direction-type 6735 | | | +--rw setting? 6736 | | | +--rw attribute-expression* [index] 6737 | | | +--rw index uint16 6738 | | | +--rw (descriptor-value) 6739 | | | | ... 6740 | | +--rw action-configuration* [action-order] 6741 | | | +--rw action-order uint32 6742 | | | +--rw action-template-key fpc:fpc-identity 6743 | | | +--rw setting? 6744 | | | +--rw attribute-expression* [index] 6745 | | | +--rw index uint16 6746 | | | +--rw (action-value) 6747 | | | | ... 6748 | | +--rw extensible? boolean 6749 | | +--rw static-attributes* string 6750 | | +--rw mandatory-attributes* string 6751 | | +--rw entity-state? enumeration 6752 | | +--rw version? uint32 6753 | | +--rw rule-configuration* [index] 6754 | | +--rw index uint16 6755 | | +--rw (policy-configuration-value)? 6756 | | | ... 6757 | +--rw policy-template* [policy-template-key] 6758 | | +--rw policy-template-key fpc:fpc-identity 6759 | | +--rw rule-template* [precedence] 6760 | | | +--rw precedence uint32 6761 | | | +--rw rule-template-key fpc:fpc-identity 6762 | | +--rw extensible? boolean 6763 | | +--rw static-attributes* string 6764 | | +--rw mandatory-attributes* string 6765 | | +--rw entity-state? enumeration 6766 | | +--rw version? uint32 6767 | | +--rw policy-configuration* [index] 6768 | | ... 6769 | +--rw basename? fpc:fpc-identity 6770 | +--rw base-checkpoint? string 6771 +--rw mobility-context* [mobility-context-key] 6772 | +--rw mobility-context-key fpc:fpc-identity 6773 | +--rw delegating-ip-prefix* inet:ip-prefix 6774 | +--rw parent-context? fpc:fpc-identity 6775 | +--rw child-context* fpc:fpc-identity 6776 | +--rw mobile-node 6777 | | +--rw ip-address* inet:ip-address 6778 | | +--rw imsi? fpcbase:imsi-type 6779 | | +--rw mn-policy-configuration* [policy-template-key] 6780 | | +--rw policy-template-key fpc:fpc-identity 6781 | | +--rw policy-configuration* [index] 6782 | | ... 6783 | +--rw domain 6784 | | +--rw domain-key? fpc:fpc-identity 6785 | | +--rw domain-policy-configuration* [policy-template-key] 6786 | | +--rw policy-template-key fpc:fpc-identity 6787 | | +--rw policy-configuration* [index] 6788 | | ... 6789 | +--rw dpn* [dpn-key] 6790 | +--rw dpn-key fpc:fpc-identity 6791 | +--rw dpn-policy-configuration* [policy-template-key] 6792 | | +--rw policy-template-key fpc:fpc-identity 6793 | | +--rw policy-configuration* [index] 6794 | | ... 6795 | +--rw role? identityref 6796 | +--rw service-data-flow* [identifier] 6797 | +--rw identifier uint32 6798 | +--rw service-group-key? fpc:fpc-identity 6799 | +--rw interface* [interface-key] 6800 | | +--rw interface-key fpc:fpc-identity 6801 | +--rw service-data-flow-policy- 6802 configuration* [policy-template-key] 6803 | +--rw policy-template-key fpc:fpc-identity 6804 | +--rw policy-configuration* [index] 6805 | ... 6806 +--rw monitor* [monitor-key] 6807 +--rw extensible? boolean 6808 +--rw static-attributes* string 6809 +--rw mandatory-attributes* string 6810 +--rw entity-state? enumeration 6811 +--rw version? uint32 6812 +--rw monitor-key fpc:fpc-identity 6813 +--rw target? string 6814 +--rw deferrable? boolean 6815 +--rw (configuration) 6816 +--:(period) 6817 | +--rw period? uint32 6818 +--:(threshold-config) 6819 | +--rw low? uint32 6820 | +--rw hi? uint32 6821 +--:(schedule) 6822 | +--rw schedule? uint32 6823 +--:(event-identities) 6824 | +--rw event-identities* identityref 6825 +--:(event-ids) 6826 +--rw event-ids* uint32 6828 rpcs: 6829 +---x configure 6830 | +---w input 6831 | | +---w client-id fpc:client-identifier 6832 | | +---w execution-delay? uint32 6833 | | +---w yang-patch 6834 | | +---w patch-id string 6835 | | +---w comment? string 6836 | | +---w edit* [edit-id] 6837 | | +---w edit-id string 6838 | | +---w operation enumeration 6839 | | +---w target target-resource-offset 6840 | | +---w point? target-resource-offset 6841 | | +---w where? enumeration 6842 | | +---w value? 6843 | | +---w reference-scope? fpc:ref-scope 6844 | | +---w command-set 6845 | | +---w (instr-type)? 6846 | | +--:(instr-3gpp-mob) 6847 | | | +---w instr-3gpp-mob? fpcbase:threegpp-instr 6848 | | +--:(instr-pmip) 6849 | | +---w instr-pmip? pmip-commandset 6850 | +--ro output 6851 | +--ro yang-patch-status 6852 | +--ro patch-id string 6853 | +--ro (global-status)? 6854 | | +--:(global-errors) 6855 | | | +--ro errors 6856 | | | +--ro error* 6857 | | | +--ro error-type enumeration 6858 | | | +--ro error-tag string 6859 | | | +--ro error-app-tag? string 6860 | | | +--ro error-path? instance-identifier 6861 | | | +--ro error-message? string 6862 | | | +--ro error-info? 6863 | | +--:(ok) 6864 | | +--ro ok? empty 6865 | +--ro edit-status 6866 | +--ro edit* [edit-id] 6867 | +--ro edit-id string 6868 | +--ro (edit-status-choice)? 6869 | +--:(ok) 6870 | | +--ro ok? empty 6871 | | +--ro notify-follows? boolean 6872 | | +--ro subsequent-edit* [edit-id] 6873 | | +--ro edit-id string 6874 | | +--ro operation enumeration 6875 | | +--ro target 6876 ypatch:target-resource-offset 6877 | | +--ro point? 6878 ypatch:target-resource-offset 6879 | | +--ro where? enumeration 6880 | | +--ro value? 6881 | +--:(errors) 6882 | +--ro errors 6883 | +--ro error* 6884 | +--ro error-type enumeration 6885 | +--ro error-tag string 6886 | +--ro error-app-tag? string 6887 | +--ro error-path? 6888 instance-identifier 6889 | +--ro error-message? string 6890 | +--ro error-info? 6891 +---x register_monitor 6892 | +---w input 6893 | | +---w client-id fpc:client-identifier 6894 | | +---w execution-delay? uint32 6895 | | +---w operation-id uint64 6896 | | +---w monitor* [monitor-key] 6897 | | +---w extensible? boolean 6898 | | +---w static-attributes* string 6899 | | +---w mandatory-attributes* string 6900 | | +---w entity-state? enumeration 6901 | | +---w version? uint32 6902 | | +---w monitor-key fpc:fpc-identity 6903 | | +---w target? string 6904 | | +---w deferrable? boolean 6905 | | +---w (configuration) 6906 | | +--:(period) 6907 | | | +---w period? uint32 6908 | | +--:(threshold-config) 6909 | | | +---w low? uint32 6910 | | | +---w hi? uint32 6911 | | +--:(schedule) 6912 | | | +---w schedule? uint32 6913 | | +--:(event-identities) 6914 | | | +---w event-identities* identityref 6915 | | +--:(event-ids) 6916 | | +---w event-ids* uint32 6917 | +--ro output 6918 | +--ro operation-id uint64 6919 | +--ro (edit-status-choice)? 6920 | +--:(ok) 6921 | | +--ro ok? empty 6922 | +--:(errors) 6923 | +--ro errors 6924 | +--ro error* 6925 | +--ro error-type enumeration 6926 | +--ro error-tag string 6927 | +--ro error-app-tag? string 6928 | +--ro error-path? instance-identifier 6929 | +--ro error-message? string 6930 | +--ro error-info? 6931 +---x deregister_monitor 6932 | +---w input 6933 | | +---w client-id fpc:client-identifier 6934 | | +---w execution-delay? uint32 6935 | | +---w operation-id uint64 6936 | | +---w monitor* [monitor-key] 6937 | | +---w monitor-key fpc:fpc-identity 6938 | | +---w send_data? boolean 6939 | +--ro output 6940 | +--ro operation-id uint64 6941 | +--ro (edit-status-choice)? 6942 | +--:(ok) 6943 | | +--ro ok? empty 6944 | +--:(errors) 6945 | +--ro errors 6946 | +--ro error* 6947 | +--ro error-type enumeration 6948 | +--ro error-tag string 6949 | +--ro error-app-tag? string 6950 | +--ro error-path? instance-identifier 6951 | +--ro error-message? string 6952 | +--ro error-info? 6953 +---x probe 6954 +---w input 6955 | +---w client-id fpc:client-identifier 6956 | +---w execution-delay? uint32 6957 | +---w operation-id uint64 6958 | +---w monitor* [monitor-key] 6959 | +---w monitor-key fpc:fpc-identity 6960 +--ro output 6961 +--ro operation-id uint64 6962 +--ro (edit-status-choice)? 6963 +--:(ok) 6964 | +--ro ok? empty 6965 +--:(errors) 6966 +--ro errors 6967 +--ro error* 6968 +--ro error-type enumeration 6969 +--ro error-tag string 6970 +--ro error-app-tag? string 6971 +--ro error-path? instance-identifier 6972 +--ro error-message? string 6973 +--ro error-info? 6975 notifications: 6976 +---n config-result-notification 6977 | +--ro yang-patch-status 6978 | | +--ro patch-id string 6979 | | +--ro (global-status)? 6980 | | | +--:(global-errors) 6981 | | | | +--ro errors 6982 | | | | +--ro error* 6983 | | | | +--ro error-type enumeration 6984 | | | | +--ro error-tag string 6985 | | | | +--ro error-app-tag? string 6986 | | | | +--ro error-path? instance-identifier 6987 | | | | +--ro error-message? string 6988 | | | | +--ro error-info? 6989 | | | +--:(ok) 6990 | | | +--ro ok? empty 6991 | | +--ro edit-status 6992 | | +--ro edit* [edit-id] 6993 | | +--ro edit-id string 6994 | | +--ro (edit-status-choice)? 6995 | | +--:(ok) 6996 | | | +--ro ok? empty 6997 | | +--:(errors) 6998 | | +--ro errors 6999 | | +--ro error* 7000 | | +--ro error-type enumeration 7001 | | +--ro error-tag string 7002 | | +--ro error-app-tag? string 7003 | | +--ro error-path? 7004 instance-identifier 7005 | | +--ro error-message? string 7006 | | +--ro error-info? 7007 | +--ro subsequent-edit* [edit-id] 7008 | +--ro edit-id string 7009 | +--ro operation enumeration 7010 | +--ro target ypatch:target-resource-offset 7011 | +--ro point? ypatch:target-resource-offset 7012 | +--ro where? enumeration 7013 | +--ro value? 7014 +---n notify 7015 +--ro notification-id? uint32 7016 +--ro timestamp? uint32 7017 +--ro report* [monitor-key] 7018 +--ro monitor-key fpc:fpc-identity 7019 +--ro trigger? identityref 7020 +--ro (value)? 7021 +--:(dpn-candidate-available) 7022 | +--ro node-id? inet:uri 7023 | +--ro supported-interface-list* [role-key] 7024 | +--ro role-key identityref 7025 +--:(dpn-unavailable) 7026 | +--ro dpn-id? fpc:fpc-identity 7027 +--:(report-value) 7028 +--ro report-value? 7030 Figure 38: YANG FPC Agent Tree 7032 Appendix C. Change Log 7034 C.1. Changes since Version 09 7036 The following changes have been made since version 09 7038 Migration to a Template based framework. This affects all 7039 elements. The framework has a template definition language. 7041 Basename is split into two aspects. The first is version which 7042 applies to Templates. The second is checkpointing which applies 7043 to specific sections only. 7045 Rule was inside Policy and now is Rule-Template and stands as a 7046 peer structure to Policy. 7048 Types, e.g. Descriptor Types, Action Types, etc., are now 7049 templates that have no values filled in. 7051 The embedded rule has been replaced by a template that has no 7052 predefined variables. All rules, pre-configured or embedded, are 7053 realized as Policy instantiations. 7055 The Unassigned DPN is used to track requests vs. those that are 7056 installed, i.e. Agent assignment of Policy is supported. 7058 The Topology system supports selection information by ServiceGroup 7059 or ServiceEndpoint. 7061 DPN Peer Groups and DPN Groups are now PeerServiceGroup and 7062 ServiceGroup. 7064 Bulk Configuration and Configuration now follow a style similar to 7065 YANG Patch. Agents MAY response back with edits it made to 7066 complete the Client edit request. 7068 RFC 5777 Classifiers have been added. 7070 All operations have a common error format. 7072 C.2. Changes since Version 10 7074 The following changes have been made since version 10 7076 Sevice-Endpoints eliminated. Service-Group and DPN interfaces 7077 changed to hold information previously held by Service-Endpoint as 7078 noted in ML during IETF 101. 7080 Service-Group resides under the Topology-Information-Mode 7082 The Domain now has a checkpoint and the Topology Information Model 7083 checkpoint was removed to avoid any overlaps in checkpoints. 7085 Scrubbed YANG for NMDA compliance and Guidelines (RFC 6087bis). 7087 Monitor lifecycle, policy and policy installation examples added. 7089 Authors' Addresses 7091 Satoru Matsushima 7092 SoftBank 7093 1-9-1,Higashi-Shimbashi,Minato-Ku 7094 Tokyo 105-7322 7095 Japan 7097 Email: satoru.matsushima@g.softbank.co.jp 7099 Lyle Bertz 7100 6220 Sprint Parkway 7101 Overland Park KS, 66251 7102 USA 7104 Email: lylebe551144@gmail.com 7105 Marco Liebsch 7106 NEC Laboratories Europe 7107 NEC Europe Ltd. 7108 Kurfuersten-Anlage 36 7109 D-69115 Heidelberg 7110 Germany 7112 Phone: +49 6221 4342146 7113 Email: liebsch@neclab.eu 7115 Sri Gundavelli 7116 Cisco 7117 170 West Tasman Drive 7118 San Jose, CA 95134 7119 USA 7121 Email: sgundave@cisco.com 7123 Danny Moses 7125 Email: danny.moses@intel.com 7127 Charles E. Perkins 7128 Futurewei Inc. 7129 2330 Central Expressway 7130 Santa Clara, CA 95050 7131 USA 7133 Phone: +1-408-330-4586 7134 Email: charliep@computer.org