RFC 3968 BEST CURRENT PRACTICE SIP · IANA · REGISTRY

SIP Header Params: The Internet Assigned Number Authority (IANA) Header Field Parameter Registry for the Session Initiation Protocol (SIP)

The official list that keeps SIP header field parameter names from colliding.

On rfc-editor.org ↗
PUBLISHED
December 2004
AUTHORS
G. Camarillo
STREAM
IETF
BUILDS ON
RFC 3427 — SIP change process
REGISTRATION POLICY
IETF Consensus
BCP NUMBER
BCP 98
REQUIRED PER ENTRY
Header field, parameter name, predefined values flag, RFC reference
DOI
10.17487/RFC3968

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                       G. Camarillo
Request for Comments: 3968                                      Ericsson
Updates: 3427                                              December 2004
BCP: 98
Category: Best Current Practice


             The Internet Assigned Number Authority (IANA)
                  Header Field Parameter Registry for
                 the Session Initiation Protocol (SIP)

Status of This Memo

   This document specifies an Internet Best Current Practices for the
   Internet Community, and requests discussion and suggestions for
   improvements.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2004).

Abstract

   This document creates an Internet Assigned Number Authority (IANA)
   registry for the Session Initiation Protocol (SIP) header field
   parameters and parameter values.  It also lists the already existing
   parameters and parameter values to be used as the initial entries for
   this registry.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  2
   3.  Use of the Registry  . . . . . . . . . . . . . . . . . . . . .  2
   4.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  3
       4.1.  Header Field Parameters Sub-Registry . . . . . . . . . .  3
       4.2.  Registration Policy for SIP Header Field Parameters. . .  6
   5.  Security Considerations  . . . . . . . . . . . . . . . . . . .  7
   6.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .  7
   7.  Normative References . . . . . . . . . . . . . . . . . . . . .  7
       Author's Address . . . . . . . . . . . . . . . . . . . . . . .  7
       Full Copyright Statement . . . . . . . . . . . . . . . . . . .  8

1.  Introduction

   RFC 3261 [3] allows new header field parameters and new parameter
   values to be defined.  However, RFC 3261 omitted an IANA registry for
   them.  This document creates such a registry.

   RFC 3427 [4] documents the process to extend SIP.  This document
   updates RFC 3427 by specifying how to define and register new SIP
   header field parameters and parameter values.

2.  Terminology

   In this document, the key words "MUST", "MUST NOT", "REQUIRED",
   "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
   RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as
   described in BCP 14, RFC 2119 [1] and indicate requirement levels for
   compliant implementations.

3.  Use of the Registry

   SIP header field parameters and parameter values MUST be documented
   in an RFC in order to be registered by IANA.  This documentation MUST
   fully explain the syntax, intended usage, and semantics of the
   parameter or parameter value.  The intent of this requirement is to
   assure interoperability between independent implementations, and to
   prevent accidental namespace collisions between implementations of
   dissimilar features.

      Note that this registry, unlike other protocol registries, only
      deals with parameters and parameter values defined in RFCs (i.e.,
      it lacks a vendor-extension tree).  RFC 3427 [4] documents
      concerns with regards to new SIP extensions which may damage
      security, greatly increase the complexity of the protocol, or
      both.  New parameters and parameter values need to be documented
      in RFCs as a result of these concerns.

   RFCs defining SIP header field parameters or parameter values MUST
   register them with IANA as described below.

   Registered SIP header field parameters and parameter values are to be
   considered "reserved words".  In order to preserve interoperability,
   registered parameters and parameter values MUST be used in a manner
   consistent with that described in their defining RFC.
   Implementations MUST NOT utilize "private" or "locally defined" SIP
   header field parameters or parameter values that conflict with
   registered parameters.

      Note that although unregistered SIP header field parameters and
      parameter values may be used in implementations, developers are
      cautioned that usage of such parameters is risky.  New SIP header
      field parameters and parameter values may be registered at any
      time, and there is no assurance that these new registered
      parameters or parameter values will not conflict with unregistered
      parameters currently in use.

   Some SIP header field parameters only accept a set of predefined
   parameter values.  For example, a parameter indicating the transport
   protocol in use may only accept the predefined tokens TCP, UDP, and
   SCTP as valid values.  Registering all parameter values for all SIP
   header field parameters of this type would require a large number of
   subregistries.  Instead, we have chosen to register parameter values
   by reference.  That is, the entry in the parameter registry for a
   given header field parameter contains references to the RFCs defining
   new values of the parameter.  References to RFCs defining parameter
   values appear in double brackets in the registry.

   So, the header field parameter registry contains a column that
   indicates whether or not each parameter only accepts a set of
   predefined values.  Implementers of parameters with a "yes" in that
   column need to find all the valid parameter values in the RFCs
   provided as references.

