diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc3312.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc3312.txt')
-rw-r--r-- | doc/rfc/rfc3312.txt | 1683 |
1 files changed, 1683 insertions, 0 deletions
diff --git a/doc/rfc/rfc3312.txt b/doc/rfc/rfc3312.txt new file mode 100644 index 0000000..0f92064 --- /dev/null +++ b/doc/rfc/rfc3312.txt @@ -0,0 +1,1683 @@ + + + + + + +Network Working Group G. Camarillo, Ed. +Request for Comments: 3312 Ericsson +Category: Standards Track W. Marshall, Ed. + AT&T + J. Rosenberg + dynamicsoft + October 2002 + + + Integration of Resource Management + and Session Initiation Protocol (SIP) + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2002). All Rights Reserved. + +Abstract + + This document defines a generic framework for preconditions, which + are extensible through IANA registration. This document also + discusses how network quality of service can be made a precondition + for establishment of sessions initiated by the Session Initiation + Protocol (SIP). These preconditions require that the participant + reserve network resources before continuing with the session. We do + not define new quality of service reservation mechanisms; these + preconditions simply require a participant to use existing resource + reservation mechanisms before beginning the session. + + + + + + + + + + + + + + + + +Camarillo, et. al. Standards Track [Page 1] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + +Table of Contents + + 1 Introduction ................................................... 2 + 2 Terminology .................................................... 3 + 3 Overview ....................................................... 3 + 4 SDP parameters ................................................. 4 + 5 Usage of preconditions with offer/answer ....................... 7 + 5.1 Generating an offer .......................................... 8 + 5.1.1 SDP encoding ............................................... 9 + 5.2 Generating an Answer ......................................... 10 + 6 Suspending and Resuming Session Establishment .................. 11 + 7 Status Confirmation ............................................ 12 + 8 Refusing an offer .............................................. 13 + 8.1 Rejecting a Media Stream ..................................... 14 + 9 Unknown Precondition Type ...................................... 15 + 10 Multiple Preconditions per Media Stream ....................... 15 + 11 Option Tag for Preconditions .................................. 16 + 12 Indicating Capabilities ....................................... 16 + 13 Examples ...................................................... 16 + 13.1 End-to-end Status Type ...................................... 17 + 13.2 Segmented Status Type ....................................... 21 + 13.3 Offer in a SIP response ..................................... 23 + 14 Security Considerations ....................................... 26 + 15 IANA Considerations ........................................... 26 + 16 Notice Regarding Intellectual Property Rights ................. 27 + 17 References .................................................... 27 + 18 Contributors .................................................. 28 + 19 Acknowledgments ............................................... 28 + 20 Authors' Addresses ............................................ 29 + 21 Full Copyright Statement ...................................... 30 + +1 Introduction + + Some architectures require that at session establishment time, once + the callee has been alerted, the chances of a session establishment + failure are minimum. One source of failure is the inability to + reserve network resources for a session. In order to minimize "ghost + rings", it is necessary to reserve network resources for the session + before the callee is alerted. However, the reservation of network + resources frequently requires learning the IP address, port, and + session parameters from the callee. This information is obtained as + a result of the initial offer/answer exchange carried in SIP. This + exchange normally causes the "phone to ring", thus introducing a + chicken-and-egg problem: resources cannot be reserved without + performing an initial offer/answer exchange, and the initial + offer/answer exchange can't be done without performing resource + reservation. + + + + +Camarillo, et. al. Standards Track [Page 2] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + The solution is to introduce the concept of a precondition. A + precondition is a set of constraints about the session which are + introduced in the offer. The recipient of the offer generates an + answer, but does not alert the user or otherwise proceed with session + establishment. That only occurs when the preconditions are met. + This can be known through a local event (such as a confirmation of a + resource reservation), or through a new offer sent by the caller. + + This document deals with sessions that use SIP [1] as a signalling + protocol and SDP [2] to describe the parameters of the session. + + We have chosen to include the quality of service preconditions in the + SDP description rather than in the SIP header because preconditions + are stream specific. + +2 Terminology + + 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 BCP 14, RFC 2119 [3]. + +3 Overview + + In order to ensure that session establishment does not take place + until certain preconditions are met, we distinguish between two + different state variables that affect a particular media stream: + current status and desired status. This document defines the quality + of service status. + + The desired status consists of a threshold for the current status. + Session establishment stops until the current status reaches or + surpasses this threshold. Once this threshold is reached or + surpassed, session establishment resumes. + + For example, the following values for current and desired status + would not allow session establishment to resume: + + current status = resources reserved in the send direction + desired status = resources reserved in both (sendrecv) directions + + On the other hand, the values of the example below would make session + establishment resume: + + current status = resources reserved in both (sendrecv) directions + desired status = resources reserved in the send direction + + + + + + +Camarillo, et. al. Standards Track [Page 3] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + These two state variables define a certain piece of state of a media + stream the same way the direction attribute or the codecs in use + define other pieces of state. Consequently, we treat these two new + variables in the same way as other SDP media attributes are treated + in the offer/answer model used by SIP [4]: they are exchanged between + two user agents using an offer and an answer in order to have a + shared view of the status of the session. + + Figure 1 shows a typical message exchange between two SIP user agents + using preconditions. A includes quality of service preconditions in + the SDP of the initial INVITE. A does not want B to be alerted until + there are network resources reserved in both directions (sendrecv) + end-to-end. B agrees to reserve network resources for this session + before alerting the callee. B will handle resource reservation in + the B->A direction, but needs A to handle the A->B direction. To + indicate so, B returns a 183 (Session Progress) response to A asking + A to start resource reservation and to confirm to B as soon as the + A->B direction is ready for the session. A and B both start resource + reservation. B finishes reserving resources in the B->A direction, + but does not alert the user yet, because network resources in both + directions are needed. When A finishes reserving resources in the + A->B direction, it sends an UPDATE [5] to B. B returns a 200 (OK) + response for the UPDATE, indicating that all the preconditions for + the session have been met. At this point in time, B starts alerting + the user, and session establishment completes normally. + +4 SDP parameters + + We define the following media level SDP attributes: + + current-status = "a=curr:" precondition-type + SP status-type SP direction-tag + desired-status = "a=des:" precondition-type + SP strength-tag SP status-type + SP direction-tag + confirm-status = "a=conf:" precondition-type + SP status-type SP direction-tag + precondition-type = "qos" | token + strength-tag = ("mandatory" | "optional" | "none" + = | "failure" | "unknown") + status-type = ("e2e" | "local" | "remote") + direction-tag = ("none" | "send" | "recv" | "sendrecv") + + Current status: The current status attribute carries the current + status of network resources for a particular media stream. + + + + + + +Camarillo, et. al. Standards Track [Page 4] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + Desired status: The desired status attribute carries the + preconditions for a particular media stream. When the + direction-tag of the current status attribute, with a given + precondition-type/status-type for a particular stream is + equal to (or better than) the direction-tag of the desired + status attribute with the same precondition-type/status- + type, for that stream, then the preconditions are considered + to be met for that stream. + + Confirmation status: The confirmation status attribute carries + threshold conditions for a media stream. When the status of + network resources reach these conditions, the peer user + agent will send an update of the session description + containing an updated current status attribute for this + particular media stream. + + Precondition type: This document defines quality of service + preconditions. Extensions may define other types of + preconditions. + + Strength tag: The strength-tag indicates whether or not the callee + can be alerted, in case the network fails to meet the + preconditions. + + Status type: We define two types of status: end-to-end and + segmented. The end-to-end status reflects the status of the + end-to-end reservation of resources. The segmented status + reflects the status of the access network reservations of + both user agents. The end-to-end status corresponds to the + tag "e2e", defined above and the segmented status to the + tags "local" and "remote". End-to-end status is useful when + end-to-end resource reservation mechanisms are available. + The segmented status is useful when one or both UAs perform + resource reservations on their respective access networks. + + + + + + + + + + + + + + + + + +Camarillo, et. al. Standards Track [Page 5] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + A B + + | | + |-------------(1) INVITE SDP1--------------->| + | | + |<------(2) 183 Session Progress SDP2--------| + | *** *** | + |--*R*-----------(3) PRACK-------------*R*-->| + | *E* *E* | + |<-*S*-------(4) 200 OK (PRACK)--------*S*---| + | *E* *E* | + | *R* *R* | + | *V* *V* | + | *A* *A* | + | *T* *T* | + | *I* *I* | + | *O* *O* | + | *N* *N* | + | *** *** | + | *** | + | *** | + |-------------(5) UPDATE SDP3--------------->| + | | + |<--------(6) 200 OK (UPDATE) SDP4-----------| + | | + |<-------------(7) 180 Ringing---------------| + | | + |-----------------(8) PRACK----------------->| + | | + |<------------(9) 200 OK (PRACK)-------------| + | | + | | + | | + |<-----------(10) 200 OK (INVITE)------------| + | | + |------------------(11) ACK----------------->| + | | + | | + + Figure 1: Basic session establishment using preconditions + + Direction tag: The direction-tag indicates the direction in which + a particular attribute (current, desired or confirmation + status) is applicable to. + + + + + + + +Camarillo, et. al. Standards Track [Page 6] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + The values of the tags "send", "recv", "local" and "remote" represent + the point of view of the entity generating the SDP description. In + an offer, "send" is the direction offerer->answerer and "local" is + the offerer's access network. In an answer, "send" is the direction + answerer->offerer and "local" is the answerer's access network. + + The following example shows these new SDP attributes in two media + lines of a session description: + + m=audio 20000 RTP/AVP 0 + a=curr:qos e2e send + a=des:qos optional e2e send + a=des:qos mandatory e2e recv + m=audio 20002 RTP/AVP 0 + a=curr:qos local sendrecv + a=curr:qos remote none + a=des:qos optional local sendrecv + a=des:qos mandatory remote sendrecv + +5 Usage of preconditions with offer/answer + + Parameter negotiation in SIP is carried out using the offer/answer + model described in [4]. The idea behind this model is to provide a + shared view of the session parameters for both user agents once the + answer has been received by the offerer. This section describes + which values our new SDP attributes can take in an answer, depending + on their value in the offer. + + To achieve a shared view of the status of a media stream, we define a + model that consists of three tables: both user agents implement a + local status table, and each offer/answer exchange has a transaction + status table associated to it. The offerer generates a transaction + status table, identical to its local status table, and sends it to + the answerer in the offer. The answerer uses the information of this + transaction status table to update its local status table. The + answerer also updates the transaction status table fields that were + out of date and returns this table to the offerer in the answer. The + offerer can then update its local status table with the information + received in the answer. After this offer/answer exchange, the local + status tables of both user agents are synchronised. They now have a + common view of the status of the media stream. Sessions that involve + several media streams implement these tables per media stream. Note, + however, that this is a model of user agent behavior, not of + software. An implementation is free to take any approach that + replicates the external behavior this model defines. + + + + + + +Camarillo, et. al. Standards Track [Page 7] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + +5.1 Generating an offer + + Both user agents MUST maintain a local precondition status, which is + referred to as a "local status table". Tables 1 and 2 show the + format of these tables for both the end-to-end and the segmented + status types. For the end-to-end status type, the table contains two + rows; one for each direction (i.e., send and recv). A value of "yes" + in the "Current" field indicates the successful reservation of that + resource in the corresponding direction. "No" indicates that + resources have not been reserved yet. The "Desired Strength" field + indicates the strength of the preconditions in the corresponding + direction. The table for the segmented status type contains four + rows: both directions in the local access network and in the peer's + access network. The meaning of the fields is the same as in the + end-to-end case. + + Before generating an offer, the offerer MUST build a transaction + status table with the current and the desired status, for each media + stream. The different values of the strength-tag for the desired + status attribute have the following semantics: + + o None: no resource reservation is needed. + + o Optional: the user agents SHOULD try to provide resource + reservation, but the session can continue regardless of whether + or not this provision is possible. + + o Mandatory: the user agents MUST provide resource reservation. + Otherwise, session establishment MUST NOT continue. + + The offerer then decides whether it is going to use the end-to-end + status type or the segmented status type. If the status type of the + media line will be end-to-end, the user agent generates records with + the desired status and the current status for each direction (send + and recv) independently, as shown in table 1: + + Direction Current Desired Strength + ____________________________________ + send no mandatory + recv no mandatory + + Table 1: Table for the end-to-end status type + + If the status type of the media line will be segmented, the user + agent generates records with the desired status and the current + status for each direction (send and recv) and each segment (local and + remote) independently, as shown in table 2: + + + + +Camarillo, et. al. Standards Track [Page 8] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + Direction Current Desired Strength + ______________________________________ + local send no none + local recv no none + remote send no optional + remote recv no none + + Table 2: Table for the segmented status type + + At the time of sending the offer, the offerer's local status table + and the transaction status table contain the same values. + + With the transaction status table, the user agent MUST generate the + current-status and the desired status lines, following the syntax of + Section 4 and the rules described below in Section 5.1.1. + +5.1.1 SDP encoding + + For the end-to-end status type, the user agent MUST generate one + current status line with the tag "e2e" for the media stream. If the + strength-tags for both directions are equal (e.g., both "mandatory") + in the transaction status table, the user agent MUST add one desired + status line with the tag "sendrecv". If both tags are different, the + user agent MUST include two desired status lines, one with the tag + "send" and the other with the tag "recv". + + The semantics of two lines with the same strength-tag, one with a + "send" tag and the other with a "recv" tag, is the same as one + "sendrecv" line. However, in order to achieve a more compact + encoding, we have chosen to make the latter format mandatory. + + For the segmented status type, the user agent MUST generate two + current status lines: one with the tag "local" and the other with the + tag "remote". The user agent MUST add one or two desired status + lines per segment (i.e., local and remote). If, for a particular + segment (local or remote), the tags for both directions in the + transaction status table are equal (e.g., both "mandatory"), the user + agent MUST add one desired status line with the tag "sendrecv". If + both tags are different, the user agent MUST include two desired + status lines, one with the tag "send" and the other with the tag + "recv". + + Note that the rules above apply to the desired strength-tag "none" as + well. This way, a user agent that supports quality of service but + does not intend to use them, adds desired status lines with the + strength-tag "none". Since this tag can be upgraded in the answer, + as described in Section 5.2, the answerer can request quality of + service reservation without a need of another offer/answer exchange. + + + +Camarillo, et. al. Standards Track [Page 9] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + The example below shows the SDP corresponding to tables 1 and 2. + + m=audio 20000 RTP/AVP 0 + a=curr:qos e2e none + a=des:qos mandatory e2e sendrecv + m=audio 20002 RTP/AVP 0 + a=curr:qos local none + a=curr:qos remote none + a=des:qos optional remote send + a=des:qos none remote recv + a=des:qos none local sendrecv + +5.2 Generating an Answer + + When the answerer receives the offer, it recreates the transaction + status table using the SDP attributes contained in the offer. The + answerer updates both its local status and the transaction status + table following the rules below: + + Desired Strength: We define an absolute ordering for the + strength-tags: "none", "optional" and "mandatory". + "Mandatory" is the tag with the highest grade and "none" the + tag with the lowest grade. An answerer MAY upgrade the + desired strength in any entry of the transaction status + table, but it MUST NOT downgrade it. Therefore, it is OK to + upgrade a row from "none" to "optional", from "none" to + "mandatory", or from "optional" to "mandatory", but not the + other way around. + + Current Status: For every row, the value of the "Current" field in + the transaction status table, and in the local status table + of the answerer, have to be compared. Table 3 shows the + four possible combinations. If both fields have the same + value (two first rows of table 3), nothing needs to be + updated. If the "Current" field of the transaction status + table is "Yes", and the field of the local status table is + "No" (third row of table 3), the latter MUST be set to + "Yes". If the "Current" field of the transaction status + table is "No", and the field of the local status table is + "Yes" (forth row of table 3), the answerer needs to check if + it has local information (e.g., a confirmation of a resource + reservation has been received) about that particular current + status. If it does, the "Current" field of the transaction + status table is set to "Yes". If the answerer does not have + local information about that current status, the "Current" + field of the local status table MUST be set to "No". + + + + + +Camarillo, et. al. Standards Track [Page 10] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + Transac. status table Local status table New values transac./local + ____________________________________________________________________ + no no no/no + yes yes yes/yes + yes no yes/yes + no yes depends on local info + + Table 3: Possible values for the "Current" fields + + Once both tables have been updated, an answer MUST be generated + following the rules described in Section 5.1.1, taking into account + that "send", "recv", "local" and "remote" tags have to be inverted in + the answer, as shown in table 4. + + Offer Answer + ______________ + send recv + recv send + local remote + remote local + + Table 4: Values of tags in offers and answers + + At the time the answer is sent, the transaction status table and the + answerer's local status table contain the same values. Therefore, + this answer contains the shared view of the status of the media line + in the current-status attribute and the negotiated strength and + direction-tags in the desired-status attribute. + + If the resource reservation mechanism used requires participation of + both user agents, the answerer SHOULD start resource reservation + after having sent the answer and the offerer SHOULD start resource + reservation as soon as the answer is received. If participation of + the peer user agent is not needed (e.g., segmented status type), the + offerer MAY start resource reservation before sending the offer and + the answerer MAY start it before sending the answer. + + The status of the resource reservation of a media line can change + between two consecutive offer/answer exchanges. Therefore, both user + agents MUST keep their local status tables up to date, using local + information throughout the duration of the session. + +6 Suspending and Resuming Session Establishment + + A user agent server that receives an offer with preconditions SHOULD + NOT alert the user until all the mandatory preconditions are met; + session establishment is suspended until that moment (e.g., a PSTN + gateway reserves resources without sending signalling to the PSTN.) + + + +Camarillo, et. al. Standards Track [Page 11] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + A user agent server may receive an INVITE request with no offer in + it. In this case, following normal procedures defined in [1] and + [5], the user agent server will provide an offer in a reliable 1xx + response. The user agent client will send the answer in another SIP + request (i.e., the PRACK for the 1xx). If the offer and the answer + contain preconditions, the user agent server SHOULD NOT alert the + user until all the mandatory preconditions in the answer are met. + + Note that in this case, a user agent server providing an + initial offer with preconditions, a 180 (Ringing) response with + preconditions will never be sent, since the user agent server + cannot alert the user until all the preconditions are met. + + A UAS that is not capable of unilaterally meeting all of the + mandatory preconditions MUST include a confirm-status attribute in + the SDP (offer or answer) that it sends (see Section 7). Further, + the SDP (offer or answer) that contains this confirm-status attribute + MUST be sent as soon as allowed by the SIP offer/answer rules. + + While session establishment is suspended, user agents SHOULD not send + any data over any media stream. In the case of RTP [6], neither RTP + nor RTCP packets are sent. + + A user agent server knows that all the preconditions are met for a + media line when its local status table has a value of "yes" in all + the rows whose strength-tag is "mandatory". When the preconditions + of all the media lines of the session are met, session establishment + SHOULD resume. + + For an initial INVITE, suspending and resuming session establishment + is very intuitive. The callee will not be alerted until all the + mandatory preconditions are met. However, offers containing + preconditions sent in the middle of an ongoing session need further + explanation. Both user agents SHOULD continue using the old session + parameters until all the mandatory preconditions are met. At that + moment, the user agents can begin using the new session parameters. + Section 13 contains an example of this situation. + +7 Status Confirmation + + The confirm-status attribute MAY be used in both offers and answers. + This attribute represents a threshold for the resource reservation. + When this threshold is reached or surpassed, the user agent MUST send + an offer to the peer user agent, reflecting the new current status of + the media line as soon as allowed by the SIP offer/answer rules. If + this threshold is crossed again (e.g., the network stops providing + resources for the media stream), the user agent MUST send a new offer + as well, as soon as allowed by the SIP offer/answer rules. + + + +Camarillo, et. al. Standards Track [Page 12] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + If a peer has requested confirmation on a particular stream, an agent + MUST mark that stream with a flag in its local status table. When + all the rows with this flag have a "Current" value of "yes", the user + agent MUST send a new offer to the peer. This offer will contain the + current status of resource reservation in the current-status + attributes. Later, if any of the rows with this flag transition to + "No", a new offer MUST be sent as well. + + Confirmation attributes are not negotiated. The answerer uses the + value of the confirm-status attribute in the offer, and the offerer + uses the value of this attribute in the answer. + + For example, if a user agent receives an SDP description with the + following attributes: + + m=audio 20002 RTP/AVP 0 + a=curr:qos local none + a=curr:qos remote none + a=des:qos mandatory local sendrecv + a=des:qos mandatory remote sendrecv + a=conf:qos remote sendrecv + + It will send an offer as soon as it reserves resources in its access + network ("remote" tag in the received message) for both directions + (sendrecv). + +8 Refusing an offer + + We define a new SIP status code: + + Server-Error = "580" ;Precondition Failure + + When a UAS, acting as an answerer, cannot or is not willing to meet + the preconditions in the offer, it SHOULD reject the offer by + returning a 580 (Precondition-Failure) response. + + Using the 580 (Precondition Failure) status code to refuse an offer + is useful when the offer comes in an INVITE or in an UPDATE request. + However, SIP does not provide a means to refuse offers that arrive in + a response (1xx or 2xx) to an INVITE. If a UAC generates an initial + INVITE without an offer and receives an offer in a 1xx or 2xx + response which is not acceptable, it SHOULD respond to this offer + with a correctly formed answer and immediately send a CANCEL or a + BYE. + + + + + + + +Camarillo, et. al. Standards Track [Page 13] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + If the offer comes in a 1xx or 2xx response to a re-INVITE, A would + not have a way to reject it without terminating the session at the + same time. The same recommendation given in Section 15.2 of [1] + applies here: + + "The UAS MUST ensure that the session description overlaps with + its previous session description in media formats, transports, + other parameters that require support from the peer. This is + to avoid the need for the peer to reject the session + description. If, however, it is unacceptable to A, A SHOULD + generate an answer with a valid session description, and then + send a BYE to terminate the session." + + 580 (Precondition Failure) responses and BYE and CANCEL requests, + indicating failure to meet certain preconditions, SHOULD contain an + SDP description, indicating which desired status triggered the + failure. Note that this SDP description is not an offer or an + answer, since it does not lead to the establishment of a session. + The format of such a description is based on the last SDP (an offer + or an answer) received from the remote UA. + + For each "m=" line in the last SDP description received, there MUST + be a corresponding "m=" line in the SDP description indicating + failure. This SDP description MUST contain exactly the same number + of "m=" lines as the last SDP description received. The port number + of every "m=" line MUST be set to zero, but the connection address is + arbitrary. + + The desired status line corresponding to the precondition that + triggered the failure MUST use the "failure" strength-tag, as shown + in the example below: + + m=audio 20000 RTP/AVP 0 + a=des:qos failure e2e send + +8.1 Rejecting a Media Stream + + In the offer/answer model, when an answerer wishes to reject a media + stream, it sets its port to zero. The presence of preconditions does + not change this behaviour; streams are still rejected by setting + their port to zero. + + Both the offerer and the answerer MUST ignore all the preconditions + that affect a stream with its port set to zero. They are not taken + into consideration to decide whether or not session establishment can + resume. + + + + + +Camarillo, et. al. Standards Track [Page 14] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + +9 Unknown Precondition Type + + This document defines the "qos" tag for quality of service + preconditions. New precondition-types defined in the future will + have new associated tags. A UA that receives an unknown + precondition-type, with a "mandatory" strength-tag in an offer, MUST + refuse the offer unless the only unknown mandatory preconditions have + the "local" tag. In this case, the UA does not need to be involved + in order to meet the preconditions. The UA will ask for confirmation + of the preconditions and, when the confirmation arrives, it will + resume session establishment. + + A UA refusing an offer follows the rules described in section 8, but + instead of the tag "failure", it uses the tag "unknown", as shown in + the example below: + + m=audio 20000 RTP/AVP 0 + a=des:foo unknown e2e send + +10 Multiple Preconditions per Media Stream + + A media stream MAY contain multiple preconditions. Different + preconditions MAY have the same precondition-type and different + status-types (e.g., end to end and segmented quality of service + preconditions) or different precondition-types (this document only + defines the "qos" precondition type, but extensions may define more + precondition-types in the future). + + All the preconditions for a media stream MUST be met in order to + resume session establishment. The following example shows a session + description that uses both end-to-end and segmented status-types for + a media stream. + + m=audio 20000 RTP/AVP 0 + a=curr:qos local none + a=curr:qos remote none + a=des:qos mandatory local sendrecv + a=des:qos mandatory remote sendrecv + a=curr:qos e2e none + a=des:qos optional e2e sendrecv + + + + + + + + + + + +Camarillo, et. al. Standards Track [Page 15] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + +11 Option Tag for Preconditions + + We define the option tag "precondition" for use in the Require and + Supported header fields. An offerer MUST include this tag in the + Require header field if the offer contains one or more "mandatory" + strength-tags. If all the strength-tags in the description are + "optional" or "none", the offerer MUST include this tag in either a + Supported header field or in a Require header field. It is, however, + RECOMMENDED that the Supported header field be used in this case. + The lack of preconditions in the answer would indicate that the + answerer did not support this extension. + + The mapping of offers and answers to SIP requests and responses is + performed following the rules given in [5]. Therefore, a user agent + including preconditions in the SDP MUST support the PRACK and UPDATE + methods. Consequently, it MUST include the "100rel" [7] tag in the + Supported header field and SHOULD include an Allow header field with + the "UPDATE" tag [5]. + +12 Indicating Capabilities + + The offer/answer model [4] describes the format of a session + description to indicate capabilities. This format is used in + responses to OPTIONS requests. A UA that supports preconditions + SHOULD add desired status lines indicating the precondition-types + supported for each media stream. These lines MUST have the "none" + strength-tag, as shown in the example below: + + m=audio 0 RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + a=des:foo none e2e sendrecv + a=des:qos none local sendrecv + + Note that when this document was published, the precondition-type + "foo" has not been registered. It is used here in the session + description above to provide an example with multiple precondition- + types. + + A UA that supports this framework SHOULD add a "precondition" tag to + the Supported header field of its responses to OPTIONS requests. + +13 Examples + + The following examples cover both status types; end-to-end and + segmented. + + + + + + +Camarillo, et. al. Standards Track [Page 16] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + +13.1 End-to-end Status Type + + The call flow of Figure 2 shows a basic session establishment using + the end-to-end status type. The SDP descriptions of this example are + shown below: + + SDP1: A includes end-to-end quality of service preconditions in the + initial offer. + + m=audio 20000 RTP/AVP 0 + c=IN IP4 192.0.2.1 + a=curr:qos e2e none + a=des:qos mandatory e2e sendrecv + + SDP2: Since B uses RSVP, it can know when resources in its "send" + direction are available, because it will receive RESV messages from + the network. However, it does not know the status of the + reservations in the other direction. B requests confirmation for + resource reservations in its "recv" direction to the peer user agent + A in its answer. + + m=audio 30000 RTP/AVP 0 + c=IN IP4 192.0.2.4 + a=curr:qos e2e none + a=des:qos mandatory e2e sendrecv + a=conf:qos e2e recv + + After having sent the answer, B starts reserving network resources + for the media stream. When A receives this answer (2), it starts + performing resource reservation as well. Both UAs use RSVP, so A + sends PATH messages towards B and B sends PATH messages towards A. + + As time passes, B receives RESV messages confirming the reservation. + However, B waits until resources in the other direction are reserved + as well, since it did not receive any confirmation and the + preconditions still have not been met. + + SDP3: When A receives RESV messages, it sends an updated offer (5) to + B: + + m=audio 20000 RTP/AVP 0 + c=IN IP4 192.0.2.1 + a=curr:qos e2e send + a=des:qos mandatory e2e sendrecv + + + + + + + +Camarillo, et. al. Standards Track [Page 17] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + SDP4: B responds with an answer (6) which contains the current status + of the resource reservation (i.e., sendrecv): + + m=audio 30000 RTP/AVP 0 + c=IN IP4 192.0.2.4 + a=curr:qos e2e sendrecv + a=des:qos mandatory e2e sendrecv + + At this point in time, session establishment resumes and B returns a + 180 (Ringing) response (7). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Camarillo, et. al. Standards Track [Page 18] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + A B + + | | + |-------------(1) INVITE SDP1--------------->| + | | + |<------(2) 183 Session Progress SDP2--------| + | *** *** | + |--*R*-----------(3) PRACK-------------*R*-->| + | *E* *E* | + |<-*S*-------(4) 200 OK (PRACK)--------*S*---| + | *E* *E* | + | *R* *R* | + | *V* *V* | + | *A* *A* | + | *T* *T* | + | *I* *I* | + | *O* *O* | + | *N* *N* | + | *** *** | + | *** | + | *** | + |-------------(5) UPDATE SDP3--------------->| + | | + |<--------(6) 200 OK (UPDATE) SDP4-----------| + | | + |<-------------(7) 180 Ringing---------------| + | | + |-----------------(8) PRACK----------------->| + | | + |<------------(9) 200 OK (PRACK)-------------| + | | + | | + | | + |<-----------(10) 200 OK (INVITE)------------| + | | + |------------------(11) ACK----------------->| + | | + | | + + Figure 2: Example using the end-to-end status type + + + + + + + + + + + +Camarillo, et. al. Standards Track [Page 19] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + Let's assume, that in the middle of the session, A wishes to change + the IP address where it is receiving media. Figure 3 shows this + scenario. + + SDP1: A includes an offer in a re-INVITE (1). A continues to receive + media on the old IP address (192.0.2.1), but is ready to receive + media on the new one as well (192.0.2.2): + + m=audio 20000 RTP/AVP 0 + c=IN IP4 192.0.2.2 + a=curr:qos e2e none + a=des:qos mandatory e2e sendrecv + + SDP2: B includes a "conf" attribute in its answer. B continues + sending media to the old remote IP address (192.0.2.1) + + m=audio 30000 RTP/AVP 0 + c=IN IP4 192.0.2.4 + a=curr:qos e2e none + a=des:qos mandatory e2e sendrecv + a=conf:qos e2e recv + + SDP3: When A receives RESV messages it sends an updated offer (5) to + B: + + m=audio 20000 RTP/AVP 0 + c=IN IP4 192.0.2.2 + a=curr:qos e2e send + a=des:qos mandatory e2e sendrecv + + SDP4: B responds with an answer (6), indicating that the + preconditions have been met (current status "sendrecv). It is now + that B begins sending media to the new remote IP address (192.0.2.2). + + + + + + + + + + + + + + + + + + +Camarillo, et. al. Standards Track [Page 20] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + A B + + | | + |-------------(1) INVITE SDP1--------------->| + | | + |<------(2) 183 Session Progress SDP2--------| + | *** *** | + |--*R*-----------(3) PRACK-------------*R*-->| + | *E* *E* | + |<-*S*-------(4) 200 OK (PRACK)--------*S*---| + | *E* *E* | + | *R* *R* | + | *V* *V* | + | *A* *A* | + | *T* *T* | + | *I* *I* | + | *O* *O* | + | *N* *N* | + | *** *** | + | *** | + | *** | + |-------------(5) UPDATE SDP3--------------->| + | | + |<--------(6) 200 OK (UPDATE) SDP4-----------| + | | + |<-----------(7) 200 OK (INVITE)-------------| + | | + |------------------(8) ACK------------------>| + | | + | | + + Figure 3: Session modification with preconditions + + m=audio 30000 RTP/AVP 0 + c=IN IP4 192.0.2.4 + a=curr:qos e2e sendrecv + a=des:qos mandatory e2e sendrecv + +13.2 Segmented Status Type + + The call flow of Figure 4 shows a basic session establishment using + the segmented status type. The SDP descriptions of this example are + shown below: + + + + + + + + +Camarillo, et. al. Standards Track [Page 21] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + SDP1: A includes local and remote QoS preconditions in the initial + offer. Before sending the initial offer, A reserves resources in its + access network. This is indicated in the local current status of the + SDP below: + + m=audio 20000 RTP/AVP 0 8 + c=IN IP4 192.0.2.1 + a=curr:qos local sendrecv + a=curr:qos remote none + a=des:qos mandatory local sendrecv + a=des:qos mandatory remote sendrecv + + SDP2: B reserves resources in its access network and, since all the + preconditions are met, returns an answer in a 180 (Ringing) response + (3). + + m=audio 30000 RTP/AVP 0 8 + c=IN IP4 192.0.2.4 + a=curr:qos local sendrecv + a=curr:qos remote sendrecv + a=des:qos mandatory local sendrecv + a=des:qos mandatory remote sendrecv + + Let's assume that after receiving this response, A decides that it + wants to use only PCM u-law (payload 0), as opposed to both PCM u-law + and A-law (payload 8). It would send an UPDATE to B, possibly before + receiving the 200 (OK) for the INVITE (5). The SDP would look like: + + m=audio 20000 RTP/AVP 0 + c=IN IP4 192.0.2.1 + a=curr:qos local sendrecv + a=curr:qos remote sendrecv + a=des:qos mandatory local sendrecv + a=des:qos mandatory remote sendrecv + + B would generate an answer for this offer and place it in the 200 + (OK) for the UPDATE. + + Note that this last offer/answer to reduce the number of supported + codecs may arrive to the user agent server after the 200 (OK) + response has been generated. This would mean that the session is + established before A has reduced the number of supported codecs. To + avoid this situation, the user agent client could wait for the first + answer from the user agent before setting its local current status to + "sendrecv". + + + + + + +Camarillo, et. al. Standards Track [Page 22] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + +13.3 Offer in a SIP response + + The call flow of Figure 5 shows a basic session establishment where + the initial offer appears in a reliable 1xx response. This example + uses the end-to-end status type. The SDP descriptions of this + example are shown below: + + The first INVITE (1) does not contain a session description. + Therefore, the initial offer is sent by B in a reliable 183 (Session + Progress) response. + + SDP1: B includes end-to-end quality of service preconditions in the + initial offer. Since B uses RSVP, it can know when resources in its + "send" direction are available, because it will receive RESV messages + from the network. However, it does not know the status of the + reservations in the other direction. B requests confirmation for + resource reservations in its "recv" direction, to the peer user agent + A, in its answer. + + m=audio 30000 RTP/AVP 0 + c=IN IP4 192.0.2.4 + a=curr:qos e2e none + a=des:qos mandatory e2e sendrecv + a=conf:qos e2e recv + + SDP2: A includes its answer in the PRACK for the 183 (Session + Progress) response. + + m=audio 20000 RTP/AVP 0 + c=IN IP4 192.0.2.1 + a=curr:qos e2e none + a=des:qos mandatory e2e sendrecv + + + + + + + + + + + + + + + + + + + +Camarillo, et. al. Standards Track [Page 23] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + A B + + | *** | + | *R* | + | *E* | + | *S* | + | *E* | + | *R* | + | *V* | + | *A* | + | *T* | + | *I* | + | *O* | + | *N* | + | *** | + |-------------(1) INVITE SDP1--------------->| + | *** | + | *R* | + | *E* | + | *S* | + | *E* | + | *R* | + | *V* | + | *A* | + | *T* | + | *I* | + | *O* | + | *N* | + | *** | + |<----------(2) 180 Ringing SDP2-------------| + | | + |----------------(3) PRACK------------------>| + | | + |<-----------(4) 200 OK (PRACK)--------------| + | | + | | + |<-----------(5) 200 OK (INVITE)-------------| + | | + |------------------(6) ACK------------------>| + | | + | | + + Figure 4: Example using the segmented status type + + + + + + + + +Camarillo, et. al. Standards Track [Page 24] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + A B + + | | + |----------------(1) INVITE----------------->| + | | + |<------(2) 183 Session Progress SDP1--------| + | | + |---------------(3) PRACK SDP2-------------->| + | *** *** | + |<-*R*--------(4) 200 OK (PRACK)-------*R*---| + | *E* *E* | + | *S* *S* | + | *E* *E* | + | *R* *R* | + | *V* *V* | + | *A* *A* | + | *T* *T* | + | *I* *I* | + | *O* *O* | + | *N* *N* | + | *** *** | + |-------------(5) UPDATE SDP3----------***-->| + | *** | + |<--------(6) 200 OK (UPDATE) SDP4-----***---| + | *** | + | *** | + | *** | + |<-------------(7) 180 Ringing---------------| + | | + |-----------------(8) PRACK----------------->| + | | + |<------------(9) 200 OK (PRACK)-------------| + | | + | | + | | + |<-----------(10) 200 OK (INVITE)------------| + | | + |------------------(11) ACK----------------->| + | | + + Figure 5: Example of an initial offer in a 1xx response + + After having sent the answer, A starts reserving network resources + for the media stream. When B receives this answer (3), it starts + performing resource reservation as well. Both UAs use RSVP, so A + sends PATH messages towards B and B sends PATH messages towards A. + + + + + +Camarillo, et. al. Standards Track [Page 25] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + SDP3: When A receives RESV messages, it sends an updated offer (5) to + B: + + m=audio 20000 RTP/AVP 0 + c=IN IP4 192.0.2.1 + a=curr:qos e2e send + a=des:qos mandatory e2e sendrecv + + SDP4: B responds with an answer (6) which contains the current status + of the resource reservation (i.e., recv): + + m=audio 30000 RTP/AVP 0 + c=IN IP4 192.0.2.4 + a=curr:qos e2e recv + a=des:qos mandatory e2e sendrecv + + As time passes, B receives RESV messages confirming the reservation. + At this point in time, session establishment resumes and B returns a + 180 (Ringing) response (7). + +14 Security Considerations + + An entity in the middle of two user agents establishing a session may + add desired-status attributes making session establishment + impossible. It could also modify the content of the current-status + parameters so that the session is established without meeting the + preconditions. Integrity protection can be used to avoid these + attacks. + + An entity performing resource reservations upon reception of + unauthenticated requests carrying preconditions can be an easy target + for a denial of service attack. Requests with preconditions SHOULD + be authenticated. + +15 IANA Considerations + + This document defines three media level SDP attributes: desired- + status, current-status and conf-status. Their format is defined in + Section 4. + + This document defines a framework for using preconditions with SIP. + Precondition-types to be used with this framework are registered by + the IANA when they are published in standards track RFCs. The IANA + Considerations section of the RFC MUST include the following + information, which appears in the IANA registry along with the RFC + number of the publication. + + + + + +Camarillo, et. al. Standards Track [Page 26] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + o Name of the precondition-type. The name MAY be of any length, + but SHOULD be no more than ten characters long. + + o Descriptive text that describes the extension. + + The only entry in the registry for the time being is: + + Pecondition-Type Reference Description + ---------------- --------- ----------- + qos RFC 3312 Quality of Service preconditions + + This document also defines a new SIP status code (580). Its default + reason phrase (Precondition Failure) is defined in section 8. + + This document defines a SIP option tag (precondition) in section 11. + +16 Notice Regarding Intellectual Property Rights + + The IETF has been notified of intellectual property rights claimed in + regard to some or all of the specification contained in this + document. For more information consult the online list of claimed + rights. + +17 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] Handley, M. and V. Jacobson, "SDP: Session Description Protocol", + RFC 2327, April 1998. + + [3] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + + [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, September 2002. + + [6] Schulzrinne, S., Casner, S., Frederick, R. and V. Jacobson, "RTP: + A Transport Protocol for Real-Time Applications", RFC 1889, + January 1996. + + [7] Rosenberg, J. and H. Schulzrinne, "Reliability of Provisional + Responses in Session Initiation Protocol (SIP)", RFC 3262, June + 2002. + + + +Camarillo, et. al. Standards Track [Page 27] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + [8] C. Kalmanek, W. Marshall, P. Mishra, D. Nortz, and K. K. + Ramakrishnan, "DOSA: an architecture for providing robust IP + telephony service," in Proceedings of the Conference on Computer + Communications (IEEE Infocom), (Tel Aviv, Israel), Mar. 2000. + +18 Contributors + + The following persons contributed and were co-authors on earlier + versions of this spec: + + K. K. Ramakrishnan (TeraOptic Networks), Ed Miller (Terayon), + Glenn Russell (CableLabs), Burcak Beser (Pacific Broadband + Communications), Mike Mannette (3Com), Kurt Steinbrenner (3Com), + Dave Oran (Cisco), Flemming Andreasen (Cisco), Michael Ramalho + (Cisco), John Pickens (Com21), Poornima Lalwaney (Nokia), Jon + Fellows (Copper Mountain Networks), Doc Evans (D. R. Evans + Consulting), Keith Kelly (NetSpeak), Adam Roach (dynamicsoft), + Dean Willis (dynamicsoft), Steve Donovan (dynamicsoft), Henning + Schulzrinne (Columbia University). + + This "manyfolks" document is the culmination of over two years of + work by many individuals, most are listed here and in the following + acknowledgements section. A special note is due to Flemming + Andreasen, Burcak Beser, Dave Boardman, Bill Guckel, Chuck Kalmanek, + Keith Kelly, Poornima Lalwaney, John Lawser, Bill Marshall, Mike + Mannette, Dave Oran, K.K. Ramakrishnan, Michael Ramalho, Adam Roach, + Jonathan Rosenberg, and Henning Schulzrinne for spearheading the + initial "single INVITE" quality of service preconditions work from + previous, non-SIP compatible, "two-stage Invite" proposals. These + "two-stage INVITE" proposals had their origins from Distributed Call + Signaling work in PacketCable, which, in turn, had architectural + elements from AT&T's Distributed Open Systems Architecture (DOSA) + work [8]. + +19 Acknowledgments + + The Distributed Call Signaling work in the PacketCable project is the + work of a large number of people, representing many different + companies. The authors would like to recognize and thank the + following for their assistance: John Wheeler, Motorola; David + Boardman, Daniel Paul, Arris Interactive; Bill Blum, Jay Strater, + Jeff Ollis, Clive Holborow, General Instruments; Doug Newlin, Guido + Schuster, Ikhlaq Sidhu, 3Com; Jiri Matousek, Bay Networks; Farzi + Khazai, Nortel; John Chapman, Bill Guckel, Cisco; Chuck Kalmanek, + Doug Nortz, John Lawser, James Cheng, Tung-Hai Hsiao, Partho Mishra, + AT&T; Telcordia Technologies; and Lucent Cable Communications. + + + + + +Camarillo, et. al. Standards Track [Page 28] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + + Miguel Angel Garcia-Martin, Rohan Mahy and Mark Watson provided + helpful comments and suggestions. + +20 Authors' Addresses + + Gonzalo Camarillo + Ericsson + Advanced Signalling Research Lab. + FIN-02420 Jorvas + Finland + + EMail: Gonzalo.Camarillo@ericsson.com + + + Bill Marshall + AT&T + Florham Park, NJ 07932 + USA + + EMail: wtm@research.att.com + + + Jonathan Rosenberg + dynamicsoft + 72 Eagle Rock Ave + East Hanover, NJ 07936 + USA + + EMail: jdrosen@dynamicsoft.com + + + + + + + + + + + + + + + + + + + + + + +Camarillo, et. al. Standards Track [Page 29] + +RFC 3312 Integration of Resource Management and SIP October 2002 + + +21 Full Copyright Statement + + Copyright (C) The Internet Society (2002). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS 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. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Camarillo, et. al. Standards Track [Page 30] + |