| < draft-ietf-dime-app-design-guide-23.txt | draft-ietf-dime-app-design-guide-24.txt > | |||
|---|---|---|---|---|
| Diameter Maintenance and Extensions (DIME) L. Morand, Ed. | Diameter Maintenance and Extensions (DIME) L. Morand, Ed. | |||
| Internet-Draft Orange Labs | Internet-Draft Orange Labs | |||
| Intended status: Best Current Practice V. Fajardo | Intended status: Best Current Practice V. Fajardo | |||
| Expires: November 13, 2014 Independent | Expires: December 6, 2014 Independent | |||
| H. Tschofenig | H. Tschofenig | |||
| Nokia Siemens Networks | Nokia Siemens Networks | |||
| May 12, 2014 | June 4, 2014 | |||
| Diameter Applications Design Guidelines | Diameter Applications Design Guidelines | |||
| draft-ietf-dime-app-design-guide-23 | draft-ietf-dime-app-design-guide-24 | |||
| 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 Diameter. Futhermore, this document provides guidelines to | to extend Diameter. Futhermore, this document provides guidelines to | |||
| Diameter application designers reusing/defining Diameter applications | Diameter application designers reusing/defining Diameter applications | |||
| or creating generic Diameter extensions. | or creating generic Diameter extensions. | |||
| skipping to change at page 1, line 39 ¶ | skipping to change at page 1, line 39 ¶ | |||
| 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 November 13, 2014. | This Internet-Draft will expire on December 6, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 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 10, line 7 ¶ | skipping to change at page 10, line 7 ¶ | |||
| new functionality as well as maintain the integrity of existing | new functionality as well as maintain the integrity of existing | |||
| dictionaries. | dictionaries. | |||
| 4.4. Reusing Existing AVPs | 4.4. Reusing Existing AVPs | |||
| This section discusses rules in reusing existing AVP when reusing an | This section discusses rules in reusing existing AVP when reusing an | |||
| existing command or defining a new command in a new application. | existing command or defining a new command in a new application. | |||
| 4.4.1. Setting of the AVP Flags | 4.4.1. Setting of the AVP Flags | |||
| When reusing AVPs in a new application, the M-bit flag setting MUST | When reusing existing AVPs in a new application, application | |||
| be re-evaluated for a new Diameter application and, if necessary, | designers MUST specify the setting of the M-bit flag for a new | |||
| even for every command within the application. In general, for AVPs | Diameter application and, if necessary, for every command of the | |||
| defined outside of the Diameter base protocol, the characteristics of | application that can carry these AVPs. In general, for AVPs defined | |||
| an AVP are tied to its role within a given application and the | outside of the Diameter base protocol, the characteristics of an AVP | |||
| commands used in this application. | are tied to its role within a given application and the commands used | |||
| in this application. | ||||
| All other AVP flags (V-bit, P-bit, reserved bits) MUST remain | All other AVP flags (V-bit, P-bit, reserved bits) MUST remain | |||
| unchanged. | unchanged. | |||
| 4.4.2. Reuse of AVP of Type Enumerated | 4.4.2. Reuse of AVP of Type Enumerated | |||
| When reusing an AVP of type Enumerated in a command for a new | When reusing an AVP of type Enumerated in a command for a new | |||
| application, it is RECOMMENDED to avoid modifying the set of valid | application, it is RECOMMENDED to avoid modifying the set of valid | |||
| values defined for this AVP. Modifying the set of Enumerated values | values defined for this AVP. Modifying the set of Enumerated values | |||
| includes adding a value or deprecating the use of a value defined | includes adding a value or deprecating the use of a value defined | |||
| skipping to change at page 14, line 5 ¶ | skipping to change at page 14, line 5 ¶ | |||
| an Enumerated AVP whether the set of values will remain unchanged or | an Enumerated AVP whether the set of values will remain unchanged or | |||
| new values may be required in a near future. If such extension is | new values may be required in a near future. If such extension is | |||
| foreseen or cannot be avoided, it is RECOMMENED to rather define AVPs | foreseen or cannot be avoided, it is RECOMMENED to rather define AVPs | |||
| of type Unsigned32 or Unsigned64 in which the data field would | of type Unsigned32 or Unsigned64 in which the data field would | |||
| contain an address space representing "values" that would have the | contain an address space representing "values" that would have the | |||
| same use of Enumerated values. | same use of Enumerated values. | |||
| For illustration, an AVP describing possible access networks would be | For illustration, an AVP describing possible access networks would be | |||
| defined as follow: | defined as follow: | |||
| Access-Network-Type AVP (XXX) is of type Unsigned32 and contains an | Access-Network-Type AVP (XXX) is of type Unsigned32 and contains a | |||
| 32-bit address space representing types of access networks. This | 32-bit address space representing types of access networks. This | |||
| application defines the following classes of access networks, all | application defines the following classes of access networks, all | |||
| identified by the thousands digit in the decimal notation: | identified by the thousands digit in the decimal notation: | |||
| o 1xxx (Mobile Access Networks) | o 1xxx (Mobile Access Networks) | |||
| o 2xxx (Fixed Access Network) | o 2xxx (Fixed Access Network) | |||
| o 3xxx (Wireless Access Networks) | o 3xxx (Wireless Access Networks) | |||
| skipping to change at page 20, line 43 ¶ | skipping to change at page 20, line 43 ¶ | |||
| 7. Guidelines for Registrations of Diameter Values | 7. Guidelines for Registrations of Diameter Values | |||
| As summarized in the Section 3 of this document and further described | As summarized in the Section 3 of this document and further described | |||
| in the Section 1.3 of [RFC6733], there are four main ways to extend | in the Section 1.3 of [RFC6733], there are four main ways to extend | |||
| Diameter. The process for defining new functionality slightly varies | Diameter. The process for defining new functionality slightly varies | |||
| based on the different extensions. This section provides protocol | based on the different extensions. This section provides protocol | |||
| designers with some guidance regarding the definition of values for | designers with some guidance regarding the definition of values for | |||
| possible Diameter extensions and the necessary interaction with IANA | possible Diameter extensions and the necessary interaction with IANA | |||
| to register the new functionality. | to register the new functionality. | |||
| a. Defining new AVP values | a. Defining new AVP values | |||
| The specifications defining AVPs and AVP values MUST provide | The specifications defining AVPs and AVP values MUST provide | |||
| guidance for defining new values and the corresponding policy for | guidance for defining new values and the corresponding policy for | |||
| adding these values. For example, the RFC 5777 [RFC5777] defines | adding these values. For example, the RFC 5777 [RFC5777] defines | |||
| the Treatment-Action AVP which contains a list of valid values | the Treatment-Action AVP which contains a list of valid values | |||
| corresponding to pre-defined actions (drop, shape, mark, permit). | corresponding to pre-defined actions (drop, shape, mark, permit). | |||
| This set of values can be extended following the Specification | This set of values can be extended following the Specification | |||
| Required policy defined in [RFC5226]. As a second example, the | Required policy defined in [RFC5226]. As a second example, the | |||
| Diameter base specification [RFC6733] defines the Result-Code AVP | Diameter base specification [RFC6733] defines the Result-Code AVP | |||
| that contains a 32-bit address space used to identity possible | that contains a 32-bit address space used to identity possible | |||
| errors. According to the Section 11.3.2 of [RFC6733], new values | errors. According to the Section 11.3.2 of [RFC6733], new values | |||
| can be assigned by IANA via an IETF Review process [RFC5226]. | can be assigned by IANA via an IETF Review process [RFC5226]. | |||
| b. Creating new AVPs | b. Creating new AVPs | |||
| Two different types of AVP Codes namespaces can be used to create | Two different types of AVP Codes namespaces can be used to create | |||
| a new AVPs: | a new AVPs: | |||
| * IETF AVP Codes namespace; | * IETF AVP Codes namespace; | |||
| * Vendor-specific AVP Codes namespace. | * Vendor-specific AVP Codes namespace. | |||
| In the latter case, a vendor needs to be first assigned by IANA | In the latter case, a vendor needs to be first assigned by IANA | |||
| with a private enterprise number, which can be used within the | with a private enterprise number, which can be used within the | |||
| skipping to change at page 21, line 32 ¶ | skipping to change at page 21, line 32 ¶ | |||
| responsible for vendor-specific AVP code value assignment. The | responsible for vendor-specific AVP code value assignment. The | |||
| absence of a Vendor-Id or a Vendor-Id value of zero (0) in the AVP | absence of a Vendor-Id or a Vendor-Id value of zero (0) in the AVP | |||
| header identifies standard AVPs from the IETF AVP Codes namespace | header identifies standard AVPs from the IETF AVP Codes namespace | |||
| managed by IANA. The allocation of code values from the IANA- | managed by IANA. The allocation of code values from the IANA- | |||
| managed namespace is conditioned by an Expert Review of the | managed namespace is conditioned by an Expert Review of the | |||
| specification defining the AVPs or an IETF review if a block of | specification defining the AVPs or an IETF review if a block of | |||
| AVPs needs to be assigned. Moreover, the remaining bits of the | AVPs needs to be assigned. Moreover, the remaining bits of the | |||
| AVP Flags field of the AVP header are also assigned via Standard | AVP Flags field of the AVP header are also assigned via Standard | |||
| Action if the creation of new AVP Flags is desired. | Action if the creation of new AVP Flags is desired. | |||
| c. Creating new commands | c. Creating new commands | |||
| Unlike the AVP Code namespace, the Command Code namespace is flat | Unlike the AVP Code namespace, the Command Code namespace is flat | |||
| but the range of values is subdivided into three chunks with | but the range of values is subdivided into three chunks with | |||
| distinct IANA registration policies: | distinct IANA registration policies: | |||
| * A range of standard Command Code values that are allocated via | * A range of standard Command Code values that are allocated via | |||
| IETF review; | IETF review; | |||
| * A range of vendor-specific Command Code values that are | * A range of vendor-specific Command Code values that are | |||
| allocated on a First-Come/First-Served basis; | allocated on a First-Come/First-Served basis; | |||
| * A range of values reserved only for experimental and testing | * A range of values reserved only for experimental and testing | |||
| purposes. | purposes. | |||
| As for AVP Flags, the remaining bits of the Command Flags field of | As for AVP Flags, the remaining bits of the Command Flags field of | |||
| the Diameter header are also assigned via a Standards Action to | the Diameter header are also assigned via a Standards Action to | |||
| create new Command Flags if required. | create new Command Flags if required. | |||
| d. Creating new applications | d. Creating new applications | |||
| Similarly to the Command Code namespace, the Application-Id | Similarly to the Command Code namespace, the Application-Id | |||
| namespace is flat but divided into two distinct ranges: | namespace is flat but divided into two distinct ranges: | |||
| * A range of values reserved for standard Application-Ids | * A range of values reserved for standard Application-Ids | |||
| allocated after Expert Review of the specification defining the | allocated after Expert Review of the specification defining the | |||
| standard application; | standard application; | |||
| * A range for values for vendor specific applications, allocated | * A range for values for vendor specific applications, allocated | |||
| by IANA on a First-Come/First-Serve basis. | by IANA on a First-Come/First-Serve basis. | |||
| The IANA AAA parameters page can be found at http://www.iana.org/ | The IANA AAA parameters page can be found at http://www.iana.org/ | |||
| assignments/aaa-parameters/aaa-parameters.xml and the enterprise | assignments/aaa-parameters/aaa-parameters.xml and the enterprise | |||
| number IANA page is available at http://www.iana.org/assignments/ | number IANA page is available at http://www.iana.org/assignments/ | |||
| enterprise-numbers. More details on the policies followed by IANA | enterprise-numbers. More details on the policies followed by IANA | |||
| for namespace management (e.g. First-Come/First-Served, Expert | for namespace management (e.g. First-Come/First-Served, Expert | |||
| Review, IETF Review, etc.) can be found in [RFC5226]. | Review, IETF Review, etc.) can be found in [RFC5226]. | |||
| NOTE: | NOTE: | |||
| When the same functionality/extension is used by more than one | When the same functionality/extension is used by more than one | |||
| vendor, it is RECOMMENDED to define a standard extension. | vendor, it is RECOMMENDED to define a standard extension. | |||
| Moreover, a vendor-specific extension SHOULD be registered to | Moreover, a vendor-specific extension SHOULD be registered to | |||
| avoid interoperability issues in the same network. With this aim, | avoid interoperability issues in the same network. With this aim, | |||
| the registration policy of vendor-specific extension has been | the registration policy of vendor-specific extension has been | |||
| simplified with the publication of [RFC6733] and the namespace | simplified with the publication of [RFC6733] and the namespace | |||
| reserved for vendor-specific extensions is large enough to avoid | reserved for vendor-specific extensions is large enough to avoid | |||
| skipping to change at page 23, line 44 ¶ | skipping to change at page 23, line 44 ¶ | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | |||
| "Diameter Base Protocol", RFC 6733, October 2012. | "Diameter Base Protocol", RFC 6733, October 2012. | |||
| 12.2. Informative References | 12.2. Informative References | |||
| [Q.3303.3] | [Q.3303.3] | |||
| 3rd Generation Partnership Project, "ITU-T Recommendation | 3rd Generation Partnership Project, "ITU-T Recommendation | |||
| Q.3303.3, "Resource control protocol no. 3 (rcp3): | Q.3303.3, "Resource control protocol no. 3 (rcp3): | |||
| Protocol at the Rw interface between the Policy Decision | Protocol at the Rw interface between the Policy Decision | |||
| Physical Entity (PD-PE) and the Policy Enforcement | Physical Entity (PD-PE) and the Policy Enforcement | |||
| Physical Entity (PE-PE): Diameter"", 2008. | Physical Entity (PE-PE): Diameter"", 2008. | |||
| [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange | [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange | |||
| (IKE)", RFC 2409, November 1998. | (IKE)", RFC 2409, November 1998. | |||
| [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. | [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. | |||
| Arkko, "Diameter Base Protocol", RFC 3588, September 2003. | Arkko, "Diameter Base Protocol", RFC 3588, September 2003. | |||
| skipping to change at page 24, line 42 ¶ | skipping to change at page 24, line 42 ¶ | |||
| [RFC5777] Korhonen, J., Tschofenig, H., Arumaithurai, M., Jones, M., | [RFC5777] 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 (QoS) Attributes for Diameter", RFC 5777, February | Service (QoS) Attributes for Diameter", RFC 5777, February | |||
| 2010. | 2010. | |||
| [RFC5996] Kaufman, C., Hoffman, P., Nir, Y., and P. Eronen, | [RFC5996] Kaufman, C., Hoffman, P., Nir, Y., and P. Eronen, | |||
| "Internet Key Exchange Protocol Version 2 (IKEv2)", RFC | "Internet Key Exchange Protocol Version 2 (IKEv2)", RFC | |||
| 5996, September 2010. | 5996, September 2010. | |||
| [RFC6733] Fajardo, V., Arkko, J., Loughney, J., and G. Zorn, | ||||
| "Diameter Base Protocol", RFC 6733, October 2012. | ||||
| [RFC6735] Carlberg, K. and T. Taylor, "Diameter Priority Attribute- | [RFC6735] Carlberg, K. and T. Taylor, "Diameter Priority Attribute- | |||
| Value Pairs", RFC 6735, October 2012. | Value Pairs", RFC 6735, October 2012. | |||
| [RFC7075] Tsou, T., Hao, R., and T. Taylor, "Realm-Based Redirection | [RFC7075] Tsou, T., Hao, R., and T. Taylor, "Realm-Based Redirection | |||
| In Diameter", RFC 7075, November 2013. | In Diameter", RFC 7075, November 2013. | |||
| [RFC7155] Zorn, G., "Diameter Network Access Server Application", | [RFC7155] Zorn, G., "Diameter Network Access Server Application", | |||
| RFC 7155, April 2014. | RFC 7155, April 2014. | |||
| [TS29.228] | [TS29.228] | |||
| End of changes. 13 change blocks. | ||||
| 20 lines changed or deleted | 18 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/ | ||||