4.  IANA Considerations

   Section 27 of RFC 3261 [3] creates an IANA registry for method names,
   header field names, warning codes, status codes, and option tags.
   This specification creates a new sub-registry for header field
   parameters under the SIP Parameters registry.

4.1.  Header Field Parameters Sub-Registry

   The majority of the SIP header fields can be extended by defining new
   parameters.  New SIP header field parameters are registered by the
   IANA.  When registering a new parameter for a header field or a new
   value for a parameter, the following information MUST be provided.

   o  Header field in which the parameter can appear.

   o  Name of the header field parameter being registered.

   o  Whether the parameter only accepts a set of predefined values.

   o  A reference to the RFC where the parameter is defined and to any
      RFC that defines new values for the parameter.  References to RFCs
      defining parameter values appear in double brackets in the
      registry.

   Parameters that can appear in different header fields MAY have the
   same name.  However, parameters that can appear in the same header
   field MUST have different names.

   The following are the initial values for this sub-registry.

   Header Field                  Parameter Name   Predefined  Reference
                                                    Values
   _____________________________________________________________________
   Accept                        q                    No     [RFC 3261]
   Accept-Encoding               q                    No     [RFC 3261]
   Accept-Language               q                    No     [RFC 3261]
   Authorization                 algorithm           Yes     [RFC 3261]
                                                            [[RFC 3310]]
   Authorization                 auts                 No     [RFC 3310]
   Authorization                 cnonce               No     [RFC 3261]
   Authorization                 nc                   No     [RFC 3261]
   Authorization                 nonce                No     [RFC 3261]
   Authorization                 opaque               No     [RFC 3261]
   Authorization                 qop                 Yes     [RFC 3261]
   Authorization                 realm                No     [RFC 3261]
   Authorization                 response             No     [RFC 3261]
   Authorization                 uri                  No     [RFC 3261]
   Authorization                 username             No     [RFC 3261]
   Authentication-Info           cnonce               No     [RFC 3261]
   Authentication-Info           nc                   No     [RFC 3261]
   Authentication-Info           nextnonce            No     [RFC 3261]
   Authentication-Info           qop                 Yes     [RFC 3261]
   Authentication-Info           rspauth              No     [RFC 3261]
   Call-Info                     purpose             Yes     [RFC 3261]
   Contact                       expires              No     [RFC 3261]
   Contact                       q                    No     [RFC 3261]
   Content-Disposition           handling            Yes     [RFC 3261]
   Event                         id                   No     [RFC 3265]
   From                          tag                  No     [RFC 3261]
   P-Access-Network-Info         cgi-3gpp             No     [RFC 3455]
   P-Access-Network-Info         utran-cell-id-3gpp   No     [RFC 3455]
   P-Charging-Function-Addresses ccf                  No     [RFC 3455]
   P-Charging-Function-Addresses ecf                  No     [RFC 3455]
   P-Charging-Vector             icid-value           No     [RFC 3455]
   P-Charging-Vector             icid-generated-at    No     [RFC 3455]
   P-Charging-Vector             orig-ioi             No     [RFC 3455]
   P-Charging-Vector             term-ioi             No     [RFC 3455]
   P-DCS-Billing-Info            called               No     [RFC 3603]
   P-DCS-Billing-Info            calling              No     [RFC 3603]
   P-DCS-Billing-Info            charge               No     [RFC 3603]
   P-DCS-Billing-Info            locroute             No     [RFC 3603]
   P-DCS-Billing-Info            rksgroup             No     [RFC 3603]
   P-DCS-Billing-Info            routing              No     [RFC 3603]
   P-DCS-LAES                    content              No     [RFC 3603]
   P-DCS-LAES                    key                  No     [RFC 3603]
   P-DCS-Redirect                count                No     [RFC 3603]
   P-DCS-Redirect                redirector-uri       No     [RFC 3603]
   Proxy-Authenticate            algorithm           Yes     [RFC 3261]
                                                            [[RFC 3310]]
   Proxy-Authenticate            domain               No     [RFC 3261]
   Proxy-Authenticate            nonce                No     [RFC 3261]
   Proxy-Authenticate            opaque               No     [RFC 3261]
   Proxy-Authenticate            qop                 Yes     [RFC 3261]
   Proxy-Authenticate            realm                No     [RFC 3261]
   Proxy-Authenticate            stale               Yes     [RFC 3261]
   Proxy-Authorization           algorithm           Yes     [RFC 3261]
                                                            [[RFC 3310]]
   Proxy-Authorization           auts                 No     [RFC 3310]
   Proxy-Authorization           cnonce               No     [RFC 3261]
   Proxy-Authorization           nc                   No     [RFC 3261]
   Proxy-Authorization           nonce                No     [RFC 3261]
   Proxy-Authorization           opaque               No     [RFC 3261]
   Proxy-Authorization           qop                 Yes     [RFC 3261]
   Proxy-Authorization           realm                No     [RFC 3261]
   Proxy-Authorization           response             No     [RFC 3261]
   Proxy-Authorization           uri                  No     [RFC 3261]
   Proxy-Authorization           username             No     [RFC 3261]
   Reason                        cause               Yes     [RFC 3326]
   Reason                        text                 No     [RFC 3326]
   Retry-After                   duration             No     [RFC 3261]
   Security-Client               alg                 Yes     [RFC 3329]
   Security-Client               ealg                Yes     [RFC 3329]
   Security-Client               d-alg               Yes     [RFC 3329]
   Security-Client               d-qop               Yes     [RFC 3329]
   Security-Client               d-ver                No     [RFC 3329]
   Security-Client               mod                 Yes     [RFC 3329]
   Security-Client               port1                No     [RFC 3329]
   Security-Client               port2                No     [RFC 3329]
   Security-Client               prot                Yes     [RFC 3329]
   Security-Client               q                    No     [RFC 3329]
   Security-Client               spi                  No     [RFC 3329]
   Security-Server               alg                 Yes     [RFC 3329]
   Security-Server               ealg                Yes     [RFC 3329]
   Security-Server               d-alg               Yes     [RFC 3329]
   Security-Server               d-qop               Yes     [RFC 3329]
   Security-Server               d-ver                No     [RFC 3329]
   Security-Server               mod                 Yes     [RFC 3329]
   Security-Server               port1                No     [RFC 3329]
   Security-Server               port2                No     [RFC 3329]
   Security-Server               prot                Yes     [RFC 3329]
   Security-Server               q                    No     [RFC 3329]
   Security-Server               spi                  No     [RFC 3329]
   Security-Verify               alg                 Yes     [RFC 3329]
   Security-Verify               ealg                Yes     [RFC 3329]
   Security-Verify               d-alg               Yes     [RFC 3329]
   Security-Verify               d-qop               Yes     [RFC 3329]
   Security-Verify               d-ver                No     [RFC 3329]
   Security-Verify               mod                 Yes     [RFC 3329]
   Security-Verify               port1                No     [RFC 3329]
   Security-Verify               port2                No     [RFC 3329]
   Security-Verify               prot                Yes     [RFC 3329]
   Security-Verify               q                    No     [RFC 3329]
   Security-Verify               spi                  No     [RFC 3329]
   Subscription-State            expires              No     [RFC 3265]
   Subscription-State            reason              Yes     [RFC 3265]
   Subscription-State            retry-after          No     [RFC 3265]
   To                            tag                  No     [RFC 3261]
   Via                           branch               No     [RFC 3261]
   Via                           comp                Yes     [RFC 3486]
   Via                           maddr                No     [RFC 3261]
   Via                           received             No     [RFC 3261]
   Via                           rport                No     [RFC 3581]
   Via                           ttl                  No     [RFC 3261]
   WWW-Authenticate              algorithm           Yes     [RFC 3261]
                                                            [[RFC 3310]]
   WWW-Authenticate              domain              Yes     [RFC 3261]
   WWW-Authenticate              nonce                No     [RFC 3261]
   WWW-Authenticate              opaque               No     [RFC 3261]
   WWW-Authenticate              qop                 Yes     [RFC 3261]
   WWW-Authenticate              realm                No     [RFC 3261]
   WWW-Authenticate              stale               Yes     [RFC 3261]

