RFC 4032
Update to the Session Initiation Protocol (SIP) Preconditions Framework
RFC 4032: Update to the SIP Preconditions Framework π
okay so this is RFC 4032 π It's a Standards Track document from March 2005, written in the Network Working Group by G. Camarillo (Ericsson) and P. Kyzivat (Cisco Systems). It updates RFC 3312 π¦ and doesn't obsolete anything. Its whole job is to level up the SIP preconditions framework.
Status of This Memo β¨
This document is a standards track protocol for the Internet community π and it's inviting discussion and suggestions for improvements. For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited.
Copyright Notice π
Copyright (C) The Internet Society (2005).
Abstract π§
This document updates RFC 3312, which defines the framework for preconditions in SIP. We provide guidelines for authors of new precondition types and describe how to use SIP preconditions in situations that involve session mobility.
Table of Contents π
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Defining New Precondition Types . . . . . . . . . . . . . . . 3
3.1. Precondition Type Tag . . . . . . . . . . . . . . . . . 3
3.2. Status Type . . . . . . . . . . . . . . . . . . . . . . 3
3.3. Precondition Strength . . . . . . . . . . . . . . . . . 3
3.4. Suspending and Resuming Session Establishment . . . . . 3
4. Issues Related to Session Mobility . . . . . . . . . . . . . . 4
4.1. Update to RFC 3312 . . . . . . . . . . . . . . . . . . . 5
4.2. Desired Status . . . . . . . . . . . . . . . . . . . . . 7
5. Security Considerations . . . . . . . . . . . . . . . . . . . 7
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 8
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8
8.1. Normative References . . . . . . . . . . . . . . . . . . 8
8.2. Informational References . . . . . . . . . . . . . . . . 8
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 9
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 10
1. Introduction πΈ
okay so RFC 3312 [3] is where the SIP [2] preconditions framework lives π«Ά It's a generic setup that lets SIP UAs (User Agents) pause session establishment until a set of preconditions are met. Only Quality of Service (QoS) preconditions have been defined so far, but the framework can support different types of preconditions. (QoS preconditions are defined by RFC 3312 as well.)
This document updates RFC 3312 and gives guidelines for authors of new precondition types, explaining which topics they need to discuss when defining them. It also updates some of the RFC 3312 procedures for using SIP preconditions when session mobility is involved, which we'll get into below β¨
RFC 3312 focuses on media sessions that don't move around. Media is sent between the same end-points for the whole session. But media sessions set up by SIP aren't always static, and that's the plot twist π
SIP gives us session mobility through re-INVITEs and UPDATEs [5] π Existing RFC 3312 implementations can probably handle session mobility already, but there's a need to spell out the issues and make a slight update to some of the procedures. With the updated procedures in this document, messages carrying precondition information get way more explicit about the current status of the preconditions π₯
Specifically, answers are now allowed to downgrade current status values, which RFC 3312 didn't allow. We treat moving an existing stream to a new location as the same thing as establishing a new stream. So answers that move streams to new locations set all the current status values in their answers to "No" and start a new precondition negotiation from scratch π§
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. Defining New Precondition Types π¦
Specs that define new precondition types need to cover the topics in this section. Clear definitions of new precondition types are essential for interoperability between different implementations, so please don't skip this part π
3.1. Precondition Type Tag π
New precondition types MUST have an associated precondition type tag (e.g., "qos" is the tag for QoS preconditions). Authors of new preconditions MUST register new precondition types and their tags with the IANA by following the instructions in Section 15 of RFC 3312.
3.2. Status Type π
RFC 3312 defines two status types: end-to-end and segmented. Specs that define new precondition types MUST indicate which status applies to the new precondition. A new precondition can use only one status type or both. For example, the QoS preconditions defined in RFC 3312 can use both π
3.3. Precondition Strength π
RFC 3312 defines optional and mandatory preconditions. Specs that define new precondition types MUST describe whether or not optional preconditions are applicable, and if they are, what the expected behavior of a UA is on reception of optional preconditions.
3.4. Suspending and Resuming Session Establishment β
Section 6 of RFC 3312 describes the behavior of UAs from the moment session establishment is suspended, due to a set of preconditions, until it's resumed when those preconditions are met. In general, the called user is not alerted until the preconditions are met π
Not alerting the user isn't the only thing to handle, though. Each precondition type MUST define any extra actions UAs should perform or refrain from performing while session establishment is suspended. So the behavior of media streams during session suspension is part of the definition of a particular precondition type. Some precondition types may let media streams send and receive packets during suspension, and others may not. That means the following paragraph from RFC 3312 only applies to QoS preconditions:
While session establishment is suspended, user agents SHOULD not send any data over any media stream. In the case of RTP, neither RTP nor RTCP packets are sent.
To clarify the paragraph above, the control messages used to establish connections in connection-oriented transport protocols (e.g., TCP SYNs) are not affected by that rule. So user agents follow standard rules (e.g., the SDP 'setup' attribute [7]) to decide when to set up the connection, regardless of QoS preconditions π§
New precondition types MUST also describe the behaviour of UAs on reception of a re-INVITE or an UPDATE with preconditions for an ongoing session π«Ά
4. Issues Related to Session Mobility πΈ
Section 5 of RFC 3312 describes how to use SIP [2] preconditions with the offer/answer model [4]. RFC 3312 gives a set of rules that let a user agent tell the remote user agent about changes in the current status of the preconditions π
Here's the idea: a user agent knows the current status of some part of the preconditions (e.g., the send direction of the QoS precondition) through local information. For example, an RSVP RESV arrives saying the resource reservation worked β¨ The UAC (User Agent Client) tells the UAS (User Agent Server) about changes in the current status by sending an offer to the UAS. The UAS, in turn, could (if needed) send an offer to the UAC with the status of the part of the preconditions it has local information about π¦
Note, however, that UASs do not usually send updates about the current status to the UAC because UASs are the ones resuming session establishment when all the preconditions are met. Therefore, rather than performing an offer/answer exchange to inform the UAC that all the preconditions are met, they simply send a 180 (Ringing) response indicating that session establishment has been resumed.
While RFC 3312 lets you update current status information using the methods above, it doesn't allow downgrading current status values in answers. You can see that in the third row of Table 3 of RFC 3312 π Figure 1 shows why a downgrade in an answer would sometimes be needed π
3pcc
A Controller B C
| | | |
|<-dialog 1->|<-dialog 2->| |
| | | |
| *********************** | |
|* MEDIA *| |
| *********************** | |
| | | |
| | | |
|<-dialog 1->|<------dialog 3----->|
| | | |
| ******************************** |
|* MEDIA *|
| ******************************** |
| | | |
| | | |
Figure 1: Session mobility using 3pcc
The 3pcc (Third Party Call Control) [6] controller in Figure 1 has set up a session between A and B, using dialog 1 towards A and dialog 2 towards B. At that point, the controller wants A to have a session with C instead of B π To move A over to C (the setup shown at the bottom of Figure 1), the controller sends an empty (no offer) re-INVITE to A. Since A doesn't know the session is about to move, its offer in the 200 OK says the current status of the media stream in the send direction is "Yes". After it contacts C and sets up dialog 3, the controller sends an answer back to A. That answer has a new destination for the media (C), and it should have downgraded the current status of the media stream to "No", since there's no resource reservation between A and C π
Part 2 is coming up next, bestie π«Άπ
4.1. Update to RFC 3312 β¨
okay bestie, this is where we patch RFC 3312 π with a few new rules that fix the issues we just talked about π
First up is the rule for offerers who are moving a media stream to a new address π¦
When a stream is being moved to a new transport address, the offerer MUST set all current status values about which it does not have local information to "No".
Note that for streams using segmented status (as opposed to end-to-end status), the local segment's address change may or may not affect the status of preconditions at the remote segment π€ But from the preconditions point of view, moving an existing stream somewhere new is basically like starting a brand new stream β¨ So it makes sense to set all the current status values to "No" and redo the precondition negotiation from scratch π
Next, the updated table and rules for an answerer that is moving a media stream πΈ The offerer didn't know about the move when it made the offer, so here's the plan.
Table 3 of RFC 3312 needs an update so answerers can downgrade current status values. Here's the result π
Transac status table Local status table New values transac./local
____________________________________________________________________
no no no/no
yes yes yes/yes
yes no depends on local info
no yes depends on local info
An answerer MUST downgrade the current status values received in the offer if it has local information about them or if the media stream is being moved to a new transport address π
Same vibe as before: for segmented status, the address change at the answerer may or may not affect the preconditions at the offerer's segment π«Ά But, as we said, moving an existing stream is like establishing a new one, so set all the current status values to "No" and start a new precondition negotiation from scratch π
Last one in this section is for offerers that receive an answer which updates or downgrades their local status tables π§ Offerers should update their local status tables when they get an answer, as shown in this table.
Transac. status table Local status table New value Local Status
_________________________________________________________________
no no no
yes yes yes
yes no yes
no yes no
4.2. Desired Status π
The desired status a UA wants for a media stream after it gets moved to a new transport address might be different from the desired status that was negotiated originally π A UA could, for example, need mandatory QoS over a low bandwidth link but be totally fine with optional QoS once the stream moves to a high bandwidth link π
If the new desired status is higher than the previous one (for example, optional to mandatory), the UA may upgrade its desired status in an offer or in an answer, following the RFC 3312 procedures π If the new desired status is lower than the previous one (that is, mandatory to optional), the UA may downgrade its desired status only in an offer, not in an answer, and this also follows the RFC 3312 procedures π
5. Security Considerations π₯
An attacker adding preconditions to a session description, or modifying existing preconditions, could prevent sessions from being established π± An attacker removing preconditions from a session description could force sessions to be established without meeting mandatory preconditions π
Thus, it is strongly RECOMMENDED that integrity protection be applied to the SDP session descriptions π‘οΈ S/MIME is the natural choice for providing that end-to-end integrity protection, as described in RFC 3261 [2] π
6. IANA Considerations πΈ
The IANA registration requirements for the preconditions framework are defined in RFC 3312. Any new preconditions are governed by the IANA Considerations there π
7. Acknowledgement π«Ά
Dave Oran and Allison Mankin provided useful comments on this document π
8. References π
8.1. Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[2] 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.
[3] Camarillo, G., Marshall, W., and J. Rosenberg, "Integration of Resource Management and Session Initiation Protocol (SIP)", RFC 3312, October 2002.
8.2. Informational References
[4] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, June 2002.
[5] Rosenberg, J., "The Session Initiation Protocol (SIP) UPDATE Method", RFC 3311, October 2002.
[6] Rosenberg, J., Peterson, J., Schulzrinne, H., and G. Camarillo, "Best Current Practices for Third Party Call Control (3pcc) in the Session Initiation Protocol (SIP)", BCP 85, RFC 3725, April 2004.
[7] Yon, D. and Camarillo, G., "TCP-Based Media Transport in the Session Description Protocol (SDP)", Work In Progress, November 2004.
Authors' Addresses π§
Gonzalo Camarillo
Ericsson
Hirsalantie 11
Jorvas 02420
Finland
EMail: Gonzalo.Camarillo@ericsson.com
Paul Kyzivat
Cisco Systems
1414 Massachusetts Avenue, BXB500 C2-2
Boxborough, MA 01719
USA
EMail: pkyzivat@cisco.com
Full Copyright Statement β
Copyright (C) The Internet Society (2005).
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 procedures with respect to rights in RFC 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. π
π¦ where this page comes from
- ietf: rfc4032 2005-03
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms