RFC 3969

The Internet Assigned Number Authority (IANA) Uniform Resource Identifier (URI) Parameter Registry for the Session Initiation Protocol (SIP)

πŸ“… published December 2004, from ietf

RFC 3969: The IANA URI Parameter Registry for SIP πŸ’–

okay bestie, let's get into it πŸŽ€ this is a Best Current Practice (that's BCP 99), it was written by G. Camarillo at Ericsson, and it's dated December 2004. It updates RFC 3427. It's about creating an IANA registry for SIP and SIPS URI parameters and their values πŸ“‡

Status of This Memo 🌸

This document is a BCP for the Internet community, and it's asking for discussion and suggestions for improvements. You can distribute it however you want, since distribution is unlimited ✨

Copyright (C) The Internet Society (2004).

Abstract 🧚

This doc makes a brand new IANA registry for SIP and SIPS URI parameters and their values πŸ—‚οΈ It also lists the parameters that already exist so they can be the starting values in that registry πŸ’…

Table of Contents πŸ“

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

1. Introduction πŸ¦‹

okay so RFC 3261 [1] lets you define new SIP URI and SIPS URI parameters, and new values for them. the thing is, RFC 3261 didn't include an IANA registry for any of that. so this doc is the one that makes it 🫢

RFC 3427 [2] is the doc that explains how to extend SIP. this document updates RFC 3427 by spelling out how to define and register new SIP and SIP URI parameters and their values, which is so needed ✨

2. Terminology πŸ’œ

okay, so in this doc, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" get read the way BCP 14, RFC 2119 [3] describes. they show the requirement levels for compliant SIP implementations πŸ”₯

3. Use of the Registry πŸŽ€

okay this part is the main character of the whole doc πŸ‘‘ SIP and SIPS URI parameters, plus their values, MUST be written up in a standards-track RFC before IANA will register them. that write-up MUST fully explain the syntax, the intended usage, and the semantics of the parameter. the whole point is to make sure different implementations actually work together, and to stop accidental namespace collisions between implementations of totally different features πŸ™ˆ

Note that this registry is different from the other protocol registries. it only deals with parameters and parameter values that are defined in RFCs. it doesn't have a vendor-extension tree. RFC 3427 [2] talks about the concerns with new SIP extensions that might be a security risk, that make the protocol way more complicated, or both. new parameters and parameter values need to be written up in RFCs because of those concerns πŸ’€

RFCs that define SIP URI or SIPS URI parameters, or parameter values, MUST register them with IANA the way described below ✨

Registered SIP and SIPS URI parameters are treated as "reserved words". to keep interoperability working, registered parameters MUST be used in a way that's consistent with what their defining RFC describes. implementations MUST NOT use "private" or "locally defined" URI parameters that clash with registered ones 🚫

Note that even though unregistered SIP and SIPS URI parameters can be used in implementations, developers should know it's risky. new SIP and SIPS URI parameters, and new values for them, can get registered at any time, and nothing guarantees that those new registered URI parameters won't clash with unregistered ones already in use 😭

some SIP and SIPS URI parameters only accept a set of predefined values. for example, a parameter that shows which transport protocol is in use might only accept the predefined tokens TCP, UDP, and SCTP. registering every value for every parameter like this would need a huge pile of subregistries, which is a lot. so instead, the team picked to register URI parameter values by reference 🧠 that means the entry for each URI parameter in the registry points at the RFCs that define new values for it. references to those RFCs show up in double brackets in the registry πŸŽ€

so the SIP and SIPS URI parameter registry has a column that says whether each parameter only accepts a set of predefined values or not. if you're implementing a parameter with a "yes" in that column, you need to go find all the valid values in the RFCs given as references πŸ’…

4. IANA Considerations 🌈

Section 27 of RFC 3261 [1] makes an IANA registry for method names, header field names, warning codes, status codes, and option tags. this spec makes a new sub-registry under the SIP Parameters registry πŸ—‚οΈ

  • SIP/SIPS URI Parameters

4.1. SIP and SIPS URI Parameters Sub-Registry πŸ“

IANA registers new SIP and SIPS URI parameters and new parameter values. when someone registers a new SIP or SIPS parameter or a new value for a parameter, the following information MUST be provided:

  • Name of the parameter.
  • Whether the parameter only accepts a set of predefined values.
  • Reference to the RFC that defines the parameter, and to any RFC that defines new values for the parameter. references to RFCs defining parameter values appear in double brackets in the registry.

Table 1 has the initial values for this sub-registry πŸ’–

   Parameter Name  Predefined Values  Reference
   ____________________________________________
   comp                   Yes        [RFC 3486]
   lr                      No        [RFC 3261]
   maddr                   No        [RFC 3261]
   method                 Yes        [RFC 3261]
   transport              Yes        [RFC 3261]
   ttl                     No        [RFC 3261]
   user                   Yes        [RFC 3261]

Table 1: IANA SIP and SIPS URI parameter sub-registry

any given parameter name is registered as both a SIP and a SIPS URI parameter. some parameters might not apply to one of the schemes, but the team decided to register every parameter as both anyway. that way you don't end up with two parameters of the same name, one for SIP URIs and one for SIPS URIs, that have different semantics πŸ™ƒ implementors are strongly urged to read the parameter specs for a detailed description of what each parameter means πŸ“š

4.2. Registration Policy for SIP and SIPS URI Parameters ✨

as per the terminology in RFC 2434 [4], the registration policy for SIP and SIPS URI parameters shall be "Specification Required".

for this registry, the parameter that IANA is being asked to register MUST be defined by a standards-track RFC πŸ”₯

5. Security Considerations πŸ’€

the registry in this doc doesn't have any security considerations on its own. BUT, as RFC 3427 points out, one big reason the IETF manages SIP extensions is to make sure every extension and parameter can be used securely πŸ” the supporting RFC publications for the parameter registrations described in this spec MUST give detailed security considerations for them. no skipping this one, bestie 😀

6. Acknowledgements 🫢

thank you to Jonathan Rosenberg, Henning Schulzrinne, Rohan Mahy, Dean Willis, and Allison Mankin for giving useful comments on this document πŸ’œ

7. Normative References πŸ“–

[1] 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.

[2] 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.

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

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

Author's Address 🌸

Gonzalo Camarillo
Ericsson
Advanced Signalling Research Lab.
FIN-02420 Jorvas
Finland

EMail:  Gonzalo.Camarillo@ericsson.com

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 on 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 on the extent to which any license under such rights might or might not be available. it also doesn't say it has made any independent effort to identify any such rights. info on the IETF's procedures for rights in IETF Documents can be found in BCP 78 and BCP 79.

copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt to get a general license or permission for the use of such proprietary rights by implementers or users of this specification can be found in the IETF online IPR repository at http://www.ietf.org/ipr.

the IETF invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology required to implement this standard. please send that info to the IETF at ietf-ipr@ietf.org πŸ’…

Acknowledgement 🌈

Funding for the RFC Editor function is currently provided by the Internet Society. πŸ’–

πŸ“¦ where this page comes from