| < 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/ | ||||