4.2.  Registration Policy for SIP Header Field Parameters

   As per the terminology in RFC 2434 [2], the registration policy for
   SIP header field parameters and parameter values shall be "IETF
   Consensus."

   For the purposes of this registry, the parameter or the parameter
   value for which IANA registration is requested MUST be defined by an
   RFC.  There is no requirement that this RFC be standards-track.

5.  Security Considerations

   The registry in this document does not in itself have security
   considerations.  However, as mentioned in RFC 3427, an important
   reason for the IETF to manage the extensions of SIP is to ensure that
   all extensions and parameters are able to provide secure usage.  The
   supporting RFC publications for parameter registrations described
   this specification MUST provide detailed security considerations for
   them.

6.  Acknowledgements

   Jonathan Rosenberg, Henning Schulzrinne, Rohan Mahy, Dean Willis, Aki
   Niemi, Bill Marshall, Miguel A. Garcia-Martin, Jean Francois Mule,
   and Allison Mankin provided useful comments on this document.

7.  Normative References

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

   [2] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA
       Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.

   [3] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
       Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
       Session Initiation Protocol", RFC 3261, June 2002.

   [4] Mankin, A., Bradner, S., Mahy, R., Willis, D., Ott, J., and B.
       Rosen, "Change Process for the Session Initiation Protocol
       (SIP)", BCP 67, RFC 3427, December 2002.

