idnits 2.17.1 draft-ietf-sip-replaces-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 324 has weird spacing: '...r field whe...' == Line 523 has weird spacing: '...ication for r...' -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (June 25, 2003) is 7611 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Obsolete normative reference: RFC 2234 (ref. '3') (Obsoleted by RFC 4234) == Outdated reference: A later version (-05) exists of draft-ietf-sip-referredby-01 == Outdated reference: A later version (-03) exists of draft-ietf-sip-authid-body-01 ** Obsolete normative reference: RFC 2617 (ref. '6') (Obsoleted by RFC 7235, RFC 7615, RFC 7616, RFC 7617) ** Obsolete normative reference: RFC 2633 (ref. '7') (Obsoleted by RFC 3851) -- Obsolete informational reference (is this intentional?): RFC 2543 (ref. '9') (Obsoleted by RFC 3261, RFC 3262, RFC 3263, RFC 3264, RFC 3265) == Outdated reference: A later version (-12) exists of draft-ietf-sipping-cc-framework-02 == Outdated reference: A later version (-06) exists of draft-ietf-sipping-3pcc-03 == Outdated reference: A later version (-12) exists of draft-ietf-sipping-cc-transfer-01 == Outdated reference: A later version (-06) exists of draft-ietf-sipping-dialog-package-01 == Outdated reference: A later version (-15) exists of draft-ietf-sipping-service-examples-04 -- Obsolete informational reference (is this intentional?): RFC 3265 (ref. '16') (Obsoleted by RFC 6665) -- Obsolete informational reference (is this intentional?): RFC 2976 (ref. '17') (Obsoleted by RFC 6086) == Outdated reference: A later version (-01) exists of draft-ietf-simple-publish-00 Summary: 4 errors (**), 0 flaws (~~), 12 warnings (==), 5 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 SIP WG R. Mahy 3 Internet-Draft Cisco Systems, Inc. 4 Expires: December 24, 2003 B. Biggs 5 R. Dean 6 June 25, 2003 8 The Session Inititation Protocol (SIP) "Replaces" Header 9 draft-ietf-sip-replaces-04.txt 11 Status of this Memo 13 This document is an Internet-Draft and is in full conformance with 14 all provisions of Section 10 of RFC2026. 16 Internet-Drafts are working documents of the Internet Engineering 17 Task Force (IETF), its areas, and its working groups. Note that other 18 groups may also distribute working documents as Internet-Drafts. 20 Internet-Drafts are draft documents valid for a maximum of six months 21 and may be updated, replaced, or obsoleted by other documents at any 22 time. It is inappropriate to use Internet-Drafts as reference 23 material or to cite them other than as "work in progress." 25 The list of current Internet-Drafts can be accessed at http:// 26 www.ietf.org/ietf/1id-abstracts.txt. 28 The list of Internet-Draft Shadow Directories can be accessed at 29 http://www.ietf.org/shadow.html. 31 This Internet-Draft will expire on December 24, 2003. 33 Copyright Notice 35 Copyright (C) The Internet Society (2003). All Rights Reserved. 37 Abstract 39 This document defines a new header for use with SIP multi-party 40 applications and call control. The Replaces header is used to 41 logically replace an existing SIP dialog with a new SIP dialog. This 42 primitive can be used to enable a variety of features, for example: 43 "Attended Transfer" and "Call Pickup". Note that definition of these 44 example features is non-normative. 46 Table of Contents 48 1. Conventions . . . . . . . . . . . . . . . . . . . . . . . . 3 49 2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 3 50 3. User Agent Server Behavior: Receiving a Replaces Header . . 5 51 4. User Agent Client Behavior: Sending a Replaces header . . . 7 52 5. Proxy behavior . . . . . . . . . . . . . . . . . . . . . . . 7 53 6. Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 54 6.1 The Replaces Header . . . . . . . . . . . . . . . . . . . . 7 55 6.2 New option tag for Require and Supported headers . . . . . . 9 56 7. Usage Examples . . . . . . . . . . . . . . . . . . . . . . . 9 57 7.1 Replacing an Early Dialog at the originator . . . . . . . . 9 58 8. Security Considerations . . . . . . . . . . . . . . . . . . 11 59 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . 13 60 9.1 Registration of "Replaces" SIP header . . . . . . . . . . . 13 61 9.2 Registration of "replaces" SIP Option-tag . . . . . . . . . 13 62 10. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . 13 63 10.1 Changes Since -03 . . . . . . . . . . . . . . . . . . . . . 13 64 10.2 Changes Since -02 . . . . . . . . . . . . . . . . . . . . . 13 65 10.3 Changes Since -01 . . . . . . . . . . . . . . . . . . . . . 14 66 10.4 Changes Since -00 . . . . . . . . . . . . . . . . . . . . . 14 67 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 14 68 Normative References . . . . . . . . . . . . . . . . . . . . 15 69 Informational References . . . . . . . . . . . . . . . . . . 15 70 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 16 71 Intellectual Property and Copyright Statements . . . . . . . 17 73 1. Conventions 75 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 76 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 77 document are to be interpreted as described in RFC-2119 [2]. 79 This document refers frequently to the terms "confirmed dialog" and 80 "early dialog". These are defined in Section 12 of SIP [1]. 82 2. Overview 84 This document describes a SIP [1] extension header field as part of 85 the SIP multiparty applications architecture framework [10]. The 86 Replaces header is used to logically replace an existing SIP dialog 87 with a new SIP dialog. This is especially useful in peer-to-peer call 88 control environments. 90 One use of the "Replaces" header is to replace one participant with 91 another in a multimedia conversation. While this functionality is 92 already available using 3rd party call control [11] style call 93 control, the 3pcc model requires a central point of control which may 94 not be desirable in many environments. As such, a method of 95 performing these same call control primitives in a distributed, 96 peer-to-peer fashion is very desirable. 98 Use of a new INVITE with a new header for dialog matching was chosen 99 over making implicit associations in an incoming INVITE based on 100 call-id or other fields for the following reasons: 102 o An INVITE already has the correct semantics for a new call 104 o Using an explicit Replaces header in a new request makes the 105 intent of the request obvious. 107 o A unique call-id may be given to the replacement call. This 108 avoids dialog matching problems in any of the related User Agents. 110 o There are no adverse effects if the header is unsupported. 112 The Replaces header enables services such as attended call transfer, 113 retrieve from park, and transition from locally mixed conferences to 114 two party calls in a distributed peer-to-peer way. This list of 115 services is not exhaustive. Although the Replaces header is 116 frequently used in combination with the REFER [8] method as used in 117 cc-transfer [12], they may be used independently. 119 For example, Alice is talking to Bob from phone1. She transfers Bob 120 to a Parking Place while she goes to the lab. When she gets there 121 she retrieves the "parked" call from phone2 by sending an INVITE with 122 a Replaces header field to Bob with the dialog information Bob shared 123 with the Parking Place. Alice got this information using some out of 124 band mechansim. Perhaps she subscribed to this information from the 125 Parking Place (using the session dialog package [13]), or went to a 126 website and clicked on a URI. A short call flow for this example 127 follows. (Via and Max-Forwards headers are omitted for clarity.) 129 Alice Alice Parking 130 phone1 phone2 Bob Place 131 | | | | 132 |<===============================>| | 133 | | | | 134 | Alice transfers Bob to Parking Place | 135 | | | | 136 |------------REFER/200----------->| *1 *2 | 137 | | |--INVITE/200/ACK-->| 138 |<-----------NOTIFY/200-----------|<=================>| 139 |------------BYE/200------------->| | 140 | | | | 141 | | | | 142 | Alice later retrieves call from another phone | 143 | | | | 144 | *3 |-INV w/Replaces->| | 145 | |<--200-----------| | 146 | |---ACK---------->|----BYE/200------->| 147 | |<===============>| | 148 | | | | 150 Message *1: Bob-> Parking Place 152 INVITE sip:parkingplace@example.org SIP/2.0 153 To: 154 From: ;tag=7743 155 Call-ID: 425928@bobster.example.org 156 CSeq: 1 INVITE 157 Contact: 158 Referred-By: 160 Message *2: Parking Place -> Bob 162 SIP/2.0 200 OK 163 To: ;tag=6472 164 From: ;tag=7743 165 Call-ID: 425928@bobster.example.org 166 CSeq: 1 INVITE 167 Contact: 168 Message *3: Alice@phone2 -> Bob 170 INVITE sip:bob@bobster.example.org 171 To: 172 From: ;tag=8983 173 Call-ID: 09870@phone2.example.org 174 CSeq: 1 INVITE 175 Contact: 176 Require: replaces 177 Replaces: 425928@bobster.example.org;to-tag=7743;from-tag=6472 179 3. User Agent Server Behavior: Receiving a Replaces Header 181 The Replaces header contains information used to match an existing 182 SIP dialog (call-id, to-tag, and from-tag). Upon receiving an INVITE 183 with a Replaces header, the UA attempts to match this information 184 with a confirmed or early dialog. The to-tag and from-tag parameters 185 are matched as if they were tags present in an incoming request. In 186 other words the to-tag parameter is compared to the local tag, and 187 the from-tag parameter is compared to the remote tag. 189 If more than one Replaces header field is present in an INVITE, or if 190 a Replaces header field is present in a request other than INVITE, 191 the UAS MUST reject the request with a 400 Bad Request response. 193 The Replaces header has specific call control semantics. If both a 194 Replaces header field and another header field with contradictory 195 semantics are present in a request, the request MUST be rejected with 196 a 400 "Bad Request" response. 198 If the Replaces header field matches more than one dialog, the UA 199 MUST act as if no match is found. 201 If no match is found, the UAS rejects the INVITE and returns a 481 202 Call/Transaction Does Not Exist response. Likewise, if the Replaces 203 header field matches a dialog which was not created with an INVITE, 204 the UAS MUST reject the request with a 481 response. 206 If the Replaces header field matches a dialog which has already 207 terminated, the UA SHOULD decline the request with a 603 Declined 208 response. 210 If the Replaces header field matches an active dialog, the UA SHOULD 211 verify that the initiator of the new INVITE is authorized to replace 212 the matched dialog. If the initiator of the new INVITE has 213 authenticated successfully as equivalent to the user who is being 214 replaced, then the replacement is authorized. For example, the user 215 being replaced and the initator of the replacement dialog could share 216 credentials for Digest authentication [6], or could sign the 217 replacement request with S/MIME [7] with the same private key and 218 present the corresponding same certificate used in the original 219 dialog. 221 Alternatively, the Referred-By mechanism [4] defines a mechanism that 222 the UAS can use to verify that a replacement request was sent on 223 behalf of the other participant in the matched dialog (in this case, 224 triggered by a REFER request). If the replacement request contains a 225 Referred-By header which corresponds to the user being replaced, the 226 UA SHOULD treat the replacement as if the replacement was authorized 227 by the replaced party. The Referred-By header SHOULD reference a 228 corresponding, valid Refererred-By Authenticated Identity Body [5]. 229 The UA MAY apply other local policy to authorize the remainder of the 230 request. In other words the UAS may apply different policy to the 231 replacement dialog than was applied to the replaced dialog. 233 In addition, the UA MAY use other authorization mechanisms defined 234 for this purpose in standards track extensions. Extensions could 235 define other mechanisms for transitively asserting authorization of a 236 replacement. 238 If authorization is successful, the UA attempts to accept the new 239 INVITE, reassign the user interface and other resources of the 240 matched dialog to the new INVITE, and shut down the replaced dialog. 241 If the UA cannot accept the new INVITE (for example: it cannot 242 establish required QoS or keying, or it has incompatible media), the 243 UA MUST return an appropriate error response and MUST leave the 244 matched dialog unchanged. 246 If the Replaces header field matches a confirmed dialog, it checks 247 for the presence of the "early-only" flag in the Replaces header 248 field. (This flag allows the UAC to prevent a potentially undesirable 249 race condition desribed in Section 7.1.) If the flag is present, the 250 UA rejects the request with a 486 Busy response. Otherwise it accepts 251 the new INVITE by sending a 200-class response, and shuts down the 252 replaced dialog by sending a BYE. If the Replaces header field 253 matches an early dialog that was initiated by the UA, it accepts the 254 new INVITE by sending a 200-class response, and shuts down the 255 replaced dialog by sending a CANCEL. 257 If the Replaces header field matches an early dialog that was not 258 initiated by this UA, it returns a 481 (Call/Transaction Does Not 259 Exist) response to the new INVITE, and leaves the matched dialog 260 unchanged. Note that since Replaces matches only a single dialog, the 261 replacement dialog will not be retargeted according to the same 262 forking logic as the original request which created the early dialog. 264 (Currently no use cases have been identified for replacing just a 265 single dialog in this circumstance.) 267 4. User Agent Client Behavior: Sending a Replaces header 269 A User Agent that wishes to replace a single existing early or 270 confirmed dialog with a new dialog of its own, MAY send the target 271 User Agent an INVITE request containing a Replaces header field. The 272 UAC places the Call-ID, to-tag, and from-tag information for the 273 target dialog in a single Replaces header field and sends the new 274 INVITE to the target. If the user agent only wishes to replace an 275 early dialog (as in the Call Pickup example in Section 7.1), the UAC 276 MAY also include the "early-only" parameter in the Replaces header 277 field. A UAC MUST NOT send an INVITE with Replaces header field which 278 attempts to replace an early dialog which was not originated by the 279 target of the INVITE with Replaces header field. 281 Note that use of this mechanism does not provide a way to match 282 multiple dialogs, nor does it provide a way to match an entire call, 283 an entire transaction, or to follow a chain of proxy forking logic. 284 For example, if Alice replaces Cathy in an early dialog with Bob, but 285 he does not answer, Alice's replacement request will not match other 286 dialogs to which Bob's UA redirects, nor other branches to which his 287 proxy forwards. Although this specification takes reasonable 288 precautions to prevent unexpected behavior in the face of forking, 289 implementations SHOULD only address replacement requests (i.e. set 290 the Request-URI of the replacement request) to the SIP Contact URI of 291 the target. 293 5. Proxy behavior 295 Proxy Servers do not require any new behavior to support this 296 extension. They simply pass the Replaces header field transparently 297 as described in the SIP specification. 299 Note that it is possible for a proxy (especially when forking based 300 on some application layer logic, such as caller screening or 301 time-of-day routing) to forward an INVITE request containing a 302 Replaces header field to a completely orthogonal set of Contacts than 303 the original request it was intended to replace. In this case, the 304 INVITE request with the Replaces header field will fail. 306 6. Syntax 308 6.1 The Replaces Header 310 The Replaces header field indicates that a single dialog identified 311 by the header field is to be shut down and logically replaced by the 312 incoming INVITE in which it is contained. It is a request header 313 only, and defined only for INVITE requests. The Replaces header 314 field MAY be encrypted as part of end-to-end encryption. Only a 315 single Replaces header field value may be present in a SIP request 317 This document adds the following entry to Table 2 of [1]. Additions 318 to this table are also provided for extension methods defined at the 319 time of publication of this document. This is provided as a courtesy 320 to the reader and is not normative in any way. MESSAGE, SUBSCRIBE and 321 NOTIFY, REFER, INFO, UPDATE, PRACK, and PUBLISH are defined 322 respectively in [15], [16], [8], [17], [18], [19], and [20]. 324 Header field where proxy ACK BYE CAN INV OPT REG MSG 325 ------------ ----- ----- --- --- --- --- --- --- --- 326 Replaces R - - - o - - - 328 SUB NOT REF INF UPD PRA PUB 329 --- --- --- --- --- --- --- 330 Replaces R - - - - - - - 332 The following syntax specification uses the augmented Backus-Naur 333 Form (BNF) as described in RFC-2234 [3]. 335 Replaces = "Replaces" HCOLON callid *(SEMI replaces-param) 336 replaces-param = to-tag / from-tag / early-flag / generic-param 337 to-tag = "to-tag" EQUAL token 338 from-tag = "from-tag" EQUAL token 339 early-flag = "early-only" 341 A Replaces header field MUST contain exactly one to-tag and exactly 342 one from-tag, as they are required for unique dialog matching. For 343 compatibility with dialogs initiated by RFC2543 [9] compliant UAs, a 344 tag of zero matches both tags of zero and null tags. A Replaces 345 header field MAY contain the early-flag. 347 Examples: 349 Replaces: 98732@sip.billybiggs.com 350 ;from-tag=r33th4x0r 351 ;to-tag=ff87ff 353 Replaces: 12adf2f34456gs5;to-tag=12345;from-tag=54321;early-only 355 Replaces: 87134@171.161.34.23;to-tag=24796;from-tag=0 357 6.2 New option tag for Require and Supported headers 359 This specification defines a new Require/Supported header option tag 360 "replaces". UAs which support the Replaces header MUST include the 361 "replaces" option tag in a Supported header field. UAs that want 362 explicit failure notification if Replaces is not supported MAY 363 include the "replaces" option in a Require header field. 365 Example: 367 Require: replaces, 100rel 369 7. Usage Examples 371 The following non-normative examples are not intended to enumerate 372 all the possibilities for the usage of this extension, but rather to 373 provide examples or ideas only. For more examples, please see 374 service-examples [14]. Via and Max-Forwards headers are omitted for 375 clarity and brevity. 377 7.1 Replacing an Early Dialog at the originator 379 In this example, Bob just arrived in the lab and hasn't registered 380 there yet. He hears his desk phone ring. He quickly logs into a 381 software UA on a nearby computer. Among other things, the software UA 382 has access to the dialog state of his desk phone. When it notices 383 that his phone is ringing it offers him the choice to take the call 384 there. The software UA sends an INVITE with Replaces to Alice. When 385 Alice's UA receives this new INVITE, it CANCELs her original INVITE 386 and connects Alice to Bob. 388 Bob Bob 389 Alice desk lab 390 | | | 391 *1 |-----INVITE----------->| | 392 *2 |<----180---------------| Bob hears desk phone | 393 | | ringing from lab but | 394 | | isn't REGISTERed yet | 395 | | | 396 | |<--fetch dialog state --| 397 | |---response ----------->| 398 *3/4 |<-----INVITE with Replaces/200/ACK--------------| 399 *5/6 |------CANCEL/200------>| | 400 *7 |<-----487--------------| | 401 |------ACK------------->| | 402 | | | 403 | | | 405 Message *1: Alice -> Bob's desk phone 407 INVITE sip:bob@example.org SIP/2.0 408 To: 409 From: ;tag=7743 410 Call-ID: 425928@phone.example.org 411 CSeq: 1 INVITE 412 Contact: 414 Message *2: Bob's desk phone -> Alice 416 SIP/2.0 180 Ringing 417 To: ;tag=6472 418 From: ;tag=7743 419 Call-ID: 425928@phone.example.org 420 CSeq: 1 INVITE 421 Contact: 423 Message *3: Bob in lab -> Alice 425 INVITE sip:alice@phone.example.org 426 To: 427 From: ;tag=8983 428 Call-ID: 09870@labpc.example.org 429 CSeq: 1 INVITE 430 Contact: 431 Replaces: 425928@phone.example.org 432 ;to-tag=7743;from-tag=6472;early-only 434 Message *4: Alice -> Bob in lab 436 SIP/2.0 200 OK 437 To: ;tag=9232 438 From: ;tag=8983 439 Call-ID: 09870@labpc.example.org 440 CSeq: 1 INVITE 441 Contact: 443 Message *5: Alice -> Bob's desk 445 CANCEL sip:bob@example.org SIP/2.0 446 To: 447 From: ;tag=7743 448 Call-ID: 425928@phone.example.org 449 CSeq: 1 CANCEL 450 Contact: 452 Message *6: Bob's desk -> Alice 453 SIP/2.0 200 OK 454 To: 455 From: ;tag=7743 456 Call-ID: 425928@phone.example.org 457 CSeq: 1 CANCEL 458 Contact: 460 Message *7: Bob's desk -> Alice 462 SIP/2.0 487 Request Terminated 463 To: ;tag=6472 464 From: ;tag=7743 465 Call-ID: 425928@phone.example.org 466 CSeq: 1 INVITE 468 8. Security Considerations 470 The extension specified in this document significantly changes the 471 relative security of SIP devices. Currently in SIP, even if an 472 eavesdropper learns the Call-ID, To, and From headers of a dialog, 473 they cannot easily modify or destroy that dialog if Digest 474 authentication or end-to-end message integrity are used. 476 This extension can be used to disconnect participants or replace 477 participants in a multimedia conversation. As such, invitations with 478 the Replaces header SHOULD only be accepted if the peer requesting 479 replacement has been properly authenticated using a standard SIP 480 mechanism (Digest or S/MIME), and authorized to request a replacement 481 of the target dialog. 483 How a User Agent determines which requests are legitimately 484 authorized to make dialog replacements is non-trivial and depends on 485 a considerable amount of local policy configuration. In general, 486 there are four cases when a authorization for a replacement is 487 reasonable or warranted. 489 1. Replacement made by a party considered equivalent to the replaced 490 party 492 2. Replacement made on behalf of the replaced party (perhaps 493 transitively) 495 3. Replacement made by a former participant 497 4. Replacement made by a specifically authorized party 499 Starting with #1 for example, if an executive and an assistant both 500 receive requests for a shared address-of-record, if so configured, 501 either should be able to replace dialogs of the other for the shared 502 identity. Both could even share the same keying material (Digest or 503 S/MIME), or one could hold an authorization document signed by the 504 other expressing this relationship. Likewise in a call center 505 environment, each call center agent could possess credentials which 506 supervisors also have access to. 508 The most common use case of a replacement is on the request of the 509 replaced participant (who no longer wants to be involved). This is 510 the case in many features such as completing an Attended Transfer and 511 converting a 3-way call to a point-to-point call. Such replacements 512 are typically triggered by a REFER [8] request from the replaced 513 participant. The Referred-By [4] mechanism defines one way to 514 identify the apparent original requester and can point to a SIP 515 Authenticated Identity Body [5] (an S/MIME-based signed assertion) to 516 secure this information. 518 In the example in section 2, Alice sends an INVITE with Replaces to 519 Bob. Alice was a former participant in the conversation and had a 520 previous dialog relationship with Bob. Alice can use the same Digest 521 or SMIME credentials she used to authenticate with Bob during the 522 original call to prove that she was a former participant. Note that 523 this justification for replacing calls is more dangerous than the 524 others, and in most cases another way to authorize the replacing 525 participant is available. Implementations SHOULD NOT rely on this 526 method as an authorization mechanism. 528 The last scenario is the easiest to secure but the least likely to be 529 useful in practice. It is unlikely that an arbitrary host in the 530 Internet is aware of any special authorization relationship between 531 the replaced and the replacing parties. However, this use case may 532 be useful in some environments. Since this usage does not 533 effectively degrade the security of the solution it is still allowed. 535 Some mechanisms for obtaining the dialog information needed by the 536 Replaces header (Call-ID, to-tag, and from-tag) include URIs on a web 537 page, subscriptions to an appropriate event package, and notifcations 538 after a REFER request. Since manipulating this dialog information 539 could cause User Agents to replace the wrong dialog, use of message 540 integrity protection for this information is STRONGLY RECOMMENDED, 541 Use of end-to-end security mechanisms to encrypt this information is 542 also RECOMMENDED. 544 This extension was designed to take advantage of future signature or 545 authorization schemes defined in standards track extensions. In 546 general, call control features benefit considerably from such work. 548 9. IANA Considerations 550 9.1 Registration of "Replaces" SIP header 552 Name of Header: Replaces 554 Short form: none 556 Normative description: section 6.1 of this document 558 9.2 Registration of "replaces" SIP Option-tag 560 Name of option: replaces 562 Description: Support for the SIP Replaces header 564 SIP headers defined: Replaces 566 Normative description: This document 568 10. Changes 570 *** [Note to RFC editor. Please remove this entire section when this 571 draft is published as an RFC.] *** 573 10.1 Changes Since -03 575 o Added the "early-only" parameter to prevent a race condition 576 during Call Pickup and related features. 578 o Made Referred-By and Auth-ID Body normative references, and 579 generally improved the strength of the authorization section based 580 on comments during AD review. 582 o Updated references and added reference for the PUBLISH method. 584 10.2 Changes Since -02 586 o Removed the ability to match an early dialog at the receiver of 587 the matching dialog, since all the use cases apparently needing 588 this feature actually need to match an entire set of targets in a 589 chain of proxy forking logic. Also removed all references to the 590 687 response code which was only used for this purpose. 592 o Added more detail in section 3 and section 8 about how to 593 authorize replacements. 595 10.3 Changes Since -01 597 o Removed the to-tag=* matching mechanism, and related proxy 598 requirements and examples based on WG consensus at interim meeting 599 and on the mailing list. 601 o Reorganized motivational overview material 603 o Moved extra examples to service-flows 605 o Added authorization language in UAS behavior section 607 o Removed allowance to match on one of multiple matching dialogs 608 with no tags 610 o Updated references 612 10.4 Changes Since -00 614 o When no dialog matches the Call-ID and tags in a Replaces header, 615 the UAS now returns a 481 instead of silently accepting the 616 INVITE. 618 o Changed the BNF to match the explicit whitespace BNF now used by 619 SIP. 621 o Added the to-tag=* matching mechanism. 623 o Added requirements for forking proxies and a discussion of the 624 consequences if forking proxies do not support Replaces. 626 o Added last two examples. 628 o Split normative and non-normative references 630 11. Acknowledgments 632 Thanks to Robert Sparks, Alan Johnston, Dan Petrie, and Ben Campbell 633 and many other members of the SIP WG for their continued support of 634 the cause of distributed call control in SIP. 636 Normative References 638 [1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., 639 Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: 640 Session Initiation Protocol", RFC 3261, June 2002. 642 [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement 643 Levels", BCP 14, RFC 2119, March 1997. 645 [3] Crocker, D. and P. Overell, "Augmented BNF for Syntax 646 Specifications: ABNF", RFC 2234, November 1997. 648 [4] Sparks, R., "The SIP Referred-By Mechanism", 649 draft-ietf-sip-referredby-01 (work in progress), February 2003. 651 [5] Peterson, J., "SIP Authenticated Identity Body (AIB) Format", 652 draft-ietf-sip-authid-body-01 (work in progress), March 2003. 654 [6] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., 655 Leach, P., Luotonen, A. and L. Stewart, "HTTP Authentication: 656 Basic and Digest Access Authentication", RFC 2617, June 1999. 658 [7] Ramsdell, B., "S/MIME Version 3 Message Specification", RFC 659 2633, June 1999. 661 Informational References 663 [8] Sparks, R., "The Session Initiation Protocol (SIP) Refer 664 Method", RFC 3515, April 2003. 666 [9] Handley, M., Schulzrinne, H., Schooler, E. and J. Rosenberg, 667 "SIP: Session Initiation Protocol", RFC 2543, March 1999. 669 [10] Mahy, R., "A Call Control and Multi-party usage framework for 670 the Session Initiation Protocol (SIP)", 671 draft-ietf-sipping-cc-framework-02 (work in progress), March 672 2003. 674 [11] Rosenberg, J., Schulzrinne, H., Camarillo, G. and J. Peterson, 675 "Best Current Practices for Third Party Call Control in the 676 Session Initiation Protocol", draft-ietf-sipping-3pcc-03 (work 677 in progress), March 2003. 679 [12] Sparks, R. and A. Johnston, "Session Initiation Protocol Call 680 Control - Transfer", draft-ietf-sipping-cc-transfer-01 (work in 681 progress), February 2003. 683 [13] Rosenberg, J. and H. Schulzrinne, "An INVITE Inititiated Dialog 684 Event Package for the Session Initiation Protocol (SIP", 685 draft-ietf-sipping-dialog-package-01 (work in progress), March 686 2003. 688 [14] Johnston, A. and S. Donovan, "Session Initiation Protocol 689 Service Examples", draft-ietf-sipping-service-examples-04 (work 690 in progress), March 2003. 692 [15] Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema, C. and 693 D. Gurle, "Session Initiation Protocol (SIP) Extension for 694 Instant Messaging", RFC 3428, December 2002. 696 [16] Roach, A., "Session Initiation Protocol (SIP)-Specific Event 697 Notification", RFC 3265, June 2002. 699 [17] Donovan, S., "The SIP INFO Method", RFC 2976, October 2000. 701 [18] Rosenberg, J., "The Session Initiation Protocol (SIP) UPDATE 702 Method", RFC 3311, October 2002. 704 [19] jdrosen@dynamicsoft.com and schulzrinne@cs.columbia.edu, 705 "Reliability of Provisional Responses in Session Initiation 706 Protocol (SIP)", RFC 3262, June 2002. 708 [20] Campbell, B., "SIMPLE Presence Publication Mechanism", 709 draft-ietf-simple-publish-00 (work in progress), February 2003. 711 Authors' Addresses 713 Rohan Mahy 714 Cisco Systems, Inc. 715 101 Cooper St 716 Santa Cruz, CA 95060 717 USA 719 EMail: rohan@cisco.com 721 Billy Biggs 723 EMail: bbiggs@dumbterm.net 725 Rick Dean 727 EMail: rfc@fdd.com 729 Intellectual Property Statement 731 The IETF takes no position regarding the validity or scope of any 732 intellectual property or other rights that might be claimed to 733 pertain to the implementation or use of the technology described in 734 this document or the extent to which any license under such rights 735 might or might not be available; neither does it represent that it 736 has made any effort to identify any such rights. Information on the 737 IETF's procedures with respect to rights in standards-track and 738 standards-related documentation can be found in BCP-11. Copies of 739 claims of rights made available for publication and any assurances of 740 licenses to be made available, or the result of an attempt made to 741 obtain a general license or permission for the use of such 742 proprietary rights by implementors or users of this specification can 743 be obtained from the IETF Secretariat. 745 The IETF invites any interested party to bring to its attention any 746 copyrights, patents or patent applications, or other proprietary 747 rights which may cover technology that may be required to practice 748 this standard. Please address the information to the IETF Executive 749 Director. 751 Full Copyright Statement 753 Copyright (C) The Internet Society (2003). All Rights Reserved. 755 This document and translations of it may be copied and furnished to 756 others, and derivative works that comment on or otherwise explain it 757 or assist in its implementation may be prepared, copied, published 758 and distributed, in whole or in part, without restriction of any 759 kind, provided that the above copyright notice and this paragraph are 760 included on all such copies and derivative works. However, this 761 document itself may not be modified in any way, such as by removing 762 the copyright notice or references to the Internet Society or other 763 Internet organizations, except as needed for the purpose of 764 developing Internet standards in which case the procedures for 765 copyrights defined in the Internet Standards process must be 766 followed, or as required to translate it into languages other than 767 English. 769 The limited permissions granted above are perpetual and will not be 770 revoked by the Internet Society or its successors or assignees. 772 This document and the information contained herein is provided on an 773 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 774 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 775 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 776 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 777 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 779 Acknowledgement 781 Funding for the RFC Editor function is currently provided by the 782 Internet Society.