RFC 6737

The Diameter Capabilities Update Application

๐Ÿ“… published October 2012, from ietf

RFC 6737: The Diameter Capabilities Update Application ๐Ÿ’–

  • Who wrote it: K. Jiao (also listed as Jiao Kang) from Huawei, and G. Zorn (Glen Zorn) from Network Zen ๐Ÿ‘‘
  • Category: Standards Track, ISSN 2070-1721 ๐ŸŽ€
  • Date: October 2012 ๐ŸŒธ
  • Obsoletes / Updates: nothing listed in the title block, so this one doesn't replace or update any other RFC ๐Ÿฆ‹

Abstract ๐Ÿฆ‹

Okay so this doc defines a brand new Diameter application plus its own Command Codes ๐Ÿ’…. The Capabilities Update application lets you change certain Diameter peer capabilities on the fly while the peer-to-peer connection is still in the open state โœจ. No restart drama needed ๐Ÿซถ.

Status of This Memo ๐Ÿ“œ

So this is an Internet Standards Track document ๐ŸŒˆ.

It's a product of the Internet Engineering Task Force (IETF) and it represents the consensus of the IETF community ๐Ÿ‘‘. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG) ๐Ÿ’œ. If you want more on Internet Standards, check out Section 2 of RFC 5741 ๐Ÿ”ฅ.

For the current status, any errata, and how to give feedback, go to http://www.rfc-editor.org/info/rfc6737 ๐Ÿงš.

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved ๐Ÿฉท.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the publication date. Please read these carefully, because they spell out your rights and restrictions for this document ๐Ÿ“–. Code Components pulled out of this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as described in the Simplified BSD License ๐Ÿ’€.

Table of Contents ๐Ÿงš

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 2
   2.  Specification of Requirements . . . . . . . . . . . . . . . . . 2
   3.  Diameter Protocol Considerations  . . . . . . . . . . . . . . . 3
   4.  Capabilities Update . . . . . . . . . . . . . . . . . . . . . . 3
     4.1.  Command Code Values . . . . . . . . . . . . . . . . . . . . 4
       4.1.1.  Capabilities-Update-Request . . . . . . . . . . . . . . 4
       4.1.2.  Capabilities-Update-Answer  . . . . . . . . . . . . . . 5
   5.  Security Considerations . . . . . . . . . . . . . . . . . . . . 5
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5
     6.1.  Application Identifier  . . . . . . . . . . . . . . . . . . 5
     6.2.  Command Codes . . . . . . . . . . . . . . . . . . . . . . . 5
   7.  Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . 5
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . 5
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . . . 6
     9.1.  Normative References  . . . . . . . . . . . . . . . . . . . 6
     9.2.  Informative References  . . . . . . . . . . . . . . . . . . 6

1. Introduction โœจ

Okay bestie, capabilities exchange is a big deal in the Diameter base protocol [RFC6733] ๐Ÿ’…. Peers swap identities and Diameter capabilities here, like the protocol version number, supported Diameter applications, security mechanisms, and more ๐Ÿงš. But as RFC 3588 defines it, this exchange only happens once, right when a transport connection between two peers starts ๐Ÿฅบ. So if a peer's capabilities change (say after a software update), the existing connection(s) have to be torn down, along with every user session on them, and then restarted before the new capabilities can be advertised ๐Ÿ’€.

This document defines a new Diameter application that lets you update a subset of peer capabilities over an existing connection ๐Ÿฆ‹. Because the Capabilities Update application runs over an existing transport connection, some changes are off the table. Specifically, you can't change the security mechanism in use ๐Ÿ™ˆ. If the security method between a pair of peers changes, the affected connection MUST be restarted ๐Ÿ”ฅ.

2. Specification of Requirements ๐Ÿ“

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119] ๐Ÿซถ.

3. Diameter Protocol Considerations ๐ŸŒท

This section explains how the Diameter Capabilities Update application fits with the Diameter base protocol ๐Ÿ’œ.

This document specifies Diameter Application-Id 10 โœจ. Diameter nodes that conform to this spec MUST advertise support by including the value 10 in the Auth-Application-Id of the Capabilities-Exchange-Request (CER) and Capabilities-Exchange-Answer (CEA) commands [RFC6733] ๐ŸŽ€.

4. Capabilities Update ๐Ÿ”„

When a Diameter node that conforms to this spec changes its capabilities, the node MUST notify every node it has an open transport connection with, as long as that node has also advertised support for the Capabilities Update application ๐Ÿ“ฃ. It does this with the Capabilities-Update-Request (CUR) message (Section 4.1.1) ๐Ÿ’Œ. That message updates a peer's capabilities, like supported Diameter applications and so on ๐ŸŒธ.

A Diameter node only sends a given command to peers that have advertised support for the Diameter application that defines that command ๐ŸŽฏ. So a Diameter node must cache the supported applications, which keeps unrecognized commands and/or Attribute-Value Pairs (AVPs) from being sent to a peer for no reason ๐Ÿง .

The receiver of the CUR MUST work out the common applications by taking the intersection of its own supported Application Ids with all the Application-Id AVPs in the CUR (Auth-Application-Id, Acct-Application-Id, and Vendor-Specific-Application-Id) ๐Ÿ”. The value of the Vendor-Id AVP inside Vendor-Specific-Application-Id MUST NOT be used during that computation ๐Ÿ™…โ€โ™€๏ธ.

