idnits 2.17.00 (12 Aug 2021) /tmp/idnits42179/draft-ietf-dime-app-design-guide-14.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (April 1, 2012) is 3701 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Outdated reference: draft-ietf-dime-rfc3588bis has been published as RFC 6733 ** Obsolete normative reference: RFC 3588 (Obsoleted by RFC 6733) == Outdated reference: draft-ietf-dime-mip6-integrated has been published as RFC 5447 == Outdated reference: draft-ietf-dime-qos-attributes has been published as RFC 5777 -- Obsolete informational reference (is this intentional?): RFC 4005 (Obsoleted by RFC 7155) Summary: 1 error (**), 0 flaws (~~), 5 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Diameter Maintenance and Extensions L. Morand, Ed. 3 (DIME) Orange Labs 4 Internet-Draft V. Fajardo 5 Intended status: Informational 6 Expires: October 3, 2012 H. Tschofenig 7 Nokia Siemens Networks 8 April 1, 2012 10 Diameter Applications Design Guidelines 11 draft-ietf-dime-app-design-guide-14 13 Abstract 15 The Diameter Base protocol provides facilities for protocol 16 extensibility enabling to define new Diameter applications or modify 17 existing applications. This document is a companion document to the 18 Diameter Base protocol that further explains and clarifies the rules 19 to extend the Diameter Base protocol. It is meant as a guidelines 20 document and therefore it does not add, remove or change existing 21 rules. 23 Requirements Language 25 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 26 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 27 document are to be interpreted as described in [RFC2119]. 29 Status of this Memo 31 This Internet-Draft is submitted in full conformance with the 32 provisions of BCP 78 and BCP 79. 34 Internet-Drafts are working documents of the Internet Engineering 35 Task Force (IETF). Note that other groups may also distribute 36 working documents as Internet-Drafts. The list of current Internet- 37 Drafts is at http://datatracker.ietf.org/drafts/current/. 39 Internet-Drafts are draft documents valid for a maximum of six months 40 and may be updated, replaced, or obsoleted by other documents at any 41 time. It is inappropriate to use Internet-Drafts as reference 42 material or to cite them other than as "work in progress." 44 This Internet-Draft will expire on October 3, 2012. 46 Copyright Notice 48 Copyright (c) 2012 IETF Trust and the persons identified as the 49 document authors. All rights reserved. 51 This document is subject to BCP 78 and the IETF Trust's Legal 52 Provisions Relating to IETF Documents 53 (http://trustee.ietf.org/license-info) in effect on the date of 54 publication of this document. Please review these documents 55 carefully, as they describe your rights and restrictions with respect 56 to this document. Code Components extracted from this document must 57 include Simplified BSD License text as described in Section 4.e of 58 the Trust Legal Provisions and are provided without warranty as 59 described in the Simplified BSD License. 61 Table of Contents 63 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 64 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 65 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 66 4. Reusing existing Diameter applications . . . . . . . . . . . . 8 67 4.1. Adding a new command . . . . . . . . . . . . . . . . . . . 8 68 4.2. Deleting a command . . . . . . . . . . . . . . . . . . . . 9 69 4.3. Reusing existing commands . . . . . . . . . . . . . . . . 9 70 4.3.1. Adding AVPs to a command . . . . . . . . . . . . . . . 10 71 4.3.2. Deleting AVPs from a Command . . . . . . . . . . . . . 11 72 4.4. Reusing existing AVPs . . . . . . . . . . . . . . . . . . 12 73 4.4.1. Setting of the AVP flags . . . . . . . . . . . . . . . 12 74 4.4.2. Reuse of AVP of type Enumerated . . . . . . . . . . . 12 75 5. Rules for new Applications . . . . . . . . . . . . . . . . . . 13 76 5.1. Use of Application-Id in a Message . . . . . . . . . . . . 13 77 5.2. Application Specific Session State Machine . . . . . . . . 14 78 6. End-to-End Applications Capabilities Exchange . . . . . . . . 15 79 7. Diameter Accounting Support . . . . . . . . . . . . . . . . . 16 80 8. Generic Diameter Extensions . . . . . . . . . . . . . . . . . 18 81 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 82 10. Security Considerations . . . . . . . . . . . . . . . . . . . 21 83 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 22 84 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 23 85 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24 86 13.1. Normative References . . . . . . . . . . . . . . . . . . . 24 87 13.2. Informative References . . . . . . . . . . . . . . . . . . 24 88 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 26 90 1. Introduction 92 The Diameter Base protocol provides facilities to extend the Diameter 93 Base protocol (see Section 1.3 of [I-D.ietf-dime-rfc3588bis]) for 94 supporting new functionalities. In the context of this document, 95 extending Diameter means one of the following: 97 1. Addition of a new functionality to an existing Diameter 98 application without defining a new application. 100 2. Addition of a new functionality to an existing Diameter 101 application that requires the definition of a new application. 103 3. The definition of a new Diameter application to provide a set of 104 functionalities not supporting by existing applications. 106 4. The definition of a new generic functionality that can be reused 107 across different applications. 109 All of these choices are design decisions that can done by any 110 combination of reusing existing or defining new commands, AVPs or AVP 111 values. Protocol designers do, however, not have total freedom when 112 making their design. A number of rules defined in 113 [I-D.ietf-dime-rfc3588bis] place constraints on when an extension 114 demands a new Diameter application to be defined or a new command 115 code to be registered. The objective of this document is the 116 following: 118 o Clarify updated Diameter extensibility rules in the Diameter Base 119 Protocol. 121 o Clarify usage of certain Diameter functionalities that are not 122 explicitly described in the Diameter Base specification. 124 o Discuss design choices and provide guidelines when defining 125 applications. 127 o Present tradeoffs of design choices. 129 2. Terminology 131 This document reuses the terminology used in 132 [I-D.ietf-dime-rfc3588bis]. 134 3. Overview 136 As designed, the Diameter Base protocol can be seen as a two-layer 137 protocol. The lower layer is mainly responsible for managing 138 connections between neighboring peers and for message routing. The 139 upper layer is where the Diameter applications reside. This model is 140 in line with a Diameter node having an application layer and a peer- 141 to-peer delivery layer. The Diameter Base protocol document 142 completely defines the architecture and behavior of the message 143 delivery layer and then provides the framework for designing Diameter 144 applications on the application layer. This framework includes 145 definitions of application sessions and accounting support (see 146 Section 8 and 9 of [I-D.ietf-dime-rfc3588bis]). The remainder of 147 this document also treats a Diameter node as a single instance of a 148 Diameter message delivery layer and one or more Diameter applications 149 using it. 151 The Diameter protocol is designed to be extensible and the principles 152 are descibed in the section 1.3 of [I-D.ietf-dime-rfc3588bis]. 153 Extending Diameter can mean the definition of a new Diameter 154 application and/or the reuse of commands, AVPs and AVP values in any 155 combination for the purpose of inheriting the features of an existing 156 Diameter application. The reuse recommendation is meaningful as most 157 of the requirements defined for a new application are likely already 158 fulfilled by an existing application. 160 However, when reusing existing applications, there is a greater 161 likelihood of ambiguity on how much of the existing application can 162 be enhanced without being distorted too much and therefore requiring 163 the definition of a new application. 165 The impacts of extending existing applications can be categorized as 166 follow: 168 Minor Extension: Enhancing the functional scope of an existing 169 application by the addition of optional features to support. Such 170 enhancement has no backward compatibility issue with the existing 171 application. A typical example would be the definition of a new 172 optional AVP to use in an existing command. In general, this 173 includes everything that is not covered by the next category. The 174 standardization effort will be fairly small. 176 Major Extension: Enhancing the functional scope of an existing 177 application in such a way that this implies backward compatible 178 change to the existing application and then requires the 179 definition of a new Diameter application. A typical example would 180 be the creation of a new command for providing functionality not 181 supported by existing applications. For such extension, a 182 significant specification effort is required and a carefull 183 approach is recommended. 185 The rules outlined in the section 1.3 of [I-D.ietf-dime-rfc3588bis] 186 indicate when an extension requires a new command code to be 187 registered and when new Diameter applications have to be defined. 188 The subsequent sections further explain and clarify the rules to 189 extend the Diameter Base protocol. It is meant as a guidelines 190 document and therefore it does not add, remove or change existing 191 rules. 193 4. Reusing existing Diameter applications 195 When selecting the Diameter Base protocol to support new 196 functionalities, protocol designers are advised to try to re-use as 197 much as possible existing Diameter applications to simplify 198 standardization, implementation and avoid potential interoperability 199 issues. However, existing application needs to be adapted to support 200 new requirements and these modifications can be at the command level 201 and/or at the AVP level. The following sections describe the 202 possible modifications that can be performed on existing applications 203 and their related impacts. 205 4.1. Adding a new command 207 Adding a new command is considered as a major extension and requires 208 a new Diameter application to be defined. Adding a new command to an 209 application means either defining a completely new command or 210 importing the command's CCF syntax specification from another 211 application whereby the new application inherits some or all of the 212 functionality of the application where the command came from. In the 213 former case, the decision to create an new application is 214 straightforward since this is typically a result of adding a new 215 functionality that does not exist yet. For the latter, the decision 216 to create a new application will depend on whether importing the 217 command in a new application is more suitable than simply using the 218 existing application as it is in conjunction with any other 219 application. Therefore, a case by case study of each application 220 requirement should be applied. 222 An illustrative example is the command pair defined in Diameter EAP 223 application [RFC4072] that can be re-used conjointly with any other 224 application (e.g. the Diameter NASREQ application [RFC4005]) as soon 225 as standard EAP-based authentication procedures need to be supported 226 by the implementation. It may therefore not be required to import 227 the command pair in the new defined application. 229 However, in general, it is difficult to come to a hard guideline, and 230 so a case by case study of each application requirement should be 231 applied. Before adding or importing a command, application designers 232 should consider the following: 234 o Can the new functionality be fulfilled by creating a new command 235 independent from any existing command? In this case, the 236 resulting new application and the existing application can work 237 independent of, but cooperating with each other. 239 o Can the existing command be reused without major extensions and 240 therefore without the need for the definition of a new 241 application, e.g. new funtionality introduced by the creation of 242 new optional AVPs. 244 o Care should be taken to avoid a liberal method of importing 245 existing command's CCF syntax specification. This would result in 246 a monolithic and hard to manage applications supporting too many 247 different functionalities and can cause interoperability issues 248 between the different applications. . 250 4.2. Deleting a command 252 Although this process is not typical, removing a command to an 253 application requires a new Diameter application to be defined. this 254 is due to the fact that the reception of the deleted command would 255 systematically result in a protocol error 256 (DIAMETER_COMMAND_UNSUPPORTED). 258 It is unusual to delete an existing command from an application for 259 the sake of deleting it or the functionality it represents. This 260 normally indicates of a flawed design. An exception might be if the 261 intent of the deletion is to create a newer version of the same 262 application which is somehow simpler than the previous version. 264 4.3. Reusing existing commands 266 This section discusses rules in adding and/or deleting AVPs from an 267 existing command of an existing application. The cases described in 268 this section may not necessarily result in the creation of new 269 applications. 271 It is worth to note that the strong recommendation to re-use existing 272 commands in the [RFC3588] was to prevent rapid scarcity of code 273 values available for vendor-specific commands. 274 [I-D.ietf-dime-rfc3588bis] relaxes the policy with respect to the 275 allocation of command codes for vendor-specific uses and enlarges the 276 range of available code values for vendor-specific applications. 277 Therefore, if it is still recommended to re-use as much as possible 278 existing commands, protocol designers can consider more easily the 279 definition of a new command when it is a solution more suitable than 280 twisting existings command use and applications. 282 4.3.1. Adding AVPs to a command 284 Based on the rules in [I-D.ietf-dime-rfc3588bis], AVPs that are added 285 to an existing command can be categorized into: 287 o Mandatory (to understand) AVPs. As defined in 288 [I-D.ietf-dime-rfc3588bis], these are AVPs with the M-bit flag 289 set, which means that a Diameter node receiving are required to 290 understand not only their values but their semantics. Failure to 291 do so will cause an message handling error. This is regardless of 292 whether these AVPs are required or optional as specified by the 293 command's CCF syntax specification. 295 o Optional (to understand) AVPs. As defined in 296 [I-D.ietf-dime-rfc3588bis], these are AVPs with the M-bit flag 297 cleared, which mean that a Diameter node receiving these AVP can 298 simply ignore them if not supported in the process of the received 299 command. 301 The rules are strict in the case where the AVPs to be added are 302 mandatory to understand i.e. with the M-bit set. A mandatory AVP 303 cannot be added to an existing command without defining a new 304 Diameter application, as stated in [I-D.ietf-dime-rfc3588bis]. This 305 falls into the "Major Extensions" category. Despite the clarity of 306 the rule, ambiguity still arises when evaluating whether a new AVP 307 being added should be mandatory to begin with. Here is a list of few 308 common questions that application designers should wonder when trying 309 to decide: 311 o Would it be required for the receiving side to be able to process 312 and understand the AVP and its content? 314 o Would the new AVPs change the state machine of the application? 316 o Would the presence of the new AVP lead to a different number of 317 roundtrips, effectively changing the state machine of the 318 application? 320 o Would the new AVP be used to differentiate between old and new 321 versions of the same application whereby the two versions are not 322 backward compatible? 324 o Would the new AVP have duality in meaning i.e. be used to carry 325 application related information as well as be used to indicate 326 that the message is for a new application? 328 When one of the above questions can be answered in the affirmative 329 then the M-bit has to be set for the new AVP. 331 If application designers are instead contemplating on the use of 332 optional AVPs i.e. with the M-bit cleared, then the following are 333 some of the pitfalls that should be avoided: 335 o Use of optional AVPs with intersecting meaning. One AVP has 336 partially the same usage and meaning as another AVP. The presence 337 of both can lead to confusion. 339 o An optional AVPs with dual purpose, i.e. to carry applications 340 data as well as to indicate support for one or more features. 341 This has a tendency to introduce interpretation issues. 343 o Adding one or more optional AVPs and indicating (usually within 344 descriptive text for the command) that at least one of them has to 345 be present in the command. This essentially circumventing the 346 ABNF and is equivalent to adding a mandatory AVPs to the command. 348 These practices generally result in interoperability issues and 349 should be avoided as much as possible. 351 4.3.2. Deleting AVPs from a Command 353 When deleting an AVP from a command, the following cases need to be 354 differentiated: 356 o Deleting an AVP that is indicated as { AVP } in the command's CCF 357 syntax specification, whatever the setting of the M-bit set. This 358 means the definition of a new command. In this case, a new 359 command code and subsequently a new Diameter application have to 360 be specified. 362 o Deleting an AVP with M-bit set that is indicated as [ AVP ] in the 363 command's CCF syntax specification. No new command code has to be 364 specified but the definition of a new Diameter application is 365 required. 367 o Deleting an AVP with the M-bit cleared that is indicated as [ AVP 368 ] in the command's CCF syntax specification. In this case, the 369 AVP can be deleted without consequences. 371 If possible application designers should attempt the reuse the 372 command's CCF syntax specification without modification and simply 373 ignore (but not delete) any optional AVP that will not be used. This 374 is to maintain compatibility with existing applications that will not 375 know about the new functionality as well as maintain the integrity of 376 existing dictionaries. 378 4.4. Reusing existing AVPs 380 This section discusses rules in reusing existing AVP when reusing an 381 existing command or defining a new command in a new application. 383 4.4.1. Setting of the AVP flags 385 When reusing AVPs in a new application, the AVP flag setting, such as 386 the mandatory flag ('M'-bit), has to be re-evaluated for a new 387 Diameter application and, if necessary, even for every command within 388 the application. In general, for AVPs defined outside of the base 389 protocol, its mandatory characteristics are tied to its role within 390 an application and command. 392 All other AVP flags shall remain unchanged 394 4.4.2. Reuse of AVP of type Enumerated 396 When modifying the set of values supported by an AVP of type 397 Enumerated, this means defining a new AVP. Modifying the set of 398 Enumerated values includes adding a value or deprecating the use of a 399 value defined initially for the AVP. Defining a new AVP will avoid 400 interoperability issues. 402 5. Rules for new Applications 404 The general recommendation for Diameter extensibility is to reuse 405 commands, AVPs and AVP values as much as possible. However, some of 406 the extensibility rules described in the previous section also apply 407 to scenarios where a designer is trying to define a completely new 408 Diameter application. 410 This section discusses the case where new applications have 411 requirements that cannot be filled by existing applications and would 412 require definition of completely new commands, AVPs and/or AVP 413 values. Typically, there is little ambiguity about the decision to 414 create these types of applications. Some examples are the interfaces 415 defined for the IP Multimedia Subsystem of 3GPP, i.e. Cx/Dx 416 ([TS29.228] and [TS29.229]), Sh ([TS29.328] and [TS29.329]) etc. 418 Application designers should also follow the theme of Diameter 419 extensibility which in this case means to import existing AVPs and 420 AVP values for any newly defined commands. In certain cases where 421 accounting will be used, the models described in Section 7 should 422 also be considered. Though some decisions may be clear, designers 423 should also consider certain aspects of defining a new application. 424 Some of these aspects are described in following sections. 426 5.1. Use of Application-Id in a Message 428 When designing new applications, designers should specify that the 429 application ID carried in all session level messages must be the 430 application ID of the application using those messages. This 431 includes the session level messages defined in base protocol, i.e., 432 RAR/RAA, STR/STA, ASR/ASA and possibly ACR/ACA in the coupled 433 accounting model, see Section 7. Existing specifications may not 434 adhere to this rule for historical or other reasons. However, this 435 scheme should be followed to avoid possible routing problems for 436 these messages. 438 In general, when a new application has been allocated with a new 439 application id and it also reuses existing commands with or without 440 modifications (Sec 4.1), it must use the newly allocated application 441 id in the header and in all relevant application id AVPs (Auth- 442 Application-Id or Acct-Application-Id) present in the commands 443 message body. 445 Additionally, application designs using 446 Vendor-Specific-Application-Id AVP should not use the Vendor-Id AVP 447 to further dissect or differentiate the vendor-specification 448 application id. Diameter routing is not based on the Vendor-Id. As 449 such, the Vendor-ID should not be used as an additional input for 450 routing or delivery of messages. In general, the Vendor-Id AVP is an 451 informational AVP only and kept for backward compatibility reasons. 453 5.2. Application Specific Session State Machine 455 Section 8 of [I-D.ietf-dime-rfc3588bis] provides session state 456 machines for authentication, authorization and accounting (AAA) 457 services. When a new application is being defined that cannot 458 clearly be categorized into any of these services it is recommended 459 that the application itself define its own session state machine. 460 The existing session state machines defined by 461 [I-D.ietf-dime-rfc3588bis] is not intended for general use beyond AAA 462 services, therefore any behavior not covered by that category would 463 not fit well. Support for server initiated request is a clear 464 example where an application specific session state machine would be 465 needed, for example, the Rw interface for ITU-T push model ( 466 cf.[Q.3303.3]). 468 6. End-to-End Applications Capabilities Exchange 470 It is also possible that applications can use optional AVPs to 471 exchange application specific capabilities and features. These AVPs 472 are exchanged on an end-to-end basis. Examples of this can be found 473 in [I-D.ietf-dime-mip6-integrated] and 474 [I-D.ietf-dime-qos-attributes]. 476 The end-to-end capabilities AVPs can aid in the following cases: 478 o Formalizing the way new functionality is added to existing 479 applications by announcing support for it. 481 o Applications that do not understand these AVP can discard it upon 482 receipt. In such case, senders of the AVP can also safely assume 483 the receiving end-point does not support any functionality carried 484 by the AVP if it is not present in subsequent responses. 486 o Useful in cases where deployment choices are offered and the 487 generic design can be made available for a number of applications. 489 Note that this list is not meant to be comprehensive. 491 When used in a new application, protocol designers should clearly 492 specify this end-to-end capabilities exchange and the corresponding 493 behaviour of the Diameter nodes supporting the application. 495 7. Diameter Accounting Support 497 Accounting can be treated as an auxiliary application which is used 498 in support of other applications. In most cases, accounting support 499 is required when defining new applications. This document provides 500 two(2) possible models for using accounting: 502 Split Accounting Model 504 In this model, the accounting messages will use the Diameter base 505 accounting application ID (value of 3). The design implication 506 for this is that the accounting is treated as an independent 507 application, especially during Diameter routing. This means that 508 accounting commands emanating from an application may be routed 509 separately from the rest of the other application messages. This 510 may also imply that the messages generally end up in a central 511 accounting server. A split accounting model is a good design 512 choice when: 514 * The application itself will not define its own unique 515 accounting commands. 517 * The overall system architecture permits the use of centralized 518 accounting for one or more Diameter applications. 520 Centralizing accounting may have advantages but there are also 521 drawbacks. The model assumes that the accounting server can 522 somehow differentiate received accounting messages. Since the 523 received accounting messages can be for any application and/or 524 service, the accounting server has to be have a method to uniquely 525 match accounting messages with applications and/or services being 526 accounted for. This may mean defining new AVPs, checking the 527 presence, absence or contents of existing AVPs or checking the 528 contents of the accounting records itself. But in general, there 529 is no clean and generic scheme for sorting these messages. 530 Therefore, the use of this model is recommended only when all 531 received accounting messages can be clearly identified and sorted. 532 For most cases, the use of Coupled Accounting Model is 533 recommended. 535 Coupled Accounting Model 537 In this model, the accounting messages will use the application ID 538 of the application using the accounting service. The design 539 implication for this is that the accounting messages are tightly 540 coupled with the application itself; meaning that accounting 541 messages will be routed like any other application messages. It 542 would then be the responsibility of the application server 543 (application entity receiving the ACR message) to send the 544 accounting records carried by the accounting messages to the 545 proper accounting server. The application server is also 546 responsible for formulating a proper response (ACA). A coupled 547 accounting model is a good design choice when: 549 * The system architecture or deployment will not provide an 550 accounting server that supports Diameter. 552 * The system architecture or deployment requires that the 553 accounting service for the specific application should be 554 handled by the application itself. 556 * The application server is provisioned to use a different 557 protocol to access the accounting server; e.g., via LDAP, SOAP 558 etc. This includes attempting to support older accounting 559 systems that are not Diameter aware. 561 In all cases above, there will generally be no direct Diameter 562 access to the accounting server. 564 These models provide a basis for using accounting messages. 565 Application designers may obviously deviate from these models 566 provided that the factors being addressed here have also been taken 567 into account. Though it is not recommended, examples of other 568 methods might be defining a new set of commands to carry application 569 specific accounting records. 571 8. Generic Diameter Extensions 573 Generic Diameter extensions are AVPs, commands or applications that 574 are designed to support other Diameter applications. They are 575 auxiliary applications meant to improve or enhance the Diameter 576 protocol itself or Diameter applications/functionality. Some 577 examples include the extensions to support auditing and redundancy 578 (see [I-D.calhoun-diameter-res-mgmt]), improvements in duplicate 579 detection scheme (see [I-D.asveren-dime-dupcons]), and piggybacking 580 of QoS attributes (see [I-D.ietf-dime-qos-attributes]). 582 Since generic extensions can cover many aspects of Diameter and 583 Diameter applications, it is not possible to enumerate all the 584 probable scenarios in this document. However, some of the most 585 common considerations are as follows: 587 o Backward compatibility: Dealing with existing applications that do 588 not understand the new extension. Designers also have to make 589 sure that new extensions do not break expected message delivery 590 layer behavior. 592 o Forward compatibility: Making sure that the design will not 593 introduce undue restrictions for future applications. Future 594 applications attempting to support this feature should not have to 595 go through great lengths to implement any new extensions. 597 o Tradeoffs in signaling: Designers may have to choose between the 598 use of optional AVPs piggybacked onto existing commands versus 599 defining new commands and applications. Optional AVPs are simpler 600 to implement and may not need changes to existing applications; 601 However, the drawback is that the timing of sending extension data 602 will be tied to when the application would be sending a message. 603 This has consequences if the application and the extensions have 604 different timing requirements. The use of commands and 605 applications solves this issue but the tradeoff is the additional 606 complexity of defining and deploying a new application. It is 607 left up to the designer to find a good balance among these 608 tradeoffs based on the requirements of the extension. 610 In practice, it is often the case that the generic extensions use 611 optional AVPs because it's simple and not intrusive to the 612 application that would carry it. Peers that do not support the 613 generic extensions need not understand nor recognize these optional 614 AVPs. However, it is recommended that the authors of the extension 615 specify the context or usage of the optional AVPs. As an example, in 616 the case that the AVP can be used only by a specific set of 617 applications then the specification must enumerate these applications 618 and the scenarios when the optional AVPs will be used. In the case 619 where the optional AVPs can be carried by any application, it is 620 should be sufficient to specify such a use case and perhaps provide 621 specific examples of applications using them. 623 In most cases, these optional AVPs piggybacked by applications would 624 be defined as a Grouped AVP and it would encapsulate all the 625 functionality of the generic extension. In practice, it is not 626 uncommon that the Grouped AVP will encapsulate an existing AVP that 627 has previously been defined as mandatory ('M'-bit set) e.g., 3GPP IMS 628 Cx / Dx interfaces ([TS29.228] and [TS29.229]). 630 9. IANA Considerations 632 This document does not require actions by IANA. 634 10. Security Considerations 636 This document does provides guidelines and considerations for 637 extending Diameter and Diameter applications. It does not define nor 638 address security related protocols or schemes. 640 11. Contributors 642 The content of this document was influenced by a design team created 643 to revisit the Diameter extensibility rules. The team consisting of 644 the members listed below was formed in February 2008 and finished its 645 work in June 2008. 647 o Avi Lior 649 o Glen Zorn 651 o Jari Arkko 653 o Lionel Morand 655 o Mark Jones 657 o Victor Fajardo 659 o Tolga Asveren 661 o Jouni Korhonen 663 o Glenn McGregor 665 o Hannes Tschofenig 667 o Dave Frascone 669 We would like to thank Tolga Asveren, Glenn McGregor, and John 670 Loughney for their contributions as co-authors to earlier versions of 671 this document. 673 12. Acknowledgments 675 We greatly appreciate the insight provided by Diameter implementers 676 who have highlighted the issues and concerns being addressed by this 677 document. 679 13. References 681 13.1. Normative References 683 [I-D.ietf-dime-rfc3588bis] 684 Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, 685 "Diameter Base Protocol", draft-ietf-dime-rfc3588bis-31 686 (work in progress), March 2012. 688 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 689 Requirement Levels", BCP 14, RFC 2119, March 1997. 691 [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. 692 Arkko, "Diameter Base Protocol", RFC 3588, September 2003. 694 13.2. Informative References 696 [I-D.asveren-dime-dupcons] 697 Asveren, T., "Diameter Duplicate Detection Cons.", 698 draft-asveren-dime-dupcons-00 (work in progress), 699 August 2006. 701 [I-D.calhoun-diameter-res-mgmt] 702 Calhoun, P., "Diameter Resource Management Extensions", 703 draft-calhoun-diameter-res-mgmt-08.txt (work in progress), 704 March 2001. 706 [I-D.ietf-dime-mip6-integrated] 707 Korhonen, J., Bournelle, J., Tschofenig, H., Perkins, C., 708 and K. Chowdhury, "Diameter Mobile IPv6: Support for 709 Network Access Server to Diameter Server Interaction", 710 draft-ietf-dime-mip6-integrated-12 (work in progress), 711 January 2009. 713 [I-D.ietf-dime-qos-attributes] 714 Korhonen, J., Tschofenig, H., Arumaithurai, M., Jones, M., 715 and A. Lior, "Traffic Classification and Quality of 716 Service Attributes for Diameter", 717 draft-ietf-dime-qos-attributes-15 (work in progress), 718 December 2009. 720 [Q.3303.3] 721 3rd Generation Partnership Project, "ITU-T Recommendation 722 Q.3303.3, "Resource control protocol no. 3 (rcp3): 723 Protocol at the Rw interface between the Policy Decision 724 Physical Entity (PD-PE) and the Policy Enforcement 725 Physical Entity (PE-PE): Diameter"", 2008. 727 [RFC4005] Calhoun, P., Zorn, G., Spence, D., and D. Mitton, 728 "Diameter Network Access Server Application", August 2005, 729 . 731 [RFC4072] Eronen, P., Hiller, T., and G. Zorn, "Diameter Extensible 732 Authentication Protocol (EAP) Application", August 2005, 733 . 735 [TS29.228] 736 3rd Generation Partnership Project, "3GPP TS 29.228; 737 Technical Specification Group Core Network and Terminals; 738 IP Multimedia (IM) Subsystem Cx and Dx Interfaces; 739 Signalling flows and message contents", 740 . 742 [TS29.229] 743 3rd Generation Partnership Project, "3GPP TS 29.229; 744 Technical Specification Group Core Network and Terminals; 745 Cx and Dx interfaces based on the Diameter protocol; 746 Protocol details", 747 . 749 [TS29.328] 750 3rd Generation Partnership Project, "3GPP TS 29.328; 751 Technical Specification Group Core Network and Terminals; 752 IP Multimedia (IM) Subsystem Sh interface; signalling 753 flows and message content", 754 . 756 [TS29.329] 757 3rd Generation Partnership Project, "3GPP TS 29.329; 758 Technical Specification Group Core Network and Terminals; 759 Sh Interface based on the Diameter protocol; Protocol 760 details", 761 . 763 Authors' Addresses 765 Lionel Morand (editor) 766 Orange Labs 768 Phone: +33 1 4529 6257 769 Email: lionel.morand@orange.com 771 Victor Fajardo 773 Email: vf0213@gmail.com 775 Hannes Tschofenig 776 Nokia Siemens Networks 777 Linnoitustie 6 778 Espoo 02600 779 Finland 781 Phone: +358 (50) 4871445 782 Email: Hannes.Tschofenig@gmx.net 783 URI: http://www.tschofenig.priv.at