idnits 2.17.1 draft-ietf-dmm-fpc-cpdp-07.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- == There are 1 instance of lines with private range IPv4 addresses in the document. If these are generic example addresses, they should be changed to use any of the ranges defined in RFC 6890 (or successor): 192.0.2.x, 198.51.100.x or 203.0.113.x. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 7120 has weird spacing: '...roup-id fpc...' == Line 7123 has weird spacing: '...licy-id fpc...' == Line 7127 has weird spacing: '...ptor-id fpc...' == Line 7134 has weird spacing: '...or-type ide...' == Line 7140 has weird spacing: '...on-type ide...' == (3 more instances...) -- The exact meaning of the all-uppercase expression 'MAY NOT' is not defined in RFC 2119. If it is intended as a requirements expression, it should be rewritten using one of the combinations defined in RFC 2119; otherwise it should not be all-uppercase. == The expression 'MAY NOT', while looking like RFC 2119 requirements text, is not defined in RFC 2119, and should not be used. Consider using 'MUST NOT' instead (if that is what you mean). Found 'MAY NOT' in this paragraph: SESSION_STATE: sets the expected state of the entities embedded in the operation body after successful completion of the operation. Values can be 'complete', 'incomplete' or 'outdated'. Any operation that is 'incomplete' MAY NOT result in communication between the Agent and DPN. If the result is 'outdated' any new operations on these entities or new references to these entities have unpredictable results. -- The document date (March 13, 2017) is 2601 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) -- Looks like a reference, but probably isn't: '16' on line 2020 == Missing Reference: 'INTEGER' is mentioned on line 2020, but not defined == Missing Reference: 'NOTE 1' is mentioned on line 2285, but not defined == Missing Reference: 'NOTE 2' is mentioned on line 2304, but not defined -- Looks like a reference, but probably isn't: '1024' on line 2156 == Missing Reference: 'OCTET STRING' is mentioned on line 2156, but not defined -- Looks like a reference, but probably isn't: '8' on line 2198 == Missing Reference: 'REPORT-TYPE' is mentioned on line 2198, but not defined == Missing Reference: 'NOTE 3' is mentioned on line 2311, but not defined == Missing Reference: 'DSCP' is mentioned on line 2452, but not defined == Missing Reference: 'RFC6020' is mentioned on line 2868, but not defined == Unused Reference: 'RFC6089' is defined on line 2913, but no explicit reference was found in the text == Outdated reference: A later version (-26) exists of draft-ietf-6man-segment-routing-header-05 == Outdated reference: A later version (-28) exists of draft-ietf-sfc-nsh-12 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-mpls-07 ** Downref: Normative reference to an Informational RFC: RFC 7333 == Outdated reference: A later version (-06) exists of draft-bertz-dime-policygroups-03 == Outdated reference: A later version (-04) exists of draft-ietf-dmm-deployment-models-01 Summary: 1 error (**), 0 flaws (~~), 23 warnings (==), 5 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 DMM Working Group S. Matsushima 3 Internet-Draft SoftBank 4 Intended status: Standards Track L. Bertz 5 Expires: September 14, 2017 Sprint 6 M. Liebsch 7 NEC 8 S. Gundavelli 9 Cisco 10 D. Moses 11 Intel Corporation 12 C. Perkins 13 Futurewei 14 March 13, 2017 16 Protocol for Forwarding Policy Configuration (FPC) in DMM 17 draft-ietf-dmm-fpc-cpdp-07 19 Abstract 21 This document describes a way, called Forwarding Policy Configuration 22 (FPC) to manage the separation of data-plane and control-plane. FPC 23 defines a flexible mobility management system using FPC agent and FPC 24 client functions. An FPC agent provides an abstract interface to the 25 data-plane. The FPC client configures data-plane nodes by using the 26 functions and abstractions provided by the FPC agent for that data- 27 plane nodes. The data-plane abstractions presented in this document 28 is extensible, in order to support many different types of mobility 29 management systems and data-plane functions. 31 Status of This Memo 33 This Internet-Draft is submitted in full conformance with the 34 provisions of BCP 78 and BCP 79. 36 Internet-Drafts are working documents of the Internet Engineering 37 Task Force (IETF). Note that other groups may also distribute 38 working documents as Internet-Drafts. The list of current Internet- 39 Drafts is at http://datatracker.ietf.org/drafts/current/. 41 Internet-Drafts are draft documents valid for a maximum of six months 42 and may be updated, replaced, or obsoleted by other documents at any 43 time. It is inappropriate to use Internet-Drafts as reference 44 material or to cite them other than as "work in progress." 46 This Internet-Draft will expire on September 14, 2017. 48 Copyright Notice 50 Copyright (c) 2017 IETF Trust and the persons identified as the 51 document authors. All rights reserved. 53 This document is subject to BCP 78 and the IETF Trust's Legal 54 Provisions Relating to IETF Documents 55 (http://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 Architecture . . . . . . . . . . . . . . . . . . . . . . 5 68 4. Information Model for FPC . . . . . . . . . . . . . . . . . . 8 69 4.1. FPC-Topology . . . . . . . . . . . . . . . . . . . . . . 9 70 4.1.1. DPNs . . . . . . . . . . . . . . . . . . . . . . . . 9 71 4.1.2. DPN-groups . . . . . . . . . . . . . . . . . . . . . 10 72 4.1.3. Domains . . . . . . . . . . . . . . . . . . . . . . . 12 73 4.2. FPC-Policy . . . . . . . . . . . . . . . . . . . . . . . 12 74 4.2.1. Descriptors . . . . . . . . . . . . . . . . . . . . . 13 75 4.2.2. Actions . . . . . . . . . . . . . . . . . . . . . . . 13 76 4.2.3. Policies . . . . . . . . . . . . . . . . . . . . . . 14 77 4.2.4. Policy-groups . . . . . . . . . . . . . . . . . . . . 16 78 4.3. FPC for Mobility Management . . . . . . . . . . . . . . . 16 79 4.3.1. Vport . . . . . . . . . . . . . . . . . . . . . . . . 16 80 4.3.2. Context . . . . . . . . . . . . . . . . . . . . . . . 17 81 4.3.3. Monitors . . . . . . . . . . . . . . . . . . . . . . 22 82 4.4. Namespace and Format . . . . . . . . . . . . . . . . . . 23 83 4.5. Attribute Application . . . . . . . . . . . . . . . . . . 24 84 5. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 25 85 5.1. Protocol Messages and Semantics . . . . . . . . . . . . . 25 86 5.1.1. CONFIG and CONF_BUNDLE Messages . . . . . . . . . . . 28 87 5.1.2. Monitors . . . . . . . . . . . . . . . . . . . . . . 31 88 5.2. Protocol Operation . . . . . . . . . . . . . . . . . . . 32 89 5.2.1. Simple RPC Operation . . . . . . . . . . . . . . . . 32 90 5.2.2. Policy And Mobility on the Agent . . . . . . . . . . 37 91 5.2.3. Optimization for Current and Subsequent Messages . . 39 92 5.2.4. Pre-provisioning . . . . . . . . . . . . . . . . . . 44 93 6. Protocol Message Details . . . . . . . . . . . . . . . . . . 45 94 6.1. Data Structures And Type Assignment . . . . . . . . . . . 45 95 6.1.1. Policy Structures . . . . . . . . . . . . . . . . . . 45 96 6.1.2. Mobility Structures . . . . . . . . . . . . . . . . . 47 97 6.1.3. Topology Structures . . . . . . . . . . . . . . . . . 49 98 6.1.4. Monitors . . . . . . . . . . . . . . . . . . . . . . 50 99 6.2. Message Attributes . . . . . . . . . . . . . . . . . . . 52 100 6.2.1. Header . . . . . . . . . . . . . . . . . . . . . . . 52 101 6.2.2. CONFIG and CONF_BUNDLE Attributes and Notifications . 52 102 6.2.3. Monitors . . . . . . . . . . . . . . . . . . . . . . 55 103 7. Derived and Subtyped Attributes . . . . . . . . . . . . . . . 55 104 7.1. 3GPP Specific Extenstions . . . . . . . . . . . . . . . . 58 105 8. Implementation Status . . . . . . . . . . . . . . . . . . . . 60 106 9. Security Considerations . . . . . . . . . . . . . . . . . . . 64 107 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 65 108 11. Work Team Participants . . . . . . . . . . . . . . . . . . . 67 109 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 67 110 12.1. Normative References . . . . . . . . . . . . . . . . . . 67 111 12.2. Informative References . . . . . . . . . . . . . . . . . 68 112 Appendix A. YANG Data Model for the FPC protocol . . . . . . . . 69 113 A.1. FPC Agent YANG Model . . . . . . . . . . . . . . . . . . 69 114 A.2. YANG Models . . . . . . . . . . . . . . . . . . . . . . . 86 115 A.2.1. FPC YANG Model . . . . . . . . . . . . . . . . . . . 86 116 A.2.2. PMIP QoS Model . . . . . . . . . . . . . . . . . . . 102 117 A.2.3. Traffic Selectors YANG Model . . . . . . . . . . . . 115 118 A.2.4. FPC 3GPP Mobility YANG Model . . . . . . . . . . . . 127 119 A.2.5. FPC / PMIP Integration YANG Model . . . . . . . . . . 144 120 A.2.6. FPC Policy Extension YANG Model . . . . . . . . . . . 151 121 A.3. FPC YANG Data Model Structure . . . . . . . . . . . . . . 155 122 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 159 124 1. Introduction 126 This document describes Forwarding Policy Configuration (FPC), a 127 system for managing the separation of data-plane and control-plane. 128 FPC enables flexible mobility management using FPC agent and FPC 129 client functions. An FPC agent exports an abstract interface to the 130 data-plane. To configure data-plane nodes and functions, the FPC 131 client uses the interface to the data-plane offered by the FPC agent. 133 Control planes of mobility management systems, or other applications 134 which require data-plane control, can utilize the FPC client at 135 various granularities of operation. The operations are capable of 136 configuring a single Data-Plane Node (DPN) directly, as well as 137 multiple DPNs as determined by abstracted data-plane models on the 138 FPC agent. 140 A FPC agent provides data-plane abstraction in the following three 141 areas: 143 Topology: DPNs are grouped and abstracted according to well-known 144 concepts of mobility management such as access networks, anchors 145 and domains. A FPC agent provides an interface to the abstract 146 DPN-groups that enables definition of a topology for the 147 forwarding plane. For example, access nodes may be assigned to a 148 DPN-group which peers to a DPN-group of anchor nodes. 150 Policy: A Policy embodies the mechanisms for processing specific 151 traffic flows or packets. This is needed for QoS, for packet 152 processing to rewrite headers, etc. A Policy consists of one or 153 more rules. Each rule is composed of Descriptors and Actions. 154 Descriptors in a rule identify traffic flows, and Actions apply 155 treatments to packets that match the Descriptors in the rule. An 156 arbitrary set of policies can be abstracted as a Policy-group to 157 be applied to a particular collection of flows, which is called 158 the Virtual Port (Vport). 160 Mobility: A mobility session which is active on a mobile node is 161 abstracted as a Context with associated runtime concrete 162 attributes, such as tunnel endpoints, tunnel identifiers, 163 delegated prefix(es), routing information, etc. Contexts are 164 attached to DPN-groups along with consequence of the control 165 plane. One or multiple Contexts which have same sets of policies 166 are assigned Vports which abstract those policy sets. A Context 167 can belong to multiple Vports which serve various kinds of purpose 168 and policy. Monitors provide a mechanism to produce reports when 169 events regarding Vports, Sessions, DPNs or the Agent occur. 171 The Agent assembles applicable sets of forwarding policies for the 172 mobility sessions from the data model, and then renders those 173 policies into specific configurations for each DPN to which the 174 sessions attached. The specific protocols and configurations to 175 configure DPN from a FPC Agent are outside the scope of this 176 document. 178 The data-plane abstractions may be extended to support many different 179 mobility management systems and data-plane functions. The 180 architecture and protocol design of FPC is not tied to specific types 181 of access technologies and mobility protocols. 183 2. Terminology 185 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 186 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 187 document are to be interpreted as described in [RFC2119]. 189 DPN: A data-plane node (DPN) is capable of 190 deploying data-plane features. DPNs may be 191 switches or routers regardless of their 192 realiziation, i.e. whether they are hardware 193 or software based. 195 FPC Agent: A functional entity in FPC that manages DPNs 196 and provides abstracted data-plane networks 197 to mobility management systems and/or 198 applications through FPC Clients. 200 FPC Client: A functional entity in FPC that is integrated 201 with mobility management systems and/or 202 applications to control forwarding policy, 203 mobility sessions and DPNs. 205 Tenant: An operational entity that manages mobility 206 management systems or applications which 207 require data-plane functions. 209 Domain: One or more DPNs that form a data-plane 210 network. A mobility management system or an 211 application in a tenant may utilize a single 212 or multiple domains. 214 Virtual Port (Vport): A set of forwarding policies. 216 Context: An abstracted endpoint of a mobility session 217 associated with runtime attributes. Vports 218 may apply to Context which instantiates those 219 forwarding policies on a DPN. 221 3. FPC Architecture 223 To fulfill the requirements described in [RFC7333], FPC enables 224 mobility control-planes and applications to configure DPNs with 225 various roles of the mobility management as described in 226 [I-D.ietf-dmm-deployment-models]. 228 FPC defines building blocks of FPC Agent and FPC Client, as well as 229 data models for the necessary data-plane abstractions. The 230 attributes defining those data models serve as protocol elements for 231 the interface between the FPC Agent and the FPC Client. 233 Mobility control-planes and applications integrate the FPC Client 234 function. The FPC Client connects to FPC Agent functions. The 235 Client and the Agent communicate based on information models for the 236 data-plane abstractions described in Section 4. The data models 237 allow the control-plane and the applications to support forwarding 238 policies on the Agent for their mobility sessions. 240 The FPC Agent carries out the required configuration and management 241 of the DPN(s). The Agent determines DPN configurations according to 242 the forwarding policies requested by the FPC Client. The DPN 243 configurations could be specific to each DPN implementation such that 244 how FPC Agent determines implementation specific configuration for a 245 DPN is outside of the scope of this document. Along with the models, 246 the control-plane and the applications put Policies to the Agent 247 prior to creating their mobility sessions. 249 Once the Topology of DPN(s) and domains are defined for a data plane 250 on an Agent, the data-plane nodes (DPNs) are available for further 251 configuration. The FPC Agent connects those DPNs to manage their 252 configurations. 254 This architecture is illustrated in Figure 1. An FPC Agent may be 255 implemented in a network controller that handles multiple DPNs, or 256 there is a simple case where another FPC Agent may itself be 257 integrated into a DPN. 259 This document does not adopt a specific protocol for the FPC 260 interface protocol and it is out of scope. However it must be 261 capable of supporting FPC protocol messages and transactions 262 described in Section 5. 264 +-------------------------+ 265 | Mobility Control-Plane | 266 | and | 267 | Applications | 268 |+-----------------------+| 269 || FPC Client || 270 |+----------^------------+| 271 +-----------|-------------+ 272 FPC interface protocol | 273 +---------------+-----------------+ 274 | | 275 Network | | 276 Controller | DPN | 277 +-----------|-------------+ +----------|---------+ 278 |+----------v------------+| |+---------v--------+| 279 || [Data-plane model] || ||[Data-plane model]|| 280 || FPC Agent || || FPC Agent || 281 |+-----------------------+| |+------------------+| 282 |+------------+----------+| | | 283 ||SB Protocols|FPC Client|| | DPN Configuration | 284 || Modules | Module || +--------------------+ 285 |+------^-----+----^-----+| 286 +-------|----------|------+ 287 | | 288 Other | | FPC interface 289 Southband | | Protocol 290 Protocols | | 291 | +-----------------+ 292 | | 293 DPN | DPN | 294 +----------|---------+ +----------|---------+ 295 |+---------v--------+| |+---------v--------+| 296 || Configuration || ||[Data-plane model]|| 297 || Protocol module || || FPC Agent || 298 |+------------------+| |+------------------+| 299 | | | | 300 | DPN Configuration | | DPN Configuration | 301 +--------------------+ +--------------------+ 303 Figure 1: Reference Forwarding Policy Configuration (FPC) 304 Architecture 306 The FPC architecture supports multi-tenancy; an FPC enabled data- 307 plane supports tenants of multiple mobile operator networks and/or 308 applications. It means that the FPC Client of each tenant connects 309 to the FPC Agent and it MUST partition namespace and data for their 310 data-planes. DPNs on the data-plane may fulfill multiple data-plane 311 roles which are defined per session, domain and tenant. 313 Note that all FPC models SHOULD be configurable. The FPC interface 314 protocol in Figure 1 is only required to handle runtime data in the 315 Mobility model. The rest of the FPC models, namely Topology and 316 Policy, may be pre-configured, and in that case real-time protocol 317 exchanges would not be required for them. Operators that are tenants 318 in the FPC data-plane could configure Topology and Policy on the 319 Agent through other means, such as Restconf 320 [I-D.ietf-netconf-restconf] or Netconf [RFC6241]. 322 4. Information Model for FPC 324 This section presents an information model representing the abstract 325 concepts of FPC, which are language and protocol neutral. Figure 2 326 shows an overview of the FPC data-plane information model. 328 (Mobile operator tenant that abstracted data-plane is used) 329 | 330 +---FPC-Topology 331 | | 332 | +---DPNs 333 | | 334 | +---DPN-groups 335 | | 336 | +---Domains 337 | 338 +---FPC-Policy 339 | | 340 | +---Descriptors 341 | | 342 | +---Actions 343 | | 344 | +---Policies 345 | | 346 | +---Policy-groups 347 | 348 +---FPC-Mobility 349 | 350 +---Vports 351 | 352 +---Contexts 354 Figure 2: FPC Data-plane Information Model 356 4.1. FPC-Topology 358 Topology abstraction enables a physical data-plane network to support 359 multiple overlay topologies. An FPC-Topology consists of DPNs, DPN- 360 groups and Domains which abstract data-plane topologies for the 361 Client's mobility control-planes and applications. 363 Utilizing a FPC Agent, a mobile operator can create virtual DPNs in 364 an overlay network. Those such virtual DPNs are treated the same as 365 physical forwarding DPNs in this document. 367 4.1.1. DPNs 369 The DPNs define all available nodes to a tenant of the FPC data-plane 370 network. FPC Agent defines DPN binding to actual nodes. The role of 371 a DPN in the data-plane is determined at the time the DPN is assigned 372 to a DPN-group. 374 (FPC-Topology) 375 | 376 +---DPNs 377 | 378 +---DPN-id 379 | 380 +---DPN-name 381 | 382 +---DPN-groups 383 | 384 +---Node-reference 386 Figure 3: DPNs Model Structure 388 DPN-id: The identifier for the DPN. The ID format MUST conform to 389 Section 4.4. 391 DPN-name: The name of the DPN. 393 DPN-groups: The list of DPN-groups to which the DPN belongs. 395 Node-reference: Indicates a physical node, or a platform of 396 virtualization, to which the DPN is bound by the Agent. The 397 Agent SHOULD maintain that node's information, including IP 398 address of management and control protocol to connect them. In 399 the case of a node as a virtualization platform, FPC Agent 400 directs the platform to instantiate a DPN to which a DPN-group 401 attributes. 403 4.1.2. DPN-groups 405 A DPN-group is a set of DPNs which share certain specified data-plane 406 attributes. DPN-groups define the data-plane topology consisting of 407 a DPN-group of access nodes connecting to an anchor node's DPN-group. 409 A DPN-group has attributes such as its data-plane role, supported 410 access technologies, mobility profiles, connected peer groups and 411 domain. A DPN may be assigned to multiple DPN-groups in different 412 data-plane roles or different domains. 414 (FPC-Topology) 415 | 416 +---DPN-groups 417 | 418 +---DPN-group-id 419 | 420 +---Data-plane-role 421 | 422 +---Domains 423 | 424 +---Access-type 425 | 426 +---Mobility-profile 427 | 428 +---DPN-group-peers 430 Figure 4: DPN-groups Model Structure 432 DPN-group-id: The identifier of the DPN-group. The ID format MUST 433 conform to Section 4.4. 435 Data-plane-role: The data-plane role of the DPN-group, such as 436 access-dpn, anchor-dpn. 438 Domains: The domains to which the DPN-group belongs. 440 Access-type: The access type supported by the DPN-group such as 441 ethernet(802.3/11), 3gpp cellular(S1, RAB), if any. 443 Mobility-profile: Identifies a supported mobility profile, such as 444 ietf-pmip, or 3gpp. New profiles may be defined as extensions of 445 this specification. Mobility profiles are defined so that some 446 or all data-plane parameters of the mobility contexts that are 447 part of the profile can be automatically determined by the FPC 448 Agent. 450 DPN-group-peers: The remote peers of the DPN-group with parameters 451 described in Section 4.1.2.1. 453 4.1.2.1. DPN-group Peers 455 DPN-group-peers lists relevant parameters of remote peer DPNs as 456 illustrated in Figure 5. 458 (DPN-groups) 459 | 460 +---DPN-group-peers 461 | 462 +---Remote-DPN-group-id 463 | 464 +---Remote-mobility-profile 465 | 466 +---Remote-data-plane-role 467 | 468 +---Remote-endpoint-address 469 | 470 +---Local-endpoint-address 471 | 472 +---MTU-size 474 Figure 5: DPN-groups Peer Model Structure 476 Remote-DPN-group-id: The ID of the peering DPN-Group. The ID format 477 MUST conform to Section 4.4. 479 Remote-mobility-profile: The mobility-profile for the peering DPN- 480 group. Currently defined profiles are ietf-pmip, or 3gpp. New 481 profiles may be defined as extensions of this specification. 483 Remote-data-plane-role: The data-plane role of the peering DPN- 484 group. 486 Remote-endpoint-address: Defines Endpoint address of the peering 487 DPN-group. 489 Local-endpoint-address: Defines Endpoint address of its own DPN- 490 group to peer the remote DPN-group. 492 MTU-size: Defines MTU size of traffic between the DPN-Group and this 493 DPN-group-peer. 495 4.1.3. Domains 497 A domain is defined by an operator to refer to a particular network, 498 considered as a system of cooperating DPN-groups. Domains may 499 represent services or applications that are resident within an 500 operator's network. 502 (FPC-Topology) 503 | 504 +---Domains 505 | 506 +---Domain-id 507 | 508 +---Domain-name 509 | 510 +---Domain-type 511 | 512 +---Domain-reference 514 Figure 6: Domain Model Structure 516 Domain-id: Identifier of Domain. The ID format MUST conform to 517 Section 4.4. 519 Domain-name: The name of the Domain. 521 Domain-type: Specifies which address families are supported within 522 the domain. 524 Domain-reference: Indicates a set of resources for the domain which 525 consists a topology of physical nodes, platforms of 526 virtualization and physical/virtual links with certain bandwidth, 527 etc,. 529 4.2. FPC-Policy 531 The FPC-Policy consists of Descriptors, Actions, Policies and Policy- 532 groups. These can be viewed as configuration data, in contrast to 533 Contexts and Vports, which are structures that are instantiated on 534 the Agent. The Descriptors and Actions in a Policy referenced by a 535 Vport are active when the Vport is in an active Context, i.e. they 536 can be applied to traffic on a DPN. 538 4.2.1. Descriptors 540 Descriptors defines classifiers of specific traffic flows, such as 541 those based on source and destination addresses, protocols, port 542 numbers of TCP/UDP/SCTP/DCCP, or any way of classifying packets. 543 Descriptors are defined by specific profiles that may be produced by 544 3gpp, ietf or other SDOs. Many specifications also use the terms 545 Filter, Traffic Descriptor or Traffic Selector [RFC6088]. A packet 546 that meets the criteria of a Descriptor is said to satisfy, pass or 547 be consumed by the Descriptor. Descriptors are assigned an 548 identifier and contain a type and value. 550 (FPC-Policy) 551 | 552 +---Descriptors 553 | 554 +---Descriptor-id 555 | 556 +---Descriptor-type 557 | 558 +---Descriptor-value 560 Figure 7: Descriptor Model Structure 562 Descriptor-id: Identifier of Descriptor. The ID format MUST conform 563 to Section 4.4. 565 Descriptor-type: The descriptor type, which determines the 566 classification of a specific traffic flows, such as source and 567 destination addresses, protocols, port numbers of TCP/UDP/SCTP/ 568 DCCP, or any other way of selecting packets. 570 Descriptor-value: The value of Descriptor such as IP prefix/address, 571 protocol number, port number, etc. 573 4.2.2. Actions 575 A Policy defines a list of Actions that are to be applied to traffic 576 meeting the criteria defined by the Descriptors. Actions include 577 traffic management such as shaping, policing based on given 578 bandwidth, and connectivity actions such as pass, drop, forward to 579 given nexthop. Actions may be defined as part of specific profiles 580 which are produced by 3gpp, ietf or other SDOs. 582 (FPC-Policy) 583 | 584 +---Actions 585 | 586 +---Action-id 587 | 588 +---Action-type 589 | 590 +---Action-value 592 Figure 8: Action Model Structure 594 Action-id: Identifier for the Action. The ID format MUST conform to 595 Section 4.4. 597 Action-type: The type of the action -- i.e. how to treat the 598 specified traffic flows. Examples include pass, drop, forward to 599 a given nexthop value, shape or police based on given bandwidth 600 value, etc. 602 Action-value: Specifies a value for the Action-type, such as 603 bandwidth, nexthop address or drop, etc. 605 4.2.3. Policies 607 Policies are collections of Rules. Each Policy has a Policy 608 Identifier and a list of Rule/Order pairs. The Order and Rule values 609 MUST be unique in the Policy. Unlike the AND filter matching of each 610 Rule the Policy uses an OR matching to find the first Rule whose 611 Descriptors are satisfied by the packet. The search for a Rule to 612 apply to packet is executed according to the unique Order values of 613 the Rules. This is an ascending order search, i.e. the Rule with the 614 lowest Order value is tested first and if its Descriptors are not 615 satisfied by the packet the Rule with the next lowest Order value is 616 tested. If a Rule is not found then the Policy does not apply. 617 Policies contain Rules (not references to Rules). 619 (FPC-Policy) 620 | 621 +---Policies 622 | 623 +---Policy-id 624 | 625 +---Rules 626 | 627 +---Order 628 | 629 +---Descriptors 630 | | 631 | +---Descriptor-id 632 | | 633 | +---Direction 634 | 635 +---Actions 636 | 637 +---Action-id 638 | 639 +---Action-Order 641 Figure 9: Model Structure for Policies 643 Policy-id: Identifier of Policy. The ID format MUST conform to 644 Section 4.4. 646 Rules: List of Rules which are a collection of Descriptors and 647 Actions. All Descriptors MUST be satisfied before the Actions 648 are taken. This is known as an AND Descriptor list, i.e. 649 Descriptor 1 AND Descriptor 2 AND ... Descriptor X all MUST be 650 satisfied for the Rule to apply. 652 Order: Specifies ordering if the Rule has multiple Descriptors and 653 Action sets. Order values MUST be unique within the Rules list. 655 Descriptors: The list of Descriptors. 657 Descriptor-id: Identifies each Descriptor in the Rule. 659 Direction: Specifies which direction applies, such as uplink, 660 downlink or both. 662 Actions: List of Actions. 664 Action-id: Indicates each Action in the rule. 666 Action-Order: Specifies Action ordering if the Rule has multiple 667 actions. Action-Order values MUST be unique within the Actions 668 list. 670 4.2.4. Policy-groups 672 List of Policy-groups which are an aggregation of Policies. Common 673 applications include aggregating Policies that are defined by 674 different functions, e.g. Network Address Translation, Security, 675 etc. The structure has an Identifier and references the Policies via 676 their Identifiers. 678 (FPC-Policy) 679 | 680 +---Policy-groups 681 | 682 +---Policy-group-id 683 | 684 +---Policies 686 Figure 10: Policy-group Model Structure 688 Policy-group-id: The identifier of the Policy-group. The ID format 689 MUST conform to Section 4.4. 691 Policies: List of Policies in the Policy-group. 693 4.3. FPC for Mobility Management 695 The FPC-Mobility consists of Vports and Contexts. A mobility session 696 is abstracted as a Context with its associated runtime concrete 697 attributes, such as tunnel endpoints, tunnel identifiers, delegated 698 prefix(es) and routing information, etc. A Vport abstracts a set of 699 policies applied to the Context. 701 4.3.1. Vport 703 A Vport represents a collection of policy groups, that is, a group of 704 rules that can exist independently of the mobility/session lifecycle. 705 Mobility control-plane applications create, modify and delete Vports 706 on FPC Agent through the FPC Client. 708 When a Vport is indicated in a Context, the set of Descriptors and 709 Actions in the Policies of the Vport are collected and applied to the 710 Context. They must be instantiated on the DPN as forwarding related 711 actions such as QoS differentiations, packet processing of encap/ 712 decap, header rewrite, route selection, etc. 714 (FPC-Mobility) 715 | 716 +---Vports 717 | 718 +---Vport-id 719 | 720 +---Policy-groups 722 Figure 11: Vport Model Structure 724 Vport-id: The identifier of Vport. The ID format MUST conform to 725 Section 4.4. 727 Policy-groups: List of references to Policy-groups which apply to 728 the Vport. 730 4.3.2. Context 732 An endpoint of a mobility session is abstracted as a Context with its 733 associated runtime concrete attributes, such as tunnel endpoints, 734 tunnel identifiers, delegated prefix(es) and routing information, 735 etc. A mobility control-plane, or other applications, can create, 736 modify and delete contexts on an FPC Agent by using the FPC Client. 738 FPC Agent SHOULD determine runtime attributes of a Context from the 739 Vport's policies and the attached DPN's attributes. A mobility 740 control-plane, or other applications, MAY set some of the runtime 741 attributes directly when they create data-plane related attributes. 742 In the case of that a mobility control-plane assigns tunnel 743 identifiers, for instance. 745 (FPC-Mobility) 746 | 747 +---Contexts 748 | 749 +---Context-id 750 | 751 +---Vports 752 | 753 +---DPN-group 754 | 755 +---Delegated-ip-prefixes 756 | 757 +---Parent-context 759 Figure 12: Common Context Model Structure 761 Context-id: Identifier of the Context. The ID format MUST conform 762 to Section 4.4. 764 Vports: List of Vports. When a Context is applied to a Vport, the 765 context is configured by policies at each such Vport. Vport-id 766 references indicate Vports which apply to the Context. Context 767 can be a spread over multiple Vports which have different 768 policies. 770 DPN-group: The DPN-group assigned to the Context. 772 Delegated-ip-prefixes: List of IP prefixes to be delegated to the 773 mobile node of the Context. 775 Parent-context: Indicates a parent context from which this context 776 inherits. 778 4.3.2.1. Single DPN Agent Case 780 In the case where a FPC Agent supports only one DPN, the Agent MUST 781 maintain Context data just for the DPN. The Agent does not need to 782 maintain a Topology model. Contexts in single DPN case consists of 783 following parameters for both direction of uplink and downlink. 785 (Contexts) 786 | 787 +---UL-Tunnel-local-address 788 | 789 +---UL-Tunnel-remote-address 790 | 791 +---UL-MTU-size 792 | 793 +---UL-Mobility-specific-tunnel-parameters 794 | 795 +---UL-Nexthop 796 | 797 +---UL-QoS-profile-specific-parameters 798 | 799 +---UL-DPN-specific-parameters 800 | 801 +---UL-Vendor-specific-parameters 803 Figure 13: Uplink Context Model of Single DPN Structure 805 UL-Tunnel-local-address: Specifies uplink endpoint address of the 806 DPN. 808 UL-Tunnel-remote-address: Specifies uplink endpoint address of the 809 remote DPN. 811 UL-MTU-size: Specifies the uplink MTU size. 813 UL-Mobility-specific-tunnel-parameters: Specifies profile specific 814 uplink tunnel parameters to the DPN which the agent exists. This 815 may, for example, include GTP/TEID for 3gpp profile, or GRE/Key 816 for ietf-pmip profile. 818 UL-Nexthop: Indicates next-hop information of uplink in external 819 network such as IP address, MAC address, SPI of service function 820 chain [I-D.ietf-sfc-nsh], SID of segment 821 routing[I-D.ietf-6man-segment-routing-header] 822 [I-D.ietf-spring-segment-routing-mpls], etc. 824 UL-QoS-profile-specific-parameters: Specifies profile specific QoS 825 parameters of uplink, such as QCI/TFT for 3gpp profile, 826 [RFC6089]/[RFC7222] for ietf-pmip, or parameters of new profiles 827 defined by extensions of this specification. 829 UL-DPN-specific-parameters: Specifies optional node specific 830 parameters needed by uplink such as if-index, tunnel-if-number 831 that must be unique in the DPN. 833 UL-Vendor-specific-parameters: Specifies a vendor specific parameter 834 space for the uplink. 836 (Contexts) 837 | 838 +---DL-Tunnel-local-address 839 | 840 +---DL-Tunnel-remote-address 841 | 842 +---DL-MTU-size 843 | 844 +---DL-Mobility-specific-tunnel-parameters 845 | 846 +---DL-Nexthop 847 | 848 +---DL-QoS-profile-specific-parameters 849 | 850 +---DL-DPN-specific-parameters 851 | 852 +---DL-Vendor-specific-parameters 854 Figure 14: Downlink Context Model of Single DPN Structure 856 DL-Tunnel-local-address: Specifies downlink endpoint address of the 857 DPN. 859 DL-Tunnel-remote-address: Specifies downlink endpoint address of the 860 remote DPN. 862 DL-MTU-size: Specifies the downlink MTU size of tunnel. 864 DL-Mobility-specific-tunnel-parameters: Specifies profile specific 865 downlink tunnel parameters to the DPN which the agent exists. 866 This may, for example, include GTP/TEID for 3gpp profile, or GRE/ 867 Key for ietf-pmip profile. 869 DL-Nexthop: Indicates next-hop information of downlink in external 870 network such as IP address, MAC address, SPI of service function 871 chain [I-D.ietf-sfc-nsh], SID of segment 872 routing[I-D.ietf-6man-segment-routing-header] 873 [I-D.ietf-spring-segment-routing-mpls], etc. 875 DL-QoS-profile-specific-parameters: Specifies profile specific QoS 876 parameters of downlink, such as QCI/TFT for 3gpp profile, 877 [RFC6089]/[RFC7222] for ietf-pmip, or parameters of new profiles 878 defined by extensions of this specification. 880 DL-DPN-specific-parameters: Specifies optional node specific 881 parameters needed by downlink such as if-index, tunnel-if-number 882 that must be unique in the DPN. 884 DL-Vendor-specific-parameters: Specifies a vendor specific parameter 885 space for the downlink. 887 4.3.2.2. Multiple DPN Agent Case 889 Alternatively, a FPC Agent may connect to multiple DPNs. The Agent 890 MUST maintain a set of Context data for each DPN. The Context 891 contains a list of DPNs, where each entry of the list consists of the 892 parameters in Figure 15. A Context data for one DPN has two entries 893 - one for uplink and another for downlink or, where applicable, a 894 direction of 'both'. 896 (Contexts) 897 | 898 +---DPNs 899 | 900 +---DPN-id 901 | 902 +---Direction 903 | 904 +---Tunnel-local-address 905 | 906 +---Tunnel-remote-address 907 | 908 +---MTU-size 909 | 910 +---Mobility-specific-tunnel-parameters 911 | 912 +---Nexthop 913 | 914 +---QoS-profile-specific-parameters 915 | 916 +---DPN-specific-parameters 917 | 918 +---Vendor-specific-parameters 920 Figure 15: Multiple-DPN Supported Context Model Structure 922 DPN-id: Indicates DPN of which the runtime Context data installed. 924 Direction: Specifies which side of connection at the DPN indicated - 925 uplink, downlink or both. 927 Tunnel-local-address: Specifies endpoint address of the DPN at the 928 uplink or downlink. 930 Tunnel-remote-address: Specifies endpoint address of remote DPN at 931 the uplink or downlink. 933 MTU-size: Specifies the packet MTU size on uplink or downlink. 935 Mobility-specific-tunnel-parameters: Specifies profile specific 936 tunnel parameters for uplink or downlink to the DPN. This may, 937 for example, include GTP/TEID for 3gpp profile, or GRE/Key for 938 ietf-pmip profile. 940 Nexthop: Indicates next-hop information for uplink or downlink in 941 external network such as IP address, MAC address, SPI of service 942 function chain [I-D.ietf-sfc-nsh], SID of segment 943 routing[I-D.ietf-6man-segment-routing-header] 944 [I-D.ietf-spring-segment-routing-mpls], etc. 946 QoS-profile-specific-parameters: Specifies profile specific QoS 947 parameters for uplink or downlink to the DPN, such as QCI/TFT for 948 3gpp profile, [RFC6089]/[RFC7222] for ietf-pmip, or parameters of 949 new profiles defined by extensions of this specification. 951 DPN-specific-parameters: Specifies optional node specific parameters 952 needed by uplink or downlink to the DPN such like if-index, 953 tunnel-if-number that must be unique in the DPN. 955 Vendor-specific-parameters: Specifies a vendor specific parameter 956 space for the DPN. 958 Multi-DPN Agents will use only the DPNs list of a Context for 959 processing as described in this section. A single-DPN Agent MAY use 960 both the Single Agent DPN model Section 4.3.2.1 and the multi-DPN 961 Agent Context described here. 963 4.3.3. Monitors 965 Monitors provide a mechanism to produce reports when events occur. A 966 Monitor will have a target that specifies what is to be watched. 968 When a Monitor is specified, the configuration MUST be applicable to 969 the attribute/entity monitored. For example, a Monitor using a 970 Threshold configuration cannot be applied to a Context, because 971 Contexts do not have thresholds. But such a monitor could be applied 972 to a numeric threshold property of a Context. 974 (FPC-Mobility) 975 | 976 +---Monitors 977 | 978 +---Monitor-id 979 | 980 +---Target 981 | 982 +---Configuration 984 Figure 16: Common Monitor Model Structure 986 Monitor-id: Name of the Monitor. The ID format MUST conform to 987 Section 4.4. 989 Target: Target to be monitored. This may be an event, a Context, a 990 Vport or attribute(s) of Contexts. When the type is an 991 attribute(s) of a Context, the target name is a concatenation of 992 the Context-Id and the relative path (separated by '/') to the 993 attribute(s) to be monitored. 995 Configuration: Determined by the Monitor subtype. Four report types 996 are defined: 998 * Periodic reporting specifies an interval by which a 999 notification is sent to the Client. 1001 * Event reporting specifies a list of event types that, if they 1002 occur and are related to the monitored attribute, will result 1003 in sending a notification to the Client. 1005 * Scheduled reporting specifies the time (in seconds since Jan 1006 1, 1970) when a notification for the monitor should be sent to 1007 the Client. Once this Monitor's notification is completed the 1008 Monitor is automatically de-registered. 1010 * Threshold reporting specifies one or both of a low and high 1011 threshold. When these values are crossed a corresponding 1012 notification is sent to the Client. 1014 4.4. Namespace and Format 1016 The identifiers and names in FPC models which reside in the same 1017 namespace must be unique. That uniqueness must be kept in agent or 1018 data-plane tenant namespace on an Agent. The tenant namespace 1019 uniqueness MUST be applied to all elements of the tenant model, i.e. 1020 Topology, Policy and Mobility models. 1022 When a Policy needs to be applied to Contexts in all tenants on an 1023 Agent, the Agent SHOULD define that policy to be visible from all the 1024 tenants. In this case, the Agent assigns an unique identifier in the 1025 agent namespace. 1027 The format of identifiers can utilize any format with agreement 1028 between data-plane agent and client operators. The formats include 1029 but are not limited to Globally Unique IDentifiers (GUIDs), 1030 Universally Unique IDentifiers (UUIDs), Fully Qualified Domain Names 1031 (FQDNs), Fully Qualified Path Names (FQPNs) and Uniform Resource 1032 Identifiers (URIs). 1034 The FPC model does not limit the types of format that dictate the 1035 choice of FPC protocol. However the choice of identifiers which are 1036 used in Mobility model need to be considered to handle runtime 1037 parameters in real-time. The Topology and Policy models are not 1038 restricted to meet that requirement, as described in Section 3. 1040 4.5. Attribute Application 1042 Attributes in FPC Topology and Policy SHOULD be pre-configured in a 1043 FPC Agent prior to Contexts and Vports. The FPC Agent requires those 1044 pre-configured attributes to be able to derive a Context's detailed 1045 runtime attributes. 1047 When a FPC Client creates a Context, the FPC Client is then able to 1048 indicate specific DPN-group(s) instead of all endpoint addresses of 1049 the DPN(s) and MTU-size of the tunnels for example. This is because 1050 that the FPC Agent can derive data for those details from the pre- 1051 configured DPN-group information in the FPC Topology. 1053 Similarly when a Vport is created for the Context, the FPC Agent can 1054 derive detailed forwarding policies from the pre-configured Policy 1055 information in the FPC Policy. The FPC Client thereby has no need to 1056 indicate those specific policies to all of the Contexts which share 1057 the same set of Policy-groups. 1059 This is intentional as it provides FPC Clients the ability to reuse 1060 pre-configured FPC Topology and FPC Policy attributes. It helps to 1061 minimize over the wire exchanges and reduce system errors by 1062 exchanging less information. 1064 The Agent turns those derived data into runtime attributes of UL and 1065 DL objects which are in the DPNs list of the Context (multiple-DPNs 1066 Agent case) or directly under the Context (single-DPN Agent case). 1067 The Agent consequently instantiates forwarding policies on DPN(s) 1068 based on those attributes. 1070 When a Context inherits another Context as its parent, missing 1071 attributes in the child Context are provided by the Parent Context 1072 (for example, IMSI defined in the 3GPP extension) . 1074 It is noted that the Agent SHOULD update the Context's attributes 1075 which are instantiated on DPN(s) when the applied attributes of 1076 Topology and Policy are changed. 1078 In the case of FPC Client modifying an existing runtime attribute of 1079 a Context which the FPC Agent derived, the FPC Agent MUST overwrite 1080 that attribute with the value which the Client brings to the Agent. 1081 However risks exist, for example, the attributes could be outside of 1082 allowable range of DPNs which the FPC Agent managed. 1084 5. Protocol 1086 5.1. Protocol Messages and Semantics 1088 Five message types are supported: 1090 +---------------+----------------+----------------------------------+ 1091 | Message | Type | Description | 1092 +---------------+----------------+----------------------------------+ 1093 | CONF | HEADER | Configure processes a single | 1094 | | ADMIN_STATE | operation. | 1095 | | SESSION_STATE | | 1096 | | OP_TYPE BODY | | 1097 | | | | 1098 | CONF_BUNDLE | 1*[HEADER | A Conf-bundle takes multiple | 1099 | | ADMIN_STATE | operations that are to be | 1100 | | SESSION_STATE | executed as a group with partial | 1101 | | TRANS_STRATEGY | failures allowed. They are | 1102 | | OP_TYPE BODY] | executed according to the OP_ID | 1103 | | | value in the OP_BODY in | 1104 | | | ascending order. If a | 1105 | | | CONF_BUNDLE fails, any entities | 1106 | | | provisioned in the CURRENT | 1107 | | | operation are removed. However, | 1108 | | | any successful operations | 1109 | | | completed prior to the current | 1110 | | | operation are preserved in order | 1111 | | | to reduce system load. | 1112 | | | | 1113 | REG_MONITOR | HEADER | Register a monitor at an Agent. | 1114 | | ADMIN_STATE *[ | The message includes information | 1115 | | MONITOR ] | about the attribute to monitor | 1116 | | | and the reporting method. Note | 1117 | | | that a MONITOR_CONFIG is | 1118 | | | required for this operation. | 1119 | | | | 1120 | DEREG_MONITOR | HEADER *[ | Deregister monitors from an | 1121 | | MONITOR_ID ] [ | Agent. Monitor IDs are provided. | 1122 | | boolean ] | Boolean (optional) indicates if | 1123 | | | a successful DEREG triggers a | 1124 | | | NOTIFY with final data. | 1125 | | | | 1126 | PROBE | HEADER | Probe the status of a registered | 1127 | | MONITOR_ID | monitor. | 1128 +---------------+----------------+----------------------------------+ 1130 Table 1: Client to Agent Messages 1132 Each message contains a header with the Client Identifier, an 1133 execution delay timer and an operation identifier. The delay, in ms, 1134 is processed as the delay for operation execution from the time the 1135 operation is received by the Agent. 1137 The Client Identifier is used by the Agent to associate specific 1138 configuration characteristics, e.g. options used by the Client when 1139 communicating with the Agent, as well as the association of the 1140 Client and tenant in the information model. 1142 Messages that create or update Monitors and Entities, i.e. CONFIG, 1143 CONF_BUNDLE and REG_MONITOR, specify an Administrative State which 1144 specifies the Administrative state of the message subject(s) after 1145 the successful completion of the operation. If the status is set to 1146 virtual, any existing data on the DPN is removed. If the value is 1147 set to disabled, and if that entity exists on the DPN, then an 1148 operation to disable the associated entity will occur on the DPN . If 1149 set to 'active' the DPN will be provisioned. Values are 'enabled', 1150 'disabled', and 'virtual'. 1152 CONF_BUNDLE also has the Transaction Strategy (TRANS_STRATEGY) 1153 attribute. This value specifies the behavior of the Agent when an 1154 operation fails while processing a CONF_BUNDLE message. The value of 1155 'default' uses the default strategy defined for the message. The 1156 value 'all_or_nothing' will roll back all successfully executed 1157 operations within the bundle as well as the operation that failed. 1159 An FPC interface protocol used to support this specification may not 1160 need to support CONF_BUNDLE messages or specific TRANS_STRATEGY types 1161 beyond 'default' when the protocol provides similar semantics. 1162 However, this MUST be clearly defined in the specification that 1163 defines the interface protocol. 1165 An Agent will respond with an ERROR, OK, or an OK WITH INDICATION 1166 that remaining data will be sent via a notify from the Agent to the 1167 Client Section 5.1.1.6.2 for CONFIG and CONF_BUNDLE requests. When 1168 returning an 'ok' of any kind, optional data may be present. 1170 Two Agent notifications are supported: 1172 +----------------------+----------+---------------------------------+ 1173 | Message | Type | Description | 1174 +----------------------+----------+---------------------------------+ 1175 | CONFIG_RESULT_NOTIFY | See | An asynchronous notification | 1176 | | Table 15 | from Agent to Client based upon | 1177 | | | a previous CONFIG or | 1178 | | | CONF_BUNDLE request. | 1179 | | | | 1180 | NOTIFY | See | An asynchronous notification | 1181 | | Table 16 | from Agent to Client based upon | 1182 | | | a registered MONITOR. | 1183 +----------------------+----------+---------------------------------+ 1185 Table 2: Agent to Client Messages (notifications) 1187 5.1.1. CONFIG and CONF_BUNDLE Messages 1189 CONFIG and CONF_BUNDLE specify the following information for each 1190 operation in addition to the header information: 1192 SESSION_STATE: sets the expected state of the entities embedded in 1193 the operation body after successful completion of the operation. 1194 Values can be 'complete', 'incomplete' or 'outdated'. Any 1195 operation that is 'incomplete' MAY NOT result in communication 1196 between the Agent and DPN. If the result is 'outdated' any new 1197 operations on these entities or new references to these entities 1198 have unpredictable results. 1200 OP_TYPE: specifies the type of operation. Valid values are 'create' 1201 (0), 'update' (1), 'query' (2) or 'delete' (3). 1203 COMMAND_SET: If the feature is supported, specifies the Command Set 1204 (see Section 5.1.1.4). 1206 BODY: A list of Clones, if supported, Vports and Contexts when the 1207 OP_TYPE is 'create' or 'update'. Otherwise it is a list of 1208 Targets for 'query' or 'deletion'. See Section 6.2.2 for 1209 details. 1211 5.1.1.1. Agent Operation Processing 1213 The Agent will process entities provided in an operation in the 1214 following order: 1216 1. Clone Instructions, if the feature is supported 1218 2. Vports 1219 3. Contexts according to COMMAND_SET order processing 1221 The following Order Processing occurs when COMMAND Sets are present 1223 1. The Entity-specific COMMAND_SET is processed according to its bit 1224 order unless otherwise specified by the technology specific 1225 COMMAND_SET definition. 1227 2. Operation specific COMMAND_SET is processed upon all applicable 1228 entities (even if they had Entity-specific COMMAND_SET values 1229 present) according to its bit order unless otherwise specified by 1230 the technology specific COMMAND_SET definition. 1232 3. Operation OP_TYPE is processed for all entities. 1234 When deleting objects only their name needs to be provided. However, 1235 attributes MAY be provided if the Client wishes to avoid requiring 1236 the Agent cache lookups. 1238 When deleting an attribute, a leaf reference should be provided. 1239 This is a path to the attributes. 1241 5.1.1.2. Policy RPC Support 1243 This optional feature permits policy elements, (Policy-Group, Policy, 1244 Action and Descriptor), values to be in CONFIG or CONF_BUNDLE 1245 requests. It enables RPC based policy provisioning. 1247 5.1.1.3. Cloning 1249 Cloning is an optional feature that allows a Client to copy one 1250 structure to another in an operation. Cloning is always done first 1251 within the operation (see Operation Order of Execution for more 1252 detail). If a Client wants to build an object then Clone it, use 1253 CONF_BUNDLE with the first operation being the entities to be copied 1254 and a second operation with the Cloning instructions. A CLONE 1255 operation takes two arguments, the first is the name of the target to 1256 clone and the second is the name of the newly created entity. 1257 Individual attributes are not clonable; only Vports and Contexts can 1258 be cloned. 1260 5.1.1.4. Command Bitsets 1262 The COMMAND_SET is a technology specific bitset that allows for a 1263 single entity to be sent in an operation with requested sub- 1264 transactions to be completed. For example, a Context could have the 1265 Home Network Prefix absent but it is unclear if the Client would like 1266 the address to be assigned by the Agent or if this is an error. 1268 Rather than creating a specific command for assigning the IP a bit 1269 position in a COMMAND_SET is reserved for Agent based IP assignment. 1270 Alternatively, an entity could be sent in an update operation that 1271 would be considered incomplete, e.g. missing some required data in 1272 for the entity, but has sufficient data to complete the instructions 1273 provided in the COMMAND_SET. 1275 5.1.1.5. Reference Scope 1277 The Reference Scope is an optional feature that provides the scope of 1278 references used in a configuration command, i.e. CONFIG or 1279 CONF_BUNDLE. These scopes are defined as 1281 o none - all entities have no references to other entities. This 1282 implies only Contexts are present. Vports MUST have references to 1283 Policy-Groups. 1285 o op - All references are contained in the operation body, i.e. only 1286 intra-operation references exist. 1288 o bundle - All references exist in bundle (inter-operation/intra- 1289 bundle). NOTE - If this value is present in a CONFIG message it 1290 is equivalent to 'op'. 1292 o storage - One or more references exist outside of the operation 1293 and bundle. A lookup to a cache / storage is required. 1295 o unknown - the location of the references are unknown. This is 1296 treated as a 'storage' type. 1298 If supported by the Agent, when cloning instructions are present, the 1299 scope MUST NOT be 'none'. When Vports are present the scope MUST be 1300 'storage' or 'unknown'. 1302 An agent that only accepts 'op' or 'bundle' reference scope messages 1303 is referred to as 'stateless' as it has no direct memory of 1304 references outside messages themselves. This permits low memory 1305 footprint Agents. Even when an Agent supports all message types an 1306 'op' or 'bundle' scoped message can be processed quickly by the Agent 1307 as it does not require storage access. 1309 5.1.1.6. Operation Response 1311 5.1.1.6.1. Immediate Response 1313 Results will be supplied per operation input. Each result contains 1314 the RESULT_STATUS and OP_ID that it corresponds to. RESULT_STATUS 1315 values are: 1317 OK - Success 1319 ERR - An Error has occurred 1321 OK_NOTIFY_FOLLOWS - The Operation has been accepted by the Agent 1322 but further processing is required. A CONFIG_RESULT_NOTIFY will 1323 be sent once the processing has succeeded or failed. 1325 Any result MAY contain nothing or entities created or partially 1326 fulfilled as part of the operation as specified in Table 14. For 1327 Clients that need attributes back quickly for call processing, the 1328 AGENT MUST respond back with an OK_NOTIFY_FOLLOWS and minimally the 1329 attributes assigned by the Agent in the response. These situations 1330 MUST be determined through the use of Command Sets (see 1331 Section 5.1.1.4). 1333 If an error occurs the following information is returned. 1335 ERROR_TYPE_ID (Unsigned 32) - The identifier of a specific error 1336 type 1338 ERROR_INFORMATION - An OPTIONAL string of no more than 1024 1339 characters. 1341 5.1.1.6.2. Asynchronous Notification 1343 A CONFIG_RESULT_NOTIFY occurs after the Agent has completed 1344 processing related to a CONFIG or CONF_BUNDLE request. It is an 1345 asynchronous communication from the Agent to the Client. 1347 The values of the CONFIG_RESULT_NOTIFY are detailed in Table 15. 1349 5.1.2. Monitors 1351 When a monitor has a reporting configuration of SCHEDULED it is 1352 automatically de-registered after the NOTIFY occurs. An Agent or DPN 1353 may temporarily suspend monitoring if insufficient resources exist. 1354 In such a case the Agent MUST notify the Client. 1356 All monitored data can be requested by the Client at any time using 1357 the PROBE message. Thus, reporting configuration is optional and 1358 when not present only PROBE messages may be used for monitoring. If 1359 a SCHEDULED or PERIODIC configuration is provided during registration 1360 with the time related value (time or period respectively) of 0 a 1361 NOTIFY is immediately sent and the monitor is immediately de- 1362 registered. This method should, when a MONITOR has not been 1363 installed, result in an immediate NOTIFY sufficient for the Client's 1364 needs and lets the Agent realize the Client has no further need for 1365 the monitor to be registered. An Agent may reject a registration if 1366 it or the DPN has insufficient resources. 1368 PROBE messages are also used by a Client to retrieve information 1369 about a previously installed monitor. The PROBE message SHOULD 1370 identify one or more monitors by means of including the associated 1371 monitor identifier. An Agent receiving a PROBE message sends the 1372 requested information in a single or multiple NOTIFY messages. 1374 5.1.2.1. Operation Response 1376 5.1.2.1.1. Immediate Response 1378 Results will be supplied per operation input. Each result contains 1379 the RESULT_STATUS and OP_ID that it corresponds to. RESULT_STATUS 1380 values are: 1382 OK - Success 1384 ERR - An Error has occurred 1386 Any OK result will contain no more information. 1388 If an error occurs the following information is returned. 1390 ERROR_TYPE_ID (Unsigned 32) - The identifier of a specific error 1391 type 1393 ERROR_INFORMATION - An OPTIONAL string of no more than 1024 1394 characters. 1396 5.1.2.1.2. Asynchronous Notification 1398 A NOTIFY can be sent as part of de-registraiton, a trigger based upon 1399 a Monitor Configuration or a PROBE. A NOTIFY is comprised of unique 1400 Notification Identifier from the Agent, the Monitor ID the 1401 notification applies to, the Trigger for the notification, a 1402 timestamp of when the notification's associated event occurs and data 1403 that is specific to the monitored value's type. 1405 5.2. Protocol Operation 1407 5.2.1. Simple RPC Operation 1409 An FPC Client and Agent MUST identify themselves using the CLI_ID and 1410 AGT_ID respectively to ensure that for all transactions a recipient 1411 of an FPC message can unambiguously identify the sender of the FPC 1412 message. A Client MAY direct the Agent to enforce a rule in a 1413 particular DPN by including a DPN_ID value in a Context. Otherwise 1414 the Agent selects a suitable DPN to enforce a Context and notifies 1415 the Client about the selected DPN using the DPN_ID. 1417 All messages sent from a Client to an Agent MUST be acknowledged by 1418 the Agent. The response must include all entities as well as status 1419 information, which indicates the result of processing the message, 1420 using the RESPONSE_BODY property. In case the processing of the 1421 message results in a failure, the Agent sets the ERROR_TYPE_ID and 1422 ERROR_INFORMATION accordingly and MAY clear the Context or Vport, 1423 which caused the failure, in the response. 1425 If based upon Agent configuration or the processing of the request 1426 possibly taking a significant amount of time the Agent MAY respond 1427 with an OK_NOTIFY_FOLLOWS with an optional RESPONSE_BODY containing 1428 the partially completed entities. When an OK_NOTIFY_FOLLOWS is sent, 1429 the Agent will, upon completion or failure of the operation, respond 1430 with an asynchronous CONFIG_RESULT_NOTIFY to the Client. 1432 A Client MAY add a property to a Context without providing all 1433 required details of the attribute's value. In such case the Agent 1434 SHOULD determine the missing details and provide the completed 1435 property description back to the Client. If the processing will take 1436 too long or based upon Agent configuration, the Agent MAY respond 1437 with an OK_NOTIFY_FOLLOWS with a RESPONSE_BODY containing the 1438 partially completed entities. 1440 In case the Agent cannot determine the missing value of an 1441 attribute's value per the Client's request, it leaves the attribute's 1442 value cleared in the RESPONSE_BODY and sets the RESULT to Error, 1443 ERROR_TYPE_ID and ERROR_INFORMATION. As example, the Control-Plane 1444 needs to setup a tunnel configuration in the Data-Plane but has to 1445 rely on the Agent to determine the tunnel endpoint which is 1446 associated with the DPN that supports the Context. The Client adds 1447 the tunnel property attribute to the FPC message and clears the value 1448 of the attribute (e.g. IP address of the local tunnel endpoint). 1449 The Agent determines the tunnel endpoint and includes the completed 1450 tunnel property in its response to the Client. 1452 Figure 17 illustrates an exemplary session life-cycle based on Proxy 1453 Mobile IPv6 registration via MAG Control-Plane function 1 (MAG-C1) 1454 and handover to MAG Control-Plane function 2 (MAG-C2). Edge DPN1 1455 represents the Proxy CoA after attachment, whereas Edge DPN2 serves 1456 as Proxy CoA after handover. As exemplary architecture, the FPC 1457 Agent and the network control function are assumed to be co-located 1458 with the Anchor-DPN, e.g. a Router. 1460 +-------Router--------+ 1461 +-----------+ |+-------+ +---------+| 1462 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1463 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1464 +------+ +------+ +-----+-------+ +-------+ +---------+ 1465 [MN attach] | | | | 1466 |-------------PBU----->| | | 1467 | | |---(1)--CONFIG(CREATE)--->| | 1468 | | | [ CONTEXT_ID, |--tun1 up->| 1469 | | | DOWNLINK(QOS/TUN), | | 1470 | | | UPLINK(QOS/TUN), |--tc qos-->| 1471 | | | IP_PREFIX(HNP) ] | | 1472 | | |<---(2)- OK --------------|-route add>| 1473 | | | | | 1474 |<------------PBA------| | | 1475 | | | | | 1476 | +----+ | | | | 1477 | |Edge| | | | | 1478 | |DPN1| | | | | 1479 | +----+ | | | | 1480 | | | 1481 | |-=======================================================-| 1482 | | | | 1483 | [MN handover] | | | 1484 | |---PBU ---->| | | 1485 | | |--(3)- CONFIG(MODIFY)---->| | 1486 | |<--PBA------| [ CONTEXT_ID |-tun1 mod->| 1487 | | | DOWNLINK(TUN), | | 1488 | | +----+ | UPLINK(TUN) ] | | 1489 | | |Edge| |<---(4)- OK --------------| | 1490 | | |DPN2| | | | 1491 | | +----+ | | | 1492 | | | | | | 1493 | | |-============================================-| 1494 | | | | | 1496 Figure 17: Exemplary Message Sequence (focus on FPC reference point) 1498 After reception of the Proxy Binding Update (PBU) at the LMA Control- 1499 Plane function (LMA-C), the LMA-C selects a suitable DPN, which 1500 serves as Data-Plane anchor to the mobile node's (MN) traffic. The 1501 LMA-C adds a new logical Context to the DPN to treat the MN's traffic 1502 (1) and includes a Context Identifier (CONTEXT_ID) to the CONFIG 1503 command. The LMA-C identifies the selected Anchor DPN by including 1504 the associated DPN identifier. 1506 The LMA-C adds properties during the creation of the new Context. 1507 One property is added to specify the forwarding tunnel type and 1508 endpoints (Anchor DPN, Edge DPN1) in each direction (as required). 1509 Another property is added to specify the QoS differentiation, which 1510 the MN's traffic should experience. At reception of the Context, the 1511 FPC Agent utilizes local configuration commands to create the tunnel 1512 (tun1) as well as the traffic control (tc) to enable QoS 1513 differentiation. After configuration has been completed, the Agent 1514 applies a new route to forward all traffic destined to the MN's HNP 1515 specified as a property in the Context to the configured tunnel 1516 interface (tun1). 1518 During handover, the LMA-C receives an updating PBU from the handover 1519 target MAG-C2. The PBU refers to a new Data-Plane node (Edge DPN2) 1520 to represent the new tunnel endpoints in the downlink and uplink, as 1521 required. The LMA-C sends a CONFIG message (3) to the Agent to 1522 modify the existing tunnel property of the existing Context and to 1523 update the tunnel endpoint from Edge DPN1 to Edge DPN2. Upon 1524 reception of the CONFIG message, the Agent applies updated tunnel 1525 property to the local configuration and responds to the Client (4). 1527 +-------Router--------+ 1528 +-----------+ |+-------+ +---------+| 1529 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1530 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1531 +------+ +------+ +-----+-------+ +-------+ +---------+ 1532 [MN attach] | | | | 1533 |-------------PBU----->| | | 1534 | | |---(1)--CONFIG(MODIFY)--->| | 1535 |<------------PBA------| [ CONTEXT_ID, |--tun1 ->| 1536 | | | DOWNLINK(TUN delete), | down | 1537 | | | UPLINK(TUN delete) ] | | 1538 | | | | | 1539 | | |<-(2)- OK ----------------| | 1540 | | | | | 1541 | | [ MinDelayBeforeBCEDelete expires ] | | 1542 | | | | | 1543 | | |---(3)--CONFIG(DELETE)--->|-- tun1 -->| 1544 | | | | delete | 1545 | | |<-(4)- OK ----------------| | 1546 | | | |-- route ->| 1547 | | | | remove | 1548 | | | | | 1550 Figure 18: Exemplary Message Sequence (focus on FPC reference point) 1552 When a teardown of the session occurs, MAG-C1 will send a PBU with a 1553 lifetime value of zero. The LMA-C sends a CONFIG message (1) to the 1554 Agent to modify the existing tunnel property of the existing Context 1555 to delete the tunnel information.) Upon reception of the CONFIG 1556 message, the Agent removes the tunnel configuration and responds to 1557 the Client (2). Per [RFC5213], the PBA is sent back immediately 1558 after the PBA is received. 1560 If no valid PBA is received after the expiration of the 1561 MinDelayBeforeBCEDelete timer (see [RFC5213]), the LMA-C will send a 1562 CONFIG (3) message with a deletion request for the Context. Upon 1563 reception of the message, the Agent deletes the tunnel and route on 1564 the DPN and responds to the Client (4). 1566 When a multi-DPN Agent is used the DPN list permits several DPNs to 1567 be provisioned in a single message. 1569 +-----------+ +-------+ +---------+ 1570 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1571 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN1 | 1572 +------+ +------+ +-----+-------+ +-------+ +---------+ 1573 [MN attach] | | | | 1574 |-------------PBU----->| | | 1575 | | |---(1)--CONFIG(CREATE)--->| | 1576 | | | [ CONTEXT_ID, DPNS [ |--tun1 up->| 1577 | | |[DPN1,DOWNLINK(QOS/TUN)], | | 1578 | | | [DPN1,UPLINK(QOS/TUN)], |--tc qos-->| 1579 | | |[DPN2,DOWNLINK(QOS/TUN)], | | 1580 | | | [DPN2,UPLINK(QOS/TUN)], | | 1581 | | | IP_PREFIX(HNP) ] | | 1582 | | |<-(2)- OK_NOTIFY_FOLLOWS -|-route add>| 1583 | | | | | 1584 |<------------PBA------| | | 1585 | | | | | 1586 | +----+ | | | 1587 | |Edge| | | | 1588 | |DPN2| | | | 1589 | +----+ | | | 1590 | |<---------------------- tun1 up -------------| | 1591 | |<---------------------- tc qos --------------| | 1592 | |<---------------------- route add -----------| | 1593 | | | | | 1594 | | |<(3) CONFIG_RESULT_NOTIFY | | 1595 | | | [ Response Data ] | | 1596 | | | | | 1598 Figure 19: Exemplary Message Sequence for Multi-DPN Agent 1600 Figure 19 shows how the first 2 messages in Figure 17 are supported 1601 when a multi-DPN Agent communicates with both Anchor DPN1 and Edge 1602 DPN2. In such a case, the FPC Client sends the downlink and uplink 1603 for both DPNs in the "DPNS" list of the same Context. Message 1 1604 shows the DPNS list with all entries. Each entry identifies the DPN 1605 and direction (one of 'uplink', 'downlink' or 'both'). Generally, 1606 the 'both' direction is not used for normal mobility session 1607 processing. It is commonly used for the instantiation of Policies on 1608 a specific DPN (see Section 5.2.4). 1610 The Agent responds with an OK_NOTIFY_FOLLOWS while it simultaneoulsy 1611 provisions both DPNs. Upon successful completion, the Agent responds 1612 to the Client with a CONFIG_RESULT_NOTIFY indicating the operation 1613 status. 1615 5.2.2. Policy And Mobility on the Agent 1617 A Client may build Policy and Topology using any mechanism on the 1618 Agent. Such entities are not always required to be constructed in 1619 realtime and, therefore, there are no specific messages defined for 1620 them in this specification. 1622 The Client may add, modify or delete many Vports and Contexts in a 1623 single FPC message. This includes linking Contexts to Actions and 1624 Descriptors, i.e. a Rule. As example, a Rule which performs re- 1625 writing of an arriving packet's destination IP address from IP_A to 1626 IP_B matching an associated Descriptor, can be enforced in the Data- 1627 Plane via an Agent to implicitly consider matching arriving packet's 1628 source IP address against IP_B and re- write the source IP address to 1629 IP_A. 1631 Figure 20 illustrates the generic policy configuration model as used 1632 between a FPC Client and a FPC Agent. 1634 Descriptor_1 -+ +- Action_1 1635 | | 1636 Descriptor_2 -+----+- Action_2 1637 +------+ 1638 /Order#/-------------+ 1639 +------+ | 1640 | 1641 Descriptor_3 -+ +- Action_3 +- 1642 | | | ^ 1643 Descriptor_4 -+----+- Action_4 | | 1644 +------+ | 1645 /Order#/-------------+ ^ 1646 +------+ | 1647 1649 +-------------------+ +---------------------+ 1650 | Bind 1..M traffic | | Bind 1..N traffic | 1651 | Descriptors to | --> | treatment actions | 1652 | a Policy, | | to a Policy, | 1653 | Policy-Group and | | Policy-Group and | 1654 | Vport | | Vport | 1655 +-------------------+ +---------------------+ 1657 | | 1658 +-------------- Data-Plane Rule ------------------+ 1660 Figure 20: Structure of Policies and Vports 1662 As depicted in Figure 20, the Vport represents the anchor of Rules 1663 through the Policy-group, Policy, Rule hierarchy configured by any 1664 mechanism including RPC or N. A Client and Agent use the identifier 1665 of the associated Policy to directly access the Rule and perform 1666 modifications of traffic Descriptors or Action references. A Client 1667 and Agent use the identifiers to access the Descriptors or Actions to 1668 perform modifications. From the viewpoint of packet processing, 1669 arriving packets are matched against traffic Descriptors and 1670 processed according to the treatment Actions specified in the list of 1671 properties associated with the Vport. 1673 A Client complements a rule's Descriptors with a Rule's Order 1674 (priority) value to allow unambiguous traffic matching on the Data- 1675 Plane. 1677 Figure 21 illustrates the generic context configuration model as used 1678 between a FPC Client and a FPC Agent. 1680 TrafficSelector_1 1681 | 1682 profile-parameters 1683 | 1684 mobility-profile-- dl ------+ 1685 ^ | 1686 | qos-profile 1687 | 1688 ^ per-mn-agg-max-dl_2 1689 | 1690 1692 +-------------------+ +---------------------+ 1693 | Bind 1..M traffic | | Bind 1..N traffic | 1694 | selectors to | --> | treatment / qos | 1695 | a Context | | actions to a | 1696 | | | Context | 1697 +-------------------+ +---------------------+ 1699 | | 1700 +-------------- Data-Plane Rule ------------------+ 1702 Figure 21: Structure of Contexts 1704 As depicted in Figure 21, the Context represents a mobility session 1705 hierarchy. A Client and Agent directly assigns values such as 1706 downlink traffic descriptors, QoS information, etc. A Client and 1707 Agent use the context identifiers to access the descriptors, qos 1708 information, etc. to perform modifications. From the viewpoint of 1709 packet processing, arriving packets are matched against traffic 1710 Descriptors and processed according to the qos or other mobility 1711 profile related Actions specified in the Context's properties. If 1712 present, the final action is to use a Context's tunnel information to 1713 encapsulate and forward the packet. 1715 A second Context also references context1 in the figure. Based upon 1716 the technology a property in a parent context MAY be inherited by its 1717 descendants. This permits concise over the wire representation. 1718 When a Client deletes a parent Context all children are also deleted. 1720 5.2.3. Optimization for Current and Subsequent Messages 1722 5.2.3.1. Bulk Data in a Single Operation 1724 A single operation MAY contain multiple entities. This permits 1725 bundling of requests into a single operation. In the example below 1726 two PMIP sessions are created via two PBU messages and sent to the 1727 Agent in a single CONFIG message (1). Upon recieveing the message, 1728 the Agent responds back with an OK_NOTIFY_FOLLOWS (2), completes work 1729 on the DPN to activate the associated sessions then responds to the 1730 Client with a CONFIG_RESULT_NOTIFY (3). 1732 +-------Router--------+ 1733 +-----------+ |+-------+ +---------+| 1734 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1735 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1736 +------+ +------+ +-----+-------+ +-------+ +---------+ 1737 [MN1 attach] | | | | 1738 |-------------PBU----->| | | 1739 | [MN2 attach] | | | 1740 | |---PBU----->| | | 1741 | | | | | 1742 | | |---(1)--CONFIG(CREATE)--->| | 1743 |<------------PBA------| [ CONTEXT_ID 1, |--tun1 up->| 1744 | | | DOWNLINK(QOS/TUN), | | 1745 | |<--PBA------| UPLINK(QOS/TUN), |--tc1 qos->| 1746 | | | IP_PREFIX(HNP) ] | | 1747 | | | [ CONTEXT_ID 2, |-route1 | 1748 | | | DOWNLINK(QOS/TUN), | add> | 1749 | | | UPLINK(QOS/TUN), | | 1750 | | | IP_PREFIX(HNP) ] |--tun2 up->| 1751 | | |<-(2)- OK_NOTIFY_FOLLOWS--| | 1752 | | | |--tc2 qos->| 1753 |<------------PBA------| | | 1754 | | | |-route2 | 1755 | | |<(3) CONFIG_RESULT_NOTIFY | add> | 1756 | | | [ Response Data ] | | 1757 | | | | | 1758 | | | | | 1760 Figure 22: Exemplary Bulk Entity with Asynchronous Notification 1761 Sequence (focus on FPC reference point) 1763 5.2.3.2. Configuration Bundles 1765 Bundles provide transaction boundaries around work in a single 1766 message. Operations in a bundle MUST be successfully executed in the 1767 order specified. This allows references created in one operation to 1768 be used in a subsequent operation in the bundle. 1770 The example bundle shows in Operation 1 (OP 1) the creation of a 1771 Context 1 which is then referenced in Operation 2 (OP 2) by 1772 CONTEXT_ID 2. If OP 1 fails then OP 2 will not be executed. The 1773 advantage of the CONF_BUNDLE is preservation of dependency orders in 1774 a single message as opposed to sending multiple CONFIG messages and 1775 awaiting results from the Agent. 1777 When a CONF_BUNDLE fails, any entities provisioned in the CURRENT 1778 operation are removed, however, any successful operations completed 1779 prior to the current operation are preserved in order to reduce 1780 system load. 1782 +-------Router--------+ 1783 +-----------+ |+-------+ +---------+| 1784 | FPC | | FPC | | Anchor | 1785 | Client | | Agent | | DPN | 1786 +-----------+ +-------+ +---------+ 1787 | | | 1788 |--CONF_BUNDLE(CREATE)---->| | 1789 | [ OP 1, [VPORT X ] | | 1790 | [ CONTEXT_ID 1, | | 1791 | DOWNLINK(QOS/TUN), | | 1792 | UPLINK(QOS/TUN), | | 1793 | IP_PREFIX(HNP) ] | | 1794 | [ OP 2, | | 1795 | [ CONTEXT_ID 2, | | 1796 | PARENT_CONTEXT_ID 1, | | 1797 | UPLINK(QOS/TUN), | | 1798 | DOWNLINK(QOS/TUN) ] ] | | 1799 | | | 1801 Figure 23: Exemplary Bundle Message (focus on FPC reference point) 1803 5.2.3.3. Cloning Feature (Optional) 1805 Cloning provides a high speed copy/paste mechanism. The example 1806 below shows a single Context that will be copied two times. A 1807 subsequent update will then override copied values. To avoid the 1808 accidental activation of the Contexts on the DPN, the CONFIG (1) 1809 message with the cloning instruction has a SESSION_STATE with a value 1810 of 'incomplete' and OP_TYPE of 'CREATE'. A second CONFIG (2) is sent 1811 with the SESSION_STATE of 'complete' and OP_TYPE of 'UPDATE'. The 1812 second message includes any differences between the original (copied) 1813 Context and its Clones. 1815 +-------Router--------+ 1816 +-----------+ |+-------+ +---------+| 1817 | FPC | | FPC | | Anchor | 1818 | Client | | Agent | | DPN | 1819 +-----------+ +-------+ +---------+ 1820 | | | 1821 |--CONF_BUNDLE(CREATE)---->| | 1822 | [ OP 1, | | 1823 | [ SESSION_STATE | | 1824 | (incomplete) ], | | 1825 | [CLONE SRC=2, TARGET=3], | | 1826 | [CLONE SRC=2, TARGET=4], | | 1827 | [ CONTEXT_ID 2, | | 1828 | PARENT_CONTEXT_ID 1, | | 1829 | UPLINK(QOS/TUN), | | 1830 | DOWNLINK(QOS/TUN), | | 1831 | IP_PREFIX(HNP) ] ] | | 1832 |<----- OK ----------------| | 1833 | | | 1834 |--CONF_BUNDLE(UPDATE)--->| | 1835 | [ CONTEXT_ID 3, | | 1836 | PARENT_CONTEXT_ID(empty),| | 1837 | UPLINK(QOS/TUN), | | 1838 | DOWNLINK(QOS/TUN) ], | | 1839 | [ CONTEXT_ID 4, | | 1840 | PARENT_CONTEXT_ID(empty),| | 1841 | UPLINK(QOS/TUN), | | 1842 | DOWNLINK(QOS/TUN) ] ] | | 1843 |<----- OK ----------------| | 1844 | | | 1846 Figure 24: Exemplary Bundle Message (focus on FPC reference point) 1848 Cloning has the added advantage of reducing the over the wire data 1849 size required to create multiple entities. This can improve 1850 performance if serialization / deserialization of multiple entities 1851 incurs some form of performance penalty. 1853 5.2.3.4. Command Bitsets (Optional) 1855 Command Sets permit the ability to provide a single, unified data 1856 structure, e.g. CONTEXT, and specify which activities are expected 1857 to be performed on the DPN. This has some advantages 1859 o Rather than sending N messages with a single operation performed 1860 on the DPN a single message can be used with a Command Set that 1861 specifies the N DPN operations to be executed. 1863 o Errors become more obvious. For example, if the HNP is NOT 1864 provided but the Client did not specify that the HNP should be 1865 assigned by the Agent this error is easily detected. Without the 1866 Command Set the default behavior of the Agent would be to assign 1867 the HNP and then respond back to the Client where the error would 1868 be detected and subsequent messaging would be required to remedy 1869 the error. Such situations can increase the time to error 1870 detection and overall system load without the Command Set present. 1872 o Unambiguous provisioning specification. The Agent is exactly in 1873 sync with the expectations of the Client as opposed to guessing 1874 what DPN work could be done based upon data present at the Agent. 1875 This greatly increases the speed by which the Agent can complete 1876 work. 1878 o Permits different technologies with different instructions to be 1879 sent in the same message. 1881 As Command Bitsets are technology specific, e.g. PMIP or 3GPP 1882 Mobility, the type of work varies on the DPN and the amount of data 1883 present in a Context or Port will vary. Using the technology 1884 specific instructions allows the Client to serve multiple 1885 technologies and MAY result in a more stateless Client as the 1886 instructions are transferred the Agent which will match the desired, 1887 technology specific instructions with the capabilities and over the 1888 wire protocol of the DPN more efficiently. 1890 5.2.3.5. Reference Scope(Optional) 1892 Although entities MAY refer to any other entity of an appropriate 1893 type, e.g. Contexts can refer to Vports or Contexts, the Reference 1894 Scope gives the Agent an idea of where those references reside. They 1895 may be in the same operation, an operation in the same CONF_BUNDLE 1896 message or in storage. There may also be no references. This 1897 permits the Agent to understand when it can stop searching for 1898 reference it cannot find. For example, if a CONF_BUNDLE message uses 1899 a Reference Scope of type 'op' then it merely needs to keep an 1900 operation level cache and consume no memory or resources searching 1901 across the many operations in the CONF_BUNDLE message or the data 1902 store. 1904 Agents can also be stateless by only supporting the 'none', 'op' and 1905 'bundle' reference scopes. This does not imply they lack storage but 1906 merely the search space they use when looking up references for an 1907 entity. The figure below shows the caching hierarchy provided by the 1908 Reference Scope 1909 Caches are temporarily created at each level and as the scope 1910 includes more caches the amount of entities that are searched 1911 increases. Figure 25 shows an example containment hierarchy provided 1912 for all caches. 1914 +---------------+ 1915 | Global Cache | 1916 | (storage) | 1917 +------+--------+ 1918 | 1919 +----------------------+ 1920 | | 1921 +------+--------+ +------+--------+ 1922 | Bundle Cache | | Bundle Cache | 1923 | (bundle) | .... | (bundle) | 1924 +------+--------+ +------+--------+ 1925 | 1926 +--------------------+--------------------+ 1927 | | | 1928 +--------+---------+ +--------+---------+ +--------+---------+ 1929 | Operation Cache | | Operation Cache | | Operation Cache | 1930 | (op) | | (op) | | (op) | 1931 +------------------+ +------------------+ +------------------+ 1933 (no cache) 1935 Figure 25: Exemplary Hierarchical Cache 1937 5.2.4. Pre-provisioning 1939 Although Contexts are used for Session based lifecycle elements, 1940 Vports may exist outside of a specific lifecycle and represent more 1941 general policies that may affect multiple Contexts (sessions). The 1942 use of pre-provisioning of Vports permits policy and administrative 1943 use cases to be executed. For example, creating tunnels to forward 1944 traffic to a trouble management platform and dropping packets to a 1945 defective web server can be accomplished via provisioning of Vports. 1947 The figure below shows a CONFIG (1) message used to install a Policy- 1948 group, policy-group1, using a Context set aside for pre-provisioning 1949 on a DPN. 1951 +-------Router--------+ 1952 +-----------+ |+-------+ +---------+| 1953 | FPC | | FPC | | Anchor | 1954 | Client | | Agent | | DPN | 1955 +-----------+ +-------+ +---------+ 1956 | | | 1957 |------CONFIG(CREATE)----->| | 1958 | [ VPORT_ID port1, | | 1959 | [ policy-group1 ] ] | | 1960 | [ CONTEXT_ID preprov, | | 1961 | DPN_ID X, | | 1962 | [ port1 ] ] | | 1963 | | | 1965 Figure 26: Exemplary Config Message for policy pre-provisioning 1967 5.2.4.1. Basename Registry Feature (Optional) 1969 The Optional BaseName Registry support feature is provided to permit 1970 Clients and tenants with common scopes, referred to in this 1971 specification as BaseNames, to track the state of provisioned policy 1972 information on an Agent. The registry records the BaseName and 1973 Checkpoint set by a Client. If a new Client attaches to the Agent it 1974 can query the Registry to determine the amount of work that must be 1975 executed to configure the Agent to a BaseName / checkpoint revision. 1976 A State value is also provided in the registry to help Clients 1977 coordinate work on common BaseNames. 1979 6. Protocol Message Details 1981 6.1. Data Structures And Type Assignment 1983 6.1.1. Policy Structures 1984 +--------------+-----------------+----------------------------+ 1985 | Structure | Field | Type | 1986 +--------------+-----------------+----------------------------+ 1987 | ACTION | ACTION_ID | FPC-Identity (Section 4.4) | 1988 | | | | 1989 | ACTION | TYPE | [32, unsigned integer] | 1990 | | | | 1991 | ACTION | VALUE | Type specific | 1992 | | | | 1993 | DESCRIPTOR | DESCRIPTOR_ID | FPC-Identity (Section 4.4) | 1994 | | | | 1995 | DESCRIPTOR | TYPE | [32, unsigned integer] | 1996 | | | | 1997 | DESCRIPTOR | VALUE | Type specific | 1998 | | | | 1999 | POLICY | POLICY_ID | FPC-Identity (Section 4.4) | 2000 | | | | 2001 | POLICY | RULES | *[ RULE ] (See Table 4) | 2002 | | | | 2003 | POLICY-GROUP | POLICY_GROUP_ID | FPC-Identity (Section 4.4) | 2004 | | | | 2005 | POLICY-GROUP | POLICIES | *[ POLICY_ID ] | 2006 +--------------+-----------------+----------------------------+ 2008 Table 3: Action Fields 2010 Policies contain a list of Rules by their order value. Each Rule 2011 contains Descriptors with optional directionality and Actions with 2012 order values that specifies action execution ordering if the Rule has 2013 multiple actions. 2015 Rules consist of the following fields. 2017 +------------------+---------------+--------------------------------+ 2018 | Field | Type | Sub-Fields | 2019 +------------------+---------------+--------------------------------+ 2020 | ORDER | [16, INTEGER] | | 2021 | | | | 2022 | RULE_DESCRIPTORS | *[ | DIRECTION [2, unsigned bits] | 2023 | | DESCRIPTOR_ID | is an ENUMERATION (uplink, | 2024 | | DIRECTION ] | downlink or both). | 2025 | | | | 2026 | RULE_ACTIONS | *[ ACTION_ID | ACTION-ORDER [8, unsigned | 2027 | | ACTION-ORDER | integer] specifies action | 2028 | | ] | execution order. | 2029 +------------------+---------------+--------------------------------+ 2031 Table 4: Rule Fields 2033 6.1.2. Mobility Structures 2035 +----------+----------------------------+ 2036 | Field | Type | 2037 +----------+----------------------------+ 2038 | VPORT_ID | FPC-Identity (Section 4.4) | 2039 | | | 2040 | POLICIES | *[ POLICY_GROUP_ID ] | 2041 +----------+----------------------------+ 2043 Table 5: Vport Fields 2045 +-----------------------+--------------------------------------+ 2046 | Field | Type | 2047 +-----------------------+--------------------------------------+ 2048 | CONTEXT_ID | FPC-Identity (Section 4.4) | 2049 | | | 2050 | VPORTS | *[ VPORT_ID ] | 2051 | | | 2052 | DPN_GROUP_ID | FPC-Identity (Section 4.4) | 2053 | | | 2054 | DELEGATED IP PREFIXES | *[ IP_PREFIX ] | 2055 | | | 2056 | PARENT_CONTEXT_ID | FPC-Identity (Section 4.4) | 2057 | | | 2058 | UPLINK [NOTE 1] | MOB_FIELDS | 2059 | | | 2060 | DOWNLINK [NOTE 1] | MOB_FIELDS | 2061 | | | 2062 | DPNS [NOTE 2] | *[ DPN_ID DPN_DIRECTION MOB_FIELDS ] | 2063 | | | 2064 | MOB_FIELDS | All parameters from Table 7 | 2065 +-----------------------+--------------------------------------+ 2067 Table 6: Context Fields 2069 NOTE 1 - These fields are present when the Agent supports only a 2070 single DPN. 2072 NOTE 2 - This field is present when the Agent supports multiple DPNs. 2074 +---------------------------+---------------------+-----------------+ 2075 | Field | Type | Detail | 2076 +---------------------------+---------------------+-----------------+ 2077 | TUN_LOCAL_ADDRESS | IP Address | [NOTE 1] | 2078 | | | | 2079 | TUN_REMOTE_ADDRESS | IP Address | [NOTE 1] | 2080 | | | | 2081 | TUN_MTU | [32, unsigned | | 2082 | | integer] | | 2083 | | | | 2084 | TUN_PAYLOAD_TYPE | [2, bits] | Enumeration: pa | 2085 | | | yload_ipv4(0), | 2086 | | | payload_ipv6(1) | 2087 | | | or payload_dual | 2088 | | | (2). | 2089 | | | | 2090 | TUN_TYPE | [8, unsigned | Enumeration: | 2091 | | integer] | IP-in-IP(0), | 2092 | | | UDP(1), GRE(2) | 2093 | | | and GTP(3). | 2094 | | | | 2095 | TUN_IF | [16, unsigned | Input interface | 2096 | | integer] | index. | 2097 | | | | 2098 | MOBILITY_SPECIFIC_TUN_PAR | [ IETF_PMIP_MOB_PRO | [NOTE 1] | 2099 | AMS | FILE | | | 2100 | | 3GPP_MOB_PROFILE ] | | 2101 | | | | 2102 | NEXTHOP | [ IP Address | MAC | [NOTE 1] | 2103 | | Address | SPI | | | 2104 | | MPLS Label | SID | | | 2105 | | Interface Index ] | | 2106 | | (See Table 19). | | 2107 | | | | 2108 | QOS_PROFILE_PARAMS | [ 3GPP_QOS | | [NOTE 1] | 2109 | | PMIP_QOS ] | | 2110 | | | | 2111 | DPN_SPECIFIC_PARAMS | [ TUN_IF or Varies] | Specifies | 2112 | | | optional node | 2113 | | | specific | 2114 | | | parameters in | 2115 | | | need such as | 2116 | | | if-index, | 2117 | | | tunnel-if- | 2118 | | | number that | 2119 | | | must be unique | 2120 | | | in the DPN. | 2121 | | | | 2122 | VENDOR_SPECIFIC_PARAM | *[ Varies ] | [NOTE 1] | 2123 +---------------------------+---------------------+-----------------+ 2125 NOTE 1 - These parameters are extensible. The Types may be extended 2126 for Field value by future specifications or in the case of Vendor 2127 Specific Attributes by enterprises. 2129 Table 7: Context Downlink/Uplink Field Definitions 2131 6.1.3. Topology Structures 2133 +----------------+------------------------------------+ 2134 | Field | Type | 2135 +----------------+------------------------------------+ 2136 | DPN_ID | FPC-Identity. See Section 4.4 | 2137 | | | 2138 | DPN_NAME | [1024, OCTET STRING] | 2139 | | | 2140 | DPN_GROUPS | * [ FPC-Identity ] See Section 4.4 | 2141 | | | 2142 | NODE_REFERENCE | [1024, OCTET STRING] | 2143 +----------------+------------------------------------+ 2145 Table 8: DPN Fields 2147 +------------------+----------------------+ 2148 | Field | Type | 2149 +------------------+----------------------+ 2150 | DOMAIN_ID | [1024, OCTET STRING] | 2151 | | | 2152 | DOMAIN_NAME | [1024, OCTET STRING] | 2153 | | | 2154 | DOMAIN_TYPE | [1024, OCTET STRING] | 2155 | | | 2156 | DOMAIN_REFERENCE | [1024, OCTET STRING] | 2157 +------------------+----------------------+ 2159 Table 9: Domain Fields 2161 +------------------+------------------------------------------------+ 2162 | Field | Type | 2163 +------------------+------------------------------------------------+ 2164 | DPN_GROUP_ID | FPC-Identity. See Section 4.4 | 2165 | | | 2166 | DATA_PLANE_ROLE | [4, ENUMERATION (data-plane, such as access- | 2167 | | dpn, L2/L3 anchor-dpn.)] | 2168 | | | 2169 | ACCESS_TYPE | [4, ENUMERATION ()ethernet(802.3/11), 3gpp | 2170 | | cellular(S1,RAB)] | 2171 | | | 2172 | MOBILITY_PROFILE | [4, ENUMERATION (ietf-pmip, 3gpp, or new | 2173 | | profile)] | 2174 | | | 2175 | PEER_DPN_GROUPS | * [ DPN_GROUP_ID MOBILITY_PROFILE | 2176 | | REMOTE_ENDPOINT_ADDRESS LOCAL_ENDPOINT_ADDRESS | 2177 | | TUN_MTU DATA_PLANE_ROLE ] | 2178 +------------------+------------------------------------------------+ 2180 Table 10: DPN Groups Fields 2182 6.1.4. Monitors 2183 +------------------+----------------------+-------------------------+ 2184 | Field | Type | Description | 2185 +------------------+----------------------+-------------------------+ 2186 | MONITOR | MONITOR_ID TARGET | | 2187 | | [REPORT_CONFIG] | | 2188 | | | | 2189 | MONITOR_ID | FPC-Identity. See | | 2190 | | Section 4.4 | | 2191 | | | | 2192 | EVENT_TYPE_ID | [8, Event Type ID] | Event Type (unsigned | 2193 | | | integer). | 2194 | | | | 2195 | TARGET | OCTET STRING (See | | 2196 | | Section 4.3.3) | | 2197 | | | | 2198 | REPORT_CONFIG | [8, REPORT-TYPE] | | 2199 | | [TYPE_SPECIFIC_INFO] | | 2200 | | | | 2201 | PERIODIC_CONFIG | [32, period] | report interval (ms). | 2202 | | | | 2203 | THRESHOLD_CONFIG | [32, low] [32, hi] | thresholds (at least | 2204 | | | one value must be | 2205 | | | present) | 2206 | | | | 2207 | SCHEDULED_CONFIG | [32, time] | | 2208 | | | | 2209 | EVENTS_CONFIG | *[EVENT_TYPE_ID] | | 2210 +------------------+----------------------+-------------------------+ 2212 Table 11: Monitor Structures and Attributes 2214 TRIGGERS include but are not limited to the following values: 2216 o Events specified in the Event List of an EVENTS CONFIG 2218 o LOW_THRESHOLD_CROSSED 2220 o HIGH_THRESHOLD_CROSSED 2222 o PERIODIC_REPORT 2224 o SCHEDULED_REPORT 2226 o PROBED 2228 o DEREG_FINAL_VALUE 2230 6.2. Message Attributes 2232 6.2.1. Header 2234 Each operation contains a header with the following fields: 2236 +-------------+------------------------+----------------------------+ 2237 | Field | Type | Messages | 2238 +-------------+------------------------+----------------------------+ 2239 | CLIENT_ID | FPC-Identity (Section | All | 2240 | | 4.4) | | 2241 | | | | 2242 | DELAY | [32, unsigned integer] | All | 2243 | | | | 2244 | OP_ID | [64, unsigned integer] | All | 2245 | | | | 2246 | ADMIN_STATE | [8, admin state] | CONFIG, CONF_BUNDLE and | 2247 | | | REG_MONITOR | 2248 | | | | 2249 | OP_TYPE | [8, op type] | CONFIG and CONF_BUNDLE | 2250 +-------------+------------------------+----------------------------+ 2252 Table 12: Message Header Fields 2254 6.2.2. CONFIG and CONF_BUNDLE Attributes and Notifications 2255 +---------------+----------------------+----------------------------+ 2256 | Field | Type | Operation Types Create(C), | 2257 | | | Update(U), Query(Q) and | 2258 | | | Delete(D) | 2259 +---------------+----------------------+----------------------------+ 2260 | SESSION_STATE | [8, session state] | C,U | 2261 | | | | 2262 | COMMAND_SET | FPC Command Bitset. | C,U [NOTE 1] | 2263 | | See Section 5.1.1.4. | | 2264 | | | | 2265 | CLONES | *[ FPC-Identity FPC- | C,U [NOTE 1] | 2266 | | Identity ] (Section | | 2267 | | 4.4) | | 2268 | | | | 2269 | VPORTS | *[ VPORT ] | C,U | 2270 | | | | 2271 | CONTEXTS | *[ CONTEXT [ | C,U | 2272 | | COMMAND_SET [NOTE 1] | | 2273 | | ] ] | | 2274 | | | | 2275 | TARGETS | FPC-Identity | Q,D | 2276 | | (Section 4.4) | | 2277 | | *[DPN_ID] | | 2278 | | | | 2279 | POLICY_GROUPS | *[ POLICY-GROUP ] | C,U [NOTE 1] | 2280 | | | | 2281 | POLICIES | *[ POLICY ] | C,U [NOTE 1] | 2282 | | | | 2283 | DESCRIPTORS | *[ DESCRIPTOR ] | C,U [NOTE 1] | 2284 | | | | 2285 | ACTIONS | *[ ACTION ] | C,U [NOTE 1] | 2286 +---------------+----------------------+----------------------------+ 2288 NOTE 1 - Only present if the corresponding feature is supported by 2289 the Agent. 2291 Table 13: CONFIG and CONF_BUNDLE OP_BODY Fields 2293 +-------------------+--------------------+--------------------------+ 2294 | Field | Type | Operation Types | 2295 | | | Create(C), Update(U), | 2296 | | | Query(Q) and Delete(D) | 2297 +-------------------+--------------------+--------------------------+ 2298 | VPORTS | *[ VPORT ] | C,U [NOTE 2] | 2299 | | | | 2300 | CONTEXTS | *[ CONTEXT [ | C,U [NOTE 2] | 2301 | | COMMAND_SET [NOTE | | 2302 | | 1] ] ] | | 2303 | | | | 2304 | TARGETS | *[ FPC-Identity | Q,D [NOTE 2] | 2305 | | (Section 4.4) | | 2306 | | *[DPN_ID] ] | | 2307 | | | | 2308 | ERROR_TYPE_ID | [32, unsigned | All [NOTE 3] | 2309 | | integer] | | 2310 | | | | 2311 | ERROR_INFORMATION | [1024, octet | All [NOTE 3] | 2312 | | string] | | 2313 +-------------------+--------------------+--------------------------+ 2315 Table 14: Immediate Response RESPONSE_BODY Fields 2317 Notes: 2319 NOTE 1 - Only present if the corresponding feature is supported by 2320 the Agent. 2322 NOTE 2 - Present in OK and OK_NOTIFY_FOLLOWS for both CONFIG and 2323 CONF_BUNDLE. MAY also be present in an CONF_BUNDLE Error response 2324 (ERR) if one of the operations completed successfully. 2326 NOTE 3 - Present only for Error (ERR) responses. 2328 +-----------------+--------------------+----------------------------+ 2329 | Field | Type | Description | 2330 +-----------------+--------------------+----------------------------+ 2331 | AGENT_ID | FPC-Identity | | 2332 | | (Section 4.4) | | 2333 | | | | 2334 | NOTIFICATION_ID | [32, unsigned | A Notification Identifier | 2335 | | integer] | used to determine | 2336 | | | notification order. | 2337 | | | | 2338 | TIMESTAMP | [32, unsigned | The time that the | 2339 | | integer] | notification occurred. | 2340 | | | | 2341 | DATA | *[ OP_ID | | 2342 | | RESPONSE_BODY | | 2343 | | (Table 14) ] | | 2344 +-----------------+--------------------+----------------------------+ 2346 Table 15: CONFIG_RESULT_NOTIFY Asynchronous Notification Fields 2348 6.2.3. Monitors 2350 +-----------------+---------------------+---------------------------+ 2351 | Field | Type | Description | 2352 +-----------------+---------------------+---------------------------+ 2353 | NOTIFICATION_ID | [32, unsiged | | 2354 | | integer] | | 2355 | | | | 2356 | TRIGGER | [32, unsigned | | 2357 | | integer] | | 2358 | | | | 2359 | NOTIFY | NOTIFICATION_ID | Timestamp notes when the | 2360 | | MONITOR_ID TRIGGER | event occurred. | 2361 | | [32, timestamp] | Notification Data is | 2362 | | [NOTIFICATION_DATA] | TRIGGER and Monitor type | 2363 | | | specific. | 2364 +-----------------+---------------------+---------------------------+ 2366 Table 16: Monitor Notifications 2368 7. Derived and Subtyped Attributes 2370 This section notes derived attributes. 2372 +------------------+-------+---------------+------------------------+ 2373 | Field | Type | Type | Description | 2374 | | Value | | | 2375 +------------------+-------+---------------+------------------------+ 2376 | TO_PREFIX | 0 | [IP Address] | Aggregated or per-host | 2377 | | | [ Prefix Len | destination IP | 2378 | | | ] | address/prefix | 2379 | | | | descriptor. | 2380 | | | | | 2381 | FROM_PREFIX | 1 | [IP Address] | Aggregated or per-host | 2382 | | | [ Prefix Len | source IP | 2383 | | | ] | address/prefix | 2384 | | | | descriptor. | 2385 | | | | | 2386 | TRAFFIC_SELECTOR | 2 | Format per | Traffic Selector. | 2387 | | | specification | | 2388 | | | [RFC6088]. | | 2389 +------------------+-------+---------------+------------------------+ 2391 Table 17: Descriptor Subtypes 2393 +--------------+-------+---------------------+----------------------+ 2394 | Field | Type | Type | Description | 2395 | | Value | | | 2396 +--------------+-------+---------------------+----------------------+ 2397 | DROP | 0 | Empty | Drop the associated | 2398 | | | | packets. | 2399 | | | | | 2400 | REWRITE | 1 | [in_src_ip] | Rewrite IP Address | 2401 | | | [out_src_ip] | (NAT) or IP Address | 2402 | | | [in_dst_ip] | / Port (NAPT). | 2403 | | | [out_dst_ip] | | 2404 | | | [in_src_port] | | 2405 | | | [out_src_port] | | 2406 | | | [in_dst_port] | | 2407 | | | [out_dst_port] | | 2408 | | | | | 2409 | COPY_FORWARD | 2 | FPC-Identity. See | Copy all packets and | 2410 | | | Section 4.4. | forward them to the | 2411 | | | | provided identity. | 2412 | | | | The value of the | 2413 | | | | identity MUST be a | 2414 | | | | port or context. | 2415 +--------------+-------+---------------------+----------------------+ 2417 Table 18: Action Subtypes 2419 +-----------------+-------+-------------------+---------------------+ 2420 | Field | Type | Type | Description | 2421 | | Value | | | 2422 +-----------------+-------+-------------------+---------------------+ 2423 | IP_ADDR | 0 | IP Address | An IP Address. | 2424 | | | | | 2425 | MAC_ADDR | 1 | MAC Address | A MAC Address. | 2426 | | | | | 2427 | SERVICE_PATH_ID | 2 | [24, unsigned | Service Path | 2428 | | | integer] | Identifier (SPI) | 2429 | | | | | 2430 | MPLS_LABEL | 3 | [20, unsigned | MPLS Label | 2431 | | | integer] | | 2432 | | | | | 2433 | NSH | 4 | [SERVICE_PATH_ID] | Included NSH which | 2434 | | | [8, unsigned | is a SPI and | 2435 | | | integer] | Service Index (8 | 2436 | | | | bits). | 2437 | | | | | 2438 | INTERFACE_INDEX | 5 | [16, unsigned | Interface Index (an | 2439 | | | integer] | unsigned integer). | 2440 | | | | | 2441 | SEGMENT_ID | 5 | [128, unsigned | Segement | 2442 | | | integer] | Identifier. | 2443 +-----------------+-------+-------------------+---------------------+ 2445 Table 19: Next Hop Subtypes 2447 +----------+-------+------------------+-----------------------------+ 2448 | Field | Type | Type | Description | 2449 | | Value | | | 2450 +----------+-------+------------------+-----------------------------+ 2451 | QOS | 0 | [qos index type] | Refers to a single index | 2452 | | | [index] [DSCP] | and DSCP to write to the | 2453 | | | | packet. | 2454 | | | | | 2455 | GBR | 1 | [32, unsigned | Guaranteed bit rate. | 2456 | | | integer] | | 2457 | | | | | 2458 | MBR | 2 | [32, unsigned | Maximum bit rate. | 2459 | | | integer] | | 2460 | | | | | 2461 | PMIP_QOS | 3 | Varies by Type | A non-traffic selector PMIP | 2462 | | | | QoS Attribute per [RFC7222] | 2463 +----------+-------+------------------+-----------------------------+ 2465 Table 20: QoS Subtypes 2467 +----------+---------+----------------+-----------------------------+ 2468 | Field | Type | Type | Description | 2469 | | Value | | | 2470 +----------+---------+----------------+-----------------------------+ 2471 | IPIP_TUN | 0 | | IP in IP Configuration | 2472 | | | | | 2473 | UDP_TUN | 1 | [src_port] | UDP Tunnel - source and/or | 2474 | | | [dst_port] | destination port | 2475 | | | | | 2476 | GRE_TUN | 2 | [32, GRE Key] | GRE Tunnel. | 2477 +----------+---------+----------------+-----------------------------+ 2479 Table 21: Tunnel Subtypes 2481 The following COMMAND_SET values are supported for IETF_PMIP. 2483 o assign-ip - Assign the IP Address for the mobile session. 2485 o assign-dpn - Assign the Dataplane Node. 2487 o session - Assign values for the Session Level. 2489 o uplink - Command applies to uplink. 2491 o downlink - Command applies to downlink. 2493 7.1. 3GPP Specific Extenstions 2495 3GPP support is optional and detailed in this section. The following 2496 acronyms are used: 2498 APN-AMBR: Access Point Name Aggregate Maximum Bit Rate 2500 ARP: Allocation of Retention Priority 2502 EBI: EPS Bearer Identity 2504 GBR: Guaranteed Bit Rate 2506 GTP: GPRS (General Packet Radio Service) Tunneling Protocol 2508 IMSI: International Mobile Subscriber Identity 2510 MBR: Maximum Bit Rate 2512 QCI: QoS Class Identifier 2514 TEID: Tunnel Endpoint Identifier. 2516 TFT: Traffic Flow Template (TFT) 2518 UE-AMBR: User Equipment Aggregate Maximum Bit Rate 2520 NOTE: GTP Sequence Number (SEQ_NUMBER) is used in failover and 2521 handover. 2523 +-------------+-------+-------------+-------------------------------+ 2524 | Field | Type | Namespace / | Type | 2525 | | Value | Entity | | 2526 | | | Extended | | 2527 +-------------+-------+-------------+-------------------------------+ 2528 | GTPV1 | 3 | Tunnel | LOCAL_TEID REMOTE_TEID | 2529 | | | Subtypes | SEQ_NUMBER | 2530 | | | namespace. | | 2531 | | | | | 2532 | GTPV2 | 4 | Tunnel | LOCAL_TEID REMOTE_TEID | 2533 | | | Subtypes | SEQ_NUMBER | 2534 | | | namespace. | | 2535 | | | | | 2536 | LOCAL_TEID | N/A | N/A | [32, unisgned integer] | 2537 | | | | | 2538 | REMOTE_TEID | N/A | N/A | [32, unisgned integer] | 2539 | | | | | 2540 | SEQ_NUMBER | N/A | N/A | [32, unisgned integer] | 2541 | | | | | 2542 | TFT | 3 | Descriptors | Format per TS 24.008 Section | 2543 | | | Subtypes | 10.5.6.12. | 2544 | | | namespace. | | 2545 | | | | | 2546 | IMSI | N/A | Context | [64, unsigned integer] | 2547 | | | (new | | 2548 | | | attribute) | | 2549 | | | | | 2550 | EBI | N/A | Context | [4, unsigned integer] | 2551 | | | (new | | 2552 | | | attribute) | | 2553 | | | | | 2554 | 3GPP_QOS | 4 | QoS | [8, qci] [32, gbr] [32, mbr] | 2555 | | | Subtypes | [32, apn_ambr] [32, ue_ambr] | 2556 | | | namespace. | ARP | 2557 | | | | | 2558 | ARP | N/A | N/A | See Allocation-Retention- | 2559 | | | | Priority from [RFC7222] | 2560 +-------------+-------+-------------+-------------------------------+ 2562 Table 22: 3GPP Attributes and Structures 2564 The following COMMAND_SET values are supported for 3GPP. 2566 o assign-ip - Assign the IP Address for the mobile session. 2568 o assign-dpn - Assign the Dataplane Node. 2570 o assign-fteid-ip - Assign the Fully Qualified TEID (F-TEID) LOCAL 2571 IP address. 2573 o assign-fteid-teid - Assign the Fully Qualified TEID (F-TEID) LOCAL 2574 TEID. 2576 o session - Assign values for the Session Level. When this involves 2577 'assign-fteid-ip' and 'assign-fteid-teid' this implies the values 2578 are part of the default bearer. 2580 o uplink - Command applies to uplink. 2582 o downlink - Command applies to downlink. 2584 8. Implementation Status 2586 Two FPC Agent implementations have been made to date. The first was 2587 based upon Version 03 of the draft and followed Model 1. The second 2588 follows Version 04 of the document. Both implementations were 2589 OpenDaylight plug-ins developed in Java by Sprint. Version 03 was 2590 known as fpcagent and version 04's implementation is simply referred 2591 to as 'fpc'. 2593 fpcagent's intent was to provide a proof of concept for FPC Version 2594 03 Model 1 in January 2016 and research various errors, corrections 2595 and optimizations that the Agent could make when supporting multiple 2596 DPNs. 2598 As the code developed to support OpenFlow and a proprietary DPN from 2599 a 3rd party, several of the advantages of a multi-DPN Agent became 2600 obvious including the use of machine learning to reduce the number of 2601 Flows and Policy entities placed on the DPN. This work has driven 2602 new efforts in the DIME WG, namely Diameter Policy Groups 2603 [I-D.bertz-dime-policygroups]. 2605 A throughput performance of tens per second using various NetConf 2606 based solutions in OpenDaylight made fpcagent undesirable for call 2607 processing. The RPC implementation improved throughput by an order 2608 of magnitude but was not useful based upon FPC's Version 03 design 2609 using two information models. During this time the features of 2610 version 04 and its converged model became attractive and the fpcagent 2611 project was closed in August 2016. fpcagent will no longer be 2612 developed and will remain a proprietary implementation. 2614 The learnings of fpcagent has influenced the second project, fpc. 2615 Fpc is also an OpenDaylight project but is being prepared for open 2616 source release as the Opendaylight FpcAgent plugin 2617 (https://wiki.opendaylight.org/view/Project_Proposals:FpcAgent). 2618 This project is scoped to be a fully compliant FPC Agent that 2619 supports multiple DPNs including those that communicate via OpenFlow. 2620 The following features present in this draft and others developed by 2621 the FPC development team have already lead to an order of magnitude 2622 improvement. 2624 Migration of non-realtime provisioning of entities such as 2625 topology and policy allowed the implementation to focus only on 2626 the rpc. 2628 Using only 5 messages and 2 notifications has also reduced 2629 implementation time. 2631 Command Sets, an optional feature in this specification, have 2632 eliminated 80% of the time spent determining what needs to be 2633 done with a Context during a Create or Update operation. 2635 Op Reference is an optional feature modeled after video delivery. 2636 It has reduced unnecessary cache lookups. It also has the 2637 additional benefit of allowing an Agent to become cacheless and 2638 effectively act as a FPC protocol adapter remotely with multi-DPN 2639 support or colocated on the DPN in a single-DPN support model. 2641 Multi-tenant support allows for Cache searches to be partitioned 2642 for clustering and performance improvements. This has not been 2643 capitalized upon by the current implementation but is part of the 2644 development roadmap. 2646 Use of Contexts to pre-provision policy has also eliminated any 2647 processing of Ports for DPNs which permitted the code for 2648 CONFIGURE and CONF_BUNDLE to be implemented as a simple nested 2649 FOR loops (see below). 2651 Current performance results without code optimizations or tuning 2652 allow 2-5K FPC Contexts processed per second on a 2013 Mac laptop. 2653 This results in 2x the number of transactions on the southbound 2654 interface to a proprietary DPN API on the same machine. 2656 fpc currently supports the following: 2658 1 proprietary DPN API 2659 Policy and Topology as defined in this 2660 specification using OpenDaylight North Bound 2661 Interfaces such as NetConf and RestConf 2663 CONFIG and CONF_BUNDLE (all operations) 2665 DPN assignment, Tunnel allocations and IPv4 2666 address assignment by the Agent or Client. 2668 Immediate Response is always an 2669 OK_NOTIFY_FOLLOWS. 2671 assignment system (receives rpc call): 2672 perform basic operation integrity check 2673 if CONFIG then 2674 goto assignments 2675 if assignments was ok then 2676 send request to activation system 2677 respond back to client with assignment data 2678 else 2679 send back error 2680 end if 2681 else if CONF_BUNDLE then 2682 for each operation in bundles 2683 goto assignments 2684 if assignments was ok then 2685 hold onto data 2686 else 2687 return error with the assignments that occurred in 2688 prior operations (best effort) 2689 end if 2690 end for 2691 send bundles to activation systems 2692 end if 2694 assignments: 2695 assign DPN, IPv4 Address and/or tunnel info as required 2696 if an error occurs undo all assignments in this operation 2697 return result 2699 activation system: 2700 build cache according to op-ref and operation type 2701 for each operation 2702 for each Context 2703 for each DPN / direction in Context 2704 perform actions on DPN according to Command Set 2705 end for 2706 end for 2707 end for 2708 commit changes to in memory cache 2709 log transaction for tracking and notification 2710 (CONFIG_RESULT_NOTIFY) 2712 Figure 27: fpc pseudo code 2714 For further information please contact Lyle Bertz who is also a co- 2715 author of this document. 2717 NOTE: Tenant support requires binding a Client ID to a Tenant ID (it 2718 is a one to many relation) but that is outside of the scope of this 2719 specification. Otherwise, the specification is complete in terms of 2720 providing sufficient information to implement an Agent. 2722 9. Security Considerations 2724 Detailed protocol implementations for DMM Forwarding Policy 2725 Configuration must ensure integrity of the information exchanged 2726 between an FPC Client and an FPC Agent. Required Security 2727 Associations may be derived from co-located functions, which utilize 2728 the FPC Client and FPC Agent respectively. 2730 The YANG modules defined in this memo is designed to be accessed via 2731 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 2732 secure transport layer and the mandatory-to-implement secure 2733 transport is SSH [RFC6242]. 2735 The information model defined in the memo is designed to be access by 2736 protocols specified in extensions to this document or, if using the 2737 YANG modules, as described above. 2739 There are a number of data nodes defined which are 2740 writable/creatable/deletable. These data nodes may be considered 2741 sensitive or vulnerable in some network environments. Write 2742 operations (e.g., a NETCONF edit-config) to these data nodes without 2743 proper protection can have a negative effect on network operations. 2744 These are the subtrees and data nodes and their sensitivity/ 2745 vulnerability: 2747 Nodes under the Policy tree provide generic policy enforcement and 2748 traffic classification. They can be used to block or permit 2749 traffic. If this portion of the model was to be compromised it 2750 may be used to block, identify or permit traffic that was not 2751 intended by the Tenant or FPC CLient. 2753 Nodes under the Topology tree provide defintion of the Tenant's 2754 forwarding topology. Any compromise of this information will 2755 provide topology information that could be used for subsequent 2756 attack vectors. Removal of topology can limit services. 2758 Nodes under the Mobility Tree are runtime only and manipulated by 2759 remote procedure calls. The unwanted deletion or removal of such 2760 information would deny users service or provide services to 2761 unauthorized parties. 2763 Some of the readable data nodes defined may be considered sensitive 2764 or vulnerable in some network environments. It is thus important to 2765 control read access (e.g., via get, get-config, or notification) to 2766 these data nodes. These are the subtrees and data nodes and their 2767 sensitivity/vulnerability: 2769 IP address assignments in the Context along with their associated 2770 tunnel configurations/identifiers (from the FPC base module) 2772 Internaional Mobile Subscriber Identity (IMSI) and bearer 2773 identifiers in the Context when using the optional 3GPP module 2775 Some of the RPC operations defined may be considered sensitive or 2776 vulnerable in some network environments. It is thus important to 2777 control access to these operations. These are the operations and 2778 their sensitivity/vulnerability: 2780 CONFIG and CONF_BUNDLE send Context information which can include 2781 information of a sensitive or vulnerable nature in some network 2782 environments as described above. 2784 Monitor related RPC operations do not specicially provide 2785 sensitive or vulnerable informaiton but care must be taken by 2786 users to avoid identifier values that expose sensitive or 2787 vulnerable information. 2789 Notications MUST be treated with same level of protection and 2790 scrutiny as the operations they correspond to. For example, a 2791 CONFIG_RESULT_NOTIFY notification provides the same information 2792 that is sent as part of the input and output of the CONFIG and 2793 CONF_BUNDLE RPC operations. 2795 General usage of FPC MUST consider the following: 2797 FPC Naming Section 4.4 permits arbirtrary string values but a 2798 users MUST avoid placing sensitive or vulnerable information in 2799 those values. 2801 Policies that are very narrow and permit the identification of 2802 specific traffic, e.g. that of a single user, SHOULD be avoided. 2804 10. IANA Considerations 2806 This document registers six URIs in the "IETF XML Registry" 2807 [RFC3688]. Following the format in RFC 3688, the following 2808 registrations have been made. 2810 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc 2811 Registrant Contact: The DMM WG of the IETF. 2812 XML: N/A, the requested URI is an XML namespace. 2814 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-threegpp 2815 Registrant Contact: The DMM WG of the IETF. 2816 XML: N/A, the requested URI is an XML namespace. 2818 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos 2819 Registrant Contact: The DMM WG of the IETF. 2820 XML: N/A, the requested URI is an XML namespace. 2822 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-traffic-selector-types 2823 Registrant Contact: The DMM WG of the IETF. 2824 XML: N/A, the requested URI is an XML namespace. 2826 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-policyext 2827 Registrant Contact: The DMM WG of the IETF. 2828 XML: N/A, the requested URI is an XML namespace. 2830 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-pmip 2831 Registrant Contact: The DMM WG of the IETF. 2832 XML: N/A, the requested URI is an XML namespace. 2834 This document registers the following YANG modules in the "YANG 2835 Module Names" registry [RFC6020]. 2837 name: ietf-dmm-fpc 2838 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc 2839 prefix: fpc 2840 reference: TBD1 2842 name: ietf-dmm-threegpp 2843 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-threegpp 2844 prefix: threegpp 2845 reference: TBD1 2847 name: ietf-dmm-pmip-qos 2848 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos 2849 prefix: qos-pmip 2850 reference: TBD1 2852 name: ietf-dmm-traffic-selector-types 2853 namespace: urn:ietf:params:xml:ns:yang: 2854 ietf-dmm-traffic-selector-types 2855 prefix: traffic-selectors 2856 reference: TBD1 2858 name: ietf-dmm-traffic-selector-types 2859 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-policyext 2860 prefix: fpcpolicyext 2861 reference: TBD1 2862 name: ietf-dmm-traffic-selector-types 2863 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-pmip 2864 prefix: fpc-pmip 2865 reference: TBD1 2867 The document registers the following YANG submodules in the "YANG 2868 Module Names" registry [RFC6020]. 2870 name: ietf-dmm-fpc-base 2871 parent: ietf-dmm-fpc 2872 reference: TBD1 2874 11. Work Team Participants 2876 Participants in the FPSM work team discussion include Satoru 2877 Matsushima, Danny Moses, Sri Gundavelli, Marco Liebsch, Pierrick 2878 Seite, Alper Yegin, Carlos Bernardos, Charles Perkins and Fred 2879 Templin. 2881 12. References 2883 12.1. Normative References 2885 [I-D.ietf-6man-segment-routing-header] 2886 Previdi, S., Filsfils, C., Field, B., Leung, I., Linkova, 2887 J., Aries, E., Kosugi, T., Vyncke, E., and D. Lebrun, 2888 "IPv6 Segment Routing Header (SRH)", draft-ietf-6man- 2889 segment-routing-header-05 (work in progress), February 2890 2017. 2892 [I-D.ietf-sfc-nsh] 2893 Quinn, P. and U. Elzur, "Network Service Header", draft- 2894 ietf-sfc-nsh-12 (work in progress), February 2017. 2896 [I-D.ietf-spring-segment-routing-mpls] 2897 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 2898 Litkowski, S., Horneffer, M., Shakir, R., 2899 jefftant@gmail.com, j., and E. Crabbe, "Segment Routing 2900 with MPLS data plane", draft-ietf-spring-segment-routing- 2901 mpls-07 (work in progress), February 2017. 2903 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2904 Requirement Levels", BCP 14, RFC 2119, 2905 DOI 10.17487/RFC2119, March 1997, 2906 . 2908 [RFC6088] Tsirtsis, G., Giarreta, G., Soliman, H., and N. Montavont, 2909 "Traffic Selectors for Flow Bindings", RFC 6088, 2910 DOI 10.17487/RFC6088, January 2011, 2911 . 2913 [RFC6089] Tsirtsis, G., Soliman, H., Montavont, N., Giaretta, G., 2914 and K. Kuladinithi, "Flow Bindings in Mobile IPv6 and 2915 Network Mobility (NEMO) Basic Support", RFC 6089, 2916 DOI 10.17487/RFC6089, January 2011, 2917 . 2919 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2920 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2921 . 2923 [RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J. 2924 Korhonen, "Requirements for Distributed Mobility 2925 Management", RFC 7333, DOI 10.17487/RFC7333, August 2014, 2926 . 2928 12.2. Informative References 2930 [I-D.bertz-dime-policygroups] 2931 Bertz, L. and M. Bales, "Diameter Policy Groups and Sets", 2932 draft-bertz-dime-policygroups-03 (work in progress), March 2933 2017. 2935 [I-D.ietf-dmm-deployment-models] 2936 Gundavelli, S. and S. Jeon, "DMM Deployment Models and 2937 Architectural Considerations", draft-ietf-dmm-deployment- 2938 models-01 (work in progress), February 2017. 2940 [I-D.ietf-netconf-restconf] 2941 Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2942 Protocol", draft-ietf-netconf-restconf-18 (work in 2943 progress), October 2016. 2945 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2946 DOI 10.17487/RFC3688, January 2004, 2947 . 2949 [RFC5213] Gundavelli, S., Ed., Leung, K., Devarapalli, V., 2950 Chowdhury, K., and B. Patil, "Proxy Mobile IPv6", 2951 RFC 5213, DOI 10.17487/RFC5213, August 2008, 2952 . 2954 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2955 and A. Bierman, Ed., "Network Configuration Protocol 2956 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2957 . 2959 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2960 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2961 . 2963 [RFC7222] Liebsch, M., Seite, P., Yokota, H., Korhonen, J., and S. 2964 Gundavelli, "Quality-of-Service Option for Proxy Mobile 2965 IPv6", RFC 7222, DOI 10.17487/RFC7222, May 2014, 2966 . 2968 Appendix A. YANG Data Model for the FPC protocol 2970 These modules define YANG definitions. Seven modules are defined: 2972 o ietf-dmm-fpc (fpc) - Defines the base model and messages for FPC 2974 o ietf-dmm-fpc-base An FPC submodule that defines the information 2975 model that is specified in this document 2977 o ietf-pmip-qos (pmip-qos) - Defines proxy mobile IPv6 QoS 2978 parameters per RFC 7222 2980 o ietf-traffic-selectors-types (traffic-selectors) - Defines Traffic 2981 Selectors per RFC 6088 2983 o ietf-dmm-threegpp - Defines the base structures for 3GPP based IP 2984 mobility and augments fpcagent to support these parameters. 2986 o ietf-dmm-fpc-pmip - Augments fpcp-base to include PMIP Traffic 2987 Selectors as a Traffic Descriptor subtype and pmip-qos QoS 2988 parameters, where applicable, as properties. 2990 o ietf-dmm-fpc-policyext - defines basic policy extensions, e.g. 2991 Actions and Descriptors, to fpcbase and as defined in this 2992 document. 2994 A.1. FPC Agent YANG Model 2996 This module defines the information model and protocol elements 2997 specified in this document. 2999 This module references [RFC6991] and the fpc-base module defined in 3000 this document. 3002 file "ietf-dmm-fpc@2017-03-08.yang" 3003 module ietf-dmm-fpc { 3004 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc"; 3005 prefix fpc; 3007 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 3009 include ietf-dmm-fpc-base; 3011 organization "IETF Distributed Mobility Management (DMM) 3012 Working Group"; 3014 contact 3015 "WG Web: 3016 WG List: 3018 WG Chair: Dapeng Liu 3019 3021 WG Chair: Jouni Korhonen 3022 3024 Editor: Satoru Matsushima 3025 3027 Editor: Lyle Bertz 3028 "; 3030 description 3031 "This module contains YANG definition for 3032 Forwarding Policy Configuration Protocol (FPCP). 3034 Copyright (c) 2016 IETF Trust and the persons identified as the 3035 document authors. All rights reserved. 3037 This document is subject to BCP 78 and the IETF Trust's Legal 3038 Provisions Relating to IETF Documents 3039 (http://trustee.ietf.org/license-info) in effect on the date of 3040 publication of this document. Please review these documents 3041 carefully, as they describe your rights and restrictions with 3042 respect to this document. Code Components extracted from this 3043 document must include Simplified BSD License text as described 3044 in Section 4.e of the Trust Legal Provisions and are provided 3045 without warranty as described in the Simplified BSD License."; 3047 revision 2017-03-08 { 3048 description "Version 06 updates."; 3049 reference "draft-ietf-dmm-fpc-cpdp-06"; 3051 } 3053 revision 2016-08-03 { 3054 description "Initial Revision."; 3055 reference "draft-ietf-dmm-fpc-cpdp-05"; 3056 } 3057 feature fpc-cloning { 3058 description "An ability to support cloning in the RPC."; 3059 } 3060 feature fpc-basename-registry { 3061 description "Ability to track Base Names already provisioned 3062 on the Agent"; 3063 } 3064 feature fpc-bundles { 3065 description "Ability for Client to send multiple bundles of 3066 actions to an Agent"; 3067 } 3068 feature fpc-client-binding { 3069 description "Allows a FPC Client to bind a DPN to an Topology 3070 Object"; 3071 } 3072 feature fpc-auto-binding { 3073 description "Allows a FPC Agent to advertise Topology Objects 3074 that could be DPNs"; 3075 } 3076 feature instruction-bitset { 3077 description "Allows the expression of instructions (bit sets) 3078 over FPC."; 3079 } 3080 feature operation-ref-scope { 3081 description "Provides the scope of refeneces in an operation. 3082 Used to optmize the Agent processing."; 3083 } 3084 feature policy-rpc-provisioning { 3085 description "Enables the ability to send policy elements 3086 (Policy Groups, Policies, Descriptors and Actions) to be sent 3087 in CONF or CONF_BUNDLE operations."; 3088 } 3090 typedef agent-identifier { 3091 type fpc:fpc-identity; 3092 description "Agent Identifier"; 3093 } 3095 typedef client-identifier { 3096 type fpc:fpc-identity; 3097 description "Client Identifier"; 3098 } 3099 grouping basename-info { 3100 leaf basename { 3101 if-feature fpc:fpc-basename-registry; 3102 type fpc:fpc-identity; 3103 description "Rules Basename"; 3104 } 3105 leaf base-state { 3106 if-feature fpc:fpc-basename-registry; 3107 type string; 3108 description "Current State"; 3109 } 3110 leaf base-checkpoint { 3111 if-feature fpc:fpc-basename-registry; 3112 type string; 3113 description "Checkpoint"; 3114 } 3115 description "Basename Information"; 3116 } 3118 // Top Level Structures 3119 container tenants { 3120 list tenant { 3121 key "tenant-id"; 3122 leaf tenant-id { 3123 type fpc:fpc-identity; 3124 description "Tenant ID"; 3125 } 3127 container fpc-policy { 3128 list policy-groups { 3129 key "policy-group-id"; 3130 uses fpc:fpc-policy-group; 3131 description "Policy Groups"; 3132 } 3133 list policies { 3134 key "policy-id"; 3135 uses fpc:fpc-policy; 3136 description "Policies"; 3137 } 3138 list descriptors { 3139 key descriptor-id; 3140 uses fpc:fpc-descriptor; 3141 description "Descriptors"; 3142 } 3143 list actions { 3144 key action-id; 3145 uses fpc:fpc-action; 3146 description "Actions"; 3148 } 3149 description "Policy"; 3150 } 3152 container fpc-mobility { 3153 config false; 3154 list contexts { 3155 key context-id; 3156 uses fpc:fpc-context; 3157 description "Contexts"; 3158 } 3159 list vports { 3160 key vport-id; 3161 uses fpc:fpc-vport; 3162 description "Ports"; 3163 } 3164 list monitors { 3165 uses fpc:monitor-config; 3166 description "Monitors"; 3167 } 3168 description "Mobility"; 3169 } 3170 container fpc-topology { 3171 // Basic Agent Topology Structures 3172 list domains { 3173 key domain-id; 3174 uses fpc:fpc-domain; 3175 uses fpc:basename-info; 3176 description "Domains"; 3177 } 3179 leaf dpn-id { 3180 if-feature fpc:fpc-basic-agent; 3181 type fpc:fpc-dpn-id; 3182 description "DPN ID"; 3183 } 3184 leaf-list control-protocols { 3185 if-feature fpc:fpc-basic-agent; 3186 type identityref { 3187 base "fpc:fpc-dpn-control-protocol"; 3188 } 3189 description "Control Protocols"; 3190 } 3192 list dpn-groups { 3193 if-feature fpc:fpc-multi-dpn; 3194 key dpn-group-id; 3195 uses fpc:fpc-dpn-group; 3196 list domains { 3197 key domain-id; 3198 uses fpc:fpc-domain; 3199 uses fpc:basename-info; 3200 description "Domains"; 3201 } 3202 description "DPN Groups"; 3203 } 3204 list dpns { 3205 if-feature fpc:fpc-multi-dpn; 3206 key dpn-id; 3207 uses fpc:fpc-dpn; 3208 description "DPNs"; 3209 } 3210 description "Topology"; 3211 } 3212 description "Tenant"; 3213 } 3214 description "Tenant List"; 3215 } 3217 container fpc-agent-info { 3218 // General Agent Structures 3219 leaf-list supported-features { 3220 type string; 3221 description "Agent Features"; 3222 } 3224 // Common Agent Info 3225 list supported-events { 3226 key event; 3227 leaf event { 3228 type identityref { 3229 base "fpc:event-type"; 3230 } 3231 description "Event Types"; 3232 } 3233 leaf event-id { 3234 type fpc:event-type-id; 3235 description "Event ID"; 3236 } 3237 description "Supported Events"; 3238 } 3240 list supported-error-types { 3241 key error-type; 3242 leaf error-type { 3243 type identityref { 3244 base "fpc:error-type"; 3245 } 3246 description "Error Type"; 3247 } 3248 leaf error-type-id { 3249 type fpc:error-type-id; 3250 description "Error Type ID"; 3251 } 3252 description "Supported Error Types"; 3253 } 3254 description "General Agent Information"; 3255 } 3257 // Multi-DPN Agent Structures 3258 grouping fpc-dpn-group { 3259 leaf dpn-group-id { 3260 type fpc:fpc-dpn-group-id; 3261 description "DPN Group ID"; 3262 } 3263 leaf data-plane-role { 3264 type identityref { 3265 base "fpc:fpc-data-plane-role"; 3266 } 3267 description "Dataplane Role"; 3268 } 3269 leaf access-type { 3270 type identityref { 3271 base "fpc:fpc-access-type"; 3272 } 3273 description "Access Type"; 3274 } 3275 leaf mobility-profile { 3276 type identityref { 3277 base "fpc:fpc-mobility-profile-type"; 3278 } 3279 description "Mobility Profile"; 3280 } 3281 list dpn-group-peers { 3282 key "remote-dpn-group-id"; 3283 uses fpc:fpc-dpn-peer-group; 3284 description "Peer DPN Groups"; 3285 } 3286 description "FPC DPN Group"; 3287 } 3289 // RPC 3290 // RPC Specific Structures 3291 //Input Structures 3292 typedef admin-status { 3293 type enumeration { 3294 enum enabled { 3295 value 0; 3296 description "enabled"; 3297 } 3298 enum disabled { 3299 value 1; 3300 description "disabled"; 3301 } 3302 enum virtual { 3303 value 2; 3304 description "virtual"; 3305 } 3306 } 3307 description "Adminstrative Status"; 3308 } 3310 typedef session-status { 3311 type enumeration { 3312 enum complete { 3313 value 0; 3314 description "complete"; 3315 } 3316 enum incomplete { 3317 value 1; 3318 description "incomplete"; 3319 } 3320 enum outdated { 3321 value 2; 3322 description "outdated"; 3323 } 3324 } 3325 description "Session Status"; 3326 } 3328 typedef op-delay { 3329 type uint32; 3330 description "Operation Delay (ms)"; 3331 } 3333 typedef op-identifier { 3334 type uint64; 3335 description "Operation Identifier"; 3336 } 3337 typedef ref-scope { 3338 type enumeration { 3339 enum none { 3340 value 0; 3341 description "no references"; 3342 } 3343 enum op { 3344 value 1; 3345 description "op - All references are contained in the 3346 operation body (intra-op)"; 3347 } 3348 enum bundle { 3349 value 2; 3350 description "bundle - All references in exist in bundle 3351 (inter-operation/intra-bundle). 3352 NOTE - If this value comes in CONFIG call it is 3353 equivalent to 'op'."; 3354 } 3355 enum storage { 3356 value 3; 3357 description "storage - One or more references exist outside 3358 of the operation and bundle. A lookup to a cache / 3359 storage is required."; 3360 } 3361 enum unknown { 3362 value 4; 3363 description " unknown - the location of the references are 3364 unknown. This is treated as a 'storage' type."; 3365 } 3366 } 3367 description "Search scope for references in the operation."; 3368 } 3370 grouping instructions { 3371 container instructions { 3372 if-feature instruction-bitset; 3373 choice instr-type { 3374 description "Instruction Value Choice"; 3375 } 3376 description "Instructions"; 3377 } 3378 description "Instructions Value"; 3379 } 3381 grouping op-header { 3382 leaf client-id { 3383 type fpc:client-identifier; 3384 description "Client ID"; 3386 } 3387 leaf delay { 3388 type op-delay; 3389 description "Delay"; 3390 } 3391 leaf session-state { 3392 type session-status; 3393 description "Session State"; 3394 } 3395 leaf admin-state { 3396 type admin-status; 3397 description "Admin State"; 3398 } 3399 leaf op-type { 3400 type enumeration { 3401 enum create { 3402 value 0; 3403 description "create"; 3404 } 3405 enum update { 3406 value 1; 3407 description "update"; 3408 } 3409 enum query { 3410 value 2; 3411 description "query"; 3412 } 3413 enum delete { 3414 value 3; 3415 description "delete"; 3416 } 3417 } 3418 description "Type"; 3419 } 3420 leaf op-ref-scope { 3421 if-feature operation-ref-scope; 3422 type fpc:ref-scope; 3423 description "Reference Scope"; 3424 } 3425 uses fpc:instructions; 3426 description "Operation Header"; 3427 } 3429 grouping clone-ref { 3430 leaf entity { 3431 type fpc:fpc-identity; 3432 description "Clone ID"; 3433 } 3434 leaf source { 3435 type fpc:fpc-identity; 3436 description "Source"; 3437 } 3438 description "Clone Reference"; 3439 } 3441 identity command-set { 3442 description "protocol specific commands"; 3443 } 3445 grouping context-operation { 3446 uses fpc:fpc-context; 3447 uses fpc:instructions; 3448 description "Context Operation"; 3449 } 3451 // Output Structure 3452 grouping payload { 3453 list ports { 3454 uses fpc:fpc-vport; 3455 description "Ports"; 3456 } 3457 list contexts { 3458 uses fpc:context-operation; 3459 description "Contexts"; 3460 } 3461 list policy-groups { 3462 if-feature fpc:policy-rpc-provisioning; 3463 key "policy-group-id"; 3464 uses fpc:fpc-policy-group; 3465 description "Policy Groups"; 3466 } 3467 list policies { 3468 if-feature fpc:policy-rpc-provisioning; 3469 key "policy-id"; 3470 uses fpc:fpc-policy; 3471 description "Policies"; 3472 } 3473 list descriptors { 3474 if-feature fpc:policy-rpc-provisioning; 3475 key descriptor-id; 3476 uses fpc:fpc-descriptor; 3477 description "Descriptors"; 3478 } 3479 list actions { 3480 if-feature fpc:policy-rpc-provisioning; 3481 key action-id; 3482 uses fpc:fpc-action; 3483 description "Actions"; 3484 } 3485 description "Payload"; 3486 } 3488 grouping op-input { 3489 uses fpc:op-header; 3490 leaf op-id { 3491 type op-identifier; 3492 description "Operation ID"; 3493 } 3494 choice op_body { 3495 case create_or_update { 3496 list clones { 3497 if-feature fpc-cloning; 3498 key entity; 3499 uses fpc:clone-ref; 3500 description "Clones"; 3501 } 3502 uses fpc:payload; 3503 description "Create/Update input"; 3504 } 3505 case delete_or_query { 3506 uses fpc:targets-value; 3507 description "Delete/Query input"; 3508 } 3509 description "Opeartion Input value"; 3510 } 3511 description "Operation Input"; 3512 } 3514 typedef result { 3515 type enumeration { 3516 enum ok { 3517 value 0; 3518 description "OK"; 3519 } 3520 enum err { 3521 value 1; 3522 description "Error"; 3523 } 3524 enum ok-notify-follows { 3525 value 2; 3526 description "OK with NOTIFY following"; 3527 } 3528 } 3529 description "Result Status"; 3531 } 3533 identity error-type { 3534 description "Base Error Type"; 3535 } 3536 identity name-already-exists { 3537 description "Notification that an entity of the same name 3538 already exists"; 3539 } 3541 typedef error-type-id { 3542 type uint32; 3543 description "Integer form of the Error Type"; 3544 } 3546 grouping op-status-value { 3547 leaf op-status { 3548 type enumeration { 3549 enum ok { 3550 value 0; 3551 description "OK"; 3552 } 3553 enum err { 3554 value 1; 3555 description "Error"; 3556 } 3557 } 3558 description "Operation Status"; 3559 } 3560 description "Operation Status Value"; 3561 } 3563 grouping error-info { 3564 leaf error-type-id { 3565 type fpc:error-type-id; 3566 description "Error ID"; 3567 } 3568 leaf error-info { 3569 type string { 3570 length "1..1024"; 3571 } 3572 description "Error Detail"; 3573 } 3574 description "Error Information"; 3575 } 3577 grouping result-body { 3578 leaf op-id { 3579 type op-identifier; 3580 description "Operation Identifier"; 3581 } 3582 choice result-type { 3583 case err { 3584 uses fpc:error-info; 3585 description "Error Information"; 3586 } 3587 case create-or-update-success { 3588 uses fpc:payload; 3589 description "Create/Update Success"; 3590 } 3591 case delete_or_query-success { 3592 uses fpc:targets-value; 3593 description "Delete/Query Success"; 3594 } 3595 case empty-case { 3596 description "Empty Case"; 3597 } 3598 description "Result Value"; 3599 } 3600 description "Result Body"; 3601 } 3603 // Common RPCs 3604 rpc configure { 3605 description "CONF message"; 3606 input { 3607 uses fpc:op-input; 3608 } 3609 output { 3610 leaf result { 3611 type result; 3612 description "Result"; 3613 } 3614 uses fpc:result-body; 3615 } 3616 } 3618 rpc configure-bundles { 3619 if-feature fpc:fpc-bundles; 3620 description "CONF_BUNDLES message"; 3621 input { 3622 leaf highest-op-ref-scope { 3623 if-feature operation-ref-scope; 3624 type fpc:ref-scope; 3625 description "Highest Op-Ref used in the input"; 3626 } 3627 list bundles { 3628 key op-id; 3629 uses fpc:op-input; 3630 description "List of operations"; 3631 } 3632 } 3633 output { 3634 list bundles { 3635 key op-id; 3636 uses fpc:result-body; 3637 description "Operation Identifier"; 3638 } 3639 } 3640 } 3642 // Notification Messages & Structures 3643 typedef notification-id { 3644 type uint32; 3645 description "Notification Identifier"; 3646 } 3648 grouping notification-header { 3649 leaf notification-id { 3650 type fpc:notification-id; 3651 description "Notification ID"; 3652 } 3653 leaf timestamp { 3654 type uint32; 3655 description "timestamp"; 3656 } 3657 description "Notification Header"; 3658 } 3660 notification config-result-notification { 3661 uses fpc:notification-header; 3662 choice value { 3663 case config-result { 3664 uses fpc:op-status-value; 3665 uses fpc:result-body; 3666 description "CONF Result"; 3667 } 3668 case config-bundle-result { 3669 list bundles { 3670 uses fpc:op-status-value; 3671 uses fpc:result-body; 3672 description "Operation Results"; 3673 } 3674 description "CONF_BUNDLES Result"; 3676 } 3677 description "Config Result value"; 3678 } 3679 description "CONF/CONF_BUNDLES Async Result"; 3680 } 3682 rpc event_register { 3683 description "Used to register monitoring of parameters/events"; 3684 input { 3685 uses fpc:monitor-config; 3686 } 3687 output { 3688 leaf monitor-result { 3689 type fpc:result; 3690 description "Result"; 3691 } 3692 uses fpc:error-info; 3693 } 3694 } 3696 rpc event_deregister { 3697 description "Used to de-register monitoring of 3698 parameters/events"; 3699 input { 3700 list monitors { 3701 uses fpc:monitor-id; 3702 description "Monitor ID"; 3703 } 3704 } 3705 output { 3706 leaf monitor-result { 3707 type fpc:result; 3708 description "Result"; 3709 } 3710 uses fpc:error-info; 3711 } 3713 } 3715 rpc probe { 3716 description "Probe the status of a registered monitor"; 3717 input { 3718 uses fpc:targets-value; 3719 } 3720 output { 3721 leaf monitor-result { 3722 type fpc:result; 3723 description "Result"; 3725 } 3726 uses fpc:error-info; 3727 } 3728 } 3730 notification notify { 3731 uses fpc:notification-header; 3732 choice value { 3733 case dpn-candidate-available { 3734 if-feature fpc:fpc-auto-binding; 3735 leaf node-id { 3736 type inet:uri; 3737 description "Topology URI"; 3738 } 3739 leaf-list access-types { 3740 type identityref { 3741 base "fpc:fpc-access-type"; 3742 } 3743 description "Access Types"; 3744 } 3745 leaf-list mobility-profiles { 3746 type identityref { 3747 base "fpc:fpc-mobility-profile-type"; 3748 } 3749 description "Mobility Profiles"; 3750 } 3751 leaf-list forwarding-plane-roles { 3752 type identityref { 3753 base "fpc:fpc-data-plane-role"; 3754 } 3755 description "Forwarding Plane Role"; 3756 } 3757 description "DPN Candidate Availability"; 3758 } 3759 case monitor-notification { 3760 choice monitor-notification-value { 3761 case monitoring-suspension { 3762 leaf monitoring-suspended { 3763 type empty; 3764 description "Indicates that monitoring has 3765 uspended"; 3766 } 3767 leaf suspension-note { 3768 type string; 3769 description "Indicates the monitoring 3770 suspension reason"; 3771 } 3772 } 3773 case monitoring-resumption { 3774 leaf monitoring-resumed { 3775 type empty; 3776 description "Indicates that monitoring 3777 has resumed"; 3778 } 3779 } 3780 case simple-monitor { 3781 uses fpc:report; 3782 description "Report"; 3783 } 3784 case bulk-monitors { 3785 list reports { 3786 uses fpc:report; 3787 description "Reports"; 3788 } 3789 description "Bulk Monitor Response"; 3790 } 3791 description "Monitor Notification value"; 3792 } 3793 description "Monitor Notification"; 3794 } 3795 description "Notify Value"; 3796 } 3797 description "Notify Message"; 3798 } 3799 } 3800 3802 A.2. YANG Models 3804 A.2.1. FPC YANG Model 3806 This module defines the base data elements specified in this 3807 document. 3809 This module references [RFC6991]. 3811 file "ietf-dmm-fpc-base@2017-03-08.yang" 3812 submodule ietf-dmm-fpc-base { 3813 belongs-to ietf-dmm-fpc { 3814 prefix fpc; 3815 } 3817 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 3818 import ietf-yang-types { prefix ytypes; 3819 revision-date 2013-07-15; } 3821 organization "IETF Distributed Mobility Management (DMM) 3822 Working Group"; 3824 contact 3825 "WG Web: 3826 WG List: 3828 WG Chair: Dapeng Liu 3829 3831 WG Chair: Jouni Korhonen 3832 3834 Editor: Satoru Matsushima 3835 3837 Editor: Lyle Bertz 3838 "; 3840 description 3841 "This module contains YANG definition for 3842 Forwarding Policy Configuration Protocol(FPCP). 3844 Copyright (c) 2016 IETF Trust and the persons identified as the 3845 document authors. All rights reserved. 3847 This document is subject to BCP 78 and the IETF Trust's Legal 3848 Provisions Relating to IETF Documents 3849 (http://trustee.ietf.org/license-info) in effect on the date of 3850 publication of this document. Please review these documents 3851 carefully, as they describe your rights and restrictions with 3852 respect to this document. Code Components extracted from this 3853 document must include Simplified BSD License text as described 3854 in Section 4.e of the Trust Legal Provisions and are provided 3855 without warranty as described in the Simplified BSD License."; 3857 revision 2017-03-08 { 3858 description "Version 06 updates."; 3859 reference "draft-ietf-dmm-fpc-cpdp-06"; 3860 } 3862 revision 2016-08-03 { 3863 description "Initial Revision."; 3864 reference "draft-ietf-dmm-fpc-cpdp-05"; 3865 } 3867 feature fpc-basic-agent { 3868 description "This is an agent co-located with a DPN. In this 3869 case only DPN Peer Groups, the DPN Id and Control Protocols 3870 are exposed along with the core structures."; 3871 } 3872 feature fpc-multi-dpn { 3873 description "The agent supports multiple DPNs."; 3874 } 3876 typedef fpc-identity { 3877 type union { 3878 type uint32; 3879 type string; 3880 type instance-identifier; 3881 } 3882 description "FPC Identity"; 3883 } 3885 grouping target-value { 3886 leaf target { 3887 type fpc-identity; 3888 description "Target Identity"; 3889 } 3890 description "FPC Target Value"; 3891 } 3893 grouping targets-value { 3894 list targets { 3895 key "target"; 3896 leaf target { 3897 type fpc-identity; 3898 description "Target Id"; 3899 } 3900 leaf dpn-id { 3901 type fpc:fpc-dpn-id; 3902 description "DPN Id"; 3903 } 3904 description "List of Targets"; 3905 } 3906 description "Targets Value"; 3907 } 3909 // Descriptor Structure 3910 typedef fpc-descriptor-id-type { 3911 type fpc:fpc-identity; 3912 description "Descriptor-ID"; 3913 } 3914 identity fpc-descriptor-type { 3915 description "A traffic descriptor"; 3916 } 3917 grouping fpc-descriptor-id { 3918 leaf descriptor-id { 3919 type fpc:fpc-identity; 3920 description "Descriptor Id"; 3921 } 3922 description "FPC Descriptor ID value"; 3923 } 3924 grouping fpc-descriptor { 3925 uses fpc:fpc-descriptor-id; 3926 leaf descriptor-type { 3927 type identityref { 3928 base "fpc-descriptor-type"; 3929 } 3930 mandatory true; 3931 description "Descriptor Type"; 3932 } 3933 choice descriptor-value { 3934 case all-traffic { 3935 leaf all-traffic { 3936 type empty; 3937 description "Empty Value"; 3938 } 3939 } 3940 description "Descriptor Value"; 3941 } 3942 description "FPC Descriptor"; 3943 } 3945 // Action Structure 3946 typedef fpc-action-id-type { 3947 type fpc:fpc-identity; 3948 description "Action-ID"; 3949 } 3950 identity fpc-action-type { 3951 description "Action Type"; 3952 } 3953 grouping fpc-action-id { 3954 leaf action-id { 3955 type fpc:fpc-action-id-type; 3956 description "Action Identifier"; 3957 } 3958 description "FPC Action ID"; 3959 } 3960 grouping fpc-action { 3961 uses fpc:fpc-action-id; 3962 leaf action-type { 3963 type identityref { 3964 base "fpc-action-type"; 3966 } 3967 mandatory true; 3968 description "Action Type"; 3969 } 3970 choice action-value { 3971 case drop { 3972 leaf drop { 3973 type empty; 3974 description "Empty Value"; 3975 } 3976 } 3977 description "FPC Action Value"; 3978 } 3979 description "FPC Action"; 3980 } 3982 // Rule Structure 3983 grouping fpc-rule { 3984 list descriptors { 3985 key descriptor-id; 3986 uses fpc:fpc-descriptor-id; 3987 leaf direction { 3988 type fpc:fpc-direction; 3989 description "Direction"; 3990 } 3991 description "Descriptors"; 3992 } 3993 list actions { 3994 key action-id; 3995 leaf action-order { 3996 type uint32; 3997 description "Action Execution Order"; 3998 } 3999 uses fpc:fpc-action-id; 4000 description "Actions"; 4001 } 4002 description 4003 "FPC Rule. When no actions are present the action is DROP. 4004 When no Descriptors are empty the default is 4005 'all traffic'."; 4006 } 4008 // Policy Structures 4009 typedef fpc-policy-id { 4010 type fpc:fpc-identity; 4011 description "Policy Identifier"; 4012 } 4013 grouping fpc-policy { 4014 leaf policy-id { 4015 type fpc:fpc-policy-id; 4016 description "Policy Id"; 4017 } 4018 list rules { 4019 key order; 4020 leaf order { 4021 type uint32; 4022 description "Rule Order"; 4023 } 4024 uses fpc:fpc-rule; 4025 description "Rules"; 4026 } 4027 description "FPC Policy"; 4028 } 4030 // Policy Group 4031 typedef fpc-policy-group-id { 4032 type fpc:fpc-identity; 4033 description "Policy Group Identifier"; 4034 } 4035 grouping fpc-policy-group { 4036 leaf policy-group-id { 4037 type fpc:fpc-policy-group-id; 4038 description "Policy Group ID"; 4039 } 4040 leaf-list policies { 4041 type fpc:fpc-policy-id; 4042 description "Policies"; 4043 } 4044 description "FPC Policy Group"; 4045 } 4047 // Mobility Structures 4048 // Port Group 4049 typedef fpc-vport-id { 4050 type fpc:fpc-identity; 4051 description "FPC Port Identifier"; 4052 } 4053 grouping fpc-vport { 4054 leaf vport-id { 4055 type fpc:fpc-vport-id; 4056 description "Port ID"; 4057 } 4058 leaf-list policy-groups { 4059 type fpc:fpc-policy-group-id; 4060 description "Policy Groups"; 4061 } 4062 description "FPC Port"; 4063 } 4065 // Context Group 4066 typedef fpc-context-id { 4067 type fpc:fpc-identity; 4068 description "FPC Context Identifier"; 4069 } 4070 grouping fpc-context-profile { 4071 leaf tunnel-local-address { 4072 type inet:ip-address; 4073 description "endpoint address of the DPN which a 4074 gent exists."; 4075 } 4076 leaf tunnel-remote-address { 4077 type inet:ip-address; 4078 description "endpoint address of the DPN which 4079 agent exists."; 4080 } 4081 leaf mtu-size { 4082 type uint32; 4083 description "MTU size"; 4084 } 4085 container mobility-tunnel-parameters { 4086 uses fpc:mobility-info; 4087 description 4088 "Specifies profile specific lylebe551144 tunnel 4089 parameters to the DPN which the agent exists. The 4090 profiles includes GTP/TEID for 3gpp profile, GRE/Key for 4091 ietf-pmip profile, or new profile if anyone will define 4092 it."; 4093 } 4094 container nexthop { 4095 uses fpc:fpc-nexthop; 4096 description "Next Hop"; 4097 } 4098 container qos-profile-parameters { 4099 uses fpc:fpc-qos-profile; 4100 description "QoS Parameters"; 4101 } 4102 container dpn-parameters { 4103 description "DPN Parameters"; 4104 } 4105 list vendor-parameters { 4106 key "vendor-id vendor-type"; 4107 uses fpc:vendor-attributes; 4108 description "Vendor Parameters"; 4109 } 4110 description "A profile that applies to a specific direction"; 4111 } 4113 typedef fpc-direction { 4114 type enumeration { 4115 enum lylebe551144 { 4116 description "lylebe551144"; 4117 } 4118 enum downlink { 4119 description "Downlink"; 4120 } 4121 enum both { 4122 description "Both"; 4123 } 4124 } 4125 description "FPC Direction"; 4126 } 4128 grouping fpc-context { 4129 leaf context-id { 4130 type fpc:fpc-context-id; 4131 description "Context ID"; 4132 } 4133 leaf-list vports { 4134 type fpc:fpc-vport-id; 4135 description "Vports"; 4136 } 4137 leaf dpn-group { 4138 type fpc:fpc-dpn-group-id; 4139 description "DPN Group"; 4140 } 4141 leaf-list delegated-ip-prefixes { 4142 type inet:ip-prefix; 4143 description "Delegated Prefix(es)"; 4144 } 4145 container ul { 4146 if-feature fpc:fpc-basic-agent; 4147 uses fpc:fpc-context-profile; 4148 description "lylebe551144"; 4149 } 4150 container dl { 4151 if-feature fpc:fpc-basic-agent; 4152 uses fpc:fpc-context-profile; 4153 description "Downlink"; 4154 } 4155 list dpns { 4156 if-feature fpc:fpc-multi-dpn; 4157 key "dpn-id direction"; 4158 leaf dpn-id { 4159 type fpc:fpc-dpn-id; 4160 description "DPN"; 4161 } 4162 leaf direction { 4163 type fpc:fpc-direction; 4164 mandatory true; 4165 description "Direction"; 4166 } 4167 uses fpc:fpc-context-profile; 4168 description "DPNs"; 4169 } 4170 leaf parent-context { 4171 type fpc:fpc-context-id; 4172 description "Parent Context"; 4173 } 4174 description "FCP Context"; 4175 } 4177 // Mobility (Tunnel) Information 4178 grouping mobility-info { 4179 choice profile-parameters { 4180 case nothing { 4181 leaf none { 4182 type empty; 4183 description "Empty Value"; 4184 } 4185 description "No Parameters Case"; 4186 } 4187 description "Mobility Profile Parameters"; 4188 } 4189 description "Mobility Information"; 4190 } 4192 // Next Hop Structures 4193 typedef fpc-service-path-id { 4194 type uint32 { 4195 range "0..33554431"; 4196 } 4197 description "SERVICE_PATH_ID"; 4198 } 4199 typedef fpc-mpls-label { 4200 type uint32 { 4201 range "0..1048575"; 4202 } 4203 description "MPLS label"; 4204 } 4205 identity fpc-nexthop-type { 4206 description "Next Hop Type"; 4207 } 4208 identity fpc-nexthop-ip { 4209 base "fpc:fpc-nexthop-type"; 4210 description "Nexthop IP"; 4211 } 4212 identity fpc-nexthop-servicepath { 4213 base "fpc:fpc-nexthop-type"; 4214 description "Nexthop Service Path"; 4215 } 4216 identity fpc-nexthop-mac { 4217 base "fpc:fpc-nexthop-type"; 4218 description "Nexthop MAC-Address"; 4219 } 4220 identity fpc-nexthop-mpls { 4221 base "fpc:fpc-nexthop-type"; 4222 description "Nexthop MPLS"; 4223 } 4224 identity fpc-nexthop-if { 4225 base "fpc:fpc-nexthop-type"; 4226 description "Nexthop If index"; 4227 } 4228 grouping fpc-nexthop { 4229 leaf nexthop-type { 4230 type identityref { 4231 base "fpc:fpc-nexthop-type"; 4232 } 4233 description "Nexthop Type"; 4234 } 4235 choice nexthop-value { 4236 case ip-nexthop { 4237 leaf ip { 4238 type inet:ip-address; 4239 description "IP Value"; 4240 } 4241 description "IP Case"; 4242 } 4243 case macaddress-nexthop { 4244 leaf macaddress { 4245 type ytypes:mac-address; 4246 description "MAC Address Value"; 4247 } 4248 } 4249 case servicepath-nexthop { 4250 leaf servicepath { 4251 type fpc:fpc-service-path-id; 4252 description "Service Path Value"; 4254 } 4255 description "Service Path Case"; 4256 } 4257 case mplslabel-nexthop { 4258 leaf lsp { 4259 type fpc:fpc-mpls-label; 4260 description "MPLS Value"; 4261 } 4262 description "Service Path Case"; 4263 } 4264 case if-nexthop { 4265 leaf if-index { 4266 type uint16; 4267 description "If (interface) Value"; 4268 } 4269 description "Service Path Case"; 4270 } 4271 description "Value"; 4272 } 4273 description "Nexthop Value"; 4274 } 4276 // QoS Information 4277 identity fpc-qos-type { 4278 description "Base identity from which specific uses of QoS 4279 types are derived."; 4280 } 4281 grouping fpc-qos-profile { 4282 leaf qos-type { 4283 type identityref { 4284 base fpc:fpc-qos-type; 4285 } 4286 description "the profile type"; 4287 } 4288 choice value { 4289 description "QoS Value"; 4290 } 4291 description "QoS Profile"; 4292 } 4294 // Vendor Specific Attributes 4295 identity vendor-specific-type { 4296 description "Vendor Specific Attribute Type"; 4297 } 4298 grouping vendor-attributes { 4299 leaf vendor-id { 4300 type fpc:fpc-identity; 4301 description "Vendor ID"; 4303 } 4304 leaf vendor-type { 4305 type identityref { 4306 base "fpc:vendor-specific-type"; 4307 } 4308 description "Attribute Type"; 4309 } 4310 choice value { 4311 case empty-type { 4312 leaf empty-type { 4313 type empty; 4314 description "Empty Value"; 4315 } 4316 description "Empty Case"; 4317 } 4318 description "Atttribute Value"; 4319 } 4320 description "Vendor Specific Attributes"; 4321 } 4323 // Topology 4324 typedef fpc-domain-id { 4325 type fpc:fpc-identity; 4326 description "Domain Identifier"; 4327 } 4328 grouping fpc-domain { 4329 leaf domain-id { 4330 type fpc:fpc-domain-id; 4331 description "Domain ID"; 4332 } 4333 leaf domain-name { 4334 type string; 4335 description "Domain Name"; 4336 } 4337 leaf domain-type { 4338 type string; 4339 description "Domain Type"; 4340 } 4341 leaf domain-reference { 4342 type instance-identifier; 4343 description "Indicates a set of resources for the domain"; 4344 } 4345 description "FPC Domain"; 4346 } 4348 typedef fpc-dpn-id { 4349 type fpc:fpc-identity; 4350 description "DPN Identifier"; 4352 } 4353 identity fpc-dpn-control-protocol { 4354 description "DPN Control Protocol"; 4355 } 4356 grouping fpc-dpn { 4357 leaf dpn-id { 4358 type fpc:fpc-dpn-id; 4359 description "DPN ID"; 4360 } 4361 leaf dpn-name { 4362 type string; 4363 description "DPN Name"; 4364 } 4365 leaf-list dpn-groups { 4366 type fpc:fpc-dpn-group-id; 4367 description "DPN Groups"; 4368 } 4369 leaf node-reference { 4370 type instance-identifier; 4371 description "DPN => Node (Topology) Mapping"; 4372 } 4373 description "FPC DPN"; 4374 } 4376 typedef fpc-dpn-group-id { 4377 type fpc:fpc-identity; 4378 description "DPN Group Identifier"; 4379 } 4380 identity fpc-data-plane-role { 4381 description "Role of DPN Group in the Forwarding Plane"; 4382 } 4383 identity fpc-access-dpn-role { 4384 base "fpc:fpc-data-plane-role"; 4385 description "Access DPN Role"; 4386 } 4387 identity fpc-anchor-dpn-role { 4388 base "fpc:fpc-data-plane-role"; 4389 description "Anchor DPN Role"; 4390 } 4392 identity fpc-access-type { 4393 description "Access Type of the DPN Group"; 4394 } 4395 identity fpc-mobility-profile-type { 4396 description "Mobility Profile Type"; 4397 } 4399 grouping fpc-dpn-peer-group { 4400 leaf remote-dpn-group-id { 4401 type fpc:fpc-dpn-group-id; 4402 description "Remote DPN Group ID"; 4403 } 4404 leaf remote-mobility-profile { 4405 type identityref { 4406 base "fpc:fpc-mobility-profile-type"; 4407 } 4408 description "Mobility Profile"; 4409 } 4410 leaf remote-data-plane-role { 4411 type identityref { 4412 base "fpc:fpc-data-plane-role"; 4413 } 4414 description "Forwarding Plane Role"; 4415 } 4416 leaf remote-endpoint-address { 4417 type inet:ip-address; 4418 description "Remote Endpoint Address"; 4419 } 4420 leaf local-endpoint-address { 4421 type inet:ip-address; 4422 description "Local Endpoint Address"; 4423 } 4424 leaf mtu-size { 4425 type uint32; 4426 description "MTU Size"; 4427 } 4428 description "FPC DPN Peer Group"; 4429 } 4431 // Events, Probes & Notifications 4432 identity event-type { 4433 description "Base Event Type"; 4434 } 4435 typedef event-type-id { 4436 type uint32; 4437 description "Event ID Type"; 4438 } 4440 grouping monitor-id { 4441 leaf monitor-id { 4442 type fpc:fpc-identity; 4443 description "Monitor Identifier"; 4444 } 4445 description "Monitor ID"; 4446 } 4447 identity report-type { 4448 description "Type of Report"; 4449 } 4450 identity periodic-report { 4451 base "fpc:report-type"; 4452 description "Periodic Report"; 4453 } 4454 identity threshold-report { 4455 base "fpc:report-type"; 4456 description "Threshold Report"; 4457 } 4458 identity scheduled-report { 4459 base "fpc:report-type"; 4460 description "Scheduled Report"; 4461 } 4462 identity events-report { 4463 base "fpc:report-type"; 4464 description "Events Report"; 4465 } 4467 grouping report-config { 4468 choice event-config-value { 4469 case periodic-config { 4470 leaf period { 4471 type uint32; 4472 description "Period"; 4473 } 4474 description "Periodic Config Case"; 4475 } 4476 case threshold-config { 4477 leaf lo-thresh { 4478 type uint32; 4479 description "lo threshold"; 4480 } 4481 leaf hi-thresh { 4482 type uint32; 4483 description "hi threshold"; 4484 } 4485 description "Threshold Config Case"; 4486 } 4487 case scheduled-config { 4488 leaf report-time { 4489 type uint32; 4490 description "Reporting Time"; 4491 } 4492 description "Scheduled Config Case"; 4493 } 4494 case events-config-ident { 4495 leaf-list event-identities { 4496 type identityref { 4497 base "fpc:event-type"; 4498 } 4499 description "Event Identities"; 4500 } 4501 description "Events Config Identities Case"; 4502 } 4503 case events-config { 4504 leaf-list event-ids { 4505 type uint32; 4506 description "Event IDs"; 4507 } 4508 description "Events Config Case"; 4509 } 4510 description "Event Config Value"; 4511 } 4512 description "Report Configuration"; 4513 } 4515 grouping monitor-config { 4516 uses fpc:monitor-id; 4517 uses fpc:target-value; 4518 uses fpc:report-config; 4519 description "Monitor Configuration"; 4520 } 4522 grouping report { 4523 uses fpc:monitor-config; 4524 choice report-value { 4525 leaf trigger { 4526 type fpc:event-type-id; 4527 description "Trigger Identifier"; 4528 } 4529 case simple-empty { 4530 leaf nothing { 4531 type empty; 4532 description "Empty Value"; 4533 } 4534 description "Empty Case"; 4535 } 4536 case simple-val32 { 4537 leaf val32 { 4538 type uint32; 4539 description "Unsigned 32 bit value"; 4540 } 4541 description "Simple Value Case"; 4542 } 4543 description "Report Value"; 4544 } 4545 description "Monitor Report"; 4546 } 4547 } 4548 4550 A.2.2. PMIP QoS Model 4552 This module defines the base protocol elements specified in this 4553 document. 4555 This module references [RFC6991] and the traffic-selector-types 4556 module defined in this document. 4558 file "ietf-pmip-qos@2016-02-10.yang" 4559 module ietf-pmip-qos { 4560 yang-version 1; 4562 namespace 4563 "urn:ietf:params:xml:ns:yang:ietf-pmip-qos"; 4565 prefix "qos-pmip"; 4567 import ietf-inet-types { 4568 prefix inet; 4569 revision-date 2013-07-15; 4570 } 4571 import ietf-traffic-selector-types { prefix traffic-selectors; } 4573 organization "IETF Distributed Mobility Management (DMM) 4574 Working Group"; 4576 contact 4577 "WG Web: 4578 WG List: 4580 WG Chair: Dapeng Liu 4581 4583 WG Chair: Jouni Korhonen 4584 4586 Editor: Satoru Matsushima 4587 4589 Editor: Lyle Bertz 4590 "; 4592 description 4593 "This module contains a collection of YANG definitions for 4594 quality of service paramaters used in Proxy Mobile IPv6. 4596 Copyright (c) 2016 IETF Trust and the persons identified as the 4597 document authors. All rights reserved. 4599 This document is subject to BCP 78 and the IETF Trust's Legal 4600 Provisions Relating to IETF Documents 4601 (http://trustee.ietf.org/license-info) in effect on the date of 4602 publication of this document. Please review these documents 4603 carefully, as they describe your rights and restrictions with 4604 respect to this document. Code Components extracted from this 4605 document must include Simplified BSD License text as described 4606 in Section 4.e of the Trust Legal Provisions and are provided 4607 without warranty as described in the Simplified BSD License."; 4609 revision 2016-02-10 { 4610 description "Initial revision"; 4611 reference 4612 "RFC 7222: Quality-of-Service Option for Proxy Mobile IPv6"; 4613 } 4615 // Type Definitions 4617 // QoS Option Field Type Definitions 4618 typedef sr-id { 4619 type uint8; 4620 description 4621 "An 8-bit unsigned integer used] 4622 for identifying the QoS Service Request. Its uniqueness is 4623 within the scope of a mobility session. The local mobility 4624 anchor always allocates the Service Request Identifier. 4625 When a new QoS Service Request is initiated by a mobile 4626 access gateway, the Service Request Identifier in the initial 4627 request message is set to a value of (0), and the local 4628 mobility anchor allocates a Service Request Identifier and 4629 includes it in the response. For any new QoS Service 4630 Requests initiated by a local mobility anchor, the 4631 Service Request Identifier is set to the allocated value."; 4632 } 4634 typedef traffic-class { 4635 type inet:dscp; 4636 description 4637 "Traffic Class consists of a 6-bit DSCP field followed by a 4638 2-bit reserved field."; 4639 reference 4640 "RFC 3289: Management Information Base for the Differentiated 4641 Services Architecture 4642 RFC 2474: Definition of the Differentiated Services Field 4643 (DS Field) in the IPv4 and IPv6 Headers 4644 RFC 2780: IANA Allocation Guidelines For Values In 4645 the Internet Protocol and Related Headers"; 4646 } 4648 typedef operational-code { 4649 type enumeration { 4650 enum RESPONSE { 4651 value 0; 4652 description "Response to a QoS request"; 4653 } 4654 enum ALLOCATE { 4655 value 1; 4656 description "Request to allocate QoS resources"; 4657 } 4658 enum DE-ALLOCATE { 4659 value 2; 4660 description "Request to de-Allocate QoS resources"; 4661 } 4662 enum MODIFY { 4663 value 3; 4664 description "Request to modify QoS parameters for a 4665 previously negotiated QoS Service Request"; 4666 } 4667 enum QUERY { 4668 value 4; 4669 description "Query to list the previously negotiated QoS 4670 Service Requests that are still active"; 4671 } 4672 enum NEGOTIATE { 4673 value 5; 4674 description "Response to a QoS Service Request with a 4675 counter QoS proposal"; 4676 } 4677 } 4678 description 4679 "1-octet Operational code indicates the type of QoS request. 4680 Reserved values: (6) to (255) 4681 Currently not used. Receiver MUST ignore the option 4682 received with any value in this range."; 4683 } 4685 // QoS Attribute Types 4687 //The enumeration value for mapping - don't confuse with the 4688 // identities 4689 typedef qos-attrubite-type-enum { 4690 type enumeration { 4691 enum Reserved { 4692 value 0; 4693 description "This value is reserved and cannot be used"; 4694 } 4695 enum Per-MN-Agg-Max-DL-Bit-Rate { 4696 value 1; 4697 description "Per-Mobile-Node Aggregate Maximum Downlink 4698 Bit Rate."; 4699 } 4700 enum Per-MN-Agg-Max-UL-Bit-Rate { 4701 value 2; 4702 description "Per-Mobile-Node Aggregate Maximum Uplink Bit 4703 Rate."; 4704 } 4705 enum Per-Session-Agg-Max-DL-Bit-Rate { 4706 value 3; 4707 description "Per-Mobility-Session Aggregate Maximum 4708 Downlink Bit Rate."; 4709 } 4710 enum Per-Session-Agg-Max-UL-Bit-Rate { 4711 value 4; 4712 description "Per-Mobility-Session Aggregate Maximum 4713 Uplink Bit Rate."; 4714 } 4715 enum Allocation-Retention-Priority { 4716 value 5; 4717 description "Allocation and Retention Priority."; 4718 } 4719 enum Aggregate-Max-DL-Bit-Rate { 4720 value 6; 4721 description "Aggregate Maximum Downlink Bit Rate."; 4722 } 4723 enum Aggregate-Max-UL-Bit-Rate { 4724 value 7; 4725 description "Aggregate Maximum Uplink Bit Rate."; 4726 } 4727 enum Guaranteed-DL-Bit-Rate { 4728 value 8; 4729 description "Guaranteed Downlink Bit Rate."; 4730 } 4731 enum Guaranteed-UL-Bit-Rate { 4732 value 9; 4733 description "Guaranteed Uplink Bit Rate."; 4734 } 4735 enum QoS-Traffic-Selector { 4736 value 10; 4737 description "QoS Traffic Selector."; 4738 } 4739 enum QoS-Vendor-Specific-Attribute { 4740 value 11; 4741 description "QoS Vendor-Specific Attribute."; 4742 } 4743 } 4744 description 4745 "8-bit unsigned integer indicating the type of the QoS 4746 attribute. This specification reserves the following 4747 reserved values. 4748 (12) to (254) - Reserved 4749 These values are reserved for future allocation. 4751 (255) Reserved 4752 This value is reserved and cannot be used."; 4753 } 4755 // Attribute Type as Identities 4756 // Added for convenience of inclusion and extension in 4757 // other YANG modules. 4758 identity qos-attribute-type { 4759 description 4760 "Base type for Quality of Service Attributes"; 4761 } 4763 identity Per-MN-Agg-Max-DL-Bit-Rate-type { 4764 base qos-attribute-type; 4765 description 4766 "Per-Mobile-Node Aggregate Maximum Downlink Bit Rate."; 4767 } 4769 identity Per-MN-Agg-Max-UL-Bit-Rate-type { 4770 base qos-attribute-type; 4771 description 4772 "Per-Mobile-Node Aggregate Maximum Uplink Bit Rate"; 4773 } 4775 identity Per-Session-Agg-Max-DL-Bit-Rate-type { 4776 base qos-attribute-type; 4777 description 4778 "Per-Mobility-Session Aggregate Maximum Downlink Bit Rate."; 4779 } 4781 identity Per-Session-Agg-Max-UL-Bit-Rate-type { 4782 base qos-attribute-type; 4783 description 4785 "Per-Mobility-Session Aggregate Maximum Uplink Bit Rate."; 4786 } 4788 identity Allocation-Retention-Priority-type { 4789 base qos-attribute-type; 4790 description 4791 "Allocation and Retention Priority."; 4792 } 4794 identity Aggregate-Max-DL-Bit-Rate-type { 4795 base qos-attribute-type; 4796 description "Aggregate Maximum Downlink Bit Rate."; 4797 } 4799 identity Aggregate-Max-UL-Bit-Rate-type { 4800 base qos-attribute-type; 4801 description "Aggregate Maximum Uplink Bit Rate."; 4802 } 4804 identity Guaranteed-DL-Bit-Rate-type { 4805 base qos-attribute-type; 4806 description "Guaranteed Downlink Bit Rate."; 4807 } 4809 identity Guaranteed-UL-Bit-Rate-type { 4810 base qos-attribute-type; 4811 description "Guaranteed Uplink Bit Rate."; 4812 } 4814 identity QoS-Traffic-Selector-type { 4815 base qos-attribute-type; 4816 description "QoS Traffic Selector."; 4817 } 4819 identity QoS-Vendor-Specific-Attribute-type { 4820 base qos-attribute-type; 4821 description "QoS Vendor-Specific Attribute."; 4822 } 4824 //value definitions 4825 typedef Per-MN-Agg-Max-DL-Bit-Rate-Value { 4826 type uint32; 4827 description 4828 "This is a 32-bit unsigned integer that 4829 indicates the aggregate maximum downlink bit rate that is 4830 requested/allocated for all the mobile node's IP flows. 4831 The measurement units for Per-MN-Agg-Max-DL-Bit-Rate are 4832 bits per second."; 4834 } 4836 typedef Per-MN-Agg-Max-UL-Bit-Rate-Value { 4837 type uint32; 4838 description 4839 "This is a 32-bit unsigned integer that 4840 indicates the aggregate maximum uplink bit rate that is 4841 requested/allocated for the mobile node's IP flows. The 4842 measurement units for Per-MN-Agg-Max-UL-Bit-Rate are bits 4843 per second."; 4844 } 4846 // Generic Structure for the uplink and downlink 4847 grouping Per-Session-Agg-Max-Bit-Rate-Value { 4848 leaf max-rate { 4849 type uint32; 4850 mandatory true; 4851 description 4852 "This is a 32-bit unsigned integer 4853 that indicates the aggregate maximum bit rate that is 4854 requested/allocated for all the IP flows associated with 4855 that mobility session. The measurement units for 4856 Per-Session-Agg-Max-UL/DL-Bit-Rate are bits per second."; 4857 } 4858 leaf service-flag { 4859 type boolean; 4860 mandatory true; 4861 description 4862 "This flag is used for extending the scope of the 4863 target flows for Per-Session-Agg-Max-UL/DL-Bit-Rate 4864 from(UL)/to(DL) the mobile node's other mobility sessions 4865 sharing the same Service Identifier. 3GPP Access Point Name 4866 (APN) is an example of a Service Identifier, and that 4867 identifier is carried using the Service Selection mobility 4868 option [RFC5149]. 4870 - When the (S) flag is set to a value of (1), then the 4871 Per-Session-Agg-Max-Bit-Rate is measured as an 4872 aggregate across all the mobile node's other mobility 4873 sessions sharing the same Service Identifier associated 4874 with this mobility session. 4876 - When the (S) flag is set to a value of (0), then the 4877 target flows are limited to the current mobility 4878 session. 4880 - The (S) flag MUST NOT be set to a value of (1) when there 4881 is no Service Identifier associated with the mobility 4882 session."; 4883 reference 4884 "RFC 5149 - Service Selection mobility option"; 4885 } 4886 leaf exclude-flag { 4887 type boolean; 4888 mandatory true; 4889 description 4890 "This flag is used to request that the uplink/downlink 4891 flows for which the network is providing 4892 Guaranteed-Bit-Rate service be excluded from the 4893 target IP flows for which 4894 Per-Session-Agg-Max-UL/DL-Bit-Rate is measured. 4896 - When the (E) flag is set to a value of (1), then the 4897 request is to exclude the IP flows for which 4898 Guaranteed-UL/DL-Bit-Rate is negotiated from the flows 4899 for which Per-Session-Agg-Max-UL/DL-Bit-Rate 4900 is measured. 4902 - When the (E) flag is set to a value of (0), then the 4903 request is not to exclude any IP flows from the target 4904 IP flows for which Per-Session-Agg-Max-UL/DL-Bit-Rate 4905 is measured. 4907 - When the (S) flag and (E) flag are both set to a value 4908 of (1), then the request is to exclude all the IP flows 4909 sharing the Service Identifier associated with this 4910 mobility session from the target flows for which 4911 Per-Session-Agg-Max-UL/DL-Bit-Rate is measured."; 4912 } 4913 description "Per-Session-Agg-Max-Bit-Rate Value"; 4914 } 4916 grouping Allocation-Retention-Priority-Value { 4917 leaf prioirty-level { 4918 type uint8 { 4919 range "0..15"; 4920 } 4921 mandatory true; 4922 description 4923 "This is a 4-bit unsigned integer value. It is used to decide 4924 whether a mobility session establishment or modification 4925 request can be accepted; this is typically used for 4926 admission control of Guaranteed Bit Rate traffic in case of 4927 resource limitations. The priority level can also be used to 4928 decide which existing mobility session to preempt during 4929 resource limitations. The priority level defines the 4930 relative timeliness of a resource request. 4932 Values 1 to 15 are defined, with value 1 as the highest level 4933 of priority. 4935 Values 1 to 8 should only be assigned for services that are 4936 authorized to receive prioritized treatment within an 4937 operator domain. Values 9 to 15 may be assigned to resources 4938 that are authorized by the home network and thus applicable 4939 when a mobile node is roaming."; 4940 } 4941 leaf premption-capability { 4942 type enumeration { 4943 enum enabled { 4944 value 0; 4945 description "enabled"; 4946 } 4947 enum disabled { 4948 value 1; 4949 description "disabled"; 4950 } 4951 enum reserved1 { 4952 value 2; 4953 description "reserved1"; 4954 } 4955 enum reserved2 { 4956 value 3; 4957 description "reserved2"; 4958 } 4959 } 4960 mandatory true; 4961 description 4962 "This is a 2-bit unsigned integer value. It defines whether a 4963 service data flow can get resources that were already 4964 assigned to another service data flow with a lower priority 4965 level. The following values are defined: 4967 Enabled (0): This value indicates that the service data flow 4968 is allowed to get resources that were already assigned to 4969 another IP data flow with a lower priority level. 4971 Disabled (1): This value indicates that the service data flow 4972 is not allowed to get resources that were already assigned to 4973 another IP data flow with a lower priority level. The values 4974 (2) and (3) are reserved."; 4975 } 4976 leaf premption-vulnerability { 4977 type enumeration { 4978 enum enabled { 4979 value 0; 4980 description "enabled"; 4981 } 4982 enum disabled { 4983 value 1; 4984 description "disabled"; 4985 } 4986 enum reserved1 { 4987 value 2; 4988 description "reserved1"; 4989 } 4990 enum reserved2 { 4991 value 3; 4992 description "reserved2"; 4993 } 4994 } 4995 mandatory true; 4996 description 4997 "This is a 2-bit unsigned integer value. It defines whether a 4998 service data flow can lose the resources assigned to it in 4999 order to admit a service data flow with a higher priority 5000 level. The following values are defined: 5002 Enabled (0): This value indicates that the resources 5003 assigned to the IP data flow can be preempted and 5004 allocated to a service data flow with a higher 5005 priority level. 5007 Disabled (1): This value indicates that the resources 5008 assigned to the IP data flow shall not be preempted and 5009 allocated to a service data flow with a higher priority 5010 level. The values (2) and (3) are reserved."; 5011 } 5012 description "Allocation-Retention-Priority Value"; 5013 } 5015 typedef Aggregate-Max-DL-Bit-Rate-Value { 5016 type uint32; 5017 description 5018 "This is a 32-bit unsigned integer that 5019 indicates the aggregate maximum downlink bit rate that is 5020 requested/allocated for downlink IP flows. The measurement 5021 units for Aggregate-Max-DL-Bit-Rate are bits per second."; 5022 } 5024 typedef Aggregate-Max-UL-Bit-Rate-Value { 5025 type uint32; 5026 description 5027 "This is a 32-bit unsigned integer that 5028 indicates the aggregate maximum downlink bit rate that is 5029 requested/allocated for downlink IP flows. The measurement 5030 units for Aggregate-Max-DL-Bit-Rate are bits per second."; 5031 } 5033 typedef Guaranteed-DL-Bit-Rate-Value { 5034 type uint32; 5035 description 5036 "This is a 32-bit unsigned integer that 5037 indicates the guaranteed bandwidth in bits per second for 5038 downlink IP flows. The measurement units for 5039 Guaranteed-DL-Bit-Rate are bits per second."; 5040 } 5042 typedef Guaranteed-UL-Bit-Rate-Value { 5043 type uint32; 5044 description 5045 "This is a 32-bit unsigned integer that 5046 indicates the guaranteed bandwidth in bits per second 5047 for uplink IP flows. The measurement units for 5048 Guaranteed-UL-Bit-Rate are bits per second."; 5049 } 5051 grouping QoS-Vendor-Specific-Attribute-Value-Base { 5052 leaf vendorid { 5053 type uint32; 5054 mandatory true; 5055 description 5056 "The Vendor ID is the SMI (Structure of Management 5057 Information) Network Management Private Enterprise Code of 5058 the IANA-maintained 'Private Enterprise Numbers' 5059 registry."; 5060 reference 5061 "'PRIVATE ENTERPRISE NUMBERS', SMI Network Management 5062 Private Enterprise Codes, April 2014, 5063 "; 5064 } 5065 leaf subtype { 5066 type uint8; 5067 mandatory true; 5068 description 5069 "An 8-bit field indicating the type of vendor-specific 5070 information carried in the option. The namespace for this 5071 sub-type is managed by the vendor identified by the 5072 Vendor ID field."; 5073 } 5074 description 5075 "QoS Vendor-Specific Attribute."; 5076 } 5078 //NOTE - We do NOT add the Status Codes or other changes in 5079 // PMIP in this module 5081 //Primary Structures (groupings) 5082 grouping qosattribute { 5083 leaf attributetype { 5084 type identityref { 5085 base qos-attribute-type; 5086 } 5087 mandatory true; 5088 description "the attribute type"; 5089 } 5091 //All of the sub-types by constraint 5092 choice attribute-choice { 5093 case per-mn-agg-max-dl-case { 5094 when "./attributetype = " 5095 + "'Per-MN-Agg-Max-DL-Bit-Rate-type'"; 5096 leaf per-mn-agg-max-dl { 5097 type qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value; 5098 description "Per-MN-Agg-Max-DL-Bit-Rate Value"; 5099 } 5100 description "Per-MN-Agg-Max-DL-Bit-Rate Case"; 5101 } 5102 case per-mn-agg-max-ul-case { 5103 when "./attributetype = " 5104 + "'Per-MN-Agg-Max-UL-Bit-Rate-type'"; 5105 leaf per-mn-agg-max-ul { 5106 type qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value; 5107 description "Per-MN-Agg-Max-UL-Bit-Rate Value"; 5108 } 5109 description "Per-MN-Agg-Max-UL-Bit-Rate Case"; 5110 } 5111 case per-session-agg-max-dl-case { 5112 when "./attributetype = " 5113 + "'Per-Session-Agg-Max-DL-Bit-Rate-type'"; 5114 container per-session-agg-max-dl { 5115 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 5116 description "Per-Session-Agg-Max-Bit-Rate Value"; 5117 } 5118 description "Per-Session-Agg-Max-Bit-Rate Case"; 5119 } 5120 case per-session-agg-max-ul-case { 5121 when "./attributetype = " 5122 + "'Per-Session-Agg-Max-UL-Bit-Rate-type'"; 5123 container per-session-agg-max-ul { 5124 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 5125 description "Per-Session-Agg-Max-Bit-Rate Value"; 5126 } 5127 description "Per-Session-Agg-Max-Bit-Rate Case"; 5128 } 5129 case allocation-retention-priority-case { 5130 when "./attributetype = " 5131 + "'Allocation-Retention-Priority-type'"; 5132 uses qos-pmip:Allocation-Retention-Priority-Value; 5133 description "Allocation-Retention-Priority Case"; 5134 } 5135 case agg-max-dl-case { 5136 when "./attributetype = " 5137 + "'Aggregate-Max-DL-Bit-Rate-type'"; 5138 leaf agg-max-dl { 5139 type qos-pmip:Aggregate-Max-DL-Bit-Rate-Value; 5140 description "Aggregate-Max-DL-Bit-Rate Value"; 5141 } 5142 description "Aggregate-Max-DL-Bit-Rate Case"; 5143 } 5144 case agg-max-ul-case { 5145 when "./attributetype = " 5146 + "'Aggregate-Max-UL-Bit-Rate-type'"; 5147 leaf agg-max-ul { 5148 type qos-pmip:Aggregate-Max-UL-Bit-Rate-Value; 5149 description "Aggregate-Max-UL-Bit-Rate Value"; 5150 } 5151 description "Aggregate-Max-UL-Bit-Rate Case"; 5152 } 5153 case gbr-dl-case { 5154 when "./attributetype = 'Guaranteed-DL-Bit-Rate-type'"; 5155 leaf gbr-dl { 5156 type qos-pmip:Guaranteed-DL-Bit-Rate-Value; 5157 description "Guaranteed-DL-Bit-Rate Value"; 5158 } 5159 description "Guaranteed-DL-Bit-Rate Case"; 5160 } 5161 case gbr-ul-case { 5162 when "./attributetype = 'Guaranteed-UL-Bit-Rate-type'"; 5163 leaf gbr-ul { 5164 type qos-pmip:Guaranteed-UL-Bit-Rate-Value; 5165 description "Guaranteed-UL-Bit-Rate Value"; 5166 } 5167 description "Guaranteed-UL-Bit-Rate Case"; 5168 } 5169 case traffic-selector-case { 5170 when "./attributetype = 'QoS-Traffic-Selector-type'"; 5171 container traffic-selector { 5172 uses traffic-selectors:traffic-selector; 5173 description "traffic selector"; 5174 } 5175 description "traffic selector Case"; 5176 } 5177 description "Attribute Value"; 5178 } 5179 description "PMIP QoS Attribute"; 5180 } 5182 grouping qosoption { 5183 leaf srid { 5184 type sr-id; 5185 mandatory true; 5186 description "Service Request Identifier"; 5187 } 5188 leaf trafficclass { 5189 type traffic-class; 5190 mandatory true; 5191 description "Traffic Class"; 5192 } 5193 leaf operationcode { 5194 type operational-code; 5195 mandatory true; 5196 description "Operation Code"; 5197 } 5198 list attributes { 5199 unique "attributetype"; 5200 uses qosattribute; 5201 min-elements 1; 5202 description "Attributes"; 5203 } 5204 description "PMIP QoS Option"; 5205 } 5206 } 5208 5210 A.2.3. Traffic Selectors YANG Model 5212 This module defines traffic selector types commonly used in Proxy 5213 Mobile IP (PMIP). 5215 This module references [RFC6991]. 5217 file "ietf-traffic-selector-types@2016-01-14.yang" 5218 module ietf-traffic-selector-types { 5219 yang-version 1; 5221 namespace 5222 "urn:ietf:params:xml:ns:yang:ietf-traffic-selector-types"; 5224 prefix "traffic-selectors"; 5226 import ietf-inet-types { 5227 prefix inet; 5228 revision-date 2013-07-15; 5229 } 5231 organization "IETF Distributed Mobility Management (DMM) 5232 Working Group"; 5234 contact 5235 "WG Web: 5236 WG List: 5238 WG Chair: Dapeng Liu 5239 5241 WG Chair: Jouni Korhonen 5242 5244 Editor: Satoru Matsushima 5245 5247 Editor: Lyle Bertz 5248 "; 5250 description 5251 "This module contains a collection of YANG definitions for 5252 traffic selectors for flow bindings. 5254 Copyright (c) 2016 IETF Trust and the persons identified as the 5255 document authors. All rights reserved. 5257 This document is subject to BCP 78 and the IETF Trust's Legal 5258 Provisions Relating to IETF Documents 5259 (http://trustee.ietf.org/license-info) in effect on the date of 5260 publication of this document. Please review these documents 5261 carefully, as they describe your rights and restrictions with 5262 respect to this document. Code Components extracted from this 5263 document must include Simplified BSD License text as described 5264 in Section 4.e of the Trust Legal Provisions and are provided 5265 without warranty as described in the Simplified BSD License."; 5266 revision 2016-01-14 { 5267 description "Updated for IETF-PACKET-FIELDS module alignment"; 5268 reference 5269 "draft-ietf-netmod-acl-model-06"; 5270 } 5272 revision 2016-01-12 { 5273 description "Initial revision"; 5274 reference 5275 "RFC 6088: Traffic Selectors for Flow Bindings"; 5276 } 5278 // Identities 5279 identity traffic-selector-format { 5280 description 5281 "The base type for Traffic-Selector Formats"; 5282 } 5284 identity ipv4-binary-selector-format { 5285 base traffic-selector-format; 5286 description 5287 "IPv4 Binary Traffic Selector Format"; 5288 } 5290 identity ipv6-binary-selector-format { 5291 base traffic-selector-format; 5292 description 5293 "IPv6 Binary Traffic Selector Format"; 5294 } 5296 // Type definitions and groupings 5297 typedef ipsec-spi { 5298 type uint32; 5299 description 5300 "This type defines the first 32-bit IPsec 5301 Security Parameter Index (SPI) value on data 5302 packets sent from a corresponding node to the 5303 mobile node as seen by the home agent. This field 5304 is defined in [RFC4303]."; 5305 reference 5306 "RFC 4303: IP Encapsulating Security 5307 Payload (ESP)"; 5308 } 5310 grouping traffic-selector-base { 5311 description "A grouping of the commen leaves between the 5312 v4 and v6 Traffic Selectors"; 5313 container ipsec-spi-range { 5314 presence "Enables setting ipsec spi range"; 5315 description 5316 "Inclusive range representing IPSec Security Parameter 5317 Indices to be used. When only start-spi is present, it 5318 represents a single spi."; 5319 leaf start-spi { 5320 type ipsec-spi; 5321 mandatory true; 5322 description 5323 "This field identifies the first 32-bit IPsec SPI value, 5324 from the range of SPI values to be matched, on data 5325 packets sent from a corresponding node to the mobile 5326 node as seen by the home agent. 5327 This field is defined in [RFC4303]."; 5328 } 5329 leaf end-spi { 5330 type ipsec-spi; 5331 must ". >= ../start-spi" { 5332 error-message 5333 "The end-spi must be greater than or equal 5334 to start-spi"; 5335 } 5336 description 5337 "If more than one contiguous SPI value needs to be matched, 5338 then this field can be used to indicate the end value of 5339 a range starting from the value of the Start SPI field. 5340 This field MUST NOT be included unless the Start SPI 5341 field is included and has a value less than or equal to 5342 this field. 5344 When this field is included, the receiver will match all 5345 of the SPI values between fields start-spi and end-spi, 5346 inclusive of start-spi and end-spi."; 5347 } 5348 } 5349 container source-port-range { 5350 presence "Enables setting source port range"; 5351 description 5352 "Inclusive range representing source ports to be used. 5353 When only start-port is present, it represents a single 5354 port."; 5355 leaf start-port { 5356 type inet:port-number; 5357 mandatory true; 5358 description 5359 "This field identifies the first 16-bit source port number, 5360 from the range of port numbers to be matched, on data 5361 packets sent from a corresponding node to the mobile node 5362 as seen by the home agent. 5363 This is from the range of port numbers defined by IANA 5364 (http://www.iana.org)."; 5365 } 5366 leaf end-port { 5367 type inet:port-number; 5368 must ". >= ../start-port" { 5369 error-message 5370 "The end-port must be greater than or equal to start-port"; 5371 } 5372 description 5373 "If more than one contiguous source port number needs to be 5374 matched, then this field can be used to indicate the end 5375 value of a range starting from the value of the Start 5376 Port field. This field MUST NOT be included unless the 5377 Start Port field is included and has a value less than 5378 or equal to this field. 5380 When this field is included, the receiver will match 5381 all of the port numbers between fields start-port and 5382 end-port, inclusive of start-port and end-port."; 5383 } 5384 } 5385 container destination-port-range { 5386 presence "Enables setting destination port range"; 5387 description 5388 "Inclusive range representing destination ports to be used. 5389 When only start-port is present, it represents a single 5390 port."; 5391 leaf start-port { 5392 type inet:port-number; 5393 mandatory true; 5394 description 5395 "This field identifies the first 16-bit destination port 5396 number, from the range of port numbers to be matched, on 5397 data packets sent from a corresponding node to the mobile 5398 node as seen by the home agent."; 5399 } 5400 leaf end-port { 5401 type inet:port-number; 5402 must ". >= ../start-port" { 5403 error-message 5404 "The end-port must be greater than or equal to 5405 start-port"; 5406 } 5407 description 5408 "If more than one contiguous destination port number needs 5409 to be matched, then this field can be used to indicate 5410 the end value of a range starting from the value of the 5411 Start Destination Port field. This field MUST NOT be 5412 included unless the Start Port field is included and has 5413 a value less than or equal to this field. 5415 When this field is included, the receiver will match 5416 all of the port numbers between fields start-port and 5417 end-port, inclusive of start-port and end-port."; 5418 } 5419 } 5420 } 5422 grouping ipv4-binary-traffic-selector { 5423 container source-address-range-v4 { 5424 presence "Enables setting source IPv4 address range"; 5425 description 5426 "Inclusive range representing IPv4 addresses to be used. When 5427 only start-address is present, it represents a single 5428 address."; 5429 leaf start-address { 5430 type inet:ipv4-address; 5431 mandatory true; 5432 description 5433 "This field identifies the first source address, from the range 5434 of 32-bit IPv4 addresses to be matched, on data packets sent 5435 from a corresponding node to the mobile node as seen by the 5436 home agent. In other words, this is one of the addresses of 5437 the correspondent node."; 5438 } 5439 leaf end-address { 5440 type inet:ipv4-address; 5441 description 5442 "If more than one contiguous source address needs to be 5443 matched, then this field can be used to indicate the end 5444 value of a range starting from the value of the Start 5445 Address field. This field MUST NOT be included unless the 5446 Start Address field is included. When this field is 5447 included, the receiver will match all of the addresses 5448 between fields start-address and end-address, inclusive of 5449 start-address and end-address."; 5450 } 5451 } 5452 container destination-address-range-v4 { 5453 presence "Enables setting destination IPv4 address range"; 5454 description 5455 "Inclusive range representing IPv4 addresses to be used. 5456 When only start-address is present, it represents a 5457 single address."; 5458 leaf start-address { 5459 type inet:ipv4-address; 5460 mandatory true; 5461 description 5462 "This field identifies the first destination address, from the 5463 range of 32-bit IPv4 addresses to be matched, on data packets 5464 sent from a corresponding node to the mobile node as seen by 5465 the home agent. In other words, this is one of the registered 5466 home addresses of the mobile node."; 5467 } 5468 leaf end-address { 5469 type inet:ipv4-address; 5470 description 5471 "If more than one contiguous destination address needs to be 5472 matched, then this field can be used to indicate the end 5473 value of a range starting from the value of the Start 5474 Destination Address field. This field MUST NOT be included 5475 unless the Start Address field is included. When this field 5476 is included, the receiver will match all of the addresses 5477 between fields start-address and end-address, inclusive of 5478 start-address and end-address."; 5479 } 5480 } 5481 container ds-range { 5482 presence "Enables setting dscp range"; 5483 description 5484 "Inclusive range representing DiffServ Codepoints to be used. 5485 When only start-ds is present, it represents a single 5486 Codepoint."; 5487 leaf start-ds { 5488 type inet:dscp; 5489 mandatory true; 5490 description 5491 "This field identifies the first differential service value, 5492 from the range of differential services values to be 5493 matched, on data packets sent from a corresponding node to 5494 the mobile node as seen by the home agent. Note that this 5495 field is called a 'Type of Service field' in [RFC0791]. 5496 [RFC3260] then clarified that the field has been redefined 5497 as a 6-bit DS field with 2 bits reserved, later claimed by 5498 Explicit Congestion Notification (ECN) [RFC3168]. For the 5499 purpose of this specification, the Start DS field is 8 bits 5500 long, where the 6 most significant bits indicate the DS field 5501 to be matched and the 2 least significant bits' values MUST be 5502 ignored in any comparison."; 5503 } 5504 leaf end-ds { 5505 type inet:dscp; 5506 must ". >= ../start-ds" { 5507 error-message 5508 "The end-ds must be greater than or equal to start-ds"; 5509 } 5510 description 5511 "If more than one contiguous DS value needs to be matched, then 5512 this field can be used to indicate the end value of a range 5513 starting from the value of the Start DS field. This field MUST 5514 NOT be included unless the Start DS field is included. When this 5515 field is included, it MUST be coded the same way as defined for 5516 start-ds. When this field is included, the receiver will match 5517 all of the values between fields start-ds and end-ds, inclusive 5518 of start-ds and end-ds."; 5519 } 5520 } 5521 container protocol-range { 5522 presence "Enables setting protocol range"; 5523 description 5524 "Inclusive range representing IP protocol(s) to be used. When 5525 only start-protocol is present, it represents a single 5526 protocol."; 5527 leaf start-protocol { 5528 type uint8; 5529 mandatory true; 5530 description 5531 "This field identifies the first 8-bit protocol value, from the 5532 range of protocol values to be matched, on data packets sent 5533 from a corresponding node to the mobile node as seen by the 5534 home agent."; 5535 } 5536 leaf end-protocol { 5537 type uint8; 5538 must ". >= ../start-protocol" { 5539 error-message 5540 "The end-protocol must be greater than or equal to 5541 start-protocol"; 5542 } 5543 description 5544 "If more than one contiguous protocol value needs to be matched, 5545 then this field can be used to indicate the end value of a range 5546 starting from the value of the Start Protocol field. This field 5547 MUST NOT be included unless the Start Protocol field is 5548 included. When this field is included, the receiver will match 5549 all of the values between fields start-protocol and 5550 end-protocol, inclusive of start-protocol and end-protocol."; 5551 } 5552 } 5553 description "ipv4 binary traffic selector"; 5555 } 5557 grouping ipv6-binary-traffic-selector { 5558 container source-address-range-v6 { 5559 presence "Enables setting source IPv6 address range"; 5560 description 5561 "Inclusive range representing IPv6 addresses to be used. 5562 When only start-address is present, it represents a 5563 single address."; 5564 leaf start-address { 5565 type inet:ipv6-address; 5566 mandatory true; 5567 description 5568 "This field identifies the first source address, from the 5569 range of 128-bit IPv6 addresses to be matched, on data 5570 packets sent from a corresponding node to the mobile node as 5571 seen by the home agent. In other words, this is one of the 5572 addresses of the correspondent node."; 5573 } 5574 leaf end-address { 5575 type inet:ipv6-address; 5576 description 5577 "If more than one contiguous source address needs to be 5578 matched, then this field can be used to indicate the end 5579 value of a range starting from the value of the Start 5580 Address field. This field MUST NOT be included unless the 5581 Start Address field is included. When this field is 5582 included, the receiver will match all of the addresses 5583 between fields start-address and end-address, inclusive of 5584 start-address and end-address ."; 5585 } 5586 } 5587 container destination-address-range-v6 { 5588 presence "Enables setting destination IPv6 address range"; 5589 description 5590 "Inclusive range representing IPv6 addresses to be used. 5591 When only start-address is present, it represents a 5592 single address."; 5593 leaf start-address { 5594 type inet:ipv6-address; 5595 mandatory true; 5596 description 5597 "This field identifies the first destination address, from 5598 the range of 128-bit IPv6 addresses to be matched, on data 5599 packets sent from a corresponding node to the mobile node as 5600 seen by the home agent. In other words, this is one of the 5601 registered home addresses of the mobile node."; 5602 } 5603 leaf end-address { 5604 type inet:ipv6-address; 5605 description 5606 "If more than one contiguous destination address needs to be 5607 matched, then this field can be used to indicate the end 5608 value of a range starting from the value of the Start 5609 Address field. This field MUST NOT be included unless the 5610 Start Address field is included. When this field is 5611 included, the receiver will match all of the addresses 5612 between fields start-address and end-address, inclusive of 5613 start-address and end-address."; 5614 } 5615 } 5616 container flow-label-range { 5617 presence "Enables setting Flow Label range"; 5618 description 5619 "Inclusive range representing IPv4 addresses to be used. When 5620 only start-flow-label is present, it represents a single 5621 flow label."; 5622 leaf start-flow-label { 5623 type inet:ipv6-flow-label; 5624 description 5625 "This field identifies the first flow label value, from the 5626 range of flow label values to be matched, on data packets 5627 sent from a corresponding node to the mobile node as seen 5628 by the home agent. According to [RFC2460], the flow label 5629 is 24 bits long. For the purpose of this specification, the 5630 sender of this option MUST prefix the flow label value with 5631 8 bits of '0' before inserting it in the start-flow-label 5632 field. The receiver SHOULD ignore the first 8 bits of this 5633 field before using it in comparisons with flow labels in 5634 packets."; 5635 } 5636 leaf end-flow-label { 5637 type inet:ipv6-flow-label; 5638 must ". >= ../start-flow-label" { 5639 error-message 5640 "The end-flow-lable must be greater than or equal to 5641 start-flow-label"; 5642 } 5643 description 5644 "If more than one contiguous flow label value needs to be 5645 matched, then this field can be used to indicate the end 5646 value of a range starting from the value of the Start Flow 5647 Label field. This field MUST NOT be included unless the 5648 Start Flow Label field is included. When this field is 5649 included, the receiver will match all of the flow label 5650 values between fields start-flow-label and end-flow-label, 5651 inclusive of start-flow-label and end-flow-label. When this 5652 field is included, it MUST be coded the same way as defined 5653 for end-flow-label."; 5654 } 5655 } 5656 container traffic-class-range { 5657 presence "Enables setting the traffic class range"; 5658 description 5659 "Inclusive range representing IPv4 addresses to be used. When 5660 only start-traffic-class is present, it represents a single 5661 traffic class."; 5662 leaf start-traffic-class { 5663 type inet:dscp; 5664 description 5665 "This field identifies the first traffic class value, from the 5666 range of traffic class values to be matched, on data packets 5667 sent from a corresponding node to the mobile node as seen by 5668 the home agent. This field is equivalent to the Start DS field 5669 in the IPv4 traffic selector in Figure 1. As per RFC 3260, the 5670 field is defined as a 6-bit DS field with 2 bits reserved, 5671 later claimed by Explicit Congestion Notification (ECN) 5672 RFC 3168. For the purpose of this specification, the 5673 start-traffic-class field is 8 bits long, where the 6 most 5674 significant bits indicate the DS field to be matched and the 2 5675 least significant bits' values MUST be ignored in any 5676 comparison."; 5677 reference 5678 "RFC 3260: New Terminology and Clarifications for Diffserv 5679 RFC 3168: The Addition of Explicit Congestion Notification 5680 (ECN) to IP"; 5681 } 5682 leaf end-traffic-class { 5683 type inet:dscp; 5684 must ". >= ../start-traffic-class" { 5685 error-message 5686 "The end-traffic-class must be greater than or equal to 5687 start-traffic-class"; 5688 } 5689 description 5690 "If more than one contiguous TC value needs to be matched, 5691 then this field can be used to indicate the end value of a 5692 range starting from the value of the Start TC field. This 5693 field MUST NOT be included unless the Start TC field is 5694 included. When this field is included, it MUST be coded the 5695 same way as defined for start-traffic-class. When this field 5696 is included, the receiver will match all of the values 5697 between fields start-traffic-class and end-traffic-class, 5698 inclusive of start-traffic-class and end-traffic-class."; 5700 } 5701 } 5702 container next-header-range { 5703 presence "Enables setting Next Header range"; 5704 description 5705 "Inclusive range representing Next Headers to be used. When 5706 only start-next-header is present, it represents a 5707 single Next Header."; 5708 leaf start-next-header { 5709 type uint8; 5710 description 5711 "This field identifies the first 8-bit next header value, from 5712 the range of next header values to be matched, on data packets 5713 sent from a corresponding node to the mobile node as seen by 5714 the home agent."; 5715 } 5716 leaf end-next-header { 5717 type uint8; 5718 must ". >= ../start-next-header" { 5719 error-message 5720 "The end-next-header must be greater than or equal to 5721 start-next-header"; 5722 } 5723 description 5724 "If more than one contiguous next header value needs to be 5725 matched, then this field can be used to indicate the end value 5726 of a range starting from the value of the Start NH field. This 5727 field MUST NOT be included unless the Start next header field 5728 is included. When this field is included, the receiver will 5729 match all of the values between fields start-next-header and 5730 end-next-header, inclusive of start-next-header and 5731 end-next-header."; 5732 } 5733 } 5734 description "ipv6 binary traffic selector"; 5735 } 5737 grouping traffic-selector { 5738 leaf ts-format { 5739 type identityref { 5740 base traffic-selector-format; 5741 } 5742 description "Traffic Selector Format"; 5743 } 5744 uses traffic-selector-base { 5745 when "boolean(../ts-format/text() =" 5746 + "'ipv6-binary-selector-format') |" 5747 + " boolean(../ts-format/text() =" 5748 + " 'ipv4-binary-selector-format')"; 5749 } 5750 uses ipv4-binary-traffic-selector { 5751 when "boolean(../ts-format/text() =" 5752 + " 'ipv4-binary-selector-format')"; 5753 } 5754 uses ipv6-binary-traffic-selector { 5755 when "boolean(../ts-format/text() = " 5756 + "'ipv6-binary-selector-format')"; 5757 } 5758 description 5759 "The traffic selector includes the parameters used to match 5760 packets for a specific flow binding."; 5761 reference 5762 "RFC 6089: Flow Bindings in Mobile IPv6 and Network 5763 Mobility (NEMO) Basic Support"; 5764 } 5766 grouping ts-list { 5767 list selectors { 5768 key index; 5769 leaf index { 5770 type uint64; 5771 description "index"; 5772 } 5773 uses traffic-selector; 5774 description "traffic selectors"; 5775 } 5776 description "traffic selector list"; 5777 } 5778 } 5779 5781 A.2.4. FPC 3GPP Mobility YANG Model 5783 This module defines the base protocol elements of 3GPP mobility.. 5785 This module references [RFC6991], the fpc-base, fpc-agent, ietf- 5786 traffic-selector and pmip-qos modules defined in this document. 5788 file "ietf-dmm-threegpp@2017-03-08.yang" 5789 module ietf-dmm-threegpp { 5790 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-threegpp"; 5791 prefix threegpp; 5793 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 5794 import ietf-dmm-fpc { prefix fpc; revision-date 2017-03-08; } 5795 import ietf-traffic-selector-types { prefix traffic-selectors; 5796 revision-date 2016-01-14; } 5797 import ietf-pmip-qos { prefix pmipqos; 5798 revision-date 2016-02-10; } 5800 organization "IETF Distributed Mobility Management (DMM) 5801 Working Group"; 5803 contact 5804 "WG Web: 5805 WG List: 5807 WG Chair: Dapeng Liu 5808 5810 WG Chair: Jouni Korhonen 5811 5813 Editor: Satoru Matsushima 5814 5816 Editor: Lyle Bertz 5817 "; 5819 description 5820 "This module contains YANG definition for 3GPP Related Mobility 5821 Structures. 5823 Copyright (c) 2016 IETF Trust and the persons identified as the 5824 document authors. All rights reserved. 5826 This document is subject to BCP 78 and the IETF Trust's Legal 5827 Provisions Relating to IETF Documents 5828 (http://trustee.ietf.org/license-info) in effect on the date of 5829 publication of this document. Please review these documents 5830 carefully, as they describe your rights and restrictions with 5831 respect to this document. Code Components extracted from this 5832 document must include Simplified BSD License text as described 5833 in Section 4.e of the Trust Legal Provisions and are provided 5834 without warranty as described in the Simplified BSD License."; 5836 revision 2017-03-08 { 5837 description "Version 06 updates."; 5838 reference "draft-ietf-dmm-fpc-cpdp-06"; 5839 } 5841 revision 2016-08-03 { 5842 description "Initial"; 5843 reference "draft-ietf-dmm-fpc-cpdp-04"; 5845 } 5847 identity threeGPP-access-type { 5848 base "fpc:fpc-access-type"; 5849 description "3GPP Access Type"; 5850 } 5852 // Profile Type 5853 identity threeGPP-mobility { 5854 base "fpc:fpc-mobility-profile-type"; 5855 description "3GPP Mobility Profile"; 5856 } 5858 // Tunnel Types 5859 identity threeGPP-tunnel-type { 5860 description "3GPP Base Tunnel Type"; 5861 } 5863 identity gtpv1 { 5864 base "threegpp:threeGPP-tunnel-type"; 5865 description "GTP version 1 Tunnel"; 5866 } 5868 identity gtpv2 { 5869 base "threegpp:threeGPP-tunnel-type"; 5870 description "GTP version 2 Tunnel"; 5871 } 5873 grouping teid-value { 5874 description "TEID value holder"; 5875 leaf tunnel-identifier { 5876 type uint32; 5877 description "Tunnel Endpoint IDentifier (TEID)"; 5878 } 5879 } 5881 grouping threeGPP-tunnel { 5882 description "3GPP Tunnel Definition"; 5883 leaf tunnel-type { 5884 type identityref { 5885 base "threegpp:threeGPP-tunnel-type"; 5886 } 5887 description "3GPP Tunnel Subtype"; 5888 } 5889 uses threegpp:teid-value; 5890 } 5892 // QoS Profile 5893 identity threeGPP-qos-profile-parameters { 5894 base "fpc:fpc-qos-type"; 5895 description "3GPP QoS Profile"; 5896 } 5898 typedef fpc-qos-class-identifier { 5899 type uint8 { 5900 range "1..9"; 5901 } 5902 description "QoS Class Identifier (QCI)"; 5903 } 5905 grouping threeGPP-QoS { 5906 description "3GPP QoS Attributes"; 5907 leaf qci { 5908 type fpc-qos-class-identifier; 5909 description "QCI"; 5910 } 5911 leaf gbr { 5912 type uint32; 5913 description "Guaranteed Bit Rate"; 5914 } 5915 leaf mbr { 5916 type uint32; 5917 description "Maximum Bit Rate"; 5918 } 5919 leaf apn-ambr { 5920 type uint32; 5921 description "Access Point Name Aggregate Max Bit Rate"; 5922 } 5923 leaf ue-ambr { 5924 type uint32; 5925 description "User Equipment Aggregate Max Bit Rate"; 5926 } 5927 container arp { 5928 uses pmipqos:Allocation-Retention-Priority-Value; 5929 description "Allocation Retention Priority"; 5930 } 5931 } 5933 typedef ebi-type { 5934 type uint8 { 5935 range "0..15"; 5936 } 5937 description "EUTRAN Bearere Identifier (EBI) Type"; 5938 } 5940 // From 3GPP TS 24.008 version 13.5.0 Release 13 5941 typedef component-type-enum { 5942 type enumeration { 5943 enum ipv4RemoteAddress { 5944 value 16; 5945 description "IPv4 Remote Address"; 5946 } 5947 enum ipv4LocalAddress { 5948 value 17; 5949 description "IPv4 Local Address"; 5950 } 5951 enum ipv6RemoteAddress { 5952 value 32; 5953 description "IPv6 Remote Address"; 5954 } 5955 enum ipv6RemoteAddressPrefix { 5956 value 33; 5957 description "IPv6 Remote Address Prefix"; 5958 } 5959 enum ipv6LocalAddressPrefix { 5960 value 35; 5961 description "IPv6 Local Address Prefix"; 5962 } 5963 enum protocolNextHeader { 5964 value 48; 5965 description "Protocol (IPv4) or NextHeader (IPv6) 5966 value"; 5967 } 5968 enum localPort { 5969 value 64; 5970 description "Local Port"; 5971 } 5972 enum localPortRange { 5973 value 65; 5974 description "Local Port Range"; 5975 } 5976 enum reomotePort { 5977 value 80; 5978 description "Remote Port"; 5979 } 5980 enum remotePortRange { 5981 value 81; 5982 description "Remote Port Range"; 5983 } 5984 enum secParamIndex { 5985 value 96; 5986 description "Security Parameter Index (SPI)"; 5987 } 5988 enum tosTraffClass { 5989 value 112; 5990 description "TOS Traffic Class"; 5991 } 5992 enum flowLabel { 5993 value 128; 5994 description "Flow Label"; 5995 } 5996 } 5997 description "TFT Component Type"; 5998 } 6000 typedef packet-filter-direction { 6001 type enumeration { 6002 enum preRel7Tft { 6003 value 0; 6004 description "Pre-Release 7 TFT"; 6005 } 6006 enum uplink { 6007 value 1; 6008 description "uplink"; 6009 } 6010 enum downlink { 6011 value 2; 6012 description "downlink"; 6013 } 6014 enum bidirectional { 6015 value 3; 6016 description "bi-direcitonal"; 6017 } 6018 } 6019 description "Packet Filter Direction"; 6020 } 6022 typedef component-type-id { 6023 type uint8 { 6024 range "16 | 17 | 32 | 33 | 35 | 48 | 64 | 65 |" 6025 + " 80 | 81 | 96 | 112 | 128"; 6026 } 6027 description "Specifies the Component Type"; 6028 } 6030 grouping packet-filter { 6031 leaf direction { 6032 type threegpp:packet-filter-direction; 6033 description "Filter Direction"; 6034 } 6035 leaf identifier { 6036 type uint8 { 6037 range "1..15"; 6038 } 6039 description "Filter Identifier"; 6040 } 6041 leaf evaluation-precedence { 6042 type uint8; 6043 description "Evaluation Precedence"; 6044 } 6045 list contents { 6046 key component-type-identifier; 6047 description "Filter Contents"; 6048 leaf component-type-identifier { 6049 type threegpp:component-type-id; 6050 description "Component Type"; 6051 } 6052 choice value { 6053 case ipv4-local { 6054 leaf ipv4-local { 6055 type inet:ipv4-address; 6056 description "IPv4 Local Address"; 6057 } 6058 } 6059 case ipv6-prefix-local { 6060 leaf ipv6-prefix-local { 6061 type inet:ipv6-prefix; 6062 description "IPv6 Local Prefix"; 6063 } 6064 } 6065 case ipv4-ipv6-remote { 6066 leaf ipv4-ipv6-remote { 6067 type inet:ip-address; 6068 description "Ipv4 Ipv6 remote address"; 6069 } 6070 } 6071 case ipv6-prefix-remote { 6072 leaf ipv6-prefix-remote { 6073 type inet:ipv6-prefix; 6074 description "IPv6 Remote Prefix"; 6075 } 6076 } 6077 case next-header { 6078 leaf next-header { 6079 type uint8; 6080 description "Next Header"; 6081 } 6082 } 6083 case local-port { 6084 leaf local-port { 6085 type inet:port-number; 6086 description "Local Port"; 6087 } 6088 } 6089 case local-port-range { 6090 leaf local-port-lo { 6091 type inet:port-number; 6092 description "Local Port Min Value"; 6093 } 6094 leaf local-port-hi { 6095 type inet:port-number; 6096 description "Local Port Max Value"; 6097 } 6098 } 6099 case remote-port { 6100 leaf remote-port { 6101 type inet:port-number; 6102 description "Remote Port"; 6103 } 6104 } 6105 case remote-port-range { 6106 leaf remote-port-lo { 6107 type inet:port-number; 6108 description "Remote Por Min Value"; 6109 } 6110 leaf remote-port-hi { 6111 type inet:port-number; 6112 description "Remote Port Max Value"; 6113 } 6114 } 6115 case ipsec-index { 6116 leaf ipsec-index { 6117 type traffic-selectors:ipsec-spi; 6118 description "IPSec Index"; 6119 } 6120 } 6121 case traffic-class { 6122 leaf traffic-class { 6123 type inet:dscp; 6124 description "Traffic Class"; 6125 } 6126 } 6127 case traffic-class-range { 6128 leaf traffic-class-lo { 6129 type inet:dscp; 6130 description "Traffic Class Min Value"; 6131 } 6132 leaf traffic-class-hi { 6133 type inet:dscp; 6134 description "Traffic Class Max Value"; 6135 } 6136 } 6137 case flow-label-type { 6138 leaf-list flow-label { 6139 type inet:ipv6-flow-label; 6140 description "Flow Label"; 6141 } 6142 } 6143 description "Component Value"; 6144 } 6145 } 6146 description "Packet Filter"; 6147 } 6149 grouping tft { 6150 list packet-filters { 6151 key identifier; 6152 uses threegpp:packet-filter; 6153 description "List of Packet Filters"; 6154 } 6155 description "Packet Filter List"; 6156 } 6158 typedef imsi-type { 6159 type uint64; 6160 description 6161 "International Mobile Subscriber Identity (IMSI) 6162 Value Type"; 6163 } 6165 typedef threegpp-instr { 6166 type bits { 6167 bit assign-ip { 6168 position 0; 6169 description "Assign IP Address/Prefix"; 6170 } 6171 bit assign-fteid-ip { 6172 position 1; 6173 description "Assign FTEID-IP"; 6174 } 6175 bit assign-fteid-teid { 6176 position 2; 6177 description "Assign FTEID-TEID"; 6178 } 6179 bit session { 6180 position 3; 6181 description "Commands apply to the Session Level"; 6182 } 6183 bit uplink { 6184 position 4; 6185 description "Commands apply to the Uplink"; 6186 } 6187 bit downlink { 6188 position 5; 6189 description "Commands apply to the Downlink"; 6190 } 6191 bit assign-dpn { 6192 position 6; 6193 description "Assign DPN"; 6194 } 6195 } 6196 description "Instruction Set for 3GPP R11"; 6197 } 6199 // Descriptors update - goes to Entities, Configure 6200 // and Configure Bundles 6201 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:" 6202 + "descriptors/fpc:descriptor-value" { 6203 case threegpp-tft { 6204 uses threegpp:tft; 6205 description "3GPP TFT"; 6206 } 6207 description "3GPP TFT Descriptor"; 6208 } 6210 grouping threegpp-tunnel-info { 6211 uses threegpp:threeGPP-tunnel; 6212 choice tft-or-ref { 6213 case defined-tft { 6214 uses threegpp:tft; 6215 } 6216 case predefined-tft { 6217 leaf tft-reference { 6218 type fpc:fpc-identity; 6219 description "Pre-configured TFT"; 6220 } 6221 } 6222 description "TFT Value"; 6223 } 6224 description "3GPP TFT and Tunnel Information"; 6225 } 6227 // Contexts Update - Contexts / UL / mob-profile 6228 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6229 + "contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:" 6230 + "profile-parameters" { 6231 case threegpp-tunnel { 6232 uses threegpp:threegpp-tunnel-info; 6233 } 6234 description "Context UL Tunnel"; 6235 } 6236 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6237 + "create_or_update/fpc:contexts/fpc:ul/fpc:" 6238 + "mobility-tunnel-parameters/fpc:profile-parameters" { 6239 case threegpp-tunnel { 6240 uses threegpp:threegpp-tunnel-info; 6241 } 6242 description "Create Context UL Tunnel"; 6243 } 6244 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6245 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6246 + "ul/fpc:mobility-tunnel-parameters/fpc:" 6247 + "profile-parameters" { 6248 case threegpp-tunnel { 6249 uses threegpp:threegpp-tunnel-info; 6250 } 6251 description "Bundles Create Context UL Tunnel"; 6252 } 6253 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6254 + "create-or-update-success/fpc:contexts/fpc:" 6255 + "ul/fpc:mobility-tunnel-parameters/fpc:" 6256 + "profile-parameters" { 6257 case threegpp-tunnel { 6258 uses threegpp:threegpp-tunnel-info; 6259 } 6260 description "Create Context UL Tunnel Response"; 6261 } 6262 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6263 + "result-type/fpc:create-or-update-success/fpc:contexts/fpc:" 6264 + "ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6265 case threegpp-tunnel { 6266 uses threegpp:threegpp-tunnel-info; 6267 } 6268 description "Bundles Create Context UL Tunnel Response"; 6269 } 6271 // Contexts Update - Contexts / DL / mob-profile 6272 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6273 + "contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:" 6274 + "profile-parameters" { 6275 case threegpp-tunnel { 6276 uses threegpp:threegpp-tunnel-info; 6278 } 6279 description "Context DL Tunnel"; 6280 } 6281 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6282 + "create_or_update/fpc:contexts/fpc:dl/fpc:" 6283 + "mobility-tunnel-parameters/fpc:profile-parameters" { 6284 case threegpp-tunnel { 6285 uses threegpp:threegpp-tunnel-info; 6286 } 6287 description "Bundles Create Context DL Tunnel"; 6288 } 6289 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6290 + "op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:" 6291 + "mobility-tunnel-parameters/fpc:profile-parameters" { 6292 case threegpp-tunnel { 6293 uses threegpp:threegpp-tunnel-info; 6294 } 6295 description "Bundles Create Context DL Tunnel"; 6296 } 6297 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6298 + "create-or-update-success/fpc:contexts/fpc:dl/fpc:" 6299 + "mobility-tunnel-parameters/fpc:profile-parameters" { 6300 case threegpp-tunnel { 6301 uses threegpp:threegpp-tunnel-info; 6302 } 6303 description "Create Context DL Tunnel Response"; 6304 } 6305 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6306 + "result-type/fpc:create-or-update-success/fpc:" 6307 + "contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:" 6308 + "profile-parameters" { 6309 case threegpp-tunnel { 6310 uses threegpp:threegpp-tunnel-info; 6311 } 6312 description "Bundles Create Context DL Tunnel Response"; 6313 } 6315 // Contexts Update - Contexts / dpns / 6316 // mobility-tunnel-parameters 6317 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6318 + "contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:" 6319 + "profile-parameters" { 6320 case threegpp-tunnel { 6321 uses threegpp:threegpp-tunnel-info; 6322 } 6323 description "Context 3GPP TFT and Tunnel Information"; 6324 } 6325 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6326 + "create_or_update/fpc:contexts/fpc:dpns/fpc:" 6327 + "mobility-tunnel-parameters/fpc:" 6328 + "profile-parameters" { 6329 case threegpp-tunnel { 6330 uses threegpp:threegpp-tunnel-info; 6331 } 6332 description "Configure 3GPP TFT and Tunnel Information"; 6333 } 6334 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6335 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6336 + "dpns/fpc:mobility-tunnel-parameters/fpc:" 6337 + "profile-parameters" { 6338 case threegpp-tunnel { 6339 uses threegpp:threegpp-tunnel-info; 6340 } 6341 description "Configure Bundles 3GPP TFT and Tunnel 6342 Information"; 6343 } 6344 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6345 + "create-or-update-success/fpc:contexts/fpc:" 6346 + "dpns/fpc:mobility-tunnel-parameters/fpc:" 6347 + "profile-parameters" { 6348 case threegpp-tunnel { 6349 uses threegpp:threegpp-tunnel-info; 6350 } 6351 description "Configure 3GPP TFT and Tunnel Information 6352 Response"; 6353 } 6354 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6355 + "result-type/fpc:create-or-update-success/fpc:" 6356 + "contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:" 6357 + "profile-parameters" { 6358 case threegpp-tunnel { 6359 uses threegpp:threegpp-tunnel-info; 6360 } 6361 description "Configure Bundles 3GPP TFT and Tunnel Information 6362 Response"; 6363 } 6365 // QoS Updates - Context / UL / qosprofile 6366 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6367 + "contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6368 case threegpp-qos { 6369 uses threegpp:threeGPP-QoS; 6370 description "3GPP QoS Values"; 6371 } 6372 description "Context UL 3GPP QoS Values"; 6373 } 6374 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6375 + "create_or_update/fpc:contexts/fpc:ul/fpc:" 6376 + "qos-profile-parameters/fpc:value" { 6377 case threegpp-qos { 6378 uses threegpp:threeGPP-QoS; 6379 description "3GPP QoS Values"; 6380 } 6381 description "Configure Context UL 3GPP QoS Values"; 6382 } 6383 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6384 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6385 + "ul/fpc:qos-profile-parameters/fpc:value" { 6386 case threegpp-qos { 6387 uses threegpp:threeGPP-QoS; 6388 description "3GPP QoS Values"; 6389 } 6390 description "Configure Bundles Context UL 3GPP QoS Values"; 6391 } 6392 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6393 + "create-or-update-success/fpc:contexts/fpc:ul/fpc:" 6394 + "qos-profile-parameters/fpc:value" { 6395 case threegpp-qos { 6396 uses threegpp:threeGPP-QoS; 6397 description "3GPP QoS Values"; 6398 } 6399 description "Configure Context UL 3GPP QoS Values Response"; 6400 } 6401 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6402 + "result-type/fpc:create-or-update-success/fpc:" 6403 + "contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6404 case threegpp-qos { 6405 uses threegpp:threeGPP-QoS; 6406 description "3GPP QoS Values"; 6407 } 6408 description "Configure Bundles Context UL 3GPP QoS Values 6409 Response"; 6410 } 6412 // QoS Updates - Context / DL / QoS Profile 6413 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6414 + "contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6415 case threegpp-qos { 6416 uses threegpp:threeGPP-QoS; 6417 description "3GPP QoS Values"; 6418 } 6419 description "Context DL 3GPP QoS Values"; 6421 } 6422 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6423 + "create_or_update/fpc:contexts/fpc:dl/fpc:" 6424 + "qos-profile-parameters/fpc:value" { 6425 case threegpp-qos { 6426 uses threegpp:threeGPP-QoS; 6427 description "3GPP QoS Values"; 6428 } 6429 description "Configure Context DL 3GPP QoS Values"; 6430 } 6431 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6432 + "op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:" 6433 + "qos-profile-parameters/fpc:value" { 6434 case threegpp-qos { 6435 uses threegpp:threeGPP-QoS; 6436 description "3GPP QoS Values"; 6437 } 6438 description "Configure Bundles Context DL 3GPP QoS Values"; 6439 } 6440 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6441 + "create-or-update-success/fpc:contexts/fpc:dl/fpc:" 6442 + "qos-profile-parameters/fpc:value" { 6443 case threegpp-qos { 6444 uses threegpp:threeGPP-QoS; 6445 description "3GPP QoS Values"; 6446 } 6447 description "Configure Context DL 3GPP QoS Values Response"; 6448 } 6449 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6450 + "result-type/fpc:create-or-update-success/fpc:" 6451 + "contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6452 case threegpp-qos { 6453 uses threegpp:threeGPP-QoS; 6454 description "3GPP QoS Values"; 6455 } 6456 description "Configure Bundles Context DL 3GPP QoS Values 6457 Response"; 6458 } 6460 grouping threegpp-properties { 6461 leaf imsi { 6462 type threegpp:imsi-type; 6463 description "IMSI"; 6464 } 6465 leaf ebi { 6466 type threegpp:ebi-type; 6467 description "EUTRAN Bearere Identifier (EBI)"; 6468 } 6469 leaf lbi { 6470 type threegpp:ebi-type; 6471 description "Linked Bearer Identifier (LBI)"; 6472 } 6473 description "3GPP Mobility Session Properties"; 6474 } 6476 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts" { 6477 uses threegpp:threegpp-properties; 6478 description "3GPP Mobility Session Properties"; 6479 } 6480 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6481 + "create_or_update/fpc:contexts" { 6482 uses threegpp:threegpp-properties; 6483 description "3GPP Mobility Session Properties"; 6484 } 6485 augment "/fpc:configure-bundles/fpc:input/fpc:" 6486 + "bundles/fpc:op_body/fpc:create_or_update/fpc:contexts" { 6487 uses threegpp:threegpp-properties; 6488 description "3GPP Mobility Session Properties"; 6489 } 6490 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6491 + "create-or-update-success/fpc:contexts" { 6492 uses threegpp:threegpp-properties; 6493 description "3GPP Mobility Session Properties"; 6494 } 6495 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6496 + "result-type/fpc:create-or-update-success/fpc:contexts" { 6497 uses threegpp:threegpp-properties; 6498 description "3GPP Mobility Session Properties"; 6499 } 6501 grouping threegpp-commandset { 6502 leaf instr-3gpp-mob { 6503 type threegpp:threegpp-instr; 6504 description "3GPP Specific Command Set"; 6505 } 6506 description "3GPP Instructions"; 6507 } 6509 augment "/fpc:configure/fpc:input/fpc:instructions/fpc:" 6510 + "instr-type" { 6511 case instr-3gpp-mob { 6512 uses threegpp:threegpp-commandset; 6513 description "3GPP Instructions"; 6514 } 6515 description "Configure 3GPP Instructions"; 6516 } 6517 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6518 + "create_or_update/fpc:contexts/fpc:instructions/fpc:" 6519 + "instr-type" { 6520 case instr-3gpp-mob { 6521 uses threegpp:threegpp-commandset; 6522 description "3GPP Instructions"; 6523 } 6524 description "Configure 3GPP Context Instructions"; 6525 } 6526 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6527 + "create-or-update-success/fpc:contexts/fpc:" 6528 + "instructions/fpc:instr-type" { 6529 case instr-3gpp-mob { 6530 uses threegpp:threegpp-commandset; 6531 description "3GPP Instructions"; 6532 } 6533 description "Configure 3GPP Context Instructions Response"; 6534 } 6536 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6537 + "instructions/fpc:instr-type" { 6538 case instr-3gpp-mob { 6539 uses threegpp:threegpp-commandset; 6540 description "3GPP Instructions"; 6541 } 6542 description "Configure Bundles 3GPP Instructions"; 6543 } 6544 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6545 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6546 + "instructions/fpc:instr-type" { 6547 case instr-3gpp-mob { 6548 uses threegpp:threegpp-commandset; 6549 description "3GPP Instructions"; 6550 } 6551 description "Configure Bundles 3GPP Context Instructions"; 6552 } 6553 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6554 + "result-type/fpc:create-or-update-success/fpc:" 6555 + "contexts/fpc:instructions/fpc:instr-type" { 6556 case instr-3gpp-mob { 6557 uses threegpp:threegpp-commandset; 6558 description "3GPP Instructions"; 6559 } 6560 description "Configure Bundles 3GPP Context Instructions 6561 Response"; 6562 } 6563 } 6564 6566 A.2.5. FPC / PMIP Integration YANG Model 6568 This module defines the integration between FPC and PMIP models. 6570 This module references the fpc-base, fpc-agent, pmip-qos and traffic- 6571 selector-types module defined in this document. 6573 file "ietf-dmm-fpc-pmip@2017-03-08.yang" 6574 module ietf-dmm-fpc-pmip { 6575 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-pmip"; 6576 prefix fpc-pmip; 6578 import ietf-dmm-fpc { prefix fpc; revision-date 2017-03-08; } 6579 import ietf-pmip-qos { prefix qos-pmip; } 6580 import ietf-traffic-selector-types { prefix traffic-selectors; } 6582 organization "IETF Distributed Mobility Management (DMM) 6583 Working Group"; 6585 contact 6586 "WG Web: 6587 WG List: 6589 WG Chair: Dapeng Liu 6590 6592 WG Chair: Jouni Korhonen 6593 6595 Editor: Satoru Matsushima 6596 6598 Editor: Lyle Bertz 6599 "; 6601 description 6602 "This module contains YANG definition for Forwarding Policy 6603 Configuration Protocol (FPCP). 6605 Copyright (c) 2016 IETF Trust and the persons identified as the 6606 document authors. All rights reserved. 6608 This document is subject to BCP 78 and the IETF Trust's Legal 6609 Provisions Relating to IETF Documents 6610 (http://trustee.ietf.org/license-info) in effect on the date of 6611 publication of this document. Please review these documents 6612 carefully, as they describe your rights and restrictions with 6613 respect to this document. Code Components extracted from this 6614 document must include Simplified BSD License text as described 6615 in Section 4.e of the Trust Legal Provisions and are provided 6616 without warranty as described in the Simplified BSD License."; 6618 revision 2017-03-08 { 6619 description "Version 06 update. Adds predfined selector."; 6620 reference "draft-ietf-dmm-fpc-cpdp-06"; 6621 } 6623 revision 2016-01-19 { 6624 description "Changes based on -01 version of FPCP draft."; 6625 reference "draft-ietf-dmm-fpc-cpdp-01"; 6626 } 6628 identity ietf-pmip-access-type { 6629 base "fpc:fpc-access-type"; 6630 description "PMIP Access"; 6631 } 6633 identity fpcp-qos-index-pmip { 6634 base "fpc:fpc-qos-type"; 6635 description "PMIP QoS"; 6636 } 6637 identity traffic-selector-mip6 { 6638 base "fpc:fpc-descriptor-type"; 6639 description "MIP6 Traffic Selector"; 6640 } 6641 identity ietf-pmip { 6642 base "fpc:fpc-mobility-profile-type"; 6643 description "PMIP Mobility"; 6644 } 6646 identity pmip-tunnel-type { 6647 description "PMIP Tunnel Type"; 6648 } 6649 identity grev1 { 6650 base "fpc-pmip:pmip-tunnel-type"; 6651 description "GRE v1"; 6652 } 6653 identity grev2 { 6654 base "fpc-pmip:pmip-tunnel-type"; 6655 description "GRE v2"; 6656 } 6657 identity ipinip { 6658 base "fpc-pmip:pmip-tunnel-type"; 6659 description "IP in IP"; 6661 } 6662 grouping pmip-mobility { 6663 leaf type { 6664 type identityref { 6665 base "fpc-pmip:pmip-tunnel-type"; 6666 } 6667 description "PMIP Mobility"; 6668 } 6669 choice value { 6670 case gre { 6671 leaf key { 6672 type uint32; 6673 description "GRE_KEY"; 6674 } 6675 description "GRE Value"; 6676 } 6677 description "PMIP Mobility value"; 6678 } 6679 description "PMIP Mobility Value"; 6680 } 6682 typedef pmip-instr { 6683 type bits { 6684 bit assign-ip { 6685 position 0; 6686 description "Assign IP"; 6687 } 6688 bit assign-dpn { 6689 position 1; 6690 description "Assign DPN"; 6691 } 6692 bit session { 6693 position 2; 6694 description "Session Level"; 6695 } 6696 bit uplink { 6697 position 3; 6698 description "Uplink"; 6699 } 6700 bit downlink { 6701 position 4; 6702 description "Downlink"; 6703 } 6704 } 6705 description "Instruction Set for PMIP"; 6706 } 6708 // Descriptors update - goes to Entities, Configure and 6709 // Configure Bundles 6710 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/" 6711 + "fpc:descriptors/fpc:descriptor-value" { 6712 case pmip-selector { 6713 uses traffic-selectors:traffic-selector; 6714 description "PMIP Selector"; 6715 } 6716 description "Policy Descriptor"; 6717 } 6719 grouping pmip-tunnel-info { 6720 uses fpc-pmip:pmip-mobility; 6721 choice pmiptunnel-or-ref { 6722 case defined-selector { 6723 uses traffic-selectors:traffic-selector; 6724 } 6725 case predefined-selector { 6726 leaf selector-reference { 6727 type fpc:fpc-identity; 6728 description "Pre-configured selector"; 6729 } 6730 } 6731 description "Traffic Selector Value"; 6732 } 6733 description "PMIP Tunnel Information"; 6734 } 6736 // Contexts Update - Contexts/UL/mob-profile, Contexts/DL/ 6737 // mob-profile and Contexts/dpns/mobility-tunnel-parameters 6738 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6739 + "contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:" 6740 + "profile-parameters" { 6741 case pmip-tunnel { 6742 uses fpc-pmip:pmip-tunnel-info; 6743 } 6744 description "Context UL Mobility"; 6745 } 6746 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6747 + "create_or_update/fpc:contexts/fpc:ul/fpc:" 6748 + "mobility-tunnel-parameters/fpc:" 6749 + "profile-parameters" { 6750 case pmip-tunnel { 6751 uses fpc-pmip:pmip-tunnel-info; 6752 } 6753 description "CONF Context UL Mobility"; 6754 } 6755 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6756 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6757 + "ul/fpc:mobility-tunnel-parameters/fpc:" 6758 + "profile-parameters" { 6759 case pmip-tunnel { 6760 uses fpc-pmip:pmip-tunnel-info; 6761 } 6762 description "CONF_BUNDLES Context UL Mobility"; 6763 } 6765 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6766 + "contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:" 6767 + "profile-parameters" { 6768 case pmip-tunnel { 6769 uses fpc-pmip:pmip-tunnel-info; 6770 } 6771 description "Context DL Mobility"; 6772 } 6773 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6774 + "create_or_update/fpc:contexts/fpc:dl/fpc:" 6775 + "mobility-tunnel-parameters/fpc:" 6776 + "profile-parameters" { 6777 case pmip-tunnel { 6778 uses fpc-pmip:pmip-tunnel-info; 6779 } 6780 description "CONF Context DL Mobility"; 6781 } 6782 augment "/fpc:configure-bundles/fpc:input/fpc:" 6783 + "bundles/fpc:op_body/fpc:create_or_update/fpc:" 6784 + "contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:" 6785 + "profile-parameters" { 6786 case pmip-tunnel { 6787 uses fpc-pmip:pmip-tunnel-info; 6788 } 6789 description "CONF_BUNDLES Context DL Mobility"; 6790 } 6792 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6793 + "contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:" 6794 + "profile-parameters" { 6795 case pmip-tunnel { 6796 uses fpc-pmip:pmip-tunnel-info; 6797 } 6798 description "Context DPN Mobility"; 6799 } 6800 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6801 + "create_or_update/fpc:contexts/fpc:dpns/fpc:" 6802 + "mobility-tunnel-parameters/fpc:profile-parameters" { 6803 case pmip-tunnel { 6804 uses fpc-pmip:pmip-tunnel-info; 6806 } 6807 description "CONF Context DPN Mobility"; 6808 } 6809 augment "/fpc:configure-bundles/fpc:input/fpc:" 6810 + "bundles/fpc:op_body/fpc:create_or_update/fpc:" 6811 + "contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:" 6812 + "profile-parameters" { 6813 case pmip-tunnel { 6814 uses fpc-pmip:pmip-tunnel-info; 6815 } 6816 description "CONF_BUNDLES Context DPN Mobility"; 6817 } 6819 // QoS Updates - Context / UL / qosprofile, Context / DL / 6820 // QoS Profile 6821 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6822 + "contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6823 case qos-pmip { 6824 uses qos-pmip:qosattribute; 6825 description "PMIP QoS Information"; 6826 } 6827 description "Context UL QoS"; 6828 } 6829 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6830 + "create_or_update/fpc:contexts/fpc:ul/fpc:" 6831 + "qos-profile-parameters/fpc:value" { 6832 case qos-pmip { 6833 uses qos-pmip:qosattribute; 6834 description "PMIP QoS Information"; 6835 } 6836 description "CONF Context UL QoS"; 6837 } 6838 augment "/fpc:configure-bundles/fpc:input/fpc:" 6839 + "bundles/fpc:op_body/fpc:create_or_update/fpc:" 6840 + "contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6841 case qos-pmip { 6842 uses qos-pmip:qosattribute; 6843 description "PMIP QoS Information"; 6844 } 6845 description "CONF_BUNDLES Context UL QoS"; 6846 } 6848 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6849 + "contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6850 case qos-pmip { 6851 uses qos-pmip:qosattribute; 6852 description "PMIP QoS Information"; 6853 } 6854 description "Context DL QoS"; 6855 } 6856 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6857 + "create_or_update/fpc:contexts/fpc:dl/fpc:" 6858 + "qos-profile-parameters/fpc:value" { 6859 case qos-pmip { 6860 uses qos-pmip:qosattribute; 6861 description "PMIP QoS Information"; 6862 } 6863 description "CONF Context DL QoS"; 6864 } 6865 augment "/fpc:configure-bundles/fpc:input/fpc:" 6866 + "bundles/fpc:op_body/fpc:create_or_update/fpc:" 6867 + "contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6868 case qos-pmip { 6869 uses qos-pmip:qosattribute; 6870 description "PMIP QoS Information"; 6871 } 6872 description "CONF_BUNDLES Context DL QoS"; 6873 } 6875 grouping pmip-commandset { 6876 leaf instr-pmip { 6877 type fpc-pmip:pmip-instr; 6878 description "PMIP Instructions"; 6879 } 6880 description "PMIP Commandset"; 6881 } 6883 // Instructions Update - OP BODY, Context, Port 6884 augment "/fpc:configure/fpc:input/fpc:instructions/fpc:" 6885 + "instr-type" { 6886 case pmip-instr { 6887 uses fpc-pmip:pmip-commandset; 6888 description "PMIP Commandset"; 6889 } 6890 description "CONF Instructions"; 6891 } 6892 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6893 + "create_or_update/fpc:contexts/fpc:instructions/fpc:" 6894 + "instr-type" { 6895 case pmip-instr { 6896 uses fpc-pmip:pmip-commandset; 6897 description "PMIP Commandset"; 6898 } 6899 description "CONF Context Instructions"; 6900 } 6901 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6902 + "create-or-update-success/fpc:contexts/fpc:" 6903 + "instructions/fpc:instr-type" { 6904 case pmip-instr { 6905 uses fpc-pmip:pmip-commandset; 6906 description "PMIP Commandset"; 6907 } 6908 description "CONF Result Context Instructions"; 6909 } 6911 augment "/fpc:configure-bundles/fpc:input/fpc:" 6912 + "bundles/fpc:instructions/fpc:instr-type" { 6913 case pmip-instr { 6914 uses fpc-pmip:pmip-commandset; 6915 description "PMIP Commandset"; 6916 } 6917 description "CONF_BUNDLES Instructions"; 6918 } 6919 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6920 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6921 + "instructions/fpc:instr-type" { 6922 case pmip-instr { 6923 uses fpc-pmip:pmip-commandset; 6924 description "PMIP Commandset"; 6925 } 6926 description "CONF_BUNDLES Context Instructions"; 6927 } 6928 augment "/fpc:configure-bundles/fpc:output/fpc:" 6929 + "bundles/fpc:result-type/fpc:create-or-update-success/fpc:" 6930 + "contexts/fpc:instructions/fpc:instr-type" { 6931 case pmip-instr { 6932 uses fpc-pmip:pmip-commandset; 6933 description "PMIP Commandset"; 6934 } 6935 description "CONF_BUNDLES Result Context Instructions"; 6936 } 6937 } 6938 6940 A.2.6. FPC Policy Extension YANG Model 6942 This module defines extensions to FPC policy structures. 6944 This module references [RFC6991], the fpc-base and fpcagent module 6945 defined in this document. 6947 file "ietf-dmm-fpc-policyext@2017-03-08.yang" 6948 module ietf-dmm-fpc-policyext { 6949 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-policyext"; 6950 prefix fpcpolicyext; 6952 import ietf-dmm-fpc { prefix fpc; revision-date 2017-03-08; } 6953 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 6955 organization "IETF Distributed Mobility Management (DMM) 6956 Working Group"; 6958 contact 6959 "WG Web: 6960 WG List: 6962 WG Chair: Dapeng Liu 6963 6965 WG Chair: Jouni Korhonen 6966 6968 Editor: Satoru Matsushima 6969 6971 Editor: Lyle Bertz 6972 "; 6974 description 6975 "This module contains YANG definition for Forwarding Policy 6976 Configuration Protocol (FPCP) common Policy Action and 6977 Descriptor extensions. 6979 Copyright (c) 2016 IETF Trust and the persons identified as the 6980 document authors. All rights reserved. 6982 This document is subject to BCP 78 and the IETF Trust's Legal 6983 Provisions Relating to IETF Documents 6984 (http://trustee.ietf.org/license-info) in effect on the date of 6985 publication of this document. Please review these documents 6986 carefully, as they describe your rights and restrictions with 6987 respect to this document. Code Components extracted from this 6988 document must include Simplified BSD License text as described 6989 in Section 4.e of the Trust Legal Provisions and are provided 6990 without warranty as described in the Simplified BSD License."; 6992 revision 2017-03-08 { 6993 description "Version 06 update."; 6994 reference "draft-ietf-dmm-fpc-cpdp-06"; 6995 } 6997 revision 2016-08-03 { 6998 description "Changes based on -04 version of FPC draft."; 6999 reference "draft-ietf-dmm-fpc-cpdp-04"; 7000 } 7002 identity service-function { 7003 base "fpc:fpc-descriptor-type"; 7004 description "Base Identifier for Service Functions."; 7005 } 7006 identity napt-service { 7007 base "service-function"; 7008 description "NAPT Service"; 7009 } 7010 grouping simple-nat { 7011 leaf outbound-nat-address { 7012 type inet:ip-address; 7013 description "Outbound NAT Address"; 7014 } 7015 description "Simple NAT value"; 7016 } 7018 identity nat-service { 7019 base "service-function"; 7020 description "NAT Service"; 7021 } 7022 grouping simple-napt { 7023 leaf source-port { 7024 type inet:port-number; 7025 description "Source Port"; 7026 } 7027 leaf outbound-napt-address { 7028 type inet:ip-address; 7029 description "Outbound NAPT Address"; 7030 } 7031 leaf destination-port { 7032 type inet:port-number; 7033 description "Destination Port"; 7034 } 7035 description "Simple NAPT Configuration"; 7036 } 7038 identity copy-forward { 7039 base "fpc:fpc-descriptor-type"; 7040 description "Copies a packet then forwards to a specific 7041 destination"; 7042 } 7043 grouping copy-forward { 7044 container destination { 7045 choice value { 7046 case port-ref { 7047 leaf port-ref { 7048 type fpc:fpc-vport-id; 7049 description "Port"; 7050 } 7051 description "Port Forward Case"; 7052 } 7053 case context-ref { 7054 leaf context-ref { 7055 type fpc:fpc-context-id; 7056 description "Context"; 7057 } 7058 description "Context Forward Case"; 7059 } 7060 description "Copy Forward Value"; 7061 } 7062 description "destination"; 7063 } 7064 description "Copy Then Forward to Port/Context Action"; 7065 } 7067 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:actions/fpc:" 7068 + "action-value" { 7069 case simple-nat { 7070 uses fpcpolicyext:simple-nat; 7071 description "Simple NAT value"; 7072 } 7073 case simple-napt { 7074 uses fpcpolicyext:simple-napt; 7075 description "Simple NAPT Value"; 7076 } 7077 case copy-forward { 7078 uses fpcpolicyext:copy-forward; 7079 description "Copy Forward Value"; 7080 } 7081 description "Policy Actions Augmentations"; 7082 } 7084 grouping prefix-traffic-descriptor { 7085 leaf destination-ip { 7086 type inet:ip-prefix; 7087 description "Rule of destination IP"; 7088 } 7089 leaf source-ip { 7090 type inet:ip-prefix; 7091 description "Rule of source IP"; 7092 } 7093 description 7094 "Traffic descriptor group collects parameters to 7095 identify target traffic flow. It represents 7096 source/destination as IP prefixes"; 7097 } 7099 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:" 7100 + "descriptors/fpc:descriptor-value" { 7101 case prefix-descriptor { 7102 uses fpcpolicyext:prefix-traffic-descriptor; 7103 description "traffic descriptor value"; 7104 } 7105 description "Descriptor Augments"; 7106 } 7107 } 7108 7110 A.3. FPC YANG Data Model Structure 7112 This section only shows the structure for FPC YANG model. 7114 module: ietf-dmm-fpc 7115 +--rw tenants 7116 | +--rw tenant* [tenant-id] 7117 | +--rw tenant-id fpc:fpc-identity 7118 | +--rw fpc-policy 7119 | | +--rw policy-groups* [policy-group-id] 7120 | | | +--rw policy-group-id fpc:fpc-policy-group-id 7121 | | | +--rw policies* fpc:fpc-policy-id 7122 | | +--rw policies* [policy-id] 7123 | | | +--rw policy-id fpc:fpc-policy-id 7124 | | | +--rw rules* [order] 7125 | | | +--rw order uint32 7126 | | | +--rw descriptors* [descriptor-id] 7127 | | | | +--rw descriptor-id fpc:fpc-identity 7128 | | | | +--rw direction? fpc:fpc-direction 7129 | | | +--rw actions* [action-id] 7130 | | | +--rw action-order? uint32 7131 | | | +--rw action-id fpc:fpc-action-id-type 7132 | | +--rw descriptors* [descriptor-id] 7133 | | | +--rw descriptor-id fpc:fpc-identity 7134 | | | +--rw descriptor-type identityref 7135 | | | +--rw (descriptor-value)? 7136 | | | +--:(all-traffic) 7137 | | | +--rw all-traffic? empty 7138 | | +--rw actions* [action-id] 7139 | | +--rw action-id fpc:fpc-action-id-type 7140 | | +--rw action-type identityref 7141 | | +--rw (action-value)? 7142 | | +--:(drop) 7143 | | +--rw drop? empty 7144 | +--ro fpc-mobility 7145 | | +--ro contexts* [context-id] 7146 | | | +--ro context-id fpc:fpc-context-id 7147 | | | +--ro vports* fpc:fpc-vport-id 7148 | | | +--ro dpn-group? fpc:fpc-dpn-group-id 7149 | | | +--ro delegated-ip-prefixes* inet:ip-prefix 7150 | | | +--ro ul {fpc:fpc-basic-agent}? 7151 | | | | +--ro tunnel-local-address? inet:ip-address 7152 | | | | +--ro tunnel-remote-address? inet:ip-address 7153 | | | | +--ro mtu-size? uint32 7154 | | | | +--ro mobility-tunnel-parameters 7155 | | | | | +--ro (profile-parameters)? 7156 | | | | | +--:(nothing) 7157 | | | | | +--ro none? empty 7158 | | | | +--ro nexthop 7159 | | | | | +--ro nexthop-type? identityref 7160 | | | | | +--ro (nexthop-value)? 7161 | | | | | +--:(ip-nexthop) 7162 | | | | | | +--ro ip? inet:ip-address 7163 | | | | | +--:(macaddress-nexthop) 7164 | | | | | | +--ro macaddress? ytypes:mac-address 7165 | | | | | +--:(servicepath-nexthop) 7166 | | | | | | +--ro servicepath? fpc:fpc-service-path-id 7167 | | | | | +--:(mplslabel-nexthop) 7168 | | | | | | +--ro lsp? fpc:fpc-mpls-label 7169 | | | | | +--:(if-nexthop) 7170 | | | | | +--ro if-index? uint16 7171 | | | | +--ro qos-profile-parameters 7172 | | | | | +--ro qos-type? identityref 7173 | | | | | +--ro (value)? 7174 | | | | +--ro dpn-parameters 7175 | | | | +--ro vendor-parameters* [vendor-id vendor-type] 7176 | | | | +--ro vendor-id fpc:fpc-identity 7177 | | | | +--ro vendor-type identityref 7178 | | | | +--ro (value)? 7179 | | | | +--:(empty-type) 7180 | | | | +--ro empty-type? empty 7181 | | | +--ro dl {fpc:fpc-basic-agent}? 7182 | | | | +--ro tunnel-local-address? inet:ip-address 7183 | | | | +--ro tunnel-remote-address? inet:ip-address 7184 | | | | +--ro mtu-size? uint32 7185 | | | | +--ro mobility-tunnel-parameters 7186 | | | | | +--ro (profile-parameters)? 7187 | | | | | +--:(nothing) 7188 | | | | | +--ro none? empty 7189 | | | | +--ro nexthop 7190 | | | | | +--ro nexthop-type? identityref 7191 | | | | | +--ro (nexthop-value)? 7192 | | | | | +--:(ip-nexthop) 7193 | | | | | | +--ro ip? inet:ip-address 7194 | | | | | +--:(macaddress-nexthop) 7195 | | | | | | +--ro macaddress? ytypes:mac-address 7196 | | | | | +--:(servicepath-nexthop) 7197 | | | | | | +--ro servicepath? fpc:fpc-service-path-id 7198 | | | | | +--:(mplslabel-nexthop) 7199 | | | | | | +--ro lsp? fpc:fpc-mpls-label 7200 | | | | | +--:(if-nexthop) 7201 | | | | | +--ro if-index? uint16 7202 | | | | +--ro qos-profile-parameters 7203 | | | | | +--ro qos-type? identityref 7204 | | | | | +--ro (value)? 7205 | | | | +--ro dpn-parameters 7206 | | | | +--ro vendor-parameters* [vendor-id vendor-type] 7207 | | | | +--ro vendor-id fpc:fpc-identity 7208 | | | | +--ro vendor-type identityref 7209 | | | | +--ro (value)? 7210 | | | | +--:(empty-type) 7211 | | | | +--ro empty-type? empty 7212 | | | +--ro dpns* [dpn-id direction] {fpc:fpc-multi-dpn}? 7213 | | | | +--ro dpn-id fpc:fpc-dpn-id 7214 | | | | +--ro direction fpc:fpc-direction 7215 | | | | +--ro tunnel-local-address? inet:ip-address 7216 | | | | +--ro tunnel-remote-address? inet:ip-address 7217 | | | | +--ro mtu-size? uint32 7218 | | | | +--ro mobility-tunnel-parameters 7219 | | | | | +--ro (profile-parameters)? 7220 | | | | | +--:(nothing) 7221 | | | | | +--ro none? empty 7222 | | | | +--ro nexthop 7223 | | | | | +--ro nexthop-type? identityref 7224 | | | | | +--ro (nexthop-value)? 7225 | | | | | +--:(ip-nexthop) 7226 | | | | | | +--ro ip? inet:ip-address 7227 | | | | | +--:(macaddress-nexthop) 7228 | | | | | | +--ro macaddress? ytypes:mac-address 7229 | | | | | +--:(servicepath-nexthop) 7230 | | | | | | +--ro servicepath? fpc:fpc-service-path-id 7231 | | | | | +--:(mplslabel-nexthop) 7232 | | | | | | +--ro lsp? fpc:fpc-mpls-label 7233 | | | | | +--:(if-nexthop) 7234 | | | | | +--ro if-index? uint16 7235 | | | | +--ro qos-profile-parameters 7236 | | | | | +--ro qos-type? identityref 7237 | | | | | +--ro (value)? 7238 | | | | +--ro dpn-parameters 7239 | | | | +--ro vendor-parameters* [vendor-id vendor-type] 7240 | | | | +--ro vendor-id fpc:fpc-identity 7241 | | | | +--ro vendor-type identityref 7242 | | | | +--ro (value)? 7243 | | | | +--:(empty-type) 7244 | | | | +--ro empty-type? empty 7245 | | | +--ro parent-context? fpc:fpc-context-id 7246 | | +--ro vports* [vport-id] 7247 | | | +--ro vport-id fpc:fpc-vport-id 7248 | | | +--ro policy-groups* fpc:fpc-policy-group-id 7249 | | +--ro monitors* 7250 | | +--ro monitor-id? fpc:fpc-identity 7251 | | +--ro target? fpc-identity 7252 | | +--ro (event-config-value)? 7253 | | +--:(periodic-config) 7254 | | | +--ro period? uint32 7255 | | +--:(threshold-config) 7256 | | | +--ro lo-thresh? uint32 7257 | | | +--ro hi-thresh? uint32 7258 | | +--:(scheduled-config) 7259 | | | +--ro report-time? uint32 7260 | | +--:(events-config-ident) 7261 | | | +--ro event-identities* identityref 7262 | | +--:(events-config) 7263 | | +--ro event-ids* uint32 7264 | +--rw fpc-topology 7265 | +--rw domains* [domain-id] 7266 | | +--rw domain-id fpc:fpc-domain-id 7267 | | +--rw domain-name? string 7268 | | +--rw domain-type? string 7269 | | +--rw domain-reference? instance-identifier 7270 | | +--rw basename? fpc:fpc-identity 7271 | | | {fpc:fpc-basename-registry}? 7272 | | +--rw base-state? string 7273 | | | {fpc:fpc-basename-registry}? 7274 | | +--rw base-checkpoint? string 7275 | | {fpc:fpc-basename-registry}? 7276 | +--rw dpn-id? fpc:fpc-dpn-id 7277 | | {fpc:fpc-basic-agent}? 7278 | +--rw control-protocols* identityref 7279 | | {fpc:fpc-basic-agent}? 7280 | +--rw dpn-groups* [dpn-group-id] {fpc:fpc-multi-dpn}? 7281 | | +--rw dpn-group-id fpc:fpc-dpn-group-id 7282 | | +--rw data-plane-role? identityref 7283 | | +--rw access-type? identityref 7284 | | +--rw mobility-profile? identityref 7285 | | +--rw dpn-group-peers* [remote-dpn-group-id] 7286 | | | +--rw remote-dpn-group-id fpc:fpc-dpn-group-id 7287 | | | +--rw remote-mobility-profile? identityref 7288 | | | +--rw remote-data-plane-role? identityref 7289 | | | +--rw remote-endpoint-address? inet:ip-address 7290 | | | +--rw local-endpoint-address? inet:ip-address 7291 | | | +--rw mtu-size? uint32 7292 | | +--rw domains* [domain-id] 7293 | | +--rw domain-id fpc:fpc-domain-id 7294 | | +--rw domain-name? string 7295 | | +--rw domain-type? string 7296 | | +--rw domain-reference? instance-identifier 7297 | | +--rw basename? fpc:fpc-identity 7298 | | | {fpc:fpc-basename-registry}? 7299 | | +--rw base-state? string 7300 | | | {fpc:fpc-basename-registry}? 7301 | | +--rw base-checkpoint? string 7302 | | {fpc:fpc-basename-registry}? 7303 | +--rw dpns* [dpn-id] {fpc:fpc-multi-dpn}? 7304 | +--rw dpn-id fpc:fpc-dpn-id 7305 | +--rw dpn-name? string 7306 | +--rw dpn-groups* fpc:fpc-dpn-group-id 7307 | +--rw node-reference? instance-identifier 7308 +--rw fpc-agent-info 7309 +--rw supported-features* string 7310 +--rw supported-events* [event] 7311 | +--rw event identityref 7312 | +--rw event-id? fpc:event-type-id 7313 +--rw supported-error-types* [error-type] 7314 +--rw error-type identityref 7315 +--rw error-type-id? fpc:error-type-id 7317 Figure 28: YANG FPC Agent Tree 7319 Authors' Addresses 7321 Satoru Matsushima 7322 SoftBank 7323 1-9-1,Higashi-Shimbashi,Minato-Ku 7324 Tokyo 105-7322 7325 Japan 7327 Email: satoru.matsushima@g.softbank.co.jp 7328 Lyle Bertz 7329 6220 Sprint Parkway 7330 Overland Park KS, 66251 7331 USA 7333 Email: lylebe551144@gmail.com 7335 Marco Liebsch 7336 NEC Laboratories Europe 7337 NEC Europe Ltd. 7338 Kurfuersten-Anlage 36 7339 D-69115 Heidelberg 7340 Germany 7342 Phone: +49 6221 4342146 7343 Email: liebsch@neclab.eu 7345 Sri Gundavelli 7346 Cisco 7347 170 West Tasman Drive 7348 San Jose, CA 95134 7349 USA 7351 Email: sgundave@cisco.com 7353 Danny Moses 7355 Email: danny.moses@intel.com 7357 Charles E. Perkins 7358 Futurewei Inc. 7359 2330 Central Expressway 7360 Santa Clara, CA 95050 7361 USA 7363 Phone: +1-408-330-4586 7364 Email: charliep@computer.org