idnits 2.17.1 draft-ietf-dmm-fpc-cpdp-08.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 7121 has weird spacing: '...roup-id fpc...' == Line 7124 has weird spacing: '...licy-id fpc...' == Line 7128 has weird spacing: '...ptor-id fpc...' == Line 7135 has weird spacing: '...or-type ide...' == Line 7141 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 (September 13, 2017) is 2414 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 2914, but no explicit reference was found in the text == Outdated reference: A later version (-26) exists of draft-ietf-6man-segment-routing-header-07 == Outdated reference: A later version (-28) exists of draft-ietf-sfc-nsh-20 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-mpls-10 ** Downref: Normative reference to an Informational RFC: RFC 7333 == Outdated reference: A later version (-06) exists of draft-bertz-dime-policygroups-04 == Outdated reference: A later version (-04) exists of draft-ietf-dmm-deployment-models-02 Summary: 1 error (**), 0 flaws (~~), 23 warnings (==), 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: March 17, 2018 Sprint 6 M. Liebsch 7 NEC 8 S. Gundavelli 9 Cisco 10 D. Moses 11 Intel Corporation 12 C. Perkins 13 Futurewei 14 September 13, 2017 16 Protocol for Forwarding Policy Configuration (FPC) in DMM 17 draft-ietf-dmm-fpc-cpdp-08 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 March 17, 2018. 48 Copyright Notice 50 Copyright (c) 2017 IETF Trust and the persons identified as the 51 document authors. All rights reserved. 53 This document is subject to BCP 78 and the IETF Trust's Legal 54 Provisions Relating to IETF Documents 55 (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., Raza, K., Leddy, J., Field, B., 2887 daniel.voyer@bell.ca, d., daniel.bernier@bell.ca, d., 2888 Matsushima, S., Leung, I., Linkova, J., Aries, E., Kosugi, 2889 T., Vyncke, E., Lebrun, D., Steinberg, D., and R. Raszuk, 2890 "IPv6 Segment Routing Header (SRH)", draft-ietf-6man- 2891 segment-routing-header-07 (work in progress), July 2017. 2893 [I-D.ietf-sfc-nsh] 2894 Quinn, P., Elzur, U., and C. Pignataro, "Network Service 2895 Header (NSH)", draft-ietf-sfc-nsh-20 (work in progress), 2896 September 2017. 2898 [I-D.ietf-spring-segment-routing-mpls] 2899 Filsfils, C., Previdi, S., Bashandy, A., Decraene, B., 2900 Litkowski, S., and R. Shakir, "Segment Routing with MPLS 2901 data plane", draft-ietf-spring-segment-routing-mpls-10 2902 (work in progress), June 2017. 2904 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2905 Requirement Levels", BCP 14, RFC 2119, 2906 DOI 10.17487/RFC2119, March 1997, . 2909 [RFC6088] Tsirtsis, G., Giarreta, G., Soliman, H., and N. Montavont, 2910 "Traffic Selectors for Flow Bindings", RFC 6088, 2911 DOI 10.17487/RFC6088, January 2011, . 2914 [RFC6089] Tsirtsis, G., Soliman, H., Montavont, N., Giaretta, G., 2915 and K. Kuladinithi, "Flow Bindings in Mobile IPv6 and 2916 Network Mobility (NEMO) Basic Support", RFC 6089, 2917 DOI 10.17487/RFC6089, January 2011, . 2920 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2921 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2922 . 2924 [RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J. 2925 Korhonen, "Requirements for Distributed Mobility 2926 Management", RFC 7333, DOI 10.17487/RFC7333, August 2014, 2927 . 2929 12.2. Informative References 2931 [I-D.bertz-dime-policygroups] 2932 Bertz, L. and M. Bales, "Diameter Policy Groups and Sets", 2933 draft-bertz-dime-policygroups-04 (work in progress), June 2934 2017. 2936 [I-D.ietf-dmm-deployment-models] 2937 Gundavelli, S. and S. Jeon, "DMM Deployment Models and 2938 Architectural Considerations", draft-ietf-dmm-deployment- 2939 models-02 (work in progress), August 2017. 2941 [I-D.ietf-netconf-restconf] 2942 Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2943 Protocol", draft-ietf-netconf-restconf-18 (work in 2944 progress), October 2016. 2946 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2947 DOI 10.17487/RFC3688, January 2004, . 2950 [RFC5213] Gundavelli, S., Ed., Leung, K., Devarapalli, V., 2951 Chowdhury, K., and B. Patil, "Proxy Mobile IPv6", 2952 RFC 5213, DOI 10.17487/RFC5213, August 2008, 2953 . 2955 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2956 and A. Bierman, Ed., "Network Configuration Protocol 2957 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2958 . 2960 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2961 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2962 . 2964 [RFC7222] Liebsch, M., Seite, P., Yokota, H., Korhonen, J., and S. 2965 Gundavelli, "Quality-of-Service Option for Proxy Mobile 2966 IPv6", RFC 7222, DOI 10.17487/RFC7222, May 2014, 2967 . 2969 Appendix A. YANG Data Model for the FPC protocol 2971 These modules define YANG definitions. Seven modules are defined: 2973 o ietf-dmm-fpc (fpc) - Defines the base model and messages for FPC 2975 o ietf-dmm-fpc-base An FPC submodule that defines the information 2976 model that is specified in this document 2978 o ietf-pmip-qos (pmip-qos) - Defines proxy mobile IPv6 QoS 2979 parameters per RFC 7222 2981 o ietf-traffic-selectors-types (traffic-selectors) - Defines Traffic 2982 Selectors per RFC 6088 2984 o ietf-dmm-threegpp - Defines the base structures for 3GPP based IP 2985 mobility and augments fpcagent to support these parameters. 2987 o ietf-dmm-fpc-pmip - Augments fpcp-base to include PMIP Traffic 2988 Selectors as a Traffic Descriptor subtype and pmip-qos QoS 2989 parameters, where applicable, as properties. 2991 o ietf-dmm-fpc-policyext - defines basic policy extensions, e.g. 2992 Actions and Descriptors, to fpcbase and as defined in this 2993 document. 2995 A.1. FPC Agent YANG Model 2997 This module defines the information model and protocol elements 2998 specified in this document. 3000 This module references [RFC6991] and the fpc-base module defined in 3001 this document. 3003 file "ietf-dmm-fpc@2017-03-08.yang" 3004 module ietf-dmm-fpc { 3005 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc"; 3006 prefix fpc; 3008 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 3010 include ietf-dmm-fpc-base; 3012 organization "IETF Distributed Mobility Management (DMM) 3013 Working Group"; 3015 contact 3016 "WG Web: 3017 WG List: 3019 WG Chair: Dapeng Liu 3020 3022 WG Chair: Jouni Korhonen 3023 3025 Editor: Satoru Matsushima 3026 3028 Editor: Lyle Bertz 3029 "; 3031 description 3032 "This module contains YANG definition for 3033 Forwarding Policy Configuration Protocol (FPCP). 3035 Copyright (c) 2016 IETF Trust and the persons identified as the 3036 document authors. All rights reserved. 3038 This document is subject to BCP 78 and the IETF Trust's Legal 3039 Provisions Relating to IETF Documents 3040 (http://trustee.ietf.org/license-info) in effect on the date of 3041 publication of this document. Please review these documents 3042 carefully, as they describe your rights and restrictions with 3043 respect to this document. Code Components extracted from this 3044 document must include Simplified BSD License text as described 3045 in Section 4.e of the Trust Legal Provisions and are provided 3046 without warranty as described in the Simplified BSD License."; 3048 revision 2017-03-08 { 3049 description "Version 06 updates."; 3050 reference "draft-ietf-dmm-fpc-cpdp-06"; 3052 } 3054 revision 2016-08-03 { 3055 description "Initial Revision."; 3056 reference "draft-ietf-dmm-fpc-cpdp-05"; 3057 } 3058 feature fpc-cloning { 3059 description "An ability to support cloning in the RPC."; 3060 } 3061 feature fpc-basename-registry { 3062 description "Ability to track Base Names already provisioned 3063 on the Agent"; 3064 } 3065 feature fpc-bundles { 3066 description "Ability for Client to send multiple bundles of 3067 actions to an Agent"; 3068 } 3069 feature fpc-client-binding { 3070 description "Allows a FPC Client to bind a DPN to an Topology 3071 Object"; 3072 } 3073 feature fpc-auto-binding { 3074 description "Allows a FPC Agent to advertise Topology Objects 3075 that could be DPNs"; 3076 } 3077 feature instruction-bitset { 3078 description "Allows the expression of instructions (bit sets) 3079 over FPC."; 3080 } 3081 feature operation-ref-scope { 3082 description "Provides the scope of refeneces in an operation. 3083 Used to optmize the Agent processing."; 3084 } 3085 feature policy-rpc-provisioning { 3086 description "Enables the ability to send policy elements 3087 (Policy Groups, Policies, Descriptors and Actions) to be sent 3088 in CONF or CONF_BUNDLE operations."; 3089 } 3091 typedef agent-identifier { 3092 type fpc:fpc-identity; 3093 description "Agent Identifier"; 3094 } 3096 typedef client-identifier { 3097 type fpc:fpc-identity; 3098 description "Client Identifier"; 3099 } 3100 grouping basename-info { 3101 leaf basename { 3102 if-feature fpc:fpc-basename-registry; 3103 type fpc:fpc-identity; 3104 description "Rules Basename"; 3105 } 3106 leaf base-state { 3107 if-feature fpc:fpc-basename-registry; 3108 type string; 3109 description "Current State"; 3110 } 3111 leaf base-checkpoint { 3112 if-feature fpc:fpc-basename-registry; 3113 type string; 3114 description "Checkpoint"; 3115 } 3116 description "Basename Information"; 3117 } 3119 // Top Level Structures 3120 container tenants { 3121 list tenant { 3122 key "tenant-id"; 3123 leaf tenant-id { 3124 type fpc:fpc-identity; 3125 description "Tenant ID"; 3126 } 3128 container fpc-policy { 3129 list policy-groups { 3130 key "policy-group-id"; 3131 uses fpc:fpc-policy-group; 3132 description "Policy Groups"; 3133 } 3134 list policies { 3135 key "policy-id"; 3136 uses fpc:fpc-policy; 3137 description "Policies"; 3138 } 3139 list descriptors { 3140 key descriptor-id; 3141 uses fpc:fpc-descriptor; 3142 description "Descriptors"; 3143 } 3144 list actions { 3145 key action-id; 3146 uses fpc:fpc-action; 3147 description "Actions"; 3149 } 3150 description "Policy"; 3151 } 3153 container fpc-mobility { 3154 config false; 3155 list contexts { 3156 key context-id; 3157 uses fpc:fpc-context; 3158 description "Contexts"; 3159 } 3160 list vports { 3161 key vport-id; 3162 uses fpc:fpc-vport; 3163 description "Ports"; 3164 } 3165 list monitors { 3166 uses fpc:monitor-config; 3167 description "Monitors"; 3168 } 3169 description "Mobility"; 3170 } 3171 container fpc-topology { 3172 // Basic Agent Topology Structures 3173 list domains { 3174 key domain-id; 3175 uses fpc:fpc-domain; 3176 uses fpc:basename-info; 3177 description "Domains"; 3178 } 3180 leaf dpn-id { 3181 if-feature fpc:fpc-basic-agent; 3182 type fpc:fpc-dpn-id; 3183 description "DPN ID"; 3184 } 3185 leaf-list control-protocols { 3186 if-feature fpc:fpc-basic-agent; 3187 type identityref { 3188 base "fpc:fpc-dpn-control-protocol"; 3189 } 3190 description "Control Protocols"; 3191 } 3193 list dpn-groups { 3194 if-feature fpc:fpc-multi-dpn; 3195 key dpn-group-id; 3196 uses fpc:fpc-dpn-group; 3197 list domains { 3198 key domain-id; 3199 uses fpc:fpc-domain; 3200 uses fpc:basename-info; 3201 description "Domains"; 3202 } 3203 description "DPN Groups"; 3204 } 3205 list dpns { 3206 if-feature fpc:fpc-multi-dpn; 3207 key dpn-id; 3208 uses fpc:fpc-dpn; 3209 description "DPNs"; 3210 } 3211 description "Topology"; 3212 } 3213 description "Tenant"; 3214 } 3215 description "Tenant List"; 3216 } 3218 container fpc-agent-info { 3219 // General Agent Structures 3220 leaf-list supported-features { 3221 type string; 3222 description "Agent Features"; 3223 } 3225 // Common Agent Info 3226 list supported-events { 3227 key event; 3228 leaf event { 3229 type identityref { 3230 base "fpc:event-type"; 3231 } 3232 description "Event Types"; 3233 } 3234 leaf event-id { 3235 type fpc:event-type-id; 3236 description "Event ID"; 3237 } 3238 description "Supported Events"; 3239 } 3241 list supported-error-types { 3242 key error-type; 3243 leaf error-type { 3244 type identityref { 3245 base "fpc:error-type"; 3246 } 3247 description "Error Type"; 3248 } 3249 leaf error-type-id { 3250 type fpc:error-type-id; 3251 description "Error Type ID"; 3252 } 3253 description "Supported Error Types"; 3254 } 3255 description "General Agent Information"; 3256 } 3258 // Multi-DPN Agent Structures 3259 grouping fpc-dpn-group { 3260 leaf dpn-group-id { 3261 type fpc:fpc-dpn-group-id; 3262 description "DPN Group ID"; 3263 } 3264 leaf data-plane-role { 3265 type identityref { 3266 base "fpc:fpc-data-plane-role"; 3267 } 3268 description "Dataplane Role"; 3269 } 3270 leaf access-type { 3271 type identityref { 3272 base "fpc:fpc-access-type"; 3273 } 3274 description "Access Type"; 3275 } 3276 leaf mobility-profile { 3277 type identityref { 3278 base "fpc:fpc-mobility-profile-type"; 3279 } 3280 description "Mobility Profile"; 3281 } 3282 list dpn-group-peers { 3283 key "remote-dpn-group-id"; 3284 uses fpc:fpc-dpn-peer-group; 3285 description "Peer DPN Groups"; 3286 } 3287 description "FPC DPN Group"; 3288 } 3290 // RPC 3291 // RPC Specific Structures 3292 //Input Structures 3293 typedef admin-status { 3294 type enumeration { 3295 enum enabled { 3296 value 0; 3297 description "enabled"; 3298 } 3299 enum disabled { 3300 value 1; 3301 description "disabled"; 3302 } 3303 enum virtual { 3304 value 2; 3305 description "virtual"; 3306 } 3307 } 3308 description "Adminstrative Status"; 3309 } 3311 typedef session-status { 3312 type enumeration { 3313 enum complete { 3314 value 0; 3315 description "complete"; 3316 } 3317 enum incomplete { 3318 value 1; 3319 description "incomplete"; 3320 } 3321 enum outdated { 3322 value 2; 3323 description "outdated"; 3324 } 3325 } 3326 description "Session Status"; 3327 } 3329 typedef op-delay { 3330 type uint32; 3331 description "Operation Delay (ms)"; 3332 } 3334 typedef op-identifier { 3335 type uint64; 3336 description "Operation Identifier"; 3337 } 3338 typedef ref-scope { 3339 type enumeration { 3340 enum none { 3341 value 0; 3342 description "no references"; 3343 } 3344 enum op { 3345 value 1; 3346 description "op - All references are contained in the 3347 operation body (intra-op)"; 3348 } 3349 enum bundle { 3350 value 2; 3351 description "bundle - All references in exist in bundle 3352 (inter-operation/intra-bundle). 3353 NOTE - If this value comes in CONFIG call it is 3354 equivalent to 'op'."; 3355 } 3356 enum storage { 3357 value 3; 3358 description "storage - One or more references exist outside 3359 of the operation and bundle. A lookup to a cache / 3360 storage is required."; 3361 } 3362 enum unknown { 3363 value 4; 3364 description " unknown - the location of the references are 3365 unknown. This is treated as a 'storage' type."; 3366 } 3367 } 3368 description "Search scope for references in the operation."; 3369 } 3371 grouping instructions { 3372 container instructions { 3373 if-feature instruction-bitset; 3374 choice instr-type { 3375 description "Instruction Value Choice"; 3376 } 3377 description "Instructions"; 3378 } 3379 description "Instructions Value"; 3380 } 3382 grouping op-header { 3383 leaf client-id { 3384 type fpc:client-identifier; 3385 description "Client ID"; 3387 } 3388 leaf delay { 3389 type op-delay; 3390 description "Delay"; 3391 } 3392 leaf session-state { 3393 type session-status; 3394 description "Session State"; 3395 } 3396 leaf admin-state { 3397 type admin-status; 3398 description "Admin State"; 3399 } 3400 leaf op-type { 3401 type enumeration { 3402 enum create { 3403 value 0; 3404 description "create"; 3405 } 3406 enum update { 3407 value 1; 3408 description "update"; 3409 } 3410 enum query { 3411 value 2; 3412 description "query"; 3413 } 3414 enum delete { 3415 value 3; 3416 description "delete"; 3417 } 3418 } 3419 description "Type"; 3420 } 3421 leaf op-ref-scope { 3422 if-feature operation-ref-scope; 3423 type fpc:ref-scope; 3424 description "Reference Scope"; 3425 } 3426 uses fpc:instructions; 3427 description "Operation Header"; 3428 } 3430 grouping clone-ref { 3431 leaf entity { 3432 type fpc:fpc-identity; 3433 description "Clone ID"; 3434 } 3435 leaf source { 3436 type fpc:fpc-identity; 3437 description "Source"; 3438 } 3439 description "Clone Reference"; 3440 } 3442 identity command-set { 3443 description "protocol specific commands"; 3444 } 3446 grouping context-operation { 3447 uses fpc:fpc-context; 3448 uses fpc:instructions; 3449 description "Context Operation"; 3450 } 3452 // Output Structure 3453 grouping payload { 3454 list ports { 3455 uses fpc:fpc-vport; 3456 description "Ports"; 3457 } 3458 list contexts { 3459 uses fpc:context-operation; 3460 description "Contexts"; 3461 } 3462 list policy-groups { 3463 if-feature fpc:policy-rpc-provisioning; 3464 key "policy-group-id"; 3465 uses fpc:fpc-policy-group; 3466 description "Policy Groups"; 3467 } 3468 list policies { 3469 if-feature fpc:policy-rpc-provisioning; 3470 key "policy-id"; 3471 uses fpc:fpc-policy; 3472 description "Policies"; 3473 } 3474 list descriptors { 3475 if-feature fpc:policy-rpc-provisioning; 3476 key descriptor-id; 3477 uses fpc:fpc-descriptor; 3478 description "Descriptors"; 3479 } 3480 list actions { 3481 if-feature fpc:policy-rpc-provisioning; 3482 key action-id; 3483 uses fpc:fpc-action; 3484 description "Actions"; 3485 } 3486 description "Payload"; 3487 } 3489 grouping op-input { 3490 uses fpc:op-header; 3491 leaf op-id { 3492 type op-identifier; 3493 description "Operation ID"; 3494 } 3495 choice op_body { 3496 case create_or_update { 3497 list clones { 3498 if-feature fpc-cloning; 3499 key entity; 3500 uses fpc:clone-ref; 3501 description "Clones"; 3502 } 3503 uses fpc:payload; 3504 description "Create/Update input"; 3505 } 3506 case delete_or_query { 3507 uses fpc:targets-value; 3508 description "Delete/Query input"; 3509 } 3510 description "Opeartion Input value"; 3511 } 3512 description "Operation Input"; 3513 } 3515 typedef result { 3516 type enumeration { 3517 enum ok { 3518 value 0; 3519 description "OK"; 3520 } 3521 enum err { 3522 value 1; 3523 description "Error"; 3524 } 3525 enum ok-notify-follows { 3526 value 2; 3527 description "OK with NOTIFY following"; 3528 } 3529 } 3530 description "Result Status"; 3532 } 3534 identity error-type { 3535 description "Base Error Type"; 3536 } 3537 identity name-already-exists { 3538 description "Notification that an entity of the same name 3539 already exists"; 3540 } 3542 typedef error-type-id { 3543 type uint32; 3544 description "Integer form of the Error Type"; 3545 } 3547 grouping op-status-value { 3548 leaf op-status { 3549 type enumeration { 3550 enum ok { 3551 value 0; 3552 description "OK"; 3553 } 3554 enum err { 3555 value 1; 3556 description "Error"; 3557 } 3558 } 3559 description "Operation Status"; 3560 } 3561 description "Operation Status Value"; 3562 } 3564 grouping error-info { 3565 leaf error-type-id { 3566 type fpc:error-type-id; 3567 description "Error ID"; 3568 } 3569 leaf error-info { 3570 type string { 3571 length "1..1024"; 3572 } 3573 description "Error Detail"; 3574 } 3575 description "Error Information"; 3576 } 3578 grouping result-body { 3579 leaf op-id { 3580 type op-identifier; 3581 description "Operation Identifier"; 3582 } 3583 choice result-type { 3584 case err { 3585 uses fpc:error-info; 3586 description "Error Information"; 3587 } 3588 case create-or-update-success { 3589 uses fpc:payload; 3590 description "Create/Update Success"; 3591 } 3592 case delete_or_query-success { 3593 uses fpc:targets-value; 3594 description "Delete/Query Success"; 3595 } 3596 case empty-case { 3597 description "Empty Case"; 3598 } 3599 description "Result Value"; 3600 } 3601 description "Result Body"; 3602 } 3604 // Common RPCs 3605 rpc configure { 3606 description "CONF message"; 3607 input { 3608 uses fpc:op-input; 3609 } 3610 output { 3611 leaf result { 3612 type result; 3613 description "Result"; 3614 } 3615 uses fpc:result-body; 3616 } 3617 } 3619 rpc configure-bundles { 3620 if-feature fpc:fpc-bundles; 3621 description "CONF_BUNDLES message"; 3622 input { 3623 leaf highest-op-ref-scope { 3624 if-feature operation-ref-scope; 3625 type fpc:ref-scope; 3626 description "Highest Op-Ref used in the input"; 3627 } 3628 list bundles { 3629 key op-id; 3630 uses fpc:op-input; 3631 description "List of operations"; 3632 } 3633 } 3634 output { 3635 list bundles { 3636 key op-id; 3637 uses fpc:result-body; 3638 description "Operation Identifier"; 3639 } 3640 } 3641 } 3643 // Notification Messages & Structures 3644 typedef notification-id { 3645 type uint32; 3646 description "Notification Identifier"; 3647 } 3649 grouping notification-header { 3650 leaf notification-id { 3651 type fpc:notification-id; 3652 description "Notification ID"; 3653 } 3654 leaf timestamp { 3655 type uint32; 3656 description "timestamp"; 3657 } 3658 description "Notification Header"; 3659 } 3661 notification config-result-notification { 3662 uses fpc:notification-header; 3663 choice value { 3664 case config-result { 3665 uses fpc:op-status-value; 3666 uses fpc:result-body; 3667 description "CONF Result"; 3668 } 3669 case config-bundle-result { 3670 list bundles { 3671 uses fpc:op-status-value; 3672 uses fpc:result-body; 3673 description "Operation Results"; 3674 } 3675 description "CONF_BUNDLES Result"; 3677 } 3678 description "Config Result value"; 3679 } 3680 description "CONF/CONF_BUNDLES Async Result"; 3681 } 3683 rpc event_register { 3684 description "Used to register monitoring of parameters/events"; 3685 input { 3686 uses fpc:monitor-config; 3687 } 3688 output { 3689 leaf monitor-result { 3690 type fpc:result; 3691 description "Result"; 3692 } 3693 uses fpc:error-info; 3694 } 3695 } 3697 rpc event_deregister { 3698 description "Used to de-register monitoring of 3699 parameters/events"; 3700 input { 3701 list monitors { 3702 uses fpc:monitor-id; 3703 description "Monitor ID"; 3704 } 3705 } 3706 output { 3707 leaf monitor-result { 3708 type fpc:result; 3709 description "Result"; 3710 } 3711 uses fpc:error-info; 3712 } 3714 } 3716 rpc probe { 3717 description "Probe the status of a registered monitor"; 3718 input { 3719 uses fpc:targets-value; 3720 } 3721 output { 3722 leaf monitor-result { 3723 type fpc:result; 3724 description "Result"; 3726 } 3727 uses fpc:error-info; 3728 } 3729 } 3731 notification notify { 3732 uses fpc:notification-header; 3733 choice value { 3734 case dpn-candidate-available { 3735 if-feature fpc:fpc-auto-binding; 3736 leaf node-id { 3737 type inet:uri; 3738 description "Topology URI"; 3739 } 3740 leaf-list access-types { 3741 type identityref { 3742 base "fpc:fpc-access-type"; 3743 } 3744 description "Access Types"; 3745 } 3746 leaf-list mobility-profiles { 3747 type identityref { 3748 base "fpc:fpc-mobility-profile-type"; 3749 } 3750 description "Mobility Profiles"; 3751 } 3752 leaf-list forwarding-plane-roles { 3753 type identityref { 3754 base "fpc:fpc-data-plane-role"; 3755 } 3756 description "Forwarding Plane Role"; 3757 } 3758 description "DPN Candidate Availability"; 3759 } 3760 case monitor-notification { 3761 choice monitor-notification-value { 3762 case monitoring-suspension { 3763 leaf monitoring-suspended { 3764 type empty; 3765 description "Indicates that monitoring has 3766 uspended"; 3767 } 3768 leaf suspension-note { 3769 type string; 3770 description "Indicates the monitoring 3771 suspension reason"; 3772 } 3773 } 3774 case monitoring-resumption { 3775 leaf monitoring-resumed { 3776 type empty; 3777 description "Indicates that monitoring 3778 has resumed"; 3779 } 3780 } 3781 case simple-monitor { 3782 uses fpc:report; 3783 description "Report"; 3784 } 3785 case bulk-monitors { 3786 list reports { 3787 uses fpc:report; 3788 description "Reports"; 3789 } 3790 description "Bulk Monitor Response"; 3791 } 3792 description "Monitor Notification value"; 3793 } 3794 description "Monitor Notification"; 3795 } 3796 description "Notify Value"; 3797 } 3798 description "Notify Message"; 3799 } 3800 } 3801 3803 A.2. YANG Models 3805 A.2.1. FPC YANG Model 3807 This module defines the base data elements specified in this 3808 document. 3810 This module references [RFC6991]. 3812 file "ietf-dmm-fpc-base@2017-03-08.yang" 3813 submodule ietf-dmm-fpc-base { 3814 belongs-to ietf-dmm-fpc { 3815 prefix fpc; 3816 } 3818 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 3819 import ietf-yang-types { prefix ytypes; 3820 revision-date 2013-07-15; } 3822 organization "IETF Distributed Mobility Management (DMM) 3823 Working Group"; 3825 contact 3826 "WG Web: 3827 WG List: 3829 WG Chair: Dapeng Liu 3830 3832 WG Chair: Jouni Korhonen 3833 3835 Editor: Satoru Matsushima 3836 3838 Editor: Lyle Bertz 3839 "; 3841 description 3842 "This module contains YANG definition for 3843 Forwarding Policy Configuration Protocol(FPCP). 3845 Copyright (c) 2016 IETF Trust and the persons identified as the 3846 document authors. All rights reserved. 3848 This document is subject to BCP 78 and the IETF Trust's Legal 3849 Provisions Relating to IETF Documents 3850 (http://trustee.ietf.org/license-info) in effect on the date of 3851 publication of this document. Please review these documents 3852 carefully, as they describe your rights and restrictions with 3853 respect to this document. Code Components extracted from this 3854 document must include Simplified BSD License text as described 3855 in Section 4.e of the Trust Legal Provisions and are provided 3856 without warranty as described in the Simplified BSD License."; 3858 revision 2017-03-08 { 3859 description "Version 06 updates."; 3860 reference "draft-ietf-dmm-fpc-cpdp-06"; 3861 } 3863 revision 2016-08-03 { 3864 description "Initial Revision."; 3865 reference "draft-ietf-dmm-fpc-cpdp-05"; 3866 } 3868 feature fpc-basic-agent { 3869 description "This is an agent co-located with a DPN. In this 3870 case only DPN Peer Groups, the DPN Id and Control Protocols 3871 are exposed along with the core structures."; 3872 } 3873 feature fpc-multi-dpn { 3874 description "The agent supports multiple DPNs."; 3875 } 3877 typedef fpc-identity { 3878 type union { 3879 type uint32; 3880 type string; 3881 type instance-identifier; 3882 } 3883 description "FPC Identity"; 3884 } 3886 grouping target-value { 3887 leaf target { 3888 type fpc-identity; 3889 description "Target Identity"; 3890 } 3891 description "FPC Target Value"; 3892 } 3894 grouping targets-value { 3895 list targets { 3896 key "target"; 3897 leaf target { 3898 type fpc-identity; 3899 description "Target Id"; 3900 } 3901 leaf dpn-id { 3902 type fpc:fpc-dpn-id; 3903 description "DPN Id"; 3904 } 3905 description "List of Targets"; 3906 } 3907 description "Targets Value"; 3908 } 3910 // Descriptor Structure 3911 typedef fpc-descriptor-id-type { 3912 type fpc:fpc-identity; 3913 description "Descriptor-ID"; 3914 } 3915 identity fpc-descriptor-type { 3916 description "A traffic descriptor"; 3917 } 3918 grouping fpc-descriptor-id { 3919 leaf descriptor-id { 3920 type fpc:fpc-identity; 3921 description "Descriptor Id"; 3922 } 3923 description "FPC Descriptor ID value"; 3924 } 3925 grouping fpc-descriptor { 3926 uses fpc:fpc-descriptor-id; 3927 leaf descriptor-type { 3928 type identityref { 3929 base "fpc-descriptor-type"; 3930 } 3931 mandatory true; 3932 description "Descriptor Type"; 3933 } 3934 choice descriptor-value { 3935 case all-traffic { 3936 leaf all-traffic { 3937 type empty; 3938 description "Empty Value"; 3939 } 3940 } 3941 description "Descriptor Value"; 3942 } 3943 description "FPC Descriptor"; 3944 } 3946 // Action Structure 3947 typedef fpc-action-id-type { 3948 type fpc:fpc-identity; 3949 description "Action-ID"; 3950 } 3951 identity fpc-action-type { 3952 description "Action Type"; 3953 } 3954 grouping fpc-action-id { 3955 leaf action-id { 3956 type fpc:fpc-action-id-type; 3957 description "Action Identifier"; 3958 } 3959 description "FPC Action ID"; 3960 } 3961 grouping fpc-action { 3962 uses fpc:fpc-action-id; 3963 leaf action-type { 3964 type identityref { 3965 base "fpc-action-type"; 3967 } 3968 mandatory true; 3969 description "Action Type"; 3970 } 3971 choice action-value { 3972 case drop { 3973 leaf drop { 3974 type empty; 3975 description "Empty Value"; 3976 } 3977 } 3978 description "FPC Action Value"; 3979 } 3980 description "FPC Action"; 3981 } 3983 // Rule Structure 3984 grouping fpc-rule { 3985 list descriptors { 3986 key descriptor-id; 3987 uses fpc:fpc-descriptor-id; 3988 leaf direction { 3989 type fpc:fpc-direction; 3990 description "Direction"; 3991 } 3992 description "Descriptors"; 3993 } 3994 list actions { 3995 key action-id; 3996 leaf action-order { 3997 type uint32; 3998 description "Action Execution Order"; 3999 } 4000 uses fpc:fpc-action-id; 4001 description "Actions"; 4002 } 4003 description 4004 "FPC Rule. When no actions are present the action is DROP. 4005 When no Descriptors are empty the default is 4006 'all traffic'."; 4007 } 4009 // Policy Structures 4010 typedef fpc-policy-id { 4011 type fpc:fpc-identity; 4012 description "Policy Identifier"; 4013 } 4014 grouping fpc-policy { 4015 leaf policy-id { 4016 type fpc:fpc-policy-id; 4017 description "Policy Id"; 4018 } 4019 list rules { 4020 key order; 4021 leaf order { 4022 type uint32; 4023 description "Rule Order"; 4024 } 4025 uses fpc:fpc-rule; 4026 description "Rules"; 4027 } 4028 description "FPC Policy"; 4029 } 4031 // Policy Group 4032 typedef fpc-policy-group-id { 4033 type fpc:fpc-identity; 4034 description "Policy Group Identifier"; 4035 } 4036 grouping fpc-policy-group { 4037 leaf policy-group-id { 4038 type fpc:fpc-policy-group-id; 4039 description "Policy Group ID"; 4040 } 4041 leaf-list policies { 4042 type fpc:fpc-policy-id; 4043 description "Policies"; 4044 } 4045 description "FPC Policy Group"; 4046 } 4048 // Mobility Structures 4049 // Port Group 4050 typedef fpc-vport-id { 4051 type fpc:fpc-identity; 4052 description "FPC Port Identifier"; 4053 } 4054 grouping fpc-vport { 4055 leaf vport-id { 4056 type fpc:fpc-vport-id; 4057 description "Port ID"; 4058 } 4059 leaf-list policy-groups { 4060 type fpc:fpc-policy-group-id; 4061 description "Policy Groups"; 4062 } 4063 description "FPC Port"; 4064 } 4066 // Context Group 4067 typedef fpc-context-id { 4068 type fpc:fpc-identity; 4069 description "FPC Context Identifier"; 4070 } 4071 grouping fpc-context-profile { 4072 leaf tunnel-local-address { 4073 type inet:ip-address; 4074 description "endpoint address of the DPN which a 4075 gent exists."; 4076 } 4077 leaf tunnel-remote-address { 4078 type inet:ip-address; 4079 description "endpoint address of the DPN which 4080 agent exists."; 4081 } 4082 leaf mtu-size { 4083 type uint32; 4084 description "MTU size"; 4085 } 4086 container mobility-tunnel-parameters { 4087 uses fpc:mobility-info; 4088 description 4089 "Specifies profile specific lylebe551144 tunnel 4090 parameters to the DPN which the agent exists. The 4091 profiles includes GTP/TEID for 3gpp profile, GRE/Key for 4092 ietf-pmip profile, or new profile if anyone will define 4093 it."; 4094 } 4095 container nexthop { 4096 uses fpc:fpc-nexthop; 4097 description "Next Hop"; 4098 } 4099 container qos-profile-parameters { 4100 uses fpc:fpc-qos-profile; 4101 description "QoS Parameters"; 4102 } 4103 container dpn-parameters { 4104 description "DPN Parameters"; 4105 } 4106 list vendor-parameters { 4107 key "vendor-id vendor-type"; 4108 uses fpc:vendor-attributes; 4109 description "Vendor Parameters"; 4110 } 4111 description "A profile that applies to a specific direction"; 4112 } 4114 typedef fpc-direction { 4115 type enumeration { 4116 enum lylebe551144 { 4117 description "lylebe551144"; 4118 } 4119 enum downlink { 4120 description "Downlink"; 4121 } 4122 enum both { 4123 description "Both"; 4124 } 4125 } 4126 description "FPC Direction"; 4127 } 4129 grouping fpc-context { 4130 leaf context-id { 4131 type fpc:fpc-context-id; 4132 description "Context ID"; 4133 } 4134 leaf-list vports { 4135 type fpc:fpc-vport-id; 4136 description "Vports"; 4137 } 4138 leaf dpn-group { 4139 type fpc:fpc-dpn-group-id; 4140 description "DPN Group"; 4141 } 4142 leaf-list delegated-ip-prefixes { 4143 type inet:ip-prefix; 4144 description "Delegated Prefix(es)"; 4145 } 4146 container ul { 4147 if-feature fpc:fpc-basic-agent; 4148 uses fpc:fpc-context-profile; 4149 description "lylebe551144"; 4150 } 4151 container dl { 4152 if-feature fpc:fpc-basic-agent; 4153 uses fpc:fpc-context-profile; 4154 description "Downlink"; 4155 } 4156 list dpns { 4157 if-feature fpc:fpc-multi-dpn; 4158 key "dpn-id direction"; 4159 leaf dpn-id { 4160 type fpc:fpc-dpn-id; 4161 description "DPN"; 4162 } 4163 leaf direction { 4164 type fpc:fpc-direction; 4165 mandatory true; 4166 description "Direction"; 4167 } 4168 uses fpc:fpc-context-profile; 4169 description "DPNs"; 4170 } 4171 leaf parent-context { 4172 type fpc:fpc-context-id; 4173 description "Parent Context"; 4174 } 4175 description "FCP Context"; 4176 } 4178 // Mobility (Tunnel) Information 4179 grouping mobility-info { 4180 choice profile-parameters { 4181 case nothing { 4182 leaf none { 4183 type empty; 4184 description "Empty Value"; 4185 } 4186 description "No Parameters Case"; 4187 } 4188 description "Mobility Profile Parameters"; 4189 } 4190 description "Mobility Information"; 4191 } 4193 // Next Hop Structures 4194 typedef fpc-service-path-id { 4195 type uint32 { 4196 range "0..33554431"; 4197 } 4198 description "SERVICE_PATH_ID"; 4199 } 4200 typedef fpc-mpls-label { 4201 type uint32 { 4202 range "0..1048575"; 4203 } 4204 description "MPLS label"; 4205 } 4206 identity fpc-nexthop-type { 4207 description "Next Hop Type"; 4208 } 4209 identity fpc-nexthop-ip { 4210 base "fpc:fpc-nexthop-type"; 4211 description "Nexthop IP"; 4212 } 4213 identity fpc-nexthop-servicepath { 4214 base "fpc:fpc-nexthop-type"; 4215 description "Nexthop Service Path"; 4216 } 4217 identity fpc-nexthop-mac { 4218 base "fpc:fpc-nexthop-type"; 4219 description "Nexthop MAC-Address"; 4220 } 4221 identity fpc-nexthop-mpls { 4222 base "fpc:fpc-nexthop-type"; 4223 description "Nexthop MPLS"; 4224 } 4225 identity fpc-nexthop-if { 4226 base "fpc:fpc-nexthop-type"; 4227 description "Nexthop If index"; 4228 } 4229 grouping fpc-nexthop { 4230 leaf nexthop-type { 4231 type identityref { 4232 base "fpc:fpc-nexthop-type"; 4233 } 4234 description "Nexthop Type"; 4235 } 4236 choice nexthop-value { 4237 case ip-nexthop { 4238 leaf ip { 4239 type inet:ip-address; 4240 description "IP Value"; 4241 } 4242 description "IP Case"; 4243 } 4244 case macaddress-nexthop { 4245 leaf macaddress { 4246 type ytypes:mac-address; 4247 description "MAC Address Value"; 4248 } 4249 } 4250 case servicepath-nexthop { 4251 leaf servicepath { 4252 type fpc:fpc-service-path-id; 4253 description "Service Path Value"; 4255 } 4256 description "Service Path Case"; 4257 } 4258 case mplslabel-nexthop { 4259 leaf lsp { 4260 type fpc:fpc-mpls-label; 4261 description "MPLS Value"; 4262 } 4263 description "Service Path Case"; 4264 } 4265 case if-nexthop { 4266 leaf if-index { 4267 type uint16; 4268 description "If (interface) Value"; 4269 } 4270 description "Service Path Case"; 4271 } 4272 description "Value"; 4273 } 4274 description "Nexthop Value"; 4275 } 4277 // QoS Information 4278 identity fpc-qos-type { 4279 description "Base identity from which specific uses of QoS 4280 types are derived."; 4281 } 4282 grouping fpc-qos-profile { 4283 leaf qos-type { 4284 type identityref { 4285 base fpc:fpc-qos-type; 4286 } 4287 description "the profile type"; 4288 } 4289 choice value { 4290 description "QoS Value"; 4291 } 4292 description "QoS Profile"; 4293 } 4295 // Vendor Specific Attributes 4296 identity vendor-specific-type { 4297 description "Vendor Specific Attribute Type"; 4298 } 4299 grouping vendor-attributes { 4300 leaf vendor-id { 4301 type fpc:fpc-identity; 4302 description "Vendor ID"; 4304 } 4305 leaf vendor-type { 4306 type identityref { 4307 base "fpc:vendor-specific-type"; 4308 } 4309 description "Attribute Type"; 4310 } 4311 choice value { 4312 case empty-type { 4313 leaf empty-type { 4314 type empty; 4315 description "Empty Value"; 4316 } 4317 description "Empty Case"; 4318 } 4319 description "Atttribute Value"; 4320 } 4321 description "Vendor Specific Attributes"; 4322 } 4324 // Topology 4325 typedef fpc-domain-id { 4326 type fpc:fpc-identity; 4327 description "Domain Identifier"; 4328 } 4329 grouping fpc-domain { 4330 leaf domain-id { 4331 type fpc:fpc-domain-id; 4332 description "Domain ID"; 4333 } 4334 leaf domain-name { 4335 type string; 4336 description "Domain Name"; 4337 } 4338 leaf domain-type { 4339 type string; 4340 description "Domain Type"; 4341 } 4342 leaf domain-reference { 4343 type instance-identifier; 4344 description "Indicates a set of resources for the domain"; 4345 } 4346 description "FPC Domain"; 4347 } 4349 typedef fpc-dpn-id { 4350 type fpc:fpc-identity; 4351 description "DPN Identifier"; 4353 } 4354 identity fpc-dpn-control-protocol { 4355 description "DPN Control Protocol"; 4356 } 4357 grouping fpc-dpn { 4358 leaf dpn-id { 4359 type fpc:fpc-dpn-id; 4360 description "DPN ID"; 4361 } 4362 leaf dpn-name { 4363 type string; 4364 description "DPN Name"; 4365 } 4366 leaf-list dpn-groups { 4367 type fpc:fpc-dpn-group-id; 4368 description "DPN Groups"; 4369 } 4370 leaf node-reference { 4371 type instance-identifier; 4372 description "DPN => Node (Topology) Mapping"; 4373 } 4374 description "FPC DPN"; 4375 } 4377 typedef fpc-dpn-group-id { 4378 type fpc:fpc-identity; 4379 description "DPN Group Identifier"; 4380 } 4381 identity fpc-data-plane-role { 4382 description "Role of DPN Group in the Forwarding Plane"; 4383 } 4384 identity fpc-access-dpn-role { 4385 base "fpc:fpc-data-plane-role"; 4386 description "Access DPN Role"; 4387 } 4388 identity fpc-anchor-dpn-role { 4389 base "fpc:fpc-data-plane-role"; 4390 description "Anchor DPN Role"; 4391 } 4393 identity fpc-access-type { 4394 description "Access Type of the DPN Group"; 4395 } 4396 identity fpc-mobility-profile-type { 4397 description "Mobility Profile Type"; 4398 } 4400 grouping fpc-dpn-peer-group { 4401 leaf remote-dpn-group-id { 4402 type fpc:fpc-dpn-group-id; 4403 description "Remote DPN Group ID"; 4404 } 4405 leaf remote-mobility-profile { 4406 type identityref { 4407 base "fpc:fpc-mobility-profile-type"; 4408 } 4409 description "Mobility Profile"; 4410 } 4411 leaf remote-data-plane-role { 4412 type identityref { 4413 base "fpc:fpc-data-plane-role"; 4414 } 4415 description "Forwarding Plane Role"; 4416 } 4417 leaf remote-endpoint-address { 4418 type inet:ip-address; 4419 description "Remote Endpoint Address"; 4420 } 4421 leaf local-endpoint-address { 4422 type inet:ip-address; 4423 description "Local Endpoint Address"; 4424 } 4425 leaf mtu-size { 4426 type uint32; 4427 description "MTU Size"; 4428 } 4429 description "FPC DPN Peer Group"; 4430 } 4432 // Events, Probes & Notifications 4433 identity event-type { 4434 description "Base Event Type"; 4435 } 4436 typedef event-type-id { 4437 type uint32; 4438 description "Event ID Type"; 4439 } 4441 grouping monitor-id { 4442 leaf monitor-id { 4443 type fpc:fpc-identity; 4444 description "Monitor Identifier"; 4445 } 4446 description "Monitor ID"; 4447 } 4448 identity report-type { 4449 description "Type of Report"; 4450 } 4451 identity periodic-report { 4452 base "fpc:report-type"; 4453 description "Periodic Report"; 4454 } 4455 identity threshold-report { 4456 base "fpc:report-type"; 4457 description "Threshold Report"; 4458 } 4459 identity scheduled-report { 4460 base "fpc:report-type"; 4461 description "Scheduled Report"; 4462 } 4463 identity events-report { 4464 base "fpc:report-type"; 4465 description "Events Report"; 4466 } 4468 grouping report-config { 4469 choice event-config-value { 4470 case periodic-config { 4471 leaf period { 4472 type uint32; 4473 description "Period"; 4474 } 4475 description "Periodic Config Case"; 4476 } 4477 case threshold-config { 4478 leaf lo-thresh { 4479 type uint32; 4480 description "lo threshold"; 4481 } 4482 leaf hi-thresh { 4483 type uint32; 4484 description "hi threshold"; 4485 } 4486 description "Threshold Config Case"; 4487 } 4488 case scheduled-config { 4489 leaf report-time { 4490 type uint32; 4491 description "Reporting Time"; 4492 } 4493 description "Scheduled Config Case"; 4494 } 4495 case events-config-ident { 4496 leaf-list event-identities { 4497 type identityref { 4498 base "fpc:event-type"; 4499 } 4500 description "Event Identities"; 4501 } 4502 description "Events Config Identities Case"; 4503 } 4504 case events-config { 4505 leaf-list event-ids { 4506 type uint32; 4507 description "Event IDs"; 4508 } 4509 description "Events Config Case"; 4510 } 4511 description "Event Config Value"; 4512 } 4513 description "Report Configuration"; 4514 } 4516 grouping monitor-config { 4517 uses fpc:monitor-id; 4518 uses fpc:target-value; 4519 uses fpc:report-config; 4520 description "Monitor Configuration"; 4521 } 4523 grouping report { 4524 uses fpc:monitor-config; 4525 choice report-value { 4526 leaf trigger { 4527 type fpc:event-type-id; 4528 description "Trigger Identifier"; 4529 } 4530 case simple-empty { 4531 leaf nothing { 4532 type empty; 4533 description "Empty Value"; 4534 } 4535 description "Empty Case"; 4536 } 4537 case simple-val32 { 4538 leaf val32 { 4539 type uint32; 4540 description "Unsigned 32 bit value"; 4541 } 4542 description "Simple Value Case"; 4543 } 4544 description "Report Value"; 4545 } 4546 description "Monitor Report"; 4547 } 4548 } 4549 4551 A.2.2. PMIP QoS Model 4553 This module defines the base protocol elements specified in this 4554 document. 4556 This module references [RFC6991] and the traffic-selector-types 4557 module defined in this document. 4559 file "ietf-pmip-qos@2016-02-10.yang" 4560 module ietf-pmip-qos { 4561 yang-version 1; 4563 namespace 4564 "urn:ietf:params:xml:ns:yang:ietf-pmip-qos"; 4566 prefix "qos-pmip"; 4568 import ietf-inet-types { 4569 prefix inet; 4570 revision-date 2013-07-15; 4571 } 4572 import ietf-traffic-selector-types { prefix traffic-selectors; } 4574 organization "IETF Distributed Mobility Management (DMM) 4575 Working Group"; 4577 contact 4578 "WG Web: 4579 WG List: 4581 WG Chair: Dapeng Liu 4582 4584 WG Chair: Jouni Korhonen 4585 4587 Editor: Satoru Matsushima 4588 4590 Editor: Lyle Bertz 4591 "; 4593 description 4594 "This module contains a collection of YANG definitions for 4595 quality of service paramaters used in Proxy Mobile IPv6. 4597 Copyright (c) 2016 IETF Trust and the persons identified as the 4598 document authors. All rights reserved. 4600 This document is subject to BCP 78 and the IETF Trust's Legal 4601 Provisions Relating to IETF Documents 4602 (http://trustee.ietf.org/license-info) in effect on the date of 4603 publication of this document. Please review these documents 4604 carefully, as they describe your rights and restrictions with 4605 respect to this document. Code Components extracted from this 4606 document must include Simplified BSD License text as described 4607 in Section 4.e of the Trust Legal Provisions and are provided 4608 without warranty as described in the Simplified BSD License."; 4610 revision 2016-02-10 { 4611 description "Initial revision"; 4612 reference 4613 "RFC 7222: Quality-of-Service Option for Proxy Mobile IPv6"; 4614 } 4616 // Type Definitions 4618 // QoS Option Field Type Definitions 4619 typedef sr-id { 4620 type uint8; 4621 description 4622 "An 8-bit unsigned integer used] 4623 for identifying the QoS Service Request. Its uniqueness is 4624 within the scope of a mobility session. The local mobility 4625 anchor always allocates the Service Request Identifier. 4626 When a new QoS Service Request is initiated by a mobile 4627 access gateway, the Service Request Identifier in the initial 4628 request message is set to a value of (0), and the local 4629 mobility anchor allocates a Service Request Identifier and 4630 includes it in the response. For any new QoS Service 4631 Requests initiated by a local mobility anchor, the 4632 Service Request Identifier is set to the allocated value."; 4633 } 4635 typedef traffic-class { 4636 type inet:dscp; 4637 description 4638 "Traffic Class consists of a 6-bit DSCP field followed by a 4639 2-bit reserved field."; 4640 reference 4641 "RFC 3289: Management Information Base for the Differentiated 4642 Services Architecture 4643 RFC 2474: Definition of the Differentiated Services Field 4644 (DS Field) in the IPv4 and IPv6 Headers 4645 RFC 2780: IANA Allocation Guidelines For Values In 4646 the Internet Protocol and Related Headers"; 4647 } 4649 typedef operational-code { 4650 type enumeration { 4651 enum RESPONSE { 4652 value 0; 4653 description "Response to a QoS request"; 4654 } 4655 enum ALLOCATE { 4656 value 1; 4657 description "Request to allocate QoS resources"; 4658 } 4659 enum DE-ALLOCATE { 4660 value 2; 4661 description "Request to de-Allocate QoS resources"; 4662 } 4663 enum MODIFY { 4664 value 3; 4665 description "Request to modify QoS parameters for a 4666 previously negotiated QoS Service Request"; 4667 } 4668 enum QUERY { 4669 value 4; 4670 description "Query to list the previously negotiated QoS 4671 Service Requests that are still active"; 4672 } 4673 enum NEGOTIATE { 4674 value 5; 4675 description "Response to a QoS Service Request with a 4676 counter QoS proposal"; 4677 } 4678 } 4679 description 4680 "1-octet Operational code indicates the type of QoS request. 4681 Reserved values: (6) to (255) 4682 Currently not used. Receiver MUST ignore the option 4683 received with any value in this range."; 4684 } 4686 // QoS Attribute Types 4688 //The enumeration value for mapping - don't confuse with the 4689 // identities 4690 typedef qos-attrubite-type-enum { 4691 type enumeration { 4692 enum Reserved { 4693 value 0; 4694 description "This value is reserved and cannot be used"; 4695 } 4696 enum Per-MN-Agg-Max-DL-Bit-Rate { 4697 value 1; 4698 description "Per-Mobile-Node Aggregate Maximum Downlink 4699 Bit Rate."; 4700 } 4701 enum Per-MN-Agg-Max-UL-Bit-Rate { 4702 value 2; 4703 description "Per-Mobile-Node Aggregate Maximum Uplink Bit 4704 Rate."; 4705 } 4706 enum Per-Session-Agg-Max-DL-Bit-Rate { 4707 value 3; 4708 description "Per-Mobility-Session Aggregate Maximum 4709 Downlink Bit Rate."; 4710 } 4711 enum Per-Session-Agg-Max-UL-Bit-Rate { 4712 value 4; 4713 description "Per-Mobility-Session Aggregate Maximum 4714 Uplink Bit Rate."; 4715 } 4716 enum Allocation-Retention-Priority { 4717 value 5; 4718 description "Allocation and Retention Priority."; 4719 } 4720 enum Aggregate-Max-DL-Bit-Rate { 4721 value 6; 4722 description "Aggregate Maximum Downlink Bit Rate."; 4723 } 4724 enum Aggregate-Max-UL-Bit-Rate { 4725 value 7; 4726 description "Aggregate Maximum Uplink Bit Rate."; 4727 } 4728 enum Guaranteed-DL-Bit-Rate { 4729 value 8; 4730 description "Guaranteed Downlink Bit Rate."; 4731 } 4732 enum Guaranteed-UL-Bit-Rate { 4733 value 9; 4734 description "Guaranteed Uplink Bit Rate."; 4735 } 4736 enum QoS-Traffic-Selector { 4737 value 10; 4738 description "QoS Traffic Selector."; 4739 } 4740 enum QoS-Vendor-Specific-Attribute { 4741 value 11; 4742 description "QoS Vendor-Specific Attribute."; 4743 } 4744 } 4745 description 4746 "8-bit unsigned integer indicating the type of the QoS 4747 attribute. This specification reserves the following 4748 reserved values. 4749 (12) to (254) - Reserved 4750 These values are reserved for future allocation. 4752 (255) Reserved 4753 This value is reserved and cannot be used."; 4754 } 4756 // Attribute Type as Identities 4757 // Added for convenience of inclusion and extension in 4758 // other YANG modules. 4759 identity qos-attribute-type { 4760 description 4761 "Base type for Quality of Service Attributes"; 4762 } 4764 identity Per-MN-Agg-Max-DL-Bit-Rate-type { 4765 base qos-attribute-type; 4766 description 4767 "Per-Mobile-Node Aggregate Maximum Downlink Bit Rate."; 4768 } 4770 identity Per-MN-Agg-Max-UL-Bit-Rate-type { 4771 base qos-attribute-type; 4772 description 4773 "Per-Mobile-Node Aggregate Maximum Uplink Bit Rate"; 4774 } 4776 identity Per-Session-Agg-Max-DL-Bit-Rate-type { 4777 base qos-attribute-type; 4778 description 4779 "Per-Mobility-Session Aggregate Maximum Downlink Bit Rate."; 4780 } 4782 identity Per-Session-Agg-Max-UL-Bit-Rate-type { 4783 base qos-attribute-type; 4784 description 4786 "Per-Mobility-Session Aggregate Maximum Uplink Bit Rate."; 4787 } 4789 identity Allocation-Retention-Priority-type { 4790 base qos-attribute-type; 4791 description 4792 "Allocation and Retention Priority."; 4793 } 4795 identity Aggregate-Max-DL-Bit-Rate-type { 4796 base qos-attribute-type; 4797 description "Aggregate Maximum Downlink Bit Rate."; 4798 } 4800 identity Aggregate-Max-UL-Bit-Rate-type { 4801 base qos-attribute-type; 4802 description "Aggregate Maximum Uplink Bit Rate."; 4803 } 4805 identity Guaranteed-DL-Bit-Rate-type { 4806 base qos-attribute-type; 4807 description "Guaranteed Downlink Bit Rate."; 4808 } 4810 identity Guaranteed-UL-Bit-Rate-type { 4811 base qos-attribute-type; 4812 description "Guaranteed Uplink Bit Rate."; 4813 } 4815 identity QoS-Traffic-Selector-type { 4816 base qos-attribute-type; 4817 description "QoS Traffic Selector."; 4818 } 4820 identity QoS-Vendor-Specific-Attribute-type { 4821 base qos-attribute-type; 4822 description "QoS Vendor-Specific Attribute."; 4823 } 4825 //value definitions 4826 typedef Per-MN-Agg-Max-DL-Bit-Rate-Value { 4827 type uint32; 4828 description 4829 "This is a 32-bit unsigned integer that 4830 indicates the aggregate maximum downlink bit rate that is 4831 requested/allocated for all the mobile node's IP flows. 4832 The measurement units for Per-MN-Agg-Max-DL-Bit-Rate are 4833 bits per second."; 4835 } 4837 typedef Per-MN-Agg-Max-UL-Bit-Rate-Value { 4838 type uint32; 4839 description 4840 "This is a 32-bit unsigned integer that 4841 indicates the aggregate maximum uplink bit rate that is 4842 requested/allocated for the mobile node's IP flows. The 4843 measurement units for Per-MN-Agg-Max-UL-Bit-Rate are bits 4844 per second."; 4845 } 4847 // Generic Structure for the uplink and downlink 4848 grouping Per-Session-Agg-Max-Bit-Rate-Value { 4849 leaf max-rate { 4850 type uint32; 4851 mandatory true; 4852 description 4853 "This is a 32-bit unsigned integer 4854 that indicates the aggregate maximum bit rate that is 4855 requested/allocated for all the IP flows associated with 4856 that mobility session. The measurement units for 4857 Per-Session-Agg-Max-UL/DL-Bit-Rate are bits per second."; 4858 } 4859 leaf service-flag { 4860 type boolean; 4861 mandatory true; 4862 description 4863 "This flag is used for extending the scope of the 4864 target flows for Per-Session-Agg-Max-UL/DL-Bit-Rate 4865 from(UL)/to(DL) the mobile node's other mobility sessions 4866 sharing the same Service Identifier. 3GPP Access Point Name 4867 (APN) is an example of a Service Identifier, and that 4868 identifier is carried using the Service Selection mobility 4869 option [RFC5149]. 4871 - When the (S) flag is set to a value of (1), then the 4872 Per-Session-Agg-Max-Bit-Rate is measured as an 4873 aggregate across all the mobile node's other mobility 4874 sessions sharing the same Service Identifier associated 4875 with this mobility session. 4877 - When the (S) flag is set to a value of (0), then the 4878 target flows are limited to the current mobility 4879 session. 4881 - The (S) flag MUST NOT be set to a value of (1) when there 4882 is no Service Identifier associated with the mobility 4883 session."; 4884 reference 4885 "RFC 5149 - Service Selection mobility option"; 4886 } 4887 leaf exclude-flag { 4888 type boolean; 4889 mandatory true; 4890 description 4891 "This flag is used to request that the uplink/downlink 4892 flows for which the network is providing 4893 Guaranteed-Bit-Rate service be excluded from the 4894 target IP flows for which 4895 Per-Session-Agg-Max-UL/DL-Bit-Rate is measured. 4897 - When the (E) flag is set to a value of (1), then the 4898 request is to exclude the IP flows for which 4899 Guaranteed-UL/DL-Bit-Rate is negotiated from the flows 4900 for which Per-Session-Agg-Max-UL/DL-Bit-Rate 4901 is measured. 4903 - When the (E) flag is set to a value of (0), then the 4904 request is not to exclude any IP flows from the target 4905 IP flows for which Per-Session-Agg-Max-UL/DL-Bit-Rate 4906 is measured. 4908 - When the (S) flag and (E) flag are both set to a value 4909 of (1), then the request is to exclude all the IP flows 4910 sharing the Service Identifier associated with this 4911 mobility session from the target flows for which 4912 Per-Session-Agg-Max-UL/DL-Bit-Rate is measured."; 4913 } 4914 description "Per-Session-Agg-Max-Bit-Rate Value"; 4915 } 4917 grouping Allocation-Retention-Priority-Value { 4918 leaf prioirty-level { 4919 type uint8 { 4920 range "0..15"; 4921 } 4922 mandatory true; 4923 description 4924 "This is a 4-bit unsigned integer value. It is used to decide 4925 whether a mobility session establishment or modification 4926 request can be accepted; this is typically used for 4927 admission control of Guaranteed Bit Rate traffic in case of 4928 resource limitations. The priority level can also be used to 4929 decide which existing mobility session to preempt during 4930 resource limitations. The priority level defines the 4931 relative timeliness of a resource request. 4933 Values 1 to 15 are defined, with value 1 as the highest level 4934 of priority. 4936 Values 1 to 8 should only be assigned for services that are 4937 authorized to receive prioritized treatment within an 4938 operator domain. Values 9 to 15 may be assigned to resources 4939 that are authorized by the home network and thus applicable 4940 when a mobile node is roaming."; 4941 } 4942 leaf premption-capability { 4943 type enumeration { 4944 enum enabled { 4945 value 0; 4946 description "enabled"; 4947 } 4948 enum disabled { 4949 value 1; 4950 description "disabled"; 4951 } 4952 enum reserved1 { 4953 value 2; 4954 description "reserved1"; 4955 } 4956 enum reserved2 { 4957 value 3; 4958 description "reserved2"; 4959 } 4960 } 4961 mandatory true; 4962 description 4963 "This is a 2-bit unsigned integer value. It defines whether a 4964 service data flow can get resources that were already 4965 assigned to another service data flow with a lower priority 4966 level. The following values are defined: 4968 Enabled (0): This value indicates that the service data flow 4969 is allowed to get resources that were already assigned to 4970 another IP data flow with a lower priority level. 4972 Disabled (1): This value indicates that the service data flow 4973 is not allowed to get resources that were already assigned to 4974 another IP data flow with a lower priority level. The values 4975 (2) and (3) are reserved."; 4976 } 4977 leaf premption-vulnerability { 4978 type enumeration { 4979 enum enabled { 4980 value 0; 4981 description "enabled"; 4982 } 4983 enum disabled { 4984 value 1; 4985 description "disabled"; 4986 } 4987 enum reserved1 { 4988 value 2; 4989 description "reserved1"; 4990 } 4991 enum reserved2 { 4992 value 3; 4993 description "reserved2"; 4994 } 4995 } 4996 mandatory true; 4997 description 4998 "This is a 2-bit unsigned integer value. It defines whether a 4999 service data flow can lose the resources assigned to it in 5000 order to admit a service data flow with a higher priority 5001 level. The following values are defined: 5003 Enabled (0): This value indicates that the resources 5004 assigned to the IP data flow can be preempted and 5005 allocated to a service data flow with a higher 5006 priority level. 5008 Disabled (1): This value indicates that the resources 5009 assigned to the IP data flow shall not be preempted and 5010 allocated to a service data flow with a higher priority 5011 level. The values (2) and (3) are reserved."; 5012 } 5013 description "Allocation-Retention-Priority Value"; 5014 } 5016 typedef Aggregate-Max-DL-Bit-Rate-Value { 5017 type uint32; 5018 description 5019 "This is a 32-bit unsigned integer that 5020 indicates the aggregate maximum downlink bit rate that is 5021 requested/allocated for downlink IP flows. The measurement 5022 units for Aggregate-Max-DL-Bit-Rate are bits per second."; 5023 } 5025 typedef Aggregate-Max-UL-Bit-Rate-Value { 5026 type uint32; 5027 description 5028 "This is a 32-bit unsigned integer that 5029 indicates the aggregate maximum downlink bit rate that is 5030 requested/allocated for downlink IP flows. The measurement 5031 units for Aggregate-Max-DL-Bit-Rate are bits per second."; 5032 } 5034 typedef Guaranteed-DL-Bit-Rate-Value { 5035 type uint32; 5036 description 5037 "This is a 32-bit unsigned integer that 5038 indicates the guaranteed bandwidth in bits per second for 5039 downlink IP flows. The measurement units for 5040 Guaranteed-DL-Bit-Rate are bits per second."; 5041 } 5043 typedef Guaranteed-UL-Bit-Rate-Value { 5044 type uint32; 5045 description 5046 "This is a 32-bit unsigned integer that 5047 indicates the guaranteed bandwidth in bits per second 5048 for uplink IP flows. The measurement units for 5049 Guaranteed-UL-Bit-Rate are bits per second."; 5050 } 5052 grouping QoS-Vendor-Specific-Attribute-Value-Base { 5053 leaf vendorid { 5054 type uint32; 5055 mandatory true; 5056 description 5057 "The Vendor ID is the SMI (Structure of Management 5058 Information) Network Management Private Enterprise Code of 5059 the IANA-maintained 'Private Enterprise Numbers' 5060 registry."; 5061 reference 5062 "'PRIVATE ENTERPRISE NUMBERS', SMI Network Management 5063 Private Enterprise Codes, April 2014, 5064 "; 5065 } 5066 leaf subtype { 5067 type uint8; 5068 mandatory true; 5069 description 5070 "An 8-bit field indicating the type of vendor-specific 5071 information carried in the option. The namespace for this 5072 sub-type is managed by the vendor identified by the 5073 Vendor ID field."; 5074 } 5075 description 5076 "QoS Vendor-Specific Attribute."; 5077 } 5079 //NOTE - We do NOT add the Status Codes or other changes in 5080 // PMIP in this module 5082 //Primary Structures (groupings) 5083 grouping qosattribute { 5084 leaf attributetype { 5085 type identityref { 5086 base qos-attribute-type; 5087 } 5088 mandatory true; 5089 description "the attribute type"; 5090 } 5092 //All of the sub-types by constraint 5093 choice attribute-choice { 5094 case per-mn-agg-max-dl-case { 5095 when "./attributetype = " 5096 + "'Per-MN-Agg-Max-DL-Bit-Rate-type'"; 5097 leaf per-mn-agg-max-dl { 5098 type qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value; 5099 description "Per-MN-Agg-Max-DL-Bit-Rate Value"; 5100 } 5101 description "Per-MN-Agg-Max-DL-Bit-Rate Case"; 5102 } 5103 case per-mn-agg-max-ul-case { 5104 when "./attributetype = " 5105 + "'Per-MN-Agg-Max-UL-Bit-Rate-type'"; 5106 leaf per-mn-agg-max-ul { 5107 type qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value; 5108 description "Per-MN-Agg-Max-UL-Bit-Rate Value"; 5109 } 5110 description "Per-MN-Agg-Max-UL-Bit-Rate Case"; 5111 } 5112 case per-session-agg-max-dl-case { 5113 when "./attributetype = " 5114 + "'Per-Session-Agg-Max-DL-Bit-Rate-type'"; 5115 container per-session-agg-max-dl { 5116 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 5117 description "Per-Session-Agg-Max-Bit-Rate Value"; 5118 } 5119 description "Per-Session-Agg-Max-Bit-Rate Case"; 5120 } 5121 case per-session-agg-max-ul-case { 5122 when "./attributetype = " 5123 + "'Per-Session-Agg-Max-UL-Bit-Rate-type'"; 5124 container per-session-agg-max-ul { 5125 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 5126 description "Per-Session-Agg-Max-Bit-Rate Value"; 5127 } 5128 description "Per-Session-Agg-Max-Bit-Rate Case"; 5129 } 5130 case allocation-retention-priority-case { 5131 when "./attributetype = " 5132 + "'Allocation-Retention-Priority-type'"; 5133 uses qos-pmip:Allocation-Retention-Priority-Value; 5134 description "Allocation-Retention-Priority Case"; 5135 } 5136 case agg-max-dl-case { 5137 when "./attributetype = " 5138 + "'Aggregate-Max-DL-Bit-Rate-type'"; 5139 leaf agg-max-dl { 5140 type qos-pmip:Aggregate-Max-DL-Bit-Rate-Value; 5141 description "Aggregate-Max-DL-Bit-Rate Value"; 5142 } 5143 description "Aggregate-Max-DL-Bit-Rate Case"; 5144 } 5145 case agg-max-ul-case { 5146 when "./attributetype = " 5147 + "'Aggregate-Max-UL-Bit-Rate-type'"; 5148 leaf agg-max-ul { 5149 type qos-pmip:Aggregate-Max-UL-Bit-Rate-Value; 5150 description "Aggregate-Max-UL-Bit-Rate Value"; 5151 } 5152 description "Aggregate-Max-UL-Bit-Rate Case"; 5153 } 5154 case gbr-dl-case { 5155 when "./attributetype = 'Guaranteed-DL-Bit-Rate-type'"; 5156 leaf gbr-dl { 5157 type qos-pmip:Guaranteed-DL-Bit-Rate-Value; 5158 description "Guaranteed-DL-Bit-Rate Value"; 5159 } 5160 description "Guaranteed-DL-Bit-Rate Case"; 5161 } 5162 case gbr-ul-case { 5163 when "./attributetype = 'Guaranteed-UL-Bit-Rate-type'"; 5164 leaf gbr-ul { 5165 type qos-pmip:Guaranteed-UL-Bit-Rate-Value; 5166 description "Guaranteed-UL-Bit-Rate Value"; 5167 } 5168 description "Guaranteed-UL-Bit-Rate Case"; 5169 } 5170 case traffic-selector-case { 5171 when "./attributetype = 'QoS-Traffic-Selector-type'"; 5172 container traffic-selector { 5173 uses traffic-selectors:traffic-selector; 5174 description "traffic selector"; 5175 } 5176 description "traffic selector Case"; 5177 } 5178 description "Attribute Value"; 5179 } 5180 description "PMIP QoS Attribute"; 5181 } 5183 grouping qosoption { 5184 leaf srid { 5185 type sr-id; 5186 mandatory true; 5187 description "Service Request Identifier"; 5188 } 5189 leaf trafficclass { 5190 type traffic-class; 5191 mandatory true; 5192 description "Traffic Class"; 5193 } 5194 leaf operationcode { 5195 type operational-code; 5196 mandatory true; 5197 description "Operation Code"; 5198 } 5199 list attributes { 5200 unique "attributetype"; 5201 uses qosattribute; 5202 min-elements 1; 5203 description "Attributes"; 5204 } 5205 description "PMIP QoS Option"; 5206 } 5207 } 5209 5211 A.2.3. Traffic Selectors YANG Model 5213 This module defines traffic selector types commonly used in Proxy 5214 Mobile IP (PMIP). 5216 This module references [RFC6991]. 5218 file "ietf-traffic-selector-types@2016-01-14.yang" 5219 module ietf-traffic-selector-types { 5220 yang-version 1; 5222 namespace 5223 "urn:ietf:params:xml:ns:yang:ietf-traffic-selector-types"; 5225 prefix "traffic-selectors"; 5227 import ietf-inet-types { 5228 prefix inet; 5229 revision-date 2013-07-15; 5230 } 5232 organization "IETF Distributed Mobility Management (DMM) 5233 Working Group"; 5235 contact 5236 "WG Web: 5237 WG List: 5239 WG Chair: Dapeng Liu 5240 5242 WG Chair: Jouni Korhonen 5243 5245 Editor: Satoru Matsushima 5246 5248 Editor: Lyle Bertz 5249 "; 5251 description 5252 "This module contains a collection of YANG definitions for 5253 traffic selectors for flow bindings. 5255 Copyright (c) 2016 IETF Trust and the persons identified as the 5256 document authors. All rights reserved. 5258 This document is subject to BCP 78 and the IETF Trust's Legal 5259 Provisions Relating to IETF Documents 5260 (http://trustee.ietf.org/license-info) in effect on the date of 5261 publication of this document. Please review these documents 5262 carefully, as they describe your rights and restrictions with 5263 respect to this document. Code Components extracted from this 5264 document must include Simplified BSD License text as described 5265 in Section 4.e of the Trust Legal Provisions and are provided 5266 without warranty as described in the Simplified BSD License."; 5267 revision 2016-01-14 { 5268 description "Updated for IETF-PACKET-FIELDS module alignment"; 5269 reference 5270 "draft-ietf-netmod-acl-model-06"; 5271 } 5273 revision 2016-01-12 { 5274 description "Initial revision"; 5275 reference 5276 "RFC 6088: Traffic Selectors for Flow Bindings"; 5277 } 5279 // Identities 5280 identity traffic-selector-format { 5281 description 5282 "The base type for Traffic-Selector Formats"; 5283 } 5285 identity ipv4-binary-selector-format { 5286 base traffic-selector-format; 5287 description 5288 "IPv4 Binary Traffic Selector Format"; 5289 } 5291 identity ipv6-binary-selector-format { 5292 base traffic-selector-format; 5293 description 5294 "IPv6 Binary Traffic Selector Format"; 5295 } 5297 // Type definitions and groupings 5298 typedef ipsec-spi { 5299 type uint32; 5300 description 5301 "This type defines the first 32-bit IPsec 5302 Security Parameter Index (SPI) value on data 5303 packets sent from a corresponding node to the 5304 mobile node as seen by the home agent. This field 5305 is defined in [RFC4303]."; 5306 reference 5307 "RFC 4303: IP Encapsulating Security 5308 Payload (ESP)"; 5309 } 5311 grouping traffic-selector-base { 5312 description "A grouping of the commen leaves between the 5313 v4 and v6 Traffic Selectors"; 5314 container ipsec-spi-range { 5315 presence "Enables setting ipsec spi range"; 5316 description 5317 "Inclusive range representing IPSec Security Parameter 5318 Indices to be used. When only start-spi is present, it 5319 represents a single spi."; 5320 leaf start-spi { 5321 type ipsec-spi; 5322 mandatory true; 5323 description 5324 "This field identifies the first 32-bit IPsec SPI value, 5325 from the range of SPI values to be matched, on data 5326 packets sent from a corresponding node to the mobile 5327 node as seen by the home agent. 5328 This field is defined in [RFC4303]."; 5329 } 5330 leaf end-spi { 5331 type ipsec-spi; 5332 must ". >= ../start-spi" { 5333 error-message 5334 "The end-spi must be greater than or equal 5335 to start-spi"; 5336 } 5337 description 5338 "If more than one contiguous SPI value needs to be matched, 5339 then this field can be used to indicate the end value of 5340 a range starting from the value of the Start SPI field. 5341 This field MUST NOT be included unless the Start SPI 5342 field is included and has a value less than or equal to 5343 this field. 5345 When this field is included, the receiver will match all 5346 of the SPI values between fields start-spi and end-spi, 5347 inclusive of start-spi and end-spi."; 5348 } 5349 } 5350 container source-port-range { 5351 presence "Enables setting source port range"; 5352 description 5353 "Inclusive range representing source ports to be used. 5354 When only start-port is present, it represents a single 5355 port."; 5356 leaf start-port { 5357 type inet:port-number; 5358 mandatory true; 5359 description 5360 "This field identifies the first 16-bit source port number, 5361 from the range of port numbers to be matched, on data 5362 packets sent from a corresponding node to the mobile node 5363 as seen by the home agent. 5364 This is from the range of port numbers defined by IANA 5365 (http://www.iana.org)."; 5366 } 5367 leaf end-port { 5368 type inet:port-number; 5369 must ". >= ../start-port" { 5370 error-message 5371 "The end-port must be greater than or equal to start-port"; 5372 } 5373 description 5374 "If more than one contiguous source port number needs to be 5375 matched, then this field can be used to indicate the end 5376 value of a range starting from the value of the Start 5377 Port field. This field MUST NOT be included unless the 5378 Start Port field is included and has a value less than 5379 or equal to this field. 5381 When this field is included, the receiver will match 5382 all of the port numbers between fields start-port and 5383 end-port, inclusive of start-port and end-port."; 5384 } 5385 } 5386 container destination-port-range { 5387 presence "Enables setting destination port range"; 5388 description 5389 "Inclusive range representing destination ports to be used. 5390 When only start-port is present, it represents a single 5391 port."; 5392 leaf start-port { 5393 type inet:port-number; 5394 mandatory true; 5395 description 5396 "This field identifies the first 16-bit destination port 5397 number, from the range of port numbers to be matched, on 5398 data packets sent from a corresponding node to the mobile 5399 node as seen by the home agent."; 5400 } 5401 leaf end-port { 5402 type inet:port-number; 5403 must ". >= ../start-port" { 5404 error-message 5405 "The end-port must be greater than or equal to 5406 start-port"; 5407 } 5408 description 5409 "If more than one contiguous destination port number needs 5410 to be matched, then this field can be used to indicate 5411 the end value of a range starting from the value of the 5412 Start Destination Port field. This field MUST NOT be 5413 included unless the Start Port field is included and has 5414 a value less than or equal to this field. 5416 When this field is included, the receiver will match 5417 all of the port numbers between fields start-port and 5418 end-port, inclusive of start-port and end-port."; 5419 } 5420 } 5421 } 5423 grouping ipv4-binary-traffic-selector { 5424 container source-address-range-v4 { 5425 presence "Enables setting source IPv4 address range"; 5426 description 5427 "Inclusive range representing IPv4 addresses to be used. When 5428 only start-address is present, it represents a single 5429 address."; 5430 leaf start-address { 5431 type inet:ipv4-address; 5432 mandatory true; 5433 description 5434 "This field identifies the first source address, from the range 5435 of 32-bit IPv4 addresses to be matched, on data packets sent 5436 from a corresponding node to the mobile node as seen by the 5437 home agent. In other words, this is one of the addresses of 5438 the correspondent node."; 5439 } 5440 leaf end-address { 5441 type inet:ipv4-address; 5442 description 5443 "If more than one contiguous source address needs to be 5444 matched, then this field can be used to indicate the end 5445 value of a range starting from the value of the Start 5446 Address field. This field MUST NOT be included unless the 5447 Start Address field is included. When this field is 5448 included, the receiver will match all of the addresses 5449 between fields start-address and end-address, inclusive of 5450 start-address and end-address."; 5451 } 5452 } 5453 container destination-address-range-v4 { 5454 presence "Enables setting destination IPv4 address range"; 5455 description 5456 "Inclusive range representing IPv4 addresses to be used. 5457 When only start-address is present, it represents a 5458 single address."; 5459 leaf start-address { 5460 type inet:ipv4-address; 5461 mandatory true; 5462 description 5463 "This field identifies the first destination address, from the 5464 range of 32-bit IPv4 addresses to be matched, on data packets 5465 sent from a corresponding node to the mobile node as seen by 5466 the home agent. In other words, this is one of the registered 5467 home addresses of the mobile node."; 5468 } 5469 leaf end-address { 5470 type inet:ipv4-address; 5471 description 5472 "If more than one contiguous destination address needs to be 5473 matched, then this field can be used to indicate the end 5474 value of a range starting from the value of the Start 5475 Destination Address field. This field MUST NOT be included 5476 unless the Start Address field is included. When this field 5477 is included, the receiver will match all of the addresses 5478 between fields start-address and end-address, inclusive of 5479 start-address and end-address."; 5480 } 5481 } 5482 container ds-range { 5483 presence "Enables setting dscp range"; 5484 description 5485 "Inclusive range representing DiffServ Codepoints to be used. 5486 When only start-ds is present, it represents a single 5487 Codepoint."; 5488 leaf start-ds { 5489 type inet:dscp; 5490 mandatory true; 5491 description 5492 "This field identifies the first differential service value, 5493 from the range of differential services values to be 5494 matched, on data packets sent from a corresponding node to 5495 the mobile node as seen by the home agent. Note that this 5496 field is called a 'Type of Service field' in [RFC0791]. 5497 [RFC3260] then clarified that the field has been redefined 5498 as a 6-bit DS field with 2 bits reserved, later claimed by 5499 Explicit Congestion Notification (ECN) [RFC3168]. For the 5500 purpose of this specification, the Start DS field is 8 bits 5501 long, where the 6 most significant bits indicate the DS field 5502 to be matched and the 2 least significant bits' values MUST be 5503 ignored in any comparison."; 5504 } 5505 leaf end-ds { 5506 type inet:dscp; 5507 must ". >= ../start-ds" { 5508 error-message 5509 "The end-ds must be greater than or equal to start-ds"; 5510 } 5511 description 5512 "If more than one contiguous DS value needs to be matched, then 5513 this field can be used to indicate the end value of a range 5514 starting from the value of the Start DS field. This field MUST 5515 NOT be included unless the Start DS field is included. When this 5516 field is included, it MUST be coded the same way as defined for 5517 start-ds. When this field is included, the receiver will match 5518 all of the values between fields start-ds and end-ds, inclusive 5519 of start-ds and end-ds."; 5520 } 5521 } 5522 container protocol-range { 5523 presence "Enables setting protocol range"; 5524 description 5525 "Inclusive range representing IP protocol(s) to be used. When 5526 only start-protocol is present, it represents a single 5527 protocol."; 5528 leaf start-protocol { 5529 type uint8; 5530 mandatory true; 5531 description 5532 "This field identifies the first 8-bit protocol value, from the 5533 range of protocol values to be matched, on data packets sent 5534 from a corresponding node to the mobile node as seen by the 5535 home agent."; 5536 } 5537 leaf end-protocol { 5538 type uint8; 5539 must ". >= ../start-protocol" { 5540 error-message 5541 "The end-protocol must be greater than or equal to 5542 start-protocol"; 5543 } 5544 description 5545 "If more than one contiguous protocol value needs to be matched, 5546 then this field can be used to indicate the end value of a range 5547 starting from the value of the Start Protocol field. This field 5548 MUST NOT be included unless the Start Protocol field is 5549 included. When this field is included, the receiver will match 5550 all of the values between fields start-protocol and 5551 end-protocol, inclusive of start-protocol and end-protocol."; 5552 } 5553 } 5554 description "ipv4 binary traffic selector"; 5556 } 5558 grouping ipv6-binary-traffic-selector { 5559 container source-address-range-v6 { 5560 presence "Enables setting source IPv6 address range"; 5561 description 5562 "Inclusive range representing IPv6 addresses to be used. 5563 When only start-address is present, it represents a 5564 single address."; 5565 leaf start-address { 5566 type inet:ipv6-address; 5567 mandatory true; 5568 description 5569 "This field identifies the first source address, from the 5570 range of 128-bit IPv6 addresses to be matched, on data 5571 packets sent from a corresponding node to the mobile node as 5572 seen by the home agent. In other words, this is one of the 5573 addresses of the correspondent node."; 5574 } 5575 leaf end-address { 5576 type inet:ipv6-address; 5577 description 5578 "If more than one contiguous source address needs to be 5579 matched, then this field can be used to indicate the end 5580 value of a range starting from the value of the Start 5581 Address field. This field MUST NOT be included unless the 5582 Start Address field is included. When this field is 5583 included, the receiver will match all of the addresses 5584 between fields start-address and end-address, inclusive of 5585 start-address and end-address ."; 5586 } 5587 } 5588 container destination-address-range-v6 { 5589 presence "Enables setting destination IPv6 address range"; 5590 description 5591 "Inclusive range representing IPv6 addresses to be used. 5592 When only start-address is present, it represents a 5593 single address."; 5594 leaf start-address { 5595 type inet:ipv6-address; 5596 mandatory true; 5597 description 5598 "This field identifies the first destination address, from 5599 the range of 128-bit IPv6 addresses to be matched, on data 5600 packets sent from a corresponding node to the mobile node as 5601 seen by the home agent. In other words, this is one of the 5602 registered home addresses of the mobile node."; 5603 } 5604 leaf end-address { 5605 type inet:ipv6-address; 5606 description 5607 "If more than one contiguous destination address needs to be 5608 matched, then this field can be used to indicate the end 5609 value of a range starting from the value of the Start 5610 Address field. This field MUST NOT be included unless the 5611 Start Address field is included. When this field is 5612 included, the receiver will match all of the addresses 5613 between fields start-address and end-address, inclusive of 5614 start-address and end-address."; 5615 } 5616 } 5617 container flow-label-range { 5618 presence "Enables setting Flow Label range"; 5619 description 5620 "Inclusive range representing IPv4 addresses to be used. When 5621 only start-flow-label is present, it represents a single 5622 flow label."; 5623 leaf start-flow-label { 5624 type inet:ipv6-flow-label; 5625 description 5626 "This field identifies the first flow label value, from the 5627 range of flow label values to be matched, on data packets 5628 sent from a corresponding node to the mobile node as seen 5629 by the home agent. According to [RFC2460], the flow label 5630 is 24 bits long. For the purpose of this specification, the 5631 sender of this option MUST prefix the flow label value with 5632 8 bits of '0' before inserting it in the start-flow-label 5633 field. The receiver SHOULD ignore the first 8 bits of this 5634 field before using it in comparisons with flow labels in 5635 packets."; 5636 } 5637 leaf end-flow-label { 5638 type inet:ipv6-flow-label; 5639 must ". >= ../start-flow-label" { 5640 error-message 5641 "The end-flow-lable must be greater than or equal to 5642 start-flow-label"; 5643 } 5644 description 5645 "If more than one contiguous flow label value needs to be 5646 matched, then this field can be used to indicate the end 5647 value of a range starting from the value of the Start Flow 5648 Label field. This field MUST NOT be included unless the 5649 Start Flow Label field is included. When this field is 5650 included, the receiver will match all of the flow label 5651 values between fields start-flow-label and end-flow-label, 5652 inclusive of start-flow-label and end-flow-label. When this 5653 field is included, it MUST be coded the same way as defined 5654 for end-flow-label."; 5655 } 5656 } 5657 container traffic-class-range { 5658 presence "Enables setting the traffic class range"; 5659 description 5660 "Inclusive range representing IPv4 addresses to be used. When 5661 only start-traffic-class is present, it represents a single 5662 traffic class."; 5663 leaf start-traffic-class { 5664 type inet:dscp; 5665 description 5666 "This field identifies the first traffic class value, from the 5667 range of traffic class values to be matched, on data packets 5668 sent from a corresponding node to the mobile node as seen by 5669 the home agent. This field is equivalent to the Start DS field 5670 in the IPv4 traffic selector in Figure 1. As per RFC 3260, the 5671 field is defined as a 6-bit DS field with 2 bits reserved, 5672 later claimed by Explicit Congestion Notification (ECN) 5673 RFC 3168. For the purpose of this specification, the 5674 start-traffic-class field is 8 bits long, where the 6 most 5675 significant bits indicate the DS field to be matched and the 2 5676 least significant bits' values MUST be ignored in any 5677 comparison."; 5678 reference 5679 "RFC 3260: New Terminology and Clarifications for Diffserv 5680 RFC 3168: The Addition of Explicit Congestion Notification 5681 (ECN) to IP"; 5682 } 5683 leaf end-traffic-class { 5684 type inet:dscp; 5685 must ". >= ../start-traffic-class" { 5686 error-message 5687 "The end-traffic-class must be greater than or equal to 5688 start-traffic-class"; 5689 } 5690 description 5691 "If more than one contiguous TC value needs to be matched, 5692 then this field can be used to indicate the end value of a 5693 range starting from the value of the Start TC field. This 5694 field MUST NOT be included unless the Start TC field is 5695 included. When this field is included, it MUST be coded the 5696 same way as defined for start-traffic-class. When this field 5697 is included, the receiver will match all of the values 5698 between fields start-traffic-class and end-traffic-class, 5699 inclusive of start-traffic-class and end-traffic-class."; 5701 } 5702 } 5703 container next-header-range { 5704 presence "Enables setting Next Header range"; 5705 description 5706 "Inclusive range representing Next Headers to be used. When 5707 only start-next-header is present, it represents a 5708 single Next Header."; 5709 leaf start-next-header { 5710 type uint8; 5711 description 5712 "This field identifies the first 8-bit next header value, from 5713 the range of next header values to be matched, on data packets 5714 sent from a corresponding node to the mobile node as seen by 5715 the home agent."; 5716 } 5717 leaf end-next-header { 5718 type uint8; 5719 must ". >= ../start-next-header" { 5720 error-message 5721 "The end-next-header must be greater than or equal to 5722 start-next-header"; 5723 } 5724 description 5725 "If more than one contiguous next header value needs to be 5726 matched, then this field can be used to indicate the end value 5727 of a range starting from the value of the Start NH field. This 5728 field MUST NOT be included unless the Start next header field 5729 is included. When this field is included, the receiver will 5730 match all of the values between fields start-next-header and 5731 end-next-header, inclusive of start-next-header and 5732 end-next-header."; 5733 } 5734 } 5735 description "ipv6 binary traffic selector"; 5736 } 5738 grouping traffic-selector { 5739 leaf ts-format { 5740 type identityref { 5741 base traffic-selector-format; 5742 } 5743 description "Traffic Selector Format"; 5744 } 5745 uses traffic-selector-base { 5746 when "boolean(../ts-format/text() =" 5747 + "'ipv6-binary-selector-format') |" 5748 + " boolean(../ts-format/text() =" 5749 + " 'ipv4-binary-selector-format')"; 5750 } 5751 uses ipv4-binary-traffic-selector { 5752 when "boolean(../ts-format/text() =" 5753 + " 'ipv4-binary-selector-format')"; 5754 } 5755 uses ipv6-binary-traffic-selector { 5756 when "boolean(../ts-format/text() = " 5757 + "'ipv6-binary-selector-format')"; 5758 } 5759 description 5760 "The traffic selector includes the parameters used to match 5761 packets for a specific flow binding."; 5762 reference 5763 "RFC 6089: Flow Bindings in Mobile IPv6 and Network 5764 Mobility (NEMO) Basic Support"; 5765 } 5767 grouping ts-list { 5768 list selectors { 5769 key index; 5770 leaf index { 5771 type uint64; 5772 description "index"; 5773 } 5774 uses traffic-selector; 5775 description "traffic selectors"; 5776 } 5777 description "traffic selector list"; 5778 } 5779 } 5780 5782 A.2.4. FPC 3GPP Mobility YANG Model 5784 This module defines the base protocol elements of 3GPP mobility.. 5786 This module references [RFC6991], the fpc-base, fpc-agent, ietf- 5787 traffic-selector and pmip-qos modules defined in this document. 5789 file "ietf-dmm-threegpp@2017-03-08.yang" 5790 module ietf-dmm-threegpp { 5791 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-threegpp"; 5792 prefix threegpp; 5794 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 5795 import ietf-dmm-fpc { prefix fpc; revision-date 2017-03-08; } 5796 import ietf-traffic-selector-types { prefix traffic-selectors; 5797 revision-date 2016-01-14; } 5798 import ietf-pmip-qos { prefix pmipqos; 5799 revision-date 2016-02-10; } 5801 organization "IETF Distributed Mobility Management (DMM) 5802 Working Group"; 5804 contact 5805 "WG Web: 5806 WG List: 5808 WG Chair: Dapeng Liu 5809 5811 WG Chair: Jouni Korhonen 5812 5814 Editor: Satoru Matsushima 5815 5817 Editor: Lyle Bertz 5818 "; 5820 description 5821 "This module contains YANG definition for 3GPP Related Mobility 5822 Structures. 5824 Copyright (c) 2016 IETF Trust and the persons identified as the 5825 document authors. All rights reserved. 5827 This document is subject to BCP 78 and the IETF Trust's Legal 5828 Provisions Relating to IETF Documents 5829 (http://trustee.ietf.org/license-info) in effect on the date of 5830 publication of this document. Please review these documents 5831 carefully, as they describe your rights and restrictions with 5832 respect to this document. Code Components extracted from this 5833 document must include Simplified BSD License text as described 5834 in Section 4.e of the Trust Legal Provisions and are provided 5835 without warranty as described in the Simplified BSD License."; 5837 revision 2017-03-08 { 5838 description "Version 06 updates."; 5839 reference "draft-ietf-dmm-fpc-cpdp-06"; 5840 } 5842 revision 2016-08-03 { 5843 description "Initial"; 5844 reference "draft-ietf-dmm-fpc-cpdp-04"; 5846 } 5848 identity threeGPP-access-type { 5849 base "fpc:fpc-access-type"; 5850 description "3GPP Access Type"; 5851 } 5853 // Profile Type 5854 identity threeGPP-mobility { 5855 base "fpc:fpc-mobility-profile-type"; 5856 description "3GPP Mobility Profile"; 5857 } 5859 // Tunnel Types 5860 identity threeGPP-tunnel-type { 5861 description "3GPP Base Tunnel Type"; 5862 } 5864 identity gtpv1 { 5865 base "threegpp:threeGPP-tunnel-type"; 5866 description "GTP version 1 Tunnel"; 5867 } 5869 identity gtpv2 { 5870 base "threegpp:threeGPP-tunnel-type"; 5871 description "GTP version 2 Tunnel"; 5872 } 5874 grouping teid-value { 5875 description "TEID value holder"; 5876 leaf tunnel-identifier { 5877 type uint32; 5878 description "Tunnel Endpoint IDentifier (TEID)"; 5879 } 5880 } 5882 grouping threeGPP-tunnel { 5883 description "3GPP Tunnel Definition"; 5884 leaf tunnel-type { 5885 type identityref { 5886 base "threegpp:threeGPP-tunnel-type"; 5887 } 5888 description "3GPP Tunnel Subtype"; 5889 } 5890 uses threegpp:teid-value; 5891 } 5893 // QoS Profile 5894 identity threeGPP-qos-profile-parameters { 5895 base "fpc:fpc-qos-type"; 5896 description "3GPP QoS Profile"; 5897 } 5899 typedef fpc-qos-class-identifier { 5900 type uint8 { 5901 range "1..9"; 5902 } 5903 description "QoS Class Identifier (QCI)"; 5904 } 5906 grouping threeGPP-QoS { 5907 description "3GPP QoS Attributes"; 5908 leaf qci { 5909 type fpc-qos-class-identifier; 5910 description "QCI"; 5911 } 5912 leaf gbr { 5913 type uint32; 5914 description "Guaranteed Bit Rate"; 5915 } 5916 leaf mbr { 5917 type uint32; 5918 description "Maximum Bit Rate"; 5919 } 5920 leaf apn-ambr { 5921 type uint32; 5922 description "Access Point Name Aggregate Max Bit Rate"; 5923 } 5924 leaf ue-ambr { 5925 type uint32; 5926 description "User Equipment Aggregate Max Bit Rate"; 5927 } 5928 container arp { 5929 uses pmipqos:Allocation-Retention-Priority-Value; 5930 description "Allocation Retention Priority"; 5931 } 5932 } 5934 typedef ebi-type { 5935 type uint8 { 5936 range "0..15"; 5937 } 5938 description "EUTRAN Bearere Identifier (EBI) Type"; 5939 } 5941 // From 3GPP TS 24.008 version 13.5.0 Release 13 5942 typedef component-type-enum { 5943 type enumeration { 5944 enum ipv4RemoteAddress { 5945 value 16; 5946 description "IPv4 Remote Address"; 5947 } 5948 enum ipv4LocalAddress { 5949 value 17; 5950 description "IPv4 Local Address"; 5951 } 5952 enum ipv6RemoteAddress { 5953 value 32; 5954 description "IPv6 Remote Address"; 5955 } 5956 enum ipv6RemoteAddressPrefix { 5957 value 33; 5958 description "IPv6 Remote Address Prefix"; 5959 } 5960 enum ipv6LocalAddressPrefix { 5961 value 35; 5962 description "IPv6 Local Address Prefix"; 5963 } 5964 enum protocolNextHeader { 5965 value 48; 5966 description "Protocol (IPv4) or NextHeader (IPv6) 5967 value"; 5968 } 5969 enum localPort { 5970 value 64; 5971 description "Local Port"; 5972 } 5973 enum localPortRange { 5974 value 65; 5975 description "Local Port Range"; 5976 } 5977 enum reomotePort { 5978 value 80; 5979 description "Remote Port"; 5980 } 5981 enum remotePortRange { 5982 value 81; 5983 description "Remote Port Range"; 5984 } 5985 enum secParamIndex { 5986 value 96; 5987 description "Security Parameter Index (SPI)"; 5988 } 5989 enum tosTraffClass { 5990 value 112; 5991 description "TOS Traffic Class"; 5992 } 5993 enum flowLabel { 5994 value 128; 5995 description "Flow Label"; 5996 } 5997 } 5998 description "TFT Component Type"; 5999 } 6001 typedef packet-filter-direction { 6002 type enumeration { 6003 enum preRel7Tft { 6004 value 0; 6005 description "Pre-Release 7 TFT"; 6006 } 6007 enum uplink { 6008 value 1; 6009 description "uplink"; 6010 } 6011 enum downlink { 6012 value 2; 6013 description "downlink"; 6014 } 6015 enum bidirectional { 6016 value 3; 6017 description "bi-direcitonal"; 6018 } 6019 } 6020 description "Packet Filter Direction"; 6021 } 6023 typedef component-type-id { 6024 type uint8 { 6025 range "16 | 17 | 32 | 33 | 35 | 48 | 64 | 65 |" 6026 + " 80 | 81 | 96 | 112 | 128"; 6027 } 6028 description "Specifies the Component Type"; 6029 } 6031 grouping packet-filter { 6032 leaf direction { 6033 type threegpp:packet-filter-direction; 6034 description "Filter Direction"; 6035 } 6036 leaf identifier { 6037 type uint8 { 6038 range "1..15"; 6039 } 6040 description "Filter Identifier"; 6041 } 6042 leaf evaluation-precedence { 6043 type uint8; 6044 description "Evaluation Precedence"; 6045 } 6046 list contents { 6047 key component-type-identifier; 6048 description "Filter Contents"; 6049 leaf component-type-identifier { 6050 type threegpp:component-type-id; 6051 description "Component Type"; 6052 } 6053 choice value { 6054 case ipv4-local { 6055 leaf ipv4-local { 6056 type inet:ipv4-address; 6057 description "IPv4 Local Address"; 6058 } 6059 } 6060 case ipv6-prefix-local { 6061 leaf ipv6-prefix-local { 6062 type inet:ipv6-prefix; 6063 description "IPv6 Local Prefix"; 6064 } 6065 } 6066 case ipv4-ipv6-remote { 6067 leaf ipv4-ipv6-remote { 6068 type inet:ip-address; 6069 description "Ipv4 Ipv6 remote address"; 6070 } 6071 } 6072 case ipv6-prefix-remote { 6073 leaf ipv6-prefix-remote { 6074 type inet:ipv6-prefix; 6075 description "IPv6 Remote Prefix"; 6076 } 6077 } 6078 case next-header { 6079 leaf next-header { 6080 type uint8; 6081 description "Next Header"; 6082 } 6083 } 6084 case local-port { 6085 leaf local-port { 6086 type inet:port-number; 6087 description "Local Port"; 6088 } 6089 } 6090 case local-port-range { 6091 leaf local-port-lo { 6092 type inet:port-number; 6093 description "Local Port Min Value"; 6094 } 6095 leaf local-port-hi { 6096 type inet:port-number; 6097 description "Local Port Max Value"; 6098 } 6099 } 6100 case remote-port { 6101 leaf remote-port { 6102 type inet:port-number; 6103 description "Remote Port"; 6104 } 6105 } 6106 case remote-port-range { 6107 leaf remote-port-lo { 6108 type inet:port-number; 6109 description "Remote Por Min Value"; 6110 } 6111 leaf remote-port-hi { 6112 type inet:port-number; 6113 description "Remote Port Max Value"; 6114 } 6115 } 6116 case ipsec-index { 6117 leaf ipsec-index { 6118 type traffic-selectors:ipsec-spi; 6119 description "IPSec Index"; 6120 } 6121 } 6122 case traffic-class { 6123 leaf traffic-class { 6124 type inet:dscp; 6125 description "Traffic Class"; 6126 } 6127 } 6128 case traffic-class-range { 6129 leaf traffic-class-lo { 6130 type inet:dscp; 6131 description "Traffic Class Min Value"; 6132 } 6133 leaf traffic-class-hi { 6134 type inet:dscp; 6135 description "Traffic Class Max Value"; 6136 } 6137 } 6138 case flow-label-type { 6139 leaf-list flow-label { 6140 type inet:ipv6-flow-label; 6141 description "Flow Label"; 6142 } 6143 } 6144 description "Component Value"; 6145 } 6146 } 6147 description "Packet Filter"; 6148 } 6150 grouping tft { 6151 list packet-filters { 6152 key identifier; 6153 uses threegpp:packet-filter; 6154 description "List of Packet Filters"; 6155 } 6156 description "Packet Filter List"; 6157 } 6159 typedef imsi-type { 6160 type uint64; 6161 description 6162 "International Mobile Subscriber Identity (IMSI) 6163 Value Type"; 6164 } 6166 typedef threegpp-instr { 6167 type bits { 6168 bit assign-ip { 6169 position 0; 6170 description "Assign IP Address/Prefix"; 6171 } 6172 bit assign-fteid-ip { 6173 position 1; 6174 description "Assign FTEID-IP"; 6175 } 6176 bit assign-fteid-teid { 6177 position 2; 6178 description "Assign FTEID-TEID"; 6179 } 6180 bit session { 6181 position 3; 6182 description "Commands apply to the Session Level"; 6183 } 6184 bit uplink { 6185 position 4; 6186 description "Commands apply to the Uplink"; 6187 } 6188 bit downlink { 6189 position 5; 6190 description "Commands apply to the Downlink"; 6191 } 6192 bit assign-dpn { 6193 position 6; 6194 description "Assign DPN"; 6195 } 6196 } 6197 description "Instruction Set for 3GPP R11"; 6198 } 6200 // Descriptors update - goes to Entities, Configure 6201 // and Configure Bundles 6202 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:" 6203 + "descriptors/fpc:descriptor-value" { 6204 case threegpp-tft { 6205 uses threegpp:tft; 6206 description "3GPP TFT"; 6207 } 6208 description "3GPP TFT Descriptor"; 6209 } 6211 grouping threegpp-tunnel-info { 6212 uses threegpp:threeGPP-tunnel; 6213 choice tft-or-ref { 6214 case defined-tft { 6215 uses threegpp:tft; 6216 } 6217 case predefined-tft { 6218 leaf tft-reference { 6219 type fpc:fpc-identity; 6220 description "Pre-configured TFT"; 6221 } 6222 } 6223 description "TFT Value"; 6224 } 6225 description "3GPP TFT and Tunnel Information"; 6226 } 6228 // Contexts Update - Contexts / UL / mob-profile 6229 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6230 + "contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:" 6231 + "profile-parameters" { 6232 case threegpp-tunnel { 6233 uses threegpp:threegpp-tunnel-info; 6234 } 6235 description "Context UL Tunnel"; 6236 } 6237 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6238 + "create_or_update/fpc:contexts/fpc:ul/fpc:" 6239 + "mobility-tunnel-parameters/fpc:profile-parameters" { 6240 case threegpp-tunnel { 6241 uses threegpp:threegpp-tunnel-info; 6242 } 6243 description "Create Context UL Tunnel"; 6244 } 6245 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6246 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6247 + "ul/fpc:mobility-tunnel-parameters/fpc:" 6248 + "profile-parameters" { 6249 case threegpp-tunnel { 6250 uses threegpp:threegpp-tunnel-info; 6251 } 6252 description "Bundles Create Context UL Tunnel"; 6253 } 6254 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6255 + "create-or-update-success/fpc:contexts/fpc:" 6256 + "ul/fpc:mobility-tunnel-parameters/fpc:" 6257 + "profile-parameters" { 6258 case threegpp-tunnel { 6259 uses threegpp:threegpp-tunnel-info; 6260 } 6261 description "Create Context UL Tunnel Response"; 6262 } 6263 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6264 + "result-type/fpc:create-or-update-success/fpc:contexts/fpc:" 6265 + "ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6266 case threegpp-tunnel { 6267 uses threegpp:threegpp-tunnel-info; 6268 } 6269 description "Bundles Create Context UL Tunnel Response"; 6270 } 6272 // Contexts Update - Contexts / DL / mob-profile 6273 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6274 + "contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:" 6275 + "profile-parameters" { 6276 case threegpp-tunnel { 6277 uses threegpp:threegpp-tunnel-info; 6279 } 6280 description "Context DL Tunnel"; 6281 } 6282 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6283 + "create_or_update/fpc:contexts/fpc:dl/fpc:" 6284 + "mobility-tunnel-parameters/fpc:profile-parameters" { 6285 case threegpp-tunnel { 6286 uses threegpp:threegpp-tunnel-info; 6287 } 6288 description "Bundles Create Context DL Tunnel"; 6289 } 6290 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6291 + "op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:" 6292 + "mobility-tunnel-parameters/fpc:profile-parameters" { 6293 case threegpp-tunnel { 6294 uses threegpp:threegpp-tunnel-info; 6295 } 6296 description "Bundles Create Context DL Tunnel"; 6297 } 6298 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6299 + "create-or-update-success/fpc:contexts/fpc:dl/fpc:" 6300 + "mobility-tunnel-parameters/fpc:profile-parameters" { 6301 case threegpp-tunnel { 6302 uses threegpp:threegpp-tunnel-info; 6303 } 6304 description "Create Context DL Tunnel Response"; 6305 } 6306 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6307 + "result-type/fpc:create-or-update-success/fpc:" 6308 + "contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:" 6309 + "profile-parameters" { 6310 case threegpp-tunnel { 6311 uses threegpp:threegpp-tunnel-info; 6312 } 6313 description "Bundles Create Context DL Tunnel Response"; 6314 } 6316 // Contexts Update - Contexts / dpns / 6317 // mobility-tunnel-parameters 6318 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6319 + "contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:" 6320 + "profile-parameters" { 6321 case threegpp-tunnel { 6322 uses threegpp:threegpp-tunnel-info; 6323 } 6324 description "Context 3GPP TFT and Tunnel Information"; 6325 } 6326 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6327 + "create_or_update/fpc:contexts/fpc:dpns/fpc:" 6328 + "mobility-tunnel-parameters/fpc:" 6329 + "profile-parameters" { 6330 case threegpp-tunnel { 6331 uses threegpp:threegpp-tunnel-info; 6332 } 6333 description "Configure 3GPP TFT and Tunnel Information"; 6334 } 6335 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6336 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6337 + "dpns/fpc:mobility-tunnel-parameters/fpc:" 6338 + "profile-parameters" { 6339 case threegpp-tunnel { 6340 uses threegpp:threegpp-tunnel-info; 6341 } 6342 description "Configure Bundles 3GPP TFT and Tunnel 6343 Information"; 6344 } 6345 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6346 + "create-or-update-success/fpc:contexts/fpc:" 6347 + "dpns/fpc:mobility-tunnel-parameters/fpc:" 6348 + "profile-parameters" { 6349 case threegpp-tunnel { 6350 uses threegpp:threegpp-tunnel-info; 6351 } 6352 description "Configure 3GPP TFT and Tunnel Information 6353 Response"; 6354 } 6355 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6356 + "result-type/fpc:create-or-update-success/fpc:" 6357 + "contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:" 6358 + "profile-parameters" { 6359 case threegpp-tunnel { 6360 uses threegpp:threegpp-tunnel-info; 6361 } 6362 description "Configure Bundles 3GPP TFT and Tunnel Information 6363 Response"; 6364 } 6366 // QoS Updates - Context / UL / qosprofile 6367 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6368 + "contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6369 case threegpp-qos { 6370 uses threegpp:threeGPP-QoS; 6371 description "3GPP QoS Values"; 6372 } 6373 description "Context UL 3GPP QoS Values"; 6374 } 6375 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6376 + "create_or_update/fpc:contexts/fpc:ul/fpc:" 6377 + "qos-profile-parameters/fpc:value" { 6378 case threegpp-qos { 6379 uses threegpp:threeGPP-QoS; 6380 description "3GPP QoS Values"; 6381 } 6382 description "Configure Context UL 3GPP QoS Values"; 6383 } 6384 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6385 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6386 + "ul/fpc:qos-profile-parameters/fpc:value" { 6387 case threegpp-qos { 6388 uses threegpp:threeGPP-QoS; 6389 description "3GPP QoS Values"; 6390 } 6391 description "Configure Bundles Context UL 3GPP QoS Values"; 6392 } 6393 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6394 + "create-or-update-success/fpc:contexts/fpc:ul/fpc:" 6395 + "qos-profile-parameters/fpc:value" { 6396 case threegpp-qos { 6397 uses threegpp:threeGPP-QoS; 6398 description "3GPP QoS Values"; 6399 } 6400 description "Configure Context UL 3GPP QoS Values Response"; 6401 } 6402 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6403 + "result-type/fpc:create-or-update-success/fpc:" 6404 + "contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6405 case threegpp-qos { 6406 uses threegpp:threeGPP-QoS; 6407 description "3GPP QoS Values"; 6408 } 6409 description "Configure Bundles Context UL 3GPP QoS Values 6410 Response"; 6411 } 6413 // QoS Updates - Context / DL / QoS Profile 6414 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6415 + "contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6416 case threegpp-qos { 6417 uses threegpp:threeGPP-QoS; 6418 description "3GPP QoS Values"; 6419 } 6420 description "Context DL 3GPP QoS Values"; 6422 } 6423 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6424 + "create_or_update/fpc:contexts/fpc:dl/fpc:" 6425 + "qos-profile-parameters/fpc:value" { 6426 case threegpp-qos { 6427 uses threegpp:threeGPP-QoS; 6428 description "3GPP QoS Values"; 6429 } 6430 description "Configure Context DL 3GPP QoS Values"; 6431 } 6432 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6433 + "op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:" 6434 + "qos-profile-parameters/fpc:value" { 6435 case threegpp-qos { 6436 uses threegpp:threeGPP-QoS; 6437 description "3GPP QoS Values"; 6438 } 6439 description "Configure Bundles Context DL 3GPP QoS Values"; 6440 } 6441 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6442 + "create-or-update-success/fpc:contexts/fpc:dl/fpc:" 6443 + "qos-profile-parameters/fpc:value" { 6444 case threegpp-qos { 6445 uses threegpp:threeGPP-QoS; 6446 description "3GPP QoS Values"; 6447 } 6448 description "Configure Context DL 3GPP QoS Values Response"; 6449 } 6450 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6451 + "result-type/fpc:create-or-update-success/fpc:" 6452 + "contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6453 case threegpp-qos { 6454 uses threegpp:threeGPP-QoS; 6455 description "3GPP QoS Values"; 6456 } 6457 description "Configure Bundles Context DL 3GPP QoS Values 6458 Response"; 6459 } 6461 grouping threegpp-properties { 6462 leaf imsi { 6463 type threegpp:imsi-type; 6464 description "IMSI"; 6465 } 6466 leaf ebi { 6467 type threegpp:ebi-type; 6468 description "EUTRAN Bearere Identifier (EBI)"; 6469 } 6470 leaf lbi { 6471 type threegpp:ebi-type; 6472 description "Linked Bearer Identifier (LBI)"; 6473 } 6474 description "3GPP Mobility Session Properties"; 6475 } 6477 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts" { 6478 uses threegpp:threegpp-properties; 6479 description "3GPP Mobility Session Properties"; 6480 } 6481 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6482 + "create_or_update/fpc:contexts" { 6483 uses threegpp:threegpp-properties; 6484 description "3GPP Mobility Session Properties"; 6485 } 6486 augment "/fpc:configure-bundles/fpc:input/fpc:" 6487 + "bundles/fpc:op_body/fpc:create_or_update/fpc:contexts" { 6488 uses threegpp:threegpp-properties; 6489 description "3GPP Mobility Session Properties"; 6490 } 6491 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6492 + "create-or-update-success/fpc:contexts" { 6493 uses threegpp:threegpp-properties; 6494 description "3GPP Mobility Session Properties"; 6495 } 6496 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6497 + "result-type/fpc:create-or-update-success/fpc:contexts" { 6498 uses threegpp:threegpp-properties; 6499 description "3GPP Mobility Session Properties"; 6500 } 6502 grouping threegpp-commandset { 6503 leaf instr-3gpp-mob { 6504 type threegpp:threegpp-instr; 6505 description "3GPP Specific Command Set"; 6506 } 6507 description "3GPP Instructions"; 6508 } 6510 augment "/fpc:configure/fpc:input/fpc:instructions/fpc:" 6511 + "instr-type" { 6512 case instr-3gpp-mob { 6513 uses threegpp:threegpp-commandset; 6514 description "3GPP Instructions"; 6515 } 6516 description "Configure 3GPP Instructions"; 6517 } 6518 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6519 + "create_or_update/fpc:contexts/fpc:instructions/fpc:" 6520 + "instr-type" { 6521 case instr-3gpp-mob { 6522 uses threegpp:threegpp-commandset; 6523 description "3GPP Instructions"; 6524 } 6525 description "Configure 3GPP Context Instructions"; 6526 } 6527 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6528 + "create-or-update-success/fpc:contexts/fpc:" 6529 + "instructions/fpc:instr-type" { 6530 case instr-3gpp-mob { 6531 uses threegpp:threegpp-commandset; 6532 description "3GPP Instructions"; 6533 } 6534 description "Configure 3GPP Context Instructions Response"; 6535 } 6537 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6538 + "instructions/fpc:instr-type" { 6539 case instr-3gpp-mob { 6540 uses threegpp:threegpp-commandset; 6541 description "3GPP Instructions"; 6542 } 6543 description "Configure Bundles 3GPP Instructions"; 6544 } 6545 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6546 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6547 + "instructions/fpc:instr-type" { 6548 case instr-3gpp-mob { 6549 uses threegpp:threegpp-commandset; 6550 description "3GPP Instructions"; 6551 } 6552 description "Configure Bundles 3GPP Context Instructions"; 6553 } 6554 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:" 6555 + "result-type/fpc:create-or-update-success/fpc:" 6556 + "contexts/fpc:instructions/fpc:instr-type" { 6557 case instr-3gpp-mob { 6558 uses threegpp:threegpp-commandset; 6559 description "3GPP Instructions"; 6560 } 6561 description "Configure Bundles 3GPP Context Instructions 6562 Response"; 6563 } 6564 } 6565 6567 A.2.5. FPC / PMIP Integration YANG Model 6569 This module defines the integration between FPC and PMIP models. 6571 This module references the fpc-base, fpc-agent, pmip-qos and traffic- 6572 selector-types module defined in this document. 6574 file "ietf-dmm-fpc-pmip@2017-03-08.yang" 6575 module ietf-dmm-fpc-pmip { 6576 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-pmip"; 6577 prefix fpc-pmip; 6579 import ietf-dmm-fpc { prefix fpc; revision-date 2017-03-08; } 6580 import ietf-pmip-qos { prefix qos-pmip; } 6581 import ietf-traffic-selector-types { prefix traffic-selectors; } 6583 organization "IETF Distributed Mobility Management (DMM) 6584 Working Group"; 6586 contact 6587 "WG Web: 6588 WG List: 6590 WG Chair: Dapeng Liu 6591 6593 WG Chair: Jouni Korhonen 6594 6596 Editor: Satoru Matsushima 6597 6599 Editor: Lyle Bertz 6600 "; 6602 description 6603 "This module contains YANG definition for Forwarding Policy 6604 Configuration Protocol (FPCP). 6606 Copyright (c) 2016 IETF Trust and the persons identified as the 6607 document authors. All rights reserved. 6609 This document is subject to BCP 78 and the IETF Trust's Legal 6610 Provisions Relating to IETF Documents 6611 (http://trustee.ietf.org/license-info) in effect on the date of 6612 publication of this document. Please review these documents 6613 carefully, as they describe your rights and restrictions with 6614 respect to this document. Code Components extracted from this 6615 document must include Simplified BSD License text as described 6616 in Section 4.e of the Trust Legal Provisions and are provided 6617 without warranty as described in the Simplified BSD License."; 6619 revision 2017-03-08 { 6620 description "Version 06 update. Adds predfined selector."; 6621 reference "draft-ietf-dmm-fpc-cpdp-06"; 6622 } 6624 revision 2016-01-19 { 6625 description "Changes based on -01 version of FPCP draft."; 6626 reference "draft-ietf-dmm-fpc-cpdp-01"; 6627 } 6629 identity ietf-pmip-access-type { 6630 base "fpc:fpc-access-type"; 6631 description "PMIP Access"; 6632 } 6634 identity fpcp-qos-index-pmip { 6635 base "fpc:fpc-qos-type"; 6636 description "PMIP QoS"; 6637 } 6638 identity traffic-selector-mip6 { 6639 base "fpc:fpc-descriptor-type"; 6640 description "MIP6 Traffic Selector"; 6641 } 6642 identity ietf-pmip { 6643 base "fpc:fpc-mobility-profile-type"; 6644 description "PMIP Mobility"; 6645 } 6647 identity pmip-tunnel-type { 6648 description "PMIP Tunnel Type"; 6649 } 6650 identity grev1 { 6651 base "fpc-pmip:pmip-tunnel-type"; 6652 description "GRE v1"; 6653 } 6654 identity grev2 { 6655 base "fpc-pmip:pmip-tunnel-type"; 6656 description "GRE v2"; 6657 } 6658 identity ipinip { 6659 base "fpc-pmip:pmip-tunnel-type"; 6660 description "IP in IP"; 6662 } 6663 grouping pmip-mobility { 6664 leaf type { 6665 type identityref { 6666 base "fpc-pmip:pmip-tunnel-type"; 6667 } 6668 description "PMIP Mobility"; 6669 } 6670 choice value { 6671 case gre { 6672 leaf key { 6673 type uint32; 6674 description "GRE_KEY"; 6675 } 6676 description "GRE Value"; 6677 } 6678 description "PMIP Mobility value"; 6679 } 6680 description "PMIP Mobility Value"; 6681 } 6683 typedef pmip-instr { 6684 type bits { 6685 bit assign-ip { 6686 position 0; 6687 description "Assign IP"; 6688 } 6689 bit assign-dpn { 6690 position 1; 6691 description "Assign DPN"; 6692 } 6693 bit session { 6694 position 2; 6695 description "Session Level"; 6696 } 6697 bit uplink { 6698 position 3; 6699 description "Uplink"; 6700 } 6701 bit downlink { 6702 position 4; 6703 description "Downlink"; 6704 } 6705 } 6706 description "Instruction Set for PMIP"; 6707 } 6709 // Descriptors update - goes to Entities, Configure and 6710 // Configure Bundles 6711 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/" 6712 + "fpc:descriptors/fpc:descriptor-value" { 6713 case pmip-selector { 6714 uses traffic-selectors:traffic-selector; 6715 description "PMIP Selector"; 6716 } 6717 description "Policy Descriptor"; 6718 } 6720 grouping pmip-tunnel-info { 6721 uses fpc-pmip:pmip-mobility; 6722 choice pmiptunnel-or-ref { 6723 case defined-selector { 6724 uses traffic-selectors:traffic-selector; 6725 } 6726 case predefined-selector { 6727 leaf selector-reference { 6728 type fpc:fpc-identity; 6729 description "Pre-configured selector"; 6730 } 6731 } 6732 description "Traffic Selector Value"; 6733 } 6734 description "PMIP Tunnel Information"; 6735 } 6737 // Contexts Update - Contexts/UL/mob-profile, Contexts/DL/ 6738 // mob-profile and Contexts/dpns/mobility-tunnel-parameters 6739 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6740 + "contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:" 6741 + "profile-parameters" { 6742 case pmip-tunnel { 6743 uses fpc-pmip:pmip-tunnel-info; 6744 } 6745 description "Context UL Mobility"; 6746 } 6747 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6748 + "create_or_update/fpc:contexts/fpc:ul/fpc:" 6749 + "mobility-tunnel-parameters/fpc:" 6750 + "profile-parameters" { 6751 case pmip-tunnel { 6752 uses fpc-pmip:pmip-tunnel-info; 6753 } 6754 description "CONF Context UL Mobility"; 6755 } 6756 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6757 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6758 + "ul/fpc:mobility-tunnel-parameters/fpc:" 6759 + "profile-parameters" { 6760 case pmip-tunnel { 6761 uses fpc-pmip:pmip-tunnel-info; 6762 } 6763 description "CONF_BUNDLES Context UL Mobility"; 6764 } 6766 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6767 + "contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:" 6768 + "profile-parameters" { 6769 case pmip-tunnel { 6770 uses fpc-pmip:pmip-tunnel-info; 6771 } 6772 description "Context DL Mobility"; 6773 } 6774 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6775 + "create_or_update/fpc:contexts/fpc:dl/fpc:" 6776 + "mobility-tunnel-parameters/fpc:" 6777 + "profile-parameters" { 6778 case pmip-tunnel { 6779 uses fpc-pmip:pmip-tunnel-info; 6780 } 6781 description "CONF Context DL Mobility"; 6782 } 6783 augment "/fpc:configure-bundles/fpc:input/fpc:" 6784 + "bundles/fpc:op_body/fpc:create_or_update/fpc:" 6785 + "contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:" 6786 + "profile-parameters" { 6787 case pmip-tunnel { 6788 uses fpc-pmip:pmip-tunnel-info; 6789 } 6790 description "CONF_BUNDLES Context DL Mobility"; 6791 } 6793 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6794 + "contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:" 6795 + "profile-parameters" { 6796 case pmip-tunnel { 6797 uses fpc-pmip:pmip-tunnel-info; 6798 } 6799 description "Context DPN Mobility"; 6800 } 6801 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6802 + "create_or_update/fpc:contexts/fpc:dpns/fpc:" 6803 + "mobility-tunnel-parameters/fpc:profile-parameters" { 6804 case pmip-tunnel { 6805 uses fpc-pmip:pmip-tunnel-info; 6807 } 6808 description "CONF Context DPN Mobility"; 6809 } 6810 augment "/fpc:configure-bundles/fpc:input/fpc:" 6811 + "bundles/fpc:op_body/fpc:create_or_update/fpc:" 6812 + "contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:" 6813 + "profile-parameters" { 6814 case pmip-tunnel { 6815 uses fpc-pmip:pmip-tunnel-info; 6816 } 6817 description "CONF_BUNDLES Context DPN Mobility"; 6818 } 6820 // QoS Updates - Context / UL / qosprofile, Context / DL / 6821 // QoS Profile 6822 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6823 + "contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6824 case qos-pmip { 6825 uses qos-pmip:qosattribute; 6826 description "PMIP QoS Information"; 6827 } 6828 description "Context UL QoS"; 6829 } 6830 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6831 + "create_or_update/fpc:contexts/fpc:ul/fpc:" 6832 + "qos-profile-parameters/fpc:value" { 6833 case qos-pmip { 6834 uses qos-pmip:qosattribute; 6835 description "PMIP QoS Information"; 6836 } 6837 description "CONF Context UL QoS"; 6838 } 6839 augment "/fpc:configure-bundles/fpc:input/fpc:" 6840 + "bundles/fpc:op_body/fpc:create_or_update/fpc:" 6841 + "contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6842 case qos-pmip { 6843 uses qos-pmip:qosattribute; 6844 description "PMIP QoS Information"; 6845 } 6846 description "CONF_BUNDLES Context UL QoS"; 6847 } 6849 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:" 6850 + "contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6851 case qos-pmip { 6852 uses qos-pmip:qosattribute; 6853 description "PMIP QoS Information"; 6854 } 6855 description "Context DL QoS"; 6856 } 6857 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6858 + "create_or_update/fpc:contexts/fpc:dl/fpc:" 6859 + "qos-profile-parameters/fpc:value" { 6860 case qos-pmip { 6861 uses qos-pmip:qosattribute; 6862 description "PMIP QoS Information"; 6863 } 6864 description "CONF Context DL QoS"; 6865 } 6866 augment "/fpc:configure-bundles/fpc:input/fpc:" 6867 + "bundles/fpc:op_body/fpc:create_or_update/fpc:" 6868 + "contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6869 case qos-pmip { 6870 uses qos-pmip:qosattribute; 6871 description "PMIP QoS Information"; 6872 } 6873 description "CONF_BUNDLES Context DL QoS"; 6874 } 6876 grouping pmip-commandset { 6877 leaf instr-pmip { 6878 type fpc-pmip:pmip-instr; 6879 description "PMIP Instructions"; 6880 } 6881 description "PMIP Commandset"; 6882 } 6884 // Instructions Update - OP BODY, Context, Port 6885 augment "/fpc:configure/fpc:input/fpc:instructions/fpc:" 6886 + "instr-type" { 6887 case pmip-instr { 6888 uses fpc-pmip:pmip-commandset; 6889 description "PMIP Commandset"; 6890 } 6891 description "CONF Instructions"; 6892 } 6893 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:" 6894 + "create_or_update/fpc:contexts/fpc:instructions/fpc:" 6895 + "instr-type" { 6896 case pmip-instr { 6897 uses fpc-pmip:pmip-commandset; 6898 description "PMIP Commandset"; 6899 } 6900 description "CONF Context Instructions"; 6901 } 6902 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:" 6903 + "create-or-update-success/fpc:contexts/fpc:" 6904 + "instructions/fpc:instr-type" { 6905 case pmip-instr { 6906 uses fpc-pmip:pmip-commandset; 6907 description "PMIP Commandset"; 6908 } 6909 description "CONF Result Context Instructions"; 6910 } 6912 augment "/fpc:configure-bundles/fpc:input/fpc:" 6913 + "bundles/fpc:instructions/fpc:instr-type" { 6914 case pmip-instr { 6915 uses fpc-pmip:pmip-commandset; 6916 description "PMIP Commandset"; 6917 } 6918 description "CONF_BUNDLES Instructions"; 6919 } 6920 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:" 6921 + "op_body/fpc:create_or_update/fpc:contexts/fpc:" 6922 + "instructions/fpc:instr-type" { 6923 case pmip-instr { 6924 uses fpc-pmip:pmip-commandset; 6925 description "PMIP Commandset"; 6926 } 6927 description "CONF_BUNDLES Context Instructions"; 6928 } 6929 augment "/fpc:configure-bundles/fpc:output/fpc:" 6930 + "bundles/fpc:result-type/fpc:create-or-update-success/fpc:" 6931 + "contexts/fpc:instructions/fpc:instr-type" { 6932 case pmip-instr { 6933 uses fpc-pmip:pmip-commandset; 6934 description "PMIP Commandset"; 6935 } 6936 description "CONF_BUNDLES Result Context Instructions"; 6937 } 6938 } 6939 6941 A.2.6. FPC Policy Extension YANG Model 6943 This module defines extensions to FPC policy structures. 6945 This module references [RFC6991], the fpc-base and fpcagent module 6946 defined in this document. 6948 file "ietf-dmm-fpc-policyext@2017-03-08.yang" 6949 module ietf-dmm-fpc-policyext { 6950 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-policyext"; 6951 prefix fpcpolicyext; 6953 import ietf-dmm-fpc { prefix fpc; revision-date 2017-03-08; } 6954 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 6956 organization "IETF Distributed Mobility Management (DMM) 6957 Working Group"; 6959 contact 6960 "WG Web: 6961 WG List: 6963 WG Chair: Dapeng Liu 6964 6966 WG Chair: Jouni Korhonen 6967 6969 Editor: Satoru Matsushima 6970 6972 Editor: Lyle Bertz 6973 "; 6975 description 6976 "This module contains YANG definition for Forwarding Policy 6977 Configuration Protocol (FPCP) common Policy Action and 6978 Descriptor extensions. 6980 Copyright (c) 2016 IETF Trust and the persons identified as the 6981 document authors. All rights reserved. 6983 This document is subject to BCP 78 and the IETF Trust's Legal 6984 Provisions Relating to IETF Documents 6985 (http://trustee.ietf.org/license-info) in effect on the date of 6986 publication of this document. Please review these documents 6987 carefully, as they describe your rights and restrictions with 6988 respect to this document. Code Components extracted from this 6989 document must include Simplified BSD License text as described 6990 in Section 4.e of the Trust Legal Provisions and are provided 6991 without warranty as described in the Simplified BSD License."; 6993 revision 2017-03-08 { 6994 description "Version 06 update."; 6995 reference "draft-ietf-dmm-fpc-cpdp-06"; 6996 } 6998 revision 2016-08-03 { 6999 description "Changes based on -04 version of FPC draft."; 7000 reference "draft-ietf-dmm-fpc-cpdp-04"; 7001 } 7003 identity service-function { 7004 base "fpc:fpc-descriptor-type"; 7005 description "Base Identifier for Service Functions."; 7006 } 7007 identity napt-service { 7008 base "service-function"; 7009 description "NAPT Service"; 7010 } 7011 grouping simple-nat { 7012 leaf outbound-nat-address { 7013 type inet:ip-address; 7014 description "Outbound NAT Address"; 7015 } 7016 description "Simple NAT value"; 7017 } 7019 identity nat-service { 7020 base "service-function"; 7021 description "NAT Service"; 7022 } 7023 grouping simple-napt { 7024 leaf source-port { 7025 type inet:port-number; 7026 description "Source Port"; 7027 } 7028 leaf outbound-napt-address { 7029 type inet:ip-address; 7030 description "Outbound NAPT Address"; 7031 } 7032 leaf destination-port { 7033 type inet:port-number; 7034 description "Destination Port"; 7035 } 7036 description "Simple NAPT Configuration"; 7037 } 7039 identity copy-forward { 7040 base "fpc:fpc-descriptor-type"; 7041 description "Copies a packet then forwards to a specific 7042 destination"; 7043 } 7044 grouping copy-forward { 7045 container destination { 7046 choice value { 7047 case port-ref { 7048 leaf port-ref { 7049 type fpc:fpc-vport-id; 7050 description "Port"; 7051 } 7052 description "Port Forward Case"; 7053 } 7054 case context-ref { 7055 leaf context-ref { 7056 type fpc:fpc-context-id; 7057 description "Context"; 7058 } 7059 description "Context Forward Case"; 7060 } 7061 description "Copy Forward Value"; 7062 } 7063 description "destination"; 7064 } 7065 description "Copy Then Forward to Port/Context Action"; 7066 } 7068 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:actions/fpc:" 7069 + "action-value" { 7070 case simple-nat { 7071 uses fpcpolicyext:simple-nat; 7072 description "Simple NAT value"; 7073 } 7074 case simple-napt { 7075 uses fpcpolicyext:simple-napt; 7076 description "Simple NAPT Value"; 7077 } 7078 case copy-forward { 7079 uses fpcpolicyext:copy-forward; 7080 description "Copy Forward Value"; 7081 } 7082 description "Policy Actions Augmentations"; 7083 } 7085 grouping prefix-traffic-descriptor { 7086 leaf destination-ip { 7087 type inet:ip-prefix; 7088 description "Rule of destination IP"; 7089 } 7090 leaf source-ip { 7091 type inet:ip-prefix; 7092 description "Rule of source IP"; 7093 } 7094 description 7095 "Traffic descriptor group collects parameters to 7096 identify target traffic flow. It represents 7097 source/destination as IP prefixes"; 7098 } 7100 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:" 7101 + "descriptors/fpc:descriptor-value" { 7102 case prefix-descriptor { 7103 uses fpcpolicyext:prefix-traffic-descriptor; 7104 description "traffic descriptor value"; 7105 } 7106 description "Descriptor Augments"; 7107 } 7108 } 7109 7111 A.3. FPC YANG Data Model Structure 7113 This section only shows the structure for FPC YANG model. 7115 module: ietf-dmm-fpc 7116 +--rw tenants 7117 | +--rw tenant* [tenant-id] 7118 | +--rw tenant-id fpc:fpc-identity 7119 | +--rw fpc-policy 7120 | | +--rw policy-groups* [policy-group-id] 7121 | | | +--rw policy-group-id fpc:fpc-policy-group-id 7122 | | | +--rw policies* fpc:fpc-policy-id 7123 | | +--rw policies* [policy-id] 7124 | | | +--rw policy-id fpc:fpc-policy-id 7125 | | | +--rw rules* [order] 7126 | | | +--rw order uint32 7127 | | | +--rw descriptors* [descriptor-id] 7128 | | | | +--rw descriptor-id fpc:fpc-identity 7129 | | | | +--rw direction? fpc:fpc-direction 7130 | | | +--rw actions* [action-id] 7131 | | | +--rw action-order? uint32 7132 | | | +--rw action-id fpc:fpc-action-id-type 7133 | | +--rw descriptors* [descriptor-id] 7134 | | | +--rw descriptor-id fpc:fpc-identity 7135 | | | +--rw descriptor-type identityref 7136 | | | +--rw (descriptor-value)? 7137 | | | +--:(all-traffic) 7138 | | | +--rw all-traffic? empty 7139 | | +--rw actions* [action-id] 7140 | | +--rw action-id fpc:fpc-action-id-type 7141 | | +--rw action-type identityref 7142 | | +--rw (action-value)? 7143 | | +--:(drop) 7144 | | +--rw drop? empty 7145 | +--ro fpc-mobility 7146 | | +--ro contexts* [context-id] 7147 | | | +--ro context-id fpc:fpc-context-id 7148 | | | +--ro vports* fpc:fpc-vport-id 7149 | | | +--ro dpn-group? fpc:fpc-dpn-group-id 7150 | | | +--ro delegated-ip-prefixes* inet:ip-prefix 7151 | | | +--ro ul {fpc:fpc-basic-agent}? 7152 | | | | +--ro tunnel-local-address? inet:ip-address 7153 | | | | +--ro tunnel-remote-address? inet:ip-address 7154 | | | | +--ro mtu-size? uint32 7155 | | | | +--ro mobility-tunnel-parameters 7156 | | | | | +--ro (profile-parameters)? 7157 | | | | | +--:(nothing) 7158 | | | | | +--ro none? empty 7159 | | | | +--ro nexthop 7160 | | | | | +--ro nexthop-type? identityref 7161 | | | | | +--ro (nexthop-value)? 7162 | | | | | +--:(ip-nexthop) 7163 | | | | | | +--ro ip? inet:ip-address 7164 | | | | | +--:(macaddress-nexthop) 7165 | | | | | | +--ro macaddress? ytypes:mac-address 7166 | | | | | +--:(servicepath-nexthop) 7167 | | | | | | +--ro servicepath? fpc:fpc-service-path-id 7168 | | | | | +--:(mplslabel-nexthop) 7169 | | | | | | +--ro lsp? fpc:fpc-mpls-label 7170 | | | | | +--:(if-nexthop) 7171 | | | | | +--ro if-index? uint16 7172 | | | | +--ro qos-profile-parameters 7173 | | | | | +--ro qos-type? identityref 7174 | | | | | +--ro (value)? 7175 | | | | +--ro dpn-parameters 7176 | | | | +--ro vendor-parameters* [vendor-id vendor-type] 7177 | | | | +--ro vendor-id fpc:fpc-identity 7178 | | | | +--ro vendor-type identityref 7179 | | | | +--ro (value)? 7180 | | | | +--:(empty-type) 7181 | | | | +--ro empty-type? empty 7182 | | | +--ro dl {fpc:fpc-basic-agent}? 7183 | | | | +--ro tunnel-local-address? inet:ip-address 7184 | | | | +--ro tunnel-remote-address? inet:ip-address 7185 | | | | +--ro mtu-size? uint32 7186 | | | | +--ro mobility-tunnel-parameters 7187 | | | | | +--ro (profile-parameters)? 7188 | | | | | +--:(nothing) 7189 | | | | | +--ro none? empty 7190 | | | | +--ro nexthop 7191 | | | | | +--ro nexthop-type? identityref 7192 | | | | | +--ro (nexthop-value)? 7193 | | | | | +--:(ip-nexthop) 7194 | | | | | | +--ro ip? inet:ip-address 7195 | | | | | +--:(macaddress-nexthop) 7196 | | | | | | +--ro macaddress? ytypes:mac-address 7197 | | | | | +--:(servicepath-nexthop) 7198 | | | | | | +--ro servicepath? fpc:fpc-service-path-id 7199 | | | | | +--:(mplslabel-nexthop) 7200 | | | | | | +--ro lsp? fpc:fpc-mpls-label 7201 | | | | | +--:(if-nexthop) 7202 | | | | | +--ro if-index? uint16 7203 | | | | +--ro qos-profile-parameters 7204 | | | | | +--ro qos-type? identityref 7205 | | | | | +--ro (value)? 7206 | | | | +--ro dpn-parameters 7207 | | | | +--ro vendor-parameters* [vendor-id vendor-type] 7208 | | | | +--ro vendor-id fpc:fpc-identity 7209 | | | | +--ro vendor-type identityref 7210 | | | | +--ro (value)? 7211 | | | | +--:(empty-type) 7212 | | | | +--ro empty-type? empty 7213 | | | +--ro dpns* [dpn-id direction] {fpc:fpc-multi-dpn}? 7214 | | | | +--ro dpn-id fpc:fpc-dpn-id 7215 | | | | +--ro direction fpc:fpc-direction 7216 | | | | +--ro tunnel-local-address? inet:ip-address 7217 | | | | +--ro tunnel-remote-address? inet:ip-address 7218 | | | | +--ro mtu-size? uint32 7219 | | | | +--ro mobility-tunnel-parameters 7220 | | | | | +--ro (profile-parameters)? 7221 | | | | | +--:(nothing) 7222 | | | | | +--ro none? empty 7223 | | | | +--ro nexthop 7224 | | | | | +--ro nexthop-type? identityref 7225 | | | | | +--ro (nexthop-value)? 7226 | | | | | +--:(ip-nexthop) 7227 | | | | | | +--ro ip? inet:ip-address 7228 | | | | | +--:(macaddress-nexthop) 7229 | | | | | | +--ro macaddress? ytypes:mac-address 7230 | | | | | +--:(servicepath-nexthop) 7231 | | | | | | +--ro servicepath? fpc:fpc-service-path-id 7232 | | | | | +--:(mplslabel-nexthop) 7233 | | | | | | +--ro lsp? fpc:fpc-mpls-label 7234 | | | | | +--:(if-nexthop) 7235 | | | | | +--ro if-index? uint16 7236 | | | | +--ro qos-profile-parameters 7237 | | | | | +--ro qos-type? identityref 7238 | | | | | +--ro (value)? 7239 | | | | +--ro dpn-parameters 7240 | | | | +--ro vendor-parameters* [vendor-id vendor-type] 7241 | | | | +--ro vendor-id fpc:fpc-identity 7242 | | | | +--ro vendor-type identityref 7243 | | | | +--ro (value)? 7244 | | | | +--:(empty-type) 7245 | | | | +--ro empty-type? empty 7246 | | | +--ro parent-context? fpc:fpc-context-id 7247 | | +--ro vports* [vport-id] 7248 | | | +--ro vport-id fpc:fpc-vport-id 7249 | | | +--ro policy-groups* fpc:fpc-policy-group-id 7250 | | +--ro monitors* 7251 | | +--ro monitor-id? fpc:fpc-identity 7252 | | +--ro target? fpc-identity 7253 | | +--ro (event-config-value)? 7254 | | +--:(periodic-config) 7255 | | | +--ro period? uint32 7256 | | +--:(threshold-config) 7257 | | | +--ro lo-thresh? uint32 7258 | | | +--ro hi-thresh? uint32 7259 | | +--:(scheduled-config) 7260 | | | +--ro report-time? uint32 7261 | | +--:(events-config-ident) 7262 | | | +--ro event-identities* identityref 7263 | | +--:(events-config) 7264 | | +--ro event-ids* uint32 7265 | +--rw fpc-topology 7266 | +--rw domains* [domain-id] 7267 | | +--rw domain-id fpc:fpc-domain-id 7268 | | +--rw domain-name? string 7269 | | +--rw domain-type? string 7270 | | +--rw domain-reference? instance-identifier 7271 | | +--rw basename? fpc:fpc-identity 7272 | | | {fpc:fpc-basename-registry}? 7273 | | +--rw base-state? string 7274 | | | {fpc:fpc-basename-registry}? 7275 | | +--rw base-checkpoint? string 7276 | | {fpc:fpc-basename-registry}? 7277 | +--rw dpn-id? fpc:fpc-dpn-id 7278 | | {fpc:fpc-basic-agent}? 7279 | +--rw control-protocols* identityref 7280 | | {fpc:fpc-basic-agent}? 7281 | +--rw dpn-groups* [dpn-group-id] {fpc:fpc-multi-dpn}? 7282 | | +--rw dpn-group-id fpc:fpc-dpn-group-id 7283 | | +--rw data-plane-role? identityref 7284 | | +--rw access-type? identityref 7285 | | +--rw mobility-profile? identityref 7286 | | +--rw dpn-group-peers* [remote-dpn-group-id] 7287 | | | +--rw remote-dpn-group-id fpc:fpc-dpn-group-id 7288 | | | +--rw remote-mobility-profile? identityref 7289 | | | +--rw remote-data-plane-role? identityref 7290 | | | +--rw remote-endpoint-address? inet:ip-address 7291 | | | +--rw local-endpoint-address? inet:ip-address 7292 | | | +--rw mtu-size? uint32 7293 | | +--rw domains* [domain-id] 7294 | | +--rw domain-id fpc:fpc-domain-id 7295 | | +--rw domain-name? string 7296 | | +--rw domain-type? string 7297 | | +--rw domain-reference? instance-identifier 7298 | | +--rw basename? fpc:fpc-identity 7299 | | | {fpc:fpc-basename-registry}? 7300 | | +--rw base-state? string 7301 | | | {fpc:fpc-basename-registry}? 7302 | | +--rw base-checkpoint? string 7303 | | {fpc:fpc-basename-registry}? 7304 | +--rw dpns* [dpn-id] {fpc:fpc-multi-dpn}? 7305 | +--rw dpn-id fpc:fpc-dpn-id 7306 | +--rw dpn-name? string 7307 | +--rw dpn-groups* fpc:fpc-dpn-group-id 7308 | +--rw node-reference? instance-identifier 7309 +--rw fpc-agent-info 7310 +--rw supported-features* string 7311 +--rw supported-events* [event] 7312 | +--rw event identityref 7313 | +--rw event-id? fpc:event-type-id 7314 +--rw supported-error-types* [error-type] 7315 +--rw error-type identityref 7316 +--rw error-type-id? fpc:error-type-id 7318 Figure 28: YANG FPC Agent Tree 7320 Authors' Addresses 7322 Satoru Matsushima 7323 SoftBank 7324 1-9-1,Higashi-Shimbashi,Minato-Ku 7325 Tokyo 105-7322 7326 Japan 7328 Email: satoru.matsushima@g.softbank.co.jp 7329 Lyle Bertz 7330 6220 Sprint Parkway 7331 Overland Park KS, 66251 7332 USA 7334 Email: lylebe551144@gmail.com 7336 Marco Liebsch 7337 NEC Laboratories Europe 7338 NEC Europe Ltd. 7339 Kurfuersten-Anlage 36 7340 D-69115 Heidelberg 7341 Germany 7343 Phone: +49 6221 4342146 7344 Email: liebsch@neclab.eu 7346 Sri Gundavelli 7347 Cisco 7348 170 West Tasman Drive 7349 San Jose, CA 95134 7350 USA 7352 Email: sgundave@cisco.com 7354 Danny Moses 7356 Email: danny.moses@intel.com 7358 Charles E. Perkins 7359 Futurewei Inc. 7360 2330 Central Expressway 7361 Santa Clara, CA 95050 7362 USA 7364 Phone: +1-408-330-4586 7365 Email: charliep@computer.org