If the receiver of a CUR has no applications in common with the sender, it MUST return a Capabilities-Update-Answer (CUA) (Section 4.1.2) with the Result-Code AVP set to DIAMETER_NO_COMMON_APPLICATION [RFC6733], and it SHOULD disconnect the transport-layer connection ๐Ÿ˜ญ. However, if active sessions are using the connection, peers MAY hold off on disconnecting until those sessions can be redirected or gracefully terminated ๐Ÿซถ. Also, getting a CUA from a peer that advertises itself as a relay (see [RFC6733], Section 2.4) MUST be read as having common applications with that peer ๐Ÿงš.

Same vibes as CER/CEA: CUR and CUA messages MUST NOT be proxied, redirected, or relayed ๐Ÿšซ.

Even though CUR/CUA can't be proxied, an upstream agent can still get a message for which no peers are available to handle the application matching the Command Code ๐Ÿ˜ฌ. That could happen if, for example, the peers are too busy or are down ๐Ÿฅฒ. In that case, the 'E' bit MUST be set in the answer message, with the Result-Code AVP set to DIAMETER_UNABLE_TO_DELIVER, so the downstream peer knows to take action (e.g., rerouting requests to an alternate peer) ๐Ÿ›ฃ๏ธโœจ.

4.1. Command Code Values ๐Ÿ”ข

This section defines Command Code [RFC6733] values that MUST be supported by all Diameter implementations that conform to this spec ๐Ÿ’ช. The two Command Codes defined here are Capabilities-Update-Request (CUR, Section 4.1.1) and Capabilities-Update-Answer (CUA, Section 4.1.2) ๐ŸŽ€. The Diameter Command Code Format (CCF) ([RFC6733], Section 3.2) is used in their definitions ๐Ÿ“.

4.1.1. Capabilities-Update-Request ๐Ÿ“ฎ

The Capabilities-Update-Request (CUR) is indicated by the Command Code set to 328 and the Command Flags' 'R' bit set. It gets sent to update local capabilities ๐Ÿ”ง. If a transport failure is detected, this message MUST NOT be sent to an alternate peer ๐Ÿ™…โ€โ™€๏ธ.

When Diameter runs over the Stream Control Transmission Protocol (SCTP) [RFC4960], connections can span multiple interfaces and multiple IP addresses ๐ŸŒ. So the Capabilities-Update-Request message MUST contain one Host-IP-Address AVP for each potential IP address that might be used locally when sending Diameter messages ๐Ÿงญ.

Message Format ๐Ÿ“‹

      <CUR> ::= < Diameter Header: 328, REQ >
                { Origin-Host }
                { Origin-Realm }
             1* { Host-IP-Address }
                { Vendor-Id }
                { Product-Name }
                [ Origin-State-Id ]
              * [ Supported-Vendor-Id ]
              * [ Auth-Application-Id ]
              * [ Acct-Application-Id ]
              * [ Vendor-Specific-Application-Id ]
                [ Firmware-Revision ]
              * [ AVP ]

4.1.2. Capabilities-Update-Answer ๐Ÿ’Œ

The Capabilities-Update-Answer is indicated by the Command Code set to 328 and the Command Flags' 'R' bit cleared. It gets sent in response to a CUR message ๐Ÿ’ž.

Message Format ๐Ÿ“‹

                     <CUA> ::= < Diameter Header: 328 >
                               { Origin-Host }
                               { Origin-Realm }
                               { Result-Code }
                               [ Error-Message ]
                             * [ AVP ]

5. Security Considerations ๐Ÿ”

โš ๏ธ Security matters here, bestie. Everything in the security considerations of the Diameter base protocol [RFC6733] applies to this document too. Don't skip it ๐Ÿ’€.

The security considerations applicable to the Diameter base protocol [RFC6733] are also applicable to this document ๐Ÿ›ก๏ธ.

6. IANA Considerations ๐Ÿ—‚๏ธ

This section explains the criteria IANA should use when assigning numbers in the namespaces used within this document ๐Ÿ“š.

6.1. Application Identifier ๐Ÿ†”

This specification assigns the value 10 (Diameter Capabilities Update) from the Application Identifiers namespace [RFC6733]. See Section 3 for how the namespace is assigned in this specification ๐ŸŽ€.

6.2. Command Codes ๐Ÿ”ข

This specification assigns the value 328 (Capabilities-Update-Request/Capabilities-Update-Answer (CUR/CUA)) from the Command Codes namespace [RFC6733]. See Section 4.1 for how the namespace is assigned in this specification ๐Ÿ’œ.

7. Contributors ๐Ÿซ‚

This document is based on work done by Tina Tsou ๐ŸŒŸ.

8. Acknowledgements ๐Ÿ’–

Thanks to Sebastien Decugis, Niklas Neumann, Subash Comerica, Lionel Morand, Dan Romascanu, Dan Harkins, and Ravi for the helpful review and discussion ๐Ÿซถ๐ŸŽ€.

9. References ๐Ÿ“š

9.1. Normative References ๐Ÿ”’

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC6733]  Fajardo, V., Arkko, J., Loughney, J., and G. Zorn,
           "Diameter Base Protocol", RFC 6733, October 2012.

9.2. Informative References ๐Ÿ’ญ

[RFC4960]  Stewart, R., "Stream Control Transmission Protocol",
           RFC 4960, September 2007.

Authors' Addresses ๐Ÿ’Œ

Jiao Kang
Huawei Technologies
Section F1, Huawei Industrial Base
Bantian, Longgang District
Shenzhen  518129
P.R. China

EMail: kangjiao@huawei.com


Glen Zorn
Network Zen
227/358 Thanon Sanphawut
Bang Na, Bangkok  10260
Thailand

Phone: +66 (0) 909-201060
EMail: glenzorn@gmail.com
๐Ÿ“ฆ where this page comes from