idnits 2.17.1 draft-ietf-dmm-fpc-cpdp-05.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 402 instances of too long lines in the document, the longest one being 110 characters in excess of 72. == 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 6766 has weird spacing: '...roup-id fpc...' == Line 6769 has weird spacing: '...licy-id fpc...' == Line 6773 has weird spacing: '...ptor-id fpc...' == Line 6777 has weird spacing: '...tion-id fpc...' == Line 6780 has weird spacing: '...or-type ide...' == (4 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 (October 31, 2016) is 2732 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 1998 == Missing Reference: 'INTEGER' is mentioned on line 1998, but not defined == Missing Reference: 'NOTE 1' is mentioned on line 2262, but not defined == Missing Reference: 'NOTE 2' is mentioned on line 2281, but not defined -- Looks like a reference, but probably isn't: '1024' on line 2133 == Missing Reference: 'OCTET STRING' is mentioned on line 2133, but not defined -- Looks like a reference, but probably isn't: '8' on line 2175 == Missing Reference: 'REPORT-TYPE' is mentioned on line 2175, but not defined == Missing Reference: 'NOTE 3' is mentioned on line 2288, but not defined == Missing Reference: 'DSCP' is mentioned on line 2426, but not defined == Missing Reference: 'RFC6020' is mentioned on line 2839, but not defined == Unused Reference: 'RFC6089' is defined on line 2866, but no explicit reference was found in the text == Outdated reference: A later version (-06) exists of draft-bertz-dime-policygroups-01 == Outdated reference: A later version (-04) exists of draft-ietf-dmm-deployment-models-00 Summary: 1 error (**), 0 flaws (~~), 20 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: May 4, 2017 Sprint 6 M. Liebsch 7 NEC 8 S. Gundavelli 9 Cisco 10 D. Moses 11 Intel Corporation 12 October 31, 2016 14 Protocol for Forwarding Policy Configuration (FPC) in DMM 15 draft-ietf-dmm-fpc-cpdp-05.txt 17 Abstract 19 This document describes the solution of data-plane separation from 20 control-plane which enables a flexible mobility management system 21 using agent and client functions. To configure data-plane nodes and 22 functions, the data-plane is abstracted by an agent interface to the 23 client. The data-plane abstraction model is extensible in order to 24 support many different type of mobility management systems and data- 25 plane functions. 27 Status of This Memo 29 This Internet-Draft is submitted in full conformance with the 30 provisions of BCP 78 and BCP 79. 32 Internet-Drafts are working documents of the Internet Engineering 33 Task Force (IETF). Note that other groups may also distribute 34 working documents as Internet-Drafts. The list of current Internet- 35 Drafts is at http://datatracker.ietf.org/drafts/current/. 37 Internet-Drafts are draft documents valid for a maximum of six months 38 and may be updated, replaced, or obsoleted by other documents at any 39 time. It is inappropriate to use Internet-Drafts as reference 40 material or to cite them other than as "work in progress." 42 This Internet-Draft will expire on May 4, 2017. 44 Copyright Notice 46 Copyright (c) 2016 IETF Trust and the persons identified as the 47 document authors. All rights reserved. 49 This document is subject to BCP 78 and the IETF Trust's Legal 50 Provisions Relating to IETF Documents 51 (http://trustee.ietf.org/license-info) in effect on the date of 52 publication of this document. Please review these documents 53 carefully, as they describe your rights and restrictions with respect 54 to this document. Code Components extracted from this document must 55 include Simplified BSD License text as described in Section 4.e of 56 the Trust Legal Provisions and are provided without warranty as 57 described in the Simplified BSD License. 59 Table of Contents 61 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 62 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 4 63 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 64 4. FPC Architecture . . . . . . . . . . . . . . . . . . . . . . 5 65 5. Information Model . . . . . . . . . . . . . . . . . . . . . . 8 66 5.1. FPC-Topology . . . . . . . . . . . . . . . . . . . . . . 8 67 5.1.1. Domains . . . . . . . . . . . . . . . . . . . . . . . 9 68 5.1.2. DPN-groups . . . . . . . . . . . . . . . . . . . . . 9 69 5.1.3. DPNs . . . . . . . . . . . . . . . . . . . . . . . . 11 70 5.2. FPC-Policy . . . . . . . . . . . . . . . . . . . . . . . 12 71 5.2.1. Descriptors . . . . . . . . . . . . . . . . . . . . . 12 72 5.2.2. Actions . . . . . . . . . . . . . . . . . . . . . . . 13 73 5.2.3. Policies . . . . . . . . . . . . . . . . . . . . . . 14 74 5.2.4. Policy-groups . . . . . . . . . . . . . . . . . . . . 16 75 5.3. FPC-Mobility . . . . . . . . . . . . . . . . . . . . . . 16 76 5.3.1. Port . . . . . . . . . . . . . . . . . . . . . . . . 16 77 5.3.2. Context . . . . . . . . . . . . . . . . . . . . . . . 17 78 5.3.3. Monitors . . . . . . . . . . . . . . . . . . . . . . 22 79 5.4. Namespace and Format . . . . . . . . . . . . . . . . . . 23 80 5.5. Attribute Application . . . . . . . . . . . . . . . . . . 24 81 5.6. Policy and Runtime Data . . . . . . . . . . . . . . . . . 25 82 6. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 25 83 6.1. Protocol Messages and Semantics . . . . . . . . . . . . . 25 84 6.1.1. CONF and CONF_BUNDLES Messages . . . . . . . . . . . 28 85 6.1.2. Monitors . . . . . . . . . . . . . . . . . . . . . . 31 86 6.2. Protocol Operation . . . . . . . . . . . . . . . . . . . 32 87 6.2.1. Simple RPC Operation . . . . . . . . . . . . . . . . 32 88 6.2.2. Policy And Mobility on the Agent . . . . . . . . . . 37 89 6.2.3. Optimization for Current and Subsequent Messages . . 39 90 6.2.4. Pre-provisioning . . . . . . . . . . . . . . . . . . 44 91 7. Protocol Message Details . . . . . . . . . . . . . . . . . . 45 92 7.1. Data Structures And Type Assignment . . . . . . . . . . . 45 93 7.1.1. Policy Structures . . . . . . . . . . . . . . . . . . 45 94 7.1.2. Mobilty Structures . . . . . . . . . . . . . . . . . 47 95 7.1.3. Topology Structures . . . . . . . . . . . . . . . . . 49 96 7.1.4. Monitors . . . . . . . . . . . . . . . . . . . . . . 50 98 7.2. Message Attributes . . . . . . . . . . . . . . . . . . . 52 99 7.2.1. Header . . . . . . . . . . . . . . . . . . . . . . . 52 100 7.2.2. CONF and CONF_BUNDLES Attributes and Notifications . 52 101 7.2.3. Monitors . . . . . . . . . . . . . . . . . . . . . . 55 102 8. Derived and Subtyped Attributes . . . . . . . . . . . . . . . 55 103 8.1. 3GPP Specific Extenstions . . . . . . . . . . . . . . . . 58 104 9. Implementation Status . . . . . . . . . . . . . . . . . . . . 60 105 10. Security Considerations . . . . . . . . . . . . . . . . . . . 64 106 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 65 107 12. Work Team Participants . . . . . . . . . . . . . . . . . . . 67 108 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 67 109 13.1. Normative References . . . . . . . . . . . . . . . . . . 67 110 13.2. Informative References . . . . . . . . . . . . . . . . . 67 111 Appendix A. YANG Data Model for the FPC protocol . . . . . . . . 68 112 A.1. FPC Agent YANG Model . . . . . . . . . . . . . . . . . . 69 113 A.2. YANG Models . . . . . . . . . . . . . . . . . . . . . . . 85 114 A.2.1. FPC YANG Model . . . . . . . . . . . . . . . . . . . 85 115 A.2.2. PMIP QoS Model . . . . . . . . . . . . . . . . . . . 99 116 A.2.3. Traffic Selectors YANG Model . . . . . . . . . . . . 112 117 A.2.4. FPC 3GPP Mobility YANG Model . . . . . . . . . . . . 123 118 A.2.5. FPC / PMIP Integration YANG Model . . . . . . . . . . 138 119 A.2.6. FPC Policy Extension YANG Model . . . . . . . . . . . 145 120 A.3. FPC nformation Model YANG Tree . . . . . . . . . . . . . 148 121 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 152 123 1. Introduction 125 This document describes Forwarding Policy Configuration (FPC), the 126 solution of data-plane separation from control-plane which enables 127 flexible mobility management systems using agent and client 128 functions. To configure data-plane nodes and functions, the data- 129 plane is abstracted in the agent which provides an interface to the 130 client. 132 Control planes of mobility management systems, and/or any 133 applications which require data-plane control, can utilize the FPC 134 Client in flexible granularities of operation. The configuration 135 operations are capable of configuring not only single Data-Plane Node 136 (DPN) directly, but also multiple DPNs from abstracted data-plane 137 models on the FPC agent. 139 FPC agent provides the data-plane abstraction models in the following 140 three areas: 142 Topology: DPNs are grouped and abstracted in terms of roles of 143 mobility management such as access, anchors and domains. FPC 144 Agent abstracts DPN-groups and consists of forwarding plane 145 topology, such as access nodes assigned to a DPN-group which peers 146 to a DPN-group of anchor nodes. 148 Policy: Policy abstracts policies which handle specific traffic 149 flows or packets such as QoS, packet processing to rewrite 150 headers, etc. A policy consists of one or multiple rules which 151 are composed of Descriptors and Actions. Descriptors in a rule 152 identify traffic flows and Actions apply treatments to packets 153 matched to the Descriptors in the rule. An arbitrary set of 154 policies is abstracted as a Policy-group which is applied to 155 Ports. 157 Mobility: An endpoint of a mobility session is abstracted as a 158 Context with its associated runtime concrete attributes, such as 159 tunnel endpoints, tunnel identifiers, delegated prefix(es), 160 routing information, etc. Contexts are attached to DPN-groups 161 along with consequence of the control plane. One or multiple 162 Contexts which have same sets of policies are assigned Ports which 163 abstract those policy sets. A Context can belong to multiple 164 Ports which serve different kinds of purpose and policy. Monitors 165 provide a mechanism to produce reports when events regarding 166 Ports, Sessions, DPNs or the Agent occurs. 168 The Agent collects applicable sets of forwarding policies for the 169 mobility sessions from the data model, and then renders those 170 policies into specific configurations for each DPN to which the 171 sessions attached. Specific protocols and configurations to 172 configure DPN from FPC Agent are out of scope of this document. 174 The data-plane abstraction model is extensible in order to support 175 many different types of mobility management systems and data-plane 176 functions. The architecture and protocol design of FPC intends not 177 to tie to specific types of access technologies and mobility 178 protocols. 180 2. Conventions 182 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 183 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 184 document are to be interpreted as described in [RFC2119]. 186 3. Terminology 188 DPN: A data-plane node (DPN) is capable of 189 deploying data-plane features. DPNs may be 190 switches or routers regardless of their 191 realiziation, i.e. whether they are hardware 192 or software based. 194 FPC Agent: A functional entity in FPC that manages DPNs 195 and provides abstracted data-plane networks 196 to mobility management systems and/or 197 applications through FPC Clients. 199 FPC Client: A functional entity in FPC that is integrated 200 with mobility management systems and/or 201 applications to control forwarding policy, 202 mobility sessions and DPNs. 204 Tenant: An operational entity that manages mobility 205 management systems or applications which 206 require data-plane functions. 208 Domain: One or more DPNs that form a data-plane 209 network. A mobility management system or an 210 application in a tenant may utilize a single 211 or multiple domains. 213 Port: A set of forwarding policies. 215 Context: An abstracted endpoint of a mobility session 216 associated with runtime attributes. Ports 217 may apply to Context which instantiates those 218 forwarding policies on a DPN. 220 4. FPC Architecture 222 In accordance with the requirements of flexible data-plane functions 223 deployment described in [RFC7333], FPC provides a means for mobility 224 control-plane and applications to handle DPNs that must be configured 225 with various roles of the mobility management aspect described in 226 [I-D.ietf-dmm-deployment-models]. 228 FPC uses building blocks of Agent, Client and data-plane abstraction 229 models as the interface between the agent and the client. 231 Mobility control-plane and applications integrate the FPC Client 232 function and connect to FPC Agent functions. The Client and the 233 Agent communicate based on data-plane abstraction models described in 234 Section 5. Along with models, the control-plane and the applications 235 put forwarding policies for their mobility sessions on the Agent. 237 The Agent connects to DPN(s) to manage their configuration. These 238 configurations are rendered from the forwarding policies by the 239 Agent. FPC Agent may be implemented in a network controller that 240 handles multiple DPNs or it also may be integrated into a DPN. 242 The FPC architecture supports multi-tenancy where the FPC enabled 243 data-plane supports multiple tenants of mobile operator networks and/ 244 or applications. DPNs on the data-plane run in multiple data-plane 245 roles which are defined per session, domain and tenant. 247 This architecture is illustrated in Figure 1. This document does not 248 adopt a specific protocol for the FPC envelope protocol and it is out 249 of scope. However it must be capable of supporting FPC protocol 250 messages and transactions described in Section 6. 252 +-------------------------+ 253 | Mobility Control-Plane | 254 | and | 255 | Applications | 256 |+-----------------------+| 257 || FPC Client || 258 |+----------^------------+| 259 +-----------|-------------+ 260 FPC envelope protocol | 261 +---------------+-----------------+ 262 | | 263 Network | | 264 Controller | DPN | 265 +-----------|-------------+ +----------|---------+ 266 |+----------v------------+| |+---------v--------+| 267 || [Data-plane model] || ||[Data-plane model]|| 268 || FPC Agent || || FPC Agent || 269 |+-----------------------+| |+------------------+| 270 |+------------+----------+| | | 271 ||SB Protocols|FPC Client|| | DPN Configuration | 272 || Modules | Module || +--------------------+ 273 |+------^-----+----^-----+| 274 +-------|----------|------+ 275 | | 276 Other | | FPC envelope 277 Southband | | Protocol 278 Protocols | | 279 | +-----------------+ 280 | | 281 DPN | DPN | 282 +----------|---------+ +----------|---------+ 283 |+---------v--------+| |+---------v--------+| 284 || Configuration || ||[Data-plane model]|| 285 || Protocol module || || FPC Agent || 286 |+------------------+| |+------------------+| 287 | | | | 288 | DPN Configuration | | DPN Configuration | 289 +--------------------+ +--------------------+ 291 Figure 1: Reference Forwarding Policy Configuration (FPC) 292 Architecture 294 Note that the FPC envelope protocol is only required to handle 295 runtime data in the Mobility model. The rest of the FPC models, 296 namely Topology and Policy, are pre-configured, therefore real-time 297 data handling capabilities are not required for them. Operators that 298 are tenants in the FPC data-plane can configure Topology and Policy 299 on the Agent through other means, such as Restconf 300 [I-D.ietf-netconf-restconf] or Netconf [RFC6241]. 302 5. Information Model 304 This section describes information model that represents the concept 305 of FPC which is language and protocol neutral. Figure 2 is an 306 overview of FPC data-plane abstraction model. 308 (Mobile operator tenant that abstracted data-plane is used) 309 | 310 +---FPC-Topology 311 | | 312 | +---Domains 313 | | 314 | +---DPN-groups 315 | | 316 | +---DPNs 317 | 318 +---FPC-Policy 319 | | 320 | +---Descriptors 321 | | 322 | +---Actions 323 | | 324 | +---Policies 325 | | 326 | +---Policy-groups 327 | 328 +---FPC-Mobility 329 | 330 +---Ports 331 | 332 +---Contexts 334 Figure 2: FPC Data-plane Abstraction Model 336 5.1. FPC-Topology 338 Topology abstraction enables an actual data-plane network to support 339 multiple mobile operator's topologies of their data-plane. The FPC- 340 Topology consists of DPNs, DPN-groups and Domains which abstract 341 data-plane topologies for the Client's mobility control-planes and 342 applications. 344 A mobile operator who utilizes a FPC enabled data-plane network can 345 virtually create their DPNs along with their data-plane design on the 346 Agent. The operator also creates a DPN-group of which the DPNs are 347 attributed roles of mobility management such as access, anchors and 348 domains. 350 5.1.1. Domains 352 A domain is defined by the operators to attribute DPN-groups to the 353 domain. Domains may represent services or applications within the 354 operator. 356 (FPC-Topology) 357 | 358 +---Domains 359 | 360 +---Domain-id 361 | 362 +---Domain-name 363 | 364 +---Domain-type 366 Figure 3: Domain Model Structure 368 Domain-id: Identifier of Domain. The ID format SHOULD refer to 369 Section 5.4. 371 Domain-name: Defines Domain name. 373 Domain-type: Specifies which type of communication allowed within 374 the domain, such as ipv4, ipv6, ipv4v6 or ieee802. 376 5.1.2. DPN-groups 378 A DPN-group defines a set of DPNs which share common data-plane 379 attributes. DPN-groups consist data-plane topology that consists of 380 a DPN-group of access nodes connecting to an anchor nodes DPN-group. 382 DPN Group has attributes such as the data-plane role, supported 383 access technologies, mobility profiles, connected peer groups and 384 domain. 386 (FPC-Topology) 387 | 388 +---DPN-groups 389 | 390 +---DPN-group-id 391 | 392 +---Data-plane-role 393 | 394 +---Domains 395 | 396 +---Access-type 397 | 398 +---Mobility-profile 399 | 400 +---DPN-group-peers 402 Figure 4: DPN-groups Model Structure 404 DPN-group-id: Defines identifier of DPN-group. The ID format SHOULD 405 refer to Section 5.4. 407 Data-plane-role: Defines data-plane role of the DPN-group, such as 408 access-dpn, L2/L3 or anchor-dpn. 410 Domains: Specifies domains which the DPN-group belongs to. 412 Access-type: Defines access type which the DPN-group supports such 413 as ethernet(802.3/11), 3gpp cellular(S1, RAB), if any. 415 Mobility-profile: Defines supported mobility profile, such as ietf- 416 pmip, 3gpp, or new profiles defined as extensions of this 417 specification. When those profiles are correctly defined, some 418 or all data-plane parameters of contexts can be automatically 419 derived from this profile by FPC Agent. 421 DPN-group-peers: Defines remote peers of DPN-group with parameters 422 described in Section 5.1.2.1. 424 5.1.2.1. DPN-group Peers 426 DPN-group-peers defines parameters of remote peer DPNs as illustrated 427 in Figure 5. 429 (DPN-groups) 430 | 431 +---DPN-group-peers 432 | 433 +---Remote-DPN-group-id 434 | 435 +---Remote-mobility-profile 436 | 437 +---Remote-data-plane-role 438 | 439 +---Remote-endpoint-address 440 | 441 +---Local-endpoint-address 442 | 443 +---MTU-size 445 Figure 5: DPN-groups Peer Model Structure 447 Remote-DPN-group-id: Indicates peering DPN-Group. 449 Remote-mobility-profile: Defines mobility-profile used for this 450 peer, currently defined profiles are ietf-pmip, 3gpp, or new 451 profiles defined as extensions of this specification. 453 Remote-data-plane-role: Defines forwarding-plane role of peering 454 DPN-group. 456 Remote-endpoint-address: Defines Endpoint address of the peering 457 DPN-group. 459 Local-endpoint-address: Defines Endpoint address of its own DPN- 460 group to peer the remote DPN-group. 462 MTU-size: Defines MTU size of traffic between the DPN-Group and this 463 DPN-group-peer. 465 5.1.3. DPNs 467 List of DPNs which defines all available nodes for a tenant of the 468 FPC data-plane network. Role of a DPN in the data-plane is not 469 determined until the DPN is attributed to a DPN-group. 471 A DPN may have multiple DPN-groups which are in different data-plane 472 roles or domains. Mobility sessions of that DPN-groups are installed 473 into actual data-plane nodes. The Agent defines DPN binding to 474 actual nodes. 476 (FPC-Topology) 477 | 478 +---DPNs 479 | 480 +---DPN-id 481 | 482 +---DPN-name 483 | 484 +---DPN-groups 485 | 486 +---Node-reference 488 Figure 6: DPNs Model Structure 490 DPN-id: Defines identifier of DPN. The ID format SHOULD refer to 491 Section 5.4. 493 DPN-name: Defines name of DPN. 495 DPN-groups: List of DPN-group which the DPN belongs to. 497 Node-reference: Indicates an actual node to which the Agent binds 498 the DPN. The Agent SHOULD maintain that nodes information 499 including IP address of management and control protocol to 500 connect them. 502 5.2. FPC-Policy 504 The FPC-Policy consists of Descriptors, Actions, Policies and Policy- 505 groups, which can be viewed as configuration data while Contexts and 506 Ports are akin to structures that are instantiated on the Agent. The 507 Descriptors and Actions in a Policy referenced by a Port are active 508 when the Port is in a active Context, i.e. they can be applied to 509 traffic on a DPN. 511 5.2.1. Descriptors 513 List of Descriptors which defines classifiers of specific traffic 514 flow, such as those based on source and destination addresses, 515 protocols, port numbers of TCP/UDP/SCTP/DCCP or any packet. Note 516 that Descriptors are extensibly defined by specific profiles which 517 3gpp, ietf or other SDOs produce. Many specifications also use the 518 terms Filter, Traffic Descriptor or Traffic Selector [RFC6088]. A 519 packet that meets the criteria of a Descriptor is said to satisfy, 520 pass or is consumed by the Descriptor. Descriptors are assigned an 521 identifier and contain a type and value. 523 (FPC-Policy) 524 | 525 +---Descriptors 526 | 527 +---Descriptor-id 528 | 529 +---Descriptor-type 530 | 531 +---Descriptor-value 533 Figure 7: Descriptor Model Structure 535 Descriptor-id: Identifier of Descriptor. The ID format SHOULD refer 536 to Section 5.4. 538 Descriptor-type: Defines descriptor type, which classifies specific 539 traffic flow, such as source and destination addresses, 540 protocols, port numbers of TCP/UDP/SCTP/DCCP or any packet. 542 Descriptor-value: Specifies the value of Descriptor such as IP 543 prefix/address, protocol number, port number, etc. 545 5.2.2. Actions 547 List of Actions which defines treatment/actions to apply to 548 classified traffic meeting the criteria defined by Descriptors. 549 Actions include traffic management related activity such as shaping, 550 policing based on given bandwidth, and connectivity management 551 actions such as pass, drop, forward to given nexthop. Note that 552 Actions are extensibly defined by specific profiles which 3gpp, ietf 553 or other SDOs produce. 555 (FPC-Policy) 556 | 557 +---Actions 558 | 559 +---Action-id 560 | 561 +---Action-type 562 | 563 +---Action-value 565 Figure 8: Action Model Structure 567 Action-id: Identifier of Action. The ID format SHOULD refer to 568 Section 5.4. 570 Action-type: Defines action type, i.e. how to treat the specified 571 traffic flow, e.g. pass, drop, forward to given nexthop value and 572 shape, police based on given bandwidth value, etc. 574 Action-value: Specifies value of Action, such as bandwidth, nexthop 575 address or drop explicitly, etc. 577 5.2.3. Policies 579 Policies are collections of Rules. Each Policy has a Policy 580 Identifier and a list of Rule/Order pairs. The Order and Rule values 581 MUST be unique in the Policy. Unlike the AND filter matching of each 582 Rule the Policy uses an OR matching to find the first Rule whose 583 Descriptors are satisfied by the packet. The search for a Rule to 584 apply to packet is executed according to the unique Order values of 585 the Rules. This is an ascending order search, i.e. the Rule with the 586 lowest Order value is tested first and if its Descriptors are not 587 satisfied by the packet the Rule with the next lowest Order value is 588 tested. If a Rule is not found then the Policy does not apply. 589 Policies contain Rules as opposed to references to Rules. 591 (FPC-Policy) 592 | 593 +---Policies 594 | 595 +---Policy-id 596 | 597 +---Rules 598 | 599 +---Order 600 | 601 +---Descriptors 602 | | 603 | +---Descriptor-id 604 | | 605 | +---Direction 606 | 607 +---Actions 608 | 609 +---Action-id 610 | 611 +---Order 613 Figure 9: Policies Model Structure 615 Policy-id: Identifier of Policy. The ID format SHOULD refer to 616 Section 5.4. 618 Rules: List of Rules which are a collection of Descriptors and 619 Actions. All Descriptors MUST be satisfied before the Actions 620 are taken. This is known as an AND Descriptor list, i.e. 621 Descriptor 1 AND Descriptor 2 AND ... Descriptor X MUST be 622 satisfied for the Rule to apply. These are internal structure to 623 the Policy, i.e. it is not a first class, visible object at the 624 top level of an Agent. 626 Order: Specifies ordering if the Rule has multiple Descriptors and 627 Action sets. 629 Descriptors: List of Descriptors. 631 Descriptor-id: Indicates each Descriptor in the Rule. 633 Direction: Specifies which direction applies, such as upstream, 634 downstream or both. 636 Actions: List of Actions. 638 Action-id: Indicates each Action in the rule. 640 Order: Specifies Action ordering if the Rule has multiple actions. 642 5.2.4. Policy-groups 644 List of Policy-groups which are an aggregation of Policies. Common 645 applications include aggregating Policies that are defined by 646 different functions, e.g. Network Address Translation, Security, 647 etc. The structure has an Identifier and references the Policies via 648 their Identifiers. 650 (FPC-Policy) 651 | 652 +---Policy-groups 653 | 654 +---Policy-group-id 655 | 656 +---Policies 658 Figure 10: Policy-group Model Structure 660 Policy-group-id: Identifier of Policy-group. The ID format SHOULD 661 refer to Section 5.4. 663 Policies: List of Policies in the Policy-group. 665 5.3. FPC-Mobility 667 The FPC-Mobility consists of Port and Context. A mobility session is 668 abstracted as a Context with its associated runtime concrete 669 attributes, such as tunnel endpoints, tunnel identifiers, delegated 670 prefix(es) and routing information, etc. A Port abstracts a set of 671 policies applied to the Context. 673 5.3.1. Port 675 A port represents a collection of policy groups, a group of rules 676 that can exist independent of the mobility/session lifecycle. 677 Mobility control-plane or applications create, modify and delete 678 Ports on FPC Agent through the FPC Client. 680 When a Port is indicated in a Context, the set of Descriptors and 681 Actions in the Policies of the Port are collected and applied to the 682 Context. They must be instantiated on the DPN as forwarding related 683 actions such as QoS differentiations, packet processing of encap/ 684 decap, header rewrite, route selection, etc. 686 (FPC-Mobility) 687 | 688 +---Ports 689 | 690 +---Port-id 691 | 692 +---Policy-groups 694 Figure 11: Port Model Structure 696 Port-id: Identifier of Port. The ID format SHOULD refer to 697 Section 5.4. 699 Policy-groups: List of references to Policy-groups which apply to 700 the Port. 702 5.3.2. Context 704 An endpoint of a mobility session or the instantiation of policy- 705 groups is abstracted as a Context with its associated runtime 706 concrete attributes, such as tunnel endpoints, tunnel identifiers, 707 delegated prefix(es) and routing information, etc. Mobility control- 708 plane or applications create, modify and delete contexts on FPC Agent 709 through the FPC Client. 711 A Context directly describes traffic treatment policies in QoS 712 profile and Mobility profiles or indirectly via Ports. Parameters in 713 these profiles may be set by the FPC Client directly or indirectly 714 derived from the set of Descriptors and Actions when the Ports 715 indicate Policies which specify those descriptors and actions. If a 716 Context doesn't have any Port, all parameters of the Context must be 717 set by the Client. 719 (FPC-Mobility) 720 | 721 +---Contexts 722 | 723 +---Context-id 724 | 725 +---Ports 726 | 727 +---DPN-group 728 | 729 +---Delegating-ip-prefixes 730 | 731 +---Parent-context 733 Figure 12: Common Context Model Structure 735 Context-id: Identifier of Context. The ID format SHOULD refer to 736 Section 5.4. 738 Ports: List of Ports. When a Context is applied to Port(s), the 739 context is configured by policies of those Port(s). Port-id 740 references indicate Ports which apply to the Context. Context 741 can be a part of multiple Ports which have different policies. 743 DPN-group: The DPN-group assigned to the Context. 745 Delegating-ip-prefixes: List of IP prefixes to be delegated to the 746 mobile node of the context. 748 Parent-context: Indicates context which the context inherits. 750 5.3.2.1. Single DPN Agent Case 752 In the case where a FPC Agent supports only one DPN, the Agent MUST 753 maintain context data just for the DPN. The Agent does not need to 754 maintain a Topology model. The Context in single DPN case consists 755 of following parameters for both direction of uplink and downlink. 757 (Contexts) 758 | 759 +---UL-Tunnel-local-address 760 | 761 +---UL-Tunnel-remote-address 762 | 763 +---UL-MTU-size 764 | 765 +---UL-Mobility-specific-tunnel-parameters 766 | 767 +---UL-Nexthop 768 | 769 +---UL-QoS-profile-specific-parameters 770 | 771 +---UL-DPN-specific-parameters 772 | 773 +---UL-Vendor-specific-parameters 775 Figure 13: Uplink Context Model of Single DPN Structure 777 UL-Tunnel-local-address: Specifies uplink endpoint address of the 778 DPN. 780 UL-Tunnel-remote-address: Specifies uplink endpoint address of the 781 remote DPN. 783 UL-MTU-size: Specifies uplink MTU size. 785 UL-Mobility-specific-tunnel-parameters: Specifies profile specific 786 uplink tunnel parameters to the DPN which the agent exists. The 787 profiles includes GTP/TEID for 3gpp profile, GRE/Key for ietf- 788 pmip profile, or new profiles defined by extensions of this 789 specification. 791 UL-Nexthop: Indicates nexthop information of uplink in external 792 network such as IP address, MAC address, SPI of service function 793 chain, SID of segment routing, etc. 795 UL-QoS-profile-specific-parameters: Specifies profile specific QoS 796 parameter of uplink, such as QCI/TFT for 3gpp profile, 797 [RFC6089]/[RFC7222] for ietf-pmip, or new profiles defined by 798 extensions of this specification. 800 UL-DPN-specific-parameters: Specifies optional node specific 801 parameters of uplink in need, such as if-index, tunnel-if-number 802 that must be unique in the DPN. 804 UL-Vendor-specific-parameters: Specifies a vendor specific parameter 805 space for uplink. 807 (Contexts) 808 | 809 +---DL-Tunnel-local-address 810 | 811 +---DL-Tunnel-remote-address 812 | 813 +---DL-MTU-size 814 | 815 +---DL-Mobility-specific-tunnel-parameters 816 | 817 +---DL-Nexthop 818 | 819 +---DL-QoS-profile-specific-parameters 820 | 821 +---DL-DPN-specific-parameters 822 | 823 +---DL-Vendor-specific-parameters 825 Figure 14: Downlink Context Model of Single DPN Structure 827 DL-Tunnel-local-address: Specifies downlink endpoint address of the 828 DPN. 830 DL-Tunnel-remote-address: Specifies downlink endpoint address of the 831 remote DPN. 833 DL-MTU-size: Specifies downlink MTU size of tunnel. 835 DL-Mobility-specific-tunnel-parameters: Specifies profile specific 836 downlink tunnel parameters to the DPN which the agent exists. 837 The profiles includes GTP/TEID for 3gpp profile, GRE/Key for 838 ietf-pmip profile, or new profiles defined by extensions of this 839 specification. 841 DL-Nexthop: Indicates nexthop information of downlink in external 842 network such as IP address, MAC address, SPI of service function 843 chain, SID of segment routing, etc. 845 DL-QoS-profile-specific-parameters: Specifies profile specific QoS 846 parameter of downlink, such as QCI/TFT for 3gpp profile, 847 [RFC6089]/[RFC7222] for ietf-pmip, or new profiles defined by 848 extensions of this specification. 850 DL-DPN-specific-parameters: Specifies optional node specific 851 parameters of downlink in need such as if-index, tunnel-if-number 852 that must be unique in the DPN. 854 DL-Vendor-specific-parameters: Specifies a vendor specific parameter 855 space for downlink. 857 5.3.2.2. Multiple DPN Agent Case 859 Another case is when a FPC Agent connects to multiple DPNs. This 860 Agent MUST maintain a set of Context data for each DPN. The Context 861 contains a DPNs list where each entry of the list consists of the 862 parameters in Figure 15. A Context data for one DPN has two entries 863 for each direction of uplink and downlink or, where applicable, a 864 direction of 'both'. 866 (Contexts) 867 | 868 +---DPNs 869 | 870 +---DPN-id 871 | 872 +---Direction 873 | 874 +---Tunnel-local-address 875 | 876 +---Tunnel-remote-address 877 | 878 +---MTU-size 879 | 880 +---Mobility-specific-tunnel-parameters 881 | 882 +---Nexthop 883 | 884 +---QoS-profile-specific-parameters 885 | 886 +---DPN-specific-parameters 887 | 888 +---Vendor-specific-parameters 890 Figure 15: Multiple-DPN Supported Context Model Structure 892 DPN-id: Indicates DPN of which the runtime context data installed. 894 Direction: Specifies which side of connection at the DPN indicated, 895 "uplink", "downlink" or "both". 897 Tunnel-local-address: Specifies endpoint address of the DPN at the 898 uplink or downlink. 900 Tunnel-remote-address: Specifies endpoint address of remote DPN at 901 the uplink or downlink. 903 MTU-size: Specifies the packet MTU size on uplink or downlink. 905 Mobility-specific-tunnel-parameters: Specifies profile specific 906 tunnel parameters for uplink or downlink of the DPN. The 907 profiles includes GTP/TEID for 3gpp profile, GRE/Key for ietf- 908 pmip profile, or new profiles defined by extensions of this 909 specification. 911 Nexthop: Indicates nexthop information for uplink or downlink in 912 external network of the DPN such as IP address, MAC address, SPI 913 of service function chain, SID of segment routing, etc. 915 QoS-profile-specific-parameters: Specifies profile specific QoS 916 parameter for uplink or downlink of the DPN, such as QCI/TFT for 917 3gpp profile, [RFC6089]/[RFC7222] for ietf-pmip, or new profiles 918 defined by extensions of this specification. 920 DPN-specific-parameters: Specifies optional node specific parameters 921 for uplink or downlink of the DPN in need, such like if-index, 922 tunnel-if-number that must be unique in the DPN. 924 Vendor-specific-parameters: Specifies a vendor specific parameter 925 space for the DPN. 927 Multi-DPN Agents will only use the DPNs list of a Context for 928 processing as described in this section. A single-DPN Agent MAY use 929 both the Single Agent DPN model Section 5.3.2.1 and the multi-DPN 930 Agent Context described here. However, Agent feature support MUST be 931 discoverable by the FPC Client in order to determine which option(s) 932 an Agent supports. 934 5.3.3. Monitors 936 Monitors provide a mechanism to produce reports when events occur. A 937 Monitor will have a target that specifies what is to be watched. 939 When a Monitor is specified, the configuration MUST be applicable to 940 the attribute/entity monitored, e.g. a Monitor using a Threshold 941 configuration cannot be applied to a context but it can be applied to 942 a numeric property. 944 (FPC-Mobility) 945 | 946 +---Monitors 947 | 948 +---Monitor-id 949 | 950 +---Target 951 | 952 +---Configuration 954 Figure 16: Common Monitor Model Structure 956 Monitor-id: Name of the Monitor. The ID format SHOULD refer to 957 Section 5.4. 959 Target: Target to be monitored. This may be an event, a Context, a 960 Port or attribute(s) of Contexts. When the type is an 961 attribute(s) of a Context, the target name is a concatenation of 962 the Context-Id and the relative path (separated by '/') to the 963 attribute(s)to be monitored. 965 Configuration: Determined by the Monitor subtype. Four report types 966 are defined: 968 * Periodic reporting specifies an interval by which a 969 notification is sent to the Client. 971 * Event reporting specifies a list of even types that, if they 972 occur and are related to the monitored attribute, will result 973 in sending a notification to the Client 975 * Scheduled reporting specifies the time (in seconds since Jan 976 1, 1970) when a notification for the monitor should be sent to 977 the Client. Once this Monitor's notification is completed the 978 Monitor is automatically de-registered. 980 * Threshold reporting specifies one or both of a low and high 981 threshold. When these values are crossed a corresponding 982 notification is sent to the Client. 984 5.4. Namespace and Format 986 The identifiers and names in FPC models which reside in the same 987 namespace must be unique. That uniqueness must be kept in agent or 988 data-plane tenant namespace on an Agent. The tenant namespace 989 uniqueness MUST be applied to all elements of the tenant model, i.e. 990 Topology, Policy and Mobility models. 992 When a Policy needs to be applied to Contexts in all tenants on an 993 Agent, the Agent SHOULD define that policy to be visible from all the 994 tenants. In this case, the Agent assign an unique identifier in the 995 agent namespace. 997 The format of identifiers can utilize any format with agreement 998 between data-plane agent and client operators. The formats include 999 but are not limited to Globally Unique IDentifiers (GUIDs), 1000 Universally Unique IDentifiers (UUIDs), Fully Qualified Domain Names 1001 (FQDNs), Fully Qualified Path Names ( FQPNs) and Uniform Resource 1002 Identifiers (URIs). 1004 The FPC model MUST NOT limit the types of format that dictate the 1005 choice of FPC protocol. It is noted that the choice of identifiers 1006 which are used in Mobility model should be suitable to handle runtime 1007 parameters in real-time. The Topology and Policy models are not 1008 restricted to meet that requirement as described in Section 4. 1010 5.5. Attribute Application 1012 Attributes in FPC Topology and Policy are pre-configured in a FPC 1013 Agent prior to Contexts and Ports. Those pre-configured attributes 1014 SHOULD NOT be instantiated on DPN(s) until the Contexts and Ports 1015 indicate them. 1017 This is intentional as it provides FPC Clients ability to reuse 1018 attributes that helps to minimize over the wire exchanges and reduce 1019 system errors by exchanging less information. 1021 When an Client creates Context, the Client would be able to indicate 1022 just DPN-group(s) instead of all endpoint addresses of the DPN(s) and 1023 MTU-size of the tunnels for example. This is because that the Agent 1024 can derive data for those details from pre-configured DPN-group 1025 information in the Topology. 1027 The Agent turns those derived data into runtime attributes of UL and 1028 DL objects which are in the DPNs list of the Context (multiple-DPNs 1029 Agent case) or direct under the Context (single-DPN Agent case). The 1030 Agent consequently instantiates forwarding policies on DPN(s) based 1031 on that attributes. 1033 When the attribute is a direct value of the Context, e.g. IMSI 1034 defined in the 3GPP extension, only missing values can be provided by 1035 the Parent Context. 1037 It is noted that the Agent SHOULD update the Context's attributes 1038 which are instantiated on DPN(s) when the applied attributes of 1039 Topology and Policy are changed. 1041 5.6. Policy and Runtime Data 1043 Contexts and Ports that are supporting runtime, realtime mobility 1044 sessions which are produced in the mobility control plane. These 1045 could be installed using any number of protocols, but in case of they 1046 need to be delivered in realtime that Restconf 1047 [I-D.ietf-netconf-restconf] and/or Netconf [RFC6241] will not 1048 fullfill, an appropriate FPC envelope protocol MUST be required. 1050 When data is delivered as part of the FPC envelop protocol it should 1051 be part of a Context. If it is a binding to a generic policy that 1052 could be used by multiple Contexts a Port is used. Given the support 1053 for pre-configuration of policies and references by identifiers, e.g 1054 a Rule ID, most policies do not require realtime delivery. 1056 In case of modifying an existing Context attribute, the Agent MUST 1057 overwrite that attribute with the value of which the Client brings to 1058 the Agent. 1060 6. Protocol 1062 6.1. Protocol Messages and Semantics 1064 Five message types are supported: 1066 +---------------+----------------+----------------------------------+ 1067 | Message | Type | Description | 1068 +---------------+----------------+----------------------------------+ 1069 | CONF | HEADER | Configure processes a single | 1070 | | ADMIN_STATE | operation. | 1071 | | SESSION_STATE | | 1072 | | OP_TYPE BODY | | 1073 | | | | 1074 | CONF_BUNDLES | 1*[HEADER | Configure-bundles takes multiple | 1075 | | ADMIN_STATE | operations that are to be | 1076 | | SESSION_STATE | executed as a group with partial | 1077 | | TRANS_STRATEGY | failures allowed. They are | 1078 | | OP_TYPE BODY] | executed according to the OP_ID | 1079 | | | value in the OP_BODY in | 1080 | | | ascending order. If a | 1081 | | | CONFIGURE_BUNDLES fails, any | 1082 | | | entities provisioned in the | 1083 | | | CURRENT operation are removed, | 1084 | | | however, any successful | 1085 | | | operations completed prior to | 1086 | | | the current operation are | 1087 | | | preserved in order to reduce | 1088 | | | system load. | 1089 | | | | 1090 | REG_MONITOR | HEADER | Install a monitor at an Agent. | 1091 | | ADMIN_STATE *[ | The message includes information | 1092 | | MONITOR ] | about the attribute to monitor | 1093 | | | and the reporting method. Note | 1094 | | | that a MONITOR_CONFIG is | 1095 | | | required for this operation. | 1096 | | | | 1097 | DEREG_MONITOR | HEADER *[ | Remove monitors from an Agent. | 1098 | | MONITOR_ID ] [ | Monitor IDs are provided. | 1099 | | boolean ] | Boolean (optional) indicates if | 1100 | | | a successful DEREG triggers a | 1101 | | | NOTIFY with final data. | 1102 | | | | 1103 | PROBE | HEADER | Probe the status of a registered | 1104 | | MONITOR_ID | monitor. | 1105 +---------------+----------------+----------------------------------+ 1107 Table 1: Client to Agent Messages 1109 Each message contains a header with the Client Identifier, an 1110 execution delay timer and an operation identifier. The delay, in ms, 1111 is processed as the delay for operation execution from the time the 1112 operation is received by the Agent. 1114 The Client Identifier is used by the Agent to associate specific 1115 configuration characteristics, e.g. options used by the Client when 1116 communicating with the Agent, as well as the association of the 1117 Client and tenant in the information model. 1119 Messages that create or update Monitors and Entities, i.e. CONF, 1120 CONF_BUNDLES and REG_MONITOR, specify an Administrative State which 1121 specifies the Administrative state of the message subject(s) after 1122 the successful completion of the operation. If the status is set to 1123 virtual, any existing data on the DPN is removed. If the value is 1124 set to disabled, then an operation to disable the associated entity 1125 will occur on the DPN IF that entity exists on the DPN. If set to 1126 'active' the DPN will be provisioned. Values are 'enabled', 1127 'disabled' or 'virtual'. 1129 CONF_BUNDLES also has the Transaction Strategy (TRANS_STRATEGY) 1130 attribute. This value specifies the behavior of the Agent when an 1131 operation fails while prodessing a CONF_BUNDLES message. The value 1132 of 'default' uses the default strategy defined for the message. The 1133 value 'all_or_nothing' will roll back all successfully executed 1134 operations within the bundle as well as the operation that failed. 1136 It is important to note that an envelope protocol used to support 1137 this specification may not need to support CONF_BUNDLES messages or 1138 specific TRANS_STRATEGY types beyond 'default' when the protocol 1139 provides similar semantics. However, this MUST be clearly defined in 1140 the specification that defines how the envelope protocol supports 1141 this specificaiton. 1143 An Agent will respond with an error, ok, or an ok with indication 1144 that remaining data will be sent via a notify from the Agent to the 1145 Client Section 6.1.1.6.2 for CONF and CONF_BUNDLES requests. When 1146 returning an 'ok' of any kind, optional data may be present. 1148 Two Agent notifications are supported: 1150 +----------------------+----------+---------------------------------+ 1151 | Message | Type | Description | 1152 +----------------------+----------+---------------------------------+ 1153 | CONFIG_RESULT_NOTIFY | See | An asynchronous notification | 1154 | | Table 15 | from Agent to Client based upon | 1155 | | | a previous CONFIG or | 1156 | | | CONFIG_BUNDLES request. | 1157 | | | | 1158 | NOTIFY | See | An asynchronous notification | 1159 | | Table 16 | from Agent to Client based upon | 1160 | | | a registered MONITOR. | 1161 +----------------------+----------+---------------------------------+ 1163 Table 2: Agent to Client Messages (notifications) 1165 6.1.1. CONF and CONF_BUNDLES Messages 1167 CONF and CONF_BUNDLES specify the following information for each 1168 operation in addition to the header information: 1170 SESSION_STATE: sets the expected state of the entities embedded in 1171 the operation body after successful completion of the operation. 1172 Values can be 'complete', 'incomplete' or 'outdated'. Any 1173 operation that is 'incomplete' MAY NOT result in communication 1174 between the Agent and DPN. If the result is 'outdated' any new 1175 operations on these entities or new references to these entities 1176 have unpredictable results. 1178 OP_TYPE: specifies the type of operation. Valid values are 'create' 1179 (0), 'update' (1), 'query' (2) or 'delete' (3). 1181 COMMAND_SET: specifies the Command Set IF the feature is supported 1182 (see Section 6.1.1.4). 1184 BODY A list of Clones, if supported, Ports and Contexts when the 1185 OP_TYPE is 'create' or 'update'. Otherwise it is a list of 1186 Targets for 'query' or 'deletion'. See Section 7.2.2 for 1187 details. 1189 6.1.1.1. Agent Operation Processing 1191 The Agent will process entities provided in an operation in the 1192 following order: 1194 1. Clone Instructions, if the feature is supported 1196 2. Ports 1197 3. Contexts according to COMMAND_SET order processing 1199 The following Order Processing occurs when COMMAND Sets are present 1201 1. The Entity specific COMMAND_SET is processed according to its bit 1202 order unless otherwise specified by the technology specific 1203 COMMAND_SET definition. 1205 2. Operation specific COMMAND_SET is processed upon all applicable 1206 entities (even if they had Entity specific COMMAND_SET values 1207 present) according to its bit order unless otherwise specified by 1208 the technology specific COMMAND_SET definition. 1210 3. Operation OP_TYPE is processed for all entities. 1212 When deleting objects only their name needs to be provided. However, 1213 attributes MAY be provided if the Client wishes to avoid requiring 1214 the Agent cache lookups. 1216 When deleting an attribute, a leaf reference should be provided. 1217 This is a path to the attributes. 1219 6.1.1.2. Policy RPC Support 1221 This optional feature permits policy elements, (Policy-Group, Policy, 1222 Action and Descriptor), values to be in CONF or CONF_BUNDLES 1223 requests. It enables RPC based policy provisioning. 1225 6.1.1.3. Cloning 1227 Cloning is an optional feature that allows a Client to copy one 1228 structure to another in an operation. Cloning is always done first 1229 within the operation (see Operation Order of Execution for more 1230 detail). If a Client wants to build an object then Clone it, use 1231 CONFIG_BUNDLES with the first operation being the entities to be 1232 copied and a second operation with the Cloning instructions. A CLONE 1233 operation takes two arguments, the first is the name of the target to 1234 clone and the second is the name of the newly created entity. 1235 Individual attributes are not clonable; only Ports and Contexts can 1236 be cloned. 1238 6.1.1.4. Command Bitsets 1240 The COMMAND_SET is a technology specific bitset that allows for a 1241 single entity to be sent in an operation with requested sub- 1242 transactions to be completed. For example, a Context could have the 1243 Home Network Prefix absent but it is unclear if the Client would like 1244 the address to be assigned by the Agent or if this is an error. 1246 Rather than creating a specific command for assigning the IP a bit 1247 position in a COMMAND_SET is reserved for Agent based IP assignment. 1248 Alternatively, an entity could be sent in an update operation that 1249 would be considered incomplete, e.g. missing some required data in 1250 for the entity, but has sufficient data to complete the instructions 1251 provided in the COMMAND_SET. 1253 6.1.1.5. Reference Scope 1255 The Reference Scope is an optional feature that provides the scope of 1256 references used in a configuration command, i.e. CONFIG or 1257 CONFIG_BUNDLES. These scopes are defined as 1259 o none - all entities have no references to other entities. This 1260 implies only Contexts are present Ports MUST have references to 1261 Policy-Groups. 1263 o op - All references are contained in the operation body, i.e. only 1264 intra-operaion references exist. 1266 o bundle - All references in exist in bundle (inter-operation/intra- 1267 bundle). NOTE - If this value comes in CONFIG call it is 1268 equivalent to 'op'. 1270 o storage - One or more references exist outside of the operation 1271 and bundle. A lookup to a cache / storage is required. 1273 o unknown - the location of the references are unknown. This is 1274 treated as a 'storage' type. 1276 If supported by the Agent, when cloning instructions are present, the 1277 scope MUST NOT be 'none'. When Ports are present the scope MUST be 1278 'storage' or 'unknown'. 1280 An agent that only accepts 'op' or 'bundle' reference scope messages 1281 is referred to as 'stateless' as it has no direct memory of 1282 references outside messages themselves. This permits low memory 1283 footprint Agents. Even when an Agent supports all message types an 1284 'op' or 'bundle' scoped message can be processed quickly by the Agent 1285 as it does not require storage access. 1287 6.1.1.6. Operation Response 1289 6.1.1.6.1. Immediate Response 1291 Results will be supplied per operation input. Each result contains 1292 the RESULT_STATUS and OP_ID that it corresponds to. RESULT_STATUS 1293 values are: 1295 OK - SUCCESS 1297 ERR - An Error has occurred 1299 OK_NOTIFY_FOLLOWS - The Operation has been accepted by the Agent 1300 but further processing is required. A CONFIG_RESULT_NOTIFY will 1301 be sent once the processing has succeeded or failed. 1303 Any result MAY contain nothing or a entities created or partially 1304 fulfilled as part of the operation as specified in Table 14. For 1305 Clients that need attributes back quickly for call processing, the 1306 AGENT MUST respond back with an OK_NOTIFY_FOLLOWS and minimally the 1307 attributes assigned by the Agent in the response. These situations 1308 MUST be determined through the use of Command Sets (see 1309 Section 6.1.1.4). 1311 If an error occurs the following information is returned. 1313 ERROR_TYPE_ID (Unsigned 32) - The identifier of a specific error 1314 type 1316 ERROR_INFORMATION - An OPTIONAL string of no more than 1024 1317 characters. 1319 6.1.1.6.2. Asynchronous Notification 1321 A CONFIG_RESULT_NOTIFY occurs after the Agent has completed 1322 processing related to a CONFIG or CONFIG_BUNDLES request. It is an 1323 asynchronous communication from the Agent to the Client. 1325 The values of the CONFIG_RESULT_NOTIFY are detailed in Table 15. 1327 6.1.2. Monitors 1329 When a monitor has a reporting configuration of SCHEDULED it is 1330 automatically de-registered after the NOTIFY occurs. An Agent or DPN 1331 may temporarily suspend monitoring if insufficient resources exist. 1332 In such a case the Agent MUST notify the Client. 1334 All monitored data can be requested by the Client at any time using 1335 the PROBE message. Thus, reporting configuration is optional and 1336 when not present only PROBE messages may be used for monitoring. If 1337 a SCHEDULED or PERIODIC configuration is provided during registration 1338 with the time related value (time or period respectively) of 0 a 1339 NOTIFY is immediately sent and the monitor is immediately de- 1340 registered. This method should, when a MONITOR has not been 1341 installed, result in an immediate NOTIFY sufficient for the Client's 1342 needs and lets the Agent realize the Client has no further need for 1343 the monitor to be registered. An Agent may reject a registration if 1344 it or the DPN has insufficient resources. 1346 PROBE messages are also used by a Client to retrieve information 1347 about a previously installed monitor. The PROBE message SHOULD 1348 identify one or more monitors by means of including the associated 1349 monitor identifier. An Agent receiving a PROBE message sends the 1350 requested information in a single or multiple NOTIFY messages. 1352 6.1.2.1. Operation Response 1354 6.1.2.1.1. Immediate Response 1356 Results will be supplied per operation input. Each result contains 1357 the RESULT_STATUS and OP_ID that it corresponds to. RESULT_STATUS 1358 values are: 1360 OK - SUCCESS 1362 ERR - An Error has occurred 1364 Any OK result will contain no more information. 1366 If an error occurs the following information is returned. 1368 ERROR_TYPE_ID (Unsigned 32) - The identifier of a specific error 1369 type 1371 ERROR_INFORMATION - An OPTIONAL string of no more than 1024 1372 characters. 1374 6.1.2.1.2. Asynchronous Notification 1376 A NOTIFY is sent as part of de-registraiton, a trigger based upon a 1377 Monitor Configuration or a PROBE. A NOTIFY is comprised of unique 1378 Notification Identifier from the Agent, the Monitor ID the 1379 notification applies to, the Trigger for the notification, a 1380 timestamp of when the notification's associated event occurs and data 1381 that is specific to the monitored value's type. 1383 6.2. Protocol Operation 1385 6.2.1. Simple RPC Operation 1387 An FPC Client and Agent MUST identify themselves using the CLI_ID and 1388 AGT_ID respectively to ensure that for all transactions a recipient 1389 of an FPC message can unambiguously identify the sender of the FPC 1390 message. A Client MAY direct the Agent to enforce a rule in a 1391 particular DPN by including a DPN_ID value in a Context. Otherwise 1392 the Agent selects a suitable DPN to enforce a Context and notifies 1393 the Client about the selected DPN using the DPN_ID. 1395 All messages sent from a Client to an Agent MUST be acknowledged by 1396 the Agent. The response must include all entities as well as status 1397 information, which indicates the result of processing the message, 1398 using the RESPONSE_BODY property. In case the processing of the 1399 message results in a failure, the Agent sets the ERROR_TYPE_ID and 1400 ERROR_INFORMATION accordingly and MAY clear the Context or Port, 1401 which caused the failure, in the response. 1403 If based upon Agent configuration or the processing of the request 1404 possibly taking a significant amount of time the Agent MAY respond 1405 with an OK_NOTIFY_FOLLOWS with an optional RESPONSE_BODY containing 1406 the partially completed entities. When an OK_NOTIFY_FOLLOWS is sent, 1407 the Agent will, upon completion or failure of the operation, respond 1408 with an asynchronous CONFIG_RESULT_NOTIFY to the Client. 1410 A Client MAY add a property to a Context without providing all 1411 required details of the attribute's value. In such case the Agent 1412 SHOULD determine the missing details and provide the completed 1413 property description back to the Client. If the processing will take 1414 too long or based upon Agent configuration, the Agent MAY respond 1415 with an OK_NOTIFY_FOLLOWS with a RESPONSE_BODY containing the 1416 partially completed entities. 1418 In case the Agent cannot determine the missing value of an 1419 attribute's value per the Client's request, it leaves the attribute's 1420 value cleared in the RESPONSE_BODY and sets the RESULT to Error, 1421 ERROR_TYPE_ID and ERROR_INFORMATION. As example, the Control-Plane 1422 needs to setup a tunnel configuration in the Data-Plane but has to 1423 rely on the Agent to determine the tunnel endpoint which is 1424 associated with the DPN that supports the Context. The Client adds 1425 the tunnel property attribute to the FPC message and clears the value 1426 of the attribute (e.g. IP address of the local tunnel endpoint). 1427 The Agent determines the tunnel endpoint and includes the completed 1428 tunnel property in its response to the Client. 1430 Figure 17 illustrates an exemplary session life-cycle based on Proxy 1431 Mobile IPv6 registration via MAG Control-Plane function 1 (MAG-C1) 1432 and handover to MAG Control-Plane function 2 (MAG-C2). Edge DPN1 1433 represents the Proxy CoA after attachment, whereas Edge DPN2 serves 1434 as Proxy CoA after handover. As exemplary architecture, the FPC 1435 Agent and the network control function are assumed to be co-located 1436 with the Anchor-DPN, e.g. a Router. 1438 +-------Router--------+ 1439 +-----------+ |+-------+ +---------+| 1440 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1441 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1442 +------+ +------+ +-----+-------+ +-------+ +---------+ 1443 [MN attach] | | | | 1444 |-------------PBU----->| | | 1445 | | |---(1)--CONFIG(CREATE)--->| | 1446 | | | [ CONTEXT_ID, |--tun1 up->| 1447 | | | DOWNLINK(QOS/TUN), | | 1448 | | | UPLINK(QOS/TUN), |--tc qos-->| 1449 | | | IP_PREFIX(HNP) ] | | 1450 | | |<---(2)- OK --------------|-route add>| 1451 | | | | | 1452 |<------------PBA------| | | 1453 | | | | | 1454 | +----+ | | | | 1455 | |Edge| | | | | 1456 | |DPN1| | | | | 1457 | +----+ | | | | 1458 | | | 1459 | |-=======================================================-| 1460 | | | | 1461 | [MN handover] | | | 1462 | |---PBU ---->| | | 1463 | | |--(3)- CONFIG(MODIFY)---->| | 1464 | |<--PBA------| [ CONTEXT_ID |-tun1 mod->| 1465 | | | DOWNLINK(TUN), | | 1466 | | +----+ | UPLINK(TUN) ] | | 1467 | | |Edge| |<---(4)- OK --------------| | 1468 | | |DPN2| | | | 1469 | | +----+ | | | 1470 | | | | | | 1471 | | |-============================================-| 1472 | | | | | 1474 Figure 17: Exemplary Message Sequence (focus on FPC reference point) 1476 After reception of the Proxy Binding Update (PBU) at the LMA Control- 1477 Plane function (LMA_C), the LMA-C selects a suitable DPN, which 1478 serves as Data-Plane anchor to the mobile node's (MN) traffic. The 1479 LMA-C adds a new logical Context to the DPN to treat the MN's traffic 1480 (1) and includes a Context Identifier (CONTEXT_ID) to the CONFIGURE 1481 command. The LMA-C identifies the selected Anchor DPN by including 1482 the associated DPN identifier. 1484 The LMA-C adds properties during the creation of the new Context. 1485 One property is added to specify the forwarding tunnel type and 1486 endpoints (Anchor DPN, Edge DPN1) in each direction (as required). 1487 Another property is added to specify the QoS differentiation, which 1488 the MN's traffic should experience. At reception of the Context, the 1489 FPC Agent utilizes local configuration commands to create the tunnel 1490 (tun1) as well as the traffic control (tc) to enable QoS 1491 differentiation. After configuration has been completed, the Agent 1492 applies a new route to forward all traffic destined to the MN's HNP 1493 specified as a property in the Context to the configured tunnel 1494 interface (tun1). 1496 During handover, the LMA-C receives an updating PBU from the handover 1497 target MAG-C2. The PBU refers to a new Data-Plane node (Edge DPN2) 1498 to represent the new tunnel endpoints in the downlink and uplink, as 1499 required. The LMA-C sends a CONFIGURE message (3) to the Agent to 1500 modify the existing tunnel property of the existing Context and to 1501 update the tunnel endpoint from Edge DPN1 to Edge DPN2. Upon 1502 reception of the CONFIGURE message, the Agent applies updated tunnel 1503 property to the local configuration and responds to the Client (4). 1505 +-------Router--------+ 1506 +-----------+ |+-------+ +---------+| 1507 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1508 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1509 +------+ +------+ +-----+-------+ +-------+ +---------+ 1510 [MN attach] | | | | 1511 |-------------PBU----->| | | 1512 | | |---(1)--CONFIG(MODIFY)--->| | 1513 |<------------PBA------| [ CONTEXT_ID, |--tun1 ->| 1514 | | | DOWNLINK(TUN delete), | down | 1515 | | | UPLINK(TUN delete) ] | | 1516 | | | | | 1517 | | |<-(2)- OK ----------------| | 1518 | | | | | 1519 | | [ MinDelayBeforeBCEDelete expires ] | | 1520 | | | | | 1521 | | |---(3)--CONFIG(DELETE)--->|-- tun1 -->| 1522 | | | | delete | 1523 | | |<-(4)- OK ----------------| | 1524 | | | |-- route ->| 1525 | | | | remove | 1526 | | | | | 1528 Figure 18: Exemplary Message Sequence (focus on FPC reference point) 1530 When a teardown of the session occurs, MAG-C1 will send a PBU with a 1531 lifetime value of zero. The LMA-C sends a CONFIGURE message (1) to 1532 the Agent to modify the existing tunnel property of the existing 1533 Context to delete the tunnel information.) Upon reception of the 1534 CONFIGURE message, the Agent removes the tunnel configuration and 1535 responds to the Client (2). Per [RFC5213], the PBA is sent back 1536 immediately after the PBA is received. 1538 If no valid PBA is received after the expiration of the 1539 MinDelayBeforeBCEDelete timer (see [RFC5213]), the LMA-C will send a 1540 CONFIGURE (3) message with a deletion request for the Context. Upon 1541 reception of the message, the Agent deletes the tunnel and route on 1542 the DPN and responds to the Client (4). 1544 When a multi-DPN Agent is used the DPN list permits several DPNs to 1545 be provisioned in a single message. 1547 +-----------+ +-------+ +---------+ 1548 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1549 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN1 | 1550 +------+ +------+ +-----+-------+ +-------+ +---------+ 1551 [MN attach] | | | | 1552 |-------------PBU----->| | | 1553 | | |---(1)--CONFIG(CREATE)--->| | 1554 | | | [ CONTEXT_ID, DPNS [ |--tun1 up->| 1555 | | |[DPN1,DOWNLINK(QOS/TUN)], | | 1556 | | | [DPN1,UPLINK(QOS/TUN)], |--tc qos-->| 1557 | | |[DPN2,DOWNLINK(QOS/TUN)], | | 1558 | | | [DPN2,UPLINK(QOS/TUN)], | | 1559 | | | IP_PREFIX(HNP) ] | | 1560 | | |<-(2)- OK_NOTIFY_FOLLOWS -|-route add>| 1561 | | | | | 1562 |<------------PBA------| | | 1563 | | | | | 1564 | +----+ | | | 1565 | |Edge| | | | 1566 | |DPN2| | | | 1567 | +----+ | | | 1568 | |<---------------------- tun1 up -------------| | 1569 | |<---------------------- tc qos --------------| | 1570 | |<---------------------- route add -----------| | 1571 | | | | | 1572 | | |<(3) CONFIG_RESULT_NOTIFY | | 1573 | | | [ Response Data ] | | 1574 | | | | | 1576 Figure 19: Exemplary Message Sequence for Multi-DPN Agent 1578 Figure 19 shows how the first 2 messages in Figure 17 are supported 1579 when a multi-DPN Agent communicates with both Anchor DPN1 and Edge 1580 DPN2. In such a case, the FPC Client sends the donwnlink and uplink 1581 for both DPNs in the "DPNS" list of the same Context. Message 1 1582 shows the DPNS list with all entries. Each entry identifies the DPN 1583 and direction (one of 'uplink', 'downlink' or 'both'). Generally, 1584 the 'both' direction is not used for normal mobility session 1585 processing. It is commonly used for the instantaition of Policies on 1586 a specific DPN (see Section 6.2.4). 1588 The Agent responds with an OK_NOTIFY_FOLLOWS while it simultaneoulsy 1589 provisions both DPNs. Upon successful completion, the Agent responds 1590 to the Client with a CONFIG_RESULT_NOTIFY indicating the operation 1591 status. 1593 6.2.2. Policy And Mobility on the Agent 1595 A Client may build Policy and Topology using any mechanism on the 1596 Agent. Such entities are not always required to be constructed in 1597 realtime and, therefore, there are no specific messages defined for 1598 them in this specification. 1600 The Client may add, modify or delete many Ports and Contexts in a 1601 single FPC message. This includes linking Contexts to Actions and 1602 Descriptors, i.e. a Rule. As example, a Rule which performs re- 1603 writing of an arriving packet's destination IP address from IP_A to 1604 IP_B matching an associated Descriptor, can be enforced in the Data- 1605 Plane via an Agent to implicitly consider matching arriving packet's 1606 source IP address against IP_B and re- write the source IP address to 1607 IP_A. 1609 Figure 20 illustrates the generic policy configuration model as used 1610 between a FPC Client and a FPC Agent. 1612 Descriptor_1 -+ +- Action_1 1613 | | 1614 Descriptor_2 -+----+- Action_2 1615 +------+ 1616 /Order#/-------------+ 1617 +------+ | 1618 | 1619 Descriptor_3 -+ +- Action_3 +- 1620 | | | ^ 1621 Descriptor_4 -+----+- Action_4 | | 1622 +------+ | 1623 /Order#/-------------+ ^ 1624 +------+ | 1625 1627 +-------------------+ +---------------------+ 1628 | Bind 1..M traffic | | Bind 1..N traffic | 1629 | Descriptors to | --> | treatment actions | 1630 | a Policy, | | to a Policy, | 1631 | Policy-Group and | | Policy-Group and | 1632 | Port | | Port | 1633 +-------------------+ +---------------------+ 1635 | | 1636 +-------------- Data-Plane Rule ------------------+ 1638 Figure 20: Structure of Policies and Ports 1640 As depicted in Figure 20, the Port represents the anchor of Rules 1641 through the Policy-group, Policy, Rule hierarchy configured by any 1642 mechanism including RPC or N. A Client and Agent use the identifier 1643 of the associated Policy to directly access the Rule and perform 1644 modifications of traffic Descriptors or Action references. A Client 1645 and Agent use the identifiers to access the Descriptors or Actions to 1646 perform modifications. From the viewpoint of packet processing, 1647 arriving packets are matched against traffic Descriptors and 1648 processed according to the treatment Actions specified in the list of 1649 properties associated with the Port. 1651 A Client complements a rule's Descriptors with a Rule's Order 1652 (priority) value to allow unambiguous traffic matching on the Data- 1653 Plane. 1655 Figure 21 illustrates the generic context configuration model as used 1656 between a FPC Client and a FPC Agent. 1658 TrafficSelector_1 1659 | 1660 profile-parameters 1661 | 1662 mobility-profile-- dl ------+ 1663 ^ | 1664 | qos-profile 1665 | 1666 ^ per-mn-agg-max-dl_2 1667 | 1668 1670 +-------------------+ +---------------------+ 1671 | Bind 1..M traffic | | Bind 1..N traffic | 1672 | selectors to | --> | treatment / qos | 1673 | a Context | | actions to a | 1674 | | | Context | 1675 +-------------------+ +---------------------+ 1677 | | 1678 +-------------- Data-Plane Rule ------------------+ 1680 Figure 21: Structure of Contexts 1682 As depicted in Figure 21, the Context represents a mobility session 1683 hierarchy. A Client and Agent directly assigns values such as 1684 downlink traffic descriptors, QoS information, etc. A Client and 1685 Agent use the context identifiers to access the descriptors, qos 1686 information, etc. to perform modifications. From the viewpoint of 1687 packet processing, arriving packets are matched against traffic 1688 Descriptors and processed according to the qos or other mobility 1689 profile related Actions specified in the Context's properties. If 1690 present, the final action is to use a Context's tunnel information to 1691 encapsulate and forward the packet. 1693 A second Context also references context1 in the figure. Based upon 1694 the technology a property in a parent context MAY be inherited by its 1695 descendants. This permits concise over the wire representation. 1696 When a Client deletes a parent Context all children are also deleted. 1698 6.2.3. Optimization for Current and Subsequent Messages 1700 6.2.3.1. Bulk Data in a Single Operation 1702 A single operation MAY contain multiple entities. This permits 1703 bundling of requests into a single operation. In the example below 1704 two PMIP sessions are created via two PBU messages and sent to the 1705 Agent in a single CONFIGURE message (1). Upon recieveing the 1706 message, the Agent responds back with an OK_NOTIFY_FOLLOWS (2), 1707 completes work on the DPN to activate the associated sessions then 1708 responds to the Client with a CONFIG_RESULT_NOTIFY (3). 1710 +-------Router--------+ 1711 +-----------+ |+-------+ +---------+| 1712 +------+ +------+ +-----+ FPC | | FPC | | Anchor | 1713 |MAG-C1| |MAG-C2| |LMA-C| Client| | Agent | | DPN | 1714 +------+ +------+ +-----+-------+ +-------+ +---------+ 1715 [MN1 attach] | | | | 1716 |-------------PBU----->| | | 1717 | [MN2 attach] | | | 1718 | |---PBU----->| | | 1719 | | | | | 1720 | | |---(1)--CONFIG(CREATE)--->| | 1721 |<------------PBA------| [ CONTEXT_ID 1, |--tun1 up->| 1722 | | | DOWNLINK(QOS/TUN), | | 1723 | |<--PBA------| UPLINK(QOS/TUN), |--tc1 qos->| 1724 | | | IP_PREFIX(HNP) ] | | 1725 | | | [ CONTEXT_ID 2, |-route1 | 1726 | | | DOWNLINK(QOS/TUN), | add> | 1727 | | | UPLINK(QOS/TUN), | | 1728 | | | IP_PREFIX(HNP) ] |--tun2 up->| 1729 | | |<-(2)- OK_NOTIFY_FOLLOWS--| | 1730 | | | |--tc2 qos->| 1731 |<------------PBA------| | | 1732 | | | |-route2 | 1733 | | |<(3) CONFIG_RESULT_NOTIFY | add> | 1734 | | | [ Response Data ] | | 1735 | | | | | 1736 | | | | | 1738 Figure 22: Exemplary Bulk Entity with Asynchronous Notification 1739 Sequence (focus on FPC reference point) 1741 6.2.3.2. Configuration Bundles 1743 Bundles provide transaction boundaries around work in a single 1744 message. Operations in a bundle MUST be successfully executed in the 1745 order specified. This allows references created in one operation to 1746 be used in a subsequent operation in the bundle. 1748 The example bundle shows in Operation 1 (OP 1) the creation of a 1749 Context 1 which is then referenced in Operation 2 (OP 2) by 1750 CONTEXT_ID 2. If OP 1 fails then OP 2 will not be executed. The 1751 advantage of the CONFIGURE_BUNDLES is preservation of dependency 1752 orders in a single message as opposed to sending multiple CONFIGURE 1753 messages and awaiting results from the Agent. 1755 When a CONFIGURE_BUNDLES fails, any entities provisioned in the 1756 CURRENT operation are removed, however, any successful operations 1757 completed prior to the current operation are preserved in order to 1758 reduce system load. 1760 +-------Router--------+ 1761 +-----------+ |+-------+ +---------+| 1762 | FPC | | FPC | | Anchor | 1763 | Client | | Agent | | DPN | 1764 +-----------+ +-------+ +---------+ 1765 | | | 1766 |-CONFIG_BUNDLES(CREATE)-->| | 1767 | [ OP 1, [PORT X ] | | 1768 | [ CONTEXT_ID 1, | | 1769 | DOWNLINK(QOS/TUN), | | 1770 | UPLINK(QOS/TUN), | | 1771 | IP_PREFIX(HNP) ] | | 1772 | [ OP 2, | | 1773 | [ CONTEXT_ID 2, | | 1774 | PARENT_CONTEXT_ID 1, | | 1775 | UPLINK(QOS/TUN), | | 1776 | DOWNLINK(QOS/TUN) ] ] | | 1777 | | | 1779 Figure 23: Exemplary Bundle Message (focus on FPC reference point) 1781 6.2.3.3. Cloning Feature (Optional) 1783 Cloning provides a high speed copy/paste mechanism. The example 1784 below shows a single Context that will be copied two times. A 1785 subsequent update then overrides the value. The avoid the accidental 1786 activation of the Contexts on the DPN, the CONFIGURE (1) message with 1787 the cloning instruction has a SESSION_STATE with a value of 1788 'incomplete' and OP_TYPE of 'CREATE'. A second CONFIGURE (2) is sent 1789 with the SESSION_STATE of 'complete' and OP_TYPE of 'UPDATE'. The 1790 second message includes any differences between the original (copied) 1791 Context and its Clones. 1793 +-------Router--------+ 1794 +-----------+ |+-------+ +---------+| 1795 | FPC | | FPC | | Anchor | 1796 | Client | | Agent | | DPN | 1797 +-----------+ +-------+ +---------+ 1798 | | | 1799 |-CONFIG_BUNDLES(CREATE)-->| | 1800 | [ OP 1, | | 1801 | [ SESSION_STATE | | 1802 | (incomplete) ], | | 1803 | [CLONE SRC=2, TARGET=3], | | 1804 | [CLONE SRC=2, TARGET=4], | | 1805 | [ CONTEXT_ID 2, | | 1806 | PARENT_CONTEXT_ID 1, | | 1807 | UPLINK(QOS/TUN), | | 1808 | DOWNLINK(QOS/TUN), | | 1809 | IP_PREFIX(HNP) ] ] | | 1810 |<----- OK ----------------| | 1811 | | | 1812 |-CONFIG_BUNDLES(UPDATE)-->| | 1813 | [ CONTEXT_ID 3, | | 1814 | PARENT_CONTEXT_ID(empty),| | 1815 | UPLINK(QOS/TUN), | | 1816 | DOWNLINK(QOS/TUN) ], | | 1817 | [ CONTEXT_ID 4, | | 1818 | PARENT_CONTEXT_ID(empty),| | 1819 | UPLINK(QOS/TUN), | | 1820 | DOWNLINK(QOS/TUN) ] ] | | 1821 |<----- OK ----------------| | 1822 | | | 1824 Figure 24: Exemplary Bundle Message (focus on FPC reference point) 1826 Cloning has the added advantage of reducing the over the wire data 1827 size required to create multiple entities. This can improve 1828 performance if serialization / deserialization of multiple entities 1829 incurs some form of performance penalty. 1831 6.2.3.4. Command Bitsets (Optional) 1833 Command Sets permit the ability to provide a single, unified data 1834 structure, e.g. CONTEXT, and specify which activities are expected 1835 to be performed on the DPN. This has some advantages 1837 o Rather than sending N messages with a single operation performed 1838 on the DPN a single message can be used with a Command Set that 1839 specifies the N DPN operations to be executed. 1841 o Errors become more obvious. For example, if the HNP is NOT 1842 provided but the Client did not specify that the HNP should be 1843 assigned by the Agent this error is easily detected. Without the 1844 Command Set the default behavior of the Agent would be to assign 1845 the HNP and then respond back to the Client where the error would 1846 be detected and subsequent messaging would be required to remedy 1847 the error. Such situations can increase the time to error 1848 detection and overall system load without the Command Set present. 1850 o Unambiguous provisioning specification. The Agent is exactly in 1851 sync with the expectations of the Client as opposed to guessing 1852 what DPN work could be done based upon data present at the Agent. 1853 This greatly increases the speed by which the Agent can complete 1854 work. 1856 o Permits different technologies with different instructions to be 1857 sent in the same message. 1859 As Command Bitsets are technology specific, e.g. PMIP or 3GPP 1860 Mobility, the type of work varies on the DPN and the amount of data 1861 present in a Context or Port will vary. Using the technology 1862 specific instructions allows the Client to serve multiple 1863 technologies and MAY result in a more stateless Client as the 1864 instructions are transferred the Agent which will match the desired, 1865 technology specific instructions with the capabilities and over the 1866 wire protocol of the DPN more efficiently. 1868 6.2.3.5. Reference Scope(Optional) 1870 Although entities MAY refer to any other entity of an appropriate 1871 type, e.g. Contexts can refer to Ports or Contexts, the Reference 1872 Scope gives the Agent an idea of where those references reside. They 1873 may be in the same operation, an operation in the same CONFIG_BUNDLES 1874 message or in storage. There may also be no references. This 1875 permits the Agent to understand when it can stop searching for 1876 reference it cannot find. For example, if a CONFIG_BUNDLES message 1877 uses a Reference Scope of type 'op' then it merely needs to keep an 1878 operation level cache and consume no memory or resources searching 1879 across the many operations in the CONFIG_BUNDLES message or the data 1880 store. 1882 Agents can also be stateless by only supporting the 'none', 'op' and 1883 'bundle' reference scopes. This does not imply they lack storage but 1884 merely the search space they use when looking up references for an 1885 entity. The figure below shows the caching hierarchy provided by the 1886 Reference Scope 1887 Caches are temporarily created at each level and as the scope 1888 includes more caches the amount of entities that are searched 1889 increases. Figure 25 shows an example cache where each Cache where a 1890 containment hierarchy is provided for all caches. 1892 +---------------+ 1893 | Global Cache | 1894 | (storage) | 1895 +------+--------+ 1896 | 1897 +----------------------+ 1898 | | 1899 +------+--------+ +------+--------+ 1900 | Bundle Cache | | Bundle Cache | 1901 | (bundle) | .... | (bundle) | 1902 +------+--------+ +------+--------+ 1903 | 1904 +--------------------+--------------------+ 1905 | | | 1906 +--------+---------+ +--------+---------+ +--------+---------+ 1907 | Operation Cache | | Operation Cache | | Operation Cache | 1908 | (op) | | (op) | | (op) | 1909 +------------------+ +------------------+ +------------------+ 1911 (no cache) 1913 Figure 25: Exemplary Hierarchical Cache 1915 6.2.4. Pre-provisioning 1917 Although Contexts are used for Session based lifecycle elements, 1918 Ports may exist outside of a specific lifecycle and represent more 1919 general policies that may affect multiple Contexts (sessions). The 1920 use of pre-provisioning of Ports permits policy and administrative 1921 use cases to be executed. For example, creating tunnels to forward 1922 traffic to a trouble management platform and dropping packets to a 1923 defective web server can be accomplished via provisioning of Ports. 1925 The figure below shows a CONFIGURE (1) message used to install a 1926 Policy-group, policy-group1, using a Context set aside for pre- 1927 provisioning on a DPN. 1929 +-------Router--------+ 1930 +-----------+ |+-------+ +---------+| 1931 | FPC | | FPC | | Anchor | 1932 | Client | | Agent | | DPN | 1933 +-----------+ +-------+ +---------+ 1934 | | | 1935 |------CONFIG(CREATE)----->| | 1936 | [ PORT_ID port1, | | 1937 | [ policy-group1 ] ] | | 1938 | [ CONTEXT_ID preprov, | | 1939 | DPN_ID X, | | 1940 | [ port1 ] ] | | 1941 | | | 1943 Figure 26: Exemplary Config Message for policy pre-provisioning 1945 6.2.4.1. Basename Registry Feature (Optional) 1947 The Optional BaseName Registry support feature is provided to permit 1948 Clients and tenants with common scopes, referred to in this 1949 specification as BaseNames, to track the state of provisioned policy 1950 information on an Agent. The registry records the BaseName and 1951 Checkpoint set by a Client. If a new Client attaches to the Agent it 1952 can query the Registry to determine the amount of work that must be 1953 executed to configure the Agent to a BaseName / checkpoint revision. 1954 A State value is also provided in the registry to help Clients 1955 coordinate work on common BaseNames. 1957 7. Protocol Message Details 1959 7.1. Data Structures And Type Assignment 1961 7.1.1. Policy Structures 1962 +--------------+-----------------+----------------------------+ 1963 | Structure | Field | Type | 1964 +--------------+-----------------+----------------------------+ 1965 | ACTION | ACTION_ID | FPC-Identity (Section 5.4) | 1966 | | | | 1967 | ACTION | TYPE | [32, unsigned integer] | 1968 | | | | 1969 | ACTION | VALUE | Type specific | 1970 | | | | 1971 | DESCRIPTOR | DESCRIPTOR_ID | FPC-Identity (Section 5.4) | 1972 | | | | 1973 | DESCRIPTOR | TYPE | [32, unsigned integer] | 1974 | | | | 1975 | DESCRIPTOR | VALUE | Type specific | 1976 | | | | 1977 | POLICY | POLICY_ID | FPC-Identity (Section 5.4) | 1978 | | | | 1979 | POLICY | RULES | *[ RULE ] (See Table 4) | 1980 | | | | 1981 | POLICY-GROUP | POLICY_GROUP_ID | FPC-Identity (Section 5.4) | 1982 | | | | 1983 | POLICY-GROUP | POLICIES | *[ POLICY_ID ] | 1984 +--------------+-----------------+----------------------------+ 1986 Table 3: Action Fields 1988 Policies contain a list of Rules by their order value. Each Rule 1989 contains Descriptors with optional directionality and Actions with 1990 order values that specifies action execution ordering if the Rule has 1991 multiple actions. 1993 Rules consist of the following fields. 1995 +------------------+---------------+--------------------------------+ 1996 | Field | Type | Sub-Fields | 1997 +------------------+---------------+--------------------------------+ 1998 | ORDER | [16, INTEGER] | | 1999 | | | | 2000 | RULE_DESCRIPTORS | *[ | DIRECTION [2, unsigned bits] | 2001 | | DESCRIPTOR_ID | is an ENUMERATION (uplink, | 2002 | | DIRECTION ] | downlink or both). | 2003 | | | | 2004 | RULE_ACTIONS | *[ ACTION_ID | ORDER [8, unsigned integer] | 2005 | | ORDER ] | specifies action execution | 2006 | | | order. | 2007 +------------------+---------------+--------------------------------+ 2009 Table 4: Rule Fields 2011 7.1.2. Mobilty Structures 2013 +----------+----------------------------+ 2014 | Field | Type | 2015 +----------+----------------------------+ 2016 | PORT_ID | FPC-Identity (Section 5.4) | 2017 | | | 2018 | POLICIES | *[ POLICY_GROUP_ID ] | 2019 +----------+----------------------------+ 2021 Table 5: Port Fields 2023 +------------------------+------------------------------------+ 2024 | Field | Type | 2025 +------------------------+------------------------------------+ 2026 | CONTEXT_ID | FPC-Identity (Section 5.4) | 2027 | | | 2028 | PORTS | *[ PORT_ID ] | 2029 | | | 2030 | DPN_GROUP_ID | FPC-Identity (Section 5.4) | 2031 | | | 2032 | DELEGATING IP PREFIXES | *[ IP_PREFIX ] | 2033 | | | 2034 | PARENT_CONTEXT_ID | FPC-Identity (Section 5.4) | 2035 | | | 2036 | UPLINK [NOTE 1] | MOB_FIELDS | 2037 | | | 2038 | DOWNLINK [NOTE 1] | MOB_FIELDS | 2039 | | | 2040 | DPNS [NOTE 2] | *[ DPN_ID DPN_DIRECTION MOB_FIELDS | 2041 | | | 2042 | MOB_FIELDS | All parameters from Table 7 | 2043 +------------------------+------------------------------------+ 2045 Table 6: Context Fields 2047 NOTE 1 - These fields are present when the Agent supports only a 2048 single DPN. 2050 NOTE 2 - This fields is present when the Agent supports multiple 2051 DPNs. 2053 +---------------------------+---------------------+-----------------+ 2054 | Field | Type | Detail | 2055 +---------------------------+---------------------+-----------------+ 2056 | TUN_LOCAL_ADDRESS | IP Address | [NOTE 1] | 2057 | | | | 2058 | TUN_REMOTE_ADDRESS | IP Address | [NOTE 1] | 2059 | | | | 2060 | TUN_MTU | [32, unsigned | | 2061 | | integer] | | 2062 | | | | 2063 | TUN_PAYLOAD_TYPE | [2, bits] | Enumeration: pa | 2064 | | | yload_ipv4(0), | 2065 | | | payload_ipv6(1) | 2066 | | | or payload_dual | 2067 | | | (2). | 2068 | | | | 2069 | TUN_TYPE | [8, unsigned | Enumeration: | 2070 | | integer] | IP-in-IP(0), | 2071 | | | UDP(1), GRE(2) | 2072 | | | and GTP(3). | 2073 | | | | 2074 | TUN_IF | [16, unsigned | Input interface | 2075 | | integer] | index. | 2076 | | | | 2077 | MOBILITY_SPECIFIC_TUN_PAR | [ IETF_PMIP_MOB_PRO | [NOTE 1] | 2078 | AMS | FILE | | | 2079 | | 3GPP_MOB_PROFILE ] | | 2080 | | | | 2081 | NEXTHOP | [ IP Address | MAC | [NOTE 1] | 2082 | | Address | SPI | | | 2083 | | MPLS Label | SID | | | 2084 | | Interface Index ] | | 2085 | | (See Table 19). | | 2086 | | | | 2087 | QOS_PROFILE_PARAMS | [ 3GPP_QOS | | [NOTE 1] | 2088 | | PMIP_QOS ] | | 2089 | | | | 2090 | DPN_SPECIFIC_PARAMS | [ TUN_IF or Varies] | Specifies | 2091 | | | optional node | 2092 | | | specific | 2093 | | | parameters in | 2094 | | | need such as | 2095 | | | if-index, | 2096 | | | tunnel-if- | 2097 | | | number that | 2098 | | | must be unique | 2099 | | | in the DPN. | 2100 | | | | 2101 | VENDOR_SPECIFIC_PARAM | *[ Varies ] | [NOTE 1] | 2102 +---------------------------+---------------------+-----------------+ 2104 NOTE 1 - These parameters are extensible. The Types may be extended 2105 for Field value by future specifications or in the case of Vendor 2106 Specific Attributes by enterprises. 2108 Table 7: Context Downlink/Uplink Field Definitions 2110 7.1.3. Topology Structures 2112 +----------------+------------------------------------+ 2113 | Field | Type | 2114 +----------------+------------------------------------+ 2115 | DPN_ID | FPC-Identity. See Section 5.4 | 2116 | | | 2117 | DPN_NAME | [1024, OCTET STRING] | 2118 | | | 2119 | DPN_GROUPS | * [ FPC-Identity ] See Section 5.4 | 2120 | | | 2121 | NODE_REFERENCE | [1024, OCTET STRING] | 2122 +----------------+------------------------------------+ 2124 Table 8: DPN Fields 2126 +-------------+----------------------+ 2127 | Field | Type | 2128 +-------------+----------------------+ 2129 | DOMAIN_ID | [1024, OCTET STRING] | 2130 | | | 2131 | DOMAIN_NAME | [1024, OCTET STRING] | 2132 | | | 2133 | DOMAIN_TYPE | [1024, OCTET STRING] | 2134 +-------------+----------------------+ 2136 Table 9: Domain Fields 2138 +------------------+------------------------------------------------+ 2139 | Field | Type | 2140 +------------------+------------------------------------------------+ 2141 | DPN_GROUP_ID | FPC-Identity. See Section 5.4 | 2142 | | | 2143 | DATA_PLANE_ROLE | [4, ENUMERATION (data-plane, such as access- | 2144 | | dpn, L2/L3 anchor-dpn.)] | 2145 | | | 2146 | ACCESS_TYPE | [4, ENUMERATION ()ethernet(802.3/11), 3gpp | 2147 | | cellular(S1,RAB)] | 2148 | | | 2149 | MOBILITY_PROFILE | [4, ENUMERATION (ietf-pmip, 3gpp, or new | 2150 | | profile)] | 2151 | | | 2152 | PEER_DPN_GROUPS | * [ DPN_GROUP_ID MOBILITY_PROFILE | 2153 | | REMOTE_ENDPOINT_ADDRESS LOCAL_ENDPOINT_ADDRESS | 2154 | | TUN_MTU DATA_PLANE_ROLE ] | 2155 +------------------+------------------------------------------------+ 2157 Table 10: DPN Groups Fields 2159 7.1.4. Monitors 2160 +------------------+----------------------+-------------------------+ 2161 | Field | Type | Description | 2162 +------------------+----------------------+-------------------------+ 2163 | MONITOR | MONITOR_ID TARGET | | 2164 | | [REPORT_CONFIG] | | 2165 | | | | 2166 | MONITOR_ID | FPC-Identity. See | | 2167 | | Section 5.4 | | 2168 | | | | 2169 | EVENT_TYPE_ID | [8, Event Type ID] | Event Type (unsigned | 2170 | | | integer). | 2171 | | | | 2172 | TARGET | OCTET STRING (See | | 2173 | | Section 5.3.3) | | 2174 | | | | 2175 | REPORT_CONFIG | [8, REPORT-TYPE] | | 2176 | | [TYPE_SPECIFIC_INFO] | | 2177 | | | | 2178 | PERIODIC_CONFIG | [32, period] | report interval (ms). | 2179 | | | | 2180 | THRESHOLD_CONFIG | [32, low] [32, hi] | thresholds (at least | 2181 | | | one value must be | 2182 | | | present) | 2183 | | | | 2184 | SCHEDULED_CONFIG | [32, time] | | 2185 | | | | 2186 | EVENTS_CONFIG | *[EVENT_TYPE_ID] | | 2187 +------------------+----------------------+-------------------------+ 2189 Table 11: Monitor Structures and Attributes 2191 TRIGGERS include but are not limited to the following values: 2193 o Events specified in the Event List of an EVENTS CONFIG 2195 o LOW_THRESHOLD_CROSSED 2197 o HIGH_THRESHOLD_CROSSED 2199 o PERIODIC_REPORT 2201 o SCHEDULED_REPORT 2203 o PROBED 2205 o DEREG_FINAL_VALUE 2207 7.2. Message Attributes 2209 7.2.1. Header 2211 Each operation contains a header with the following fields: 2213 +-------------+------------------------+----------------------------+ 2214 | Field | Type | Messages | 2215 +-------------+------------------------+----------------------------+ 2216 | CLIENT_ID | FPC-Identity (Section | All | 2217 | | 5.4) | | 2218 | | | | 2219 | DELAY | [32, unsigned integer] | All | 2220 | | | | 2221 | OP_ID | [64, unsigned integer] | All | 2222 | | | | 2223 | ADMIN_STATE | [8, admin state] | CONF, CONF_BUNDLES and | 2224 | | | REG_MONITOR | 2225 | | | | 2226 | OP_TYPE | [8, op type] | CONF and CONF_BUNDLES | 2227 +-------------+------------------------+----------------------------+ 2229 Table 12: Message Header Fields 2231 7.2.2. CONF and CONF_BUNDLES Attributes and Notifications 2232 +---------------+----------------------+----------------------------+ 2233 | Field | Type | Operation Types Create(C), | 2234 | | | Update(U), Query(Q) and | 2235 | | | Delete(D) | 2236 +---------------+----------------------+----------------------------+ 2237 | SESSION_STATE | [8, session state] | C,U | 2238 | | | | 2239 | COMMAND_SET | FPC Command Bitset. | C,U [NOTE 1] | 2240 | | See Section 6.1.1.4. | | 2241 | | | | 2242 | CLONES | *[ FPC-Identity FPC- | C,U [NOTE 1] | 2243 | | Identity ] (Section | | 2244 | | 5.4) | | 2245 | | | | 2246 | PORTS | *[ PORT ] | C,U | 2247 | | | | 2248 | CONTEXTS | *[ CONTEXT [ | C,U | 2249 | | COMMAND_SET [NOTE 1] | | 2250 | | ] ] | | 2251 | | | | 2252 | TARGETS | FPC-Identity | Q,D | 2253 | | (Section 5.4) | | 2254 | | *[DPN_ID] | | 2255 | | | | 2256 | POLICY_GROUPS | *[ POLICY-GROUP ] | C,U [NOTE 1] | 2257 | | | | 2258 | POLICIES | *[ POLICY ] | C,U [NOTE 1] | 2259 | | | | 2260 | DESCRIPTORS | *[ DESCRIPTOR ] | C,U [NOTE 1] | 2261 | | | | 2262 | ACTIONS | *[ ACTION ] | C,U [NOTE 1] | 2263 +---------------+----------------------+----------------------------+ 2265 NOTE 1 - Only present if the corresponding feature is supported by 2266 the Agent. 2268 Table 13: CONF and CONF_BUNDLES OP_BODY Fields 2270 +-------------------+--------------------+--------------------------+ 2271 | Field | Type | Operation Types | 2272 | | | Create(C), Update(U), | 2273 | | | Query(Q) and Delete(D) | 2274 +-------------------+--------------------+--------------------------+ 2275 | PORTS | *[ PORT ] | C,U [NOTE 2] | 2276 | | | | 2277 | CONTEXTS | *[ CONTEXT [ | C,U [NOTE 2] | 2278 | | COMMAND_SET [NOTE | | 2279 | | 1] ] ] | | 2280 | | | | 2281 | TARGETS | *[ FPC-Identity | Q,D [NOTE 2] | 2282 | | (Section 5.4) | | 2283 | | *[DPN_ID] ] | | 2284 | | | | 2285 | ERROR_TYPE_ID | [32, unsigned | All [NOTE 3] | 2286 | | integer] | | 2287 | | | | 2288 | ERROR_INFORMATION | [1024, octet | All [NOTE 3] | 2289 | | string] | | 2290 +-------------------+--------------------+--------------------------+ 2292 Table 14: Immediate Response RESPONSE_BODY Fields 2294 Notes: 2296 NOTE 1 - Only present if the corresponding feature is supported by 2297 the Agent. 2299 NOTE 2 - Present in OK and OK_NOTIFY_FOLLOWS for both CONF and 2300 CONF_BUNDLES. MAY also be present in an CONF_BUNDLES Error 2301 response (ERR) if one of the operations completed successfully. 2303 NOTE 3 - Present only for Error (ERR) responses. 2305 +-----------------+--------------------+----------------------------+ 2306 | Field | Type | Description | 2307 +-----------------+--------------------+----------------------------+ 2308 | AGENT_ID | FPC-Identity | | 2309 | | (Section 5.4) | | 2310 | | | | 2311 | NOTIFICATION_ID | [32, unsigned | A Notification Identifier | 2312 | | integer] | used to determine | 2313 | | | notification order. | 2314 | | | | 2315 | TIMESTAMP | [32, unsigned | The time that the | 2316 | | integer] | notification occurred. | 2317 | | | | 2318 | DATA | *[ OP_ID | | 2319 | | RESPONSE_BODY | | 2320 | | (Table 14) ] | | 2321 +-----------------+--------------------+----------------------------+ 2323 Table 15: CONFIG_RESULT_NOTIFY Asynchronous Notification Fields 2325 7.2.3. Monitors 2327 +-----------------+---------------------+---------------------------+ 2328 | Field | Type | Description | 2329 +-----------------+---------------------+---------------------------+ 2330 | NOTIFICATION_ID | [32, unsiged | | 2331 | | integer] | | 2332 | | | | 2333 | TRIGGER | [32, unsigned | | 2334 | | integer] | | 2335 | | | | 2336 | NOTIFY | NOTIFICATION_ID | Timestamp notes when the | 2337 | | MONITOR_ID TRIGGER | event occurred. | 2338 | | [32, timestamp] | Notification Data is | 2339 | | [NOTIFICATION_DATA] | TRIGGER and Monitor type | 2340 | | | specific. | 2341 +-----------------+---------------------+---------------------------+ 2343 Table 16: Monitor Notifications 2345 8. Derived and Subtyped Attributes 2347 This section notes derived attributes. 2349 +------------------+-------+---------------+------------------------+ 2350 | Field | Type | Type | Description | 2351 | | Value | | | 2352 +------------------+-------+---------------+------------------------+ 2353 | TO_PREFIX | 0 | [IP Address] | Aggregated or per-host | 2354 | | | [ Prefix Len | destination IP | 2355 | | | ] | address/prefix | 2356 | | | | descriptor. | 2357 | | | | | 2358 | FROM_PREFIX | 1 | [IP Address] | Aggregated or per-host | 2359 | | | [ Prefix Len | source IP | 2360 | | | ] | address/prefix | 2361 | | | | descriptor. | 2362 | | | | | 2363 | TRAFFIC_SELECTOR | 2 | Format per | Traffic Selector. | 2364 | | | specification | | 2365 | | | [RFC6088]. | | 2366 +------------------+-------+---------------+------------------------+ 2368 Table 17: Descriptor Subtypes 2370 +--------------+-------+---------------------+----------------------+ 2371 | Field | Type | Type | Description | 2372 | | Value | | | 2373 +--------------+-------+---------------------+----------------------+ 2374 | DROP | 0 | Empty | Drop the associated | 2375 | | | | packets. | 2376 | | | | | 2377 | REWRITE | 1 | [in_src_ip] | Rewrite IP Address | 2378 | | | [out_src_ip] | (NAT) or IP Address | 2379 | | | [in_dst_ip] | / Port (NAPT). | 2380 | | | [out_dst_ip] | | 2381 | | | [in_src_port] | | 2382 | | | [out_src_port] | | 2383 | | | [in_dst_port] | | 2384 | | | [out_dst_port] | | 2385 | | | | | 2386 | COPY_FORWARD | 2 | FPC-Identity. See | Copy all packets and | 2387 | | | Section 5.4. | forward them to the | 2388 | | | | provided identity. | 2389 | | | | The value of the | 2390 | | | | identity MUST be a | 2391 | | | | port or context. | 2392 +--------------+-------+---------------------+----------------------+ 2394 Table 18: Action Subtypes 2396 +-----------------+-------+-------------------+---------------------+ 2397 | Field | Type | Type | Description | 2398 | | Value | | | 2399 +-----------------+-------+-------------------+---------------------+ 2400 | IP_ADDR | 0 | IP Address | An IP Address. | 2401 | | | | | 2402 | MAC_ADDR | 1 | MAC Address | A MAC Address. | 2403 | | | | | 2404 | SERVICE_PATH_ID | 2 | [24, unsigned | Service Path | 2405 | | | integer] | Identifier (SPI) | 2406 | | | | | 2407 | MPLS_LABEL | 3 | [20, unsigned | MPLS Label | 2408 | | | integer] | | 2409 | | | | | 2410 | NSH | 4 | [SERVICE_PATH_ID] | Included NSH which | 2411 | | | [8, unsigned | is a SPI and | 2412 | | | integer] | Service Index (8 | 2413 | | | | bits). | 2414 | | | | | 2415 | INTERFACE_INDEX | 5 | [16, unsigned | Interface Index (an | 2416 | | | integer] | unsigned integer). | 2417 +-----------------+-------+-------------------+---------------------+ 2419 Table 19: Next Hop Subtypes 2421 +----------+-------+------------------+-----------------------------+ 2422 | Field | Type | Type | Description | 2423 | | Value | | | 2424 +----------+-------+------------------+-----------------------------+ 2425 | QOS | 0 | [qos index type] | Refers to a single index | 2426 | | | [index] [DSCP] | and DSCP to write to the | 2427 | | | | packet. | 2428 | | | | | 2429 | GBR | 1 | [32, unsigned | Guaranteed bit rate. | 2430 | | | integer] | | 2431 | | | | | 2432 | MBR | 2 | [32, unsigned | Maximum bit rate. | 2433 | | | integer] | | 2434 | | | | | 2435 | PMIP_QOS | 3 | Varies by Type | A non-traffic selector PMIP | 2436 | | | | QoS Attribute per [RFC7222] | 2437 +----------+-------+------------------+-----------------------------+ 2439 Table 20: QoS Subtypes 2441 +----------+---------+----------------+-----------------------------+ 2442 | Field | Type | Type | Description | 2443 | | Value | | | 2444 +----------+---------+----------------+-----------------------------+ 2445 | IPIP_TUN | 0 | | IP in IP Configuration | 2446 | | | | | 2447 | UDP_TUN | 1 | [src_port] | UDP Tunnel - source and/or | 2448 | | | [dst_port] | destination port | 2449 | | | | | 2450 | GRE_TUN | 2 | [32, GRE Key] | GRE Tunnel. | 2451 +----------+---------+----------------+-----------------------------+ 2453 Table 21: Tunnel Subtypes 2455 The following COMMAND_SET values are supported for IETF_PMIP. 2457 o assign-ip - Assign the IP Address for the mobile session. 2459 o assign-dpn - Assign the Dataplane Node. 2461 o session - Assign values for the Session Level. 2463 o uplink - Command applies to uplink. 2465 o downlink - Command applies to downlink. 2467 8.1. 3GPP Specific Extenstions 2469 3GPP support is optional and detailed in this section. The following 2470 acronyms are used: 2472 APN-AMBR: Access Point Name Aggregate Maximum Bit Rate 2474 ARP: Allocation of Retention Priority 2476 EBI: EPS Bearer Identity 2478 GBR: Guaranteed Bit Rate 2480 GTP: GPRS (General Packet Radio Service) Tunneling Protocol 2482 IMSI: International Mobile Subscriber Identity 2484 MBR: Maximum Bit Rate 2486 QCI: QoS Class Identifier 2488 TEID: Tunnel Endpoint Identifier. 2490 TFT: Traffic Flow Template (TFT) 2492 UE-AMBR: User Equipment Aggregate Maximum Bit Rate 2494 NOTE: GTP Sequence Number (SEQ_NUMBER) is used in failover and 2495 handover. 2497 +-------------+-------+-------------+-------------------------------+ 2498 | Field | Type | Namespace / | Type | 2499 | | Value | Entity | | 2500 | | | Extended | | 2501 +-------------+-------+-------------+-------------------------------+ 2502 | GTPV1 | 3 | Tunnel | LOCAL_TEID REMOTE_TEID | 2503 | | | Subtypes | SEQ_NUMBER | 2504 | | | namespace. | | 2505 | | | | | 2506 | GTPV2 | 4 | Tunnel | LOCAL_TEID REMOTE_TEID | 2507 | | | Subtypes | SEQ_NUMBER | 2508 | | | namespace. | | 2509 | | | | | 2510 | LOCAL_TEID | N/A | N/A | [32, unisgned integer] | 2511 | | | | | 2512 | REMOTE_TEID | N/A | N/A | [32, unisgned integer] | 2513 | | | | | 2514 | SEQ_NUMBER | N/A | N/A | [32, unisgned integer] | 2515 | | | | | 2516 | TFT | 3 | Descriptors | Format per TS 24.008 Section | 2517 | | | Subtypes | 10.5.6.12. | 2518 | | | namespace. | | 2519 | | | | | 2520 | IMSI | N/A | Context | [64, unsigned integer] | 2521 | | | (new | | 2522 | | | attribute) | | 2523 | | | | | 2524 | EBI | N/A | Context | [4, unsigned integer] | 2525 | | | (new | | 2526 | | | attribute) | | 2527 | | | | | 2528 | 3GPP_QOS | 4 | QoS | [8, qci] [32, gbr] [32, mbr] | 2529 | | | Subtypes | [32, apn_ambr] [32, ue_ambr] | 2530 | | | namespace. | ARP | 2531 | | | | | 2532 | ARP | N/A | N/A | See Allocation-Retention- | 2533 | | | | Priority from [RFC7222] | 2534 +-------------+-------+-------------+-------------------------------+ 2536 Table 22: 3GPP Attributes and Structures 2538 The following COMMAND_SET values are supported for 3GPP. 2540 o assign-ip - Assign the IP Address for the mobile session. 2542 o assign-dpn - Assign the Dataplane Node. 2544 o assign-fteid-ip - Assign the Fully Qualified TEID (F-TEID) LOCAL 2545 IP address. 2547 o assign-fteid-teid - Assign the Fully Qualified TEID (F-TEID) LOCAL 2548 TEID. 2550 o session - Assign values for the Session Level. When this involves 2551 'assign-fteid-ip' and 'assign-fteid-teid' this implies the values 2552 are part of the default bearer. 2554 o uplink - Command applies to uplink. 2556 o downlink - Command applies to downlink. 2558 9. Implementation Status 2560 Two FPC Agent implementations have been made to date. The first was 2561 based upon Version 03 of the draft and followed Model 1. The second 2562 follows Version 04 of the document. Both implementations were 2563 OpenDaylight plug-ins developed in Java by Sprint. Version 03 was 2564 known as fpcagent and version 04's implementation is simply referred 2565 to as 'fpc'. 2567 fpcagent's intent was to provide a proof of concept for FPC Version 2568 03 Model 1 in January 2016 and research various errors, corrections 2569 and optimizations that the Agent could make when supporting multiple 2570 DPNs. 2572 As the code developed to support OpenFlow and a proprietary DPN from 2573 a 3rd party, several of the advantages of a multi-DPN Agent became 2574 obvious including the use of machine learning to reduce the number of 2575 Flows and Policy entities placed on the DPN. This work has driven 2576 new efforts in the DIME WG, namely Diameter Policy Groups 2577 [I-D.bertz-dime-policygroups]. 2579 A throughput performance of tens per second using various NetConf 2580 based solutions in OpenDaylight made fpcagent undesirable for call 2581 processing. The RPC implementation improved throughput by an order 2582 of magnitude but was not useful based upon FPC's Version 03 design 2583 using two information models. During this time the features of 2584 version 04 and its converged model became attractive and the fpcagent 2585 project was closed in August 2016. fpcagent will no longer be 2586 developed and will remain a proprietary implementation. 2588 The learnings of fpcagent has influenced the second project, fpc. 2589 Fpc is also an OpenDaylight project but is intended for open source 2590 release, if circumstances permit. It is also scoped to be a fully 2591 compliant FPC Agent that supports multiple DPNs including those that 2592 communicate via OpenFlow. The following features present in this 2593 draft and others developed by the FPC development team have already 2594 lead to an order of magnitude improvement. 2596 Migration of non-realtime provisioning of entities such as 2597 topology and policy allowed the implementation to focus only on 2598 the rpc. 2600 Using only 5 messages and 2 notifications has also reduced 2601 implementation time. 2603 Command Sets, an optional feature in this specification, have 2604 eliminated 80% of the time spent determining what needs to be 2605 done with a Context during a Create or Update operation. 2607 Op Reference is an optional feature modeled after video delivery. 2608 It has reduced unnecessary cache lookups. It also has the 2609 additional benefit of allowing an Agent to become cacheless and 2610 effectively act as a FPC protocol adapter remotely with multi-DPN 2611 support or colocated on the DPN in a single-DPN support model. 2613 Multi-tenant support allows for Cache searches to be partitioned 2614 for clustering and performance improvements. This has not been 2615 capitalized upon by the current implementation but is part of the 2616 development roadmap. 2618 Use of Contexts to pre-provision policy has also eliminated any 2619 processing of Ports for DPNs which permitted the code for 2620 CONFIGURE and CONFIGURE_BUNDLES to be implemented as a simple 2621 nested FOR loops (see below). 2623 Current performance results without code optimizations or tuning 2624 allow 2-5K FPC Contexts processed per second on a 2013 Mac laptop. 2625 This results in 2x the number of transactions on the southbound 2626 interface to a proprietary DPN API on the same machine. 2628 fpc currently supports the following: 2630 1 proprietary DPN API 2631 Policy and Topology as defined in this 2632 specification using OpenDaylight North Bound 2633 Interfaces such as NetConf and RestConf 2635 CONFIGURE and CONFIGURE_BUNDLES (all 2636 operations) 2638 DPN assignment, Tunnel allocations and IPv4 2639 address assignment by the Agent or Client. 2641 Immediate Response is always an 2642 OK_NOTIFY_FOLLOWS. 2644 assignment system (receives rpc call): 2645 perform basic operation integrity check 2646 if CONFIGURE then 2647 goto assignments 2648 if assignments was ok then 2649 send request to activation system 2650 respond back to client with assignment data 2651 else 2652 send back error 2653 end if 2654 else if CONFIGURE_BUNDLES then 2655 for each operation in bundles 2656 goto assignments 2657 if assignments was ok then 2658 hold onto data 2659 else 2660 return error with the assignments that occurred in 2661 prior operations (best effort) 2662 end if 2663 end for 2664 send bundles to activation systems 2665 end if 2667 assignments: 2668 assign DPN, IPv4 Address and/or tunnel info as required 2669 if an error occurs undo all assignments in this operation 2670 return result 2672 activation system: 2673 build cache according to op-ref and operation type 2674 for each operation 2675 for each Context 2676 for each DPN / direction in Context 2677 perform actions on DPN according to Command Set 2678 end for 2679 end for 2680 end for 2681 commit changes to in memory cache 2682 log transaction for tracking and notification (CONFIG_RESULT_NOTIFY) 2684 Figure 27: fpc pseudo code 2686 For further information please contact Lyle Bertz who is also a co- 2687 author of this document. 2689 NOTE: Tenant support requires binding a Client ID to a Tenant ID (it 2690 is a one to many relation) but that is outside of the scope of this 2691 specification. Otherwise, the specification is complete in terms of 2692 providing sufficient information to implement an Agent. 2694 10. Security Considerations 2696 Detailed protocol implementations for DMM Forwarding Policy 2697 Configuration must ensure integrity of the information exchanged 2698 between an FPC Client and an FPC Agent. Required Security 2699 Associations may be derived from co-located functions, which utilize 2700 the FPC Client and FPC Agent respectively. 2702 The YANG modules defined in this memo is designed to be accessed via 2703 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 2704 secure transport layer and the mandatory-to-implement secure 2705 transport is SSH [RFC6242]. 2707 The information model defined in the memo is designed to be access by 2708 protocols specified in extensions to this document or, if using the 2709 YANG modules, as described above. 2711 There are a number of data nodes defined which are 2712 writable/creatable/deletable. These data nodes may be considered 2713 sensitive or vulnerable in some network environments. Write 2714 operations (e.g., a NETCONF edit-config) to these data nodes without 2715 proper protection can have a negative effect on network operations. 2716 These are the subtrees and data nodes and their sensitivity/ 2717 vulnerability: 2719 Nodes under the Policy tree provide generic policy enforcement and 2720 traffic classification. The can be used to block or permit 2721 traffic. If this portion of the model was to be compromised it 2722 may be used to block, identify or permit traffic that was not 2723 intended by the Tenant or FPC CLient. 2725 Nodes under the Topology tree provide defintion of the Tenant's 2726 fowarding topology. Any compromise of this information will 2727 provide topology information that could be used for subsequent 2728 attack vectors. Removal of topology can limit services. 2730 Nodes under the Mobility Tree are runtime only and manipulated by 2731 remote procedure calls. The unwanted deletion or removal of such 2732 information would deny users service or provide services ot 2733 unauthorized parties. 2735 Some of the readable data nodes defined may be considered sensitive 2736 or vulnerable in some network environments. It is thus important to 2737 control read access (e.g., via get, get-config, or notification) to 2738 these data nodes. These are the subtrees and data nodes and their 2739 sensitivity/vulnerability: 2741 IP address assignments in the Context along with their associated 2742 tunnel configurations/identifiers (from the FPC base module) 2744 Internaional Mobile Subscriber Identity (IMSI) and bearer 2745 identifiers in the Context when using the optional 3GPP module 2747 Some of the RPC operations defined may be considered sensitive or 2748 vulnerable in some network environments. It is thus important to 2749 control access to these operations. These are the operations and 2750 their sensitivity/vulnerability: 2752 CONF and CONF_BUNDLES send Context information which can include 2753 information of a sensitive or vulnerable nature in some network 2754 environments as described above. 2756 Monitor related RPC operations do not specicially provide 2757 sensitive or vulnerable informaiton but care must be taken by 2758 users to avoid identifier values that expose sensitive or 2759 vulnerable information. 2761 Notications MUST be treated with same level of protection and 2762 scrutiny as the operations they correspond to. For example, a 2763 CONFIG_RESULT_NOTIFY notification provides the same information 2764 that is sent as part of the input and output of the CONF and 2765 CONF_BUNDLES RPC operations. 2767 General usage of FPC MUST consider the following: 2769 FPC Naming Section 5.4 permits arbirtrary string values but a 2770 users MUST avoid placing sensitive or vulnerable information in 2771 those values. 2773 Policies that are very narrow and permit the identificaiton of 2774 specific traffic, e.g. that of a single user, SHOULD be avoided. 2776 11. IANA Considerations 2778 This document registers six URIs in the "IETF XML Registry" 2779 [RFC3688]. Following the format in RFC 3688, the following 2780 registrations have been made. 2782 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc 2783 Registrant Contact: The DMM WG of the IETF. 2784 XML: N/A, the requested URI is an XML namespace. 2786 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-threegpp 2787 Registrant Contact: The DMM WG of the IETF. 2788 XML: N/A, the requested URI is an XML namespace. 2790 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos 2791 Registrant Contact: The DMM WG of the IETF. 2792 XML: N/A, the requested URI is an XML namespace. 2794 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-traffic-selector-types 2795 Registrant Contact: The DMM WG of the IETF. 2796 XML: N/A, the requested URI is an XML namespace. 2798 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-policyext 2799 Registrant Contact: The DMM WG of the IETF. 2800 XML: N/A, the requested URI is an XML namespace. 2802 URI: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-pmip 2803 Registrant Contact: The DMM WG of the IETF. 2804 XML: N/A, the requested URI is an XML namespace. 2806 This document registers the following YANG modules in the "YANG 2807 Module Names" registry [RFC6020]. 2809 name: ietf-dmm-fpc 2810 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc 2811 prefix: fpc 2812 reference: TBD1 2814 name: ietf-dmm-threegpp 2815 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-threegpp 2816 prefix: threegpp 2817 reference: TBD1 2819 name: ietf-dmm-pmip-qos 2820 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-pmip-qos 2821 prefix: qos-pmip 2822 reference: TBD1 2824 name: ietf-dmm-traffic-selector-types 2825 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-traffic-selector-types 2826 prefix: traffic-selectors 2827 reference: TBD1 2829 name: ietf-dmm-traffic-selector-types 2830 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-policyext 2831 prefix: fpcpolicyext 2832 reference: TBD1 2833 name: ietf-dmm-traffic-selector-types 2834 namespace: urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-pmip 2835 prefix: fpc-pmip 2836 reference: TBD1 2838 The document registers the following YANG submodules in the "YANG 2839 Module Names" registry [RFC6020]. 2841 name: ietf-dmm-fpc-base 2842 parent: ietf-dmm-fpc 2843 reference: TBD1 2845 12. Work Team Participants 2847 Participants in the FPSM work team discussion include Satoru 2848 Matsushima, Danny Moses, Sri Gundavelli, Marco Liebsch, Pierrick 2849 Seite, Alper Yegin, Carlos Bernardos, Charles Perkins and Fred 2850 Templin. 2852 13. References 2854 13.1. Normative References 2856 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 2857 Requirement Levels", BCP 14, RFC 2119, 2858 DOI 10.17487/RFC2119, March 1997, 2859 . 2861 [RFC6088] Tsirtsis, G., Giarreta, G., Soliman, H., and N. Montavont, 2862 "Traffic Selectors for Flow Bindings", RFC 6088, 2863 DOI 10.17487/RFC6088, January 2011, 2864 . 2866 [RFC6089] Tsirtsis, G., Soliman, H., Montavont, N., Giaretta, G., 2867 and K. Kuladinithi, "Flow Bindings in Mobile IPv6 and 2868 Network Mobility (NEMO) Basic Support", RFC 6089, 2869 DOI 10.17487/RFC6089, January 2011, 2870 . 2872 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 2873 RFC 6991, DOI 10.17487/RFC6991, July 2013, 2874 . 2876 13.2. Informative References 2878 [I-D.bertz-dime-policygroups] 2879 Bertz, L., "Diameter Policy Groups and Sets", draft-bertz- 2880 dime-policygroups-01 (work in progress), July 2016. 2882 [I-D.ietf-dmm-deployment-models] 2883 Gundavelli, S. and S. Jeon, "DMM Deployment Models and 2884 Architectural Considerations", draft-ietf-dmm-deployment- 2885 models-00 (work in progress), August 2016. 2887 [I-D.ietf-netconf-restconf] 2888 Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2889 Protocol", draft-ietf-netconf-restconf-18 (work in 2890 progress), October 2016. 2892 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 2893 DOI 10.17487/RFC3688, January 2004, 2894 . 2896 [RFC5213] Gundavelli, S., Ed., Leung, K., Devarapalli, V., 2897 Chowdhury, K., and B. Patil, "Proxy Mobile IPv6", 2898 RFC 5213, DOI 10.17487/RFC5213, August 2008, 2899 . 2901 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2902 and A. Bierman, Ed., "Network Configuration Protocol 2903 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2904 . 2906 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 2907 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 2908 . 2910 [RFC7222] Liebsch, M., Seite, P., Yokota, H., Korhonen, J., and S. 2911 Gundavelli, "Quality-of-Service Option for Proxy Mobile 2912 IPv6", RFC 7222, DOI 10.17487/RFC7222, May 2014, 2913 . 2915 [RFC7333] Chan, H., Ed., Liu, D., Seite, P., Yokota, H., and J. 2916 Korhonen, "Requirements for Distributed Mobility 2917 Management", RFC 7333, DOI 10.17487/RFC7333, August 2014, 2918 . 2920 Appendix A. YANG Data Model for the FPC protocol 2922 These modules define YANG definitions. Seven modules are defined: 2924 o ietf-dmm-fpc (fpc) - Defines the base model and messages for FPC 2926 o ietf-dmm-fpc-base An FPC submodule that defines the information 2927 model that is specified in this document 2929 o ietf-pmip-qos (pmip-qos) - Defines proxy mobile IPv6 QoS 2930 parameters per RFC 7222 2932 o ietf-traffic-selectors-types (traffic-selectors) - Defines Traffic 2933 Selectors per RFC 6088 2935 o ietf-dmm-threegpp - Defines the base structures for 3GPP based IP 2936 mobility and augments fpcagent to support these parameters. 2938 o ietf-dmm-fpc-pmip - Augments fpcp-base to include PMIP Traffic 2939 Selectors as a Traffic Descriptor subtype and pmip-qos QoS 2940 parameters, where applicable, as properties. 2942 o ietf-dmm-fpc-policyext - defines basic policy extensions, e.g. 2943 Actions and Descriptors, to fpcbase and as defined in this 2944 document. 2946 A.1. FPC Agent YANG Model 2948 This module defines the information model and protocol elements 2949 specified in this document. 2951 This module references [RFC6991] and the fpc-base module defined in 2952 this document. 2954 file "ietf-dmm-fpc@2016-08-03.yang" 2955 module ietf-dmm-fpc { 2956 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc"; 2957 prefix fpc; 2959 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 2961 include ietf-dmm-fpc-base; 2963 organization "IETF Distributed Mobility Management (DMM) 2964 Working Group"; 2966 contact 2967 "WG Web: 2968 WG List: 2970 WG Chair: Dapeng Liu 2971 2973 WG Chair: Jouni Korhonen 2974 2976 Editor: Satoru Matsushima 2977 2979 Editor: Lyle Bertz 2980 "; 2982 description 2983 "This module contains YANG definition for 2984 Forwarding Policy Configuration Protocol (FPCP). 2986 Copyright (c) 2016 IETF Trust and the persons identified as the 2987 document authors. All rights reserved. 2989 This document is subject to BCP 78 and the IETF Trust's Legal 2990 Provisions Relating to IETF Documents 2991 (http://trustee.ietf.org/license-info) in effect on the date of 2992 publication of this document. Please review these documents 2993 carefully, as they describe your rights and restrictions with 2994 respect to this document. Code Components extracted from this 2995 document must include Simplified BSD License text as described 2996 in Section 4.e of the Trust Legal Provisions and are provided 2997 without warranty as described in the Simplified BSD License."; 2999 revision 2016-08-03 { 3000 description "Initial Revision."; 3001 reference "draft-ietf-dmm-fpc-cpdp-05"; 3002 } 3003 feature fpc-cloning { 3004 description "An ability to support cloning in the RPC."; 3005 } 3006 feature fpc-basename-registry { 3007 description "Ability to track Base Names already provisioned on the Agent"; 3008 } 3009 feature fpc-bundles { 3010 description "Ability for Client to send multiple bundles of actions to 3011 an Agent"; 3012 } 3013 feature fpc-client-binding { 3014 description "Allows a FPC Client to bind a DPN to an Topology Object"; 3015 } 3016 feature fpc-auto-binding { 3017 description "Allows a FPC Agent to advertise Topology Objects that could be DPNs"; 3018 } 3019 feature instruction-bitset { 3020 description "Allows the expression of instructions (bit sets) over FPC."; 3021 } 3022 feature operation-ref-scope { 3023 description "Provides the scope of refeneces in an operation. Used to optmize 3024 the Agent processing."; 3026 } 3027 feature policy-rpc-provisioning { 3028 description "Enables the ability to send policy elements (Policy Groups, Policies, 3029 Descriptors and Actions) to be sent in CONF or CONF_BUNDLES operations."; 3030 } 3032 typedef agent-identifier { 3033 type fpc:fpc-identity; 3034 description "Agent Identifier"; 3035 } 3037 typedef client-identifier { 3038 type fpc:fpc-identity; 3039 description "Client Identifier"; 3040 } 3042 grouping basename-info { 3043 leaf basename { 3044 if-feature fpc:fpc-basename-registry; 3045 type fpc:fpc-identity; 3046 description "Rules Basename"; 3047 } 3048 leaf base-state { 3049 if-feature fpc:fpc-basename-registry; 3050 type string; 3051 description "Current State"; 3052 } 3053 leaf base-checkpoint { 3054 if-feature fpc:fpc-basename-registry; 3055 type string; 3056 description "Checkpoint"; 3057 } 3058 description "Basename Information"; 3059 } 3061 // Top Level Structures 3062 container tenants { 3063 list tenant { 3064 key "tenant-id"; 3065 leaf tenant-id { 3066 type fpc:fpc-identity; 3067 description "Tenant ID"; 3068 } 3070 container fpc-policy { 3071 list policy-groups { 3072 key "policy-group-id"; 3073 uses fpc:fpc-policy-group; 3074 description "Policy Groups"; 3075 } 3076 list policies { 3077 key "policy-id"; 3078 uses fpc:fpc-policy; 3079 description "Policies"; 3080 } 3081 list descriptors { 3082 key descriptor-id; 3083 uses fpc:fpc-descriptor; 3084 description "Descriptors"; 3085 } 3086 list actions { 3087 key action-id; 3088 uses fpc:fpc-action; 3089 description "Actions"; 3090 } 3091 description "Policy"; 3092 } 3094 container fpc-mobility { 3095 config false; 3096 list contexts { 3097 key context-id; 3098 uses fpc:fpc-context; 3099 description "Contexts"; 3100 } 3101 list ports { 3102 key port-id; 3103 uses fpc:fpc-port; 3104 description "Ports"; 3105 } 3106 list monitors { 3107 uses fpc:monitor-config; 3108 description "Monitors"; 3109 } 3110 description "Mobility"; 3111 } 3112 container fpc-topology { 3113 // Basic Agent Topology Structures 3114 list domains { 3115 key domain-id; 3116 uses fpc:fpc-domain; 3117 uses fpc:basename-info; 3118 description "Domains"; 3119 } 3121 leaf dpn-id { 3122 if-feature fpc:fpc-basic-agent; 3123 type fpc:fpc-dpn-id; 3124 description "DPN ID"; 3125 } 3126 leaf-list control-protocols { 3127 if-feature fpc:fpc-basic-agent; 3128 type identityref { 3129 base "fpc:fpc-dpn-control-protocol"; 3130 } 3131 description "Control Protocols"; 3132 } 3134 list dpn-groups { 3135 if-feature fpc:fpc-multi-dpn; 3136 key dpn-group-id; 3137 uses fpc:fpc-dpn-group; 3138 list domains { 3139 key domain-id; 3140 uses fpc:fpc-domain; 3141 uses fpc:basename-info; 3142 description "Domains"; 3143 } 3144 description "DPN Groups"; 3145 } 3146 list dpns { 3147 if-feature fpc:fpc-multi-dpn; 3148 key dpn-id; 3149 uses fpc:fpc-dpn; 3150 description "DPNs"; 3151 } 3152 description "Topology"; 3153 } 3154 description "Tenant"; 3155 } 3156 description "Tenant List"; 3157 } 3159 container fpc-agent-info { 3160 // General Agent Structures 3161 leaf-list supported-features { 3162 type string; 3163 description "Agent Features"; 3164 } 3166 // Common Agent Info 3167 list supported-events { 3168 key event; 3169 leaf event { 3170 type identityref { 3171 base "fpc:event-type"; 3172 } 3173 description "Event Types"; 3174 } 3175 leaf event-id { 3176 type fpc:event-type-id; 3177 description "Event ID"; 3178 } 3179 description "Supported Events"; 3180 } 3182 list supported-error-types { 3183 key error-type; 3184 leaf error-type { 3185 type identityref { 3186 base "fpc:error-type"; 3187 } 3188 description "Error Type"; 3189 } 3190 leaf error-type-id { 3191 type fpc:error-type-id; 3192 description "Error Type ID"; 3193 } 3194 description "Supported Error Types"; 3195 } 3196 description "General Agent Information"; 3197 } 3199 // Multi-DPN Agent Structures 3200 grouping fpc-dpn-group { 3201 leaf dpn-group-id { 3202 type fpc:fpc-dpn-group-id; 3203 description "DPN Group ID"; 3204 } 3205 leaf data-plane-role { 3206 type identityref { 3207 base "fpc:fpc-forwaridingplane-role"; 3208 } 3209 description "Dataplane Role"; 3210 } 3211 leaf access-type { 3212 type identityref { 3213 base "fpc:fpc-access-type"; 3214 } 3215 description "Access Type"; 3216 } 3217 leaf mobility-profile { 3218 type identityref { 3219 base "fpc:fpc-mobility-profile-type"; 3220 } 3221 description "Mobility Profile"; 3222 } 3223 list dpn-group-peers { 3224 key "remote-dpn-group-id"; 3225 uses fpc:fpc-dpn-peer-group; 3226 description "Peer DPN Groups"; 3227 } 3228 description "FPC DPN Group"; 3229 } 3231 // RPC 3232 // RPC Specific Structures 3233 //Input Structures 3234 typedef admin-status { 3235 type enumeration { 3236 enum enabled { 3237 value 0; 3238 description "enabled"; 3239 } 3240 enum disabled { 3241 value 1; 3242 description "disabled"; 3243 } 3244 enum virtual { 3245 value 2; 3246 description "virtual"; 3247 } 3248 } 3249 description "Adminstrative Status"; 3250 } 3252 typedef session-status { 3253 type enumeration { 3254 enum complete { 3255 value 0; 3256 description "complete"; 3257 } 3258 enum incomplete { 3259 value 1; 3260 description "incomplete"; 3261 } 3262 enum outdated { 3263 value 2; 3264 description "outdated"; 3265 } 3266 } 3267 description "Session Status"; 3268 } 3270 typedef op-delay { 3271 type uint32; 3272 description "Operation Delay (ms)"; 3273 } 3275 typedef op-identifier { 3276 type uint64; 3277 description "Operation Identifier"; 3278 } 3280 typedef ref-scope { 3281 type enumeration { 3282 enum none { 3283 value 0; 3284 description "no references"; 3285 } 3286 enum op { 3287 value 1; 3288 description "op - All references are contained in the operation body (intra-op)"; 3289 } 3290 enum bundle { 3291 value 2; 3292 description "bundle - All references in exist in bundle (inter-operation/intra-bundle). 3293 NOTE - If this value comes in CONFIG call it is equivalen to 'op'."; 3294 } 3295 enum storage { 3296 value 3; 3297 description "storage - One or more references exist outside of the operation and bundle. 3298 A lookup to a cache / storage is required."; 3299 } 3300 enum unknown { 3301 value 4; 3302 description " unknown - the location of the references are unknown. This is treated as 3303 a 'storage' type."; 3304 } 3305 } 3306 description "Search scope for references in the operation."; 3307 } 3309 grouping instructions { 3310 container instructions { 3311 if-feature instruction-bitset; 3312 choice instr-type { 3313 description "Instruction Value Choice"; 3314 } 3315 description "Instructions"; 3316 } 3317 description "Instructions Value"; 3318 } 3320 grouping op-header { 3321 leaf client-id { 3322 type fpc:client-identifier; 3323 description "Client ID"; 3324 } 3325 leaf delay { 3326 type op-delay; 3327 description "Delay"; 3328 } 3329 leaf session-state { 3330 type session-status; 3331 description "Session State"; 3332 } 3333 leaf admin-state { 3334 type admin-status; 3335 description "Admin State"; 3336 } 3337 leaf op-type { 3338 type enumeration { 3339 enum create { 3340 value 0; 3341 description "create"; 3342 } 3343 enum update { 3344 value 1; 3345 description "update"; 3346 } 3347 enum query { 3348 value 2; 3349 description "query"; 3350 } 3351 enum delete { 3352 value 3; 3353 description "delete"; 3354 } 3355 } 3356 description "Type"; 3357 } 3358 leaf op-ref-scope { 3359 if-feature operation-ref-scope; 3360 type fpc:ref-scope; 3361 description "Reference Scope"; 3362 } 3363 uses fpc:instructions; 3364 description "Operation Header"; 3365 } 3367 grouping clone-ref { 3368 leaf entity { 3369 type fpc:fpc-identity; 3370 description "Clone ID"; 3371 } 3372 leaf source { 3373 type fpc:fpc-identity; 3374 description "Source"; 3375 } 3376 description "Clone Reference"; 3377 } 3379 identity command-set { 3380 description "protocol specific commands"; 3381 } 3383 grouping context-operation { 3384 uses fpc:fpc-context; 3385 uses fpc:instructions; 3386 description "Context Operation"; 3387 } 3389 // Output Structure 3390 grouping payload { 3391 list ports { 3392 uses fpc:fpc-port; 3393 description "Ports"; 3394 } 3395 list contexts { 3396 uses fpc:context-operation; 3397 description "Contexts"; 3398 } 3399 list policy-groups { 3400 if-feature fpc:policy-rpc-provisioning; 3401 key "policy-group-id"; 3402 uses fpc:fpc-policy-group; 3403 description "Policy Groups"; 3404 } 3405 list policies { 3406 if-feature fpc:policy-rpc-provisioning; 3407 key "policy-id"; 3408 uses fpc:fpc-policy; 3409 description "Policies"; 3410 } 3411 list descriptors { 3412 if-feature fpc:policy-rpc-provisioning; 3413 key descriptor-id; 3414 uses fpc:fpc-descriptor; 3415 description "Descriptors"; 3416 } 3417 list actions { 3418 if-feature fpc:policy-rpc-provisioning; 3419 key action-id; 3420 uses fpc:fpc-action; 3421 description "Actions"; 3422 } 3423 description "Payload"; 3424 } 3426 grouping op-input { 3427 uses fpc:op-header; 3428 leaf op-id { 3429 type op-identifier; 3430 description "Operation ID"; 3431 } 3432 choice op_body { 3433 case create_or_update { 3434 list clones { 3435 if-feature fpc-cloning; 3436 key entity; 3437 uses fpc:clone-ref; 3438 description "Clones"; 3439 } 3440 uses fpc:payload; 3441 description "Create/Update input"; 3442 } 3443 case delete_or_query { 3444 uses fpc:targets-value; 3445 description "Delete/Query input"; 3446 } 3447 description "Opeartion Input value"; 3448 } 3449 description "Operation Input"; 3450 } 3452 typedef result { 3453 type enumeration { 3454 enum ok { 3455 value 0; 3456 description "OK"; 3457 } 3458 enum err { 3459 value 1; 3460 description "Error"; 3461 } 3462 enum ok-notify-follows { 3463 value 2; 3464 description "OK with NOTIFY following"; 3465 } 3466 } 3467 description "Result Status"; 3468 } 3470 identity error-type { 3471 description "Base Error Type"; 3472 } 3473 identity name-already-exists { 3474 description "Notification that an entity of the same name already exists"; 3475 } 3477 typedef error-type-id { 3478 type uint32; 3479 description "Integer form of the Error Type"; 3480 } 3482 grouping op-status-value { 3483 leaf op-status { 3484 type enumeration { 3485 enum ok { 3486 value 0; 3487 description "OK"; 3488 } 3489 enum err { 3490 value 1; 3491 description "Error"; 3492 } 3493 } 3494 description "Operation Status"; 3495 } 3496 description "Operation Status Value"; 3497 } 3499 grouping error-info { 3500 leaf error-type-id { 3501 type fpc:error-type-id; 3502 description "Error ID"; 3503 } 3504 leaf error-info { 3505 type string { 3506 length "1..1024"; 3507 } 3508 description "Error Detail"; 3509 } 3510 description "Error Information"; 3511 } 3513 grouping result-body { 3514 leaf op-id { 3515 type op-identifier; 3516 description "Operation Identifier"; 3517 } 3518 choice result-type { 3519 case err { 3520 uses fpc:error-info; 3521 description "Error Information"; 3522 } 3523 case create-or-update-success { 3524 uses fpc:payload; 3525 description "Create/Update Success"; 3526 } 3527 case delete_or_query-success { 3528 uses fpc:targets-value; 3529 description "Delete/Query Success"; 3530 } 3531 case empty-case { 3532 description "Empty Case"; 3533 } 3534 description "Result Value"; 3535 } 3536 description "Result Body"; 3537 } 3539 // Common RPCs 3540 rpc configure { 3541 description "CONF message"; 3542 input { 3543 uses fpc:op-input; 3544 } 3545 output { 3546 leaf result { 3547 type result; 3548 description "Result"; 3549 } 3550 uses fpc:result-body; 3551 } 3553 } 3555 rpc configure-bundles { 3556 if-feature fpc:fpc-bundles; 3557 description "CONF_BUNDLES message"; 3558 input { 3559 leaf highest-op-ref-scope { 3560 if-feature operation-ref-scope; 3561 type fpc:ref-scope; 3562 description "Highest Op-Ref used in the input"; 3563 } 3564 list bundles { 3565 key op-id; 3566 uses fpc:op-input; 3567 description "List of operations"; 3568 } 3569 } 3570 output { 3571 list bundles { 3572 key op-id; 3573 uses fpc:result-body; 3574 description "Operation Identifier"; 3575 } 3576 } 3577 } 3579 // Notification Messages & Structures 3580 typedef notification-id { 3581 type uint32; 3582 description "Notification Identifier"; 3583 } 3585 grouping notification-header { 3586 leaf notification-id { 3587 type fpc:notification-id; 3588 description "Notification ID"; 3589 } 3590 leaf timestamp { 3591 type uint32; 3592 description "timestamp"; 3593 } 3594 description "Notification Header"; 3595 } 3597 notification config-result-notification { 3598 uses fpc:notification-header; 3599 choice value { 3600 case config-result { 3601 uses fpc:op-status-value; 3602 uses fpc:result-body; 3603 description "CONF Result"; 3604 } 3605 case config-bundle-result { 3606 list bundles { 3607 uses fpc:op-status-value; 3608 uses fpc:result-body; 3609 description "Operation Results"; 3610 } 3611 description "CONF_BUNDLES Result"; 3612 } 3613 description "Config Result value"; 3614 } 3615 description "CONF/CONF_BUNDLES Async Result"; 3616 } 3618 rpc event_register { 3619 description "Used to register monitoring of parameters/events"; 3620 input { 3621 uses fpc:monitor-config; 3622 } 3623 output { 3624 leaf monitor-result { 3625 type fpc:result; 3626 description "Result"; 3627 } 3628 uses fpc:error-info; 3629 } 3630 } 3632 rpc event_deregister { 3633 description "Used to de-register monitoring of parameters/events"; 3634 input { 3635 list monitors { 3636 uses fpc:monitor-id; 3637 description "Monitor ID"; 3638 } 3639 } 3640 output { 3641 leaf monitor-result { 3642 type fpc:result; 3643 description "Result"; 3644 } 3645 uses fpc:error-info; 3646 } 3648 } 3649 rpc probe { 3650 description "Probe the status of a registered monitor"; 3651 input { 3652 uses fpc:targets-value; 3653 } 3654 output { 3655 leaf monitor-result { 3656 type fpc:result; 3657 description "Result"; 3658 } 3659 uses fpc:error-info; 3660 } 3661 } 3663 notification notify { 3664 uses fpc:notification-header; 3665 choice value { 3666 case dpn-candidate-available { 3667 if-feature fpc:fpc-auto-binding; 3668 leaf node-id { 3669 type inet:uri; 3670 description "Topology URI"; 3671 } 3672 leaf-list access-types { 3673 type identityref { 3674 base "fpc:fpc-access-type"; 3675 } 3676 description "Access Types"; 3677 } 3678 leaf-list mobility-profiles { 3679 type identityref { 3680 base "fpc:fpc-mobility-profile-type"; 3681 } 3682 description "Mobility Profiles"; 3683 } 3684 leaf-list forwarding-plane-roles { 3685 type identityref { 3686 base "fpc:fpc-forwaridingplane-role"; 3687 } 3688 description "Forwarding Plane Role"; 3689 } 3690 description "DPN Candidate Availability"; 3691 } 3692 case monitor-notification { 3693 choice monitor-notification-value { 3694 case simple-monitor { 3695 uses fpc:report; 3696 description "Report"; 3698 } 3699 case bulk-monitors { 3700 list reports { 3701 uses fpc:report; 3702 description "Reports"; 3703 } 3704 description "Bulk Monitor Response"; 3705 } 3706 description "Monitor Notification value"; 3707 } 3708 description "Monitor Notification"; 3709 } 3710 description "Notify Value"; 3711 } 3712 description "Notify Message"; 3713 } 3714 } 3715 3717 A.2. YANG Models 3719 A.2.1. FPC YANG Model 3721 This module defines the base data elements specified in this 3722 document. 3724 This module references [RFC6991]. 3726 file "ietf-dmm-fpc-base@2016-08-03.yang" 3727 submodule ietf-dmm-fpc-base { 3728 belongs-to ietf-dmm-fpc { 3729 prefix fpc; 3730 } 3732 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 3734 organization "IETF Distributed Mobility Management (DMM) 3735 Working Group"; 3737 contact 3738 "WG Web: 3739 WG List: 3741 WG Chair: Dapeng Liu 3742 3744 WG Chair: Jouni Korhonen 3745 3747 Editor: Satoru Matsushima 3748 3750 Editor: Lyle Bertz 3751 "; 3753 description 3754 "This module contains YANG definition for 3755 Forwarding Policy Configuration Protocol(FPCP). 3757 Copyright (c) 2016 IETF Trust and the persons identified as the 3758 document authors. All rights reserved. 3760 This document is subject to BCP 78 and the IETF Trust's Legal 3761 Provisions Relating to IETF Documents 3762 (http://trustee.ietf.org/license-info) in effect on the date of 3763 publication of this document. Please review these documents 3764 carefully, as they describe your rights and restrictions with 3765 respect to this document. Code Components extracted from this 3766 document must include Simplified BSD License text as described 3767 in Section 4.e of the Trust Legal Provisions and are provided 3768 without warranty as described in the Simplified BSD License."; 3770 revision 2016-08-03 { 3771 description "Initial Revision."; 3772 reference "draft-ietf-dmm-fpc-cpdp-05"; 3773 } 3775 feature fpc-basic-agent { 3776 description "This is an agent co-located with a DPN. In this case 3777 only DPN Peer Groups, the DPN Id and Control Protocols are exposed 3778 along with the core structures."; 3779 } 3780 feature fpc-multi-dpn { 3781 description "The agent supports multiple DPNs."; 3782 } 3784 typedef fpc-identity { 3785 type union { 3786 type uint32; 3787 type string; 3788 type instance-identifier; 3789 } 3790 description "FPC Identity"; 3791 } 3793 grouping target-value { 3794 leaf target { 3795 type fpc-identity; 3796 description "Target Identity"; 3797 } 3798 description "FPC Target Value"; 3799 } 3801 grouping targets-value { 3802 list targets { 3803 key "target"; 3804 leaf target { 3805 type fpc-identity; 3806 description "Target Id"; 3807 } 3808 leaf dpn-id { 3809 type fpc:fpc-dpn-id; 3810 description "DPN Id"; 3811 } 3812 description "List of Targets"; 3813 } 3814 description "Targets Value"; 3815 } 3817 // Descriptor Structure 3818 typedef fpc-descriptor-id-type { 3819 type fpc:fpc-identity; 3820 description "Descriptor-ID"; 3821 } 3822 identity fpc-descriptor-type { 3823 description "A traffic descriptor"; 3824 } 3825 grouping fpc-descriptor-id { 3826 leaf descriptor-id { 3827 type fpc:fpc-identity; 3828 description "Descriptor Id"; 3829 } 3830 description "FPC Descriptor ID value"; 3831 } 3832 grouping fpc-descriptor { 3833 uses fpc:fpc-descriptor-id; 3834 leaf descriptor-type { 3835 type identityref { 3836 base "fpc-descriptor-type"; 3837 } 3838 mandatory true; 3839 description "Descriptor Type"; 3840 } 3841 choice descriptor-value { 3842 case all-traffic { 3843 leaf all-traffic { 3844 type empty; 3845 description "Empty Value"; 3846 } 3847 } 3848 description "Descriptor Value"; 3849 } 3850 description "FPC Descriptor"; 3851 } 3853 // Action Structure 3854 typedef fpc-action-id-type { 3855 type fpc:fpc-identity; 3856 description "Action-ID"; 3857 } 3858 identity fpc-action-type { 3859 description "Action Type"; 3860 } 3861 grouping fpc-action-id { 3862 leaf action-id { 3863 type fpc:fpc-action-id-type; 3864 description "Action Identifier"; 3865 } 3866 description "FPC Action ID"; 3867 } 3868 grouping fpc-action { 3869 uses fpc:fpc-action-id; 3870 leaf action-type { 3871 type identityref { 3872 base "fpc-action-type"; 3873 } 3874 mandatory true; 3875 description "Action Type"; 3876 } 3877 choice action-value { 3878 case drop { 3879 leaf drop { 3880 type empty; 3881 description "Empty Value"; 3882 } 3883 } 3884 description "FPC Action Value"; 3885 } 3886 description "FPC Action"; 3887 } 3889 // Rule Structure 3890 grouping fpc-rule { 3891 list descriptors { 3892 key descriptor-id; 3893 uses fpc:fpc-descriptor-id; 3894 leaf direction { 3895 type fpc:fpc-direction; 3896 description "Direction"; 3897 } 3898 description "Descriptors"; 3899 } 3900 list actions { 3901 key action-id; 3902 leaf order { 3903 type uint32; 3904 description "Action Execution Order"; 3905 } 3906 uses fpc:fpc-action-id; 3907 description "Actions"; 3908 } 3909 description 3910 "FPC Rule. When no actions are present the action is DROP. 3911 When no Descriptors are empty the default is 'all traffic'."; 3912 } 3914 // Policy Structures 3915 typedef fpc-policy-id { 3916 type fpc:fpc-identity; 3917 description "Policy Identifier"; 3918 } 3919 grouping fpc-policy { 3920 leaf policy-id { 3921 type fpc:fpc-policy-id; 3922 description "Policy Id"; 3923 } 3924 list rules { 3925 key order; 3926 leaf order { 3927 type uint32; 3928 description "Rule Order"; 3929 } 3930 uses fpc:fpc-rule; 3931 description "Rules"; 3932 } 3933 description "FPC Policy"; 3934 } 3936 // Policy Group 3937 typedef fpc-policy-group-id { 3938 type fpc:fpc-identity; 3939 description "Policy Group Identifier"; 3940 } 3941 grouping fpc-policy-group { 3942 leaf policy-group-id { 3943 type fpc:fpc-policy-group-id; 3944 description "Policy Group ID"; 3945 } 3946 leaf-list policies { 3947 type fpc:fpc-policy-id; 3948 description "Policies"; 3949 } 3950 description "FPC Policy Group"; 3951 } 3953 // Mobility Structures 3954 // Port Group 3955 typedef fpc-port-id { 3956 type fpc:fpc-identity; 3957 description "FPC Port Identifier"; 3958 } 3959 grouping fpc-port { 3960 leaf port-id { 3961 type fpc:fpc-port-id; 3962 description "Port ID"; 3963 } 3964 leaf-list policy-groups { 3965 type fpc:fpc-policy-group-id; 3966 description "Policy Groups"; 3967 } 3968 description "FPC Port"; 3969 } 3971 // Context Group 3972 typedef fpc-context-id { 3973 type fpc:fpc-identity; 3974 description "FPC Context Identifier"; 3975 } 3976 grouping fpc-context-profile { 3977 leaf tunnel-local-address { 3978 type inet:ip-address; 3979 description "Uplink endpoint address of the DPN which agent exists."; 3980 } 3981 leaf tunnel-remote-address { 3982 type inet:ip-address; 3983 description "Uplink endpoint address of the DPN which agent exists."; 3984 } 3985 leaf mtu-size { 3986 type uint32; 3987 description "MTU size"; 3988 } 3989 container mobility-tunnel-parameters { 3990 uses fpc:mobility-info; 3991 description 3992 "Specifies profile specific uplink tunnel parameters to the DPN 3993 which the agent exists. The profiles includes GTP/TEID for 3gpp profile, 3994 GRE/Key for ietf-pmip profile, or new profile if anyone will define it."; 3995 } 3996 container nexthop { 3997 uses fpc:fpc-nexthop; 3998 description "Next Hop"; 3999 } 4000 container qos-profile-parameters { 4001 uses fpc:fpc-qos-profile; 4002 description "QoS Parameters"; 4003 } 4004 container dpn-parameters { 4005 description "DPN Parameters"; 4006 } 4007 list vendor-parameters { 4008 key "vendor-id vendor-type"; 4009 uses fpc:vendor-attributes; 4010 description "Vendor Parameters"; 4011 } 4012 description "A profile that applies to a specific direction"; 4013 } 4015 typedef fpc-direction { 4016 type enumeration { 4017 enum uplink { 4018 description "Uplink"; 4019 } 4020 enum downlink { 4021 description "Downlink"; 4022 } 4023 enum both { 4024 description "Both"; 4025 } 4026 } 4027 description "FPC Direction"; 4028 } 4030 grouping fpc-context { 4031 leaf context-id { 4032 type fpc:fpc-context-id; 4033 description "Context ID"; 4034 } 4035 leaf-list ports { 4036 type fpc:fpc-port-id; 4037 description "Ports"; 4038 } 4039 leaf dpn-group { 4040 type fpc:fpc-dpn-group-id; 4041 description "DPN Group"; 4042 } 4043 leaf-list delegating-ip-prefixes { 4044 type inet:ip-prefix; 4045 description "Delegating Prefix(es)"; 4046 } 4047 container ul { 4048 if-feature fpc:fpc-basic-agent; 4049 uses fpc:fpc-context-profile; 4050 description "Uplink"; 4051 } 4052 container dl { 4053 if-feature fpc:fpc-basic-agent; 4054 uses fpc:fpc-context-profile; 4055 description "Downlink"; 4056 } 4057 list dpns { 4058 if-feature fpc:fpc-multi-dpn; 4059 key "dpn-id direction"; 4060 leaf dpn-id { 4061 type fpc:fpc-dpn-id; 4062 description "DPN"; 4063 } 4064 leaf direction { 4065 type fpc:fpc-direction; 4066 mandatory true; 4067 description "Direction"; 4068 } 4069 uses fpc:fpc-context-profile; 4070 description "DPNs"; 4071 } 4072 leaf parent-context { 4073 type fpc:fpc-context-id; 4074 description "Parent Context"; 4075 } 4076 description "FCP Context"; 4077 } 4079 // Mobility (Tunnel) Information 4080 grouping mobility-info { 4081 choice profile-parameters { 4082 case nothing { 4083 leaf none { 4084 type empty; 4085 description "Empty Value"; 4086 } 4087 description "No Parameters Case"; 4088 } 4089 description "Mobility Profile Parameters"; 4090 } 4091 description "Mobility Information"; 4092 } 4094 // Next Hop Structures 4095 typedef fpcp-service-path-id { 4096 type uint32 { 4097 range "0..33554431"; 4098 } 4099 description "SERVICE_PATH_ID"; 4100 } 4102 identity fpc-nexthop-type { 4103 description "Next Hop Type"; 4104 } 4105 identity fpc-nexthop-ip { 4106 base "fpc:fpc-nexthop-type"; 4107 description "Nexthop IP"; 4108 } 4109 identity fpc-nexthop-servicepath { 4110 base "fpc:fpc-nexthop-type"; 4111 description "Nexthop Service Path"; 4112 } 4113 grouping fpc-nexthop { 4114 leaf nexthop-type { 4115 type identityref { 4116 base "fpc:fpc-nexthop-type"; 4117 } 4118 description "Nexthop Type"; 4119 } 4120 choice nexthop-value { 4121 case ip { 4122 leaf ip { 4123 type inet:ip-address; 4124 description "IP Value"; 4125 } 4126 description "IP Case"; 4127 } 4128 case servicepath { 4129 leaf servicepath { 4130 type fpc:fpcp-service-path-id; 4131 description "Service Path Value"; 4132 } 4133 description "Service Path Case"; 4134 } 4135 description "Value"; 4136 } 4137 description "Nexthop Value"; 4138 } 4140 // QoS Information 4141 identity fpc-qos-type { 4142 description "Base identity from which specific uses of QoS types are derived."; 4143 } 4144 grouping fpc-qos-profile { 4145 leaf qos-type { 4146 type identityref { 4147 base fpc:fpc-qos-type; 4148 } 4149 description "the profile type"; 4150 } 4151 choice value { 4152 description "QoS Value"; 4153 } 4154 description "QoS Profile"; 4155 } 4157 // Vendor Specific Attributes 4158 identity vendor-specific-type { 4159 description "Vendor Specific Attribute Type"; 4160 } 4161 grouping vendor-attributes { 4162 leaf vendor-id { 4163 type fpc:fpc-identity; 4164 description "Vendor ID"; 4165 } 4166 leaf vendor-type { 4167 type identityref { 4168 base "fpc:vendor-specific-type"; 4169 } 4170 description "Attribute Type"; 4171 } 4172 choice value { 4173 case empty-type { 4174 leaf empty-type { 4175 type empty; 4176 description "Empty Value"; 4177 } 4178 description "Empty Case"; 4180 } 4181 description "Atttribute Value"; 4182 } 4183 description "Vendor Specific Attributes"; 4184 } 4186 // Topology 4187 typedef fpc-domain-id { 4188 type fpc:fpc-identity; 4189 description "Domain Identifier"; 4190 } 4191 grouping fpc-domain { 4192 leaf domain-id { 4193 type fpc:fpc-domain-id; 4194 description "Domain ID"; 4195 } 4196 leaf domain-name { 4197 type string; 4198 description "Domain Name"; 4199 } 4200 leaf domain-type { 4201 type string; 4202 description "Domain Type"; 4203 } 4204 description "FPC Domain"; 4205 } 4207 typedef fpc-dpn-id { 4208 type fpc:fpc-identity; 4209 description "DPN Identifier"; 4210 } 4211 identity fpc-dpn-control-protocol { 4212 description "DPN Control Protocol"; 4213 } 4214 grouping fpc-dpn { 4215 leaf dpn-id { 4216 type fpc:fpc-dpn-id; 4217 description "DPN ID"; 4218 } 4219 leaf dpn-name { 4220 type string; 4221 description "DPN Name"; 4222 } 4223 leaf-list dpn-groups { 4224 type fpc:fpc-dpn-group-id; 4225 description "DPN Groups"; 4226 } 4227 leaf node-reference { 4228 type instance-identifier; 4229 description "DPN => Node (Topology) Mapping"; 4230 } 4231 description "FPC DPN"; 4232 } 4234 typedef fpc-dpn-group-id { 4235 type fpc:fpc-identity; 4236 description "DPN Group Identifier"; 4237 } 4238 identity fpc-forwaridingplane-role { 4239 description "Role of DPN Group in the Forwarding Plane"; 4240 } 4241 identity fpc-access-type { 4242 description "Access Type of the DPN Group"; 4243 } 4244 identity fpc-mobility-profile-type { 4245 description "Mobility Profile Type"; 4246 } 4248 grouping fpc-dpn-peer-group { 4249 leaf remote-dpn-group-id { 4250 type fpc:fpc-dpn-group-id; 4251 description "Remote DPN Group ID"; 4252 } 4253 leaf remote-mobility-profile { 4254 type identityref { 4255 base "fpc:fpc-mobility-profile-type"; 4256 } 4257 description "Mobility Profile"; 4258 } 4259 leaf remote-data-plane-role { 4260 type identityref { 4261 base "fpc:fpc-forwaridingplane-role"; 4262 } 4263 description "Forwarding Plane Role"; 4264 } 4265 leaf remote-endpoint-address { 4266 type inet:ip-address; 4267 description "Remote Endpoint Address"; 4268 } 4269 leaf local-endpoint-address { 4270 type inet:ip-address; 4271 description "Local Endpoint Address"; 4272 } 4273 leaf mtu-size { 4274 type uint32; 4275 description "MTU Size"; 4277 } 4278 description "FPC DPN Peer Group"; 4279 } 4281 // Events, Probes & Notifications 4282 identity event-type { 4283 description "Base Event Type"; 4284 } 4285 typedef event-type-id { 4286 type uint32; 4287 description "Event ID Type"; 4288 } 4290 grouping monitor-id { 4291 leaf monitor-id { 4292 type fpc:fpc-identity; 4293 description "Monitor Identifier"; 4294 } 4295 description "Monitor ID"; 4296 } 4298 identity report-type { 4299 description "Type of Report"; 4300 } 4301 identity periodic-report { 4302 base "fpc:report-type"; 4303 description "Periodic Report"; 4304 } 4305 identity threshold-report { 4306 base "fpc:report-type"; 4307 description "Threshold Report"; 4308 } 4309 identity scheduled-report { 4310 base "fpc:report-type"; 4311 description "Scheduled Report"; 4312 } 4313 identity events-report { 4314 base "fpc:report-type"; 4315 description "Events Report"; 4316 } 4318 grouping report-config { 4319 choice event-config-value { 4320 case periodic-config { 4321 leaf period { 4322 type uint32; 4323 description "Period"; 4324 } 4325 description "Periodic Config Case"; 4326 } 4327 case threshold-config { 4328 leaf lo-thresh { 4329 type uint32; 4330 description "lo threshold"; 4331 } 4332 leaf hi-thresh { 4333 type uint32; 4334 description "hi threshold"; 4335 } 4336 description "Threshold Config Case"; 4337 } 4338 case scheduled-config { 4339 leaf report-time { 4340 type uint32; 4341 description "Reporting Time"; 4342 } 4343 description "Scheduled Config Case"; 4344 } 4345 case events-config-ident { 4346 leaf-list event-identities { 4347 type identityref { 4348 base "fpc:event-type"; 4349 } 4350 description "Event Identities"; 4351 } 4352 description "Events Config Identities Case"; 4353 } 4354 case events-config { 4355 leaf-list event-ids { 4356 type uint32; 4357 description "Event IDs"; 4358 } 4359 description "Events Config Case"; 4360 } 4361 description "Event Config Value"; 4362 } 4363 description "Report Configuration"; 4364 } 4366 grouping monitor-config { 4367 uses fpc:monitor-id; 4368 uses fpc:target-value; 4369 uses fpc:report-config; 4370 description "Monitor Configuration"; 4371 } 4372 grouping report { 4373 uses fpc:monitor-config; 4374 choice report-value { 4375 leaf trigger { 4376 type fpc:event-type-id; 4377 description "Trigger Identifier"; 4378 } 4379 case simple-empty { 4380 leaf nothing { 4381 type empty; 4382 description "Empty Value"; 4383 } 4384 description "Empty Case"; 4385 } 4386 case simple-val32 { 4387 leaf val32 { 4388 type uint32; 4389 description "Unsigned 32 bit value"; 4390 } 4391 description "Simple Value Case"; 4392 } 4393 description "Report Value"; 4394 } 4395 description "Monitor Report"; 4396 } 4397 } 4398 4400 A.2.2. PMIP QoS Model 4402 This module defines the base protocol elements specified in this 4403 document. 4405 This module references [RFC6991] and the traffic-selector-types 4406 module defined in this document. 4408 file "ietf-pmip-qos@2016-02-10.yang" 4409 module ietf-pmip-qos { 4410 yang-version 1; 4412 namespace 4413 "urn:ietf:params:xml:ns:yang:ietf-pmip-qos"; 4415 prefix "qos-pmip"; 4417 import ietf-inet-types { 4418 prefix inet; 4419 revision-date 2013-07-15; 4421 } 4422 import ietf-traffic-selector-types { prefix traffic-selectors; } 4424 organization "IETF Distributed Mobility Management (DMM) 4425 Working Group"; 4427 contact 4428 "WG Web: 4429 WG List: 4431 WG Chair: Dapeng Liu 4432 4434 WG Chair: Jouni Korhonen 4435 4437 Editor: Satoru Matsushima 4438 4440 Editor: Lyle Bertz 4441 "; 4443 description 4444 "This module contains a collection of YANG definitions for 4445 quality of service paramaters used in Proxy Mobile IPv6. 4447 Copyright (c) 2016 IETF Trust and the persons identified as the 4448 document authors. All rights reserved. 4450 This document is subject to BCP 78 and the IETF Trust's Legal 4451 Provisions Relating to IETF Documents 4452 (http://trustee.ietf.org/license-info) in effect on the date of 4453 publication of this document. Please review these documents 4454 carefully, as they describe your rights and restrictions with 4455 respect to this document. Code Components extracted from this 4456 document must include Simplified BSD License text as described 4457 in Section 4.e of the Trust Legal Provisions and are provided 4458 without warranty as described in the Simplified BSD License."; 4460 revision 2016-02-10 { 4461 description "Initial revision"; 4462 reference 4463 "RFC 7222: Quality-of-Service Option for Proxy Mobile IPv6"; 4464 } 4466 // Type Definitions 4468 // QoS Option Field Type Definitions 4469 typedef sr-id { 4470 type uint8; 4471 description 4472 "An 8-bit unsigned integer used 4473 for identifying the QoS Service Request. Its uniqueness is within 4474 the scope of a mobility session. The local mobility anchor always 4475 allocates the Service Request Identifier. When a new QoS Service 4476 Request is initiated by a mobile access gateway, the Service 4477 Request Identifier in the initial request message is set to a 4478 value of (0), and the local mobility anchor allocates a Service 4479 Request Identifier and includes it in the response. For any new 4480 QoS Service Requests initiated by a local mobility anchor, the 4481 Service Request Identifier is set to the allocated value."; 4482 } 4484 typedef traffic-class { 4485 type inet:dscp; 4486 description 4487 "Traffic Class consists of a 6-bit DSCP field followed by a 2-bit 4488 reserved field."; 4489 reference 4490 "RFC 3289: Management Information Base for the Differentiated 4491 Services Architecture 4492 RFC 2474: Definition of the Differentiated Services Field 4493 (DS Field) in the IPv4 and IPv6 Headers 4494 RFC 2780: IANA Allocation Guidelines For Values In 4495 the Internet Protocol and Related Headers"; 4496 } 4498 typedef operational-code { 4499 type enumeration { 4500 enum RESPONSE { 4501 value 0; 4502 description "Response to a QoS request"; 4503 } 4504 enum ALLOCATE { 4505 value 1; 4506 description "Request to allocate QoS resources"; 4507 } 4508 enum DE-ALLOCATE { 4509 value 2; 4510 description "Request to de-Allocate QoS resources"; 4511 } 4512 enum MODIFY { 4513 value 3; 4514 description "Request to modify QoS parameters for a previously negotiated 4515 QoS Service Request"; 4516 } 4517 enum QUERY { 4518 value 4; 4519 description "Query to list the previously negotiated QoS Service Requests 4520 that are still active"; 4521 } 4522 enum NEGOTIATE { 4523 value 5; 4524 description "Response to a QoS Service Request with a counter QoS proposal"; 4525 } 4526 } 4527 description 4528 "1-octet Operational code indicates the type of QoS request. 4529 Reserved values: (6) to (255) 4530 Currently not used. Receiver MUST ignore the option received 4531 with any value in this range."; 4532 } 4534 // QoS Attribute Types 4536 //The enumeration value for mapping - don't confuse with the identities 4537 typedef qos-attrubite-type-enum { 4538 type enumeration { 4539 enum Reserved { 4540 value 0; 4541 description "This value is reserved and cannot be used"; 4542 } 4543 enum Per-MN-Agg-Max-DL-Bit-Rate { 4544 value 1; 4545 description "Per-Mobile-Node Aggregate Maximum Downlink Bit Rate."; 4546 } 4547 enum Per-MN-Agg-Max-UL-Bit-Rate { 4548 value 2; 4549 description "Per-Mobile-Node Aggregate Maximum Uplink Bit Rate."; 4550 } 4551 enum Per-Session-Agg-Max-DL-Bit-Rate { 4552 value 3; 4553 description "Per-Mobility-Session Aggregate Maximum Downlink Bit Rate."; 4554 } 4555 enum Per-Session-Agg-Max-UL-Bit-Rate { 4556 value 4; 4557 description "Per-Mobility-Session Aggregate Maximum Uplink Bit Rate."; 4558 } 4559 enum Allocation-Retention-Priority { 4560 value 5; 4561 description "Allocation and Retention Priority."; 4562 } 4563 enum Aggregate-Max-DL-Bit-Rate { 4564 value 6; 4565 description "Aggregate Maximum Downlink Bit Rate."; 4566 } 4567 enum Aggregate-Max-UL-Bit-Rate { 4568 value 7; 4569 description "Aggregate Maximum Uplink Bit Rate."; 4570 } 4571 enum Guaranteed-DL-Bit-Rate { 4572 value 8; 4573 description "Guaranteed Downlink Bit Rate."; 4574 } 4575 enum Guaranteed-UL-Bit-Rate { 4576 value 9; 4577 description "Guaranteed Uplink Bit Rate."; 4578 } 4579 enum QoS-Traffic-Selector { 4580 value 10; 4581 description "QoS Traffic Selector."; 4582 } 4583 enum QoS-Vendor-Specific-Attribute { 4584 value 11; 4585 description "QoS Vendor-Specific Attribute."; 4586 } 4587 } 4588 description 4589 "8-bit unsigned integer indicating the type of the QoS 4590 attribute. This specification reserves the following reserved values. 4591 (12) to (254) - Reserved 4592 These values are reserved for future allocation. 4594 (255) Reserved 4595 This value is reserved and cannot be used."; 4596 } 4598 // Attribute Type as Identities 4599 // Added for convenience of inclusion and extension in other YANG modules. 4600 identity qos-attribute-type { 4601 description 4602 "Base type for Quality of Service Attributes"; 4603 } 4605 identity Per-MN-Agg-Max-DL-Bit-Rate-type { 4606 base qos-attribute-type; 4607 description 4608 "Per-Mobile-Node Aggregate Maximum Downlink Bit Rate."; 4609 } 4611 identity Per-MN-Agg-Max-UL-Bit-Rate-type { 4612 base qos-attribute-type; 4613 description 4614 "Per-Mobile-Node Aggregate Maximum Uplink Bit Rate"; 4615 } 4617 identity Per-Session-Agg-Max-DL-Bit-Rate-type { 4618 base qos-attribute-type; 4619 description 4620 "Per-Mobility-Session Aggregate Maximum Downlink Bit Rate."; 4621 } 4623 identity Per-Session-Agg-Max-UL-Bit-Rate-type { 4624 base qos-attribute-type; 4625 description 4626 "Per-Mobility-Session Aggregate Maximum Uplink Bit Rate."; 4627 } 4629 identity Allocation-Retention-Priority-type { 4630 base qos-attribute-type; 4631 description 4632 "Allocation and Retention Priority."; 4633 } 4635 identity Aggregate-Max-DL-Bit-Rate-type { 4636 base qos-attribute-type; 4637 description "Aggregate Maximum Downlink Bit Rate."; 4638 } 4640 identity Aggregate-Max-UL-Bit-Rate-type { 4641 base qos-attribute-type; 4642 description "Aggregate Maximum Uplink Bit Rate."; 4643 } 4645 identity Guaranteed-DL-Bit-Rate-type { 4646 base qos-attribute-type; 4647 description "Guaranteed Downlink Bit Rate."; 4648 } 4650 identity Guaranteed-UL-Bit-Rate-type { 4651 base qos-attribute-type; 4652 description "Guaranteed Uplink Bit Rate."; 4653 } 4655 identity QoS-Traffic-Selector-type { 4656 base qos-attribute-type; 4657 description "QoS Traffic Selector."; 4658 } 4660 identity QoS-Vendor-Specific-Attribute-type { 4661 base qos-attribute-type; 4662 description "QoS Vendor-Specific Attribute."; 4663 } 4665 //value definitions 4666 typedef Per-MN-Agg-Max-DL-Bit-Rate-Value { 4667 type uint32; 4668 description 4669 "This is a 32-bit unsigned integer that 4670 indicates the aggregate maximum downlink bit rate that is 4671 requested/allocated for all the mobile node's IP flows. The 4672 measurement units for Per-MN-Agg-Max-DL-Bit-Rate are bits per 4673 second."; 4674 } 4676 typedef Per-MN-Agg-Max-UL-Bit-Rate-Value { 4677 type uint32; 4678 description 4679 "This is a 32-bit unsigned integer that 4680 indicates the aggregate maximum uplink bit rate that is requested/ 4681 allocated for the mobile node's IP flows. The measurement units 4682 for Per-MN-Agg-Max-UL-Bit-Rate are bits per second."; 4683 } 4685 // Generic Structure for the uplink and downlink 4686 grouping Per-Session-Agg-Max-Bit-Rate-Value { 4687 leaf max-rate { 4688 type uint32; 4689 mandatory true; 4690 description 4691 "This is a 32-bit unsigned integer 4692 that indicates the aggregate maximum bit rate that is requested/allocated 4693 for all the IP flows associated with that mobility session. The measurement 4694 units for Per-Session-Agg-Max-UL/DL-Bit-Rate are bits per second."; 4695 } 4696 leaf service-flag { 4697 type boolean; 4698 mandatory true; 4699 description 4700 "This flag is used for extending the scope of the 4701 target flows for Per-Session-Agg-Max-UL/DL-Bit-Rate from(UL)/to(DL) the mobile 4702 node's other mobility sessions sharing the same Service 4703 Identifier. 3GPP Access Point Name (APN) is an example of a 4704 Service Identifier, and that identifier is carried using the 4705 Service Selection mobility option [RFC5149]. 4707 * When the (S) flag is set to a value of (1), then the Per- 4708 Session-Agg-Max-Bit-Rate is measured as an aggregate across 4709 all the mobile node's other mobility sessions sharing the same 4710 Service Identifier associated with this mobility session. 4712 * When the (S) flag is set to a value of (0), then the target 4713 flows are limited to the current mobility session. 4715 * The (S) flag MUST NOT be set to a value of (1) when there is no 4716 Service Identifier associated with the mobility session."; 4717 reference 4718 "RFC 5149 - Service Selection mobility option"; 4719 } 4720 leaf exclude-flag { 4721 type boolean; 4722 mandatory true; 4723 description 4724 "This flag is used to request that the uplink/downlink 4725 flows for which the network is providing Guaranteed-Bit-Rate 4726 service be excluded from the target IP flows for which Per- 4727 Session-Agg-Max-UL/DL-Bit-Rate is measured. 4729 * When the (E) flag is set to a value of (1), then the request is 4730 to exclude the IP flows for which Guaranteed-UL/DL-Bit-Rate 4731 is negotiated from the flows for which Per-Session-Agg-Max-UL/DL-Bit-Rate 4732 is measured. 4734 * When the (E) flag is set to a value of (0), then the request is 4735 not to exclude any IP flows from the target IP flows for which 4736 Per-Session-Agg-Max-UL/DL-Bit-Rate is measured. 4738 * When the (S) flag and (E) flag are both set to a value of (1), 4739 then the request is to exclude all the IP flows sharing the 4740 Service Identifier associated with this mobility session from 4741 the target flows for which Per-Session-Agg-Max-UL/DL-Bit-Rate is 4742 measured."; 4743 } 4744 description "Per-Session-Agg-Max-Bit-Rate Value"; 4745 } 4747 grouping Allocation-Retention-Priority-Value { 4748 leaf prioirty-level { 4749 type uint8 { 4750 range "0..15"; 4751 } 4752 mandatory true; 4753 description 4754 "This is a 4-bit unsigned integer value. It 4755 is used to decide whether a mobility session establishment or 4756 modification request can be accepted; this is typically used for 4757 admission control of Guaranteed Bit Rate traffic in case of 4758 resource limitations. The priority level can also be used to 4760 decide which existing mobility session to preempt during resource 4761 limitations. The priority level defines the relative timeliness 4762 of a resource request. 4764 Values 1 to 15 are defined, with value 1 as the highest level of 4765 priority. 4767 Values 1 to 8 should only be assigned for services that are 4768 authorized to receive prioritized treatment within an operator 4769 domain. Values 9 to 15 may be assigned to resources that are 4770 authorized by the home network and thus applicable when a mobile 4771 node is roaming."; 4772 } 4773 leaf premption-capability { 4774 type enumeration { 4775 enum enabled { 4776 value 0; 4777 description "enabled"; 4778 } 4779 enum disabled { 4780 value 1; 4781 description "disabled"; 4782 } 4783 enum reserved1 { 4784 value 2; 4785 description "reserved1"; 4786 } 4787 enum reserved2 { 4788 value 3; 4789 description "reserved2"; 4790 } 4791 } 4792 mandatory true; 4793 description 4794 "This is a 2-bit unsigned integer 4795 value. It defines whether a service data flow can get resources 4796 that were already assigned to another service data flow with a 4797 lower priority level. The following values are defined: 4799 Enabled (0): This value indicates that the service data flow is 4800 allowed to get resources that were already assigned to another 4801 IP data flow with a lower priority level. 4803 Disabled (1): This value indicates that the service data flow 4804 is not allowed to get resources that were already assigned to 4805 another IP data flow with a lower priority level. The values 4806 (2) and (3) are reserved."; 4807 } 4808 leaf premption-vulnerability { 4809 type enumeration { 4810 enum enabled { 4811 value 0; 4812 description "enabled"; 4813 } 4814 enum disabled { 4815 value 1; 4816 description "disabled"; 4817 } 4818 enum reserved1 { 4819 value 2; 4820 description "reserved1"; 4821 } 4822 enum reserved2 { 4823 value 3; 4824 description "reserved2"; 4825 } 4826 } 4827 mandatory true; 4828 description 4829 "This is a 2-bit unsigned integer 4830 value. It defines whether a service data flow can lose the 4831 resources assigned to it in order to admit a service data flow 4832 with a higher priority level. The following values are defined: 4834 Enabled (0): This value indicates that the resources assigned 4835 to the IP data flow can be preempted and allocated to a service 4836 data flow with a higher priority level. 4838 Disabled (1): This value indicates that the resources assigned 4839 to the IP data flow shall not be preempted and allocated to a 4840 service data flow with a higher priority level. The values (2) 4841 and (3) are reserved."; 4842 } 4843 description "Allocation-Retention-Priority Value"; 4844 } 4846 typedef Aggregate-Max-DL-Bit-Rate-Value { 4847 type uint32; 4848 description 4849 "This is a 32-bit unsigned integer that 4850 indicates the aggregate maximum downlink bit rate that is 4851 requested/allocated for downlink IP flows. The measurement units 4852 for Aggregate-Max-DL-Bit-Rate are bits per second."; 4854 } 4856 typedef Aggregate-Max-UL-Bit-Rate-Value { 4857 type uint32; 4858 description 4859 "This is a 32-bit unsigned integer that 4860 indicates the aggregate maximum downlink bit rate that is 4861 requested/allocated for downlink IP flows. The measurement units 4862 for Aggregate-Max-DL-Bit-Rate are bits per second."; 4863 } 4865 typedef Guaranteed-DL-Bit-Rate-Value { 4866 type uint32; 4867 description 4868 "This is a 32-bit unsigned integer that 4869 indicates the guaranteed bandwidth in bits per second for downlink 4870 IP flows. The measurement units for Guaranteed-DL-Bit-Rate are 4871 bits per second."; 4872 } 4874 typedef Guaranteed-UL-Bit-Rate-Value { 4875 type uint32; 4876 description 4877 "This is a 32-bit unsigned integer that 4878 indicates the guaranteed bandwidth in bits per second for uplink 4879 IP flows. The measurement units for Guaranteed-UL-Bit-Rate are 4880 bits per second."; 4881 } 4883 grouping QoS-Vendor-Specific-Attribute-Value-Base { 4884 leaf vendorid { 4885 type uint32; 4886 mandatory true; 4887 description 4888 "The Vendor ID is the SMI (Structure of Management 4889 Information) Network Management Private Enterprise Code of the 4890 IANA-maintained 'Private Enterprise Numbers' registry [SMI]."; 4891 reference 4892 "'PRIVATE ENTERPRISE NUMBERS', SMI Network Management 4893 Private Enterprise Codes, April 2014, 4894 "; 4895 } 4896 leaf subtype { 4897 type uint8; 4898 mandatory true; 4899 description 4900 "An 8-bit field indicating the type of vendor-specific 4901 information carried in the option. The namespace for this sub- 4902 type is managed by the vendor identified by the Vendor ID field."; 4903 } 4904 description 4905 "QoS Vendor-Specific Attribute."; 4906 } 4908 //NOTE - We do NOT add the Status Codes or other changes in PMIP in this module 4910 //Primary Structures (groupings) 4911 grouping qosattribute { 4912 leaf attributetype { 4913 type identityref { 4914 base qos-attribute-type; 4915 } 4916 mandatory true; 4917 description "the attribute type"; 4918 } 4920 //All of the sub-types by constraint 4921 choice attribute-choice { 4922 case per-mn-agg-max-dl-case { 4923 when "../attributetype = 'Per-MN-Agg-Max-DL-Bit-Rate-type'"; 4924 leaf per-mn-agg-max-dl { 4925 type qos-pmip:Per-MN-Agg-Max-DL-Bit-Rate-Value; 4926 description "Per-MN-Agg-Max-DL-Bit-Rate Value"; 4927 } 4928 description "Per-MN-Agg-Max-DL-Bit-Rate Case"; 4929 } 4930 case per-mn-agg-max-ul-case { 4931 when "../attributetype = 'Per-MN-Agg-Max-UL-Bit-Rate-type'"; 4932 leaf per-mn-agg-max-ul { 4933 type qos-pmip:Per-MN-Agg-Max-UL-Bit-Rate-Value; 4934 description "Per-MN-Agg-Max-UL-Bit-Rate Value"; 4935 } 4936 description "Per-MN-Agg-Max-UL-Bit-Rate Case"; 4937 } 4938 case per-session-agg-max-dl-case { 4939 when "../attributetype = 'Per-Session-Agg-Max-DL-Bit-Rate-type'"; 4940 container per-session-agg-max-dl { 4941 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 4942 description "Per-Session-Agg-Max-Bit-Rate Value"; 4943 } 4944 description "Per-Session-Agg-Max-Bit-Rate Case"; 4945 } 4946 case per-session-agg-max-ul-case { 4947 when "../attributetype = 'Per-Session-Agg-Max-UL-Bit-Rate-type'"; 4948 container per-session-agg-max-ul { 4949 uses qos-pmip:Per-Session-Agg-Max-Bit-Rate-Value; 4950 description "Per-Session-Agg-Max-Bit-Rate Value"; 4951 } 4952 description "Per-Session-Agg-Max-Bit-Rate Case"; 4953 } 4954 case allocation-retention-priority-case { 4955 when "../attributetype = 'Allocation-Retention-Priority-type'"; 4956 uses qos-pmip:Allocation-Retention-Priority-Value; 4957 description "Allocation-Retention-Priority Case"; 4958 } 4959 case agg-max-dl-case { 4960 when "../attributetype = 'Aggregate-Max-DL-Bit-Rate-type'"; 4961 leaf agg-max-dl { 4962 type qos-pmip:Aggregate-Max-DL-Bit-Rate-Value; 4963 description "Aggregate-Max-DL-Bit-Rate Value"; 4964 } 4965 description "Aggregate-Max-DL-Bit-Rate Case"; 4966 } 4967 case agg-max-ul-case { 4968 when "../attributetype = 'Aggregate-Max-UL-Bit-Rate-type'"; 4969 leaf agg-max-ul { 4970 type qos-pmip:Aggregate-Max-UL-Bit-Rate-Value; 4971 description "Aggregate-Max-UL-Bit-Rate Value"; 4972 } 4973 description "Aggregate-Max-UL-Bit-Rate Case"; 4974 } 4975 case gbr-dl-case { 4976 when "../attributetype = 'Guaranteed-DL-Bit-Rate-type'"; 4977 leaf gbr-dl { 4978 type qos-pmip:Guaranteed-DL-Bit-Rate-Value; 4979 description "Guaranteed-DL-Bit-Rate Value"; 4980 } 4981 description "Guaranteed-DL-Bit-Rate Case"; 4982 } 4983 case gbr-ul-case { 4984 when "../attributetype = 'Guaranteed-UL-Bit-Rate-type'"; 4985 leaf gbr-ul { 4986 type qos-pmip:Guaranteed-UL-Bit-Rate-Value; 4987 description "Guaranteed-UL-Bit-Rate Value"; 4988 } 4989 description "Guaranteed-UL-Bit-Rate Case"; 4990 } 4991 case traffic-selector-case { 4992 when "../attributetype = 'QoS-Traffic-Selector-type'"; 4993 container traffic-selector { 4994 uses traffic-selectors:traffic-selector; 4995 description "traffic selector"; 4996 } 4997 description "traffic selector Case"; 4999 } 5000 description "Attribute Value"; 5001 } 5002 description "PMIP QoS Attribute"; 5003 } 5005 grouping qosoption { 5006 leaf srid { 5007 type sr-id; 5008 mandatory true; 5009 description "Service Request Identifier"; 5010 } 5011 leaf trafficclass { 5012 type traffic-class; 5013 mandatory true; 5014 description "Traffic Class"; 5015 } 5016 leaf operationcode { 5017 type operational-code; 5018 mandatory true; 5019 description "Operation Code"; 5020 } 5021 list attributes { 5022 unique "attributetype"; 5023 uses qosattribute; 5024 min-elements 1; 5025 description "Attributes"; 5026 } 5027 description "PMIP QoS Option"; 5028 } 5029 } 5030 5032 A.2.3. Traffic Selectors YANG Model 5034 This module defines traffic selector types commonly used in Proxy 5035 Mobile IP (PMIP). 5037 This module references [RFC6991]. 5039 file "ietf-traffic-selector-types@2016-01-14.yang" 5040 module ietf-traffic-selector-types { 5041 yang-version 1; 5043 namespace 5044 "urn:ietf:params:xml:ns:yang:ietf-traffic-selector-types"; 5046 prefix "traffic-selectors"; 5047 import ietf-inet-types { 5048 prefix inet; 5049 revision-date 2013-07-15; 5050 } 5052 organization "IETF Distributed Mobility Management (DMM) 5053 Working Group"; 5055 contact 5056 "WG Web: 5057 WG List: 5059 WG Chair: Dapeng Liu 5060 5062 WG Chair: Jouni Korhonen 5063 5065 Editor: Satoru Matsushima 5066 5068 Editor: Lyle Bertz 5069 "; 5071 description 5072 "This module contains a collection of YANG definitions for 5073 traffic selectors for flow bindings. 5075 Copyright (c) 2016 IETF Trust and the persons identified as the 5076 document authors. All rights reserved. 5078 This document is subject to BCP 78 and the IETF Trust's Legal 5079 Provisions Relating to IETF Documents 5080 (http://trustee.ietf.org/license-info) in effect on the date of 5081 publication of this document. Please review these documents 5082 carefully, as they describe your rights and restrictions with 5083 respect to this document. Code Components extracted from this 5084 document must include Simplified BSD License text as described 5085 in Section 4.e of the Trust Legal Provisions and are provided 5086 without warranty as described in the Simplified BSD License."; 5088 revision 2016-01-14 { 5089 description "Updated for IETF-PACKET-FIELDS module alignment"; 5090 reference 5091 "draft-ietf-netmod-acl-model-06"; 5092 } 5094 revision 2016-01-12 { 5095 description "Initial revision"; 5096 reference 5097 "RFC 6088: Traffic Selectors for Flow Bindings"; 5098 } 5100 // Identities 5101 identity traffic-selector-format { 5102 description "The base type for Traffic-Selector Formats"; 5103 } 5105 identity ipv4-binary-selector-format { 5106 base traffic-selector-format; 5107 description 5108 "IPv4 Binary Traffic Selector Format"; 5109 } 5111 identity ipv6-binary-selector-format { 5112 base traffic-selector-format; 5113 description 5114 "IPv6 Binary Traffic Selector Format"; 5115 } 5117 // Type definitions and groupings 5118 typedef ipsec-spi { 5119 type uint32; 5120 description "This type defines the first 32-bit IPsec Security Parameter 5121 Index (SPI) value on data packets sent from a corresponding 5122 node to the mobile node as seen by the home agent. This field 5123 is defined in [RFC4303]."; 5124 reference 5125 "RFC 4303: IP Encapsulating Security Payload (ESP)"; 5126 } 5128 grouping traffic-selector-base { 5129 description "A grouping of the commen leaves between the v4 and v6 Traffic Selectors"; 5130 container ipsec-spi-range { 5131 presence "Enables setting ipsec spi range"; 5132 description 5133 "Inclusive range representing IPSec Security Parameter Indices to be used. 5134 When only start-spi is present, it represents a single spi."; 5135 leaf start-spi { 5136 type ipsec-spi; 5137 mandatory true; 5138 description 5139 "This field identifies the first 32-bit IPsec SPI value, from the 5140 range of SPI values to be matched, on data packets sent from a 5141 corresponding node to the mobile node as seen by the home agent. 5142 This field is defined in [RFC4303]."; 5144 } 5145 leaf end-spi { 5146 type ipsec-spi; 5147 must ". >= ../start-spi" { 5148 error-message 5149 "The end-spi must be greater than or equal to start-spi"; 5150 } 5151 description 5152 "If more than one contiguous SPI value needs to be matched, then 5153 this field can be used to indicate the end value of a range 5154 starting from the value of the Start SPI field. This field 5155 MUST NOT be included unless the Start SPI field is included 5156 and has a value less than or equal to this field. 5158 When this field is included, the receiver will match all of the 5159 SPI values between fields start-spi and end-spi, 5160 inclusive of start-spi and end-spi."; 5161 } 5162 } 5163 container source-port-range { 5164 presence "Enables setting source port range"; 5165 description 5166 "Inclusive range representing source ports to be used. 5167 When only start-port is present, it represents a single port."; 5168 leaf start-port { 5169 type inet:port-number; 5170 mandatory true; 5171 description 5172 "This field identifies the first 16-bit source port number, from 5173 the range of port numbers to be matched, on data packets sent from 5174 a corresponding node to the mobile node as seen by the home agent. 5175 This is from the range of port numbers defined by IANA 5176 (http://www.iana.org)."; 5177 } 5178 leaf end-port { 5179 type inet:port-number; 5180 must ". >= ../start-port" { 5181 error-message 5182 "The end-port must be greater than or equal to start-port"; 5183 } 5184 description 5185 "If more than one contiguous source port number needs to be 5186 matched, then this field can be used to indicate the end value of 5187 a range starting from the value of the Start Port field. 5188 This field MUST NOT be included unless the Start Port field 5189 is included and has a value less than or equal to this field. 5191 When this field is included, the receiver will match 5193 all of the port numbers between fields start-port and 5194 end-port, inclusive of start-port and end-port."; 5195 } 5196 } 5197 container destination-port-range { 5198 presence "Enables setting destination port range"; 5199 description 5200 "Inclusive range representing destination ports to be used. When 5201 only start-port is present, it represents a single port."; 5202 leaf start-port { 5203 type inet:port-number; 5204 mandatory true; 5205 description 5206 "This field identifies the first 16-bit destination port number, 5207 from the range of port numbers to be matched, on data packets sent 5208 from a corresponding node to the mobile node as seen by the home 5209 agent."; 5210 } 5211 leaf end-port { 5212 type inet:port-number; 5213 must ". >= ../start-port" { 5214 error-message 5215 "The end-port must be greater than or equal to start-port"; 5216 } 5217 description 5218 "If more than one contiguous destination port number needs to be 5219 matched, then this field can be used to indicate the end value of 5220 a range starting from the value of the Start Destination Port 5221 field. This field MUST NOT be included unless the Start 5222 Port field is included and has a value less than or equal to this 5223 field. 5225 When this field is included, the receiver will match all of the 5226 port numbers between fields start-port and end-port, inclusive of 5227 start-port and end-port."; 5228 } 5229 } 5230 } 5232 grouping ipv4-binary-traffic-selector { 5233 container source-address-range-v4 { 5234 presence "Enables setting source IPv4 address range"; 5235 description 5236 "Inclusive range representing IPv4 addresses to be used. When 5237 only start-address is present, it represents a single address."; 5238 leaf start-address { 5239 type inet:ipv4-address; 5240 mandatory true; 5241 description 5242 "This field identifies the first source address, from the range of 5243 32-bit IPv4 addresses to be matched, on data packets sent from a 5244 corresponding node to the mobile node as seen by the home agent. 5245 In other words, this is one of the addresses of the correspondent 5246 node."; 5247 } 5248 leaf end-address { 5249 type inet:ipv4-address; 5250 description 5251 "If more than one contiguous source address needs to be matched, 5252 then this field can be used to indicate the end value of a range 5253 starting from the value of the Start Address field. This 5254 field MUST NOT be included unless the Start Address field 5255 is included. When this field is included, the receiver will match 5256 all of the addresses between fields start-address and 5257 end-address, inclusive of start-address and end-address."; 5258 } 5259 } 5260 container destination-address-range-v4 { 5261 presence "Enables setting destination IPv4 address range"; 5262 description 5263 "Inclusive range representing IPv4 addresses to be used. When 5264 only start-address is present, it represents a single address."; 5265 leaf start-address { 5266 type inet:ipv4-address; 5267 mandatory true; 5268 description 5269 "This field identifies the first destination address, from the 5270 range of 32-bit IPv4 addresses to be matched, on data packets sent 5271 from a corresponding node to the mobile node as seen by the home 5272 agent. In other words, this is one of the registered home 5273 addresses of the mobile node."; 5274 } 5275 leaf end-address { 5276 type inet:ipv4-address; 5277 description 5278 "If more than one contiguous destination address needs to be 5279 matched, then this field can be used to indicate the end value of 5280 a range starting from the value of the Start Destination Address 5281 field. This field MUST NOT be included unless the Start 5282 Address field is included. When this field is included, the receiver 5283 will match all of the addresses between fields start-address and 5284 end-address, inclusive of start-address and end-address."; 5285 } 5286 } 5287 container ds-range { 5288 presence "Enables setting dscp range"; 5289 description 5290 "Inclusive range representing DiffServ Codepoints to be used. When 5291 only start-ds is present, it represents a single Codepoint."; 5292 leaf start-ds { 5293 type inet:dscp; 5294 mandatory true; 5295 description 5296 "This field identifies the first differential services value, from 5297 the range of differential services values to be matched, on data 5298 packets sent from a corresponding node to the mobile node as seen 5299 by the home agent. Note that this field is called a 'Type of 5300 Service field' in [RFC0791]. [RFC3260] then clarified that the 5301 field has been redefined as a 6-bit DS field with 2 bits reserved, 5302 later claimed by Explicit Congestion Notification (ECN) [RFC3168]. 5303 For the purpose of this specification, the Start DS field is 8 5304 bits long, where the 6 most significant bits indicate the DS field 5305 to be matched and the 2 least significant bits' values MUST be 5306 ignored in any comparison."; 5307 } 5308 leaf end-ds { 5309 type inet:dscp; 5310 must ". >= ../start-ds" { 5311 error-message 5312 "The end-ds must be greater than or equal to start-ds"; 5313 } 5314 description 5315 "If more than one contiguous DS value needs to be matched, then 5316 this field can be used to indicate the end value of a range 5317 starting from the value of the Start DS field. This field MUST 5318 NOT be included unless the Start DS field is included. When this 5319 field is included, it MUST be coded the same way as defined for 5320 start-ds. When this field is included, the receiver will match all of 5321 the values between fields start-ds and end-ds, inclusive of start-ds 5322 and end-ds."; 5323 } 5324 } 5325 container protocol-range { 5326 presence "Enables setting protocol range"; 5327 description 5328 "Inclusive range representing IP protocol(s) to be used. When 5329 only start-protocol is present, it represents a single protocol."; 5330 leaf start-protocol { 5331 type uint8; 5332 mandatory true; 5333 description 5334 "This field identifies the first 8-bit protocol value, from the 5335 range of protocol values to be matched, on data packets sent from 5336 a corresponding node to the mobile node as seen by the home agent."; 5338 } 5339 leaf end-protocol { 5340 type uint8; 5341 must ". >= ../start-protocol" { 5342 error-message 5343 "The end-protocol must be greater than or equal to start-protocol"; 5344 } 5345 description 5346 "If more than one contiguous protocol value needs to be matched, 5347 then this field can be used to indicate the end value of a range 5348 starting from the value of the Start Protocol field. This field 5349 MUST NOT be included unless the Start Protocol field is included. 5350 When this field is included, the receiver will match all of the 5351 values between fields start-protocol and end-protocol, inclusive 5352 of start-protocol and end-protocol."; 5353 } 5354 } 5355 description "ipv4 binary traffic selector"; 5356 } 5358 grouping ipv6-binary-traffic-selector { 5359 container source-address-range-v6 { 5360 presence "Enables setting source IPv6 address range"; 5361 description 5362 "Inclusive range representing IPv6 addresses to be used. When 5363 only start-address is present, it represents a single address."; 5364 leaf start-address { 5365 type inet:ipv6-address; 5366 mandatory true; 5367 description 5368 "This field identifies the first source address, from the range of 5369 128-bit IPv6 addresses to be matched, on data packets sent from a 5370 corresponding node to the mobile node as seen by the home agent. 5371 In other words, this is one of the addresses of the correspondent 5372 node."; 5373 } 5374 leaf end-address { 5375 type inet:ipv6-address; 5376 description 5377 "If more than one contiguous source address needs to be matched, 5378 then this field can be used to indicate the end value of a range 5379 starting from the value of the Start Address field. This 5380 field MUST NOT be included unless the Start Address field is included. 5381 When this field is included, the receiver will match all of the addresses 5382 between fields start-address and end-address, inclusive of start-address 5383 and end-address ."; 5384 } 5385 } 5386 container destination-address-range-v6 { 5387 presence "Enables setting destination IPv6 address range"; 5388 description 5389 "Inclusive range representing IPv6 addresses to be used. When 5390 only start-address is present, it represents a single address."; 5391 leaf start-address { 5392 type inet:ipv6-address; 5393 mandatory true; 5394 description 5395 "This field identifies the first destination address, from the 5396 range of 128-bit IPv6 addresses to be matched, on data packets 5397 sent from a corresponding node to the mobile node as seen by the 5398 home agent. In other words, this is one of the registered home 5399 addresses of the mobile node."; 5400 } 5401 leaf end-address { 5402 type inet:ipv6-address; 5403 description 5404 "If more than one contiguous destination address needs to be 5405 matched, then this field can be used to indicate the end value of 5406 a range starting from the value of the Start Address field. This 5407 field MUST NOT be included unless the Start Address field is included. 5408 When this field is included, the receiver will match all of the 5409 addresses between fields start-address and end-address, inclusive of 5410 start-address and end-address."; 5411 } 5412 } 5413 container flow-label-range { 5414 presence "Enables setting Flow Label range"; 5415 description 5416 "Inclusive range representing IPv4 addresses to be used. When 5417 only start-flow-label is present, it represents a single flow label."; 5418 leaf start-flow-label { 5419 type inet:ipv6-flow-label; 5420 description 5421 "This field identifies the first flow label value, from the range 5422 of flow label values to be matched, on data packets sent from a 5423 corresponding node to the mobile node as seen by the home agent. 5424 According to [RFC2460], the flow label is 24 bits long. For the 5425 purpose of this specification, the sender of this option MUST 5426 prefix the flow label value with 8 bits of '0' before inserting it 5427 in the start-flow-label field. The receiver SHOULD ignore the 5428 first 8 bits of this field before using it in comparisons with 5429 flow labels in packets."; 5430 } 5431 leaf end-flow-label { 5432 type inet:ipv6-flow-label; 5433 must ". >= ../start-flow-label" { 5434 error-message 5435 "The end-flow-lable must be greater than or equal to start-flow-label"; 5436 } 5437 description 5438 "If more than one contiguous flow label value needs to be matched, 5439 then this field can be used to indicate the end value of a range 5440 starting from the value of the Start Flow Label field. This field 5441 MUST NOT be included unless the Start Flow Label field is 5442 included. When this field is included, the receiver will match 5443 all of the flow label values between fields start-flow-label 5444 and end-flow-label, inclusive of start-flow-label and end-flow-label. 5445 When this field is included, it MUST be coded the same way as defined 5446 for end-flow-label."; 5447 } 5448 } 5449 container traffic-class-range { 5450 presence "Enables setting the traffic class range"; 5451 description 5452 "Inclusive range representing IPv4 addresses to be used. When 5453 only start-traffic-class is present, it represents a single traffic class."; 5454 leaf start-traffic-class { 5455 type inet:dscp; 5456 description 5457 "This field identifies the first traffic class value, from the 5458 range of traffic class values to be matched, on data packets sent 5459 from a corresponding node to the mobile node as seen by the home 5460 agent. This field is equivalent to the Start DS field in the IPv4 5461 traffic selector in Figure 1. As per RFC 3260, the field is 5462 defined as a 6-bit DS field with 2 bits reserved, later claimed by 5463 Explicit Congestion Notification (ECN) RFC 3168. For the purpose 5464 of this specification, the start-traffic-class field is 8 bits long, where 5465 the 6 most significant bits indicate the DS field to be matched 5466 and the 2 least significant bits' values MUST be ignored in any 5467 comparison."; 5468 reference 5469 "RFC 3260: New Terminology and Clarifications for Diffserv 5470 RFC 3168: The Addition of Explicit Congestion Notification (ECN) to IP"; 5471 } 5472 leaf end-traffic-class { 5473 type inet:dscp; 5474 must ". >= ../start-traffic-class" { 5475 error-message 5476 "The end-traffic-class must be greater than or equal to start-traffic-class"; 5477 } 5478 description 5479 "If more than one contiguous TC value needs to be matched, then 5480 this field can be used to indicate the end value of a range 5481 starting from the value of the Start TC field. This field MUST 5482 NOT be included unless the Start TC field is included. When this 5483 field is included, it MUST be coded the same way as defined for 5484 start-traffic-class. When this field is included, the receiver 5485 will match all of the values between fields start-traffic-class 5486 and end-traffic-class, inclusive of start-traffic-class and 5487 end-traffic-class."; 5488 } 5489 } 5490 container next-header-range { 5491 presence "Enables setting Next Header range"; 5492 description 5493 "Inclusive range representing Next Headers to be used. When 5494 only start-next-header is present, it represents a single Next Header."; 5495 leaf start-next-header { 5496 type uint8; 5497 description 5498 "This field identifies the first 8-bit next header value, from the 5499 range of next header values to be matched, on data packets sent 5500 from a corresponding node to the mobile node as seen by the home 5501 agent."; 5502 } 5503 leaf end-next-header { 5504 type uint8; 5505 must ". >= ../start-next-header" { 5506 error-message 5507 "The end-next-header must be greater than or equal to start-next-header"; 5508 } 5509 description 5510 "If more than one contiguous next header value needs to be matched, 5511 then this field can be used to indicate the end value of a range 5512 starting from the value of the Start NH field. This field MUST 5513 NOT be included unless the Start next header field is included. 5514 When this field is included, the receiver will match all of the 5515 values between fields start-next-header and end-next-header, 5516 inclusive of start-next-header and end-next-header."; 5517 } 5518 } 5519 description "ipv6 binary traffic selector"; 5520 } 5522 grouping traffic-selector { 5523 leaf ts-format { 5524 type identityref { 5525 base traffic-selector-format; 5526 } 5527 description "Traffic Selector Format"; 5528 } 5529 uses traffic-selector-base { 5530 when "boolean(../ts-format/text() = 'ipv6-binary-selector-format') | boolean(../ts-format/text() = 'ipv4-binary-selector-format')"; 5531 } 5532 uses ipv4-binary-traffic-selector { 5533 when "boolean(../ts-format/text() = 'ipv4-binary-selector-format')"; 5534 } 5535 uses ipv6-binary-traffic-selector { 5536 when "boolean(../ts-format/text() = 'ipv6-binary-selector-format')"; 5537 } 5538 description 5539 "The traffic selector includes the parameters used to match 5540 packets for a specific flow binding."; 5541 reference 5542 "RFC 6089: Flow Bindings in Mobile IPv6 and Network Mobility (NEMO) Basic Support"; 5543 } 5545 grouping ts-list { 5546 list selectors { 5547 key index; 5548 leaf index { 5549 type uint64; 5550 description "index"; 5551 } 5552 uses traffic-selector; 5553 description "traffic selectors"; 5554 } 5555 description "traffic selector list"; 5556 } 5557 } 5558 5560 A.2.4. FPC 3GPP Mobility YANG Model 5562 This module defines the base protocol elements of 3GPP mobility. 5564 This module references [RFC6991], the fpc-base, fpc-agent, ietf- 5565 traffic-selector and pmip-qos modules defined in this document. 5567 file "ietf-dmm-threegpp@2016-08-03.yang" 5568 module ietf-dmm-threegpp { 5569 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-threegpp"; 5570 prefix threegpp; 5572 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 5573 import ietf-dmm-fpc { prefix fpc; revision-date 2016-08-03; } 5574 import ietf-traffic-selector-types { prefix traffic-selectors; revision-date 2016-01-14; } 5575 import ietf-pmip-qos { prefix pmipqos; revision-date 2016-02-10; } 5577 organization "IETF Distributed Mobility Management (DMM) 5578 Working Group"; 5580 contact 5581 "WG Web: 5582 WG List: 5584 WG Chair: Dapeng Liu 5585 5587 WG Chair: Jouni Korhonen 5588 5590 Editor: Satoru Matsushima 5591 5593 Editor: Lyle Bertz 5594 "; 5596 description 5597 "This module contains YANG definition for 3GPP Related Mobility 5598 Structures. 5600 Copyright (c) 2016 IETF Trust and the persons identified as the 5601 document authors. All rights reserved. 5603 This document is subject to BCP 78 and the IETF Trust's Legal 5604 Provisions Relating to IETF Documents 5605 (http://trustee.ietf.org/license-info) in effect on the date of 5606 publication of this document. Please review these documents 5607 carefully, as they describe your rights and restrictions with 5608 respect to this document. Code Components extracted from this 5609 document must include Simplified BSD License text as described 5610 in Section 4.e of the Trust Legal Provisions and are provided 5611 without warranty as described in the Simplified BSD License."; 5613 revision 2016-08-03 { 5614 description "Initial"; 5615 reference "draft-ietf-dmm-fpc-cpdp-04"; 5616 } 5618 identity threeGPP-access-type { 5619 base "fpc:fpc-access-type"; 5620 description "3GPP Access Type"; 5621 } 5623 // Profile Type 5624 identity threeGPP-mobility { 5625 base "fpc:fpc-mobility-profile-type"; 5626 description "3GPP Mobility Profile"; 5627 } 5629 // Tunnel Types 5630 identity threeGPP-tunnel-type { 5631 description "3GPP Base Tunnel Type"; 5632 } 5634 identity gtpv1 { 5635 base "threegpp:threeGPP-tunnel-type"; 5636 description "GTP version 1 Tunnel"; 5637 } 5639 identity gtpv2 { 5640 base "threegpp:threeGPP-tunnel-type"; 5641 description "GTP version 2 Tunnel"; 5642 } 5644 grouping teid-value { 5645 description "TEID value holder"; 5646 leaf tunnel-identifier { 5647 type uint32; 5648 description "Tunnel Endpoint IDentifier (TEID)"; 5649 } 5650 } 5652 grouping threeGPP-tunnel { 5653 description "3GPP Tunnel Definition"; 5654 leaf tunnel-type { 5655 type identityref { 5656 base "threegpp:threeGPP-tunnel-type"; 5657 } 5658 description "3GPP Tunnel Subtype"; 5659 } 5660 uses threegpp:teid-value; 5661 } 5663 // QoS Profile 5664 identity threeGPP-qos-profile-parameters { 5665 base "fpc:fpc-qos-type"; 5666 description "3GPP QoS Profile"; 5667 } 5669 typedef fpc-qos-class-identifier { 5670 type uint8 { 5671 range "1..9"; 5672 } 5673 description "QoS Class Identifier (QCI)"; 5675 } 5677 grouping threeGPP-QoS { 5678 description "3GPP QoS Attributes"; 5679 leaf qci { 5680 type fpc-qos-class-identifier; 5681 description "QCI"; 5682 } 5683 leaf gbr { 5684 type uint32; 5685 description "Guaranteed Bit Rate"; 5686 } 5687 leaf mbr { 5688 type uint32; 5689 description "Maximum Bit Rate"; 5690 } 5691 leaf apn-ambr { 5692 type uint32; 5693 description "Access Point Name Aggregate Max Bit Rate"; 5694 } 5695 leaf ue-ambr { 5696 type uint32; 5697 description "User Equipment Aggregate Max Bit Rate"; 5698 } 5699 container arp { 5700 uses pmipqos:Allocation-Retention-Priority-Value; 5701 description "Allocation Retention Priority"; 5702 } 5703 } 5705 typedef ebi-type { 5706 type uint8 { 5707 range "0..15"; 5708 } 5709 description "EUTRAN Bearere Identifier (EBI) Type"; 5710 } 5712 // From 3GPP TS 24.008 version 13.5.0 Release 13 5713 typedef component-type-enum { 5714 type enumeration { 5715 enum ipv4RemoteAddress { 5716 value 16; 5717 description "IPv4 Remote Address"; 5718 } 5719 enum ipv4LocalAddress { 5720 value 17; 5721 description "IPv4 Local Address"; 5722 } 5723 enum ipv6RemoteAddress { 5724 value 32; 5725 description "IPv6 Remote Address"; 5726 } 5727 enum ipv6RemoteAddressPrefix { 5728 value 33; 5729 description "IPv6 Remote Address Prefix"; 5730 } 5731 enum ipv6LocalAddressPrefix { 5732 value 35; 5733 description "IPv6 Local Address Prefix"; 5734 } 5735 enum protocolNextHeader { 5736 value 48; 5737 description "Protocol (IPv4) or NextHeader (IPv6) value"; 5738 } 5739 enum localPort { 5740 value 64; 5741 description "Local Port"; 5742 } 5743 enum localPortRange { 5744 value 65; 5745 description "Local Port Range"; 5746 } 5747 enum reomotePort { 5748 value 80; 5749 description "Remote Port"; 5750 } 5751 enum remotePortRange { 5752 value 81; 5753 description "Remote Port Range"; 5754 } 5755 enum secParamIndex { 5756 value 96; 5757 description "Security Parameter Index (SPI)"; 5758 } 5759 enum tosTraffClass { 5760 value 112; 5761 description "TOS Traffic Class"; 5762 } 5763 enum flowLabel { 5764 value 128; 5765 description "Flow Label"; 5766 } 5767 } 5768 description "TFT Component Type"; 5769 } 5770 typedef packet-filter-direction { 5771 type enumeration { 5772 enum preRel7Tft { 5773 value 0; 5774 description "Pre-Release 7 TFT"; 5775 } 5776 enum uplink { 5777 value 1; 5778 description "uplink"; 5779 } 5780 enum downlink { 5781 value 2; 5782 description "downlink"; 5783 } 5784 enum bidirectional { 5785 value 3; 5786 description "bi-direcitonal"; 5787 } 5788 } 5789 description "Packet Filter Direction"; 5790 } 5792 typedef component-type-id { 5793 type uint8 { 5794 range "16 | 17 | 32 | 33 | 35 | 48 | 64 | 65 | 80 | 81 | 96 | 112 | 128"; 5795 } 5796 description "Specifies the Component Type"; 5797 } 5799 grouping packet-filter { 5800 leaf direction { 5801 type threegpp:packet-filter-direction; 5802 description "Filter Direction"; 5803 } 5804 leaf identifier { 5805 type uint8 { 5806 range "1..15"; 5807 } 5808 description "Filter Identifier"; 5809 } 5810 leaf evaluation-precedence { 5811 type uint8; 5812 description "Evaluation Precedence"; 5813 } 5814 list contents { 5815 key component-type-identifier; 5816 description "Filter Contents"; 5817 leaf component-type-identifier { 5818 type threegpp:component-type-id; 5819 description "Component Type"; 5820 } 5821 choice value { 5822 case ipv4-local { 5823 leaf ipv4-local { 5824 type inet:ipv4-address; 5825 description "IPv4 Local Address"; 5826 } 5827 } 5828 case ipv6-prefix-local { 5829 leaf ipv6-prefix-local { 5830 type inet:ipv6-prefix; 5831 description "IPv6 Local Prefix"; 5832 } 5833 } 5834 case ipv4-ipv6-remote { 5835 leaf ipv4-ipv6-remote { 5836 type inet:ip-address; 5837 description "Ipv4 Ipv6 remote address"; 5838 } 5839 } 5840 case ipv6-prefix-remote { 5841 leaf ipv6-prefix-remote { 5842 type inet:ipv6-prefix; 5843 description "IPv6 Remote Prefix"; 5844 } 5845 } 5846 case next-header { 5847 leaf next-header { 5848 type uint8; 5849 description "Next Header"; 5850 } 5851 } 5852 case local-port { 5853 leaf local-port { 5854 type inet:port-number; 5855 description "Local Port"; 5856 } 5857 } 5858 case local-port-range { 5859 leaf local-port-lo { 5860 type inet:port-number; 5861 description "Local Port Min Value"; 5862 } 5863 leaf local-port-hi { 5864 type inet:port-number; 5865 description "Local Port Max Value"; 5867 } 5868 } 5869 case remote-port { 5870 leaf remote-port { 5871 type inet:port-number; 5872 description "Remote Port"; 5873 } 5874 } 5875 case remote-port-range { 5876 leaf remote-port-lo { 5877 type inet:port-number; 5878 description "Remote Por Min Value"; 5879 } 5880 leaf remote-port-hi { 5881 type inet:port-number; 5882 description "Remote Port Max Value"; 5883 } 5884 } 5885 case ipsec-index { 5886 leaf ipsec-index { 5887 type traffic-selectors:ipsec-spi; 5888 description "IPSec Index"; 5889 } 5890 } 5891 case traffic-class { 5892 leaf traffic-class { 5893 type inet:dscp; 5894 description "Traffic Class"; 5895 } 5896 } 5897 case traffic-class-range { 5898 leaf traffic-class-lo { 5899 type inet:dscp; 5900 description "Traffic Class Min Value"; 5901 } 5902 leaf traffic-class-hi { 5903 type inet:dscp; 5904 description "Traffic Class Max Value"; 5905 } 5906 } 5907 case flow-label-type { 5908 leaf-list flow-label { 5909 type inet:ipv6-flow-label; 5910 description "Flow Label"; 5911 } 5912 } 5913 description "Component Value"; 5914 } 5916 } 5917 description "Packet Filter"; 5918 } 5920 grouping tft { 5921 list packet-filters { 5922 key identifier; 5923 uses threegpp:packet-filter; 5924 description "List of Packet Filters"; 5925 } 5926 description "Packet Filter List"; 5927 } 5929 typedef imsi-type { 5930 type uint64; 5931 description "International Mobile Subscriber Identity (IMSI) Value Type"; 5932 } 5934 typedef threegpp-instr { 5935 type bits { 5936 bit assign-ip { 5937 position 0; 5938 description "Assign IP Address/Prefix"; 5939 } 5940 bit assign-fteid-ip { 5941 position 1; 5942 description "Assign FTEID-IP"; 5943 } 5944 bit assign-fteid-teid { 5945 position 2; 5946 description "Assign FTEID-TEID"; 5947 } 5948 bit session { 5949 position 3; 5950 description "Commands apply to the Session Level"; 5951 } 5952 bit uplink { 5953 position 4; 5954 description "Commands apply to the Uplink"; 5955 } 5956 bit downlink { 5957 position 5; 5958 description "Commands apply to the Downlink"; 5959 } 5960 bit assign-dpn { 5961 position 6; 5962 description "Assign DPN"; 5963 } 5965 } 5966 description "Instruction Set for 3GPP R11"; 5967 } 5969 // Descriptors update - goes to Entities, Configure and Configure Bundles 5970 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:descriptors/fpc:descriptor-value" { 5971 case threegpp-tft { 5972 uses threegpp:tft; 5973 description "3GPP TFT"; 5974 } 5975 description "3GPP TFT Descriptor"; 5976 } 5978 // Contexts Update - Contexts / UL / mob-profile 5979 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 5980 case threegpp-tunnel { 5981 uses threegpp:threeGPP-tunnel; 5982 uses threegpp:tft; 5983 description "3GPP TFT and Tunnel Information"; 5984 } 5985 description "Context UL Tunnel"; 5986 } 5987 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 5988 case threegpp-tunnel { 5989 uses threegpp:threeGPP-tunnel; 5990 uses threegpp:tft; 5991 description "3GPP TFT and Tunnel Information"; 5992 } 5993 description "Create Context UL Tunnel"; 5994 } 5995 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 5996 case threegpp-tunnel { 5997 uses threegpp:threeGPP-tunnel; 5998 uses threegpp:tft; 5999 description "3GPP TFT and Tunnel Information"; 6000 } 6001 description "Bundles Create Context UL Tunnel"; 6002 } 6003 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6004 case threegpp-tunnel { 6005 uses threegpp:threeGPP-tunnel; 6006 uses threegpp:tft; 6007 description "3GPP TFT and Tunnel Information"; 6008 } 6009 description "Create Context UL Tunnel Response"; 6010 } 6011 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6012 case threegpp-tunnel { 6013 uses threegpp:threeGPP-tunnel; 6014 uses threegpp:tft; 6015 description "3GPP TFT and Tunnel Information"; 6016 } 6017 description "Bundles Create Context UL Tunnel Response"; 6018 } 6020 // Contexts Update - Contexts / DL / mob-profile 6021 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6022 case threegpp-tunnel { 6023 uses threegpp:threeGPP-tunnel; 6024 uses threegpp:tft; 6025 description "3GPP TFT and Tunnel Information"; 6026 } 6027 description "Context DL Tunnel"; 6028 } 6029 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6030 case threegpp-tunnel { 6031 uses threegpp:threeGPP-tunnel; 6032 uses threegpp:tft; 6033 description "3GPP TFT and Tunnel Information"; 6034 } 6035 description "Bundles Create Context DL Tunnel"; 6036 } 6037 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6038 case threegpp-tunnel { 6039 uses threegpp:threeGPP-tunnel; 6040 uses threegpp:tft; 6041 description "3GPP TFT and Tunnel Information"; 6042 } 6043 description "Bundles Create Context DL Tunnel"; 6044 } 6045 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6046 case threegpp-tunnel { 6047 uses threegpp:threeGPP-tunnel; 6048 uses threegpp:tft; 6049 description "3GPP TFT and Tunnel Information"; 6050 } 6051 description "Create Context DL Tunnel Response"; 6052 } 6053 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6054 case threegpp-tunnel { 6055 uses threegpp:threeGPP-tunnel; 6056 uses threegpp:tft; 6057 description "3GPP TFT and Tunnel Information"; 6058 } 6059 description "Bundles Create Context DL Tunnel Response"; 6060 } 6061 // Contexts Update - Contexts / dpns / mobility-tunnel-parameters 6062 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6063 case threegpp-tunnel { 6064 uses threegpp:threeGPP-tunnel; 6065 uses threegpp:tft; 6066 description "3GPP TFT and Tunnel Information"; 6067 } 6068 description "Context 3GPP TFT and Tunnel Information"; 6069 } 6070 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6071 case threegpp-tunnel { 6072 uses threegpp:threeGPP-tunnel; 6073 uses threegpp:tft; 6074 description "3GPP TFT and Tunnel Information"; 6075 } 6076 description "Configure 3GPP TFT and Tunnel Information"; 6077 } 6078 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6079 case threegpp-tunnel { 6080 uses threegpp:threeGPP-tunnel; 6081 uses threegpp:tft; 6082 description "3GPP TFT and Tunnel Information"; 6083 } 6084 description "Configure Bundles 3GPP TFT and Tunnel Information"; 6085 } 6086 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6087 case threegpp-tunnel { 6088 uses threegpp:threeGPP-tunnel; 6089 uses threegpp:tft; 6090 description "3GPP TFT and Tunnel Information"; 6091 } 6092 description "Configure 3GPP TFT and Tunnel Information Response"; 6093 } 6094 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6095 case threegpp-tunnel { 6096 uses threegpp:threeGPP-tunnel; 6097 uses threegpp:tft; 6098 description "3GPP TFT and Tunnel Information"; 6099 } 6100 description "Configure Bundles 3GPP TFT and Tunnel Information Response"; 6101 } 6103 // QoS Updates - Context / UL / qosprofile 6104 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6105 case threegpp-qos { 6106 uses threegpp:threeGPP-QoS; 6107 description "3GPP QoS Values"; 6109 } 6110 description "Context UL 3GPP QoS Values"; 6111 } 6112 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6113 case threegpp-qos { 6114 uses threegpp:threeGPP-QoS; 6115 description "3GPP QoS Values"; 6116 } 6117 description "Configure Context UL 3GPP QoS Values"; 6118 } 6119 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6120 case threegpp-qos { 6121 uses threegpp:threeGPP-QoS; 6122 description "3GPP QoS Values"; 6123 } 6124 description "Configure Bundles Context UL 3GPP QoS Values"; 6125 } 6126 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6127 case threegpp-qos { 6128 uses threegpp:threeGPP-QoS; 6129 description "3GPP QoS Values"; 6130 } 6131 description "Configure Context UL 3GPP QoS Values Response"; 6132 } 6133 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6134 case threegpp-qos { 6135 uses threegpp:threeGPP-QoS; 6136 description "3GPP QoS Values"; 6137 } 6138 description "Configure Bundles Context UL 3GPP QoS Values Response"; 6139 } 6141 // QoS Updates - Context / DL / QoS Profile 6142 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6143 case threegpp-qos { 6144 uses threegpp:threeGPP-QoS; 6145 description "3GPP QoS Values"; 6146 } 6147 description "Context DL 3GPP QoS Values"; 6148 } 6149 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6150 case threegpp-qos { 6151 uses threegpp:threeGPP-QoS; 6152 description "3GPP QoS Values"; 6153 } 6154 description "Configure Context DL 3GPP QoS Values"; 6155 } 6156 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6157 case threegpp-qos { 6158 uses threegpp:threeGPP-QoS; 6159 description "3GPP QoS Values"; 6160 } 6161 description "Configure Bundles Context DL 3GPP QoS Values"; 6162 } 6163 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6164 case threegpp-qos { 6165 uses threegpp:threeGPP-QoS; 6166 description "3GPP QoS Values"; 6167 } 6168 description "Configure Context DL 3GPP QoS Values Response"; 6169 } 6170 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6171 case threegpp-qos { 6172 uses threegpp:threeGPP-QoS; 6173 description "3GPP QoS Values"; 6174 } 6175 description "Configure Bundles Context DL 3GPP QoS Values Response"; 6176 } 6178 grouping threegpp-properties { 6179 leaf imsi { 6180 type threegpp:imsi-type; 6181 description "IMSI"; 6182 } 6183 leaf ebi { 6184 type threegpp:ebi-type; 6185 description "EUTRAN Bearere Identifier (EBI)"; 6186 } 6187 leaf lbi { 6188 type threegpp:ebi-type; 6189 description "Linked Bearer Identifier (LBI)"; 6190 } 6191 description "3GPP Mobility Session Properties"; 6192 } 6194 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts" { 6195 uses threegpp:threegpp-properties; 6196 description "3GPP Mobility Session Properties"; 6197 } 6198 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts" { 6199 uses threegpp:threegpp-properties; 6200 description "3GPP Mobility Session Properties"; 6201 } 6202 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts" { 6203 uses threegpp:threegpp-properties; 6204 description "3GPP Mobility Session Properties"; 6206 } 6207 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:create-or-update-success/fpc:contexts" { 6208 uses threegpp:threegpp-properties; 6209 description "3GPP Mobility Session Properties"; 6210 } 6211 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:result-type/fpc:create-or-update-success/fpc:contexts" { 6212 uses threegpp:threegpp-properties; 6213 description "3GPP Mobility Session Properties"; 6214 } 6216 grouping threegpp-commandset { 6217 leaf instr-3gpp-mob { 6218 type threegpp:threegpp-instr; 6219 description "3GPP Specific Command Set"; 6220 } 6221 description "3GPP Instructions"; 6222 } 6224 augment "/fpc:configure/fpc:input/fpc:instructions/fpc:instr-type" { 6225 case instr-3gpp-mob { 6226 uses threegpp:threegpp-commandset; 6227 description "3GPP Instructions"; 6228 } 6229 description "Configure 3GPP Instructions"; 6230 } 6231 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:instructions/fpc:instr-type" { 6232 case instr-3gpp-mob { 6233 uses threegpp:threegpp-commandset; 6234 description "3GPP Instructions"; 6235 } 6236 description "Configure 3GPP Context Instructions"; 6237 } 6238 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:instructions/fpc:instr-type" { 6239 case instr-3gpp-mob { 6240 uses threegpp:threegpp-commandset; 6241 description "3GPP Instructions"; 6242 } 6243 description "Configure 3GPP Context Instructions Response"; 6244 } 6246 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:instructions/fpc:instr-type" { 6247 case instr-3gpp-mob { 6248 uses threegpp:threegpp-commandset; 6249 description "3GPP Instructions"; 6250 } 6251 description "Configure Bundles 3GPP Instructions"; 6252 } 6253 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:instructions/fpc:instr-type" { 6254 case instr-3gpp-mob { 6255 uses threegpp:threegpp-commandset; 6256 description "3GPP Instructions"; 6257 } 6258 description "Configure Bundles 3GPP Context Instructions"; 6259 } 6260 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:instructions/fpc:instr-type" { 6261 case instr-3gpp-mob { 6262 uses threegpp:threegpp-commandset; 6263 description "3GPP Instructions"; 6264 } 6265 description "Configure Bundles 3GPP Context Instructions Response"; 6266 } 6267 } 6268 6270 A.2.5. FPC / PMIP Integration YANG Model 6272 This module defines the integration between FPC and PMIP models. 6274 This module references the fpc-base, fpc-agent, pmip-qos and traffic- 6275 selector-types module defined in this document. 6277 file "ietf-dmm-fpc-pmip@2016-01-19.yang" 6278 module ietf-dmm-fpc-pmip { 6279 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-pmip"; 6280 prefix fpc-pmip; 6282 import ietf-dmm-fpc { prefix fpc; } 6283 import ietf-pmip-qos { prefix qos-pmip; } 6284 import ietf-traffic-selector-types { prefix traffic-selectors; } 6286 organization "IETF Distributed Mobility Management (DMM) 6287 Working Group"; 6289 contact 6290 "WG Web: 6291 WG List: 6293 WG Chair: Dapeng Liu 6294 6296 WG Chair: Jouni Korhonen 6297 6299 Editor: Satoru Matsushima 6300 6302 Editor: Lyle Bertz 6303 "; 6305 description 6306 "This module contains YANG definition for Forwarding Policy 6307 Configuration Protocol (FPCP). 6309 Copyright (c) 2016 IETF Trust and the persons identified as the 6310 document authors. All rights reserved. 6312 This document is subject to BCP 78 and the IETF Trust's Legal 6313 Provisions Relating to IETF Documents 6314 (http://trustee.ietf.org/license-info) in effect on the date of 6315 publication of this document. Please review these documents 6316 carefully, as they describe your rights and restrictions with 6317 respect to this document. Code Components extracted from this 6318 document must include Simplified BSD License text as described 6319 in Section 4.e of the Trust Legal Provisions and are provided 6320 without warranty as described in the Simplified BSD License."; 6322 revision 2016-01-19 { 6323 description "Changes based on -01 version of FPCP draft."; 6324 reference "draft-ietf-dmm-fpc-cpdp-01"; 6325 } 6327 identity ietf-pmip-access-type { 6328 base "fpc:fpc-access-type"; 6329 description "PMIP Access"; 6330 } 6332 identity fpcp-qos-index-pmip { 6333 base "fpc:fpc-qos-type"; 6334 description "PMIP QoS"; 6335 } 6336 identity traffic-selector-mip6 { 6337 base "fpc:fpc-descriptor-type"; 6338 description "MIP6 Traffic Selector"; 6339 } 6340 identity ietf-pmip { 6341 base "fpc:fpc-mobility-profile-type"; 6342 description "PMIP Mobility"; 6343 } 6345 identity pmip-tunnel-type { 6346 description "PMIP Tunnel Type"; 6347 } 6348 identity grev1 { 6349 base "fpc-pmip:pmip-tunnel-type"; 6350 description "GRE v1"; 6351 } 6352 identity grev2 { 6353 base "fpc-pmip:pmip-tunnel-type"; 6354 description "GRE v2"; 6355 } 6356 identity ipinip { 6357 base "fpc-pmip:pmip-tunnel-type"; 6358 description "IP in IP"; 6359 } 6360 grouping pmip-mobility { 6361 leaf type { 6362 type identityref { 6363 base "fpc-pmip:pmip-tunnel-type"; 6364 } 6365 description "PMIP Mobility"; 6366 } 6367 choice value { 6368 case gre { 6369 leaf key { 6370 type uint32; 6371 description "GRE_KEY"; 6372 } 6373 description "GRE Value"; 6374 } 6375 description "PMIP Mobility value"; 6376 } 6377 description "PMIP Mobility Value"; 6378 } 6380 typedef pmip-instr { 6381 type bits { 6382 bit assign-ip { 6383 position 0; 6384 description "Assign IP"; 6385 } 6386 bit assign-dpn { 6387 position 1; 6388 description "Assign DPN"; 6389 } 6390 bit session { 6391 position 2; 6392 description "Session Level"; 6393 } 6394 bit uplink { 6395 position 3; 6396 description "Uplink"; 6397 } 6398 bit downlink { 6399 position 4; 6400 description "Downlink"; 6401 } 6402 } 6403 description "Instruction Set for PMIP"; 6404 } 6406 // Descriptors update - goes to Entities, Configure and Configure Bundles 6407 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:descriptors/fpc:descriptor-value" { 6408 case pmip-selector { 6409 uses traffic-selectors:traffic-selector; 6410 description "PMIP Selector"; 6411 } 6412 description "Policy Descriptor"; 6413 } 6415 // Contexts Update - Contexts / UL / mob-profile, Contexts / DL / mob-profile and Contexts / dpns / mobility-tunnel-parameters 6416 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6417 case pmip-tunnel { 6418 uses fpc-pmip:pmip-mobility; 6419 uses traffic-selectors:traffic-selector; 6420 description "PMIP Tunnel Information"; 6421 } 6422 description "Context UL Mobility"; 6423 } 6424 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6425 case pmip-tunnel { 6426 uses fpc-pmip:pmip-mobility; 6427 uses traffic-selectors:traffic-selector; 6428 description "PMIP Tunnel Information"; 6429 } 6430 description "CONF Context UL Mobility"; 6431 } 6432 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:ul/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6433 case pmip-tunnel { 6434 uses fpc-pmip:pmip-mobility; 6435 uses traffic-selectors:traffic-selector; 6436 description "PMIP Tunnel Information"; 6437 } 6438 description "CONF_BUNDLES Context UL Mobility"; 6439 } 6441 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6442 case pmip-tunnel { 6443 uses fpc-pmip:pmip-mobility; 6444 uses traffic-selectors:traffic-selector; 6445 description "PMIP Tunnel Information"; 6447 } 6448 description "Context DL Mobility"; 6449 } 6450 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6451 case pmip-tunnel { 6452 uses fpc-pmip:pmip-mobility; 6453 uses traffic-selectors:traffic-selector; 6454 description "PMIP Tunnel Information"; 6455 } 6456 description "CONF Context DL Mobility"; 6457 } 6458 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6459 case pmip-tunnel { 6460 uses fpc-pmip:pmip-mobility; 6461 uses traffic-selectors:traffic-selector; 6462 description "PMIP Tunnel Information"; 6463 } 6464 description "CONF_BUNDLES Context DL Mobility"; 6465 } 6467 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6468 case pmip-tunnel { 6469 uses fpc-pmip:pmip-mobility; 6470 uses traffic-selectors:traffic-selector; 6471 description "PMIP Tunnel Information"; 6472 } 6473 description "Context DPN Mobility"; 6474 } 6475 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6476 case pmip-tunnel { 6477 uses fpc-pmip:pmip-mobility; 6478 uses traffic-selectors:traffic-selector; 6479 description "PMIP Tunnel Information"; 6480 } 6481 description "CONF Context DPN Mobility"; 6482 } 6483 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dpns/fpc:mobility-tunnel-parameters/fpc:profile-parameters" { 6484 case pmip-tunnel { 6485 uses fpc-pmip:pmip-mobility; 6486 uses traffic-selectors:traffic-selector; 6487 description "PMIP Tunnel Information"; 6488 } 6489 description "CONF_BUNDLES Context DPN Mobility"; 6490 } 6492 // QoS Updates - Context / UL / qosprofile, Context / DL / QoS Profile 6493 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6494 case qos-pmip { 6495 uses qos-pmip:qosattribute; 6496 description "PMIP QoS Information"; 6497 } 6498 description "Context UL QoS"; 6499 } 6500 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6501 case qos-pmip { 6502 uses qos-pmip:qosattribute; 6503 description "PMIP QoS Information"; 6504 } 6505 description "CONF Context UL QoS"; 6506 } 6507 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:ul/fpc:qos-profile-parameters/fpc:value" { 6508 case qos-pmip { 6509 uses qos-pmip:qosattribute; 6510 description "PMIP QoS Information"; 6511 } 6512 description "CONF_BUNDLES Context UL QoS"; 6513 } 6515 augment "/fpc:tenants/fpc:tenant/fpc:fpc-mobility/fpc:contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6516 case qos-pmip { 6517 uses qos-pmip:qosattribute; 6518 description "PMIP QoS Information"; 6519 } 6520 description "Context DL QoS"; 6521 } 6522 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6523 case qos-pmip { 6524 uses qos-pmip:qosattribute; 6525 description "PMIP QoS Information"; 6526 } 6527 description "CONF Context DL QoS"; 6528 } 6529 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:dl/fpc:qos-profile-parameters/fpc:value" { 6530 case qos-pmip { 6531 uses qos-pmip:qosattribute; 6532 description "PMIP QoS Information"; 6533 } 6534 description "CONF_BUNDLES Context DL QoS"; 6535 } 6537 grouping pmip-commandset { 6538 leaf instr-pmip { 6539 type fpc-pmip:pmip-instr; 6540 description "PMIP Instructions"; 6541 } 6542 description "PMIP Commandset"; 6544 } 6546 // Instructions Update - OP BODY, Context, Port 6547 augment "/fpc:configure/fpc:input/fpc:instructions/fpc:instr-type" { 6548 case pmip-instr { 6549 uses fpc-pmip:pmip-commandset; 6550 description "PMIP Commandset"; 6551 } 6552 description "CONF Instructions"; 6553 } 6554 augment "/fpc:configure/fpc:input/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:instructions/fpc:instr-type" { 6555 case pmip-instr { 6556 uses fpc-pmip:pmip-commandset; 6557 description "PMIP Commandset"; 6558 } 6559 description "CONF Context Instructions"; 6560 } 6561 augment "/fpc:configure/fpc:output/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:instructions/fpc:instr-type" { 6562 case pmip-instr { 6563 uses fpc-pmip:pmip-commandset; 6564 description "PMIP Commandset"; 6565 } 6566 description "CONF Result Context Instructions"; 6567 } 6569 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:instructions/fpc:instr-type" { 6570 case pmip-instr { 6571 uses fpc-pmip:pmip-commandset; 6572 description "PMIP Commandset"; 6573 } 6574 description "CONF_BUNDLES Instructions"; 6575 } 6576 augment "/fpc:configure-bundles/fpc:input/fpc:bundles/fpc:op_body/fpc:create_or_update/fpc:contexts/fpc:instructions/fpc:instr-type" { 6577 case pmip-instr { 6578 uses fpc-pmip:pmip-commandset; 6579 description "PMIP Commandset"; 6580 } 6581 description "CONF_BUNDLES Context Instructions"; 6582 } 6583 augment "/fpc:configure-bundles/fpc:output/fpc:bundles/fpc:result-type/fpc:create-or-update-success/fpc:contexts/fpc:instructions/fpc:instr-type" { 6584 case pmip-instr { 6585 uses fpc-pmip:pmip-commandset; 6586 description "PMIP Commandset"; 6587 } 6588 description "CONF_BUNDLES Result Context Instructions"; 6589 } 6590 } 6591 6592 A.2.6. FPC Policy Extension YANG Model 6594 This module defines extensions to FPC policy structures. 6596 This module references [RFC6991], the fpc-base and fpcagent module 6597 defined in this document. 6599 file "ietf-dmm-fpc-policyext@2016-08-03.yang" 6600 module ietf-dmm-fpc-policyext { 6601 namespace "urn:ietf:params:xml:ns:yang:ietf-dmm-fpc-policyext"; 6602 prefix fpcpolicyext; 6604 import ietf-dmm-fpc { prefix fpc; revision-date 2016-08-03; } 6605 import ietf-inet-types { prefix inet; revision-date 2013-07-15; } 6607 organization "IETF Distributed Mobility Management (DMM) 6608 Working Group"; 6610 contact 6611 "WG Web: 6612 WG List: 6614 WG Chair: Dapeng Liu 6615 6617 WG Chair: Jouni Korhonen 6618 6620 Editor: Satoru Matsushima 6621 6623 Editor: Lyle Bertz 6624 "; 6626 description 6627 "This module contains YANG definition for Forwarding Policy 6628 Configuration Protocol (FPCP) common Policy Action and 6629 Descriptor extensions. 6631 Copyright (c) 2016 IETF Trust and the persons identified as the 6632 document authors. All rights reserved. 6634 This document is subject to BCP 78 and the IETF Trust's Legal 6635 Provisions Relating to IETF Documents 6636 (http://trustee.ietf.org/license-info) in effect on the date of 6637 publication of this document. Please review these documents 6638 carefully, as they describe your rights and restrictions with 6639 respect to this document. Code Components extracted from this 6640 document must include Simplified BSD License text as described 6641 in Section 4.e of the Trust Legal Provisions and are provided 6642 without warranty as described in the Simplified BSD License."; 6644 revision 2016-08-03 { 6645 description "Changes based on -04 version of FPC draft."; 6646 reference "draft-ietf-dmm-fpc-cpdp-04"; 6647 } 6649 identity service-function { 6650 base "fpc:fpc-descriptor-type"; 6651 description "Base Identifier for Service Functions."; 6652 } 6653 identity napt-service { 6654 base "service-function"; 6655 description "NAPT Service"; 6656 } 6657 grouping simple-nat { 6658 leaf outbound-nat-address { 6659 type inet:ip-address; 6660 description "Outbound NAT Address"; 6661 } 6662 description "Simple NAT value"; 6663 } 6665 identity nat-service { 6666 base "service-function"; 6667 description "NAT Service"; 6668 } 6669 grouping simple-napt { 6670 leaf source-port { 6671 type inet:port-number; 6672 description "Source Port"; 6673 } 6674 leaf outbound-napt-address { 6675 type inet:ip-address; 6676 description "Outbound NAPT Address"; 6677 } 6678 leaf destination-port { 6679 type inet:port-number; 6680 description "Destination Port"; 6681 } 6682 description "Simple NAPT Configuration"; 6683 } 6685 identity copy-forward { 6686 base "fpc:fpc-descriptor-type"; 6687 description "Copies a packet then forwards to a specific destination"; 6689 } 6690 grouping copy-forward { 6691 container destination { 6692 choice value { 6693 case port-ref { 6694 leaf port-ref { 6695 type fpc:fpc-port-id; 6696 description "Port"; 6697 } 6698 description "Port Forward Case"; 6699 } 6700 case context-ref { 6701 leaf context-ref { 6702 type fpc:fpc-context-id; 6703 description "Context"; 6704 } 6705 description "Context Forward Case"; 6706 } 6707 description "Copy Forward Value"; 6708 } 6709 description "destination"; 6710 } 6711 description "Copy Then Forward to Port/Context Action"; 6712 } 6714 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:actions/fpc:action-value" { 6715 case simple-nat { 6716 uses fpcpolicyext:simple-nat; 6717 description "Simple NAT value"; 6718 } 6719 case simple-napt { 6720 uses fpcpolicyext:simple-napt; 6721 description "Simple NAPT Value"; 6722 } 6723 case copy-forward { 6724 uses fpcpolicyext:copy-forward; 6725 description "Copy Forward Value"; 6726 } 6727 description "Policy Actions Augmentations"; 6728 } 6730 grouping prefix-traffic-descriptor { 6731 leaf destination-ip { 6732 type inet:ip-prefix; 6733 description "Rule of destination IP"; 6734 } 6735 leaf source-ip { 6736 type inet:ip-prefix; 6737 description "Rule of source IP"; 6738 } 6739 description 6740 "Traffic descriptor group collects parameters to 6741 identify target traffic flow. It represents 6742 source/destination as IP prefixes"; 6743 } 6745 augment "/fpc:tenants/fpc:tenant/fpc:fpc-policy/fpc:descriptors/fpc:descriptor-value" { 6746 case prefix-descriptor { 6747 uses fpcpolicyext:prefix-traffic-descriptor; 6748 description "traffic descriptor value"; 6749 } 6750 description "Descriptor Augments"; 6751 } 6752 } 6753 6755 A.3. FPC nformation Model YANG Tree 6757 This section only shows the YANG tree for the information model. 6759 module: ietf-dmm-fpc 6760 module: ietf-dmm-fpc 6761 +--rw tenants 6762 | +--rw tenant* [tenant-id] 6763 | +--rw tenant-id fpc:fpc-identity 6764 | +--rw fpc-policy 6765 | | +--rw policy-groups* [policy-group-id] 6766 | | | +--rw policy-group-id fpc:fpc-policy-group-id 6767 | | | +--rw policies* fpc:fpc-policy-id 6768 | | +--rw policies* [policy-id] 6769 | | | +--rw policy-id fpc:fpc-policy-id 6770 | | | +--rw rules* [order] 6771 | | | +--rw order uint32 6772 | | | +--rw descriptors* [descriptor-id] 6773 | | | | +--rw descriptor-id fpc:fpc-identity 6774 | | | | +--rw direction? fpc:fpc-direction 6775 | | | +--rw actions* [action-id] 6776 | | | +--rw order? uint32 6777 | | | +--rw action-id fpc:fpc-action-id-type 6778 | | +--rw descriptors* [descriptor-id] 6779 | | | +--rw descriptor-id fpc:fpc-identity 6780 | | | +--rw descriptor-type identityref 6781 | | | +--rw (descriptor-value)? 6782 | | | +--:(all-traffic) 6783 | | | +--rw all-traffic? empty 6784 | | +--rw actions* [action-id] 6785 | | +--rw action-id fpc:fpc-action-id-type 6786 | | +--rw action-type identityref 6787 | | +--rw (action-value)? 6788 | | +--:(drop) 6789 | | +--rw drop? empty 6790 | +--ro fpc-mobility 6791 | | +--ro contexts* [context-id] 6792 | | | +--ro context-id fpc:fpc-context-id 6793 | | | +--ro ports* fpc:fpc-port-id 6794 | | | +--ro dpn-group? fpc:fpc-dpn-group-id 6795 | | | +--ro delegating-ip-prefixes* inet:ip-prefix 6796 | | | +--ro ul {fpc:fpc-basic-agent}? 6797 | | | | +--ro tunnel-local-address? inet:ip-address 6798 | | | | +--ro tunnel-remote-address? inet:ip-address 6799 | | | | +--ro mtu-size? uint32 6800 | | | | +--ro mobility-tunnel-parameters 6801 | | | | | +--ro (profile-parameters)? 6802 | | | | | +--:(nothing) 6803 | | | | | +--ro none? empty 6804 | | | | +--ro nexthop 6805 | | | | | +--ro nexthop-type? identityref 6806 | | | | | +--ro (nexthop-value)? 6807 | | | | | +--:(ip) 6808 | | | | | | +--ro ip? inet:ip-address 6809 | | | | | +--:(servicepath) 6810 | | | | | +--ro servicepath? fpc:fpcp-service-path-id 6811 | | | | +--ro qos-profile-parameters 6812 | | | | | +--ro qos-type? identityref 6813 | | | | | +--ro (value)? 6814 | | | | +--ro dpn-parameters 6815 | | | | +--ro vendor-parameters* [vendor-id vendor-type] 6816 | | | | +--ro vendor-id fpc:fpc-identity 6817 | | | | +--ro vendor-type identityref 6818 | | | | +--ro (value)? 6819 | | | | +--:(empty-type) 6820 | | | | +--ro empty-type? empty 6821 | | | +--ro dl {fpc:fpc-basic-agent}? 6822 | | | | +--ro tunnel-local-address? inet:ip-address 6823 | | | | +--ro tunnel-remote-address? inet:ip-address 6824 | | | | +--ro mtu-size? uint32 6825 | | | | +--ro mobility-tunnel-parameters 6826 | | | | | +--ro (profile-parameters)? 6827 | | | | | +--:(nothing) 6828 | | | | | +--ro none? empty 6829 | | | | +--ro nexthop 6830 | | | | | +--ro nexthop-type? identityref 6831 | | | | | +--ro (nexthop-value)? 6832 | | | | | +--:(ip) 6833 | | | | | | +--ro ip? inet:ip-address 6834 | | | | | +--:(servicepath) 6835 | | | | | +--ro servicepath? fpc:fpcp-service-path-id 6836 | | | | +--ro qos-profile-parameters 6837 | | | | | +--ro qos-type? identityref 6838 | | | | | +--ro (value)? 6839 | | | | +--ro dpn-parameters 6840 | | | | +--ro vendor-parameters* [vendor-id vendor-type] 6841 | | | | +--ro vendor-id fpc:fpc-identity 6842 | | | | +--ro vendor-type identityref 6843 | | | | +--ro (value)? 6844 | | | | +--:(empty-type) 6845 | | | | +--ro empty-type? empty 6846 | | | +--ro dpns* [dpn-id direction] {fpc:fpc-multi-dpn}? 6847 | | | | +--ro dpn-id fpc:fpc-dpn-id 6848 | | | | +--ro direction fpc:fpc-direction 6849 | | | | +--ro tunnel-local-address? inet:ip-address 6850 | | | | +--ro tunnel-remote-address? inet:ip-address 6851 | | | | +--ro mtu-size? uint32 6852 | | | | +--ro mobility-tunnel-parameters 6853 | | | | | +--ro (profile-parameters)? 6854 | | | | | +--:(nothing) 6855 | | | | | +--ro none? empty 6856 | | | | +--ro nexthop 6857 | | | | | +--ro nexthop-type? identityref 6858 | | | | | +--ro (nexthop-value)? 6859 | | | | | +--:(ip) 6860 | | | | | | +--ro ip? inet:ip-address 6861 | | | | | +--:(servicepath) 6862 | | | | | +--ro servicepath? fpc:fpcp-service-path-id 6863 | | | | +--ro qos-profile-parameters 6864 | | | | | +--ro qos-type? identityref 6865 | | | | | +--ro (value)? 6866 | | | | +--ro dpn-parameters 6867 | | | | +--ro vendor-parameters* [vendor-id vendor-type] 6868 | | | | +--ro vendor-id fpc:fpc-identity 6869 | | | | +--ro vendor-type identityref 6870 | | | | +--ro (value)? 6871 | | | | +--:(empty-type) 6872 | | | | +--ro empty-type? empty 6873 | | | +--ro parent-context? fpc:fpc-context-id 6874 | | +--ro ports* [port-id] 6875 | | | +--ro port-id fpc:fpc-port-id 6876 | | | +--ro policy-groups* fpc:fpc-policy-group-id 6877 | | +--ro monitors* 6878 | | +--ro monitor-id? fpc:fpc-identity 6879 | | +--ro target? fpc-identity 6880 | | +--ro (event-config-value)? 6881 | | +--:(periodic-config) 6882 | | | +--ro period? uint32 6883 | | +--:(threshold-config) 6884 | | | +--ro lo-thresh? uint32 6885 | | | +--ro hi-thresh? uint32 6886 | | +--:(scheduled-config) 6887 | | | +--ro report-time? uint32 6888 | | +--:(events-config-ident) 6889 | | | +--ro event-identities* identityref 6890 | | +--:(events-config) 6891 | | +--ro event-ids* uint32 6892 | +--rw fpc-topology 6893 | +--rw domains* [domain-id] 6894 | | +--rw domain-id fpc:fpc-domain-id 6895 | | +--rw domain-name? string 6896 | | +--rw domain-type? string 6897 | | +--rw basename? fpc:fpc-identity {fpc:fpc-basename-registry}? 6898 | | +--rw base-state? string {fpc:fpc-basename-registry}? 6899 | | +--rw base-checkpoint? string {fpc:fpc-basename-registry}? 6900 | +--rw dpn-group-peers* [remote-dpn-group-id] {fpc:fpc-basic-agent}? 6901 | | +--rw remote-dpn-group-id fpc:fpc-dpn-group-id 6902 | | +--rw remote-mobility-profile? identityref 6903 | | +--rw remote-data-plane-role? identityref 6904 | | +--rw remote-endpoint-address? inet:ip-address 6905 | | +--rw local-endpoint-address? inet:ip-address 6906 | | +--rw mtu-size? uint32 6907 | +--rw dpn-id? fpc:fpc-dpn-id {fpc:fpc-basic-agent}? 6908 | +--rw control-protocols* identityref {fpc:fpc-basic-agent}? 6909 | +--rw dpn-groups* [dpn-group-id] {fpc:fpc-multi-dpn}? 6910 | | +--rw dpn-group-id fpc:fpc-dpn-group-id 6911 | | +--rw data-plane-role? identityref 6912 | | +--rw access-type? identityref 6913 | | +--rw mobility-profile? identityref 6914 | | +--rw dpn-group-peers* [remote-dpn-group-id] 6915 | | | +--rw remote-dpn-group-id fpc:fpc-dpn-group-id 6916 | | | +--rw remote-mobility-profile? identityref 6917 | | | +--rw remote-data-plane-role? identityref 6918 | | | +--rw remote-endpoint-address? inet:ip-address 6919 | | | +--rw local-endpoint-address? inet:ip-address 6920 | | | +--rw mtu-size? uint32 6921 | | +--rw domains* [domain-id] 6922 | | +--rw domain-id fpc:fpc-domain-id 6923 | | +--rw domain-name? string 6924 | | +--rw domain-type? string 6925 | | +--rw basename? fpc:fpc-identity {fpc:fpc-basename-registry}? 6926 | | +--rw base-state? string {fpc:fpc-basename-registry}? 6927 | | +--rw base-checkpoint? string {fpc:fpc-basename-registry}? 6928 | +--rw dpns* [dpn-id] {fpc:fpc-multi-dpn}? 6929 | +--rw dpn-id fpc:fpc-dpn-id 6930 | +--rw dpn-name? string 6931 | +--rw dpn-groups* fpc:fpc-dpn-group-id 6932 | +--rw node-reference? instance-identifier 6933 +--rw fpc-agent-info 6934 +--rw supported-features* string 6935 +--rw supported-events* [event] 6936 | +--rw event identityref 6937 | +--rw event-id? fpc:event-type-id 6938 +--rw supported-error-types* [error-type] 6939 +--rw error-type identityref 6940 +--rw error-type-id? fpc:error-type-id 6941 rpcs: ... 6943 Figure 28: YANG FPC Agent Tree 6945 Authors' Addresses 6947 Satoru Matsushima 6948 SoftBank 6949 1-9-1,Higashi-Shimbashi,Minato-Ku 6950 Tokyo 105-7322 6951 Japan 6953 Email: satoru.matsushima@g.softbank.co.jp 6955 Lyle Bertz 6956 6220 Sprint Parkway 6957 Overland Park KS, 66251 6958 USA 6960 Email: lyleb551144@gmail.com 6962 Marco Liebsch 6963 NEC Laboratories Europe 6964 NEC Europe Ltd. 6965 Kurfuersten-Anlage 36 6966 D-69115 Heidelberg 6967 Germany 6969 Phone: +49 6221 4342146 6970 Email: liebsch@neclab.eu 6971 Sri Gundavelli 6972 Cisco 6973 170 West Tasman Drive 6974 San Jose, CA 95134 6975 USA 6977 Email: sgundave@cisco.com 6979 Danny Moses 6981 Email: danny.moses@intel.com