RFC 3968

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

πŸ“… published December 2004, from ietf

RFC 3968: The Internet Assigned Number Authority (IANA) Header Field Parameter Registry for the Session Initiation Protocol (SIP) πŸŽ€

  • Network Working Group 🌸
  • Author: G. Camarillo, Ericsson πŸ’…
  • Date: December 2004 πŸ“…
  • BCP: 98 πŸ‘‘
  • Category: Best Current Practice ✨
  • Updates: RFC 3427 πŸ”₯

Status of This Memo πŸ’–

okay so this doc is a Best Current Practice for the Internet Community, and it's basically asking everyone for discussion and suggestions for improvements 🫢 Distribution of this memo is unlimited, so share it with your bestie πŸ’œ

Copyright (C) The Internet Society (2004).

Abstract πŸ¦‹

this doc creates an Internet Assigned Number Authority (IANA) registry for the Session Initiation Protocol (SIP) header field parameters and parameter values πŸ’… it also lists the parameters and parameter values that already exist, which become the initial entries in 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 🧚

okay so RFC 3261 [3] lets you define new header field parameters and new parameter values πŸ’– but the catch is that RFC 3261 never had an IANA registry for them 😭 this document creates that registry ✨

RFC 3427 [4] documents the process for extending SIP πŸŽ€ this document updates RFC 3427 by spelling out 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 they show the requirement levels for compliant implementations 🫢

3. Use of the Registry πŸŽ€

SIP header field parameters and parameter values MUST be documented in an RFC before IANA can register them πŸ’… that documentation MUST fully explain the syntax, intended usage, and semantics of the parameter or parameter value πŸ“– the whole point is interoperability between independent implementations, plus stopping accidental namespace collisions between implementations of dissimilar features 🌈

Note: unlike other protocol registries, this one only deals with parameters and parameter values defined in RFCs, so it has no vendor-extension tree πŸ™ˆ RFC 3427 [4] documents concerns about new SIP extensions that could damage security, greatly increase the complexity of the protocol, or both 😭 that's why new parameters and parameter values need to be documented in RFCs.

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 count as "reserved words" πŸ‘‘ to keep interoperability intact, registered parameters and parameter values MUST be used in a manner consistent with the one described in their defining RFC πŸ’– Implementations MUST NOT utilize "private" or "locally defined" SIP header field parameters or parameter values that conflict with registered ones 🚫

Note: unregistered SIP header field parameters and parameter values can still be used in implementations, but developers are warned that using them is risky πŸ’€ new ones can be registered at any time, and there's no guarantee they won't clash with unregistered parameters already in use πŸ™ˆ

Some SIP header field parameters only accept a set of predefined values πŸ“ for example, a parameter that indicates the transport protocol in use can only accept the predefined tokens TCP, UDP, and SCTP as valid values πŸ¦‹ registering every parameter value for every SIP header field parameter of this type would take a huge pile of subregistries 😩 so instead, we register parameter values by reference πŸ’… the registry entry for a given header field parameter contains references to the RFCs that define new values of that parameter πŸ“š those RFC references appear in double brackets in the registry ✨

so the header field parameter registry has a column showing whether 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 listed 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 ✨

okay so most SIP header fields can be extended by adding new parameters πŸ’… and IANA is the one who registers those new parameters πŸ¦‹ when you're adding a parameter for a header field or a new value for a parameter, you MUST provide the following info:

  • The header field the parameter can appear in.
  • The name of the header field parameter you're registering.
  • Whether the parameter only accepts a set of predefined values.
  • A reference to the RFC that defines the parameter, plus any RFC that defines new values for it. References to RFCs defining parameter values go in double brackets in the registry πŸŽ€

Parameters in different header fields MAY share the same name 🌸 but parameters in the same header field MUST have different names, no exceptions bestie 😭

Here are the starting 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 πŸ”₯

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

For this registry, the parameter or parameter value you want IANA to register MUST be defined by an RFC πŸ“œ and that RFC doesn't have to be standards-track, so no pressure 🌈

5. Security Considerations πŸ”

Okay, serious moment, bestie πŸ™ˆ The registry in this document doesn't have security considerations by itself. BUT, as RFC 3427 points out, a big reason the IETF manages SIP extensions is to make sure every extension and parameter can be used securely 😭 The supporting RFC publications for parameter registrations described in this specification MUST provide detailed security considerations. No skipping this part, periodt πŸ’€

6. Acknowledgements 🫢

Jonathan Rosenberg, Henning Schulzrinne, Rohan Mahy, Dean Willis, Aki Niemi, Bill Marshall, Miguel A. Garcia-Martin, Jean Francois Mule, and Allison Mankin gave useful comments on this document, and we love them for it πŸ’œ

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

Okay bestie, legal time, but make it cute πŸŽ€ The Internet Society owns the copyright here (2004) πŸ’– This document is subject to the rights, licenses and restrictions in BCP 78, and except as set forth there, the authors keep all their rights 🫢

The whole document is 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. 😭 Yes, it's all caps, and yes, it's giving serious lawyer energy πŸ’€


Intellectual Property πŸ¦‹

Okay so the IETF is not picking a side on who owns what πŸ™ˆ It takes no position on whether any Intellectual Property Rights (or other rights) that someone might claim over the tech in this document are valid, or how far they reach. It also won't tell you if a license for those rights is available, and it hasn't done any independent digging to find any such rights either 🧚 If you want the rules on IETF rights stuff, check out BCP 78 and BCP 79 πŸ’…

Copies of IPR disclosures sent to the IETF Secretariat are a thing, and so are any assurances of licenses that might be offered. You can also get the result of an attempt to score a general license or permission for implementers or users of this spec. All of that lives on the IETF online IPR repository at http://www.ietf.org/ipr 🌸

The IETF also invites anyone to flag any copyrights, patents, patent applications, or other proprietary rights that might cover tech needed to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org πŸ’œ Honestly, this is the IETF being a good friend and asking for the tea before anyone gets sued πŸ“


Acknowledgement 🌈

Last but not least, the RFC Editor function is currently funded by the Internet Society πŸ‘‘ Thank you, Internet Society, you're the real MVP 🫢✨

πŸ“¦ where this page comes from