< draft-ietf-dime-app-design-guide-13.txt   draft-ietf-dime-app-design-guide-14.txt >
Diameter Maintanence and Extensions V. Fajardo Diameter Maintenance and Extensions L. Morand, Ed.
(DIME) (DIME) Orange Labs
Internet-Draft H. Tschofenig Internet-Draft V. Fajardo
Intended status: Informational Nokia Siemens Networks Intended status: Informational
Expires: July 14, 2012 L. Morand, Ed. Expires: October 3, 2012 H. Tschofenig
Orange Labs Nokia Siemens Networks
January 11, 2012 April 1, 2012
Diameter Applications Design Guidelines Diameter Applications Design Guidelines
draft-ietf-dime-app-design-guide-13 draft-ietf-dime-app-design-guide-14
Abstract Abstract
The Diameter Base protocol provides facilities for protocol The Diameter Base protocol provides facilities for protocol
extensibility enabling to define new Diameter applications or modify extensibility enabling to define new Diameter applications or modify
existing applications. This document is a companion document to the existing applications. This document is a companion document to the
Diameter Base protocol that further explains and clarifies the rules Diameter Base protocol that further explains and clarifies the rules
to extend the Diameter Base protocol. It is meant as a guidelines to extend the Diameter Base protocol. It is meant as a guidelines
document and therefore it does not add, remove or change existing document and therefore it does not add, remove or change existing
rules. rules.
skipping to change at page 2, line 26 skipping to change at page 2, line 26
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on July 14, 2012. This Internet-Draft will expire on October 3, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the Copyright (c) 2012 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 3, line 10 skipping to change at page 3, line 10
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4. Adding a new command . . . . . . . . . . . . . . . . . . . . . 8 4. Reusing existing Diameter applications . . . . . . . . . . . . 8
5. Deleting a Command . . . . . . . . . . . . . . . . . . . . . . 9 4.1. Adding a new command . . . . . . . . . . . . . . . . . . . 8
6. Reusing Existing Commands . . . . . . . . . . . . . . . . . . 10 4.2. Deleting a command . . . . . . . . . . . . . . . . . . . . 9
6.1. Adding AVPs to a Command . . . . . . . . . . . . . . . . . 10 4.3. Reusing existing commands . . . . . . . . . . . . . . . . 9
6.2. Deleting AVPs from a Command . . . . . . . . . . . . . . . 11 4.3.1. Adding AVPs to a command . . . . . . . . . . . . . . . 10
7. Reusing Existing AVPs . . . . . . . . . . . . . . . . . . . . 13 4.3.2. Deleting AVPs from a Command . . . . . . . . . . . . . 11
8. Rules for new Applications . . . . . . . . . . . . . . . . . . 14 4.4. Reusing existing AVPs . . . . . . . . . . . . . . . . . . 12
8.1. Use of Application-Id in a Message . . . . . . . . . . . . 14 4.4.1. Setting of the AVP flags . . . . . . . . . . . . . . . 12
8.2. Application Specific Session State Machine . . . . . . . . 15 4.4.2. Reuse of AVP of type Enumerated . . . . . . . . . . . 12
9. End-to-End Applications Capabilities Exchange . . . . . . . . 16 5. Rules for new Applications . . . . . . . . . . . . . . . . . . 13
10. Diameter Accounting Support . . . . . . . . . . . . . . . . . 17 5.1. Use of Application-Id in a Message . . . . . . . . . . . . 13
11. Generic Diameter Extensions . . . . . . . . . . . . . . . . . 19 5.2. Application Specific Session State Machine . . . . . . . . 14
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 6. End-to-End Applications Capabilities Exchange . . . . . . . . 15
13. Security Considerations . . . . . . . . . . . . . . . . . . . 22 7. Diameter Accounting Support . . . . . . . . . . . . . . . . . 16
14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 23 8. Generic Diameter Extensions . . . . . . . . . . . . . . . . . 18
15. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 24 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20
16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 25 10. Security Considerations . . . . . . . . . . . . . . . . . . . 21
16.1. Normative References . . . . . . . . . . . . . . . . . . . 25 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 22
16.2. Informative References . . . . . . . . . . . . . . . . . . 26 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 23
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 24
13.1. Normative References . . . . . . . . . . . . . . . . . . . 24
13.2. Informative References . . . . . . . . . . . . . . . . . . 24
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 26
1. Introduction 1. Introduction
The Diameter Base protocol provides facilities to extend the Diameter The Diameter Base protocol provides facilities to extend the Diameter
Base protocol (see Section 1.3 of [I-D.ietf-dime-rfc3588bis]). In Base protocol (see Section 1.3 of [I-D.ietf-dime-rfc3588bis]) for
the context of this document, extending Diameter means one of the supporting new functionalities. In the context of this document,
following: extending Diameter means one of the following:
1. A new functionality is being added to an existing Diameter 1. Addition of a new functionality to an existing Diameter
application without defining a new application. application without defining a new application.
2. A new Diameter application is being defined by extending an 2. Addition of a new functionality to an existing Diameter
existing application. application that requires the definition of a new application.
3. A completely new application is being defined that has nothing in 3. The definition of a new Diameter application to provide a set of
common with existing applications. functionalities not supporting by existing applications.
4. A new generic functionality is being defined that can be reused 4. The definition of a new generic functionality that can be reused
across different applications. across different applications.
All of these choices are design decisions that can done by any All of these choices are design decisions that can done by any
combination of reusing existing or defining new commands, AVPs or AVP combination of reusing existing or defining new commands, AVPs or AVP
values. Protocol designers do, however, not have total freedom when values. Protocol designers do, however, not have total freedom when
making their design. A number of rules defined in making their design. A number of rules defined in
[I-D.ietf-dime-rfc3588bis] place constraints on when an extension [I-D.ietf-dime-rfc3588bis] place constraints on when an extension
demands a new Diameter Application to be defined or a new Command demands a new Diameter application to be defined or a new command
Code to be registered. The objective of this document is the code to be registered. The objective of this document is the
following: following:
o Clarify updated Diameter extensibility rules in the Diameter Base o Clarify updated Diameter extensibility rules in the Diameter Base
Protocol. Protocol.
o Clarify usage of certain Diameter functionalitiessi which are not o Clarify usage of certain Diameter functionalities that are not
explicitly described in the Diameter Base specification. explicitly described in the Diameter Base specification.
o Discuss design choices and provide guidelines when defining o Discuss design choices and provide guidelines when defining
applications. applications.
o Present tradeoffs of design choices. o Present tradeoffs of design choices.
2. Terminology 2. Terminology
This document reuses the terminology used in This document reuses the terminology used in
[I-D.ietf-dime-rfc3588bis]. [I-D.ietf-dime-rfc3588bis].
3. Overview 3. Overview
As it is currently interpreted and practiced, the Diameter Base As designed, the Diameter Base protocol can be seen as a two-layer
protocol is a two-layer protocol. The lower layer is mainly protocol. The lower layer is mainly responsible for managing
responsible for managing connections between neighboring peers and connections between neighboring peers and for message routing. The
for message routing. The upper layer is where the Diameter upper layer is where the Diameter applications reside. This model is
applications reside. This model is in line with a Diameter node in line with a Diameter node having an application layer and a peer-
having an application layer and a peer-to-peer delivery layer. The to-peer delivery layer. The Diameter Base protocol document
Diameter Base protocol document completely defines the architecture completely defines the architecture and behavior of the message
and behavior of the message delivery layer and then provides the delivery layer and then provides the framework for designing Diameter
framework for designing Diameter applications on the application applications on the application layer. This framework includes
layer. This framework includes definitions of application sessions definitions of application sessions and accounting support (see
and accounting support (see Section 8 and 9 of Section 8 and 9 of [I-D.ietf-dime-rfc3588bis]). The remainder of
[I-D.ietf-dime-rfc3588bis]). The remainder of this document also this document also treats a Diameter node as a single instance of a
treats a Diameter node as a single instance of a Diameter message Diameter message delivery layer and one or more Diameter applications
delivery layer and one or more Diameter applications using it. using it.
Extending Diameter can mean the reuse of commands, AVPs and AVP The Diameter protocol is designed to be extensible and the principles
values in any combination for the purpose of inheriting the features are descibed in the section 1.3 of [I-D.ietf-dime-rfc3588bis].
of an existing Diameter application. This section discusses the Extending Diameter can mean the definition of a new Diameter
rules on how such reuse can be done. application and/or the reuse of commands, AVPs and AVP values in any
combination for the purpose of inheriting the features of an existing
Diameter application. The reuse recommendation is meaningful as most
of the requirements defined for a new application are likely already
fulfilled by an existing application.
When reusing existing applications, the requirements of the new However, when reusing existing applications, there is a greater
applications are typically not completely unique and hence a lot can likelihood of ambiguity on how much of the existing application can
be re-used from existing specifications. Therefore, there is a be enhanced without being distorted too much and therefore requiring
greater likelihood of ambiguity on how much of the existing the definition of a new application.
application can be reused and what would be the implications for both
the new and existing application. To broadly categorize, the rules
for reusing existing applications can fall into two categories, as
listed below.
Minor Extension: This, for example, is the case when optional AVPs The impacts of extending existing applications can be categorized as
are being defined. In general, this includes everything that is follow:
not covered by the next category. The standardization effort will
be fairly small.
Major Extension: Such an extension requires the definition of a new Minor Extension: Enhancing the functional scope of an existing
Diameter application. The rules outlined in Section 1.2 of application by the addition of optional features to support. Such
[I-D.ietf-dime-rfc3588bis] indicate when an extension requires a a enhancement has no backward compatibility issue with the existing
new Command Code to be registered and when new Diameter application. A typical example would be the definition of a new
applications have to be defined. Typically, these types of optional AVP to use in an existing command. In general, this
extensions require a longer and more careful effort depending on includes everything that is not covered by the next category. The
the degree of re-use. Therefore, the amount of time and effort to standardization effort will be fairly small.
complete the specification should also be considered by the
designer.
The subsequent sections provide discussions about the specific Major Extension: Enhancing the functional scope of an existing
Diameter Base protocol rules. application in such a way that this implies backward compatible
change to the existing application and then requires the
definition of a new Diameter application. A typical example would
be the creation of a new command for providing functionality not
supported by existing applications. For such extension, a
significant specification effort is required and a carefull
approach is recommended.
4. Adding a new command The rules outlined in the section 1.3 of [I-D.ietf-dime-rfc3588bis]
indicate when an extension requires a new command code to be
registered and when new Diameter applications have to be defined.
The subsequent sections further explain and clarify the rules to
extend the Diameter Base protocol. It is meant as a guidelines
document and therefore it does not add, remove or change existing
rules.
Adding a new command is considered a major extension and requires a 4. Reusing existing Diameter applications
new Diameter application to be defined. Adding a new command to an
When selecting the Diameter Base protocol to support new
functionalities, protocol designers are advised to try to re-use as
much as possible existing Diameter applications to simplify
standardization, implementation and avoid potential interoperability
issues. However, existing application needs to be adapted to support
new requirements and these modifications can be at the command level
and/or at the AVP level. The following sections describe the
possible modifications that can be performed on existing applications
and their related impacts.
4.1. Adding a new command
Adding a new command is considered as a major extension and requires
a new Diameter application to be defined. Adding a new command to an
application means either defining a completely new command or application means either defining a completely new command or
importing an existing command from another application whereby the importing the command's CCF syntax specification from another
new application inherits some or all of the functionality of the application whereby the new application inherits some or all of the
application where the command came from. In the former case, the functionality of the application where the command came from. In the
decision to create an new application is straightforward since this former case, the decision to create an new application is
is typically a result of adding a new functionality that does not straightforward since this is typically a result of adding a new
exist yet. For the latter, the decision will depend on whether functionality that does not exist yet. For the latter, the decision
importing the command in a new application is more suitable than to create a new application will depend on whether importing the
simply using the existing application as it is in conjunction with command in a new application is more suitable than simply using the
any other application. Therefore, a case by case study of each existing application as it is in conjunction with any other
application requirement should be applied. application. Therefore, a case by case study of each application
requirement should be applied.
In general, it is difficult to come to a hard guideline, and so a An illustrative example is the command pair defined in Diameter EAP
case by case study of each application requirement should be applied. application [RFC4072] that can be re-used conjointly with any other
Before adding or importing a command, application designers should application (e.g. the Diameter NASREQ application [RFC4005]) as soon
consider the following: as standard EAP-based authentication procedures need to be supported
by the implementation. It may therefore not be required to import
the command pair in the new defined application.
o Can the new functionality be fulfilled by creating a new However, in general, it is difficult to come to a hard guideline, and
application independent from the existing applications? In this so a case by case study of each application requirement should be
case, both old and new application can work independent of, but applied. Before adding or importing a command, application designers
cooperating with each other. should consider the following:
o Can the existing application be reused without major extensions o Can the new functionality be fulfilled by creating a new command
that requires the definition of a new application, e.g. new independent from any existing command? In this case, the
funtionality introduced by the creation of new optional AVPs. resulting new application and the existing application can work
independent of, but cooperating with each other.
o Can the existing command be reused without major extensions and
therefore without the need for the definition of a new
application, e.g. new funtionality introduced by the creation of
new optional AVPs.
o Care should be taken to avoid a liberal method of importing o Care should be taken to avoid a liberal method of importing
existing commands that results in a monolithic and hard to manage existing command's CCF syntax specification. This would result in
application which supports many different functionalities. a monolithic and hard to manage applications supporting too many
different functionalities and can cause interoperability issues
between the different applications. .
5. Deleting a Command 4.2. Deleting a command
Although this process is not typical, removing a command to an Although this process is not typical, removing a command to an
application requires a new Diameter application to be defined. It is application requires a new Diameter application to be defined. this
unusual to delete an existing command from an application for the is due to the fact that the reception of the deleted command would
sake of deleting it or the functionality it represents. This systematically result in a protocol error
(DIAMETER_COMMAND_UNSUPPORTED).
It is unusual to delete an existing command from an application for
the sake of deleting it or the functionality it represents. This
normally indicates of a flawed design. An exception might be if the normally indicates of a flawed design. An exception might be if the
intent of the deletion is to create a newer version of the same intent of the deletion is to create a newer version of the same
application which is somehow simpler than the previous version. application which is somehow simpler than the previous version.
6. Reusing Existing Commands 4.3. Reusing existing commands
This section discusses rules in adding and/or deleting AVPs from an This section discusses rules in adding and/or deleting AVPs from an
existing command of an existing application. The cases described in existing command of an existing application. The cases described in
this section may not necessarily result in the creation of new this section may not necessarily result in the creation of new
applications. applications.
6.1. Adding AVPs to a Command It is worth to note that the strong recommendation to re-use existing
commands in the [RFC3588] was to prevent rapid scarcity of code
values available for vendor-specific commands.
[I-D.ietf-dime-rfc3588bis] relaxes the policy with respect to the
allocation of command codes for vendor-specific uses and enlarges the
range of available code values for vendor-specific applications.
Therefore, if it is still recommended to re-use as much as possible
existing commands, protocol designers can consider more easily the
definition of a new command when it is a solution more suitable than
twisting existings command use and applications.
4.3.1. Adding AVPs to a command
Based on the rules in [I-D.ietf-dime-rfc3588bis], AVPs that are added Based on the rules in [I-D.ietf-dime-rfc3588bis], AVPs that are added
to an existing command can be categorized into: to an existing command can be categorized into:
o Mandatory to understand AVPs. As defined in o Mandatory (to understand) AVPs. As defined in
[I-D.ietf-dime-rfc3588bis], these are AVPs with the M-bit flag [I-D.ietf-dime-rfc3588bis], these are AVPs with the M-bit flag
set, which means that a Diameter node receiving are required to set, which means that a Diameter node receiving are required to
understand not only their values but their semantics. Failure to understand not only their values but their semantics. Failure to
do so will cause an message handling error. This is regardless of do so will cause an message handling error. This is regardless of
whether these AVPs are required or optional as specified by the whether these AVPs are required or optional as specified by the
commands ABNF. command's CCF syntax specification.
o Optional AVPs. [TBD] o Optional (to understand) AVPs. As defined in
[I-D.ietf-dime-rfc3588bis], these are AVPs with the M-bit flag
cleared, which mean that a Diameter node receiving these AVP can
simply ignore them if not supported in the process of the received
command.
The rules are strict in the case where the AVPs to be added are The rules are strict in the case where the AVPs to be added are
mandatory. A mandatory AVP cannot be added to or deleted from an mandatory to understand i.e. with the M-bit set. A mandatory AVP
existing command with defining a new Diameter application. cannot be added to an existing command without defining a new
[I-D.ietf-dime-rfc3588bis] states that doing so would require the Diameter application, as stated in [I-D.ietf-dime-rfc3588bis]. This
definition of a new application. This falls into the "Major falls into the "Major Extensions" category. Despite the clarity of
Extensions" category. Despite the clarity of the rule, ambiguity the rule, ambiguity still arises when evaluating whether a new AVP
still arises when trying to decide whether a new AVP being added being added should be mandatory to begin with. Here is a list of few
should be mandatory to begin with. The follow are a few common common questions that application designers should wonder when trying
questions that application designers should contemplate when trying
to decide: to decide:
o Is it required for the receiving side to be able to process and o Would it be required for the receiving side to be able to process
understand the AVP and its content (rather than just writing it's and understand the AVP and its content?
content into to a file)?
o Do the AVPs change the state machine of the application ? o Would the new AVPs change the state machine of the application?
o Would the presence of the new AVPs (or the newly specified value o Would the presence of the new AVP lead to a different number of
contained in an existing AVP) lead to a different number of
roundtrips, effectively changing the state machine of the roundtrips, effectively changing the state machine of the
application? application?
o Would the AVP be used to differentiate between old and new o Would the new AVP be used to differentiate between old and new
versions of the same application whereby the two versions are not versions of the same application whereby the two versions are not
backward compatible? backward compatible?
o Will it have duality in meaning, i.e., be used to carry o Would the new AVP have duality in meaning i.e. be used to carry
application related information as well as be used to indicate application related information as well as be used to indicate
that the message is for a new application? that the message is for a new application?
When one of the above questions can be answered with 'yes' then the When one of the above questions can be answered in the affirmative
M-bit has to be set. If application designers are contemplating on then the M-bit has to be set for the new AVP.
the use of optional AVPs instead, then the following are some of the
pitfalls that should be avoided: If application designers are instead contemplating on the use of
optional AVPs i.e. with the M-bit cleared, then the following are
some of the pitfalls that should be avoided:
o Use of optional AVPs with intersecting meaning. One AVP has o Use of optional AVPs with intersecting meaning. One AVP has
partially the same usage and meaning as another AVP. The presence partially the same usage and meaning as another AVP. The presence
of both can lead to confusion. of both can lead to confusion.
o An optional AVPs with dual purpose, i.e. to carry applications o An optional AVPs with dual purpose, i.e. to carry applications
data as well as to indicate support for one or more features. data as well as to indicate support for one or more features.
This has a tendency to introduce interpretation issues. This has a tendency to introduce interpretation issues.
o Adding one or more optional AVPs and indicating (usually within o Adding one or more optional AVPs and indicating (usually within
descriptive text for the command) that at least one of them has to descriptive text for the command) that at least one of them has to
be present in the command. This essentially circumventing the be present in the command. This essentially circumventing the
ABNF and is equivalent to adding a mandatory AVPs to the command. ABNF and is equivalent to adding a mandatory AVPs to the command.
These practices generally result in interoperability issues and These practices generally result in interoperability issues and
should be avoided as much as possible. should be avoided as much as possible.
6.2. Deleting AVPs from a Command 4.3.2. Deleting AVPs from a Command
When deleting an AVP from a Command the following cases need to be When deleting an AVP from a command, the following cases need to be
differentiated: differentiated:
o An AVP that is indicated as {} in the ABNF in the Command (with or o Deleting an AVP that is indicated as { AVP } in the command's CCF
without the M-bit set). In this case the new Command Code and syntax specification, whatever the setting of the M-bit set. This
subsequently a new Diameter application has to be specified. means the definition of a new command. In this case, a new
command code and subsequently a new Diameter application have to
be specified.
o An AVP that is indicated as [] in the ABNF in the Command (with o Deleting an AVP with M-bit set that is indicated as [ AVP ] in the
the M-bit set). No new Command Code has to be specified but the command's CCF syntax specification. No new command code has to be
definition of a new Diameter application is required. specified but the definition of a new Diameter application is
required.
o An AVP that is indicated as [] in the ABNF in the Command (without o Deleting an AVP with the M-bit cleared that is indicated as [ AVP
the M-bit set). In this case the AVP can be deleted without ] in the command's CCF syntax specification. In this case, the
consequences. AVP can be deleted without consequences.
If possible application designers should attempt the reuse the If possible application designers should attempt the reuse the
Command ABNF without modification and simply ignore (but not delete) command's CCF syntax specification without modification and simply
any optional AVP that will not be used. This is to maintain ignore (but not delete) any optional AVP that will not be used. This
compatibility with existing applications that will not know about the is to maintain compatibility with existing applications that will not
new functionality as well as maintain the integrity of existing know about the new functionality as well as maintain the integrity of
dictionaries. existing dictionaries.
7. Reusing Existing AVPs 4.4. Reusing existing AVPs
This section discusses rules in adding, deleting or modifying the This section discusses rules in reusing existing AVP when reusing an
specified values of an AVP. existing command or defining a new command in a new application.
4.4.1. Setting of the AVP flags
When reusing AVPs in a new application, the AVP flag setting, such as When reusing AVPs in a new application, the AVP flag setting, such as
the mandatory flag ('M'-bit), has to be re-evaluated for a new the mandatory flag ('M'-bit), has to be re-evaluated for a new
Diameter application and, if necessary, even for every Command within Diameter application and, if necessary, even for every command within
the application. In general, for AVPs defined outside of the base the application. In general, for AVPs defined outside of the base
protocol, its mandatory characteristics are tied to its role within protocol, its mandatory characteristics are tied to its role within
an application and Command. an application and command.
8. Rules for new Applications All other AVP flags shall remain unchanged
The general theme of Diameter extensibility is to reuse commands, 4.4.2. Reuse of AVP of type Enumerated
AVPs and AVP values as much as possible. However, some of the
extensibility rules described in the previous section also apply to When modifying the set of values supported by an AVP of type
scenarios where a designer is trying to define a completely new Enumerated, this means defining a new AVP. Modifying the set of
Enumerated values includes adding a value or deprecating the use of a
value defined initially for the AVP. Defining a new AVP will avoid
interoperability issues.
5. Rules for new Applications
The general recommendation for Diameter extensibility is to reuse
commands, AVPs and AVP values as much as possible. However, some of
the extensibility rules described in the previous section also apply
to scenarios where a designer is trying to define a completely new
Diameter application. Diameter application.
This section discusses the case where new applications have This section discusses the case where new applications have
requirements that cannot be filled by existing applications and would requirements that cannot be filled by existing applications and would
require definition of completely new commands, AVPs and/or AVP require definition of completely new commands, AVPs and/or AVP
values. Typically, there is little ambiguity about the decision to values. Typically, there is little ambiguity about the decision to
create these types of applications. Some examples are the interfaces create these types of applications. Some examples are the interfaces
defined for the IP Multimedia Subsystem of 3GPP, i.e. Cx/Dx defined for the IP Multimedia Subsystem of 3GPP, i.e. Cx/Dx
([TS29.228] and [TS29.229]), Sh ([TS29.328] and [TS29.329]) etc. ([TS29.228] and [TS29.229]), Sh ([TS29.328] and [TS29.329]) etc.
Application designers should also follow the theme of Diameter Application designers should also follow the theme of Diameter
extensibility which in this case means to import existing AVPs and extensibility which in this case means to import existing AVPs and
AVP values for any newly defined commands. In certain cases where AVP values for any newly defined commands. In certain cases where
accounting will be used, the models described in Section 10 should accounting will be used, the models described in Section 7 should
also be considered. Though some decisions may be clear, designers also be considered. Though some decisions may be clear, designers
should also consider certain aspects of defining a new application. should also consider certain aspects of defining a new application.
Some of these aspects are described in following sections. Some of these aspects are described in following sections.
8.1. Use of Application-Id in a Message 5.1. Use of Application-Id in a Message
When designing new applications, designers should specify that the When designing new applications, designers should specify that the
application ID carried in all session level messages must be the application ID carried in all session level messages must be the
application ID of the application using those messages. This application ID of the application using those messages. This
includes the session level messages defined in base protocol, i.e., includes the session level messages defined in base protocol, i.e.,
RAR/RAA, STR/STA, ASR/ASA and possibly ACR/ACA in the coupled RAR/RAA, STR/STA, ASR/ASA and possibly ACR/ACA in the coupled
accounting model, see Section 10. Existing specifications may not accounting model, see Section 7. Existing specifications may not
adhere to this rule for historical or other reasons. However, this adhere to this rule for historical or other reasons. However, this
scheme should be followed to avoid possible routing problems for scheme should be followed to avoid possible routing problems for
these messages. these messages.
In general, when a new application has been allocated with a new In general, when a new application has been allocated with a new
application id and it also reuses existing commands with or without application id and it also reuses existing commands with or without
modifications (Sec 4.1), it must use the newly allocated application modifications (Sec 4.1), it must use the newly allocated application
id in the header and in all relevant application id AVPs (Auth- id in the header and in all relevant application id AVPs (Auth-
Application-Id or Acct-Application-Id) present in the commands Application-Id or Acct-Application-Id) present in the commands
message body. message body.
Additionally, application designs using Additionally, application designs using
Vendor-Specific-Application-Id AVP should not use the Vendor-Id AVP Vendor-Specific-Application-Id AVP should not use the Vendor-Id AVP
to further dissect or differentiate the vendor-specification to further dissect or differentiate the vendor-specification
application id. Diameter routing is not based on the Vendor-Id. As application id. Diameter routing is not based on the Vendor-Id. As
such, the Vendor-ID should not be used as an additional input for such, the Vendor-ID should not be used as an additional input for
routing or delivery of messages. In general, the Vendor-Id AVP is an routing or delivery of messages. In general, the Vendor-Id AVP is an
informational AVP only and kept for backward compatibility reasons. informational AVP only and kept for backward compatibility reasons.
8.2. Application Specific Session State Machine 5.2. Application Specific Session State Machine
Section 8 of [I-D.ietf-dime-rfc3588bis] provides session state Section 8 of [I-D.ietf-dime-rfc3588bis] provides session state
machines for authentication, authorization and accounting (AAA) machines for authentication, authorization and accounting (AAA)
services. When a new application is being defined that cannot services. When a new application is being defined that cannot
clearly be categorized into any of these services it is recommended clearly be categorized into any of these services it is recommended
that the application itself define its own session state machine. that the application itself define its own session state machine.
The existing session state machines defined by The existing session state machines defined by
[I-D.ietf-dime-rfc3588bis] is not intended for general use beyond AAA [I-D.ietf-dime-rfc3588bis] is not intended for general use beyond AAA
services, therefore any behavior not covered by that category would services, therefore any behavior not covered by that category would
not fit well. Support for server initiated request is a clear not fit well. Support for server initiated request is a clear
example where an application specific session state machine would be example where an application specific session state machine would be
needed, for example, the Rw interface for ITU-T push model. needed, for example, the Rw interface for ITU-T push model (
cf.[Q.3303.3]).
9. End-to-End Applications Capabilities Exchange 6. End-to-End Applications Capabilities Exchange
It is also possible that applications can use optional AVPs to It is also possible that applications can use optional AVPs to
exchange application specific capabilities and features. These AVPs exchange application specific capabilities and features. These AVPs
are exchanged on an end-to-end basis. Examples of this can be found are exchanged on an end-to-end basis. Examples of this can be found
in [I-D.ietf-dime-mip6-integrated] and in [I-D.ietf-dime-mip6-integrated] and
[I-D.ietf-dime-qos-attributes]. [I-D.ietf-dime-qos-attributes].
The end-to-end capabilities AVPs can aid in the following cases: The end-to-end capabilities AVPs can aid in the following cases:
o Formalizing the way new functionality is added to existing o Formalizing the way new functionality is added to existing
skipping to change at page 17, line 5 skipping to change at page 15, line 28
o Applications that do not understand these AVP can discard it upon o Applications that do not understand these AVP can discard it upon
receipt. In such case, senders of the AVP can also safely assume receipt. In such case, senders of the AVP can also safely assume
the receiving end-point does not support any functionality carried the receiving end-point does not support any functionality carried
by the AVP if it is not present in subsequent responses. by the AVP if it is not present in subsequent responses.
o Useful in cases where deployment choices are offered and the o Useful in cases where deployment choices are offered and the
generic design can be made available for a number of applications. generic design can be made available for a number of applications.
Note that this list is not meant to be comprehensive. Note that this list is not meant to be comprehensive.
10. Diameter Accounting Support When used in a new application, protocol designers should clearly
specify this end-to-end capabilities exchange and the corresponding
behaviour of the Diameter nodes supporting the application.
7. Diameter Accounting Support
Accounting can be treated as an auxiliary application which is used Accounting can be treated as an auxiliary application which is used
in support of other applications. In most cases, accounting support in support of other applications. In most cases, accounting support
is required when defining new applications. This document provides is required when defining new applications. This document provides
two(2) possible models for using accounting: two(2) possible models for using accounting:
Split Accounting Model Split Accounting Model
In this model, the accounting messages will use the Diameter base In this model, the accounting messages will use the Diameter base
accounting application ID (value of 3). The design implication accounting application ID (value of 3). The design implication
skipping to change at page 19, line 5 skipping to change at page 18, line 5
In all cases above, there will generally be no direct Diameter In all cases above, there will generally be no direct Diameter
access to the accounting server. access to the accounting server.
These models provide a basis for using accounting messages. These models provide a basis for using accounting messages.
Application designers may obviously deviate from these models Application designers may obviously deviate from these models
provided that the factors being addressed here have also been taken provided that the factors being addressed here have also been taken
into account. Though it is not recommended, examples of other into account. Though it is not recommended, examples of other
methods might be defining a new set of commands to carry application methods might be defining a new set of commands to carry application
specific accounting records. specific accounting records.
11. Generic Diameter Extensions 8. Generic Diameter Extensions
Generic Diameter extensions are AVPs, commands or applications that Generic Diameter extensions are AVPs, commands or applications that
are designed to support other Diameter applications. They are are designed to support other Diameter applications. They are
auxiliary applications meant to improve or enhance the Diameter auxiliary applications meant to improve or enhance the Diameter
protocol itself or Diameter applications/functionality. Some protocol itself or Diameter applications/functionality. Some
examples include the extensions to support auditing and redundancy examples include the extensions to support auditing and redundancy
(see [I-D.calhoun-diameter-res-mgmt]), improvements in duplicate (see [I-D.calhoun-diameter-res-mgmt]), improvements in duplicate
detection scheme (see [I-D.asveren-dime-dupcons]), and piggybacking detection scheme (see [I-D.asveren-dime-dupcons]), and piggybacking
of QoS attributes (see [I-D.ietf-dime-qos-attributes]). of QoS attributes (see [I-D.ietf-dime-qos-attributes]).
skipping to change at page 21, line 5 skipping to change at page 20, line 5
should be sufficient to specify such a use case and perhaps provide should be sufficient to specify such a use case and perhaps provide
specific examples of applications using them. specific examples of applications using them.
In most cases, these optional AVPs piggybacked by applications would In most cases, these optional AVPs piggybacked by applications would
be defined as a Grouped AVP and it would encapsulate all the be defined as a Grouped AVP and it would encapsulate all the
functionality of the generic extension. In practice, it is not functionality of the generic extension. In practice, it is not
uncommon that the Grouped AVP will encapsulate an existing AVP that uncommon that the Grouped AVP will encapsulate an existing AVP that
has previously been defined as mandatory ('M'-bit set) e.g., 3GPP IMS has previously been defined as mandatory ('M'-bit set) e.g., 3GPP IMS
Cx / Dx interfaces ([TS29.228] and [TS29.229]). Cx / Dx interfaces ([TS29.228] and [TS29.229]).
12. IANA Considerations 9. IANA Considerations
This document does not require actions by IANA. This document does not require actions by IANA.
13. Security Considerations 10. Security Considerations
This document does provides guidelines and considerations for This document does provides guidelines and considerations for
extending Diameter and Diameter applications. It does not define nor extending Diameter and Diameter applications. It does not define nor
address security related protocols or schemes. address security related protocols or schemes.
14. Contributors 11. Contributors
The content of this document was influenced by a design team created The content of this document was influenced by a design team created
to revisit the Diameter extensibility rules. The team consisting of to revisit the Diameter extensibility rules. The team consisting of
the members listed below was formed in February 2008 and finished its the members listed below was formed in February 2008 and finished its
work in June 2008. work in June 2008.
o Avi Lior o Avi Lior
o Glen Zorn o Glen Zorn
skipping to change at page 24, line 5 skipping to change at page 23, line 5
o Glenn McGregor o Glenn McGregor
o Hannes Tschofenig o Hannes Tschofenig
o Dave Frascone o Dave Frascone
We would like to thank Tolga Asveren, Glenn McGregor, and John We would like to thank Tolga Asveren, Glenn McGregor, and John
Loughney for their contributions as co-authors to earlier versions of Loughney for their contributions as co-authors to earlier versions of
this document. this document.
15. Acknowledgments 12. Acknowledgments
We greatly appreciate the insight provided by Diameter implementers We greatly appreciate the insight provided by Diameter implementers
who have highlighted the issues and concerns being addressed by this who have highlighted the issues and concerns being addressed by this
document. document.
16. References 13. References
16.1. Normative References 13.1. Normative References
[I-D.ietf-dime-diameter-qos] [I-D.ietf-dime-rfc3588bis]
Sun, D., McCann, P., Tschofenig, H., ZOU), T., Doria, A., Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,
and G. Zorn, "Diameter Quality of Service Application", "Diameter Base Protocol", draft-ietf-dime-rfc3588bis-31
draft-ietf-dime-diameter-qos-15 (work in progress), (work in progress), March 2012.
March 2010.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J.
Arkko, "Diameter Base Protocol", RFC 3588, September 2003.
13.2. Informative References
[I-D.asveren-dime-dupcons]
Asveren, T., "Diameter Duplicate Detection Cons.",
draft-asveren-dime-dupcons-00 (work in progress),
August 2006.
[I-D.calhoun-diameter-res-mgmt]
Calhoun, P., "Diameter Resource Management Extensions",
draft-calhoun-diameter-res-mgmt-08.txt (work in progress),
March 2001.
[I-D.ietf-dime-mip6-integrated] [I-D.ietf-dime-mip6-integrated]
Korhonen, J., Bournelle, J., Tschofenig, H., Perkins, C., Korhonen, J., Bournelle, J., Tschofenig, H., Perkins, C.,
and K. Chowdhury, "Diameter Mobile IPv6: Support for and K. Chowdhury, "Diameter Mobile IPv6: Support for
Network Access Server to Diameter Server Interaction", Network Access Server to Diameter Server Interaction",
draft-ietf-dime-mip6-integrated-12 (work in progress), draft-ietf-dime-mip6-integrated-12 (work in progress),
January 2009. January 2009.
[I-D.ietf-dime-mip6-split]
Korhonen, J., Tschofenig, H., Bournelle, J., Giaretta, G.,
and M. Nakhjiri, "Diameter Mobile IPv6: Support for Home
Agent to Diameter Server Interaction",
draft-ietf-dime-mip6-split-17 (work in progress),
April 2009.
[I-D.ietf-dime-qos-attributes] [I-D.ietf-dime-qos-attributes]
Korhonen, J., Tschofenig, H., Arumaithurai, M., Jones, M., Korhonen, J., Tschofenig, H., Arumaithurai, M., Jones, M.,
and A. Lior, "Traffic Classification and Quality of and A. Lior, "Traffic Classification and Quality of
Service Attributes for Diameter", Service Attributes for Diameter",
draft-ietf-dime-qos-attributes-15 (work in progress), draft-ietf-dime-qos-attributes-15 (work in progress),
December 2009. December 2009.
[I-D.ietf-dime-rfc3588bis] [Q.3303.3]
Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, 3rd Generation Partnership Project, "ITU-T Recommendation
"Diameter Base Protocol", draft-ietf-dime-rfc3588bis-29 Q.3303.3, "Resource control protocol no. 3 (rcp3):
(work in progress), August 2011. Protocol at the Rw interface between the Policy Decision
Physical Entity (PD-PE) and the Policy Enforcement
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Physical Entity (PE-PE): Diameter"", 2008.
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. [RFC4005] Calhoun, P., Zorn, G., Spence, D., and D. Mitton,
Arkko, "Diameter Base Protocol", RFC 3588, September 2003. "Diameter Network Access Server Application", August 2005,
<http://www.rfc-editor.org/rfc/rfc4005.txt>.
[RFC4006] Hakala, H., Mattila, L., Koskinen, J-P., Stura, M., and J. [RFC4072] Eronen, P., Hiller, T., and G. Zorn, "Diameter Extensible
Loughney, "Diameter Credit-Control Application", RFC 4006, Authentication Protocol (EAP) Application", August 2005,
August 2005. <http://www.rfc-editor.org/rfc/rfc4072.txt>.
[TS29.228] [TS29.228]
3rd Generation Partnership Project, "3GPP TS 29.228; 3rd Generation Partnership Project, "3GPP TS 29.228;
Technical Specification Group Core Network and Terminals; Technical Specification Group Core Network and Terminals;
IP Multimedia (IM) Subsystem Cx and Dx Interfaces; IP Multimedia (IM) Subsystem Cx and Dx Interfaces;
Signalling flows and message contents", Signalling flows and message contents",
<http://www.3gpp.org/ftp/Specs/html-info/29272.htm>. <http://www.3gpp.org/ftp/Specs/html-info/29272.htm>.
[TS29.229] [TS29.229]
3rd Generation Partnership Project, "3GPP TS 29.229; 3rd Generation Partnership Project, "3GPP TS 29.229;
skipping to change at page 26, line 30 skipping to change at page 26, line 5
flows and message content", flows and message content",
<http://www.3gpp.org/ftp/Specs/html-info/29328.htm>. <http://www.3gpp.org/ftp/Specs/html-info/29328.htm>.
[TS29.329] [TS29.329]
3rd Generation Partnership Project, "3GPP TS 29.329; 3rd Generation Partnership Project, "3GPP TS 29.329;
Technical Specification Group Core Network and Terminals; Technical Specification Group Core Network and Terminals;
Sh Interface based on the Diameter protocol; Protocol Sh Interface based on the Diameter protocol; Protocol
details", details",
<http://www.3gpp.org/ftp/Specs/html-info/29329.htm>. <http://www.3gpp.org/ftp/Specs/html-info/29329.htm>.
16.2. Informative References Authors' Addresses
[I-D.asveren-dime-dupcons]
Asveren, T., "Diameter Duplicate Detection Cons.",
draft-asveren-dime-dupcons-00 (work in progress),
August 2006.
[I-D.calhoun-diameter-res-mgmt] Lionel Morand (editor)
Calhoun, P., "Diameter Resource Management Extensions", Orange Labs
draft-calhoun-diameter-res-mgmt-08.txt (work in progress),
March 2001.
Authors' Addresses Phone: +33 1 4529 6257
Email: lionel.morand@orange.com
Victor Fajardo Victor Fajardo
Email: vf0213@gmail.com Email: vf0213@gmail.com
Hannes Tschofenig Hannes Tschofenig
Nokia Siemens Networks Nokia Siemens Networks
Linnoitustie 6 Linnoitustie 6
Espoo 02600 Espoo 02600
Finland Finland
Phone: +358 (50) 4871445 Phone: +358 (50) 4871445
Email: Hannes.Tschofenig@gmx.net Email: Hannes.Tschofenig@gmx.net
URI: http://www.tschofenig.priv.at URI: http://www.tschofenig.priv.at
Lionel Morand (editor)
Orange Labs
Phone: +33 1 4529 6257
Email: lionel.morand@orange-ftgroup.com
 End of changes. 73 change blocks. 
212 lines changed or deleted 290 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/