Author's Address

   Gonzalo Camarillo
   Ericsson
   Hirsalantie 11
   Jorvas  02420
   Finland

   EMail: Gonzalo.Camarillo@ericsson.com

Full Copyright Statement

   Copyright (C) The Internet Society (2004).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the IETF's procedures with respect to rights in IETF Documents can
   be found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at ietf-
   ipr@ietf.org.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.

AI ELI5

On this page
PROBLEMSIP lets people define new header field parameters and parameter values, but RFC 3261 never created an IANA registry for them, so names could clash.
MECHANISMRFC 3968 creates a sub-registry of SIP header field parameters under the SIP Parameters registry. Anything registered must be defined in an RFC, and the registry starts with the parameters that already exist.
WHY IT MATTERSRegistered parameters become reserved words that implementations must use as their defining RFC describes. The document also updates RFC 3427.

§1Why a Parameter Registry

The Session Initiation Protocol (SIP) lets people define new header field parameters and new values for them. RFC 3261 allows this but left out an IANA registry for them. RFC 3968 creates that registry.

It also updates RFC 3427, which documents the process for extending SIP, by saying how to define and register new header field parameters and parameter values. The document uses the requirement words MUST, SHOULD and MAY as defined in BCP 14.

SIP messages have little labelled settings. Nobody kept a master list of the labels, so this RFC starts one.

§3Rules for Using the Registry

A SIP header field parameter or parameter value MUST be documented in an RFC before IANA will register it. The RFC MUST fully explain the syntax, intended usage and semantics. The goal is interoperability between independent implementations and no accidental name collisions between dissimilar features. Unlike other protocol registries, this one has no vendor-extension tree, because RFC 3427 raises concerns that new extensions may damage security or greatly increase the complexity of the protocol.

RFCs that define parameters MUST register them. Registered names are treated as reserved words: they MUST be used consistently with their defining RFC, and implementations MUST NOT use private or locally defined parameters that conflict with registered ones.

Unregistered parameters may still be used, but the RFC warns this is risky: a new registration can appear at any time and may conflict with one already in use.

If you want a name in the book, you must first write down exactly what it means. Once a name is in the book, nobody may use it for something else.

§4.1What a Registry Entry Contains

The registry is a sub-registry under the SIP Parameters registry that section 27 of RFC 3261 created for method names, header field names, warning codes, status codes and option tags. A registration MUST give four things: the header field the parameter appears in, the parameter name, whether the parameter accepts only a set of predefined values, and a reference to the RFC that defines it (plus any RFC that defines new values).

Parameters in different header fields MAY share a name. Parameters in the same header field MUST have different names.

Parameter values are registered by reference rather than in their own sub-registries. For a parameter marked Yes in the predefined-values column, implementers must read the referenced RFCs to find all valid values. References to RFCs that define values appear in double brackets, as with [[RFC 3310]] for the algorithm parameter.

The initial contents cover many header fields, including Accept, Authorization, Contact, From, To, Via, Reason, Security-Client and the P-header families, mostly pointing at RFC 3261 and a handful of other RFCs.

Each entry is a card with four lines: where the setting lives, its name, whether it has a fixed menu of choices, and which RFC explains it.

A FEW INITIAL REGISTRY ENTRIES (RFC 3968)
Header fieldParameterPredefined valuesReference
ViabranchNoRFC 3261
ViarportNoRFC 3581
ViacompYesRFC 3486
ReasoncauseYesRFC 3326
AuthorizationalgorithmYesRFC 3261, [[RFC 3310]]

§4.2Registration Policy

Using the terminology of RFC 2434, the policy for SIP header field parameters and parameter values is IETF Consensus. The parameter or value MUST be defined by an RFC, but that RFC does not have to be on the standards track.

To get into the book, the community has to agree and the idea has to be written up in an RFC. It does not have to be the most official kind.

§5Security Considerations

The registry itself has no security considerations. However, as RFC 3427 notes, an important reason for the IETF to manage SIP extensions is to ensure that all extensions and parameters can be used securely. The RFCs that support parameter registrations MUST give detailed security considerations for them.

The book is harmless, but anyone adding a new entry has to explain how to use it safely.

§6References